QRCodeKIT
Branded short links, instant page & file hosting, and dynamic QR codes with unified analytics.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"qrcodekit": {
"url": "https://mcp.v2.qrcodekit.com/mcp"
}
}
}Remote endpoints
https://mcp.v2.qrcodekit.com/mcpstreamable-httpWhat it can do
Tool inventory
Tools (14)
🟢list_links(limit, typology)
Return the account's QRCodeKIT links as structured data: title, destination or hosted content, short URL, slug, QR image download URLs, timestamps, and lifetime visits. Lifetime visits combine short-link clicks and QR scans. Use this when the assistant needs to search, filter by link type, compare, inspect, or process existing links programmatically. Use show_links instead when the user asks to see, show, display, preview, or download their links or QR codes.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"default": 20,
"description": "Maximum number of links to return from the active account.",
"maximum": 100,
"minimum": 1,
"title": "Limit",
"type": "integer"
},
"typology": {
"default": "all",
"description": "Link typology internal name to filter by. Use 'all' or omit this field to return all typologies.",
"enum": [
"all",
"website",
"file",
"pdf",
"menu",
"social",
"bcard",
"landing",
"whatsapp",
"app_store",
"deep_link",
"digital_link",
"email",
"payment"
],
"title": "Typology",
"type": "string"
}
},
"title": "list_linksArguments"
}Output Schema
{
"type": "object",
"properties": {
"items": {
"description": "QR codes visible to the active account.",
"items": {
"$ref": "#/$defs/QrSummary"
},
"title": "Items",
"type": "array"
}
},
"$defs": {
"QrSummary": {
"properties": {
"qr_id": {
"description": "Stable QRCodeKIT identifier for the QR.",
"title": "Qr Id",
"type": "string"
},
"title": {
"description": "Human-readable title of the dynamic QR.",
"title": "Title",
"type": "string"
},
"destination_url": {
"description": "Current destination URL for the dynamic QR.",
"title": "Destination Url",
"type": "string"
},
"short_code": {
"description": "Short code segment used by the QR shortlink.",
"title": "Short Code",
"type": "string"
},
"shortlink_url": {
"description": "Complete public shortlink URL encoded by the QR.",
"title": "Shortlink Url",
"type": "string"
},
"qr_image_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Primary public QR image URL, typically the generated SVG asset.",
"title": "Qr Image Url"
},
"qr_image_urls": {
"additionalProperties": {
"type": "string"
},
"description": "Public QR image or download URLs keyed by format, such as svg, png, pdf, or eps.",
"title": "Qr Image Urls",
"type": "object"
},
"visits_total": {
"default": 0,
"description": "Total visits/scans recorded for this QR by QRCodeKIT.",
"minimum": 0,
"title": "Visits Total",
"type": "integer"
},
"created_at": {
"description": "Creation timestamp in UTC.",
"format": "date-time",
"title": "Created At",
"type": "string"
},
"updated_at": {
"description": "Last update timestamp in UTC.",
"format": "date-time",
"title": "Updated At",
"type": "string"
}
},
"required": [
"qr_id",
"title",
"destination_url",
"short_code",
"shortlink_url",
"created_at",
"updated_at"
],
"title": "QrSummary",
"type": "object"
}
},
"title": "ListQrsResult"
}🟢show_links(qr_id, limit)
Display the account's QRCodeKIT links in an interactive gallery: short URL, QR image, combined click-and-scan totals, and download actions. Available QR assets may include SVG, PNG, PDF, and EPS. Use this when the user asks to see, show, preview, display, or download their links or QR codes. When qr_id is provided, show only that link; otherwise show links from the active account.
Input Schema
{
"type": "object",
"properties": {
"qr_id": {
"anyOf": [
{
"minLength": 1,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional QRCodeKIT identifier for showing a single link instead of the gallery list.",
"title": "Qr Id"
},
"limit": {
"default": 20,
"description": "Maximum number of links to render when qr_id is absent.",
"maximum": 100,
"minimum": 1,
"title": "Limit",
"type": "integer"
}
},
"title": "show_linksArguments"
}Output Schema
{
"type": "object",
"properties": {
"items": {
"description": "QR codes visible to the active account.",
"items": {
"$ref": "#/$defs/QrSummary"
},
"title": "Items",
"type": "array"
}
},
"$defs": {
"QrSummary": {
"properties": {
"qr_id": {
"description": "Stable QRCodeKIT identifier for the QR.",
"title": "Qr Id",
"type": "string"
},
"title": {
"description": "Human-readable title of the dynamic QR.",
"title": "Title",
"type": "string"
},
"destination_url": {
"description": "Current destination URL for the dynamic QR.",
"title": "Destination Url",
"type": "string"
},
"short_code": {
"description": "Short code segment used by the QR shortlink.",
"title": "Short Code",
"type": "string"
},
"shortlink_url": {
"description": "Complete public shortlink URL encoded by the QR.",
"title": "Shortlink Url",
"type": "string"
},
"qr_image_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Primary public QR image URL, typically the generated SVG asset.",
"title": "Qr Image Url"
},
"qr_image_urls": {
"additionalProperties": {
"type": "string"
},
"description": "Public QR image or download URLs keyed by format, such as svg, png, pdf, or eps.",
"title": "Qr Image Urls",
"type": "object"
},
"visits_total": {
"default": 0,
"description": "Total visits/scans recorded for this QR by QRCodeKIT.",
"minimum": 0,
"title": "Visits Total",
"type": "integer"
},
"created_at": {
"description": "Creation timestamp in UTC.",
"format": "date-time",
"title": "Created At",
"type": "string"
},
"updated_at": {
"description": "Last update timestamp in UTC.",
"format": "date-time",
"title": "Updated At",
"type": "string"
}
},
"required": [
"qr_id",
"title",
"destination_url",
"short_code",
"shortlink_url",
"created_at",
"updated_at"
],
"title": "QrSummary",
"type": "object"
}
},
"title": "ListQrsResult"
}🟢get_link_stats(qr, start_date, end_date, interval)
Retrieve analytics for the whole QRCodeKIT account or for one link. Reports total, unique, and repeat visits, unique-visitor ratio, activity over time, and — when the account plan supports advanced analytics — breakdowns by country, city, device, operating system, and browser. Account-wide results also include the number of links and the top links ranked by lifetime visits. Use this when the user asks about QR scans, short-link clicks, campaign performance, audience location, devices, trends, comparisons, or top-performing links. Every visit to the short URL is counted, so link clicks and QR scans are combined: one campaign can live in a printed QR, an Instagram bio, and an email and report in one place. Select a link by qr_id, slug, or part of its title via `qr`; omit it for the whole account. Defaults to the last 30 days; the interval can be auto, hourly, daily, weekly, or monthly. The structured result contains the full tables for answering questions about the data.
Input Schema
{
"type": "object",
"properties": {
"qr": {
"anyOf": [
{
"minLength": 1,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional link to deep-dive into: the QRCodeKIT qr_id, the short-link slug, or (part of) the link title. Omit for account-wide stats.",
"title": "Qr"
},
"start_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "First day of the stats window (YYYY-MM-DD). Defaults to 29 days before end_date.",
"title": "Start Date"
},
"end_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Last day of the stats window (YYYY-MM-DD). Defaults to today.",
"title": "End Date"
},
"interval": {
"default": "auto",
"description": "Time-series bucket size: 1h, 1d, 1w, or 1M. Use 'auto' (default) to pick a sensible bucket from the range length.",
"enum": [
"auto",
"1h",
"1d",
"1w",
"1M"
],
"title": "Interval",
"type": "string"
}
},
"title": "get_link_statsArguments"
}Output Schema
{
"type": "object",
"properties": {
"scope": {
"description": "'qr' for a single QR deep-dive, 'account' for all QRs in the account.",
"enum": [
"account",
"qr"
],
"title": "Scope",
"type": "string"
},
"qr": {
"anyOf": [
{
"$ref": "#/$defs/QrStatsTarget"
},
{
"type": "null"
}
],
"default": null,
"description": "The QR the stats belong to when scope is 'qr'."
},
"start_date": {
"description": "First day of the stats window (YYYY-MM-DD).",
"title": "Start Date",
"type": "string"
},
"end_date": {
"description": "Last day of the stats window (YYYY-MM-DD).",
"title": "End Date",
"type": "string"
},
"interval": {
"description": "Time-series bucket size: 1h, 1d, 1w, or 1M.",
"title": "Interval",
"type": "string"
},
"summary": {
"$ref": "#/$defs/QrStatsSummary"
},
"time_series": {
"items": {
"$ref": "#/$defs/QrStatsTimePoint"
},
"title": "Time Series",
"type": "array"
},
"countries": {
"items": {
"$ref": "#/$defs/QrStatsBreakdownItem"
},
"title": "Countries",
"type": "array"
},
"cities": {
"items": {
"$ref": "#/$defs/QrStatsBreakdownItem"
},
"title": "Cities",
"type": "array"
},
"browsers": {
"items": {
"$ref": "#/$defs/QrStatsBreakdownItem"
},
"title": "Browsers",
"type": "array"
},
"devices": {
"items": {
"$ref": "#/$defs/QrStatsBreakdownItem"
},
"title": "Devices",
"type": "array"
},
"operating_systems": {
"items": {
"$ref": "#/$defs/QrStatsBreakdownItem"
},
"title": "Operating Systems",
"type": "array"
},
"top_qrs": {
"description": "Account scope only: QRs ranked by lifetime visit totals.",
"items": {
"$ref": "#/$defs/QrStatsTopQr"
},
"title": "Top Qrs",
"type": "array"
},
"qr_count": {
"anyOf": [
{
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Account scope only: number of QRs covered by the stats.",
"title": "Qr Count"
},
"advanced_stats_available": {
"default": true,
"description": "False when the plan does not include advanced analytics breakdowns.",
"title": "Advanced Stats Available",
"type": "boolean"
},
"notice": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Human-readable note about limits or missing data, if any.",
"title": "Notice"
}
},
"required": [
"scope",
"start_date",
"end_date",
"interval"
],
"$defs": {
"QrStatsBreakdownItem": {
"properties": {
"name": {
"description": "Display name of the bucket, such as a country or browser.",
"title": "Name",
"type": "string"
},
"code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional machine code for the bucket, such as an ISO country code.",
"title": "Code"
},
"total": {
"default": 0,
"description": "Total visits attributed to this bucket.",
"minimum": 0,
"title": "Total",
"type": "integer"
},
"unique": {
"default": 0,
"description": "Unique visitors attributed to this bucket.",
"minimum": 0,
"title": "Unique",
"type": "integer"
}
},
"required": [
"name"
],
"title": "QrStatsBreakdownItem",
"type": "object"
},
"QrStatsSummary": {
"properties": {
"total": {
"default": 0,
"description": "Total visits/scans recorded in the window.",
"minimum": 0,
"title": "Total",
"type": "integer"
},
"unique": {
"default": 0,
"description": "Unique visitors/scanners in the window.",
"minimum": 0,
"title": "Unique",
"type": "integer"
},
"repeat": {
"default": 0,
"description": "Repeat visits: total minus unique.",
"minimum": 0,
"title": "Repeat",
"type": "integer"
},
"unique_ratio": {
"default": 0,
"description": "Unique visitors as a rounded percentage of total visits.",
"maximum": 100,
"minimum": 0,
"title": "Unique Ratio",
"type": "integer"
}
},
"title": "QrStatsSummary",
"type": "object"
},
"QrStatsTarget": {
"properties": {
"qr_id": {
"description": "Stable QRCodeKIT identifier for the QR.",
"title": "Qr Id",
"type": "string"
},
"title": {
"description": "Human-readable title of the QR.",
"title": "Title",
"type": "string"
},
"shortlink_url": {
"description": "Public shortlink URL encoded by the QR.",
"title": "Shortlink Url",
"type": "string"
},
"short_code": {
"description": "Short code segment used by the QR shortlink.",
"title": "Short Code",
"type": "string"
},
"visits_total": {
"default": 0,
"description": "Lifetime visit/scan total for the QR.",
"minimum": 0,
"title": "Visits Total",
"type": "integer"
}
},
"required": [
"qr_id",
"title",
"shortlink_url",
"short_code"
],
"title": "QrStatsTarget",
"type": "object"
},
"QrStatsTimePoint": {
"properties": {
"time": {
"description": "Bucket start timestamp reported by the analytics backend.",
"title": "Time",
"type": "string"
},
"total": {
"default": 0,
"description": "Total visits in this bucket.",
"minimum": 0,
"title": "Total",
"type": "integer"
},
"unique": {
"default": 0,
"description": "Unique visitors in this bucket.",
"minimum": 0,
"title": "Unique",
"type": "integer"
}
},
"required": [
"time"
],
"title": "QrStatsTimePoint",
"type": "object"
},
"QrStatsTopQr": {
"properties": {
"qr_id": {
"description": "Stable QRCodeKIT identifier for the QR.",
"title": "Qr Id",
"type": "string"
},
"title": {
"description": "Human-readable title of the QR.",
"title": "Title",
"type": "string"
},
"shortlink_url": {
"description": "Public shortlink URL encoded by the QR.",
"title": "Shortlink Url",
"type": "string"
},
"visits_total": {
"default": 0,
"description": "Lifetime visit/scan total for the QR.",
"minimum": 0,
"title": "Visits Total",
"type": "integer"
}
},
"required": [
"qr_id",
"title",
"shortlink_url"
],
"title": "QrStatsTopQr",
"type": "object"
}
},
"title": "QrStatsResult"
}🟡save_short_link(title, destination_url, qr_id, short_code)
Create a branded short link and dynamic QR code for an existing website URL, with an optional custom slug (e.g. qrkit.co/summer-sale). Use this when the user already has a destination URL and wants to shorten or brand it, track visits, or get a QR code for it: every link includes a scannable QR code that opens the same destination, and clicks and scans are tracked together in one analytics dashboard. When `qr_id` is provided, change the destination while preserving the existing short URL and printed QR code. Use set_link_slug instead when the user wants to rename the slug of an existing link.
Input Schema
{
"type": "object",
"properties": {
"title": {
"description": "Display title for the link.",
"maxLength": 120,
"minLength": 1,
"title": "Title",
"type": "string"
},
"destination_url": {
"description": "Destination URL the short link and QR code redirect to.",
"format": "uri",
"minLength": 1,
"title": "Destination Url",
"type": "string"
},
"qr_id": {
"anyOf": [
{
"minLength": 1,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional QRCodeKIT identifier for updating an existing link instead of creating one.",
"title": "Qr Id"
},
"short_code": {
"anyOf": [
{
"maxLength": 128,
"minLength": 1,
"pattern": "^[A-Za-z0-9._-]+$",
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional custom slug for the new short link, such as 'summer-sale' — the branded part of the short URL (qrkit.co/summer-sale). Letters, digits, dots, hyphens, and underscores only; must be unique within the domain. Only valid when creating; use set_link_slug to rename an existing link.",
"title": "Short Code"
}
},
"required": [
"title",
"destination_url"
],
"title": "save_short_linkArguments"
}Output Schema
{
"type": "object",
"properties": {
"items": {
"description": "QR codes visible to the active account.",
"items": {
"$ref": "#/$defs/QrSummary"
},
"title": "Items",
"type": "array"
}
},
"$defs": {
"QrSummary": {
"properties": {
"qr_id": {
"description": "Stable QRCodeKIT identifier for the QR.",
"title": "Qr Id",
"type": "string"
},
"title": {
"description": "Human-readable title of the dynamic QR.",
"title": "Title",
"type": "string"
},
"destination_url": {
"description": "Current destination URL for the dynamic QR.",
"title": "Destination Url",
"type": "string"
},
"short_code": {
"description": "Short code segment used by the QR shortlink.",
"title": "Short Code",
"type": "string"
},
"shortlink_url": {
"description": "Complete public shortlink URL encoded by the QR.",
"title": "Shortlink Url",
"type": "string"
},
"qr_image_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Primary public QR image URL, typically the generated SVG asset.",
"title": "Qr Image Url"
},
"qr_image_urls": {
"additionalProperties": {
"type": "string"
},
"description": "Public QR image or download URLs keyed by format, such as svg, png, pdf, or eps.",
"title": "Qr Image Urls",
"type": "object"
},
"visits_total": {
"default": 0,
"description": "Total visits/scans recorded for this QR by QRCodeKIT.",
"minimum": 0,
"title": "Visits Total",
"type": "integer"
},
"created_at": {
"description": "Creation timestamp in UTC.",
"format": "date-time",
"title": "Created At",
"type": "string"
},
"updated_at": {
"description": "Last update timestamp in UTC.",
"format": "date-time",
"title": "Updated At",
"type": "string"
}
},
"required": [
"qr_id",
"title",
"destination_url",
"short_code",
"shortlink_url",
"created_at",
"updated_at"
],
"title": "QrSummary",
"type": "object"
}
},
"title": "ListQrsResult"
}🟡save_html_file_qr(title, html, qr_id)
Publish a single-page static HTML site live on the web and get a permanent public URL and shareable link, plus a downloadable dynamic QR code that opens it. Use this when the user asks to create, publish, deploy, host, share, or put online a landing page, one-pager, business page, digital menu, event page, portfolio, product page, campaign page, or microsite — especially when they do not have a website or hosting provider. No separate hosting account, build step, or deployment token is required. Accepts one complete HTML document up to 6 MB: a single file, not a multi-page site. When `qr_id` is provided, update the hosted page in place while preserving its public URL and printed QR code.
Input Schema
{
"type": "object",
"properties": {
"title": {
"description": "Human-readable title for the hosted page.",
"maxLength": 120,
"minLength": 1,
"title": "Title",
"type": "string"
},
"html": {
"description": "Complete HTML document for a static page, such as an AI-generated landing page or microsite, to publish at a public QRCodeKIT-hosted URL and share through the returned shortlink. Maximum size is 6 MB when encoded as UTF-8.",
"maxLength": 6000000,
"minLength": 1,
"title": "Html",
"type": "string"
},
"qr_id": {
"anyOf": [
{
"minLength": 1,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional QRCodeKIT identifier for updating an existing hosted HTML page in place while preserving the same public URL and QR code.",
"title": "Qr Id"
}
},
"required": [
"title",
"html"
],
"title": "save_html_file_qrArguments"
}Output Schema
{
"type": "object",
"properties": {
"items": {
"description": "QR codes visible to the active account.",
"items": {
"$ref": "#/$defs/QrSummary"
},
"title": "Items",
"type": "array"
}
},
"$defs": {
"QrSummary": {
"properties": {
"qr_id": {
"description": "Stable QRCodeKIT identifier for the QR.",
"title": "Qr Id",
"type": "string"
},
"title": {
"description": "Human-readable title of the dynamic QR.",
"title": "Title",
"type": "string"
},
"destination_url": {
"description": "Current destination URL for the dynamic QR.",
"title": "Destination Url",
"type": "string"
},
"short_code": {
"description": "Short code segment used by the QR shortlink.",
"title": "Short Code",
"type": "string"
},
"shortlink_url": {
"description": "Complete public shortlink URL encoded by the QR.",
"title": "Shortlink Url",
"type": "string"
},
"qr_image_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Primary public QR image URL, typically the generated SVG asset.",
"title": "Qr Image Url"
},
"qr_image_urls": {
"additionalProperties": {
"type": "string"
},
"description": "Public QR image or download URLs keyed by format, such as svg, png, pdf, or eps.",
"title": "Qr Image Urls",
"type": "object"
},
"visits_total": {
"default": 0,
"description": "Total visits/scans recorded for this QR by QRCodeKIT.",
"minimum": 0,
"title": "Visits Total",
"type": "integer"
},
"created_at": {
"description": "Creation timestamp in UTC.",
"format": "date-time",
"title": "Created At",
"type": "string"
},
"updated_at": {
"description": "Last update timestamp in UTC.",
"format": "date-time",
"title": "Updated At",
"type": "string"
}
},
"required": [
"qr_id",
"title",
"destination_url",
"short_code",
"shortlink_url",
"created_at",
"updated_at"
],
"title": "QrSummary",
"type": "object"
}
},
"title": "ListQrsResult"
}🟡host_file(title, file, qr_id)
Upload and host a local PDF, image, document, spreadsheet, or other file, and get a permanent public short link plus a downloadable dynamic QR code that opens or downloads it. Use this when the user wants to publish or share an attached PDF or file — a PDF menu, brochure, catalog, CV, ticket, presentation, or any document — without a separate file-hosting account. QRCodeKIT copies the attachment to its own asset storage and validates PDFs as real PDF documents. When `qr_id` is provided, replace the hosted file while preserving the existing public URL and printed QR code.
Input Schema
{
"type": "object",
"properties": {
"title": {
"description": "Display title for the link.",
"maxLength": 120,
"minLength": 1,
"title": "Title",
"type": "string"
},
"file": {
"$ref": "#/$defs/OpenAIFileParam",
"description": "Attached file to host — PDF or any other type — stored as a QRCodeKIT asset before creating the link."
},
"qr_id": {
"anyOf": [
{
"minLength": 1,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional QRCodeKIT identifier for updating an existing link instead of creating one.",
"title": "Qr Id"
}
},
"required": [
"title",
"file"
],
"$defs": {
"OpenAIFileParam": {
"additionalProperties": false,
"description": "The file-object shape passed by OpenAI Apps file parameters.",
"properties": {
"download_url": {
"description": "Temporary HTTPS URL from which the MCP server can download the attached file.",
"format": "uri",
"minLength": 1,
"title": "Download Url",
"type": "string"
},
"file_id": {
"description": "Host-specific stable identifier for the attached file.",
"minLength": 1,
"title": "File Id",
"type": "string"
},
"mime_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional MIME type reported by the host for the attached file.",
"title": "Mime Type"
},
"file_name": {
"anyOf": [
{
"maxLength": 255,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional original filename reported by the host. Defaults to 'file'.",
"title": "File Name"
}
},
"required": [
"download_url",
"file_id"
],
"title": "OpenAIFileParam",
"type": "object"
}
},
"title": "host_fileArguments"
}Output Schema
{
"type": "object",
"properties": {
"items": {
"description": "QR codes visible to the active account.",
"items": {
"$ref": "#/$defs/QrSummary"
},
"title": "Items",
"type": "array"
}
},
"$defs": {
"QrSummary": {
"properties": {
"qr_id": {
"description": "Stable QRCodeKIT identifier for the QR.",
"title": "Qr Id",
"type": "string"
},
"title": {
"description": "Human-readable title of the dynamic QR.",
"title": "Title",
"type": "string"
},
"destination_url": {
"description": "Current destination URL for the dynamic QR.",
"title": "Destination Url",
"type": "string"
},
"short_code": {
"description": "Short code segment used by the QR shortlink.",
"title": "Short Code",
"type": "string"
},
"shortlink_url": {
"description": "Complete public shortlink URL encoded by the QR.",
"title": "Shortlink Url",
"type": "string"
},
"qr_image_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Primary public QR image URL, typically the generated SVG asset.",
"title": "Qr Image Url"
},
"qr_image_urls": {
"additionalProperties": {
"type": "string"
},
"description": "Public QR image or download URLs keyed by format, such as svg, png, pdf, or eps.",
"title": "Qr Image Urls",
"type": "object"
},
"visits_total": {
"default": 0,
"description": "Total visits/scans recorded for this QR by QRCodeKIT.",
"minimum": 0,
"title": "Visits Total",
"type": "integer"
},
"created_at": {
"description": "Creation timestamp in UTC.",
"format": "date-time",
"title": "Created At",
"type": "string"
},
"updated_at": {
"description": "Last update timestamp in UTC.",
"format": "date-time",
"title": "Updated At",
"type": "string"
}
},
"required": [
"qr_id",
"title",
"destination_url",
"short_code",
"shortlink_url",
"created_at",
"updated_at"
],
"title": "QrSummary",
"type": "object"
}
},
"title": "ListQrsResult"
}🟡save_file_url_qr(title, file_url, original_filename, typology, asset_iri, ...)
Create or update a permanent short link and dynamic QR code for a file or PDF that is already hosted at a public URL. Use this as a fallback when the host cannot pass an attached file; prefer host_file for local or host-native attachments. When `qr_id` is provided, update the file destination while preserving the existing short link and QR code. Also used as the finalizer step by the in-chat upload form.
Input Schema
{
"type": "object",
"properties": {
"title": {
"description": "Display title for the QR.",
"maxLength": 120,
"minLength": 1,
"title": "Title",
"type": "string"
},
"file_url": {
"description": "Already-hosted public file URL, preferably a QRCodeKIT asset URL.",
"format": "uri",
"minLength": 1,
"title": "File Url",
"type": "string"
},
"original_filename": {
"anyOf": [
{
"maxLength": 255,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Original filename to show for the download. Defaults to 'file'.",
"title": "Original Filename"
},
"typology": {
"description": "Use 'file' for an arbitrary file or 'pdf' for a PDF.",
"enum": [
"file",
"pdf"
],
"title": "Typology",
"type": "string"
},
"asset_iri": {
"anyOf": [
{
"minLength": 1,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional QRCodeKIT asset IRI returned by an earlier upload.",
"title": "Asset Iri"
},
"qr_id": {
"anyOf": [
{
"minLength": 1,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional QRCodeKIT identifier for updating an existing QR instead of creating one.",
"title": "Qr Id"
}
},
"required": [
"title",
"file_url",
"typology"
],
"title": "save_file_url_qrArguments"
}Output Schema
{
"type": "object",
"properties": {
"items": {
"description": "QR codes visible to the active account.",
"items": {
"$ref": "#/$defs/QrSummary"
},
"title": "Items",
"type": "array"
}
},
"$defs": {
"QrSummary": {
"properties": {
"qr_id": {
"description": "Stable QRCodeKIT identifier for the QR.",
"title": "Qr Id",
"type": "string"
},
"title": {
"description": "Human-readable title of the dynamic QR.",
"title": "Title",
"type": "string"
},
"destination_url": {
"description": "Current destination URL for the dynamic QR.",
"title": "Destination Url",
"type": "string"
},
"short_code": {
"description": "Short code segment used by the QR shortlink.",
"title": "Short Code",
"type": "string"
},
"shortlink_url": {
"description": "Complete public shortlink URL encoded by the QR.",
"title": "Shortlink Url",
"type": "string"
},
"qr_image_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Primary public QR image URL, typically the generated SVG asset.",
"title": "Qr Image Url"
},
"qr_image_urls": {
"additionalProperties": {
"type": "string"
},
"description": "Public QR image or download URLs keyed by format, such as svg, png, pdf, or eps.",
"title": "Qr Image Urls",
"type": "object"
},
"visits_total": {
"default": 0,
"description": "Total visits/scans recorded for this QR by QRCodeKIT.",
"minimum": 0,
"title": "Visits Total",
"type": "integer"
},
"created_at": {
"description": "Creation timestamp in UTC.",
"format": "date-time",
"title": "Created At",
"type": "string"
},
"updated_at": {
"description": "Last update timestamp in UTC.",
"format": "date-time",
"title": "Updated At",
"type": "string"
}
},
"required": [
"qr_id",
"title",
"destination_url",
"short_code",
"shortlink_url",
"created_at",
"updated_at"
],
"title": "QrSummary",
"type": "object"
}
},
"title": "ListQrsResult"
}🟢render_file_upload_qr_form(title, typology, qr_id)
Open an interactive form for the user to upload a file or PDF from their device and get a permanent short link plus a downloadable dynamic QR code. Use this on Claude and other MCP hosts that cannot pass an attached file directly, whenever the user wants to share or host a PDF, menu, brochure, CV, ticket, or other file by link or QR. The form uploads the file to QRCodeKIT and saves the link; when `qr_id` is provided, it replaces the file of an existing link while preserving its short URL and QR code.
Input Schema
{
"type": "object",
"properties": {
"title": {
"anyOf": [
{
"maxLength": 120,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "QR title used when the upload is saved; the form has no title input. Always pass a sensible title from the conversation; when updating an existing QR, pass that QR's current title. Defaults to the uploaded filename.",
"title": "Title"
},
"typology": {
"default": "file",
"description": "Initial file typology hint for the form heading. The final typology is inferred from the uploaded file's extension, so this is only a default.",
"enum": [
"file",
"pdf"
],
"title": "Typology",
"type": "string"
},
"qr_id": {
"anyOf": [
{
"minLength": 1,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional QRCodeKIT identifier when updating an existing QR instead of creating one.",
"title": "Qr Id"
}
},
"title": "render_file_upload_qr_formArguments"
}Output Schema
{
"type": "object",
"properties": {
"title": {
"anyOf": [
{
"maxLength": 120,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "QR title used when the upload is saved. Falls back to the uploaded filename.",
"title": "Title"
},
"typology": {
"default": "file",
"description": "Initial file typology for the form.",
"enum": [
"file",
"pdf"
],
"title": "Typology",
"type": "string"
},
"qr_id": {
"anyOf": [
{
"minLength": 1,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Stable QRCodeKIT identifier when the widget updates an existing QR.",
"title": "Qr Id"
},
"max_bytes": {
"default": 50000000,
"description": "Maximum accepted upload size in bytes, enforced client-side for UX.",
"minimum": 1,
"title": "Max Bytes",
"type": "integer"
}
},
"additionalProperties": false,
"description": "Seed data the upload widget reads from the tool output to render the form.",
"title": "FileUploadFormConfig"
}🟡create_file_upload_session(filename, size_bytes, typology, mime_type)
Widget-only helper: mint a one-time upload session so the file upload form can send the selected file to QRCodeKIT without exposing credentials. Not intended for direct use; prefer 'Upload a File → Get a Link & QR'.
Input Schema
{
"type": "object",
"properties": {
"filename": {
"description": "Original filename of the selected file.",
"maxLength": 255,
"minLength": 1,
"title": "Filename",
"type": "string"
},
"size_bytes": {
"description": "Size of the selected file in bytes. Must be at most 50 MB.",
"maximum": 50000000,
"minimum": 1,
"title": "Size Bytes",
"type": "integer"
},
"typology": {
"description": "Use 'file' for an arbitrary file or 'pdf' for a PDF.",
"enum": [
"file",
"pdf"
],
"title": "Typology",
"type": "string"
},
"mime_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "MIME type reported by the browser for the selected file.",
"title": "Mime Type"
}
},
"required": [
"filename",
"size_bytes",
"typology"
],
"title": "create_file_upload_sessionArguments"
}Output Schema
{
"type": "object",
"properties": {
"session_id": {
"description": "Opaque backend upload-session identifier.",
"minLength": 1,
"title": "Session Id",
"type": "string"
},
"upload_url": {
"description": "Single-use URL the widget posts the file to (multipart form data).",
"minLength": 1,
"title": "Upload Url",
"type": "string"
},
"method": {
"default": "POST",
"description": "HTTP method the widget must use for the upload.",
"title": "Method",
"type": "string"
},
"field_name": {
"default": "file",
"description": "Multipart field name for the uploaded file.",
"title": "Field Name",
"type": "string"
},
"expires_at": {
"description": "ISO-8601 timestamp when the session expires.",
"minLength": 1,
"title": "Expires At",
"type": "string"
},
"max_bytes": {
"description": "Maximum accepted upload size in bytes.",
"minimum": 1,
"title": "Max Bytes",
"type": "integer"
}
},
"required": [
"session_id",
"upload_url",
"expires_at",
"max_bytes"
],
"additionalProperties": false,
"description": "One-time upload session minted by the backend for the Claude upload widget.",
"title": "FileUploadSession"
}🟡save_whatsapp_link(title, phone_number, message, qr_id)
Create a short link and dynamic QR code that opens a WhatsApp conversation with a phone number in international format and an optional pre-filled message. Use this for 'chat with us' or contact buttons, customer support, reservations, sales enquiries, printed signage, business cards, or link-in-bio pages. When `qr_id` is provided, update the phone number or message while preserving the existing short link and QR code.
Input Schema
{
"type": "object",
"properties": {
"title": {
"description": "Display title for the link.",
"maxLength": 120,
"minLength": 1,
"title": "Title",
"type": "string"
},
"phone_number": {
"description": "WhatsApp phone number with international country code, such as +12025550123.",
"minLength": 1,
"title": "Phone Number",
"type": "string"
},
"message": {
"default": "",
"description": "Optional pre-filled WhatsApp message.",
"maxLength": 1000,
"title": "Message",
"type": "string"
},
"qr_id": {
"anyOf": [
{
"minLength": 1,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional QRCodeKIT identifier for updating an existing QR instead of creating one.",
"title": "Qr Id"
}
},
"required": [
"title",
"phone_number"
],
"title": "save_whatsapp_linkArguments"
}Output Schema
{
"type": "object",
"properties": {
"items": {
"description": "QR codes visible to the active account.",
"items": {
"$ref": "#/$defs/QrSummary"
},
"title": "Items",
"type": "array"
}
},
"$defs": {
"QrSummary": {
"properties": {
"qr_id": {
"description": "Stable QRCodeKIT identifier for the QR.",
"title": "Qr Id",
"type": "string"
},
"title": {
"description": "Human-readable title of the dynamic QR.",
"title": "Title",
"type": "string"
},
"destination_url": {
"description": "Current destination URL for the dynamic QR.",
"title": "Destination Url",
"type": "string"
},
"short_code": {
"description": "Short code segment used by the QR shortlink.",
"title": "Short Code",
"type": "string"
},
"shortlink_url": {
"description": "Complete public shortlink URL encoded by the QR.",
"title": "Shortlink Url",
"type": "string"
},
"qr_image_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Primary public QR image URL, typically the generated SVG asset.",
"title": "Qr Image Url"
},
"qr_image_urls": {
"additionalProperties": {
"type": "string"
},
"description": "Public QR image or download URLs keyed by format, such as svg, png, pdf, or eps.",
"title": "Qr Image Urls",
"type": "object"
},
"visits_total": {
"default": 0,
"description": "Total visits/scans recorded for this QR by QRCodeKIT.",
"minimum": 0,
"title": "Visits Total",
"type": "integer"
},
"created_at": {
"description": "Creation timestamp in UTC.",
"format": "date-time",
"title": "Created At",
"type": "string"
},
"updated_at": {
"description": "Last update timestamp in UTC.",
"format": "date-time",
"title": "Updated At",
"type": "string"
}
},
"required": [
"qr_id",
"title",
"destination_url",
"short_code",
"shortlink_url",
"created_at",
"updated_at"
],
"title": "QrSummary",
"type": "object"
}
},
"title": "ListQrsResult"
}🟡save_email_link(title, email_address, subject, body, cc, ...)
Create a short link and dynamic QR code that opens a pre-filled email with a recipient, required subject, optional body, and optional CC recipients. Use this for 'contact us' flows, support or quote requests, RSVPs, feedback, reservations, or other email calls to action. When `qr_id` is provided, update the email details while preserving the existing short link and QR code.
Input Schema
{
"type": "object",
"properties": {
"title": {
"description": "Display title for the link.",
"maxLength": 120,
"minLength": 1,
"title": "Title",
"type": "string"
},
"email_address": {
"description": "Recipient email address for the email QR.",
"minLength": 1,
"title": "Email Address",
"type": "string"
},
"subject": {
"description": "Pre-filled email subject.",
"maxLength": 200,
"minLength": 1,
"title": "Subject",
"type": "string"
},
"body": {
"default": "",
"description": "Optional pre-filled email body.",
"maxLength": 2000,
"title": "Body",
"type": "string"
},
"cc": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional CC email addresses.",
"title": "Cc"
},
"qr_id": {
"anyOf": [
{
"minLength": 1,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional QRCodeKIT identifier for updating an existing QR instead of creating one.",
"title": "Qr Id"
}
},
"required": [
"title",
"email_address",
"subject"
],
"title": "save_email_linkArguments"
}Output Schema
{
"type": "object",
"properties": {
"items": {
"description": "QR codes visible to the active account.",
"items": {
"$ref": "#/$defs/QrSummary"
},
"title": "Items",
"type": "array"
}
},
"$defs": {
"QrSummary": {
"properties": {
"qr_id": {
"description": "Stable QRCodeKIT identifier for the QR.",
"title": "Qr Id",
"type": "string"
},
"title": {
"description": "Human-readable title of the dynamic QR.",
"title": "Title",
"type": "string"
},
"destination_url": {
"description": "Current destination URL for the dynamic QR.",
"title": "Destination Url",
"type": "string"
},
"short_code": {
"description": "Short code segment used by the QR shortlink.",
"title": "Short Code",
"type": "string"
},
"shortlink_url": {
"description": "Complete public shortlink URL encoded by the QR.",
"title": "Shortlink Url",
"type": "string"
},
"qr_image_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Primary public QR image URL, typically the generated SVG asset.",
"title": "Qr Image Url"
},
"qr_image_urls": {
"additionalProperties": {
"type": "string"
},
"description": "Public QR image or download URLs keyed by format, such as svg, png, pdf, or eps.",
"title": "Qr Image Urls",
"type": "object"
},
"visits_total": {
"default": 0,
"description": "Total visits/scans recorded for this QR by QRCodeKIT.",
"minimum": 0,
"title": "Visits Total",
"type": "integer"
},
"created_at": {
"description": "Creation timestamp in UTC.",
"format": "date-time",
"title": "Created At",
"type": "string"
},
"updated_at": {
"description": "Last update timestamp in UTC.",
"format": "date-time",
"title": "Updated At",
"type": "string"
}
},
"required": [
"qr_id",
"title",
"destination_url",
"short_code",
"shortlink_url",
"created_at",
"updated_at"
],
"title": "QrSummary",
"type": "object"
}
},
"title": "ListQrsResult"
}🟡save_app_store_link(app_name, ios_url, android_url, image_url, qr_id)
Create a device-routing smart link and dynamic QR code for a mobile app: the same short link sends iPhone users to the Apple App Store and Android users to Google Play. Use this for 'download our app' campaigns in print, ads, websites, or link-in-bio pages. An app name and at least one store URL (iOS or Android) are required; an icon URL is optional. When `qr_id` is provided, update the app destinations while preserving the existing short link and QR code.
Input Schema
{
"type": "object",
"properties": {
"app_name": {
"description": "App name shown on the App Store QR landing page.",
"maxLength": 120,
"minLength": 1,
"title": "App Name",
"type": "string"
},
"ios_url": {
"anyOf": [
{
"minLength": 1,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional Apple App Store URL, such as https://apps.apple.com/app/example/id123.",
"format": "uri",
"title": "Ios Url"
},
"android_url": {
"anyOf": [
{
"minLength": 1,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional Google Play URL, such as https://play.google.com/store/apps/details?id=com.example.",
"format": "uri",
"title": "Android Url"
},
"image_url": {
"anyOf": [
{
"minLength": 1,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional app icon image URL.",
"format": "uri",
"title": "Image Url"
},
"qr_id": {
"anyOf": [
{
"minLength": 1,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional QRCodeKIT identifier for updating an existing QR instead of creating one.",
"title": "Qr Id"
}
},
"required": [
"app_name"
],
"title": "save_app_store_linkArguments"
}Output Schema
{
"type": "object",
"properties": {
"items": {
"description": "QR codes visible to the active account.",
"items": {
"$ref": "#/$defs/QrSummary"
},
"title": "Items",
"type": "array"
}
},
"$defs": {
"QrSummary": {
"properties": {
"qr_id": {
"description": "Stable QRCodeKIT identifier for the QR.",
"title": "Qr Id",
"type": "string"
},
"title": {
"description": "Human-readable title of the dynamic QR.",
"title": "Title",
"type": "string"
},
"destination_url": {
"description": "Current destination URL for the dynamic QR.",
"title": "Destination Url",
"type": "string"
},
"short_code": {
"description": "Short code segment used by the QR shortlink.",
"title": "Short Code",
"type": "string"
},
"shortlink_url": {
"description": "Complete public shortlink URL encoded by the QR.",
"title": "Shortlink Url",
"type": "string"
},
"qr_image_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Primary public QR image URL, typically the generated SVG asset.",
"title": "Qr Image Url"
},
"qr_image_urls": {
"additionalProperties": {
"type": "string"
},
"description": "Public QR image or download URLs keyed by format, such as svg, png, pdf, or eps.",
"title": "Qr Image Urls",
"type": "object"
},
"visits_total": {
"default": 0,
"description": "Total visits/scans recorded for this QR by QRCodeKIT.",
"minimum": 0,
"title": "Visits Total",
"type": "integer"
},
"created_at": {
"description": "Creation timestamp in UTC.",
"format": "date-time",
"title": "Created At",
"type": "string"
},
"updated_at": {
"description": "Last update timestamp in UTC.",
"format": "date-time",
"title": "Updated At",
"type": "string"
}
},
"required": [
"qr_id",
"title",
"destination_url",
"short_code",
"shortlink_url",
"created_at",
"updated_at"
],
"title": "QrSummary",
"type": "object"
}
},
"title": "ListQrsResult"
}🔴set_link_slug(qr_id, short_code)
Change the custom slug (short code) of an existing QRCodeKIT short link, for any link type — e.g. turn qrkit.co/x7Ab9c into qrkit.co/summer-sale. The link keeps its identity and analytics. Use this only when the user explicitly wants to rename the short URL; to change a destination, use the corresponding save tool instead. WARNING: warn the user that the previous short URL stops redirecting and the QR image is regenerated, so any printed or shared copies of the old QR must be replaced.
Input Schema
{
"type": "object",
"properties": {
"qr_id": {
"description": "Stable QRCodeKIT identifier for the link.",
"minLength": 1,
"title": "Qr Id",
"type": "string"
},
"short_code": {
"description": "New slug for the short link, such as 'my-campaign-2026'. Letters, digits, dots, hyphens, and underscores only. Must be unique within the short-link domain.",
"maxLength": 128,
"minLength": 1,
"pattern": "^[A-Za-z0-9._-]+$",
"title": "Short Code",
"type": "string"
}
},
"required": [
"qr_id",
"short_code"
],
"title": "set_link_slugArguments"
}Output Schema
{
"type": "object",
"properties": {
"items": {
"description": "QR codes visible to the active account.",
"items": {
"$ref": "#/$defs/QrSummary"
},
"title": "Items",
"type": "array"
}
},
"$defs": {
"QrSummary": {
"properties": {
"qr_id": {
"description": "Stable QRCodeKIT identifier for the QR.",
"title": "Qr Id",
"type": "string"
},
"title": {
"description": "Human-readable title of the dynamic QR.",
"title": "Title",
"type": "string"
},
"destination_url": {
"description": "Current destination URL for the dynamic QR.",
"title": "Destination Url",
"type": "string"
},
"short_code": {
"description": "Short code segment used by the QR shortlink.",
"title": "Short Code",
"type": "string"
},
"shortlink_url": {
"description": "Complete public shortlink URL encoded by the QR.",
"title": "Shortlink Url",
"type": "string"
},
"qr_image_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Primary public QR image URL, typically the generated SVG asset.",
"title": "Qr Image Url"
},
"qr_image_urls": {
"additionalProperties": {
"type": "string"
},
"description": "Public QR image or download URLs keyed by format, such as svg, png, pdf, or eps.",
"title": "Qr Image Urls",
"type": "object"
},
"visits_total": {
"default": 0,
"description": "Total visits/scans recorded for this QR by QRCodeKIT.",
"minimum": 0,
"title": "Visits Total",
"type": "integer"
},
"created_at": {
"description": "Creation timestamp in UTC.",
"format": "date-time",
"title": "Created At",
"type": "string"
},
"updated_at": {
"description": "Last update timestamp in UTC.",
"format": "date-time",
"title": "Updated At",
"type": "string"
}
},
"required": [
"qr_id",
"title",
"destination_url",
"short_code",
"shortlink_url",
"created_at",
"updated_at"
],
"title": "QrSummary",
"type": "object"
}
},
"title": "ListQrsResult"
}🔴delete_link(qr_id)
Move an existing QRCodeKIT link and its QR code to the active account's trash. Use this only when the user asks to delete, remove, or discard a specific link. Reversible from the QRCodeKIT web app. Resolve the exact qr_id before deleting when the target is ambiguous.
Input Schema
{
"type": "object",
"properties": {
"qr_id": {
"description": "Stable QRCodeKIT identifier for the link.",
"minLength": 1,
"title": "Qr Id",
"type": "string"
}
},
"required": [
"qr_id"
],
"title": "delete_linkArguments"
}Output Schema
{
"type": "object",
"properties": {
"qr_id": {
"description": "Stable QRCodeKIT identifier for the QR moved to trash.",
"title": "Qr Id",
"type": "string"
},
"deleted": {
"description": "Whether the QR was moved to trash.",
"title": "Deleted",
"type": "boolean"
}
},
"required": [
"qr_id",
"deleted"
],
"title": "DeleteQrResult"
}Community
Evidence