MCP tools reference
Every tool of EaseKit's MCP server with its parameters, defaults and example prompts.
EaseKit's MCP server (easekit-mcp) gives MCP clients like Claude Desktop and Claude Code these tools. You normally just ask in plain words; this page is for knowing exactly what's possible. See Set up EaseKit in Claude to connect.
Common parameters
| Parameter | Meaning |
|---|---|
session_id | A session id from list_sessions (a unique prefix works), or latest for the most recently changed session |
version | A version number (1, 2 …). Omit for the latest version |
list_sessions
Lists your sessions, newest first: id, title, number of versions, last update, and the latest version's score, duration and layer count. Read-only.
| Parameter | Type | Default |
|---|---|---|
limit | Integer, 1–200 | 30 |
query | Text in the title (case-insensitive) |
Example: “Which EaseKit sessions did I work on today?”
get_animation
Reads one version: a compact outline (layer tree with geometry and what animates when), optionally the timing table, the AI's rationale, and the full spec. Read-only.
| Parameter | Type | Default |
|---|---|---|
session_id | Required | |
version | Integer | Latest |
include_spec | Boolean: include the full spec JSON | true |
include_timing | Boolean: every keyframe segment with values and curves | false |
create_animation
Creates a new session with the animation as version 1. The spec is validated, the quality check runs, and the result includes the score (0–100) and findings. It appears in EaseKit immediately.
| Parameter | Type | Notes |
|---|---|---|
title | Required | The session title in the sidebar |
spec | Required | The complete animation; needs context, canvas, duration and layers |
Example: “Create a success check animation in EaseKit.”
edit_animation
Runs small, precise operations in order on the latest version (or version), runs the quality check and saves a new version that appears live. Returns one line per op (✓ or ✗), the score before → after, new findings and what changed.
| Parameter | Type | Notes |
|---|---|---|
session_id | Required | |
ops | Required, at least one | Operations, applied in order |
note | Text | One sentence shown in the version list |
version | Integer | Build on this version instead of the latest |
Operations
| Group | Op | Fields |
|---|---|---|
| Layers | set | id or ids, props (x, y, width, height, fill, opacity, text, textColor, fontSize, fontWeight, textAnimation, anchorX …) |
| Layers | add, remove, duplicate, order, move | layer, below · id · dx, dy · to: front, back, forward, backward |
| Keyframes | keys | property, keyframes ([] deletes the track) |
| Keyframes | key, unkey | property, t, value, easing |
| Keyframes | ease | easing, optional property, from, to |
| Keyframes | value | property, value, t: the value at t, animation kept |
| Timing | retime | start or shift, duration or scale |
| Timing | stagger | ids (in order), step (seconds), start |
| Motion | action, unaction | action: {kind, start, duration, intensity, direction} · kind or action id |
| Motion | stroke_preset | preset: drawOn, drawOff, writeOn, trace, pulse, dashFlow; t |
| Scene | camera | A camera rig, or null to remove it |
| Scene | scene | props: duration, loop, title, canvas, context … |
| Components | make_component | ids, name |
| Components | define_component | component: {id, name, width, height, duration, loop, layers} |
| Components | instance | component, x, y, start, speed, playMode (once, loop, hold), id |
| Components | detach, edit_component, component_props, delete_component | id · component, ops · component, props · component |
| Props and variants | expose_prop, remove_prop | component, child, kind, field, name, default; nested: pass that prop of the nested instance child through |
| Props and variants | set_instance_props | id or ids, values: {prop: value or null} |
| Props and variants | add_variant, remove_variant, set_instance_variant | component, set, value, values, default, changes; add_variant also width, height (the variant's own box) and transition; set_instance_variant also transition |
| Props and variants | variant_transition | component and set, or id / ids; transition: {duration, easing} or null for the default spring |
| Props and variants | variant_key, remove_variant_keys | id / ids, set, value, at (seconds), transition · id / ids, optional set, at |
| Props and variants | swap_nested | id, slot, to |
| Interactions | add_state, set_state_values, rename_state, remove_state | name / state, values: {layerId: {property: value}} (also fill, stroke, textColor as hex and text), easing, duration, next, after |
| Interactions | add_trigger, remove_trigger | event: tap, hover, hoverEnd, press, release, load, scroll, drag, scrollProgress · target · action: goToState, toggleState, play, pause, restart, reverse, setVariant · state, from, set, value, transition · drag: axis (x, y, both), threshold (points, negative = left/up, default 60) · index |
| Image trace | trace_image | id, mode (color, gray, bw), colors (2–16), threshold (0–1), smoothness (0–1), corners (degrees, default 60), noise (px, default 8), ignoreWhite (default true), keepImage, outline |
| Video | video | id, trimIn, trimOut (null = end), startAt, rate (0.1–8), loop, muted, volume (0–1), fit (fill, fit), hold, fadeIn, fadeOut, fade (both; 0 removes), reverse, extendScene |
| Auto Layout | layout | id (a group), direction (horizontal, vertical), gap, padding (a number, [vertical, horizontal] or [top, right, bottom, left]), justify (start, center, end, spaceBetween), align (start, center, end), width / height / sizing (hug, fixed), transition. Turns the layout on (unset fields inferred from the children) or changes it |
| Auto Layout | clear_layout | id. Turns it off; the children keep their positions |
| Auto Layout | layout_item | id or ids, width / height / sizing (fixed, hug, fill), absolute, stretch (absolute children keep their insets as the group resizes), collapse (the slot shrinks with opacity) |
In a layout, animate one child (its width / height, a text morph, or a fade with collapse) and the siblings reflow; x / y keys offset a child from its slot. In the spec, a rectangle's cornerRadii holds independent corners, scaled by its cornerRadius track.
Example: “In my latest EaseKit animation, stagger the rows by 60 ms and give the title a calmer curve.”
check_quality
The quality review: score, the six dimensions (clarity, consistency, readability, start & end, craft, style fidelity), every finding with a suggestion, plus the smoothness audit. Read-only.
| Parameter | Type |
|---|---|
session_id | Required |
version | Integer |
list_templates and start_from_template
| Tool | Parameter | Notes |
|---|---|---|
list_templates | category: ui, onboarding, social, product, logo | Lists id, title, category, aspect, duration and subtitle |
start_from_template | id (required, e.g. success-check), title | Creates a session as version 1 and suggests a next change |
import_svg
| Parameter | Notes |
|---|---|
svg (required) | SVG markup, or an absolute path to an .svg file |
title | Default “Vector” |
Native rectangles and ellipses where possible, vector paths otherwise, named <g> groups as group layers. The layers have no motion yet.
import_lottie
| Parameter | Notes |
|---|---|
lottie (required) | Lottie JSON text, or an absolute path to a .json or .lottie file |
title | Default: the animation's name or the file name |
loopOut expressions become repeated keys, wiggle a wiggle action, and curved motion paths an editable guide path the layer follows. The result lists what couldn't be kept exactly (other expressions keep their static value).
import_figma
Imports a Figma frame, component or component set into a new session, like Import from Figma in the app: groups with their Auto Layout, vectors as paths, text in its font, component sets as components with variants and text props, and hover and pressed variants wired to hover and press triggers. No motion yet.
| Parameter | Notes |
|---|---|
url (required) | A Figma link with a node-id (in Figma: right-click → Copy link to selection) |
title | Default: the frame's name |
The tool uses the Figma token saved in EaseKit (Settings → Providers → Figma, from the Keychain) or the FIGMA_TOKEN environment variable of the MCP server, and sends it only to api.figma.com. It returns the new session's id, the groups with Auto Layout, the components with their variants and the layer outline.
Example: “Import this Figma button into EaseKit and make the hover switch bouncier: https://www.figma.com/design/…?node-id=12-34”
export
| Parameter | Notes |
|---|---|
session_id (required) | |
format (required) | lottie, html, react, swiftui, webanimations, css, json, mp4, gif. Also accepts tsx/motion (react), js/waapi (webanimations), swift (swiftui), video/mov (mp4), spec (json) |
path | A file or folder (~ allowed); a folder gets a file named after the animation. Default ~/Downloads |
version | Integer |
mp4 and gif are rendered by the app: the call opens EaseKit's Render sheet on the session instead of writing a file.
export_svg
| Parameter | Notes | Default |
|---|---|---|
session_id (required), version | ||
time | Seconds: a single frame | 0 |
frames | A frames sheet: "keyframes", a count (1–60) or an array of times | |
interval | Sample every N seconds instead | |
max_frames | Cap for "keyframes", 1–60 | 12 |
include_background | Draw the canvas background | true |
path | Also write the SVG to a file or folder |
export_figma_prototype
The scene as an “EaseKit for Figma” document (format easekit-figma, version 1) for the EaseKit Figma plugin: a frame per state, variant switch and timeline key moment, and the transitions between them with trigger, duration, delay and easing (cubic-bezier, or spring mass, stiffness and damping). The reply has a summary line and the JSON.
| Parameter | Notes | Default |
|---|---|---|
session_id (required), version | ||
include_states | Frames for states and variant switches | true |
include_timeline | Frames for the timeline's key moments | true |
max_moments | Cap for timeline moments, 2–40 | 12 |
path | Also save a .easekit-figma file (pictures embedded) |
open_in_app
Opens EaseKit on a session (launching it if needed) with the stage showing the animation. Parameter: session_id (required).
motion_guide
EaseKit's motion knowledge. Parameter topic: overview (default), format, edit-ops, timing, quality, interactions, components, skills, or a skill's name (for example movekit-screen-transition). Read-only.
Prompts
The server also offers three MCP prompts: Design an animation in EaseKit (description, context), Refine an EaseKit animation (feedback, session_id) and Export an EaseKit animation (format, path, session_id).