Skip to content
UseQR
ESC

↑↓ MOVE↵ OPEN48 PLACES

Keyless REST · MCP · llms.txt · OpenAPI 3.1

Documentation you can run without reading

The surface is a live request: pick an endpoint, edit the params, and see the exact bytes and the rendered code that come back. Every 4xx carries a fix field with the corrected call.

GET/api/v1/qr?data=hello&size=512&format=png&style=rounded&fg=312e81&verify=1

The generic generator. `data` also accepts text, content, url, q.

Response · press Send

Nothing has been sent yet. Press Send and the real bytes appear here — the rendered code, the response headers, and how long it took.

When you get it wrong · 400 · application/problem+json

{
  "title": "Invalid parameter",
  "detail": "\"pink\" is not a color we understand",
  "fix": "use a hex color like color=0f172a"
}

MCP server

Six tools over Streamable HTTP. No auth, no account, nothing stored.

  • qr_generate
  • qr_generate_typed
  • qr_decode
  • qr_verify
  • qr_batch
  • qr_size_recommend
claude mcp add --transport http \
  useqr https://useqr.app/api/mcp

Every page is an API

Tool pages keep their whole state in the URL, so an agent can compose an editor link a human then opens and edits.

/wifi?ssid=CafeGuest&style=rounded
     &fg=312e81&label=SCAN%20ME

Secrets are excluded — WiFi passwords never enter a URL

Copy-paste

The calls people actually make

Shortest possible call is path style, so it drops straight into a markdown image tag: https://useqr.app/q/hello.png

Generate (aliases like text= and width= just work)
curl "https://useqr.app/api/v1/qr?data=hello&size=512" -o qr.png
curl "https://useqr.app/api/v1/qr?data=hello&format=svg&style=rounded&fg=312e81"
curl "https://useqr.app/api/v1/qr?data=hello&format=json"    # module matrix
Print & cutting (SVG Tiny 1.2 — Illustrator, Cricut, engravers)
curl "https://useqr.app/api/v1/qr?data=hello&format=svg-tiny" -o qr-tiny.svg
Typed endpoints — same builders as the web UI
curl "https://useqr.app/api/v1/wifi?ssid=CafeGuest&password=espresso" -o wifi.png
curl "https://useqr.app/api/v1/upi?pa=shop@okhdfcbank&pn=Sharma%20Store&am=499"
curl "https://useqr.app/api/v1/vcard?fn=Asha&ln=Rao&phone=%2B919876543210"
Prove it scans before you ship it
curl "https://useqr.app/api/v1/qr?data=hello&fg=312e81&verify=1" -D - -o qr.png
# x-qr-version: 2 · x-qr-ec: M · x-qr-contrast: 12.6 · x-qr-verified: true
curl "https://useqr.app/api/v1/verify?data=hello&color=cccccc"
Batch — shared style, per-item overrides, typed items, up to 1,000
curl -X POST https://useqr.app/api/v1/qr/batch \
  -H "Content-Type: application/json" \
  -d '{
    "output": "url",
    "style": { "size": 512, "style": "rounded", "color": "312e81" },
    "items": [
      { "data": "https://example.com/a", "id": "a" },
      { "type": "wifi", "fields": { "ssid": "CafeGuest", "password": "espresso" } }
    ]
  }'
Google Sheets
=IMAGE("https://useqr.app/api/v1/qr?data=" & ENCODEURL(A2))

Checked, not claimed

How this compares

Two other QR products ship an MCP server. Both need an account before an agent can call them, neither exposes design arguments, and neither can prove the code it returns actually scans.

UseQR’s MCP server compared with QRCodeKIT and QR Planet
CapabilityUseQRQRCodeKITQR Planet
Account neededNone. No account, no API key, no OAuth — connect and call.Account required, but your existing plan carries over — their MCP page says no additional subscription is needed, so the free plan works through it.Account required; 1 code on the free plan, paid plans from $5/month with a three-month minimum — they do not sell monthly billing.
Design argumentsFull design surface: module shape, eye shape, colors, error correction, size, quiet zone.No design arguments. Their words: “custom colors, logos, branding and analytics aren't available yet through MCP.”Exposed: design_custom_qrcode sets patterns, colors, frames, and logos, and designs save as reusable templates.
Proves it scansqr_verify renders, rasterizes, and decodes with zxing, then reports contrast and quiet-zone problems.No verification step; nothing decodes the generated code back.No verify or decode tool — nothing reads the rendered image back.
Payload types30+ typed payloads (WiFi, vCard, UPI, PIX, EPC, BIP-21 crypto, calendar, and more).Create, list, download, and delete dynamic URL codes — that is the whole surface today.Broad: dynamic and static codes, GS1 Digital Links, business cards, app-store codes, coupons and vouchers, folders, plus language, country, geofence, and region redirects.
QuotasNone. Static generation is deterministic and cached; there is nothing to meter.Plan quotas apply (free plan: 2 codes for life, 100 scans per code per month).Plan-gated: 1 code on Free, 5 on Starter, 100 on Premium, 250 per user on White Label.

Verified 2026-08-21: QRCodeKIT MCP server page · QR Planet MCP server documentation. Vendors ship fast — if something here is out of date, tell us and we’ll correct it.

MIT · one command

Self-host it

If you need more than fair use of the hosted API, run your own — it is the same code.

Run locally
git clone https://github.com/rajkaria/useqr.git
cd useqr && pnpm install && pnpm verify
pnpm --filter @useqr/web dev

Why it's free forever →