Qrblox

Create and track QR codes, audio codes, menus, and scan analytics for a Qrblox merchant.

Should I use this

Quality & Safety

B
Description quality
91%
Schema completeness
86%
Naming quality
50%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (14)

  • LOWTool 'qrblox.ping' doesn't follow camelCase/snake_casein qrblox.ping
  • LOWTool 'qrblox.voice_agent.lookup' doesn't follow camelCase/snake_casein qrblox.voice_agent.lookup
  • LOWTool 'qrblox.voice_agent.register' doesn't follow camelCase/snake_casein qrblox.voice_agent.register
  • LOWTool 'qrblox.merchant.get_profile' doesn't follow camelCase/snake_casein qrblox.merchant.get_profile
  • LOWTool 'qrblox.qr.list' doesn't follow camelCase/snake_casein qrblox.qr.list
  • LOWTool 'qrblox.qr.create' doesn't follow camelCase/snake_casein qrblox.qr.create
  • LOWTool 'qrblox.qr.update' doesn't follow camelCase/snake_casein qrblox.qr.update
  • LOWTool 'qrblox.qr.get_analytics' doesn't follow camelCase/snake_casein qrblox.qr.get_analytics
  • LOWTool 'qrblox.audio.create' doesn't follow camelCase/snake_casein qrblox.audio.create
  • LOWTool 'qrblox.menu.create' doesn't follow camelCase/snake_casein qrblox.menu.create

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,764Tokens (tool definitions)
~1.0 KBTypical response size
Moderate attention impact (1.38% of 128k context)

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

npmqrblox-mcp0.1.0stdio

Remote endpoints

https://api.qrblox.com/mcp/v1streamable-http

What it can do

Tool inventory

Tools (14)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
⚪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

Rate this Server

Evidence

Recent observations

verifiedversion not recorded14 tools