I built a free QR code API + MCP server on Cloudflare Pages — here's the whole design
Description and use
FreeQrly is a free QR code generator built on Cloudflare Pages and D1, featuring a unified auth and quota system across a web UI, REST API, and MCP, enabling AI agents to create static and dynamic codes without signup.
Problem
Most QR code generators are either ad‑covered landing pages or SaaS products with a paywall behind "dynamic codes". I wanted a generator that is free, private by default, and natively callable by AI agents.
Outcome
FreeQrly delivers a fully free, privacy‑first QR code service with a unified auth and quota system that works across a web UI, REST API, and MCP, enabling AI agents to generate static and dynamic codes without sign‑ups.
Workflow
- 1. User accesses static API via GET https://freeqrly.com/api/qr?data=… to receive an SVG.
- 2. For dynamic codes, user logs in via Google, GitHub, or email+password, creates up to 8 codes, and can edit or delete them after printing.
- 3. User creates an API token in the Dashboard; token is stored as a SHA‑256 hash and can be revoked.
- 4. User calls MCP POST https://freeqrly.com/mcp with Authorization: Bearer
<token>to access dynamic QR tools. - 5. System enforces quota, ownership, and revocation consistently across UI, API, and MCP.
Evidence
Most QR code generators are either ad-covered landing pages or SaaS products with a paywall behind "dynamic codes".
I built FreeQrly — open source (BryceBin/freeqrly, MIT), running entirely on Cloudflare Pages + D1.
one shared auth/quota core serving three surfaces — web UI, REST API, and MCP.
The API-token flow reuses the UI's auth and quota logic instead of duplicating it.
I verified this end to end with a real test account in a real browser — login, token creation, REST create→list→stats→update→scan-redirect→delete, MCP tool calls, then 401s after revocation — and cleaned up all test data afterward.
- Record date: 2026-10-19T04:42:35.641Z