Change codes from a chat
Add QRCTools to ChatGPT or Claude and manage codes in plain words, or call the REST API with a key. Both act as you, in your workspaces with your role in each, and in the folders shared with you. Nothing more.
https://qrc.tools/mcp
Sign in with OAuth, or send an API key.
Paste it where the app asks for a connector or MCP server URL. Steps below.
Connect from ChatGPT
ChatGPT adds connectors in developer mode, on the web. It's a beta for paid plans. In Business and Enterprise workspaces, an admin may have to allow it first.
- Turn it on
- Open Settings → Apps & Connectors (called Apps in newer versions), then Advanced settings, and switch on Developer mode.
- Create
- Back in Apps & Connectors, choose Create. Name it QRCTools, paste the MCP server URL, choose OAuth, confirm that you trust the app, and create it.
- Sign in
- QRCTools opens. Sign in if asked, read what ChatGPT may do, and allow access.
- Use it
- In a chat, add QRCTools from the + menu under Developer mode, then ask.
Connect from Claude
Connectors you add on the web also work in Claude Desktop and the mobile apps.
- Add
- Open Settings → Connectors and choose Add custom connector. On Team and Enterprise plans an owner adds it first, under Organization settings → Connectors.
- Paste
- Name it QRCTools and paste the MCP server URL. Leave the advanced OAuth fields empty, because Claude registers itself.
- Connect
- Choose Connect, sign in to QRCTools if asked, and allow access.
- Use it
- In a chat, switch QRCTools on in the search and tools menu.
Claude Code and other clients
Claude Code signs in the same way. Add the server, run /mcp and choose qrctools. Or skip the sign-in and send a key from Settings.
Cursor, VS Code and other clients that speak Streamable HTTP take the same URL. Most accept the JSON below.
claude mcp add --transport http qrctools https://qrc.tools/mcpclaude mcp add --transport http qrctools https://qrc.tools/mcp \ --header "Authorization: Bearer qrc_sk_your_key"{ "mcpServers": { "qrctools": { "url": "https://qrc.tools/mcp", "headers": { "Authorization": "Bearer qrc_sk_your_key" } } }}What to ask
New website codes are editable links, so the printed code never changes while its destination can. Assistants confirm before changing a destination or pausing, since printed copies follow at their next scan.
“Make an editable QR code called Spring menu for https://example.com/menu and give me the PNG.”
create_qr_code
“Which of my codes got the most scans in the last 30 days?”
list_qr_codes · get_qr_stats
“Point the Summer sale code at https://example.com/autumn instead.”
update_qr_destination
“Pause the Summer sale code.”
pause_qr_code
“Show scans of Spring menu by device and country.”
get_qr_stats
“Create a folder called Flyers and a code for https://example.com/flyer in it.”
create_folder · create_qr_code
Make and change a code from an AI chat
0:32 · no sound · captions
- Connect QRCTools onceThe chat asks to use your QRCTools account. The consent screen says what it can and can never do.
- Ask in plain wordsSomeone asks an AI chat for an editable QR code for their spring menu.
- The connector makes the codeThe chat calls the
create_qr_codetool. QRCTools sends back the short link and the QR image. - Print it onceThe code goes on the menu. A scan opens the spring menu.
- Ask for a new destinationLater, the chat calls
update_qr_destinationto point the same code at the summer menu. - The printed code stays the sameThe label shows the new destination and the old one struck through. The QR code did not change.
The names, links and numbers in this video are demo data.
What the app can do
A read-only connection gets the first five tools. Deleting codes and sharing folders stay in the dashboard, where you can see what you are about to change.
- list_qr_codes
- Find codes by name, short code, tag, URL, folder, type or status.
- get_qr_code
- Short link, destination, form and routing rules, status, style and download links of one code.
- get_qr_stats
- Scans in total and in the last 7 and 30 days, by device, browser, country, referrer and routing rule.
- list_folders
- Folders in a workspace, and the ones shared with you.
- list_workspaces
- Your personal and team workspaces, with your role in each.
- create_qr_codeWrite
- An editable link (the default), a landing page, or a static code, with a preview image.
- update_qr_destinationWrite
- Point a dynamic code at a new URL or landing page. Its routing rules and an active form still come first.
- rename_qr_codeWrite
- Change a code's display name.
- pause_qr_codeWrite
- Pause a dynamic code. Scans show a “This code is paused” page until you resume it.
- resume_qr_codeWrite
- Turn it back on.
- create_folderWrite
- Make a folder, optionally inside another one.
REST API
Create a key in Settings → API keys and send it as a bearer token. The OpenAPI 3.1 document lists every field.
A body with targetUrl makes an editable link, page a landing page, and content a static code (url, wifi, text, vcard, email, sms, phone or location).
curl https://qrc.tools/api/v1/qr-codes \ -H "Authorization: Bearer qrc_sk_your_key"curl -X POST https://qrc.tools/api/v1/qr-codes \ -H "Authorization: Bearer qrc_sk_your_key" \ -H "Content-Type: application/json" \ -d '{"name": "Spring menu", "targetUrl": "https://example.com/menu"}'- GET/qr-codes
- List codes in your personal workspace, or the one in workspaceId. Filter by q, tag, folderId (or unfiled), type and status. limit and cursor page through.
- POST/qr-codes
- Create a code.
- GET/qr-codes/{id}
- Get one code.
- PATCH/qr-codes/{id}
- Rename it.
- DELETE/qr-codes/{id}
- Delete it. Printed copies of a dynamic code stop working.
- PUT/qr-codes/{id}/destination
- New targetUrl or landing page (dynamic codes). Routing rules and an active form still come first.
- POST/qr-codes/{id}/pause
- Pause the short link.
- POST/qr-codes/{id}/resume
- Resume it.
- GET/qr-codes/{id}/stats
- Scan stats.
- GET/qr-codes/{id}/image
- PNG, SVG or PDF, with format and size.
- GET/folders
- List folders, in your personal workspace or the one in workspaceId.
- POST/folders
- Create a folder.
- GET/workspaces
- List your workspaces and your role in each.
- Base URL
- https://qrc.tools/api/v1
- Pages
- Lists return
dataandnextCursor. Send the cursor back for the next page. - Errors
- Every error has the same shape, like
{"error": {"code": "not_found", "message": "QR code not found."}}. - Limits
- 120 requests a minute per key or connected app. Responses carry RateLimit headers, and a 429 adds Retry-After.
- Smart QRs
hasFormsays scans open the code’s form, andruleCountcounts the routing rules checked before it.targetUrlorlandingPageis where scans go otherwise, and stats break scans down by rule. Rules and forms are edited in the dashboard.- Files
- Every code lists PNG, SVG and PDF downloads. A dynamic code's files are public links, since it only encodes its short link (on the code's custom domain when it has one). A static code may hold a Wi-Fi password, so its files need your key. These files use square modules in your colors. Dot styles and logos come from the dashboard.
Make and change a code with the REST API
0:26 · no sound · captions
- Make a code with one request
POST /with a name and a destination. The answer holds the short link.api/ v1/ qr-codes - Download print-ready artworkThe SVG file comes from the code's own download link.
- Change the destination
PUT /with the new URL.api/ v1/ qr-codes/ {id}/ destination - The printed code keeps workingA scan of the same short link now goes to the new page.
The names, links and numbers in this video are demo data.
Keys and security
Keys and connected apps act as you and follow the dashboard's rules, including your role in each team workspace. You can take access back at any time.
- Keys
- Shown once. QRCTools keeps only a SHA-256 fingerprint, and a revoked key stops working at once.
- Access
- Read-only keys list and read. Read & write keys can also create, change, pause and delete codes.
- Apps
- Connectors sign in with OAuth 2.1 and PKCE, and you choose read-only or changes on the consent screen. Access tokens last an hour. Refresh tokens rotate on every use, and a reused one disconnects the app.
- Undo
- Revoke keys and disconnect apps in Settings.
- Sharing
- What you own, and your read, write or edit role in shared folders, decide what a key or app can see and change.