Skip to main content
Glama

Write motion graphic

write_asset
Destructive

[write · costs credits] Make a motion graphic, or rewrite one. Written as a React TSX module; the component gets the brand kit as a theme and, over footage, where faces, objects and burnt-in text are, and a new one is placed on the timeline. Use for lower-thirds, callouts, charts, kinetic type and stickers made to order; read get_motion_doc before non-trivial code. The preview is live, nothing is rendered. Returns asset {id, status}, its placement and the clip's {handle, lane}. Related: get_motion_doc, render_asset, list_assets, set_asset_sound. Full docs: load_skill with tools: [name].

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "project_id": "<project_id>"
    },
    "name": "write_asset"
  }
}

Input Schema

NameRequiredDescriptionDefault
kitNoA ready-made engine to start a new graphic from, by its key (the tools/motion-graphics guide lists them), copied in, so `code` is not needed.
bakeNoFill props.beats and props.words from the sound under the graphic; the answer numbers the lines.
codeNoThe whole TSX module. Required for a new graphic unless `kit`; with assetId, omit it to change only files, inputProps, editableProps or the title.
kindNoWhat it is. Default custom. A new graphic only.
filesNoHelper files by name, no extension: { engine: "…" } imports as "./engine"; { engine: { fromAsset: id } } copies a graphic's. An empty one is removed; the rest stay.
itemsNoMany graphics at once, max 40, each with this tool's fields; fields beside it are defaults.
mediaNoLibrary files by prop: { shot: assetId, pictures: [assetId, …] }; each prop gets the address, props.media the facts.
placeNofalse: make a new one without placing it. Default true.
soundNoA kit's own sounds play on its moves. "none": silent; { beat: sound } changes one (a library sound, an audio id or "none").
titleNoIts name. Default "Motion graphic".
designNoThe look of a kit graphic: a design's name ("paper-cut"), the whole text of a design.md, or "none" for the kit's own. Left out, a new one takes the film's design and one taken again keeps its look.
formatNooverlay (default, transparent) or fullframe. A new graphic only.
layersNoEach kit layer's start and name: { "row-2": { atMs: 1000, label: "So LOAD" } }.
shapesNoProps in `media` that are SVG files to read as shapes (props.media.<prop>.shapes).
assetIdNoMotion graphic id from list_assets: rewrite it instead of making a new one.
contentNoA collage kit's scene by what it says and shows, instead of inputProps: props, layers and camera come from it and the words, placed on its line unless placeAtMs or durationSeconds say otherwise.
placeAtMsNoWhere a new one lands, timeline ms, on whole frames at both ends. Default the end.
inputPropsNoThe user-editable values the component reads, with sensible defaults.
project_idYesThe AskEditor project this acts on (from list_projects).
approval_idNoOnly when a previous call answered needs_approval: the approval_id it gave. Call again with it as soon as you have told the person where to approve: the call waits for their answer.
audioClipIdNoThe clip whose beats `bake` reads. Default: the music or speech under the graphic.
layerAnchorsNoLayers started on a spoken word: { id: { on, nth?, leadMs? } }.
editablePropsNoThe values the person can adjust, one per inputProps key, written with the code; a value that changes one piece names its layer.
coversCaptionsNotrue: the captions under it are not drawn while it is up, as a title card does (a big lyric or title overlay). A new graphic only.
durationSecondsNoLength, seconds. Default 3; with assetId, its new length.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare destructive and non-idempotent write behavior, but the description adds useful context beyond them: it costs credits, the preview is live while nothing is rendered, the return includes asset/placement/clip data, and rewriting an existing asset is supported. It does not fully explain approval handling, but the main behavioral traits are disclosed.

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?

The description is dense but front-loads the purpose, cost warning, and usage cases. It packs a lot into one paragraph for a complex tool, though some clauses are convoluted and could be clearer.

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

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex 25-parameter mutation tool with no output schema, the description covers purpose, use cases, cost, preview behavior, return shape, related tools, and where to find full docs. It is largely complete, though approval flow is only documented in the schema.

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 all 25 parameters are documented in the schema itself. The description does not add parameter-specific meaning beyond what the schema already says, making the baseline score 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 and resource ('Make a motion graphic, or rewrite one') and distinguishes new creation from rewriting. It also names the technical form (React TSX module) and placement behavior, so the agent can identify the tool without opening 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?

Gives clear use cases ('lower-thirds, callouts, charts, kinetic type and stickers made to order') and a prerequisite ('read get_motion_doc before non-trivial code'). It lists related tools but does not explicitly state when to choose them over this one.

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