Skip to main content
Glama

Export an animation as video

figma_export_video
Read-only

Render animated Figma frames as MP4, GIF, or WEBM files; collect long jobs by jobId and extract exact PNG stills.

Instructions

Render the animation of a top-level frame to MP4, GIF or WEBM — the way to SEE motion; figma_export_node renders only the rest state. A layer exports its top-level frame (exportedNodeId). Always writes a file (saveTo, else the export directory). Waits up to wait s (default 40, at most 45); a longer render answers status "rendering" with a jobId, and figma_export_video { jobId } collects it. Name your own jobId for long renders and start no second export meanwhile; cancel + jobId drops one. frameIndices (or frames, seconds) return those frames as PNG (long side ≤ 1024), frame-exact, with ffmpeg; ones not cut in time come back as framesPending. A render is a preview; final: true is the delivery, refused under BRIDGE_PROCESS=strict until figma_check_motion passed on the frame at this fps, the file unchanged since. Meanwhile other Figma calls answer BUSY. fps: MP4/WEBM 12|24|30|60, GIF 8|12|15|24|30. Skills: motion, critique. Editors: Design only.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
fpsNoMP4/WEBM 12, 24, 30 (default), 60; GIF 8, 12, 15 (default), 24, 30.
waitNoSeconds this call waits for the render (default 40; at most 45 unless the server allows more). Lower it if your client cuts calls sooner; 0 starts and returns.
finalNotrue for the delivery render: needs a passing figma_check_motion on the frame at this fps, with no change to the file since. Default false: a preview.
jobIdNoLetters, digits, . _ -. With `nodeId`: your name for this render. Alone: collect or poll that render.
scaleNo0.5, 0.75, 1 (default), 1.5, 2, 3 or 4.
widthNoOutput width in px; height follows the aspect ratio.
cancelNoWith `jobId` only: drop that render. Figma finishes a render it has begun; its result is discarded.
formatNoDefault MP4, or what the saveTo extension implies.
framesNoSeconds to return as PNG stills, each mapped to its nearest frame, e.g. [0, 0.4].
heightNoOutput height in px; width follows the aspect ratio.
nodeIdNoThe animated top-level frame, or any layer inside it (id or Figma link). Starts a render; omit it to collect one by `jobId`.
saveToNoFile to write, .mp4 / .gif / .webm. Same path rules as figma_export_node's saveTo.
qualityNoMP4/WEBM only. Default HIGH.
sessionNoOptional sessionId or file name, to pick a Figma file when more than one is connected.
loopCountNoGIF only: 0 loops forever (default).
frameIndicesNoFrames to return as PNG stills, exactly: frame k is the timeline at k / fps. Not with `frames`.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.1

TDQS

A4.5/5.0
Behavior4/5

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

With annotations already declaring readOnly/destructive=false, the description still adds substantial context: other Figma calls answer BUSY during a render, `wait` is capped at 45s and a longer render returns status 'rendering' plus a jobId, and `final: true` is refused under BRIDGE_PROCESS=strict until figma_check_motion passes. It does not, however, address whether saveTo overwrites an existing file, which is the one destructive-adjacent risk left unstated.

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 core purpose and the sibling contrast are front-loaded, and every sentence carries information for a 16-parameter job-lifecycle tool. It is nonetheless a dense, telegraphic wall of backticked tokens that is harder to parse than it needs to be; some sentences chain three or four separate behaviors.

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?

No output schema exists, and the description compensates by explaining the return states (file always written, 'rendering' + jobId for long jobs, framesPending for uncut stills, BUSY for other calls). What a successful terminal response actually contains (path, duration, size) is never spelled out, so it stops just short of fully self-contained.

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, but the description adds genuine cross-parameter semantics the schema cannot: frames vs frameIndices mutual exclusion and frame-exact PNG semantics, jobId's dual role (name-with-nodeId vs collect-alone), saveTo's extension implying format, and the per-format fps tables. This exceeds restating the schema.

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 ('Render the animation of a top-level frame to MP4, GIF or WEBM') and immediately differentiates itself from the sibling figma_export_node, which 'renders only the rest state.' An agent can tell the two apart without opening either 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?

Gives explicit when-to-use routing against figma_export_node, the long-render workflow ('figma_export_video { jobId } collects it'), the cancel path, the preview-vs-final distinction, and the frames/frameIndices alternative. When-not conditions are stated too ('start no second export meanwhile', 'Not with `frames`').

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools