Skip to content

A QR code MCP server for your assistant

Add one URL to Claude, Cursor or VS Code and ask for QR codes in a sentence. Nothing to install.

Worked example, not a live session

Ask it

Make me a QR code for tomorrow’s open day and show me the picture.

Connect it in one paste

Pick your client and copy one thing. Signing in needs only the server URL.

Choose your assistant

One command in the terminal, in whichever project you want it available in.

Terminal
claude mcp add --transport http qrsalt https://app.qrsalt.com/api/mcp --header "Authorization: Bearer qr_live_YOUR_KEY"

Checked against the Claude Code docs on MCP, read 20 October 2026.

Sign-in, scopes and fixes in the MCP docs

What you can ask it for

The demo above is pre-written and sends nothing. These are requests people type.

  • “Which of my codes still point at the old domain?”

    It searches your codes’ destinations and names them.

  • “Shorten this and call it Spring flyer.”

    A short link you can re-point later, with its clicks counted.

  • “Somebody sent me this QR. What’s in it?”

    Attach the image and it reads out the text.

  • “Pause the trade-show banner code.”

    Scans show “This code is paused” until you turn it back on.

  • “Where does the table tent code point now?”

    Its destination, short link, scans and last scan.

The 13 tools and what each needs

Your client only lists the tools your key or sign-in allows, so it never offers something it can’t finish.

  • Draw a code, read one

    Render images box, ticked on a new key

    • render_qr_code
    • read_qr_image

    Every plan, Free included

  • Look up your codes and scans

    Read box, ticked on a new key

    • list_codes
    • get_code
    • list_folders
    • get_scan_analytics
    • get_code_image

    Starter and up

  • Create and change

    Create and change box, ticked on a new key

    • create_code
    • update_code
    • create_short_link
    • set_gs1_link

    Starter and up

  • Delete

    Delete box

    • remove_gs1_link
    • delete_code

    Starter and up, off until you tick it

Starter is $5 a month, the same plan the REST API needs. What each tool does is in the tool list.

What it won’t do

An assistant reaches only what its key allows, and the tools do less than the API behind them.

  • Deleting is off by default. Even with the box ticked, a delete needs the code’s exact name or short-link ending.
  • No web addresses. No tool fetches a URL. To read a QR code, the client sends the image itself.
  • No design, domains or billing. Colours, routing rules, custom domains, webhooks, your team and your plan stay in the dashboard.
  • One workspace. Every call runs in the key’s workspace, and no tool can name another.

Last reviewed , against the product as it works today.

MCP questions, answered

Which AI clients can connect?

Any client that speaks MCP over HTTP. The Claude app, Claude Code, Cursor and VS Code each have step-by-step setup in the docs.

Should the assistant share a key with my scripts?

No. Give it a key of its own with only the boxes it needs. Then you can revoke it without stopping anything else.

A web page told my assistant to change a code. Can it?

Only if the key allows that change. No tool fetches a web address, and a read-only key can’t change anything.

Does it work with clients built for an older MCP revision?

Yes, over HTTP. A client that opens with initialize gets the revision it asks for: 2025-06-18, 2025-03-26 or 2024-11-05.

Plans behind the connector

Each tool call counts as one API request: 500 API requests a month on Starter, 5,000 on Pro and 100,000 on Business, a fair-use ceiling.

Free

$0/mo

Unlimited static codes. Three editable ones that never expire.

  • Short links on their own, no QR code needed
  • Up to 1 of the 3 can be a QR Menu
  • Add your logo to QR codes
  • Every shape, corner and frame

3dynamic codes

Starter

Recommended

$5/mo

For one business with codes out in the world.

  • 5 QR Menus
  • QR Forms
  • GS1 Digital Links we host, so a printed pack can be re-pointed
  • Advanced tracking and analytics

100dynamic codes

Pro

$15/mo

For agencies and teams running codes at scale.

  • 50 QR Menus
  • Unlimited analytics history
  • 10 custom domains
  • 5,000 API requests a month

600dynamic codes

Business

$39/mo

For organisations running codes across many brands.

  • 400 QR Menus
  • 50 custom domains
  • Up to 25 team members and team management
  • Up to 10 workspaces

2,000dynamic codes

Unlimited scans on every plan. Cancel online in two clicks. Compare every plan and feature

The rest of the toolbox

Open a row to see the screen and which plan has it.

Custom domains

Short links on your own domain, chosen code by code.

Codes open go.yourbrand.com/menu instead of a link with our name in it. Add two DNS records, we check them, then pick the domain per code or move a whole list onto it.

Starter and up

QR codes on your own domain
A verified custom domain, go.fieldhousecoffee.example, with the TXT and CNAME records to copy into DNS and a button to check them again.
Custom domains · verified sample data

Change many codes at once

Tick the codes, then pause, tag, file or move them together.

Tick codes, or pick every code with a tag, then pause, tag, file or move them onto your domain in one go. When a pop-up shop closes, pause all its codes together.

Pause and resume on every plan · folders and tags on Starter and up

An estate agent’s QR codes - yard signs for two listings, an open-house flyer and neighbourhood flyer drops - each with its short link on the agency’s own domain, its scan count and its folder.
Your QR codes · an estate agent’s list sample data

Webhooks

Your server hears about every scan and every change.

Pick events (a scan, a code made, changed or paused, a form answered) and give us a URL. Each arrives as a signed POST, failures are retried, and every delivery is listed.

Business

The API and webhooks
A webhook endpoint that hears about every scan and code update, with who set it up, a signing secret hidden until an owner or admin reveals it, and its last deliveries, each marked delivered with the response it got.
Webhooks · recent deliveries sample data

Separate workspaces

One subscription, a workspace per brand or client.

Each has its own codes, team and analytics, so one client never sees another’s. Up to 10 on one subscription.

Business

The Workspaces panel in settings: how many of the plan’s workspaces are in use, what happens to all of them if the subscription ends, and a field to name and create another one.
Settings · workspaces sample data

An API for the codes you print

Make dynamic codes and short links from your own software, re-point them, and change up to 500 in one request. Rendering works on every plan; creating and editing come with Starter and up. No-code setup is in the n8n and Make docs.

Render a code · every plan, Free included

curl -o code.svg \
  -H "Authorization: Bearer $QRSALT_KEY" \
  "https://app.qrsalt.com/api/qr?data=https://example.com"

An SVG comes back, ready for a label, a template or a web page.

Re-point a printed code · Starter and up

curl -X PATCH https://app.qrsalt.com/api/v1/codes/{id} \
  -H "Authorization: Bearer $QRSALT_KEY" \
  -H "content-type: application/json" \
  -d '{"destination":"https://example.com/winter"}'

The printed code opens the new page from the next scan. The old address stays in the code’s history.

Change many codes at once · JavaScript

// Move a campaign's codes onto your own domain
await fetch('https://app.qrsalt.com/api/v1/codes/bulk', {
  method: 'POST',
  headers: {
    authorization: `Bearer ${process.env.QRSALT_KEY}`,
    'content-type': 'application/json',
  },
  body: JSON.stringify({ ids, action: 'domain', domain: 'go.example.com' }),
})

Pause, tag, move or file codes in one request. The response lists what changed and what was skipped.

Every endpoint, with a playground
The API screen listing a coffee company’s keys - one for a menu sync, one for a label printer, one revoked - each with its prefix, who created it, when it was made and when it was last used.
API keys · one per integration sample data