Create and track QR codes, audio codes, menus, and scan analytics for a Qrblox merchant.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Bearer token: your sk-qrblox- API key from https://app.qrblox.com/settings
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.
Summarize recent scan activity for a merchant workspace.
Lookback window in days, from 1 to 365.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Summarize recent scan activity for a merchant workspace.
| Argument | Type | Description |
|---|---|---|
| days | number | Lookback window in days, from 1 to 365. |
{
"type": "object",
"properties": {
"days": {
"type": "number",
"description": "Lookback window in days, from 1 to 365."
}
},
"additionalProperties": false
}Create a draft audio code payload that can later be published as a near-ultrasonic sharing experience.
| Argument | Type | Description |
|---|---|---|
| title* | string | Human-readable audio code name. |
| campaign | string | Optional campaign name. |
| payloadText* | string | Text or URL payload to encode. |
{
"type": "object",
"required": [
"title",
"payloadText"
],
"properties": {
"title": {
"type": "string",
"description": "Human-readable audio code name."
},
"campaign": {
"type": "string",
"description": "Optional campaign name."
},
"payloadText": {
"type": "string",
"description": "Text or URL payload to encode."
}
},
"additionalProperties": false
}Create a draft scan challenge, streak, game, or loyalty campaign.
| Argument | Type | Description |
|---|---|---|
| name* | string | Challenge name. |
| endsAt | string | Optional ISO end date. |
| startsAt | string | Optional ISO start date. |
| rewardText | string | Optional reward copy. |
| description | string | Optional description. |
| challengeType* | string |
{
"type": "object",
"required": [
"name",
"challengeType"
],
"properties": {
"name": {
"type": "string",
"description": "Challenge name."
},
"endsAt": {
"type": "string",
"description": "Optional ISO end date."
},
"startsAt": {
"type": "string",
"description": "Optional ISO start date."
},
"rewardText": {
"type": "string",
"description": "Optional reward copy."
},
"description": {
"type": "string",
"description": "Optional description."
},
"challengeType": {
"enum": [
"streak",
"scan_count",
"visit_window",
"game"
],
"type": "string"
}
},
"additionalProperties": false
}Add an item to a section in an existing merchant menu.
| Argument | Type | Description |
|---|---|---|
| name* | string | Item name. |
| price | number | Optional price. |
| menuId* | string | Menu id. |
| description | string | Optional item description. |
| sectionName* | string | Section name. |
{
"type": "object",
"required": [
"menuId",
"sectionName",
"name"
],
"properties": {
"name": {
"type": "string",
"description": "Item name."
},
"price": {
"type": "number",
"description": "Optional price."
},
"menuId": {
"type": "string",
"description": "Menu id."
},
"description": {
"type": "string",
"description": "Optional item description."
},
"sectionName": {
"type": "string",
"description": "Section name."
}
},
"additionalProperties": false
}Create a merchant menu that can be connected to QR codes, audio codes, and scan experiences.
| Argument | Type | Description |
|---|---|---|
| name* | string | Menu name. |
| locationId | string | Optional merchant location id. |
| description | string | Optional description. |
{
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"description": "Menu name."
},
"locationId": {
"type": "string",
"description": "Optional merchant location id."
},
"description": {
"type": "string",
"description": "Optional description."
}
},
"additionalProperties": false
}List recent menus for the merchant.
| Argument | Type | Description |
|---|---|---|
| limit | number | Maximum records to return, up to 100. |
{
"type": "object",
"properties": {
"limit": {
"type": "number",
"description": "Maximum records to return, up to 100."
}
},
"additionalProperties": false
}Get the merchant workspace attached to this user or API key.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Confirm that the Qrblox MCP server is reachable for the authenticated merchant.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Create a finished QR code: returns a hosted PNG (qrImageUrl) plus, for dynamic codes, a qrb.dev dynamic link you can re-point later. Options: template wraps the code in a Qrblox hex frame; boostFrame renders a scan-to-earn reward frame (scans through the Qrblox app award boosted points); scanBeepSound makes the Qrblox app play that sound on every scan (forces dynamic). Plain calls with none of these return a simple static code.
| Argument | Type | Description |
|---|---|---|
| tags | array | |
| title* | string | Human-readable name for the QR code. |
| dynamic | boolean | Encode a qrb.dev dynamic link instead of the raw URL — re-pointable later, trackable per scan. |
| campaign | string | Optional campaign name. |
| template | string | Qrblox hex frame: hexSeal (candy hexagon + QRBLOX wordmark) or soundSeal (dashed ring + SOUND CODE label; forces dynamic). |
| boostFrame | string | Scan-to-earn reward frame (3X/5X boosted points), rendered server-side. Overrides template. |
| scanBeepSound | string | Sound the Qrblox app plays when anyone scans this code (coin ding = mariocoin). Forces dynamic. |
| destinationUrl* |
Per-code scan report from the Qrblox analytics pipeline: total scans, daily counts, and every scan with date and city/state. Works for dynamic codes and app-scanned codes (last 365 days max).
| Argument | Type | Description |
|---|---|---|
| days | number | Lookback window in days, 1-365 (default 30). |
| codeId | string | Merchant record id returned by qr.create / qr.list. |
| uniqueQRCodeID | string | Cross-platform id (the trailing part of the qrb.dev/qr/... link). |
{
"type": "object",
"properties": {
"days": {
"type": "number",
"description": "Lookback window in days, 1-365 (default 30)."
},
"codeId": {
"type": "string",
"description": "Merchant record id returned by qr.create / qr.list."
},
"uniqueQRCodeID": {
"type": "string",
"description": "Cross-platform id (the trailing part of the qrb.dev/qr/... link)."
}
},
"additionalProperties": false
}List recent QR codes for the merchant.
| Argument | Type | Description |
|---|---|---|
| limit | number | Maximum records to return, up to 100. |
{
"type": "object",
"properties": {
"limit": {
"type": "number",
"description": "Maximum records to return, up to 100."
}
},
"additionalProperties": false
}Edit an existing QR code: re-point the destination URL (dynamic codes redirect immediately, no reprint), change the scan sound, or rename it. Identify the code by codeId (from qr.create/qr.list) or uniqueQRCodeID.
| Argument | Type | Description |
|---|---|---|
| title | string | New display name. |
| codeId | string | Merchant record id returned by qr.create / qr.list. |
| scanBeepSound | string | New scan sound, or 'none' to remove it. |
| destinationUrl | string | New destination URL (dynamic codes only take effect on print). |
| uniqueQRCodeID | string | Cross-platform id (the trailing part of the qrb.dev/qr/... link). |
{
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "New display name."
},
"codeId": {
"type": "string",
"description": "Merchant record id returned by qr.create / qr.list."
},
"scanBeepSound": {
"enum": [
"mariocoin",
"8bitcoin",
"chime",
"woosh",
"mouse",
"ah",
"mission",
"none"
],
"type": "string",
"description": "New scan sound, or 'none' to remove it."
},
"destinationUrl": {
"type": "string",
"description": "New destination URL (dynamic codes only take effect on print)."
},
"uniqueQRCodeID": {
"type": "string",
"description": "Cross-platform id (the trailing part of the qrb.dev/qr/... link)."
}
},
"additionalProperties": false
}Look up a business in the Qrblox Voice Agent Phone Book by website domain — returns their confirmed AI voice agent phone number if registered.
| Argument | Type | Description |
|---|---|---|
| domain* | string | Business website domain, like example.com (protocol, www, and paths are stripped). |
{
"type": "object",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"description": "Business website domain, like example.com (protocol, www, and paths are stripped)."
}
},
"additionalProperties": false
}Register a business's AI voice agent phone number and domain in the Qrblox Voice Agent Phone Book directory (free; creates a backlink page at qrblox.com/d/<domain> once approved).
| Argument | Type | Description |
|---|---|---|
| email* | string | Contact email — receives the confirmation once the claim is approved. |
| domain* | string | Business website domain, like example.com. |
| businessName* | string | Business name as it should appear in the phone book. |
| voiceAgentPhone* | string | Phone number of the business's AI voice agent, like +12025551234. |
{
"type": "object",
"required": [
"businessName",
"domain",
"voiceAgentPhone",
"email"
],
"properties": {
"email": {
"type": "string",
"description": "Contact email — receives the confirmation once the claim is approved."
},
"domain": {
"type": "string",
"description": "Business website domain, like example.com."
},
"businessName": {
"type": "string",
"description": "Business name as it should appear in the phone book."
},
"voiceAgentPhone": {
"type": "string",
"description": "Phone number of the business's AI voice agent, like +12025551234."
}
},
"additionalProperties": false
}| string |
| The URL the QR code should open. |
{
"type": "object",
"required": [
"title",
"destinationUrl"
],
"properties": {
"tags": {
"type": "array",
"items": {
"type": "string"
}
},
"title": {
"type": "string",
"description": "Human-readable name for the QR code."
},
"dynamic": {
"type": "boolean",
"description": "Encode a qrb.dev dynamic link instead of the raw URL — re-pointable later, trackable per scan."
},
"campaign": {
"type": "string",
"description": "Optional campaign name."
},
"template": {
"enum": [
"hexSeal",
"soundSeal"
],
"type": "string",
"description": "Qrblox hex frame: hexSeal (candy hexagon + QRBLOX wordmark) or soundSeal (dashed ring + SOUND CODE label; forces dynamic)."
},
"boostFrame": {
"enum": [
"qrblox_x3_bluepurple",
"qrblox_x5_gold",
"qrblox_x3_sunset",
"qrblox_x5_midnight"
],
"type": "string",
"description": "Scan-to-earn reward frame (3X/5X boosted points), rendered server-side. Overrides template."
},
"scanBeepSound": {
"enum": [
"mariocoin",
"8bitcoin",
"chime",
"woosh",
"mouse",
"ah",
"mission"
],
"type": "string",
"description": "Sound the Qrblox app plays when anyone scans this code (coin ding = mariocoin). Forces dynamic."
},
"destinationUrl": {
"type": "string",
"description": "The URL the QR code should open."
}
},
"additionalProperties": false
}