OpenQR
Generate, edit and track dynamic (editable) QR codes with scan analytics. Hosted MCP and REST API.
Sollte ich dies verwenden
Qualität und Sicherheit
Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.
Kontextkosten
Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.
Installieren
Installation mit einem Klick
Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:
{
"mcpServers": {
"qr": {
"command": "npx",
"args": [
"@open-qr/mcp"
]
}
}
}Ausführbare Pakete
1.0.2stdioRemote-Endpunkte
https://openqr.uk/mcpstreamable-httpWas es kann
Tool-Inventar
Tools (20)
⚪generate_qr(data, format, size, theme)
Generate a static QR code from any text/URL. Returns a PNG image (or SVG markup). Requires an OpenQR API key.
Eingabe-Schema
{
"type": "object",
"properties": {
"data": {
"type": "string",
"description": "The content to encode (URL or text)."
},
"format": {
"type": "string",
"enum": [
"png",
"svg"
],
"description": "Output format (default png)."
},
"size": {
"type": "number",
"description": "Pixel size, 96–2048 (default 512)."
},
"theme": {
"type": "string",
"description": "A saved theme id or name. Applies the theme's colours; full styling applies to dynamic codes."
}
},
"required": [
"data"
]
}🟡create_dynamic_qr(destination, label, theme)
Create an editable (dynamic) QR code whose destination you can change later without reprinting. Requires an OpenQR API key.
Eingabe-Schema
{
"type": "object",
"properties": {
"destination": {
"type": "string",
"description": "The http(s) URL the code should point to."
},
"label": {
"type": "string",
"description": "Optional label."
},
"theme": {
"type": "string",
"description": "A saved theme id or name to style the code with."
}
},
"required": [
"destination"
]
}🟡create_static_qr(type, fields, label, theme)
Save a static QR code to your library from structured fields: wifi, contact (vCard), email, SMS, WhatsApp, location, text, phone or URL. Static codes bake the content into the code itself — no short link, no scan analytics, not editable later. Render the returned payload with generate_qr. Requires an OpenQR API key.
Eingabe-Schema
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"url",
"text",
"email",
"phone",
"sms",
"whatsapp",
"wifi",
"geo",
"vcard"
],
"description": "The payload type."
},
"fields": {
"type": "object",
"description": "Field names depend on type. url: url. text: text. email: email, subject?, body?. phone: phone. sms: phone, message?. whatsapp: phone (country code, digits only), message?. wifi: ssid, password?, encryption? (WPA|WEP|nopass), hidden? (boolean). geo: lat, lng. vcard: firstName?, lastName?, phone?, email?, org?, title?, url?, address? (a name/phone/email is required)."
},
"label": {
"type": "string",
"description": "Optional label for your dashboard."
},
"theme": {
"type": "string",
"description": "A saved theme id or name to style the code with."
}
},
"required": [
"type",
"fields"
]
}🟡update_dynamic_qr(id, destination, label, slug, tags, ...)
Edit a dynamic QR code: change its destination, label, custom short link (slug), tags or folder. Pass only the fields you want to change. Requires an OpenQR API key.
Eingabe-Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The dynamic code id."
},
"destination": {
"type": "string",
"description": "New http(s) URL."
},
"label": {
"type": "string",
"description": "New label."
},
"slug": {
"type": "string",
"description": "Custom short-link back-half (oqr.to/<slug>): 3–48 letters, numbers or hyphens."
},
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Replace the code's tags (max 10)."
},
"folder_id": {
"type": [
"string",
"null"
],
"description": "Move into a folder id, or null to un-file."
},
"status": {
"type": "string",
"enum": [
"active",
"paused"
],
"description": "Pause the code (it stops resolving — scanners see an inactive page) or reactivate it. Free allows 1 active code; Pro 25."
},
"password": {
"type": [
"string",
"null"
],
"description": "Pro: require this password before the code redirects (min 4 characters). Pass null to remove all protection."
},
"pin": {
"type": [
"string",
"null"
],
"description": "Pro: require a 4-digit PIN before the code redirects. Exactly 4 digits. Pass null to remove all protection."
},
"lock_hint": {
"type": [
"string",
"null"
],
"description": "Optional hint shown on the unlock page, e.g. \"Ask at the bar\". Max 60 characters."
},
"pause_until": {
"type": [
"string",
"null"
],
"description": "ISO 8601 timestamp: schedule a pause until then (scanners see the inactive page; the code self-resumes at the deadline). Pass null to clear the schedule. Future timestamps only, active codes only."
},
"ios_destination": {
"type": [
"string",
"null"
],
"description": "App links: iOS scanners follow this http(s) URL instead of destination (e.g. the App Store page). Pass null to clear. Applies to the plain redirect only."
},
"android_destination": {
"type": [
"string",
"null"
],
"description": "App links: Android scanners follow this http(s) URL instead of destination (e.g. the Google Play page). Pass null to clear."
},
"theme": {
"type": "string",
"description": "A saved theme id or name to restyle the code with."
}
},
"required": [
"id"
]
}🟢get_dynamic_qr(id)
Get the full details of one of your QR codes by id: destination, short link, label, type, tags, folder, status and created date. Requires an OpenQR API key.
Eingabe-Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The code id."
}
},
"required": [
"id"
]
}🟢get_scans(id)
Get scan statistics for a dynamic QR code. Requires an OpenQR API key.
Eingabe-Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The dynamic code id."
}
},
"required": [
"id"
]
}🟡create_link_alias(id, slug)
Create an extra short link (link alias) that resolves where one of your dynamic codes points: share a different slug per channel while the QR keeps its own slug, so QR scans and link clicks are counted separately. Free accounts have no alias allowance; Pro includes 10. Requires an OpenQR API key.
Eingabe-Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The dynamic code id the alias should point at."
},
"slug": {
"type": "string",
"description": "Optional custom back-half (oqr.to/<slug>): 3–48 letters, numbers or hyphens. Omit for a random one."
}
},
"required": [
"id"
]
}🟢list_link_aliases(id)
List the link aliases of one dynamic code. Requires an OpenQR API key.
Eingabe-Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The dynamic code id."
}
},
"required": [
"id"
]
}🟢list_dynamic_qr(limit)
List your dynamic (editable) QR codes — id, short URL, destination, label and status. Requires an OpenQR API key.
Eingabe-Schema
{
"type": "object",
"properties": {
"limit": {
"type": "number",
"description": "Max codes to return, 1–500 (default 200)."
}
}
}🔴delete_dynamic_qr(id)
Permanently delete a dynamic QR code. The short link stops working. Requires an OpenQR API key.
Eingabe-Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The dynamic code id."
}
},
"required": [
"id"
]
}🟡bulk_create_dynamic_qr(codes, theme)
Create up to 200 dynamic QR codes at once. Requires an OpenQR API key.
Eingabe-Schema
{
"type": "object",
"properties": {
"codes": {
"type": "array",
"description": "Codes to create.",
"items": {
"type": "object",
"properties": {
"destination": {
"type": "string"
},
"label": {
"type": "string"
}
},
"required": [
"destination"
]
}
},
"theme": {
"type": "string",
"description": "A saved theme id or name applied to every code created."
}
},
"required": [
"codes"
]
}🟢list_folders
List your folders (id and name). Requires an OpenQR API key.
Eingabe-Schema
{
"type": "object",
"properties": {}
}🟡create_folder(name)
Create a folder to organise codes. Requires an OpenQR API key.
Eingabe-Schema
{
"type": "object",
"properties": {
"name": {
"type": "string"
}
},
"required": [
"name"
]
}🔴delete_folder(id)
Delete a folder (its codes are un-filed, not deleted). Requires an OpenQR API key.
Eingabe-Schema
{
"type": "object",
"properties": {
"id": {
"type": "string"
}
},
"required": [
"id"
]
}🟢list_themes
List your saved style themes (id, name) — apply one by passing its id or name as `theme` to generate/create/update tools. Requires an OpenQR API key.
Eingabe-Schema
{
"type": "object",
"properties": {}
}🟡create_theme(name, style)
Save a reusable style theme. `style` is a QR style object (fgColor, bgColor, dotType, cornerSquareType, etc.). Requires an OpenQR API key.
Eingabe-Schema
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"style": {
"type": "object",
"description": "QR style JSON (colours, dot/corner shapes, logo, gradient, frame…)."
}
},
"required": [
"name",
"style"
]
}🔴delete_theme(id)
Delete a saved theme. Codes already styled with it keep their look. Requires an OpenQR API key.
Eingabe-Schema
{
"type": "object",
"properties": {
"id": {
"type": "string"
}
},
"required": [
"id"
]
}🟢get_subdomain
Show the branded subdomain on this account ({name}.oqr.to). Reports whether it is currently suspended — a suspended subdomain redirects to the plain short link instead of serving, which happens when a Pro plan lapses. Requires an OpenQR API key.
Eingabe-Schema
{
"type": "object",
"properties": {}
}🟡set_subdomain(subdomain)
Claim or change the branded subdomain so codes also resolve at {name}.oqr.to. Pro only. Codes keep working on the plain short link either way, so changing this never breaks anything already printed. Requires an OpenQR API key.
Eingabe-Schema
{
"type": "object",
"properties": {
"subdomain": {
"type": "string",
"description": "3–32 letters, numbers or hyphens, e.g. \"acme\"."
}
},
"required": [
"subdomain"
]
}🔴clear_subdomain
Release the branded subdomain. Codes stay live on the plain short link; only the {name}.oqr.to form stops resolving. The name becomes claimable by someone else. Requires an OpenQR API key.
Eingabe-Schema
{
"type": "object",
"properties": {}
}Empfohlene Prompts
get_dynamic_qrget_dynamic_qrlist_link_aliaseslist_link_aliaseslist_link_aliasesget_dynamic_qrCommunity
Nachweis