Skip to content
UseQR
ESC

Jump to

MOVEOPEN50 places

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.

View as MarkdownPaste this page into any AI assistant. It is plain, portable Markdown.

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/" via qr_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_decode at 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

  • 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.