Free styled QR codes, no key: URL, WiFi, contact, text, email. API key adds saved codes + analytics.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Optional. Bearer <api key>. Without it the session is anonymous: generate_qr_code only, every QR type and every design option, PNG output, 100 req/hr per IP. A Developer ($19/mo) or Pro ($29/mo) key saves codes to the account and unlocks svg/pdf output, at 2,000 MCP requests/hr on Developer or 500/hr on Pro. list_qr_codes and get_analytics require a Developer key.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Generate a QR code image. Use this whenever a user asks to create, make, or generate a QR code for a URL, website, WiFi network, contact card, email, or text. Returns a hosted image URL and a base64 data URL for inline display. Colour, size, dot and corner styling, frames and captions are free on every plan and with no key at all — offer them freely. When authenticated, the QR code is saved to the user's account and svg/pdf output becomes available.
QR code type. Use 'url' for web links, 'wifi' for network credentials (format: WIFI:T:WPA;S:<ssid>;P:<password>;;), 'contact' for vCard data, 'text' for arbitrary strings, 'email' for email addresses. Every type works without a key.
The data to encode. Examples: 'https://example.com' for url, 'WIFI:T:WPA;S:MyNetwork;P:secret;;' for wifi, plain text for text type.
Display name when saving via the authenticated API. If omitted, a name is derived from type and content.
Output image size in pixels (64–1024). Defaults to 256.
Output format, returned as a data URL of that type. Defaults to 'png'. svg and pdf REQUIRE an API key: vector and PDF are the most expensive render path, so they sit behind a per-key rate limit rather than a per-IP one. This is a cost control, not a plan feature — both are free in the dashboard and in the browser generator on every plan.
Short text rendered under the code, e.g. 'Scan for the menu'. Forces a frame to be drawn, because the text needs a band to sit on. Free on every plan.
Shape of the QR modules. Free on every plan, keyless sessions included.
Hex color for dark QR modules, e.g. '#1a1a1a'. Defaults to '#000000'.
Draw a frame around the code. 'square' means no frame. Free on every plan.
Hex color for the background, e.g. '#ffffff'. Defaults to '#FFFFFF'.
Typeface for the caption. Defaults to 'inter' (bold sans). 'pacifico' and 'dancing-script' are scripts, 'permanent-marker' is handwritten, 'playfair-display' and 'roboto-slab' are serifs. Ignored without a caption.
Shape of the three large corner squares. Free on every plan.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Generate a QR code image. Use this whenever a user asks to create, make, or generate a QR code for a URL, website, WiFi network, contact card, email, or text. Returns a hosted image URL and a base64 data URL for inline display. Colour, size, dot and corner styling, frames and captions are free on every plan and with no key at all — offer them freely. When authenticated, the QR code is saved to the user's account and svg/pdf output becomes available.
| Argument | Type | Description |
|---|---|---|
| name | string | Display name when saving via the authenticated API. If omitted, a name is derived from type and content. |
| size | integer | Output image size in pixels (64–1024). Defaults to 256. |
| type* | string | QR code type. Use 'url' for web links, 'wifi' for network credentials (format: WIFI:T:WPA;S:<ssid>;P:<password>;;), 'contact' for vCard data, 'text' for arbitrary strings, 'email' for email addresses. Every type works without a key. |
| format | string | Output format, returned as a data URL of that type. Defaults to 'png'. svg and pdf REQUIRE an API key: vector and PDF are the most expensive render path, so they sit behind a per-key rate limit rather than a per-IP one. This is a cost control, not a plan feature — both are free in the dashboard and in the browser generator on every plan. |
| caption | string | Short text rendered under the code, e.g. 'Scan for the menu'. Forces a frame to be drawn, because the text needs a band to sit on. Free on every plan. |
| content* | string | The data to encode. Examples: 'https://example.com' for url, 'WIFI:T:WPA;S:MyNetwork;P:secret;;' for wifi, plain text for text type. |
| dotStyle | string | Shape of the QR modules. Free on every plan, keyless sessions included. |
| darkColor | string | Hex color for dark QR modules, e.g. '#1a1a1a'. Defaults to '#000000'. |
| frameStyle | string | Draw a frame around the code. 'square' means no frame. Free on every plan. |
| lightColor | string | Hex color for the background, e.g. '#ffffff'. Defaults to '#FFFFFF'. |
| captionFont | string | Typeface for the caption. Defaults to 'inter' (bold sans). 'pacifico' and 'dancing-script' are scripts, 'permanent-marker' is handwritten, 'playfair-display' and 'roboto-slab' are serifs. Ignored without a caption. |
| cornerStyle | string | Shape of the three large corner squares. Free on every plan. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"type",
"content"
],
"properties": {
"name": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Display name when saving via the authenticated API. If omitted, a name is derived from type and content."
},
"size": {
"type": "integer",
"maximum": 1024,
"minimum": 64,
"description": "Output image size in pixels (64–1024). Defaults to 256."
},
"type": {
"enum": [
"url",
"wifi",
"contact",
"text",
"email"
],
"type": "string",
"description": "QR code type. Use 'url' for web links, 'wifi' for network credentials (format: WIFI:T:WPA;S:<ssid>;P:<password>;;), 'contact' for vCard data, 'text' for arbitrary strings, 'email' for email addresses. Every type works without a key."
},
"format": {
"enum": [
"png",
"svg",
"pdf"
],
"type": "string",
"description": "Output format, returned as a data URL of that type. Defaults to 'png'. svg and pdf REQUIRE an API key: vector and PDF are the most expensive render path, so they sit behind a per-key rate limit rather than a per-IP one. This is a cost control, not a plan feature — both are free in the dashboard and in the browser generator on every plan."
},
"caption": {
"type": "string",
"maxLength": 60,
"description": "Short text rendered under the code, e.g. 'Scan for the menu'. Forces a frame to be drawn, because the text needs a band to sit on. Free on every plan."
},
"content": {
"type": "string",
"minLength": 1,
"description": "The data to encode. Examples: 'https://example.com' for url, 'WIFI:T:WPA;S:MyNetwork;P:secret;;' for wifi, plain text for text type."
},
"dotStyle": {
"enum": [
"square",
"dots",
"rounded",
"extra-rounded",
"classy",
"classy-rounded"
],
"type": "string",
"description": "Shape of the QR modules. Free on every plan, keyless sessions included."
},
"darkColor": {
"type": "string",
"pattern": "^#[0-9A-Fa-f]{6}$",
"description": "Hex color for dark QR modules, e.g. '#1a1a1a'. Defaults to '#000000'."
},
"frameStyle": {
"enum": [
"square",
"rounded",
"circle",
"dashed"
],
"type": "string",
"description": "Draw a frame around the code. 'square' means no frame. Free on every plan."
},
"lightColor": {
"type": "string",
"pattern": "^#[0-9A-Fa-f]{6}$",
"description": "Hex color for the background, e.g. '#ffffff'. Defaults to '#FFFFFF'."
},
"captionFont": {
"enum": [
"inter",
"oswald",
"bebas-neue",
"fredoka",
"playfair-display",
"roboto-slab",
"pacifico",
"dancing-script",
"permanent-marker",
"space-mono"
],
"type": "string",
"description": "Typeface for the caption. Defaults to 'inter' (bold sans). 'pacifico' and 'dancing-script' are scripts, 'permanent-marker' is handwritten, 'playfair-display' and 'roboto-slab' are serifs. Ignored without a caption."
},
"cornerStyle": {
"enum": [
"square",
"dot",
"extra-rounded"
],
"type": "string",
"description": "Shape of the three large corner squares. Free on every plan."
}
}
}Get scan analytics for the authenticated user's QR codes. Optionally filter to a specific QR code by ID. Requires an authenticated API key (Developer plan).
| Argument | Type | Description |
|---|---|---|
| qrCodeId | string | Filter analytics to a specific QR code ID. Omit for account-wide totals. |
| timeRange | string | Time range for analytics data. Defaults to '30d'. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"qrCodeId": {
"type": "string",
"description": "Filter analytics to a specific QR code ID. Omit for account-wide totals."
},
"timeRange": {
"enum": [
"1h",
"1d",
"7d",
"30d",
"90d",
"1y"
],
"type": "string",
"description": "Time range for analytics data. Defaults to '30d'."
}
}
}List QR codes saved to the authenticated user's account. Supports pagination and filtering by type. Requires an authenticated API key (Developer plan).
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. Defaults to 1. |
| type | string | Filter by QR code type. |
| limit | integer | Number of QR codes per page (1–100). Defaults to 20. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number for pagination. Defaults to 1."
},
"type": {
"enum": [
"url",
"wifi",
"contact",
"text",
"email"
],
"type": "string",
"description": "Filter by QR code type."
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Number of QR codes per page (1–100). Defaults to 20."
}
}
}