Skip to main content
Glama
kicholiz

Figma Write Bridge MCP

by kicholiz

set_keyframe_track

Add or replace a manual keyframe track on a node to animate properties like position, rotation, scale, opacity, or color over time.

Instructions

Add or replace one manual keyframe track on a node. field is a property name (TRANSLATION_X/Y/XY, ROTATION, SCALE_X/Y/XY, OPACITY, CORNER_RADIUS, STROKE_WEIGHT, WIDTH, HEIGHT, STACK_* / GRID_* spacing, PATH_TRIM_START/END) or FILLS/STROKES/EFFECTS with a paintIndex. Transform fields COMPOSE with the node's resting transform (neutral 0, or 1 for scale); the others replace the value. timelinePosition is in seconds; the first keyframe's value holds back to t=0 and the last holds to the end, so no padding keyframes are needed. Easing on a keyframe describes the move INTO it, and adds 'HOLD' for step interpolation. The containing timeline is extended when the animation runs past it unless extendTimeline is false. Animate descendants: a top-level frame owns the timeline rather than animating on it, so keyframes there do nothing and are refused unless allowTopLevelFrame is true. Color and effect animation uses field FILLS, STROKES, or EFFECTS together with paintIndex.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
fieldYes
trackNo
nodeIdYes
keyframesNo
paintIndexNo
extendTimelineNo
allowTopLevelFrameNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so well: it discloses compose-vs-replace semantics per field type, keyframe hold behavior (first holds to t=0, last to end), easing direction ('move INTO it', HOLD for step), timeline auto-extension, and the top-level-frame refusal rule. This is unusually rich behavioral context.

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?

Purpose is front-loaded and every sentence carries operational meaning, but the description is a dense single block that could be split for scanability. No filler or repetition, so it stays efficient despite its length.

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 7-parameter tool with nested objects, no output schema and 0% schema coverage, the description covers the risky semantics (composition, easing, timeline extension, top-level refusal). It does not clarify the relationship between the track object and the top-level keyframes array, which is the main remaining ambiguity.

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 description coverage is 0%, so the description must compensate and largely does: it enumerates valid field values, explains paintIndex pairing for FILLS/STROKES/EFFECTS, and states timelinePosition is in seconds. It leaves the track vs top-level keyframes distinction and baseValue/id semantics unexplained, so a small gap remains.

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 pair ('add or replace') and resource ('one manual keyframe track on a node'), which cleanly separates it from siblings like remove_keyframe_track and get_motion. An agent knows immediately what mutation this performs.

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 conditional context: top-level frames are refused unless allowTopLevelFrame is true, and the timeline is extended unless extendTimeline is false. It does not explicitly name an alternative tool or state when to prefer it over remove_keyframe_track, so it stops short of full when/when-not routing.

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