Skip to main content
Glama

HTML/CSS to Image API

Update a Template

update_template
Destructive

Updates an existing HTML/CSS image template. Replaces its latest version when that version has not been rendered; otherwise creates a new version. Returns item.template_id and item.template_version. Call create_templated_image with the returned ID and version to render the updated design. Use list_template_versions to inspect existing content before replacing it.

Input Schema

NameRequiredDescriptionDefault
contentYesComplete replacement content for the template. Preserve intentional variable names and render dimensions unless the user requests a change.
template_idYesThe exact template ID to update.

Output Schema

NameRequiredDescriptionDefault
itemNoOperation result. Check success before using this value.
errorNoError details when the operation failed; null on success.
successNoWhether the operation succeeded. If false, inspect error before retrying.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / content / properties / pdf_options
      Added value: +{
      +  "description": "Options used when generating a PDF instead of an image. Page dimensions and margins must include supported PDF units; margins must contain either zero or four values; scale must be between 0.1 and 2.",
      +  "properties": {
      +    "margins": {
      +      "description": "Margins of the webpage rendering. Defaults to 0. 4 values must be supplied: top, right, bottom, left. Units are px, cm, in, mm, or pt.",
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": [
      +        "array",
      +        "null"
      +      ]
      +    },
      +    "page_height": {
      +      "description": "Height of the page, with unit (px, in, cm, mm, pt)",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "page_width": {
      +      "description": "Width of the page, with unit (px, in, cm, mm, pt)",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "print_background": {
      +      "description": "Print background graphics.",
      +      "type": "boolean"
      +    },
      +    "scale": {
      +      "description": "Scale of the webpage rendering. Defaults to 1.",
      +      "maximum": 2,
      +      "minimum": 0.1,
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    }
      +  },
      +  "type": [
      +    "object",
      +    "null"
      +  ]
      +}
  2. Changed1 schema field changed
    • addedInput schema / properties / content / properties / request_overrides
      Added value: +{
      +  "description": "An array of request rules. Use `action: \"block\"` with a `url` wildcard pattern (using `*`) and/or `resource_types` as an array of resource names, such as `image`, `script`, or `xhr`. Both matchers must match when supplied together; any matching block rule blocks the request. Omitted, `null`, or `[]` adds no overrides. Requires a paid plan. Accepts a JSON array in JSON requests or a JSON-encoded array string in form requests. Maximum 100 rules and 512 characters per URL pattern. Each block rule requires a nonempty URL pattern or at least one resource type; supplied matchers cannot be empty.",
      +  "items": {
      +    "anyOf": [
      +      {
      +        "properties": {
      +          "action": {
      +            "const": "block"
      +          },
      +          "resource_types": {
      +            "description": "Resource types to match, supplied as an array of names, such as image, script, xhr, or fetch. Any listed type may match. When url is also supplied, it must match too.",
      +            "items": {
      +              "enum": [
      +                "beacon",
      +                "document",
      +                "stylesheet",
      +                "image",
      +                "image_set",
      +                "media",
      +                "font",
      +                "script",
      +                "text_track",
      +                "xhr",
      +                "fetch",
      +                "event_source",
      +                "manifest",
      +                "ping",
      +                "img",
      +                "other"
      +              ],
      +              "type": "string"
      +            },
      +            "type": [
      +              "array",
      +              "null"
      +            ]
      +          },
      +          "url": {
      +            "description": "URL wildcard pattern to match, using * for any sequence of characters. When resource_types is also supplied, both matchers must match.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          }
      +        }
      +      }
      +    ],
      +    "description": "A browser request override. The action discriminator selects the rule type; currently only block is supported.",
      +    "required": [
      +      "action"
      +    ],
      +    "type": "object"
      +  },
      +  "type": [
      +    "array",
      +    "null"
      +  ]
      +}
  3. Changed1 schema field changed
    • changedInput schema / properties / content / properties / disable_twemoji / description
      Previous value: -"Use native Linux emoji rendering instead of HCTI's consistent Twemoji images. Leave `disable_twemoji` unset unless native emoji rendering is specifically needed."New value: +"Twemoji is enabled by default for images rendered from the template. Set `disable_twemoji: true` to disable automatic emoji replacement. Omitted, `null`, or `false` keeps Twemoji enabled."
  4. Changed4 schema fields changed
    • addedInput schema / properties / content / properties / selector
      Added value: +{
      +  "description": "Crop the image to the element matching this CSS selector. Prefer a unique, stable ID such as `#card` when possible.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / error / description
      Added value: +"Error details when the operation failed; null on success."
    • addedOutput schema / properties / item / description
      Added value: +"Operation result. Check success before using this value."
    • addedOutput schema / properties / success / description
      Added value: +"Whether the operation succeeded. If false, inspect error before retrying."
  5. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Annotations declare destructiveHint=true and idempotentHint=false, and the description complements this by disclosing exactly what gets destroyed and under what condition ('replaces its latest version when that version has not been rendered; otherwise creates a new version'). This is precisely the behavioral nuance the annotations cannot convey.

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?

Four tight sentences, each load-bearing: identity, replacement semantics, return values, and the two sibling follow-ups. The most important fact (version replacement) is front-loaded right after the opening clause.

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?

An output schema exists, yet the brief return-value summary (item.template_id / item.template_version) is useful for chaining into the render call. Combined with the versioning rules and sibling routing, nothing an agent needs to 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% and the nested content object is documented in exhaustive detail, so the schema does the heavy lifting. The description adds no meaning about content or template_id beyond what is already structured, so the baseline 3 applies.

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 ('Updates an existing HTML/CSS image template') and immediately distinguishes its behavior from create_template/create_templated_image by describing the version-replacement semantics. An agent can tell it apart from its siblings without opening a 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 the agent: use list_template_versions to inspect content before replacing it, and call create_templated_image with the returned ID/version to render. It also states the condition under which replacement happens versus a new version being created, which is the key decision an agent must make.

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.