Skip to main content
Glama

Render tailored previews

render_previews
Idempotent

Render posters of up to 4 templates at once, each filled with one brand description, so the user picks from options that already show their product. The server maps the brand onto each template's text fields and shortens text to fit. Returns, per template: id, title, poster URL (null if it was not ready in time), editor link, the tailored props to start from after the pick, and keptSample: text fields that still hold the template's sample text (fill them with real facts after the pick). Inline images follow the text, in the same order as the results. shortened lists brand texts that were cut to fit a field ({role, from, to, max}); rewrite them for that field after the pick. Animated loops (4-second animated WebP of each tailored template) take two calls. First call with loop: "start": it returns the posters as fast as without loops and starts the loops in the background. Show the posters. Then call again with the same arguments and loop: true: it waits for the loops and returns video (the loop URL) per template. A loop still rendering has video: null and videoPending: true; call once more to get it. Show each loop as an image (Markdown title) where the host renders images, so the options animate.

Input Schema

NameRequiredDescriptionDefault
loopNo"start" returns the posters now and starts 4-second animated loops in the background. true waits for the loops and returns them as video.
brandYesThe product facts from the user's project. Never invent numbers.
searchIdNoThe searchId returned by search_templates. Pass it through so picks can be measured.
variantIdsYesTemplate ids from search_templates.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / brand / properties / logo
      Added value: +{
      +  "description": "The logo object from upload_logo. Templates with a logo slot show it in place of the brand name.",
      +  "properties": {
      +    "id": {
      +      "pattern": "^[a-f0-9]{64}$",
      +      "type": "string"
      +    },
      +    "mono": {
      +      "type": "boolean"
      +    },
      +    "ratio": {
      +      "maximum": 8,
      +      "minimum": 0.2,
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "id",
      +    "ratio",
      +    "mono"
      +  ],
      +  "type": "object"
      +}
  2. Changed6 schema fields changed
    • changedInput schema / properties / brand / properties / headline / description
      Previous value: -"Main message, as short as possible."New value: +"The hook: a pain, question, number, or benefit, as short as possible."
    • changedInput schema / properties / brand / properties / points / description
      Previous value: -"2-3 real features or facts, short phrases."New value: +"2-3 benefits backed by real features or facts, short phrases."
    • changedInput schema / properties / brand / properties / subhead / description
      Previous value: -"One supporting sentence."New value: +"One sentence: who it is for and what it solves."
    • addedInput schema / properties / loop / anyOf
      Added value: +[
      +  {
      +    "const": "start",
      +    "type": "string"
      +  },
      +  {
      +    "type": "boolean"
      +  }
      +]
    • changedInput schema / properties / loop / description
      Previous value: -"true to also render a 4-second animated WebP loop of each template. Slower; posters still come back if a loop is not ready."New value: +"\"start\" returns the posters now and starts 4-second animated loops in the background. true waits for the loops and returns them as video."
    • removedInput schema / properties / loop / type
      Removed value: -"boolean"
  3. Changed1 schema field changed
    • addedInput schema / properties / loop
      Added value: +{
      +  "description": "true to also render a 4-second animated WebP loop of each template. Slower; posters still come back if a loop is not ready.",
      +  "type": "boolean"
      +}
  4. Added

TDQS

A4.6/5.0
Behavior5/5

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

Annotations cover safety (readOnly=false, idempotent=true, destructive=false), and the description adds substantial behavior beyond that: which fields are returned per template, that poster URL is null when not ready, the keptSample and shortened-list semantics, inline image ordering, and the multi-call loop protocol with videoPending handling.

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 core action, then structured by concern (returns, shortened lists, loops). The loop paragraph is dense and slightly long, but each sentence carries operational information an agent needs, so little is wasted.

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?

With no output schema, the description carries the return-value burden and does so thoroughly: result fields, null/pending cases, and the special handling needed for loops and sample-text fields. An agent has everything required to call and interpret results.

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 coverage is 100%, so the baseline is 3. The description still adds meaning by explaining the loop:'start' vs loop:true return behavior and the post-pick fill workflow, which goes beyond the per-field schema text.

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 with scope: 'Render posters of up to 4 templates at once, each filled with one brand description.' The 'up to 4 templates at once' batching scope distinguishes it from the singular sibling render_preview without needing the schema.

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

Usage Guidelines4/5

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

Context is clear ('so the user picks from options that already show their product') and it spells out the two-call workflow for animated loops. It stops short of explicitly naming render_preview as the single-template alternative or stating when to prefer one over the other, so routing to the sibling remains inferential.

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.