Skip to main content
Glama
aiexp1

Tanod MCP server

utilpeek: make a QR code image (SVG or PNG)

make_qr_code
Idempotent

Encode text or URLs into QR code images as SVG or PNG, with options for error correction, size, and border. Returns inline base64 or a 24-hour download link.

Instructions

utilpeek: make a QR code image. For 1-D barcodes use make_barcode; to read a code use read_qr_barcode. Returns svg (text) or data_base64 (PNG), or with output "url" a 24 h download link, plus version, modules, width_px, height_px and bytes. Data too long for a QR code at the chosen level is a 422 (not charged). Encoded locally, nothing is fetched; typically under 0.1 s. Price: USD 0.001. Free: 10 utilpeek calls per IP per UTC day. Docs: https://tanod.dev/learn/qr-code-api.html

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
dataYesText or URL to encode (1-2000 characters, at most 2953 UTF-8 bytes).
errorNoError correction level (default M).M
scaleNoPixels per module (1-20, default 8).
borderNoQuiet zone in modules (0-10, default 4).
formatNosvg (text) or png (base64).svg
outputNobase64 (default): the file comes back inline as base64. url: the file is stored for 24 hours and the reply carries a download link (url, expires_at, bytes, content_type, sha256) instead of the base64, which keeps the file out of your context window.base64

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
svgNo
bytesNo
errorNoOnly on an error result: an object {code, message}, or the reason string of an x402 PaymentRequired object.
scaleNo
borderNo
formatNo
modulesNo
versionNo
width_pxNo
height_pxNo
data_base64No
content_typeNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.3.0

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the annotations (readOnlyHint=false, openWorldHint=true, idempotentHint=true, destructiveHint=false): discloses pricing, the free-tier quota, that oversized data yields a 422 that is not charged, that encoding is local with nothing fetched and typical latency under 0.1s, and that output=url persists the file for 24 hours. Only behavioral gap is what happens to stored URL artifacts after expiry, which is implied.

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?

Front-loaded with the tool's action, then routing alternatives, then return shape, then cost/failure/latency, then docs. Every sentence carries decision-relevant information, though the return-field enumeration (version, modules, width_px, height_px, bytes) partly duplicates the existing output schema and a docs URL is somewhat promotional filler.

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

Completeness5/5

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

For a 6-parameter generator with 100% schema coverage and an output schema, the description supplies everything left over: cost and quota, error semantics, latency, deployment locality, output-mode trade-offs, and sibling routing. An agent can invoke this correctly on the first try.

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

Parameters3/5

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

Schema description coverage is 100%, so data, error, scale, border, format and output are already documented in-schema; the upstream rows of the schema already explain base64 vs url and the returned expires_at/bytes/content_type/sha256 fields. The description only restates the format and output modes, adding the 'keeps the file out of your context window' rationale for url but no new syntax or constraints. Baseline 3.

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

Purpose5/5

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

States a specific verb+resource ('make a QR code image') with output format scope (SVG or PNG), and explicitly distinguishes itself from the two nearest siblings: make_barcode for 1-D barcodes and read_qr_barcode for decoding. An agent can route correctly without opening any schema.

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

Usage Guidelines5/5

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

Names both alternatives and the condition that selects each ('For 1-D barcodes use make_barcode; to read a code use read_qr_barcode'), and adds operational guidance on cost (USD 0.001, 10 free calls per IP per UTC day) and the 422 no-charge failure mode, which is exactly the context needed to decide whether to call it.

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

Deploy Server

Other Tools