Developers & agents
QR codes in Claude
Run claude mcp add --transport http useqr https://useqr.app/api/mcp and Claude gains six keyless QR tools — generate, typed payloads, decode, verify, batch and print sizing. Without MCP, Claude can still embed a working code by writing an image URL like https://useqr.app/q/hello.png into markdown or an artifact.
One command
claude mcp add --transport http useqr https://useqr.app/api/mcp
That registers the server for Claude Code; Claude Desktop and other MCP clients take the JSON form:
{ "mcpServers": { "useqr": { "type": "http", "url": "https://useqr.app/api/mcp" } } }
No API key, no OAuth, nothing to rotate — the server is unauthenticated Streamable
HTTP, stateless, storing nothing. Claude now has six tools: qr_generate,
qr_generate_typed, qr_decode, qr_verify, qr_batch and qr_size_recommend —
argument-level detail in the tool reference.
What the flow looks like
Ask Claude for "a WiFi QR code for CafeGuest, WPA, password espresso, in our brand
blue" and a well-behaved run composes the tools: qr_generate_typed builds the
payload with the escaping rules
handled server-side, then qr_verify rasterises the styled result and decodes it back
with zxing. If the brand blue is too light, verify's report says so —
contrast: 2.1 and a concrete issue — and Claude darkens the colour and re-runs
rather than handing you a code that fails at the table. That verification step is the
point of using tools at all: whether a styled code scans is
not reasoned, it is measured.
Generated images come back with a stable hosted URL alongside the PNG, which is the detail that makes results portable: Claude can paste that URL into a document, a README or a follow-up message and it renders forever.
Artifacts and the no-MCP rung
Because the API sends Access-Control-Allow-Origin: * and needs no key, an artifact —
a poster mock-up, a table-tent design, an event page — can simply embed:
<img src="https://useqr.app/q/https%3A%2F%2Fexample.com%2Fmenu.png?s=600" alt="Menu QR code">
No MCP required — this works in any Claude conversation today, and in any markdown Claude writes anywhere. It is the rung-0 pattern from using QR codes from an AI agent: the URL is the generation call. Per-surface setup lives at /for/claude.
Claude Code, scripted
In a repository, the tools compose with everything else Claude Code does. Practical uses that come up:
- Release QR codes — "add a QR code for the download URL to the release notes" becomes an image link in markdown, no asset committed.
- Fixtures — "generate five test WiFi codes as SVGs in
tests/fixtures/" viaqr_batch, with the manifest of payloads in the response. - CI gates — Claude Code can wire the verify endpoint into a pipeline so codes are proven to decode on every build.
- Decoding — point
qr_decodeat an image in the repo to answer "what does this code in the design mock actually contain?"
Since everything is keyless, none of this adds a secret to .env, CI variables or a
teammate's onboarding checklist.
Limits, honestly
Claude with UseQR generates static codes. If the deliverable needs an editable
destination or scan analytics, that is a dynamic QR platform
decision no MCP tool changes. And for credentials: qr_generate_typed sends the
payload to the server to build (the privacy trade-off
of any server-side generation) — for a WiFi password you would rather keep local, use
the generator UI, which builds static codes entirely client-side.
FAQ
How do I add QR code tools to Claude?
Run claude mcp add --transport http useqr https://useqr.app/api/mcp, or add the equivalent mcpServers JSON entry in Claude Desktop. The server is keyless, so the one command is the entire setup.
Can Claude make QR codes without an MCP server?
Yes. Claude can write a markdown image or artifact img tag pointing at https://useqr.app/q/{data}.png — the keyless API renders it inline. MCP adds decoding, verification, batch and typed payload validation on top.
How does Claude verify a QR code it generated?
By calling the qr_verify tool, which renders the styled code, rasterises it and decodes it with zxing, returning scannable, contrast and a list of issues. Claude can then fix the styling and re-verify before presenting the result.
Is it safe that the UseQR MCP server has no authentication?
The server is stateless and stores nothing; tools generate, decode and verify images and return the result. There is no account, no data at rest and no destructive operation an attacker could invoke on your behalf.
Try it — free, no signup
Related
- QR codes from an AI agent: the UseQR MCP server — UseQR runs a keyless MCP server over Streamable HTTP at /api/mcp. One command adds it to Claude; a few lines of JSON add it to Cursor or Copilot. Agents…
- UseQR MCP server — tool reference — Every tool the UseQR MCP server exposes — qr_generate, qr_generate_typed, qr_decode, qr_verify, qr_batch and qr_size_recommend — with arguments and example calls.
- Using QR codes from an AI agent — The integration ladder for agents that need QR codes — from a bare markdown image URL through the keyless API to MCP tools — and the API design that lets agents self-correct.
- QR codes in Cursor and Copilot — Give your IDE agent QR abilities — MCP config for Cursor and VS Code Copilot, plus the keyless-API-in-a-snippet pattern for fixtures, READMEs and local tooling.