Skip to main content
Glama

Render a QR template

qr_generate_from_template
Read-onlyIdempotent

Render one of the curated templates by id, optionally overriding the encoded content, colors, or output format/size for this specific call.

Input Schema

NameRequiredDescriptionDefault
contentNoOverride what the QR encodes. Defaults to the template's built-in content.
fileFormatNoOutput format. Defaults to "png".
templateIdYesThe template id (from qr_list_templates). May be numeric or string (e.g. "luxury-gold").
outputWidthNoOutput width in pixels (raster) or viewport units (svg). 64-4096.
outputHeightNoOutput height in pixels (raster) or viewport units (svg). 64-4096.
primaryColorNoOverride module color (hex).
backgroundColorNoOverride background color (hex).
additionalConfigNoEscape hatch for any other QrConfig override the engine accepts.

Output Schema

NameRequiredDescriptionDefault
formatYesFile format the engine rendered: png, svg, jpg, webp or pdf.
contentNoThe text or URL the QR encodes, when the call set it.
filePathNoPDF in the stdio package only: local temp file the PDF was written to.
mimeTypeNoMIME type of the rendered file (the engine's contentType).
sizeBytesNoSize of the rendered file in bytes, as reported by the engine.
resourceUriNoPDF on the remote server only: URI of the embedded resource block that carries the file.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "content": {
      +      "description": "The text or URL the QR encodes, when the call set it.",
      +      "type": "string"
      +    },
      +    "filePath": {
      +      "description": "PDF in the stdio package only: local temp file the PDF was written to.",
      +      "type": "string"
      +    },
      +    "format": {
      +      "description": "File format the engine rendered: png, svg, jpg, webp or pdf.",
      +      "type": "string"
      +    },
      +    "mimeType": {
      +      "description": "MIME type of the rendered file (the engine's contentType).",
      +      "type": "string"
      +    },
      +    "resourceUri": {
      +      "description": "PDF on the remote server only: URI of the embedded resource block that carries the file.",
      +      "type": "string"
      +    },
      +    "sizeBytes": {
      +      "description": "Size of the rendered file in bytes, as reported by the engine.",
      +      "maximum": 9007199254740991,
      +      "minimum": 0,
      +      "type": "integer"
      +    }
      +  },
      +  "required": [
      +    "format"
      +  ],
      +  "type": "object"
      +}
  2. First observed

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered structurally. The description adds useful behavioral context by framing everything except templateId as per-call overrides that fall back to the template's built-in values ('for this specific call'), implying nothing is persisted. It says nothing about invalid template ids, error behavior, or rate limits.

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?

A single front-loaded sentence with the action verb first and zero filler. It is compact and slightly enumerative rather than wasteful, though the trailing list is largely a restatement of the schema's parameter groups.

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

Completeness3/5

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 the schema fully covers parameters, keeping the description's burden low. What is still missing is workflow context: that template ids come from qr_list_templates, and how this differs from the sibling generators. Adequate but with clear gaps for an eight-parameter tool.

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 all eight parameters with ranges, enums, and defaults. The description's summary of overridable categories (content, colors, format, size) adds only a light grouping and no syntax or precedence detail beyond the schema. Baseline 3 is appropriate.

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?

States a specific verb and resource: 'Render one of the curated templates by id', with the override surface (content, colors, format/size) named. It is clear what the tool produces, but it never names or contrasts a sibling such as qr_generate or qr_generate_ai, so the agent must infer the boundary between template rendering and ad-hoc generation.

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 phrase 'one of the curated templates by id' implies a template must already exist and be discoverable, and the schema points at qr_list_templates, but the description itself states no explicit when-to-use or when-not-to-use conditions. No alternative (qr_generate, qr_generate_ai) is mentioned, so routing is left to inference.

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