Skip to main content
Glama

Live Card

Render a Live Photo card

render_live_card

Use this when the user wants an Apple Live Photo, a short animated card, or an MP4 or GIF from a design you can draw in HTML. Pass cover_html (the still) and motion_html (the animation). Both must be self-contained: inline SVG, inline CSS and data: URLs only. A remote image, font, script or style sheet is refused with external_url. Optional width and height (even, default 1080 by 1440, at most 1080 by 1440), duration_ms (500 to 3000, default 3000), fps (15 or 30, default 15) and cover_ms (the video time the still is paired to, default 0). CSS animations and requestAnimationFrame are sampled on a virtual clock from 0 to duration_ms. Returns status queued, a job_id, and a message telling you to call live_card_status. It does not return the files itself. It cannot fetch a URL, import into Photos, or run longer than 3 seconds.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
fpsNoFrames per second. Default 15.
widthNoEven pixel width. Default 1080.
heightNoEven pixel height. Default 1440.
cover_msNoTime in the video the still is paired to. Default 0. Must be a whole frame and less than duration_ms.
cover_htmlYesSelf-contained HTML for the still cover. Inline SVG, CSS and data: URLs only.
duration_msNoLength in milliseconds, 500 to 3000, a whole number of frames at fps. Default 3000.
motion_htmlYesSelf-contained HTML for the animation. CSS animations and requestAnimationFrame follow a virtual clock from 0 to duration_ms.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
as_ofYes
job_idYes
limitsNo
sourceYes
statusYes
messageYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only give the generic safety profile (non-read-only, non-idempotent, non-destructive, closed-world); the description adds the operationally critical details: self-contained HTML is mandatory, remote assets are refused with the 'external_url' error, animation is sampled on a virtual clock 0..duration_ms, and the response is a queued job_id rather than files.

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?

Dense but front-loaded: purpose first, then the two required inputs, then constraints, then return shape. A couple of the trailing 'It does not / It cannot' sentences are near-duplicates of earlier statements, costing a little tightness.

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?

For a non-idempotent job-submitting tool with an output schema, the description covers the full contract: inputs and their self-containment rule, timing semantics, hard limits, the async job_id return, and the required follow-up call. 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%, so the schema already documents every parameter including defaults, ranges and the even-pixel rule. The description restates those same bounds and only marginally adds meaning by tying cover_ms to 'the video time the still is paired to' and explaining the virtual clock, so baseline 3 is appropriate.

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 (render) and resource (Apple Live Photo / animated card / MP4 or GIF) plus the concrete input model (cover_html still + motion_html animation). It implicitly separates itself from live_card_status by noting it does not return the files and that the caller must poll status instead.

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?

Opens with an explicit trigger ('Use this when the user wants an Apple Live Photo, a short animated card, or an MP4 or GIF'), and closes with explicit exclusions (cannot fetch a URL, cannot import into Photos, cannot exceed 3 seconds). It also routes the agent to the sibling live_card_status for retrieving results.

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