{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_23rvrgbyfmk5","handle":"openqr","url":"https://wellknown.network/agents/openqr","links":{"self":"https://wellknown.network/agents/openqr/record.json","html":"https://wellknown.network/agents/openqr","markdown":"https://wellknown.network/agents/openqr/record.md","api":"https://wellknown.network/api/v1/agents/openqr","status":"https://wellknown.network/api/v1/agents/openqr/status","claim":"https://wellknown.network/agents/openqr/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/openqr/claim.json","badge":"https://wellknown.network/agents/openqr/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/openqr/history","tools":"https://wellknown.network/api/v1/agents/openqr/tools"},"ard":{"identifier":"urn:air:openqr.uk:server:openqr","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"OpenQR","summary":"Generate, edit and track dynamic (editable) QR codes with scan analytics. Hosted MCP and REST API.","description":"Generate, edit and track dynamic (editable) QR codes with scan analytics. Hosted MCP and REST API.","publisher":{"name":"uk.openqr","url":null},"homepage":"https://openqr.uk/api","repository":"https://github.com/open-qr/openqr","version":"1.0.4","license":"AGPL-3.0-only","protocols":["mcp"],"tags":["mcp","model-context-protocol","qr-code","qr","dynamic-qr","openqr"],"pricing":null,"endpoints":[{"url":"https://openqr.uk/mcp","type":"mcp_streamable_http","auth":null,"probeable":true},{"url":"npm:@open-qr/mcp","type":"package_npm","auth":null,"probeable":false}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-09-10T15:07:45.676744Z","npmKeywords":["mcp","model-context-protocol","qr-code","qr","dynamic-qr","openqr"],"publishedAt":"2026-09-10T15:07:45.676744Z","registryName":"uk.openqr/qr"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","license":"npm","repoUrl":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"communication.sms-voice","name":"SMS & Voice","confidence":1,"provenance":"derived"},{"slug":"communication.chat","name":"Team Chat","confidence":0.51,"provenance":"derived"}],"categories":["communication"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 4h ago.","lastOkAt":"2026-10-10T23:23:12.352Z","lastProbedAt":"2026-10-10T23:23:12.352Z","statusComputedAt":"2026-10-10T23:24:10.419Z","reliability30d":{"probes":108,"successRate":1,"p50Ms":1086,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":108,"ok":108,"authBoundaryOk":0,"serviceOk":108,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-10T23:23:12.352Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":677,"error":null,"detail":{"tools":[{"name":"generate_qr","description":"Generate a static QR code from any text/URL. Returns a PNG image (or SVG markup). Requires an OpenQR API key."},{"name":"create_dynamic_qr","description":"Create an editable (dynamic) QR code whose destination you can change later without reprinting. Requires an OpenQR API key."},{"name":"create_static_qr","description":"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 c"},{"name":"update_dynamic_qr","description":"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"},{"name":"get_dynamic_qr","description":"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."},{"name":"get_scans","description":"Get scan statistics for a dynamic QR code. Requires an OpenQR API key."},{"name":"create_link_alias","description":"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"},{"name":"list_link_aliases","description":"List the link aliases of one dynamic code. Requires an OpenQR API key."},{"name":"list_dynamic_qr","description":"List your dynamic (editable) QR codes — id, short URL, destination, label and status. Requires an OpenQR API key."},{"name":"delete_dynamic_qr","description":"Permanently delete a dynamic QR code. The short link stops working. Requires an OpenQR API key."},{"name":"bulk_create_dynamic_qr","description":"Create up to 200 dynamic QR codes at once. Requires an OpenQR API key."},{"name":"list_folders","description":"List your folders (id and name). Requires an OpenQR API key."},{"name":"create_folder","description":"Create a folder to organise codes. Requires an OpenQR API key."},{"name":"delete_folder","description":"Delete a folder (its codes are un-filed, not deleted). Requires an OpenQR API key."},{"name":"list_themes","description":"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."},{"name":"create_theme","description":"Save a reusable style theme. `style` is a QR style object (fgColor, bgColor, dotType, cornerSquareType, etc.). Requires an OpenQR API key."},{"name":"delete_theme","description":"Delete a saved theme. Codes already styled with it keep their look. Requires an OpenQR API key."},{"name":"get_subdomain","description":"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 "},{"name":"set_subdomain","description":"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 "},{"name":"clear_subdomain","description":"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."}],"toolCount":20,"toolsHash":"0d3d70448e0ddb129a0ccecddaa1e05d6826ac15b5a5a7791993ec28c09d0c45","serverName":"OpenQR","capabilities":["tools","prompts","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-10T16:31:10.979Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":1190,"error":null,"detail":{"tools":[{"name":"generate_qr","description":"Generate a static QR code from any text/URL. Returns a PNG image (or SVG markup). Requires an OpenQR API key."},{"name":"create_dynamic_qr","description":"Create an editable (dynamic) QR code whose destination you can change later without reprinting. Requires an OpenQR API key."},{"name":"create_static_qr","description":"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 c"},{"name":"update_dynamic_qr","description":"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"},{"name":"get_dynamic_qr","description":"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."},{"name":"get_scans","description":"Get scan statistics for a dynamic QR code. Requires an OpenQR API key."},{"name":"create_link_alias","description":"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"},{"name":"list_link_aliases","description":"List the link aliases of one dynamic code. Requires an OpenQR API key."},{"name":"list_dynamic_qr","description":"List your dynamic (editable) QR codes — id, short URL, destination, label and status. Requires an OpenQR API key."},{"name":"delete_dynamic_qr","description":"Permanently delete a dynamic QR code. The short link stops working. Requires an OpenQR API key."},{"name":"bulk_create_dynamic_qr","description":"Create up to 200 dynamic QR codes at once. Requires an OpenQR API key."},{"name":"list_folders","description":"List your folders (id and name). Requires an OpenQR API key."},{"name":"create_folder","description":"Create a folder to organise codes. Requires an OpenQR API key."},{"name":"delete_folder","description":"Delete a folder (its codes are un-filed, not deleted). Requires an OpenQR API key."},{"name":"list_themes","description":"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."},{"name":"create_theme","description":"Save a reusable style theme. `style` is a QR style object (fgColor, bgColor, dotType, cornerSquareType, etc.). Requires an OpenQR API key."},{"name":"delete_theme","description":"Delete a saved theme. Codes already styled with it keep their look. Requires an OpenQR API key."},{"name":"get_subdomain","description":"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 "},{"name":"set_subdomain","description":"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 "},{"name":"clear_subdomain","description":"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."}],"toolCount":20,"toolsHash":"0d3d70448e0ddb129a0ccecddaa1e05d6826ac15b5a5a7791993ec28c09d0c45","serverName":"OpenQR","capabilities":["tools","prompts","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-10T09:24:00.417Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":1224,"error":null,"detail":{"tools":[{"name":"generate_qr","description":"Generate a static QR code from any text/URL. Returns a PNG image (or SVG markup). Requires an OpenQR API key."},{"name":"create_dynamic_qr","description":"Create an editable (dynamic) QR code whose destination you can change later without reprinting. Requires an OpenQR API key."},{"name":"create_static_qr","description":"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 c"},{"name":"update_dynamic_qr","description":"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"},{"name":"get_dynamic_qr","description":"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."},{"name":"get_scans","description":"Get scan statistics for a dynamic QR code. Requires an OpenQR API key."},{"name":"create_link_alias","description":"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"},{"name":"list_link_aliases","description":"List the link aliases of one dynamic code. Requires an OpenQR API key."},{"name":"list_dynamic_qr","description":"List your dynamic (editable) QR codes — id, short URL, destination, label and status. Requires an OpenQR API key."},{"name":"delete_dynamic_qr","description":"Permanently delete a dynamic QR code. The short link stops working. Requires an OpenQR API key."},{"name":"bulk_create_dynamic_qr","description":"Create up to 200 dynamic QR codes at once. Requires an OpenQR API key."},{"name":"list_folders","description":"List your folders (id and name). Requires an OpenQR API key."},{"name":"create_folder","description":"Create a folder to organise codes. Requires an OpenQR API key."},{"name":"delete_folder","description":"Delete a folder (its codes are un-filed, not deleted). Requires an OpenQR API key."},{"name":"list_themes","description":"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."},{"name":"create_theme","description":"Save a reusable style theme. `style` is a QR style object (fgColor, bgColor, dotType, cornerSquareType, etc.). Requires an OpenQR API key."},{"name":"delete_theme","description":"Delete a saved theme. Codes already styled with it keep their look. Requires an OpenQR API key."},{"name":"get_subdomain","description":"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 "},{"name":"set_subdomain","description":"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 "},{"name":"clear_subdomain","description":"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."}],"toolCount":20,"toolsHash":"0d3d70448e0ddb129a0ccecddaa1e05d6826ac15b5a5a7791993ec28c09d0c45","serverName":"OpenQR","capabilities":["tools","prompts","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-10T02:29:40.218Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":560,"error":null,"detail":{"tools":[{"name":"generate_qr","description":"Generate a static QR code from any text/URL. Returns a PNG image (or SVG markup). Requires an OpenQR API key."},{"name":"create_dynamic_qr","description":"Create an editable (dynamic) QR code whose destination you can change later without reprinting. Requires an OpenQR API key."},{"name":"create_static_qr","description":"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 c"},{"name":"update_dynamic_qr","description":"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"},{"name":"get_dynamic_qr","description":"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."},{"name":"get_scans","description":"Get scan statistics for a dynamic QR code. Requires an OpenQR API key."},{"name":"create_link_alias","description":"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"},{"name":"list_link_aliases","description":"List the link aliases of one dynamic code. Requires an OpenQR API key."},{"name":"list_dynamic_qr","description":"List your dynamic (editable) QR codes — id, short URL, destination, label and status. Requires an OpenQR API key."},{"name":"delete_dynamic_qr","description":"Permanently delete a dynamic QR code. The short link stops working. Requires an OpenQR API key."},{"name":"bulk_create_dynamic_qr","description":"Create up to 200 dynamic QR codes at once. Requires an OpenQR API key."},{"name":"list_folders","description":"List your folders (id and name). Requires an OpenQR API key."},{"name":"create_folder","description":"Create a folder to organise codes. Requires an OpenQR API key."},{"name":"delete_folder","description":"Delete a folder (its codes are un-filed, not deleted). Requires an OpenQR API key."},{"name":"list_themes","description":"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."},{"name":"create_theme","description":"Save a reusable style theme. `style` is a QR style object (fgColor, bgColor, dotType, cornerSquareType, etc.). Requires an OpenQR API key."},{"name":"delete_theme","description":"Delete a saved theme. Codes already styled with it keep their look. Requires an OpenQR API key."},{"name":"get_subdomain","description":"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 "},{"name":"set_subdomain","description":"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 "},{"name":"clear_subdomain","description":"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."}],"toolCount":20,"toolsHash":"0d3d70448e0ddb129a0ccecddaa1e05d6826ac15b5a5a7791993ec28c09d0c45","serverName":"OpenQR","capabilities":["tools","prompts","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T19:27:19.534Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":853,"error":null,"detail":{"tools":[{"name":"generate_qr","description":"Generate a static QR code from any text/URL. Returns a PNG image (or SVG markup). Requires an OpenQR API key."},{"name":"create_dynamic_qr","description":"Create an editable (dynamic) QR code whose destination you can change later without reprinting. Requires an OpenQR API key."},{"name":"create_static_qr","description":"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 c"},{"name":"update_dynamic_qr","description":"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"},{"name":"get_dynamic_qr","description":"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."},{"name":"get_scans","description":"Get scan statistics for a dynamic QR code. Requires an OpenQR API key."},{"name":"create_link_alias","description":"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"},{"name":"list_link_aliases","description":"List the link aliases of one dynamic code. Requires an OpenQR API key."},{"name":"list_dynamic_qr","description":"List your dynamic (editable) QR codes — id, short URL, destination, label and status. Requires an OpenQR API key."},{"name":"delete_dynamic_qr","description":"Permanently delete a dynamic QR code. The short link stops working. Requires an OpenQR API key."},{"name":"bulk_create_dynamic_qr","description":"Create up to 200 dynamic QR codes at once. Requires an OpenQR API key."},{"name":"list_folders","description":"List your folders (id and name). Requires an OpenQR API key."},{"name":"create_folder","description":"Create a folder to organise codes. Requires an OpenQR API key."},{"name":"delete_folder","description":"Delete a folder (its codes are un-filed, not deleted). Requires an OpenQR API key."},{"name":"list_themes","description":"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."},{"name":"create_theme","description":"Save a reusable style theme. `style` is a QR style object (fgColor, bgColor, dotType, cornerSquareType, etc.). Requires an OpenQR API key."},{"name":"delete_theme","description":"Delete a saved theme. Codes already styled with it keep their look. Requires an OpenQR API key."},{"name":"get_subdomain","description":"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 "},{"name":"set_subdomain","description":"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 "},{"name":"clear_subdomain","description":"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."}],"toolCount":20,"toolsHash":"0d3d70448e0ddb129a0ccecddaa1e05d6826ac15b5a5a7791993ec28c09d0c45","serverName":"OpenQR","capabilities":["tools","prompts","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T12:30:00.471Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":856,"error":null,"detail":{"tools":[{"name":"generate_qr","description":"Generate a static QR code from any text/URL. Returns a PNG image (or SVG markup). Requires an OpenQR API key."},{"name":"create_dynamic_qr","description":"Create an editable (dynamic) QR code whose destination you can change later without reprinting. Requires an OpenQR API key."},{"name":"create_static_qr","description":"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 c"},{"name":"update_dynamic_qr","description":"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"},{"name":"get_dynamic_qr","description":"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."},{"name":"get_scans","description":"Get scan statistics for a dynamic QR code. Requires an OpenQR API key."},{"name":"create_link_alias","description":"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"},{"name":"list_link_aliases","description":"List the link aliases of one dynamic code. Requires an OpenQR API key."},{"name":"list_dynamic_qr","description":"List your dynamic (editable) QR codes — id, short URL, destination, label and status. Requires an OpenQR API key."},{"name":"delete_dynamic_qr","description":"Permanently delete a dynamic QR code. The short link stops working. Requires an OpenQR API key."},{"name":"bulk_create_dynamic_qr","description":"Create up to 200 dynamic QR codes at once. Requires an OpenQR API key."},{"name":"list_folders","description":"List your folders (id and name). Requires an OpenQR API key."},{"name":"create_folder","description":"Create a folder to organise codes. Requires an OpenQR API key."},{"name":"delete_folder","description":"Delete a folder (its codes are un-filed, not deleted). Requires an OpenQR API key."},{"name":"list_themes","description":"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."},{"name":"create_theme","description":"Save a reusable style theme. `style` is a QR style object (fgColor, bgColor, dotType, cornerSquareType, etc.). Requires an OpenQR API key."},{"name":"delete_theme","description":"Delete a saved theme. Codes already styled with it keep their look. Requires an OpenQR API key."},{"name":"get_subdomain","description":"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 "},{"name":"set_subdomain","description":"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 "},{"name":"clear_subdomain","description":"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."}],"toolCount":20,"toolsHash":"0d3d70448e0ddb129a0ccecddaa1e05d6826ac15b5a5a7791993ec28c09d0c45","serverName":"OpenQR","capabilities":["tools","prompts","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T06:22:59.997Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":1083,"error":null,"detail":{"tools":[{"name":"generate_qr","description":"Generate a static QR code from any text/URL. Returns a PNG image (or SVG markup). Requires an OpenQR API key."},{"name":"create_dynamic_qr","description":"Create an editable (dynamic) QR code whose destination you can change later without reprinting. Requires an OpenQR API key."},{"name":"create_static_qr","description":"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 c"},{"name":"update_dynamic_qr","description":"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"},{"name":"get_dynamic_qr","description":"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."},{"name":"get_scans","description":"Get scan statistics for a dynamic QR code. Requires an OpenQR API key."},{"name":"create_link_alias","description":"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"},{"name":"list_link_aliases","description":"List the link aliases of one dynamic code. Requires an OpenQR API key."},{"name":"list_dynamic_qr","description":"List your dynamic (editable) QR codes — id, short URL, destination, label and status. Requires an OpenQR API key."},{"name":"delete_dynamic_qr","description":"Permanently delete a dynamic QR code. The short link stops working. Requires an OpenQR API key."},{"name":"bulk_create_dynamic_qr","description":"Create up to 200 dynamic QR codes at once. Requires an OpenQR API key."},{"name":"list_folders","description":"List your folders (id and name). Requires an OpenQR API key."},{"name":"create_folder","description":"Create a folder to organise codes. Requires an OpenQR API key."},{"name":"delete_folder","description":"Delete a folder (its codes are un-filed, not deleted). Requires an OpenQR API key."},{"name":"list_themes","description":"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."},{"name":"create_theme","description":"Save a reusable style theme. `style` is a QR style object (fgColor, bgColor, dotType, cornerSquareType, etc.). Requires an OpenQR API key."},{"name":"delete_theme","description":"Delete a saved theme. Codes already styled with it keep their look. Requires an OpenQR API key."},{"name":"get_subdomain","description":"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 "},{"name":"set_subdomain","description":"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 "},{"name":"clear_subdomain","description":"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."}],"toolCount":20,"toolsHash":"0d3d70448e0ddb129a0ccecddaa1e05d6826ac15b5a5a7791993ec28c09d0c45","serverName":"OpenQR","capabilities":["tools","prompts","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T00:25:03.946Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":992,"error":null,"detail":{"tools":[{"name":"generate_qr","description":"Generate a static QR code from any text/URL. Returns a PNG image (or SVG markup). Requires an OpenQR API key."},{"name":"create_dynamic_qr","description":"Create an editable (dynamic) QR code whose destination you can change later without reprinting. Requires an OpenQR API key."},{"name":"create_static_qr","description":"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 c"},{"name":"update_dynamic_qr","description":"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"},{"name":"get_dynamic_qr","description":"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."},{"name":"get_scans","description":"Get scan statistics for a dynamic QR code. Requires an OpenQR API key."},{"name":"create_link_alias","description":"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"},{"name":"list_link_aliases","description":"List the link aliases of one dynamic code. Requires an OpenQR API key."},{"name":"list_dynamic_qr","description":"List your dynamic (editable) QR codes — id, short URL, destination, label and status. Requires an OpenQR API key."},{"name":"delete_dynamic_qr","description":"Permanently delete a dynamic QR code. The short link stops working. Requires an OpenQR API key."},{"name":"bulk_create_dynamic_qr","description":"Create up to 200 dynamic QR codes at once. Requires an OpenQR API key."},{"name":"list_folders","description":"List your folders (id and name). Requires an OpenQR API key."},{"name":"create_folder","description":"Create a folder to organise codes. Requires an OpenQR API key."},{"name":"delete_folder","description":"Delete a folder (its codes are un-filed, not deleted). Requires an OpenQR API key."},{"name":"list_themes","description":"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."},{"name":"create_theme","description":"Save a reusable style theme. `style` is a QR style object (fgColor, bgColor, dotType, cornerSquareType, etc.). Requires an OpenQR API key."},{"name":"delete_theme","description":"Delete a saved theme. Codes already styled with it keep their look. Requires an OpenQR API key."},{"name":"get_subdomain","description":"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 "},{"name":"set_subdomain","description":"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 "},{"name":"clear_subdomain","description":"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."}],"toolCount":20,"toolsHash":"0d3d70448e0ddb129a0ccecddaa1e05d6826ac15b5a5a7791993ec28c09d0c45","serverName":"OpenQR","capabilities":["tools","prompts","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T17:26:30.404Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":1274,"error":null,"detail":{"tools":[{"name":"generate_qr","description":"Generate a static QR code from any text/URL. Returns a PNG image (or SVG markup). Requires an OpenQR API key."},{"name":"create_dynamic_qr","description":"Create an editable (dynamic) QR code whose destination you can change later without reprinting. Requires an OpenQR API key."},{"name":"create_static_qr","description":"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 c"},{"name":"update_dynamic_qr","description":"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"},{"name":"get_dynamic_qr","description":"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."},{"name":"get_scans","description":"Get scan statistics for a dynamic QR code. Requires an OpenQR API key."},{"name":"create_link_alias","description":"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"},{"name":"list_link_aliases","description":"List the link aliases of one dynamic code. Requires an OpenQR API key."},{"name":"list_dynamic_qr","description":"List your dynamic (editable) QR codes — id, short URL, destination, label and status. Requires an OpenQR API key."},{"name":"delete_dynamic_qr","description":"Permanently delete a dynamic QR code. The short link stops working. Requires an OpenQR API key."},{"name":"bulk_create_dynamic_qr","description":"Create up to 200 dynamic QR codes at once. Requires an OpenQR API key."},{"name":"list_folders","description":"List your folders (id and name). Requires an OpenQR API key."},{"name":"create_folder","description":"Create a folder to organise codes. Requires an OpenQR API key."},{"name":"delete_folder","description":"Delete a folder (its codes are un-filed, not deleted). Requires an OpenQR API key."},{"name":"list_themes","description":"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."},{"name":"create_theme","description":"Save a reusable style theme. `style` is a QR style object (fgColor, bgColor, dotType, cornerSquareType, etc.). Requires an OpenQR API key."},{"name":"delete_theme","description":"Delete a saved theme. Codes already styled with it keep their look. Requires an OpenQR API key."},{"name":"get_subdomain","description":"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 "},{"name":"set_subdomain","description":"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 "},{"name":"clear_subdomain","description":"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."}],"toolCount":20,"toolsHash":"0d3d70448e0ddb129a0ccecddaa1e05d6826ac15b5a5a7791993ec28c09d0c45","serverName":"OpenQR","capabilities":["tools","prompts","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T10:23:14.267Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":927,"error":null,"detail":{"tools":[{"name":"generate_qr","description":"Generate a static QR code from any text/URL. Returns a PNG image (or SVG markup). Requires an OpenQR API key."},{"name":"create_dynamic_qr","description":"Create an editable (dynamic) QR code whose destination you can change later without reprinting. Requires an OpenQR API key."},{"name":"create_static_qr","description":"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 c"},{"name":"update_dynamic_qr","description":"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"},{"name":"get_dynamic_qr","description":"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."},{"name":"get_scans","description":"Get scan statistics for a dynamic QR code. Requires an OpenQR API key."},{"name":"create_link_alias","description":"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"},{"name":"list_link_aliases","description":"List the link aliases of one dynamic code. Requires an OpenQR API key."},{"name":"list_dynamic_qr","description":"List your dynamic (editable) QR codes — id, short URL, destination, label and status. Requires an OpenQR API key."},{"name":"delete_dynamic_qr","description":"Permanently delete a dynamic QR code. The short link stops working. Requires an OpenQR API key."},{"name":"bulk_create_dynamic_qr","description":"Create up to 200 dynamic QR codes at once. Requires an OpenQR API key."},{"name":"list_folders","description":"List your folders (id and name). Requires an OpenQR API key."},{"name":"create_folder","description":"Create a folder to organise codes. Requires an OpenQR API key."},{"name":"delete_folder","description":"Delete a folder (its codes are un-filed, not deleted). Requires an OpenQR API key."},{"name":"list_themes","description":"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."},{"name":"create_theme","description":"Save a reusable style theme. `style` is a QR style object (fgColor, bgColor, dotType, cornerSquareType, etc.). Requires an OpenQR API key."},{"name":"delete_theme","description":"Delete a saved theme. Codes already styled with it keep their look. Requires an OpenQR API key."},{"name":"get_subdomain","description":"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 "},{"name":"set_subdomain","description":"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 "},{"name":"clear_subdomain","description":"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."}],"toolCount":20,"toolsHash":"0d3d70448e0ddb129a0ccecddaa1e05d6826ac15b5a5a7791993ec28c09d0c45","serverName":"OpenQR","capabilities":["tools","prompts","resources"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"generate_qr","description":"Generate a static QR code from any text/URL. Returns a PNG image (or SVG markup). Requires an OpenQR API key."},{"name":"create_dynamic_qr","description":"Create an editable (dynamic) QR code whose destination you can change later without reprinting. Requires an OpenQR API key."},{"name":"create_static_qr","description":"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 c"},{"name":"update_dynamic_qr","description":"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"},{"name":"get_dynamic_qr","description":"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."},{"name":"get_scans","description":"Get scan statistics for a dynamic QR code. Requires an OpenQR API key."},{"name":"create_link_alias","description":"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"},{"name":"list_link_aliases","description":"List the link aliases of one dynamic code. Requires an OpenQR API key."},{"name":"list_dynamic_qr","description":"List your dynamic (editable) QR codes — id, short URL, destination, label and status. Requires an OpenQR API key."},{"name":"delete_dynamic_qr","description":"Permanently delete a dynamic QR code. The short link stops working. Requires an OpenQR API key."},{"name":"bulk_create_dynamic_qr","description":"Create up to 200 dynamic QR codes at once. Requires an OpenQR API key."},{"name":"list_folders","description":"List your folders (id and name). Requires an OpenQR API key."},{"name":"create_folder","description":"Create a folder to organise codes. Requires an OpenQR API key."},{"name":"delete_folder","description":"Delete a folder (its codes are un-filed, not deleted). Requires an OpenQR API key."},{"name":"list_themes","description":"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."},{"name":"create_theme","description":"Save a reusable style theme. `style` is a QR style object (fgColor, bgColor, dotType, cornerSquareType, etc.). Requires an OpenQR API key."},{"name":"delete_theme","description":"Delete a saved theme. Codes already styled with it keep their look. Requires an OpenQR API key."},{"name":"get_subdomain","description":"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 "},{"name":"set_subdomain","description":"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 "},{"name":"clear_subdomain","description":"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."}],"package":{"name":"@open-qr/mcp","registry":"npm","observedAt":"2026-10-10T23:25:11.477Z","publishedAt":"2026-09-10T14:54:32.409Z","latestVersion":"1.0.2","weeklyDownloads":18},"toolSurface":{"id":"ts_uz35327ytqw6","endpointId":"ep_5ejqdtcu4r5r","hash":"0d3d70448e0ddb129a0ccecddaa1e05d6826ac15b5a5a7791993ec28c09d0c45","toolCount":20,"serverName":"OpenQR","serverVersion":"1.0.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-09-12T09:28:15.644Z","lastSeenAt":"2026-10-10T23:23:12.358Z","observations":104,"toolNames":["generate_qr","create_dynamic_qr","create_static_qr","update_dynamic_qr","get_dynamic_qr","get_scans","create_link_alias","list_link_aliases","list_dynamic_qr","delete_dynamic_qr","bulk_create_dynamic_qr","list_folders","create_folder","delete_folder","list_themes","create_theme","delete_theme","get_subdomain","set_subdomain","clear_subdomain"],"distinctSurfaces":1},"endpointFacts":[{"id":"ep_5ejqdtcu4r5r","url":"https://openqr.uk/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-10T16:31:10.987Z","auth":{"observedAt":"2026-10-10T16:31:11.280Z","authRequired":false,"scheme":null,"resourceMetadata":null,"authorizationServer":null,"conformance":{"dpop":false,"rfc8414":false,"rfc9728":false,"pkceS256":false,"clientIdMetadataDocument":false,"dynamicClientRegistration":false}},"tls":{"observedAt":"2026-10-10T16:31:11.323Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"openqr.uk","issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validFrom":"2026-08-21T17:21:36.000Z","validTo":"2026-11-19T18:20:05.000Z","daysToExpiry":39,"sanCount":2,"fingerprint256":"E4:B7:37:6D:25:0D:CA:83:3C:03:AF:43:8F:96:40:9A:A5:87:6C:69:E1:70:C9:64:D4:B6:EB:E6:F0:2B:37:47"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"npm","key":"@open-qr/mcp","url":"https://www.npmjs.com/package/@open-qr/mcp","firstSeenAt":"2026-09-18T14:21:44.162Z","fetchedAt":"2026-10-08T08:20:43.366Z","normalizedAt":"2026-10-08T08:20:43.366Z"},{"source":"mcp_registry","key":"uk.openqr/qr","url":"https://registry.modelcontextprotocol.io/v0/servers/uk.openqr%2Fqr","firstSeenAt":"2026-09-07T09:23:19.809Z","fetchedAt":"2026-10-08T21:19:53.391Z","normalizedAt":"2026-10-08T21:19:53.391Z"}]},"firstSeenAt":"2026-09-07T09:23:19.809Z","updatedAt":"2026-10-10T23:25:11.477Z"}