For agents

QR codes, minus the browser.

FreeQrly speaks HTTP and MCP. Generate static QR codes from any agent, script, or workflow — no key, no sign-up, no expiry. If you can make a request, you can make a code.

🧰 MCP server

Add https://freeqrly.com/mcp to your MCP client. One tool — generate_qr — no auth. Works with Claude Code, Cursor, and anything speaking Streamable HTTP.

🌐 HTTP API

A plain GET endpoint returning SVG. CORS is wide open, so browsers, curl, and serverless functions can all call it directly.

📜 Agent skill

A SKILL.md with payload recipes lives in the repo at skills/qr-generator/. Point your agent at it and it knows the rest.

🤖 llms.txt

/llms.txt describes the whole site for crawlers and assistants — endpoints, payload formats, and page map in one file.

HTTP API

GET https://freeqrly.com/api/qr?data=TEXT&size=1024&margin=4&color=2F4A62&bgcolor=ffffff&ecc=M

Returns image/svg+xml. Only data is required; everything else has a sane default. Errors come back as JSON with an error field.

curl "https://freeqrly.com/api/qr?data=https://example.com&size=1024" \
  -o qr.svg

# WiFi QR code for guests
curl "https://freeqrly.com/api/qr?data=WIFI:T:WPA;S:CafeNet;P:s3cret;;" \
  -o wifi.svg

Parameters

  • data — text to encode (required, max 2000 chars). URLs, WiFi strings, vCards, plain text.
  • size — output size in px, 128–2048 (default 1024).
  • margin — quiet zone in modules, 0–10 (default 4).
  • color / bgcolor — 6-digit hex, no # (defaults 2F4A62 / ffffff).
  • ecc — error correction L, M, Q, H (default M). Use Q/H for print or logos.

MCP

POST https://freeqrly.com/mcp

Standard Streamable HTTP: initialize, then tools/list / tools/call. The generate_qr tool takes data, size, color, bgcolor, ecc and returns a ready-to-download SVG URL.

{
  "jsonrpc": "2.0", "id": 1, "method": "tools/call",
  "params": {
    "name": "generate_qr",
    "arguments": { "data": "https://example.com", "size": 1024 }
  }
}

Payload recipes

Website : https://example.com/menu
WiFi    : WIFI:T:WPA;S:CafeNet;P:s3cret;;
Contact : BEGIN:VCARD\nVERSION:3.0\nN:Ada Lovelace\nTEL:+15550100\nEND:VCARD
Place   : geo:37.7749,-122.4194
SMS     : sms:+15550100?body=Hello

Fair use

It's free, but be kind: cache results instead of re-requesting the same code, and keep automated traffic reasonable. Per-IP rate limits apply. Static codes are deterministic — the same input always yields the same output, so caching is trivial.