Skip to content

QR Branding

by quartzondev · remote · local (npm) · no sign-in to list tools · v0.1.3 · published by GitHub user quartzondev

Generate branded, scan-validated QR codes (manual, AI, templates, Wi-Fi, vCard, geo).

Changes · 6

7 tools: 6 change things and 1 only read.

Scanned Oct 21, 2026

3 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http qr-branding https://qr-branding.com/mcp

Findings

Matches of fixed checks, with the text they matched.

2 warn1 info
  • The server marks "qr_generate" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "qr_generate" says "generate": a word for a change.

    What this check looks for
  • The server marks "qr_generate_from_template" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "qr_generate_from_template" says "generate": a word for a change.

    What this check looks for
  • The description mentions "credentials".

    Matched text

    description: "Encode Wi-Fi credentials (SSID, password, auth type, hidden flag..."

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

7 tools

Changes things 6Claude Code: ask
  • qr_build_geoEncode a latitude/longitude pair into a geo: URI QR.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Encode a latitude/longitude pair into a geo: URI QR. Scanning opens the location in the device's default maps app.

    Annotations the server declares

    • title: Build a geo: URI QR
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • qr_build_vcardEncode a contact card (vCard) with first and last name, organization, phone, email and website URL into a QR.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Encode a contact card (vCard) with first and last name, organization, phone, email and website URL into a QR. Scanning the QR adds the contact to the phone's address book.

    Annotations the server declares

    • title: Build a vCard QR
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • qr_build_wifiEncode Wi-Fi credentials (SSID, password, auth type, hidden flag) into a scannable Wi-Fi QR.1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Info

      The description mentions "credentials".

      Matched text

      description: "Encode Wi-Fi credentials (SSID, password, auth type, hidden flag..."

      What this check looks for
    Description, as the server wrote it
    Encode Wi-Fi credentials (SSID, password, auth type, hidden flag) into a scannable Wi-Fi QR. Returns both the WIFI:... payload string and a generated QR image.

    Annotations the server declares

    • title: Build a Wi-Fi QR
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • qr_generateGenerate a fully branded QR code with explicit control over colors, module/finder shapes, logo, caption, and output format.1 finding

    Why it is in this group

    • The name "qr_generate" says "generate": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "qr_generate" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "qr_generate" says "generate": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Generate a fully branded QR code with explicit control over colors, module/finder shapes, logo, caption, and output format. Use this when the user already knows the design they want.

    Annotations the server declares

    • title: Generate a QR code (manual)
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • qr_generate_aiGenerate a QR code where the QR Branding LLM picks colors and shapes from a natural-language prompt.No findings

    Why it is in this group

    • The name "qr_generate_ai" says "generate": a word for a change.
    Description, as the server wrote it
    Generate a QR code where the QR Branding LLM picks colors and shapes from a natural-language prompt. Best for "make me a luxury gold dotted QR for a coffee brand" style requests.

    Annotations the server declares

    • title: Generate a QR code from a prompt (AI)
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • qr_generate_from_templateRender one of the curated templates by id, optionally overriding the encoded content, colors, or output format/size for this specific call.1 finding

    Why it is in this group

    • The name "qr_generate_from_template" says "generate": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "qr_generate_from_template" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "qr_generate_from_template" says "generate": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Render one of the curated templates by id, optionally overriding the encoded content, colors, or output format/size for this specific call.

    Annotations the server declares

    • title: Render a QR template
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
Only reads 1Claude Code: allow
  • qr_list_templatesList the 118 pre-designed QR templates (id, name, description, preview thumbnail URL).No findings

    Why it is in this group

    • The name "qr_list_templates" says "list": a word for reading.
    Description, as the server wrote it
    List the 118 pre-designed QR templates (id, name, description, preview thumbnail URL). Filter by category if the user asks for a specific style.

    Annotations the server declares

    • title: List QR design templates
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 0.1.3. Values in angle brackets are yours to fill in.

claude mcp add --transport http qr-branding https://qr-branding.com/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__qr-branding__qr_list_templates"
    ],
    "ask": [
      "mcp__qr-branding__qr_generate",
      "mcp__qr-branding__qr_generate_ai",
      "mcp__qr-branding__qr_generate_from_template",
      "mcp__qr-branding__qr_build_wifi",
      "mcp__qr-branding__qr_build_vcard",
      "mcp__qr-branding__qr_build_geo"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as qr-branding. Review it before you use it.