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

A
Qualität der Beschreibung
100%
Vollständigkeit des Schemas
82%
Qualität der Benennung
98%
Risiko der Vergiftung
100%
Übereinstimmung der Berechtigungen
100%
Einhaltung des Protokolls
100%

Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.

Kontextkosten

~2,246Tokens (Tool-Definitionen)
~798 BTypische Antwortgröße
Mittlere Auswirkung auf die Aufmerksamkeit (1.75% von 128k Kontext)

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

npm@open-qr/mcp1.0.2stdio

Remote-Endpunkte

https://openqr.uk/mcpstreamable-http

Was es kann

Tool-Inventar

Tools (20)

🟢 Nur lesen🟡 Schreiben🔴 Löschen⚪ Unbekannt
⚪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

retrieve_data
Get details about [item] from OpenQR
Erwartete Tools: get_dynamic_qr
fetch_info
Fetch [information type] using OpenQR
Erwartete Tools: get_dynamic_qr
list_items
List all [items] available in OpenQR
Erwartete Tools: list_link_aliases
browse_collection
Show me the [collection] from OpenQR
Erwartete Tools: list_link_aliases
explore_workflow
List available [items], then get details for each one using OpenQR
Erwartete Tools: list_link_aliasesget_dynamic_qr

Community

Diesen Server bewerten

Nachweis

Aktuelle Beobachtungen

verifiziertVersion nicht aufgezeichnet20 Tools
verifiziertVersion nicht aufgezeichnet20 Tools