Qrblox
Create and track QR codes, audio codes, menus, and scan analytics for a Qrblox merchant.
Should I use this
Quality & Safety
Findings (14)
- LOWin qrblox.ping
- LOWin qrblox.voice_agent.lookup
- LOWin qrblox.voice_agent.register
- LOWin qrblox.merchant.get_profile
- LOWin qrblox.qr.list
- LOWin qrblox.qr.create
- LOWin qrblox.qr.update
- LOWin qrblox.qr.get_analytics
- LOWin qrblox.audio.create
- LOWin qrblox.menu.create
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"mcp": {
"command": "npx",
"args": [
"qrblox-mcp"
]
}
}
}Runnable packages
0.1.0stdioRemote endpoints
https://api.qrblox.com/mcp/v1streamable-httpWhat it can do
Tool inventory
Tools (14)
⚪qrblox.ping
Confirm that the Qrblox MCP server is reachable for the authenticated merchant.
Input Schema
{
"type": "object",
"properties": {},
"additionalProperties": false
}⚪qrblox.voice_agent.lookup(domain)
Look up a business in the Qrblox Voice Agent Phone Book by website domain — returns their confirmed AI voice agent phone number if registered.
Input Schema
{
"type": "object",
"properties": {
"domain": {
"type": "string",
"description": "Business website domain, like example.com (protocol, www, and paths are stripped)."
}
},
"required": [
"domain"
],
"additionalProperties": false
}⚪qrblox.voice_agent.register(businessName, domain, voiceAgentPhone, email)
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).
Input Schema
{
"type": "object",
"properties": {
"businessName": {
"type": "string",
"description": "Business name as it should appear in the phone book."
},
"domain": {
"type": "string",
"description": "Business website domain, like example.com."
},
"voiceAgentPhone": {
"type": "string",
"description": "Phone number of the business's AI voice agent, like +12025551234."
},
"email": {
"type": "string",
"description": "Contact email — receives the confirmation once the claim is approved."
}
},
"required": [
"businessName",
"domain",
"voiceAgentPhone",
"email"
],
"additionalProperties": false
}🟢qrblox.merchant.get_profile
Get the merchant workspace attached to this user or API key.
Input Schema
{
"type": "object",
"properties": {},
"additionalProperties": false
}🟢qrblox.qr.list(limit)
List recent QR codes for the merchant.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"type": "number",
"description": "Maximum records to return, up to 100."
}
},
"additionalProperties": false
}🟡qrblox.qr.create(title, destinationUrl, campaign, tags, dynamic, ...)
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.
Input Schema
{
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "Human-readable name for the QR code."
},
"destinationUrl": {
"type": "string",
"description": "The URL the QR code should open."
},
"campaign": {
"type": "string",
"description": "Optional campaign name."
},
"tags": {
"type": "array",
"items": {
"type": "string"
}
},
"dynamic": {
"type": "boolean",
"description": "Encode a qrb.dev dynamic link instead of the raw URL — re-pointable later, trackable per scan."
},
"template": {
"type": "string",
"enum": [
"hexSeal",
"soundSeal"
],
"description": "Qrblox hex frame: hexSeal (candy hexagon + QRBLOX wordmark) or soundSeal (dashed ring + SOUND CODE label; forces dynamic)."
},
"scanBeepSound": {
"type": "string",
"enum": [
"mariocoin",
"8bitcoin",
"chime",
"woosh",
"mouse",
"ah",
"mission"
],
"description": "Sound the Qrblox app plays when anyone scans this code (coin ding = mariocoin). Forces dynamic."
},
"boostFrame": {
"type": "string",
"enum": [
"qrblox_x3_bluepurple",
"qrblox_x5_gold",
"qrblox_x3_sunset",
"qrblox_x5_midnight"
],
"description": "Scan-to-earn reward frame (3X/5X boosted points), rendered server-side. Overrides template."
}
},
"required": [
"title",
"destinationUrl"
],
"additionalProperties": false
}🟡qrblox.qr.update(codeId, uniqueQRCodeID, destinationUrl, scanBeepSound, title)
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.
Input Schema
{
"type": "object",
"properties": {
"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)."
},
"destinationUrl": {
"type": "string",
"description": "New destination URL (dynamic codes only take effect on print)."
},
"scanBeepSound": {
"type": "string",
"enum": [
"mariocoin",
"8bitcoin",
"chime",
"woosh",
"mouse",
"ah",
"mission",
"none"
],
"description": "New scan sound, or 'none' to remove it."
},
"title": {
"type": "string",
"description": "New display name."
}
},
"additionalProperties": false
}⚪qrblox.qr.get_analytics(codeId, uniqueQRCodeID, days)
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).
Input Schema
{
"type": "object",
"properties": {
"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)."
},
"days": {
"type": "number",
"description": "Lookback window in days, 1-365 (default 30)."
}
},
"additionalProperties": false
}🟡qrblox.audio.create(title, payloadText, campaign)
Create a draft audio code payload that can later be published as a near-ultrasonic sharing experience.
Input Schema
{
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "Human-readable audio code name."
},
"payloadText": {
"type": "string",
"description": "Text or URL payload to encode."
},
"campaign": {
"type": "string",
"description": "Optional campaign name."
}
},
"required": [
"title",
"payloadText"
],
"additionalProperties": false
}🟡qrblox.menu.create(name, description, locationId)
Create a merchant menu that can be connected to QR codes, audio codes, and scan experiences.
Input Schema
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Menu name."
},
"description": {
"type": "string",
"description": "Optional description."
},
"locationId": {
"type": "string",
"description": "Optional merchant location id."
}
},
"required": [
"name"
],
"additionalProperties": false
}🟢qrblox.menu.list(limit)
List recent menus for the merchant.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"type": "number",
"description": "Maximum records to return, up to 100."
}
},
"additionalProperties": false
}🟡qrblox.menu.add_item(menuId, sectionName, name, description, price)
Add an item to a section in an existing merchant menu.
Input Schema
{
"type": "object",
"properties": {
"menuId": {
"type": "string",
"description": "Menu id."
},
"sectionName": {
"type": "string",
"description": "Section name."
},
"name": {
"type": "string",
"description": "Item name."
},
"description": {
"type": "string",
"description": "Optional item description."
},
"price": {
"type": "number",
"description": "Optional price."
}
},
"required": [
"menuId",
"sectionName",
"name"
],
"additionalProperties": false
}🟡qrblox.challenge.create(name, description, challengeType, rewardText, startsAt, ...)
Create a draft scan challenge, streak, game, or loyalty campaign.
Input Schema
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Challenge name."
},
"description": {
"type": "string",
"description": "Optional description."
},
"challengeType": {
"type": "string",
"enum": [
"streak",
"scan_count",
"visit_window",
"game"
]
},
"rewardText": {
"type": "string",
"description": "Optional reward copy."
},
"startsAt": {
"type": "string",
"description": "Optional ISO start date."
},
"endsAt": {
"type": "string",
"description": "Optional ISO end date."
}
},
"required": [
"name",
"challengeType"
],
"additionalProperties": false
}⚪qrblox.analytics.scan_summary(days)
Summarize recent scan activity for a merchant workspace.
Input Schema
{
"type": "object",
"properties": {
"days": {
"type": "number",
"description": "Lookback window in days, from 1 to 365."
}
},
"additionalProperties": false
}Community
Evidence