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.
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%20MEMachine-readable everything
Per-assistant setup
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
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 matrixcurl "https://useqr.app/api/v1/qr?data=hello&format=svg-tiny" -o qr-tiny.svgcurl "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"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"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" } }
]
}'=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.
| Capability | UseQR | QRCodeKIT | QR Planet |
|---|---|---|---|
| Account needed | None. 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 arguments | Full 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 scans | qr_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 types | 30+ 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. |
| Quotas | None. 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.
git clone https://github.com/rajkaria/useqr.git
cd useqr && pnpm install && pnpm verify
pnpm --filter @useqr/web dev