qrforprint
Server Details
QR codes for print: free previews, plus dynamic link codes you can repoint after printing.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 4 tools
Each tool targets a distinct resource+action: creating a dynamic code, listing saved codes, previewing a static code, and updating a dynamic code's destination. The static vs dynamic distinction is made explicit in descriptions, so an agent can reliably choose the right tool.
All four names follow a snake_case verb_noun pattern (create_/list_/preview_/update_). Minor variance in noun phrasing ('my_codes' vs 'qr_code' vs 'dynamic_link_code') is readable but not perfectly uniform.
Four tools is on the lean side but each covers a genuinely different operation with no redundancy. A small surface is appropriate for this focused QR service, though one or two more lifecycle tools would round it out.
Core actions (create dynamic, list, update destination, preview static) are covered, but there is no way to delete a code, retrieve a single code by ID, or permanently save a static code. These are notable gaps an agent could hit in a full manage-codes workflow.
Available Tools
4 toolscreate_dynamic_link_codeCreate a dynamic link QR codeAInspect
Creates a dynamic QR code in the signed-in qrforprint account. The code holds a short qrforprint link that forwards to the given web address, so the destination can be changed later without reprinting, and scans are counted. Free accounts can have 3 dynamic codes. Returns the short link, the QR image and a link to style and download it on qrforprint.com.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | A name to find the code by later, such as 'Table menu'. | |
| destination_url | Yes | The web address the code opens, starting with http:// or https://. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-read-only, non-idempotent, non-destructive, closed-world; the description adds material context beyond them: creation happens in the signed-in account, a quota limit of 3 dynamic codes on free plans, that scans are counted, and that the short link keeps working after destination changes. What it does not cover is failure behavior (e.g. quota exceeded) 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?
Three sentences, front-loaded with the action, with the quota and return-value facts each earning their place. Slightly dense packaging of effect + return value, but 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?
With no output schema, the description usefully names what comes back (short link, QR image, styling/download link), and it discloses the quota constraint. Only the error paths and whether the short link is fixed at creation are left unstated.
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% – both name and destination_url carry their own descriptions, including the http(s) requirement and length limits. The description only restates "the given web address" and the ability to change destination later, adding no syntax or format detail beyond the schema, so 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?
Opens with a specific verb and resource ("Creates a dynamic QR code") and scopes it to the signed-in qrforprint account. It explains the dynamic-link concept well but never names the sibling tools (e.g. preview_qr_code for a static preview, update_code_destination for retargeting) that an agent must choose between.
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?
Usage context is implied: dynamic is chosen when the destination may change later, and the free-account cap of 3 dynamic codes is a genuine precondition. However, there is no explicit when-not or alternative routing against list_my_codes/preview_qr_code, so the agent must infer selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_my_codesList my QR codesARead-onlyIdempotentInspect
Lists the QR codes saved in the signed-in qrforprint account, newest first, 50 per page: name, type, static or dynamic, short link, destination, total scans for dynamic codes, creation date, whether the code is disabled, and a link to edit it on qrforprint.com.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, starting at 1. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false, and destructiveHint=false. The description adds useful behavior beyond annotations: newest-first ordering, 50 items per page, account scoping, and a detailed list of returned fields.
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?
It is a single front-loaded sentence that starts with the core action before listing details. The field enumeration is somewhat dense, but since there is no output schema, most of it 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?
For a low-complexity list tool, the description is complete: it covers account scope, ordering, page size, returned fields, and code status. The schema covers the only parameter and annotations cover safety, so no critical information 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 input schema fully documents the single 'page' parameter with its range, so the baseline is 3. The description adds meaningful pagination semantics by specifying '50 per page,' which tells the agent how many records each page contains.
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: it lists QR codes saved in the signed-in account. It also specifies ordering, page size, and returned fields, making it clearly distinct from create, preview, and update siblings.
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 usage is implied by 'Lists the QR codes saved in the signed-in account,' but there is no explicit guidance on when to use this vs. preview_qr_code, update_code_destination, or other siblings. It provides context but no exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preview_qr_codePreview a QR codeARead-onlyIdempotentInspect
Draws a black and white preview of a static QR code for a web address, plain text, email, phone call, text message, WiFi network or contact card. Returns the PNG image and a link that opens the same content in the qrforprint editor, where it can be styled and downloaded as PNG, SVG, PDF or EPS. Nothing is saved and no account is needed. A static code cannot be changed after it is printed.
| Name | Required | Description | Default |
|---|---|---|---|
| org | No | type vcard: company. | |
| url | No | type url: the web address, starting with http:// or https://. | |
| text | No | type text: the plain text to encode. | |
| type | Yes | What the code holds: url, text, email, phone, sms, wifi or vcard (contact card). | |
| No | type email: the recipient address. | ||
| phone | No | type phone: the number to call, international format such as +14155550123. | |
| title | No | type vcard: job title. | |
| smsBody | No | type sms: optional message text. | |
| lastName | No | type vcard: last name. | |
| smsPhone | No | type sms: the number the text message goes to. | |
| vcardUrl | No | type vcard: website. | |
| wifiSsid | No | type wifi: the network name (SSID). | |
| emailBody | No | type email: optional message body. | |
| firstName | No | type vcard: first name. | |
| vcardEmail | No | type vcard: email address. | |
| vcardPhone | No | type vcard: phone number. | |
| wifiHidden | No | type wifi: true if the network name is hidden. | |
| emailSubject | No | type email: optional subject. | |
| wifiPassword | No | type wifi: the network password. | |
| wifiEncryption | No | type wifi: WPA (default), WEP, or nopass for an open network. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent and non-destructive, so the safety profile is covered. The description adds real value beyond that: the return payload (PNG image plus editor link), the no-persistence/no-account guarantee, and the permanence caveat that a static code cannot be changed after printing — a materially useful behavioral fact for a preview tool.
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 action and output, followed by the editor/download path and the static-code caveat. Dense with no filler; the type enumeration is long but functional rather than redundant padding.
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?
There is no output schema, and the description compensates by describing both return artifacts (PNG image and editor link). For a 20-parameter, single-required-field preview tool, the description plus a fully documented schema cover everything an agent needs to call it and interpret the result.
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% and every one of the 20 parameters is documented in the schema, including conditional 'type ...' prefixes. The description only restates the type list already captured by the enum, adding no format, constraint or dependency guidance beyond the schema, so 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?
"Draws a black and white preview of a static QR code" states a specific verb and resource, and the enumerated content types (web address, plain text, email, phone, SMS, WiFi, contact card) pin down exactly what the tool covers. The word "static" plus "Nothing is saved" cleanly separates it from the sibling create_dynamic_link_code, so an agent can route without opening a 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?
Clear context for use: preview-only, no account, nothing persisted, with a pointer to the qrforprint editor for styling and download. It implies the alternative (persisted/dynamic codes handled by the sibling tools) but never names or explicitly excludes them, so the routing is inferential rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_code_destinationChange where a QR code goesADestructiveIdempotentInspect
Changes the web address a dynamic link QR code in the signed-in qrforprint account forwards to. Printed copies keep working and open the new address from the next scan. Accepts the code ID or its short link. Static codes, disabled codes and photo, PDF or voice note codes cannot be changed with this tool.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | The code ID or its short link, as shown by list_my_codes. | |
| destination_url | Yes | The new web address, starting with http:// or https://. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, it discloses the key behavioral consequence: already-printed copies keep working and resolve to the new address from the next scan, and the change is scoped to the signed-in account. That is genuinely useful context that the destructiveHint/idempotentHint flags do not convey. It doesn't discuss whether the old destination is recoverable or what a failure looks like, which keeps it from a 5.
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 zero filler; the action is front-loaded, the user-facing consequence follows, and the exclusions close it out. 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?
For a two-parameter mutation with full schema coverage and no output schema, the description covers the effect, the persistence behavior of printed copies, and the unsupported code types. Only a note on the failure/response behavior would make it fully 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 coverage is 100%, so both parameters are already documented in the schema. The description's 'Accepts the code ID or its short link' restates the schema's own wording for the code parameter and adds no format or validation detail beyond it. 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?
States a specific verb and resource — changing the destination web address of a dynamic link QR code in the signed-in account. The scope is sharpened by naming what it cannot touch (static, disabled, photo/PDF/voice note codes), which separates it from create_dynamic_link_code and list_my_codes without opening either 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 a clear condition for use (dynamic link codes in the signed-in account) and explicit exclusions of the code types this tool rejects. It stops short of naming an alternative tool for those excluded cases, so the agent is left to infer where to go next.
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.
4 tool updates
- First observed
create_dynamic_link_code - First observed
list_my_codes - First observed
preview_qr_code - First observed
update_code_destination
Related MCP Connectors
- JustQRsOAuthcom.justqrs
Make QR codes: free static images, dynamic codes you can repoint after printing, scan analytics.
1 - QR TopOAuthcom.qr-top
Dynamic QR codes by chat: edit destinations after printing, smart routing, and scan analytics.
Short links and trackable QR codes: editable after printing, device routing, scan stats.
- QR MakerOAuthapp.qrmaker
Create styled, scannable QR codes with previews, scan checks, editable links and scan statistics.
Related MCP Servers
- 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.48 npmMIT
- AlicenseNot gradedqualityAmaintenanceGenerate QR codes and create, edit and track dynamic (editable) QR codes with scan analytics, folders, style themes and branded subdomain management. Free REST API with an OpenAPI spec alongside; every tool takes a free API key.12AGPL 3.0
- AlicenseNot gradedqualityDmaintenanceQrVerloz lets AI agents create QR codes instantly — no account needed, active for 90 days, and claimable at any time to make them permanent. Retarget the destination URL whenever you need, without reprinting.3MIT
- AlicenseAqualityDmaintenanceDynamic QR code platform for AI agents. Create, customize, and track QR codes without regenerating images. 37 tools covering 11 QR types (URL, vCard, WiFi, event…).373MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.