Skip to main content
Glama

QRFLOW.codes

Create a QR code

create_qr_code

Create a QR code. kind is a catalog id (url, wifi, vcard, email, phone, sms, text, instagram, googlereview, whatsapp, pdf, ...); fields are that kind's fields, e.g. {url: 'https://...'} for url, {ssid, password, encryption} for wifi, {handle} for instagram. url/phone/email/sms/location codes are dynamic, meaning their destination can be changed later without reprinting: a free account gets one, a paid plan makes every code dynamic. Check dynamic in the result and say so if a code came back static. Returns the code with its printed short link and image URL.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
kindNoCatalog id; call list_code_kinds for the full listurl
labelNoA name for the dashboard
fieldsYesThe kind's fields as key/value strings
bg_colorNo
fg_colorNo
domain_idNoWhich of the account's link domains this code prints with (list_domains); omit for the default
frame_styleNoA frame id from the frames catalog; omit for none
frame_captionNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
idNo
kindNo
typeNo
labelNo
scansNo
dynamicNo
bg_colorNo
fg_colorNo
has_logoNo
domain_idNo
image_urlNoPrint-ready SVG; needs the Authorization header
short_urlNoWhat to print for a dynamic code
created_atNo
kind_labelNo
manage_urlNo
short_codeNo
updated_atNo
destinationNo
frame_styleNo
frame_captionNo
dynamic_capableNo
destination_dataNo
png_download_urlNoPlain PNG (no frame or logo) through a signed 24-hour link
svg_download_urlNoSame SVG through a signed link that works for 24 hours with no header
download_expires_atNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With annotations providing only readOnly=false, the description carries the behavioral burden. It discloses the dynamic vs static behavior, the account-based limitation on dynamic codes, and instructs the caller to check the `dynamic` field in the result. It also states the key return values (printed short link and image URL), going well beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loads the core purpose, then provides necessary detail on kinds, fields, dynamic behavior, and return values. It is dense but not padded; every sentence contributes useful information, though the long list of kind examples makes it slightly heavier than necessary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (8 parameters, nested fields) and the existence of an output schema, the description covers the most important contextual gaps: how to specify kinds and fields, what dynamic means, and what the response contains. It does not mention the relationship to bulk_create_qr_codes, but the rest of the calling context is well addressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 63%, so the description must add meaning to the less-covered parameters. It does: `kind` is explained as a catalog id with examples, and `fields` is illustrated with concrete structures for url, wifi, and instagram. This meaningfully supplements the schema, though it does not address color, frame, or domain parameters, which are left to schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a clear verb and resource: 'Create a QR code.' It goes on to specify the kind catalog and field structures, making the tool's function obvious. It does not explicitly differentiate from the sibling bulk_create_qr_codes, though the singular phrasing implies a single code.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives useful context on how to construct a request, such as calling list_code_kinds for the full kind list and providing field examples for url and wifi. It does not, however, explicitly state when to choose this tool over bulk_create_qr_codes or when a different tool would be more appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources