Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

Control the real connected Chorono editor. Start with list_sessions and get_capabilities; choose sessionId if more than one tab is connected. Read get_scene before editing existing work. Use expectedRevision to prevent overwriting manual edits, and requestId for retry-safe mutations. run_script is isolated and atomic. Create/select explicit timelines for multiple animations. Use render_preview and inspect the returned image; evaluate_frame alone does not prove visual quality. Save portable projects with save_project. Use only documented SceneAPI methods.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{}
prompts
{}
resources
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
clear_sceneB

Remove all layers and timelines from the scene (fresh start). Use before generating a complete new animation from scratch.

update_compositionC

Change canvas composition settings (size, duration, framerate, background color).

add_layerB

Add a new layer to the scene. Set a meaningful id (e.g. "bg_rect", "title_text") — you will use this id in add_keyframes track targets.

update_layerB

Update properties of an existing layer. Only provide fields you want to change.

delete_layerC

Remove a layer from the scene.

create_timelineA

Create an animation timeline. You MUST create a timeline before calling add_keyframes. Set a meaningful id (e.g. "intro", "loop_anim") — you will reference it in add_keyframes.

add_keyframesA

Add keyframes to animate a layer property. Auto-creates timeline + track if missing.

TRACK TARGET FORMAT: "layers.{layerId}.{property}"

AVAILABLE PROPERTIES: opacity → 0.0 - 1.0 transform.x → pixels (horizontal position) transform.y → pixels (vertical position) transform.scaleX → 1.0 = 100% transform.scaleY → 1.0 = 100% transform.rotationDeg → degrees style.fill.color → "#rrggbb" hex string (SNAP — does NOT interpolate) style.fill.opacity → 0.0 - 1.0 style.stroke.width → pixels style.cornerRadius → pixels text.fontSize → pixels text.letterSpacing → pixels effects.blur → 0 - 100

EXAMPLES: target: "layers.bg_circle.opacity" target: "layers.title_text.transform.y" target: "layers.logo.transform.scaleX"

list_layersB

List all layers in the scene (terse): id, type, name, visibility. Use to discover what exists before editing.

list_assetsA

List uploaded media assets (image/video/audio) with their ids. Use to find a valid assetId before add_layer type=image/video/audio. AI cannot upload files.

describe_layerB

Detailed dump of one layer (transform, opacity, size, style, type-specific data).

describe_timelineB

List a timeline's tracks and their keyframes (target, times, values).

get_scene_jsonA

Full ChronoScene JSON. Use sparingly (large) — prefer list_layers / describe_*.

evaluate_at_timeB

Compute animated property values at a given time (ms). Optionally filter to one target path (e.g. "layers.ball.transform.y"). Use to VERIFY an animation.

create_state_machineA

Create a state machine that switches between timelines based on events/guards. Create the per-state timelines FIRST, then this, then add_sm_state for each state. Use for interactive / multi-state scenarios (hover→active, idle→walk→run, 4 seasons…).

add_sm_stateB

Add a state to a state machine. Each state plays one timeline while active. The first state added becomes the initial state automatically.

add_sm_transitionA

Connect two states with a transition. Fires on event, when guard holds, or both. Use from="*" for a transition that applies from any state.

set_initial_stateC

Set which state a state machine starts in.

add_particle_emitterB

Add a particle emitter. Pick a preset by friendly name — confetti, sparkle, magic, smoke, fire, snow, rain, rocket — then optionally override count / durationMs / loop / position. Use for "confetti", "fireworks", "falling snow", etc.

add_parameterA

Add a scene parameter — a named runtime value (number/boolean/color/string) that triggers, bindings, wires, and state-machine guards can read and write.

add_triggerA

Add an event→action rule. When eventType fires (optionally on a layer/timeline), run one action (play/pause/seek a timeline, setParam, emitEvent…). Add an optional condition (condPath/condOp/condValue) to gate it. For click events, the layer must be tappable (set_interactive); for drag events, draggable.

add_bindingB

Add a linear binding that remaps a source (parameter or layer property) onto a target (layer property / timeline progress / parameter) via inputMin→outputMin … inputMax→outputMax.

add_parameter_wireA

Add an expression-driven wire. The source value is bound as source (alias s) in a whitelist expression — map/clamp/lerp/min/max/abs/round/floor/ceil/sin/cos/tan/sqrt/pow/smoothstep — e.g. "map(source,0,1,0,360)". Source/target are scene params (propertyPath = param id, no layerId) or layer properties (layerId + dot-path).

set_interactiveA

Make a layer interactive: tappable (fires click triggers) and/or draggable (fires drag events). Drag can follow the cursor, drive a parameter (setsParameter), or scrub a timeline (scrubsTimeline).

clone_layerA

Duplicate a layer. mode="copy" makes independent copies; mode="instance" makes live instances that mirror the source visual (editing the source updates them). count = number of NEW copies, each offset by (offsetX, offsetY) from the last.

array_layerA

Lay out copies of a layer in a pattern: "linear" (row/column via moveX/moveY), "grid" (columns×rows), "radial" (count around a circle: radius + angles), or "path" (distribute along a path layer). count includes the source. cloneMode copy|instance.

add_pathA

Create a bezier path layer from an array of [x,y] points. role="visual" draws a stroke; role="motion" is an invisible guide for assign_motion_path. Points are in layer-local px; set x/y to position the path.

assign_motion_pathB

Make a layer travel along a path layer (followPath). Set animateMs to auto-animate progress 0→1 over that duration. orientToPath rotates the layer to face the path tangent.

trim_pathA

Reveal only part of a layer's stroke (line-draw / progress effect). start/end/offset are 0–1. Animate the reveal by keyframing layers..style.stroke.trim.end.

add_splineA

Create an editable spline primitive (circle/ellipse/rectangle/line/arc/donut/ngon/star). Use over add_layer shapes when the user wants an editable vector path (points/handles). Each kind takes its own geometry params (radius, sides, angles…).

create_objectB

Create ANY registered object kind, including shapes, text, group, media, spline, path, repeater or particle emitter. patch is a Partial. Discover kinds and properties with get_capabilities.

patch_objectA

Patch any Layer fields: text, typography, transforms, effects, masks, repeater, visibility, stroke, geometry or particle configuration. Nested objects replace their existing value; read describe_layer first.

update_timelineC

Set timeline duration, looping, pingPong, autoplay, work area, layer membership, markers, segments or events.

clone_timelineC

Duplicate an animation including keyframes, curves, modifiers, events and segments with a new timeline id.

delete_timelineB

Delete one timeline. Refuses timelines referenced by state machines.

set_keyframesB

Add or replace keyframes on an explicit timeline and layer property. Supports customBezier with {type:"customBezier",bezier:{cx1,cy1,cx2,cy2}}. Easing belongs to the starting keyframe.

update_trackB

Set track fields: keyframes, outOfRange, easeCurve, timeWarp, multiplierCurve, multiplierAmplitude, procedural waveform/noise controller, or complete modifier stack.

remove_trackC

Remove an animation track from an explicit timeline.

add_modifierC

Add a track modifier: sine, pulse, quantize, offset, scale, clamp, wave, noise, fractalNoise, jitter, timeWarp, bounce, elastic, overshoot, decay, spring.

bake_trackC

Bake procedural animation/modifiers into editable linear keyframes.

configure_particlesC

Update emitter and particle settings, gradients, physics and lifetime properties.

edit_entityB

Add/update/remove parameters, triggers, bindings, parameterWires or stateMachines by id. Use for advanced guards, transitions, formula wiring and runtime behavior.

list_timelinesB

List all animations, their duration, loop settings, tracks, segments and events.

group_layersC

Group selected layer ids in one undoable operation.

ungroup_layerB

Ungroup a group and preserve children transforms and animation.

list_sessionsB

List explicitly connected Chorono editor tabs. Use sessionId when several tabs are open.

get_capabilitiesB

Discover all tools, object kinds, particle presets, limits and the exact script API.

get_sceneA

Read the live editor scene plus revision, selected timeline and playhead. Read before editing existing work.

run_scriptA

Execute synchronous JavaScript in isolated QuickJS. Only scene API is available; no Node, DOM, fetch, imports or filesystem. All edits are atomic. dryRun returns a planId which apply_script_plan commits without rerunning code.

apply_script_planA

Commit a previously prepared script plan exactly once, retaining generated object ids. Refuses a stale scene revision.

batch_actionsB

Apply ordered native tools atomically as ONE undo step. run_script and transport/file tools cannot be nested here.

render_previewA

Return an actual PNG frame. With no timeMs/timelineIds/parameters, captures the current live state including state machines. For deterministic time-based state-machine previews specify timelineIds. parameters overrides values for this frame only.

control_playbackB

Play, pause, stop or seek the editor; select a timeline and set speed. timelineIds isolates animations in the live viewport; [] restores all animations.

control_runtimeB

Set live runtime parameters and dispatch a state-machine event. Events enable runtime test ticks so transitions/blends work while paused; testMode:false stops test ticks.

get_runtimeB

Read current runtime parameters, state-machine states, active timelines and playback state.

evaluate_frameC

Evaluate timelines, bindings, parameter wiring and runtime parameters at a requested time. Returns property values without rendering pixels.

undoC

Undo one editor transaction.

redoC

Redo one editor transaction.

save_projectB

Save a portable scene JSON with local blob media embedded. Files stay inside the configured project directory. Returns exact path, bytes, revision and hash.

list_projectsC

List saved project files inside the project directory.

load_projectA

Load a saved project by file name into the current editor as one undoable change.

export_runtimeC

Save validated and optimized runtime JSON in the export directory.

export_svgC

Save an SVG export using the existing vector exporter.

export_sequenceC

Render a frame sequence ZIP using the editor. Bounded to 300 frames per call. Does not include audio.

import_assetB

Import a media asset supplied as base64 file content using the existing import pipeline. No arbitrary local paths or server-side URL fetches.

validate_sceneB

Validate scene structure and return runtime-export diagnostics.

Prompts

Interactive templates invoked by user choice

NameDescription
animate_sceneRead, build, preview, refine and save a Chorono animation.

Resources

Contextual data attached and managed by the client

NameDescription
Chorono scripting API
Tools, object kinds and particle presets
Connected editor sessions

TDQS

C2.7/5.0

Scored across 65 tools

Disambiguation2/5

Many tools overlap: add_layer/create_object/add_spline/add_path all create visual objects; update_layer/patch_object/edit_entity all mutate layers or entities; add_keyframes/set_keyframes/update_track/add_modifier overlap animation editing. list_layers/describe_layer/get_scene_json/get_scene and evaluate_at_time/evaluate_frame are also easy to confuse despite some descriptive boundaries.

Naming Consistency3/5

Most names are snake_case verb_noun, but verb families are inconsistent (add vs create vs set; update vs patch vs edit; get vs describe vs list). Abbreviations like add_sm_state and set_initial_state, plus get_scene vs get_scene_json, reduce predictability across 65 tools.

Tool Count1/5

65 tools far exceed a well-scoped MCP surface and include many redundant or low-level alternatives to run_script/batch_actions. This is an extreme count for the apparent purpose, with overlapping clusters rather than distinct earned tools.

Completeness4/5

The surface covers scene/layer/timeline editing, animation, modifiers, particles, runtime behavior, state machines, export, persistence, assets, validation and undo. Minor lifecycle gaps remain, such as deleting saved projects/assets and full audio/video export, but core workflows are well covered.

Maintenance

ActivityMaintained
ResponsivenessNo recent community issues