Skip to main content
Glama

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

make_qr_code
Idempotent

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

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

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
verifiedNo
width_pxNo
height_pxNo
data_base64No
verified_byNo
verify_noteNo
content_typeNo
decoded_textNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • addedOutput schema / properties / decoded_text
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / verified
      Added value: +{
      +  "type": [
      +    "boolean",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / verified_by
      Added value: +{
      +  "type": [
      +    "object",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / verify_note
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
  2. Changed1 schema field changed
    • addedInput schema / properties / output
      Added value: +{
      +  "default": "base64",
      +  "description": "base64 (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.",
      +  "enum": [
      +    "base64",
      +    "url"
      +  ],
      +  "title": "Output",
      +  "type": "string"
      +}
  3. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "border": {
      +      "type": [
      +        "integer",
      +        "null"
      +      ]
      +    },
      +    "bytes": {
      +      "type": [
      +        "integer",
      +        "null"
      +      ]
      +    },
      +    "content_type": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "data_base64": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "error": {
      +      "description": "Only on an error result: an object {code, message}, or the reason string of an x402 PaymentRequired object."
      +    },
      +    "format": {
      +      "enum": [
      +        "svg",
      +        "png",
      +        null
      +      ],
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "height_px": {
      +      "type": [
      +        "integer",
      +        "null"
      +      ]
      +    },
      +    "modules": {
      +      "type": [
      +        "integer",
      +        "null"
      +      ]
      +    },
      +    "scale": {
      +      "type": [
      +        "integer",
      +        "null"
      +      ]
      +    },
      +    "svg": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "version": {
      +      "type": [
      +        "integer",
      +        "null"
      +      ]
      +    },
      +    "width_px": {
      +      "type": [
      +        "integer",
      +        "null"
      +      ]
      +    }
      +  },
      +  "type": "object"
      +}
  4. Added

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond annotations by disclosing local encoding with no fetching, typical latency, 422 handling for oversized data with no charge, USD 0.001 pricing, a free daily quota, and return fields including a 24 h URL mode. Annotations already cover safety traits, and the description adds operational and cost behavior without contradicting them.

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?

Well front-loaded with purpose, then alternatives, return values, error behavior, and pricing. It is dense but nearly every clause carries useful information, with only slight over-packing for a simple tool.

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?

Given the output schema and annotations, the description still supplies enough context about side effects, errors, performance, pricing, quotas, and documentation. Nothing needed to select or invoke it correctly is missing.

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 the schema already documents every parameter including enums and defaults. The description confirms format and output behavior but adds little semantic detail beyond the fully documented schema.

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 and resource ('make a QR code image') and immediately names the sibling tools for barcodes and reading. An agent can distinguish this from make_barcode and read_qr_barcode 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.

Usage Guidelines5/5

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

Explicitly routes adjacent tasks: 1-D barcodes go to make_barcode and reading goes to read_qr_barcode. It also clarifies the practical choice between inline base64 and a 24 h URL to keep files out of context.

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