Skip to main content
Glama

Galley Render

Render a document

render
Idempotent

Render a template plus a JSON payload into a PDF, PNG or JPG and return a signed URL. This is the one tool most calls need.

Small jobs finish inside the call and come back status: "succeeded" with a url you can hand straight to a user. Anything with a webhook_url, async: true or a large payload comes back status: "queued" with an id for get_render.

Renders are deterministic and cached: the same template version, data and options return the stored object with cached: true, free and instant. Billing is one unit per PNG or JPG and one per PDF page; cache hits are never billed.

No API key needed to start — the first call mints a 50-render trial and returns its token.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
dataYesThe JSON payload for the template, matching its schema. Call get_template for the schema, or validate_data to dry-run a payload for free.
asyncNoForce the queued path even for a small job. Default false: small jobs finish inside the call and come back with a URL already.
formatNoOutput format. Defaults to `pdf` for chromium templates and `png` for satori ones. `webp` is not supported in v1.
optionsNoRender options, merged over the template's own defaults. Options are part of the cache key, so two calls that differ only here are two different renders.
templateYesTemplate to use: `invoice` for the latest version, or `invoice@3` to pin version 3. Pin the version in anything you ship — a new version changes the output and the cache key. Call list_templates to see what this account has.
webhook_urlNoAbsolute https URL to POST the finished render to. Supplying one forces the queued path: the call returns immediately with status `queued`.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.9/5.0
Behavior5/5

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

Beyond annotations, the description discloses caching and determinism, succeeded vs. queued statuses, billing behavior, and the trial-token minting side effect. It also clarifies that cache hits are free and instant, which is materially useful for an agent deciding whether and how to invoke the tool.

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

Conciseness5/5

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

The description is tightly organized, front-loading the core action and then layering sync/async behavior, caching, billing, and auth. Every sentence carries operational value and none merely repeats the title or schema.

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?

The description covers what the tool does, what response statuses to expect, how to retrieve async results, billing consequences, caching semantics, and how authentication starts. This is enough for an agent to invoke it correctly without an output schema.

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 100%, so the baseline is 3, but the description adds meaningful cross-parameter context: webhook_url and async drive the queued path, options and template version participate in the cache key, and large payloads trigger async handling. This goes beyond the schema without replacing it.

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?

The description states a precise action and resource: render a template plus JSON payload into PDF, PNG, or JPG and return a signed URL. It also distinguishes itself by calling out that this is the one tool most calls need, separating it from siblings like get_render, get_template, and validate_data.

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?

The description gives explicit routing guidance: use get_render for queued jobs, get_template for schemas, validate_data for dry-runs, and list_templates to discover templates. It also explains when async/webhook forces the queued path, so an agent knows how to choose between this tool and alternatives.

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