OpenQR
Model Context Protocol

QR codes for your AI agent

The hosted OpenQR MCP server hands an agent the same powers you have in the dashboard: generate static codes, create and edit dynamic ones, bulk-create from a list, organise into folders, save style themes, and read scan analytics. One endpoint, one Bearer key, 20 tools. No SDK, no glue code.

Listed in the official MCP registry as uk.openqr/qr

Drop this into your client

mcp configjson
{
  "mcpServers": {
    "openqr": {
      "type": "http",
      "url": "https://openqr.uk/mcp",
      "headers": {
        "Authorization": "Bearer oqr_..."
      }
    }
  }
}

Streamable HTTP, JSON-RPC 2.0 over POST. Nothing to install: it’s a hosted server. Get the oqr_… key from the API dashboard.

What MCP gets you

MCP (the Model Context Protocol) is an open standard for letting an AI agent call external tools. Instead of writing code against the REST API, your agent connects to the MCP server, discovers the tools it exposes, and calls them itself when a request needs one. You describe the outcome in plain English; the agent picks the tool and fills in the arguments.

REST or MCP: same engine. The OpenQR MCP server is a thin layer over the same REST API. Writing code directly? Use REST. Wiring up an agent? Use MCP. They share the account, keys, rate limits and abuse rules.
Tools

20 tools, 9 groups

Anything you can do in the OpenQR dashboard, an agent can do over MCP. The agent calls tools/list automatically, so you never name a tool yourself.

Generate

generate_qr
Render a static QR image as PNG or SVG, any size, optionally styled by a saved theme.

Static codes

create_static_qr
Save a static code from structured fields: wifi, contact (vCard), email, SMS, WhatsApp, location, text. No short link, not editable.

Dynamic codes

create_dynamic_qr
Create an editable code; returns its id and oqr.to short link.
update_dynamic_qr
Repoint, re-label, re-tag, re-file or restyle a code, without reprinting it.
list_dynamic_qr
List your dynamic codes with id, short URL, destination, label and status.
get_dynamic_qr
Fetch one code's full details: destination, label, type, tags, folder, status and created date.
delete_dynamic_qr
Permanently delete a code; its short link stops resolving.

Analytics

get_scans
Scan totals plus top countries, devices and referrers for a code.

Link aliases

create_link_alias
Create an extra short link that resolves where a code points; QR scans and link clicks count separately.
list_link_aliases
List the link aliases of one dynamic code.

Bulk

bulk_create_dynamic_qr
Create up to 200 dynamic codes in one call, optionally styled with a theme.

Folders

list_folders
List your folders (id and name).
create_folder
Create a folder to organise codes.
delete_folder
Delete a folder; its codes are un-filed, not deleted.

Themes

list_themes
List saved style themes so the agent can apply one by reference.
create_theme
Save a reusable style: colours, dot/corner shapes, logo, gradient, frame.
delete_theme
Delete a theme; codes already styled with it keep their look.

Branded subdomain

get_subdomain
Show the account's {name}.oqr.to subdomain, and whether it is suspended.
set_subdomain
Claim or change it, so codes also resolve at {name}.oqr.to. Pro only.
clear_subdomain
Release it. Codes stay live on the plain short link; the name becomes claimable.
Beyond tools

Guided prompts and ready-made resources

A capable client discovers three things when it connects. Beyond the tools, the server offers 4 prompts (ready-made, multi-step flows an agent can surface in one click) and 5 style presets (readable resources it can apply to a theme). No extra setup; the same key unlocks all three.

Prompts · guided flows

create_tracked_qr
Create a repointable dynamic code and explain how to change it later.
bulk_qr_for_print
Turn a list of URLs into a batch of dynamic codes for a print run.
brand_a_qr
Save a brand style theme and apply it to a new code.
qr_scan_report
Summarise scan performance and suggest a next step.

Resources · style presets

Five ready-to-apply looks, read as openqr://preset/… and passed straight into a theme:

  • Classic
  • Teal Gradient
  • High Contrast
  • Dots
  • Classy
Connect

Works with the MCP clients you already use

Most MCP clients take the same shape of config: a server name, the HTTP transport, the URL and an Authorization header. Add the block above, restart, and the tools appear.

  • Claude Desktop

    ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) · %APPDATA%\Claude\claude_desktop_config.json (Windows)

    Settings → Developer → Edit Config, paste the block, save and restart. OpenQR appears under the connectors menu.

  • Claude Code

    claude mcp add --transport http openqr https://openqr.uk/mcp --header "Authorization: Bearer oqr_..."

    One command, no file to edit. Check it with claude mcp list.

  • Cursor

    ~/.cursor/mcp.json (or Settings → MCP → Add new server)

    Add the block, toggle the server on; the tools become available to the agent in chat.

  • Cline

    cline_mcp_settings.json (MCP Servers icon → Configure MCP Servers)

    Add the same server entry under mcpServers and save.

  • OpenClaw

    Its MCP config block

    The self-hosted personal assistant supports MCP too: register the URL with the Bearer header.

In practice

Ask in plain English, and the agent picks the tool

  • “Make a QR code for openqr.uk and save it as a 1024px PNG.”generate_qr
  • “Create a dynamic code for our spring-sale page, label it Spring Sale.”create_dynamic_qr
  • “That campaign moved; repoint the Spring Sale code to the new URL.”update_dynamic_qr
  • “How many scans has the Spring Sale code had, and where from?”get_scans
  • “Make editable codes for each of these 50 product URLs.”bulk_create_dynamic_qr
  • “Save our brand style as a theme, then use it on every new code.”create_theme
On the wire

What a tool call looks like

You never write this yourself; the agent does. But here’s the raw JSON-RPC a client sends to create a dynamic code, so you can see exactly what crosses the wire. The reply hands back the new code’s id and its oqr.to short link; later, the same agent can call get_scans or repoint it with update_dynamic_qr.

tools/callbash
curl -X POST https://openqr.uk/mcp \
  -H "Authorization: Bearer oqr_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0", "id": 1, "method": "tools/call",
    "params": {
      "name": "create_dynamic_qr",
      "arguments": {
        "destination": "https://example.com/spring-sale",
        "label": "Spring Sale"
      }
    }
  }'

Connect an agent to the OpenQR MCP server

Mint a free key, paste the config, and your agent can generate, edit and read scan analytics for QR codes in plain English.

Get a free key