Reference · MCP tools reference
Documentation

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

ParameterMeaning
session_idA session id from list_sessions (a unique prefix works), or latest for the most recently changed session
versionA 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.

ParameterTypeDefault
limitInteger, 1–20030
queryText 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.

ParameterTypeDefault
session_idRequired
versionIntegerLatest
include_specBoolean: include the full spec JSONtrue
include_timingBoolean: every keyframe segment with values and curvesfalse

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.

ParameterTypeNotes
titleRequiredThe session title in the sidebar
specRequiredThe 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.

ParameterTypeNotes
session_idRequired
opsRequired, at least oneOperations, applied in order
noteTextOne sentence shown in the version list
versionIntegerBuild on this version instead of the latest

Operations

GroupOpFields
Layerssetid or ids, props (x, y, width, height, fill, opacity, text, textColor, fontSize, fontWeight, textAnimation, anchorX …)
Layersadd, remove, duplicate, order, movelayer, below · id · dx, dy · to: front, back, forward, backward
Keyframeskeysproperty, keyframes ([] deletes the track)
Keyframeskey, unkeyproperty, t, value, easing
Keyframeseaseeasing, optional property, from, to
Keyframesvalueproperty, value, t: the value at t, animation kept
Timingretimestart or shift, duration or scale
Timingstaggerids (in order), step (seconds), start
Motionaction, unactionaction: {kind, start, duration, intensity, direction} · kind or action id
Motionstroke_presetpreset: drawOn, drawOff, writeOn, trace, pulse, dashFlow; t
ScenecameraA camera rig, or null to remove it
Scenesceneprops: duration, loop, title, canvas, context …
Componentsmake_componentids, name
Componentsdefine_componentcomponent: {id, name, width, height, duration, loop, layers}
Componentsinstancecomponent, x, y, start, speed, playMode (once, loop, hold), id
Componentsdetach, edit_component, component_props, delete_componentid · component, ops · component, props · component
Props and variantsexpose_prop, remove_propcomponent, child, kind, field, name, default; nested: pass that prop of the nested instance child through
Props and variantsset_instance_propsid or ids, values: {prop: value or null}
Props and variantsadd_variant, remove_variant, set_instance_variantcomponent, set, value, values, default, changes; add_variant also width, height (the variant's own box) and transition; set_instance_variant also transition
Props and variantsvariant_transitioncomponent and set, or id / ids; transition: {duration, easing} or null for the default spring
Props and variantsvariant_key, remove_variant_keysid / ids, set, value, at (seconds), transition · id / ids, optional set, at
Props and variantsswap_nestedid, slot, to
Interactionsadd_state, set_state_values, rename_state, remove_statename / state, values: {layerId: {property: value}} (also fill, stroke, textColor as hex and text), easing, duration, next, after
Interactionsadd_trigger, remove_triggerevent: 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 tracetrace_imageid, 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
Videovideoid, 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 Layoutlayoutid (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 Layoutclear_layoutid. Turns it off; the children keep their positions
Auto Layoutlayout_itemid 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.

ParameterType
session_idRequired
versionInteger

list_templates and start_from_template

ToolParameterNotes
list_templatescategory: ui, onboarding, social, product, logoLists id, title, category, aspect, duration and subtitle
start_from_templateid (required, e.g. success-check), titleCreates a session as version 1 and suggests a next change

import_svg

ParameterNotes
svg (required)SVG markup, or an absolute path to an .svg file
titleDefault “Vector”

Native rectangles and ellipses where possible, vector paths otherwise, named <g> groups as group layers. The layers have no motion yet.

import_lottie

ParameterNotes
lottie (required)Lottie JSON text, or an absolute path to a .json or .lottie file
titleDefault: 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.

ParameterNotes
url (required)A Figma link with a node-id (in Figma: right-click → Copy link to selection)
titleDefault: 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

ParameterNotes
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)
pathA file or folder (~ allowed); a folder gets a file named after the animation. Default ~/Downloads
versionInteger

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

ParameterNotesDefault
session_id (required), version
timeSeconds: a single frame0
framesA frames sheet: "keyframes", a count (1–60) or an array of times
intervalSample every N seconds instead
max_framesCap for "keyframes", 1–6012
include_backgroundDraw the canvas backgroundtrue
pathAlso 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.

ParameterNotesDefault
session_id (required), version
include_statesFrames for states and variant switchestrue
include_timelineFrames for the timeline's key momentstrue
max_momentsCap for timeline moments, 2–4012
pathAlso 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).