QRCodeKIT
Server Details
Branded short links, instant page & file hosting, and dynamic QR codes with unified analytics.
- Status
- Healthy
- Uptime
- 100.0% over 24 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 14 tools
Save tools target distinct link types (app store, email, WhatsApp, HTML, short link) and descriptions clarify overlap between host_file, render_file_upload_qr_form, and save_file_url_qr. The internal create_file_upload_session is explicitly marked as not for direct use, reducing misselection risk.
All names use snake_case, with save_* for link creation and other verbs for distinct operations. Minor inconsistency: host_file and render_file_upload_qr_form deviate from the save_* pattern, but names remain readable and purposeful.
14 tools cover a wide range of link types and management operations without redundancy. Each tool has a clear purpose for this multi-feature QR/link service, so the count is well-scoped.
Provides create and update (via qr_id), delete, list/show, analytics, slug change, and file hosting across link types. Minor gap: no explicit get single link by ID, but show_links and list_links cover retrieval adequately.
Available Tools
14 toolscreate_file_upload_sessionCreate File Upload SessionAInspect
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'.
| Name | Required | Description | Default |
|---|---|---|---|
| filename | Yes | Original filename of the selected file. | |
| typology | Yes | Use 'file' for an arbitrary file or 'pdf' for a PDF. | |
| mime_type | No | MIME type reported by the browser for the selected file. | |
| size_bytes | Yes | Size of the selected file in bytes. Must be at most 50 MB. |
Output Schema
| Name | Required | Description |
|---|---|---|
| method | No | HTTP method the widget must use for the upload. |
| max_bytes | Yes | Maximum accepted upload size in bytes. |
| expires_at | Yes | ISO-8601 timestamp when the session expires. |
| field_name | No | Multipart field name for the uploaded file. |
| session_id | Yes | Opaque backend upload-session identifier. |
| upload_url | Yes | Single-use URL the widget posts the file to (multipart form data). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover mutation (readOnlyHint=false) and non-idempotency, and the description adds valuable context about the session being one-time and avoiding credential exposure. It goes beyond the structured annotations without contradicting them, though it doesn't detail session lifecycle or auth requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler: the first identifies the tool's purpose and constraint, the second gives routing guidance. Information is front-loaded and every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With fully documented parameters and an output schema present, the description covers the remaining essential context: what the session is for, that it is one-time, that it hides credentials, and that it is not meant for direct user invocation. Nothing critical is missing for an agent to decide whether to call this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all parameters including filename, size_bytes, typology, and mime_type. The description adds no parameter-specific detail beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('mint a one-time upload session') and a clear resource/session type, while explaining its role in enabling the file upload form to send files without exposing credentials. It also distinguishes itself from user-facing tools by being labeled a 'Widget-only helper' and a non-direct-use utility.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says this is 'not intended for direct use' and directs the agent to prefer 'Upload a File → Get a Link & QR' instead. This provides clear when-not-to-use guidance and names the preferred alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_linkDelete LinkADestructiveIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| qr_id | Yes | Stable QRCodeKIT identifier for the link. |
Output Schema
| Name | Required | Description |
|---|---|---|
| qr_id | Yes | Stable QRCodeKIT identifier for the QR moved to trash. |
| deleted | Yes | Whether the QR was moved to trash. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark destructiveHint and readOnlyHint, but the description adds valuable behavioral context: the deletion is a move to trash, scoped to the active account, and reversible from the web app. This goes beyond the annotations and clarifies the nature of the destructive action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence carries meaningful information: the operation, the usage condition, reversibility, and a caution about resolving the identifier. It is compact, direct, and well-structured with the main purpose front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter destructive tool with rich annotations and an output schema, the description provides complete guidance: what happens, when to use it, why it is safe, and how to handle ambiguity. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes qr_id as a stable identifier and has 100% coverage. The description reinforces the need to resolve ambiguity but does not add new parameter-level detail, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action — moving a QRCodeKIT link and its QR code to the active account's trash. It disambiguates deletion from other operations and is distinct from sibling tools, which are largely create/list/stat tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use: 'Use this only when the user asks to delete, remove, or discard a specific link.' It also advises resolving the exact qr_id first when the target is ambiguous, giving practical decision guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_link_statsLink & QR AnalyticsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| qr | No | 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. | |
| end_date | No | Last day of the stats window (YYYY-MM-DD). Defaults to today. | |
| interval | No | Time-series bucket size: 1h, 1d, 1w, or 1M. Use 'auto' (default) to pick a sensible bucket from the range length. | auto |
| start_date | No | First day of the stats window (YYYY-MM-DD). Defaults to 29 days before end_date. |
Output Schema
| Name | Required | Description |
|---|---|---|
| qr | No | The QR the stats belong to when scope is 'qr'. |
| scope | Yes | 'qr' for a single QR deep-dive, 'account' for all QRs in the account. |
| cities | No | |
| notice | No | Human-readable note about limits or missing data, if any. |
| devices | No | |
| summary | No | |
| top_qrs | No | Account scope only: QRs ranked by lifetime visit totals. |
| browsers | No | |
| end_date | Yes | Last day of the stats window (YYYY-MM-DD). |
| interval | Yes | Time-series bucket size: 1h, 1d, 1w, or 1M. |
| qr_count | No | Account scope only: number of QRs covered by the stats. |
| countries | No | |
| start_date | Yes | First day of the stats window (YYYY-MM-DD). |
| time_series | No | |
| operating_systems | No | |
| advanced_stats_available | No | False when the plan does not include advanced analytics breakdowns. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds substantial behavioral context beyond that: every short-URL visit is counted, QR scans and link clicks are combined into one metric, account-wide results include extra aggregates, the window defaults to the last 30 days, and the interval selection affects the time-series buckets. It also notes that advanced breakdowns depend on the account plan.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but earned: it front-loads the core purpose and metrics, then covers usage triggers, account-vs-link semantics, parameter behavior, defaults, and result shape. The 'structured result contains the full tables' sentence is somewhat vague and adds little, but overall the structure is logical and every major section serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity—4 optional params, one enum, account-vs-link variants, plan-dependent fields, and an existing output schema—the description is complete. It explains how to select a link, how to omit it for account-wide stats, how date defaults and interval work, and what the data semantics are. There is no obvious missing piece that would prevent an agent from invoking it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description mostly reinforces what the schema already says: qr can be an ID, slug, or title fragment, end_date defaults to today, start_date defaults to 29 days before, and interval supports auto/hourly/daily/weekly/monthly. It adds minor value by framing defaults as 'last 30 days,' but it does not need to compensate for any schema gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Retrieve analytics for the whole QRCodeKIT account or for one link.' It enumerates the exact metric families returned, which clearly distinguishes it from sibling tools like list_links or show_links that handle link listing rather than analytics. The usage phrase 'Use this when the user asks about QR scans, short-link clicks, campaign performance...' further locks in the purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool: 'Use this when the user asks about QR scans, short-link clicks, campaign performance, audience location, devices, trends, comparisons, or top-performing links.' It does not explicitly name an alternative tool or state when not to use it, but the supported-use cases are concrete enough to guide selection. A brief exclusion or sibling comparison would have earned a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
host_fileShare a File or PDF by LinkADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | Attached file to host — PDF or any other type — stored as a QRCodeKIT asset before creating the link. | |
| qr_id | No | Optional QRCodeKIT identifier for updating an existing link instead of creating one. | |
| title | Yes | Display title for the link. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | No | QR codes visible to the active account. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real value beyond annotations: it discloses that the file is copied into QRCodeKIT asset storage, that PDFs are validated as real PDFs, and that supplying qr_id replaces the hosted file while preserving the existing public URL and printed QR. That replace-while-preserving behavior is meaningful given destructiveHint=true, though it does not spell out what happens to the prior asset on replacement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action and outcome, then the usage trigger, then the update case. Slightly verbose with overlapping enumerations (PDF/image/document/spreadsheet/other file, then a second document list), but each sentence carries substantive information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and annotations already cover the safety profile. For a 3-parameter file-hosting tool, the description covers intake, storage, linking, QR output, and the update path completely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, so the baseline is 3. The description goes further by explaining the semantic distinction of qr_id (update an existing link vs create a new one) and that file is stored as a QRCodeKIT asset, adding meaning beyond the schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: upload/host a local file and produce a public short link plus a QR code. It clearly distinguishes itself from URL-based siblings like save_file_url_qr and save_html_file_qr by emphasizing the local attachment and its own asset storage.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use it: when the user wants to publish or share an attached PDF/file without a separate hosting account, and it names the update case via qr_id. It does not explicitly exclude or route away from the sibling save_* tools, so it falls just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_linksList Links & QR CodesARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of links to return from the active account. | |
| typology | No | Link typology internal name to filter by. Use 'all' or omit this field to return all typologies. | all |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | No | QR codes visible to the active account. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds a useful behavioral detail by clarifying that lifetime visits combine short-link clicks and QR scans, which is not inferable from the schema or annotations. It does not mention pagination or account-scoping nuances, but those are minor given the annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: the core return promise and key fields appear first, followed by the lifetime-visits nuancehol and a clear sibling-tool routing sentence. Every sentence earns its place, and there is no filler or repetition of annotation properties.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (two optional parameters), full schema coverage, and a present output schema, the description is complete enough for an agent to invoke it correctly. It covers the purpose, the data shape, the when-to-use context, and the alternative tool. The output schema handles return-value documentation, so no further detail is required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both `limit` and `typology` already documented, so the schema carries the parameter semantics. The description's phrase 'filter by link type' loosely aligns with the typology parameter but adds no concrete syntax or enumeration information beyond what the schema provides. Baseline 3 is appropriate because the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise verb-resource pair ('Return the account's QRCodeKIT links as structured data') and enumerates the exact fields in the result, such as title, short URL, slug, QR image URLs, and lifetime visits. It also names the sibling tool it is not ('Use show_links instead...'), which removes any ambiguity about which tool the agent should select.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool: when the assistant needs to 'search, filter by link type, compare, inspect, or process existing links programmatically.' It additionally gives a concrete exclusion by directing display/download requests to 'show_links instead,' making the routing decision fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render_file_upload_qr_formUpload a File → Get a Link & QRBRead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| qr_id | No | Optional QRCodeKIT identifier when updating an existing QR instead of creating one. | |
| title | No | 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. | |
| typology | No | 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. | file |
Output Schema
| Name | Required | Description |
|---|---|---|
| qr_id | No | Stable QRCodeKIT identifier when the widget updates an existing QR. |
| title | No | QR title used when the upload is saved. Falls back to the uploaded filename. |
| typology | No | Initial file typology for the form. |
| max_bytes | No | Maximum accepted upload size in bytes, enforced client-side for UX. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description directly contradicts the annotations: it says 'The form uploads the file to QRCodeKIT and saves the link' and 'when qr_id is provided, it replaces the file of an existing link,' yet the annotations declare readOnlyHint=true. This is an explicit mutation claim against a read-only hint, making the behavioral signal unreliable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences and front-loads the primary action clearly. It contains useful context without excessive fluff. A slight redundancy exists between the title and the opening clause, but the structure is otherwise efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter tool with full schema coverage and an output schema, most invocation details are covered. The description also names supported file types and the QR update behavior. However, the behavioral contradiction with readOnlyHint leaves a significant completeness gap for an agent trying to understand the tool's actual side effects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters, their defaults, and meanings. The description adds some context for qr_id (replacing a file while preserving the short URL/QR) and for title (sensible title from conversation), but these largely overlap with what the schema already provides, so a baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: '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.' It clearly identifies the tool's purpose and distinct niche: hosts like Claude that cannot pass an attached file directly, distinguishing it from siblings such as save_file_url_qr or host_file.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage context: '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.' This clearly tells when to use it, though it does not explicitly mention alternatives or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_app_store_linkApp Download Smart LinkADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| qr_id | No | Optional QRCodeKIT identifier for updating an existing QR instead of creating one. | |
| ios_url | No | Optional Apple App Store URL, such as https://apps.apple.com/app/example/id123. | |
| app_name | Yes | App name shown on the App Store QR landing page. | |
| image_url | No | Optional app icon image URL. | |
| android_url | No | Optional Google Play URL, such as https://play.google.com/store/apps/details?id=com.example. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | No | QR codes visible to the active account. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint/openWorldHint/idempotentHint=false, so safety context is partly covered. The description adds genuinely useful behavioral detail: the update path preserves the existing short link and QR code, and at least one store URL must be supplied. It does not clarify what 'destructive' means here (e.g., whether an update can drop an existing destination), which is a minor gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core capability, then usage, then requirements, then update semantics. Every sentence carries information; only slightly longer than strictly necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need no explanation, and the description covers the create/update modes and input requirements well. Remaining minor gap is the exact consequence of the destructiveHint during updates, but overall the agent has enough to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds a real cross-parameter rule not encoded in the schema: at least one of ios_url/android_url is required even though only app_name is listed as required. It also frames icon as optional and qr_id as an update switch.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (create) and resource (device-routing smart link + dynamic QR), and explains the core behavior that distinguishes it from siblings like save_short_link or save_whatsapp_link: iOS/Android device routing. An agent can tell immediately what this tool produces.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete usage context ('download our app' campaigns in print, ads, websites, link-in-bio) and explains the create-vs-update branch via qr_id. It does not name sibling alternatives or state when NOT to use it, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_email_linkEmail Action LinkADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| cc | No | Optional CC email addresses. | |
| body | No | Optional pre-filled email body. | |
| qr_id | No | Optional QRCodeKIT identifier for updating an existing QR instead of creating one. | |
| title | Yes | Display title for the link. | |
| subject | Yes | Pre-filled email subject. | |
| email_address | Yes | Recipient email address for the email QR. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | No | QR codes visible to the active account. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (destructiveHint=true, idempotentHint=false, openWorldHint=true), lowering the bar. The description adds genuinely non-derivable behavior: the qr_id path updates in place while preserving the existing short link and QR code. It does not, however, warn about what the destructive/create path overwrites or any auth requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core action, and the update semantics come last where they logically belong. The use-case list is slightly padded but still informative rather than wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With annotations covering safety flags and an output schema covering return values, the description only needs to supply creation/update semantics and composition details, which it does. It is adequate for calling the tool correctly, though a note on the destructive overwrite path would round it out.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning beyond the schema by clarifying that qr_id switches the operation from create to update. The mapping of recipient/subject/body/CC to the pre-filled email composition also adds context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Create a short link and dynamic QR code that opens a pre-filled email,' then enumerates the key inputs. This clearly separates it from siblings like save_short_link and save_whatsapp_link, which cover different destinations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete usage contexts ('contact us' flows, support requests, RSVPs, feedback) and, crucially, explains the alternative mode: when qr_id is provided it updates details rather than creating. It stops short of naming sibling tools or stating when NOT to use this one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_file_url_qrLink a Hosted FileADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| qr_id | No | Optional QRCodeKIT identifier for updating an existing QR instead of creating one. | |
| title | Yes | Display title for the QR. | |
| file_url | Yes | Already-hosted public file URL, preferably a QRCodeKIT asset URL. | |
| typology | Yes | Use 'file' for an arbitrary file or 'pdf' for a PDF. | |
| asset_iri | No | Optional QRCodeKIT asset IRI returned by an earlier upload. | |
| original_filename | No | Original filename to show for the download. Defaults to 'file'. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | No | QR codes visible to the active account. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the write/destructive/non-idempotent/open-world profile, so the bar is lower. The description adds real value by stating the link and QR are permanent, that an update with qr_id preserves the existing short link and QR code while swapping the destination, and that it doubles as a form finalizer — though it never says what an update overwrites or whether operations are reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the primary action, then the fallback routing, then the update semantics. No filler or repeated schema content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter mutation with full schema coverage, full annotations, and an output schema, the description covers selection, routing, and update semantics. Nothing an agent needs to pick and call this tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so the baseline is 3, but the description goes beyond the schema by explaining the qr_id branch (update existing QR, preserving link) and framing file_url as an already-hosted public URL. It does not clarify asset_iri or original_filename beyond the schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (create or update) plus resource (permanent short link and dynamic QR code) plus input constraint (file already hosted at a public URL). It clearly separates itself from siblings like host_file and save_short_link by scoping to already-hosted files.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use it (fallback when the host cannot pass an attached file, finalizer for the in-chat upload form) and names the preferred alternative (host_file) with the condition that selects it. The qr_id branch defines update vs create behavior.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_html_file_qrHost Static HTML PageADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| html | Yes | 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. | |
| qr_id | No | Optional QRCodeKIT identifier for updating an existing hosted HTML page in place while preserving the same public URL and QR code. | |
| title | Yes | Human-readable title for the hosted page. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | No | QR codes visible to the active account. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations flag destructiveHint=true and openWorldHint=true, and the description corroborates the public/irreversible nature by stating the page goes live with a permanent URL requiring no hosting account or deployment token. It adds the 6 MB cap and the single-file (not multi-site) constraint, but never explains what the destructive flag implies for the existing page content when qr_id is omitted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core action and outputs are front-loaded, and constraints (size, single file, no token) follow in a logical order. The long mid-sentence catalog of page types ('digital menu, event page, portfolio, product page, campaign page, microsite') is keyword padding that slightly dilutes focus.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need no explanation, and the description covers size limits, single-page scope, qr_id update behavior, and no-account prerequisites. The one gap is that the destructiveHint on overwrite is never reconciled with the 'preserving its public URL' framing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents html's 6 MB UTF-8 limit and qr_id's update-in-place semantics, which the description largely repeats. No additional syntax or format guidance is provided beyond what structured fields carry, so the baseline 3 holds.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb+resource ('Publish a single-page static HTML site live on the web') and enumerates the concrete outputs (permanent public URL, shareable link, dynamic QR code). An agent can distinguish this from host_file or save_file_url_qr without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives rich when-to-use signals ('when the user asks to create, publish, deploy, host, share, or put online...') plus a qualifying condition ('especially when they do not have a website or hosting provider'). It never names a sibling alternative or a when-not-to-use case, so routing between this and host_file still requires inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_short_linkSave Short LinkADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| qr_id | No | Optional QRCodeKIT identifier for updating an existing link instead of creating one. | |
| title | Yes | Display title for the link. | |
| short_code | No | 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. | |
| destination_url | Yes | Destination URL the short link and QR code redirect to. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | No | QR codes visible to the active account. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and non-idempotency, so the bar is lower. The description still adds real behavioral context beyond the annotations: every link ships with a scannable QR code, clicks and scans are tracked in one dashboard, and supplying qr_id mutates the destination while preserving the existing short URL and printed QR code.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the creation purpose and followed by the qr_id update case and the sibling disambiguation. Dense but each sentence carries distinct information; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. With creation, update-by-qr_id, tracking side effects, and sibling routing all covered, an agent has everything needed to select and call this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds meaning on top of the schema by explaining the operational effect of qr_id (change destination while preserving the short URL and printed QR) and illustrating the custom slug format with a concrete branded example (qrkit.co/summer-sale).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb+resource (create a branded short link and dynamic QR code for an existing URL) and explicitly covers the update variant via qr_id. It cleanly distinguishes itself from siblings like save_email_link and set_link_slug.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit when-to-use trigger ('when the user already has a destination URL and wants to shorten or brand it, track visits, or get a QR code') and names the alternative sibling set_link_slug with the exact condition that selects it (renaming an existing slug).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_whatsapp_linkWhatsApp Chat LinkADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| qr_id | No | Optional QRCodeKIT identifier for updating an existing QR instead of creating one. | |
| title | Yes | Display title for the link. | |
| message | No | Optional pre-filled WhatsApp message. | |
| phone_number | Yes | WhatsApp phone number with international country code, such as +12025550123. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | No | QR codes visible to the active account. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a mutating, non-idempotent, destructive, open-world operation, so the bar is lower. The description adds genuine value beyond them: supplying qr_id switches to an update mode that preserves the existing short link and QR code, which the annotations do not convey. It still does not say what update actually overwrites (old phone/message) or that the operation affects externally visible artifacts.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core create-and-update behavior before the use-case list. The use-case enumeration is somewhat long but serves routing value; no sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. Required fields, update semantics, and intended use are all covered. The one gap is not stating that an update overwrites prior data, but for a moderately simple 4-parameter tool this is close to complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters including international phone format and qr_id's update meaning. The description restates the international-format requirement and qr_id behavior without adding formatting syntax or validation detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (create) and resource (short link + dynamic QR code for a WhatsApp conversation), and specifies the mechanism (phone number in international format + optional pre-filled message). It is clearly distinguishable from siblings like save_email_link, save_short_link, and save_file_url_qr.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete usage context ('chat with us' buttons, support, reservations, signage, business cards, link-in-bio) and explains the update path when qr_id is supplied. It does not, however, name an alternative sibling or state when a different tool should be chosen instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_link_slugChange Link SlugADestructiveIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| qr_id | Yes | Stable QRCodeKIT identifier for the link. | |
| short_code | Yes | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | No | QR codes visible to the active account. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark destructiveHint=true and idempotentHint=true, and the description reinforces the destructive action by warning that the previous short URL stops redirecting and the QR image is regenerated. It adds value by explaining the consequence of printed/shared copies needing replacement, which goes beyond the annotations. Since the destructive hint is present, a 4 is appropriate—it enriches the context without repeating the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded: it states the core action with an example, then routes to alternatives, and ends with a warning. The warning is necessary for safe usage, and the sentences are efficient. Slightly verbose with the WARNING tag, but it earns its place given the destructive nature.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, the description need not explain return values. The tool is a mutation with clear side effects; the description covers the key consequence (old URL stops redirecting) and regeneration of QR, which is critical for an agent. It lacks details on error cases (e.g., slug not unique) but that is implied by the schema. Overall, it is sufficiently complete for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% coverage with detailed descriptions for both parameters (qr_id as stable identifier, short_code with pattern and uniqueness requirement). The description adds the example 'summer-sale' and notes the slug must be unique within the domain, but this largely overlaps with the schema. Baseline 3 is correct because the schema already handles the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Change the custom slug of an existing QRCodeKIT short link') with a concrete example (qrkit.co/x7Ab9c to qrkit.co/summer-sale), and it distinguishes itself from sibling tools like save_short_link by specifying 'any link type' and preserving identity/analytics. It also explicitly notes it is not for changing the destination, which differentiates it from the various save_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit guidance on when to use: 'Use this only when the user explicitly wants to rename the short URL.' It also gives a clear alternative: 'to change a destination, use the corresponding save tool instead.' This directly addresses the when/which-tool question, leaving no ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
show_linksShow Links & QR CodesARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of links to render when qr_id is absent. | |
| qr_id | No | Optional QRCodeKIT identifier for showing a single link instead of the gallery list. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | No | QR codes visible to the active account. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds useful behavioral context beyond that: the interactive gallery presentation, available export formats (SVG, PNG, PDF, EPS), and account-scoping behavior. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no fluff. The main purpose is front-loaded, the gallery contents are compactly enumerated, and the parameter-dependent behavior is placed last. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a full input schema, output schema, and safety annotations, the description supplies the remaining selection and scoping context: when to use it, what the gallery contains, and how qr_id changes the behavior. A minor gap is not explicitly routing the user away from sibling tools like list_links for programmatic use cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema coverage is 100%, and both parameters already have descriptions. The description does add the conditional behavior of qr_id ('show only that link; otherwise show links from the active account'), but it mostly restates what the schema conveys, so it earns the baseline rather than exceeding it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the resource ('QRCodeKIT links') and the action ('Display ... in an interactive gallery'), then lists the concrete contents: short URL, QR image, combined click-and-scan totals, and download actions. This distinguishes it from sibling link-management tools such as list_links or delete_link.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit trigger language: 'Use this when the user asks to see, show, preview, display, or download their links or QR codes.' This is strong when-to-use guidance, though it does not explicitly name an alternative or state when not to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
14 tool updates
- First observed
create_file_upload_session - First observed
delete_link - First observed
get_link_stats - First observed
host_file - First observed
list_links - First observed
render_file_upload_qr_form - First observed
save_app_store_link - First observed
save_email_link - First observed
save_file_url_qr - First observed
save_html_file_qr - First observed
save_short_link - First observed
save_whatsapp_link - First observed
set_link_slug - First observed
show_links
Related MCP Connectors
Dynamic, editable QR codes + short links with scan analytics and branded QR rendering.
Short links, text and file sharing with analytics, UTM, folders, ads and custom domains.
Create branded short links and QR codes, and pull click analytics by country, device and referrer.
Create QR codes, re-point printed dynamic codes, name links on your domain, read scan analytics.
Related MCP Servers
- AlicenseAqualityDmaintenanceGenerate styled QR codes, manage dynamic short links with click analytics, and publish micro-landing pages via AI agents.1936 npm1MIT

Jmpy mcp serverofficial
FlicenseNot gradedqualityDmaintenanceUser can create short urls, edit short urls, get click analytics, generate qr codes and much more.-- AlicenseNot gradedqualityCmaintenanceEnables generating QR codes from URLs or text without an API key, and creating trackable short links whose printed QR codes can be re-pointed after printing.33 npmMIT

esyURL MCP serverofficial
AlicenseNot gradedqualityCmaintenanceEnables AI agents to create, update, organize, and delete short links; render styled QR codes; route visitors by device or country; and read click and scan statistics. Agents can also manage groups and custom domains while changing destinations without breaking printed QR codes or shared short URLs.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.