OpenToonz MCP

io.github.konkomajiPublished by GitHub account konkomajiv0.1.0Updated Oct 29, 2026

Animate in OpenToonz from an AI assistant: native vector levels, xsheet timing, rigs and physics.

VerifiedSTDIODesktop onlyDeveloper ToolsMedia & Design

Overview

AI-generated overview

Drives OpenToonz, the open-source 2D animation studio, so an assistant can build editable scenes: vector levels, xsheet timing, rigs, camera and renders.

What you can do
  • Inspect and manage scenes: install info, scene context, notes, journal, undo, create/import scenes and settings
  • Build layouts: layers, pegs, parenting, layer properties, pivots, deletion
  • Draw and time: shapes, batch drawings, in-betweens, xsheet exposure, blinks, lip sync, SVG and image import, vector compile
  • Animate: keyframes, action moves with anticipation and overshoot, physics bounces and jumps, follow-through, camera pans, trucks, shake and follow
  • Build and walk or run human rigs from body-proportion data, with regional averages
  • Check work: style guide, anatomy reference, parts library, frame previews and renders
When to use it
For animators, indie studios, teachers or developers who want an assistant to lay out shots, draw key poses and in-betweens, time them, add camera work and render, while keeping the result as a normal OpenToonz scene they can finish by hand.
Requirements
Local process on Windows with OpenToonz 1.8 installed and Python 3.10+; ffmpeg on PATH for MP4 and GIF output. Optional environment variables OPENTOONZ_HOME, OPENTOONZ_STUFF and OTMCP_WORK override auto-detected install, stuff folder and work directory. No authentication declared.
Before you install
It writes to scene files and can overwrite vector levels edited in the GUI when forced, so keep backups and use undo. It launches OpenToonz and tcomposer executables and renders locally. The README asks for recent pip or uv versions because of a certificate-authority issue. Windows-only and untested elsewhere.

Installation

In SourceWeft

  1. Open OpenToonz MCP in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

OpenToonz MCP

Let an AI assistant animate inside OpenToonz, the open-source 2D studio tool, and keep every frame editable.

[CI] [PyPI] [Python] [License: MIT] [MCP]

[A blob character blinks, anticipates, jumps with squash and stretch, lands, and the camera pans with parallax]

Made entirely with this server's tools. The character, background and timing are real OpenToonz vector levels, xsheet cells and keyframes, so you can open the scene and keep animating by hand.


Why I built this

Most "AI animation" today produces a finished video you can't edit. Animators need the opposite: drawings they can fix, timing they can retime, and a scene they can hand to the next person in the pipeline.

OpenToonz is the open-source release of Toonz, the software Studio Ghibli customised and used on its films. It already has everything a 2D pipeline needs: vector levels, an xsheet, pegbars, cameras and a compositor. What it lacked was a way for an assistant to use it.

OpenToonz MCP is that bridge. You describe a shot. The assistant lays it out, draws key poses, in-betweens them, times them on ones, twos or threes, adds camera work, and renders. The result is a normal OpenToonz scene. You can open it, change anything, save it, and ask the assistant to continue. Your edits are kept.

— konkomaji · konkomaji.com

Who it's for

  • Animators and directors who want fast layouts, animatics, in-betweens and camera passes they can then finish by hand.
  • Indie studios and solo creators making shorts, explainers, music videos or game cutscenes without a full crew.
  • Teachers and students of animation. The tools follow the classic principles (slow in/out, arcs, anticipation, follow-through), so the output is a worked example you can inspect frame by frame.
  • Developers building creative AI tools who need a real, inspectable 2D pipeline rather than pixels.

What it can do

🎨 Native vector drawingShapes, SVG paths and pressure brush strokes become OpenToonz .pli vector levels. OpenToonz performs the conversion itself, so the drawings are fully editable with OpenToonz's vector tools.
✍️ A hand-drawn lookPen-pressure taper. Subtle line wobble that holds still on held frames. Optional line boil. Anime cel shadows or pen hatching (inspired by p5.brush), and coloured trace lines. Style presets: anime, feature, cartoon, sketch, clean.
🎞️ Animator timingIn-betweens with slow-in/slow-out, arcs and squash and stretch that keeps the area constant. Xsheet exposure on ones, twos or threes. Blinks and lip sync from text.
🦘 Principles built inanimate_action adds anticipation, overshoot and settle using classic proportions. Physics tools do gravity-exact bounces (with material presets), recipe jumps, and spring-based follow-through for hair, tails and cloth.
🧍 Real human bodies that walk and runbuild_character makes a side-view cut-out rig for any age and sex (toddler, girl, boy, teen, woman, man, old woman, old man) from published body measurements, optionally with regional averages from national health surveys (for example the US, India, West Bengal, Japan, the UK or Nigeria). walk_cycle and run_cycle animate it from gait studies: planted feet that roll heel to toe, two-bone leg IK, an inverted-pendulum walk and a spring-mass run with exact gravity in the air. Each call reports cadence, step length, knee angles and foot slip so you can check the motion.
🎬 Studio looksapply_look adds a ghibli, klaus, spider_verse, comic, anime_satsuei, painterly or cartoon_saloon look as real OpenToonz fx nodes (bloom, form shadow and rim light, offset colour plates, grain). They stay editable in the FX Schematic, and remove_look takes them out cleanly.
🎥 Camera workPans with parallax layers, exponential trucks, impact and trauma shake, and a smoothed camera follow. It warns before a move reveals empty background or pans fast enough to strobe.
🖼️ Bring your own artImport SVG files as editable shapes. Place images, or let OpenToonz's own vectorizer trace them into vector levels. Build a reusable parts library (model sheets with variants such as mouth charts).
🔁 Works with your hand editsThe scene file is the source of truth. Retime or redraw in OpenToonz, save, and the assistant picks up your changes instead of overwriting them.
🛡️ Safe by designEvery edit takes a snapshot first. Failed calls roll back automatically. undo restores scenes and drawings exactly, writes are verified before they land, and per-scene locks protect against concurrent writers.
🧠 Remembers and improvesIt keeps notes and a journal per scene. Errors, render reviews and your feedback become ranked lessons that later sessions see, and tune_style makes preferred defaults permanent.

Requirements

  • OpenToonz 1.8 on Windows. The server auto-detects the install and the "stuff" folder from OpenToonz's registry entries.
  • Python 3.10+.
  • ffmpeg on PATH for MP4 and GIF output (PNG sequences work without it).

Install

bash
pip install opentoonz-mcp# or run without installing:uvx opentoonz-mcp

Use pip 26.2.2+ or uv 0.13.4+. Older versions still trust the emSign certificate authority that was pulled after the October 2026 eMudhra incident. Upgrade first with python -m pip install --upgrade pip certifi or UV_SYSTEM_CERTS=true uv self update. The package itself requires certifi>=2026.10.19.

Claude Code

bash
claude mcp add opentoonz -- uvx opentoonz-mcp

Claude Desktop, Cursor and other MCP clients

json
{  "mcpServers": {    "opentoonz": {      "command": "uvx",      "args": ["opentoonz-mcp"],      "env": {        "OPENTOONZ_HOME": "C:\\Program Files\\OpenToonz",        "OPENTOONZ_STUFF": "C:\\OpenToonz stuff"      }    }  }}

The env block is optional. Use it only if auto-detection picks the wrong install.

VariableMeaningDefault
OPENTOONZ_HOMEFolder containing OpenToonz.exe and tcomposer.exedetected from the Windows uninstall entry, then C:\Program Files\OpenToonz
OPENTOONZ_STUFFOpenToonz "stuff" folder (TOONZROOT)detected from HKLM\SOFTWARE\OpenToonz\OpenToonz
OTMCP_WORKWhere state, undo snapshots, renders and lessons are kept%LOCALAPPDATA%\opentoonz-mcp

Ask the assistant to run opentoonz_info first. It reports what it found and anything missing.

Try it

Create a 4-second anime-style scene of a round mochi character on a hill. It blinks, crouches, jumps and lands with squash and stretch while the camera pans right with parallax. Then render an MP4.

Import my sketch C:\art\pose.png on a traced layer with centerline tracing, then in-between it to the next key on twos.

Build an old woman and a seven-year-old girl, and have them walk across the frame together.

Open the scene in OpenToonz. I'll fix the arm on frame 12. … Done: carry on from frame 13.

A good session looks like a studio pipeline:

  1. scene_context (always first)
  2. create_scene
  3. add_note (story)
  4. Layout: layers, pegs and camera
  5. Key drawings, then inbetween and timing
  6. set_pivot, then keys, animate_action and physics (or build_character and walk_cycle for people)
  7. camera_move, then apply_look for a studio finish
  8. validate_scene, contact_sheet, render

The full list of 52 tools with every parameter is in docs/TOOLS.md.

How it works

assistant ──MCP──► opentoonz-mcp ──► .tnz scene (edited in place, lossless)                         │                         ├─► SVG drawings ──► OpenToonz.exe (headless script) ──► native .pli ──► pen pressure                         ├─► images ───────► OpenToonz vectorizer ───────────────► traced .pli                         └─► tcomposer.exe (OpenToonz's renderer) ──► PNG ──► ffmpeg ──► MP4 / GIF

Everything that touches OpenToonz data is checked against OpenToonz itself. The keyframe interpolation, for example, is a port of OpenToonz's evaluator, and tests compare it frame by frame with real tcomposer renders (within 1.5 px).

The details are in docs/WHITEPAPER.md, docs/ARCHITECTURE.md and docs/FORMAT_NOTES.md.

Limitations

  • Windows first. It is developed and tested on Windows with OpenToonz 1.8. Other platforms may work with OPENTOONZ_HOME set, but they are untested.
  • Drawing comes from shapes, paths, brush strokes and imported art. There is no built-in image generator. Bring your own art, or have the assistant compose it from paths and parts.
  • Redrawing replaces your edits on that layer. If you redraw, in the GUI, a layer the assistant drew, the assistant won't overwrite it unless told to (force=true).
  • Render tests need a local OpenToonz. CI runs the unit tests only.

Contributing

Issues and pull requests are welcome. See CONTRIBUTING.md. Changes are recorded in CHANGELOG.md.

Credits

  • Built by konkomaji.
  • Powered by OpenToonz (BSD-3-Clause), which is not bundled. Thank you to DWANGO, the original Toonz team at Digital Video, Studio Ghibli, and every OpenToonz contributor. See NOTICE.
  • This project is not affiliated with OpenToonz, DWANGO, Digital Video or Studio Ghibli.

Released under the MIT License.

Source: README.md at commit fa476c8

Tools

52

opentoonz_info

Install paths, version, scenes, and whether the OpenToonz GUI is running.

Takes no parameters.

scene_context

CALL FIRST. Full current state of a scene from disk: settings, layers, timing, keyframes, outside (GUI) changes detected, notes/memory, recent journal, warnings.

Parametersscenerequired

add_note

Save a memory note for this scene (story, character design, decisions, todo). Shown in scene_context.

Parametersnoterequiredscenerequired

get_journal

Operation history of a scene (every MCP action, outside edits detected, errors).

Parameterslastscenerequired

style_guide

Studio animation rules (Ghibli/Disney/anime practice) with numbers: timing, spacing, squash, line weight, shading, camera. topic: 'rules' (numbered defaults) | 'full' | 'styles'.

Parameterstopic

undo

Restore the scene (and any overwritten vector levels) to the state before the last N MCP writes.

Parametersscenerequiredsteps

create_scene

Create a scene in the OpenToonz sandbox project. style: anime | feature | cartoon | sketch | clean (line weight, wobble, taper, default timing).

Parametersfpsnamerequiredstylewidthframesheightbg_coloroverwrite

import_scene

Bring an existing OpenToonz .tnz (made in the GUI) under MCP control. Copies it into the sandbox scenes folder if it is elsewhere. Its columns appear as 'foreign_columns' you can key/retime. A scene the MCP already manages is refused unless overwrite=true (its MCP layer data is reset).

Parametersnamepathrequiredoverwrite

set_scene_settings

Change scene length (frames), fps, background colour, or default drawing style.

Parametersfpsscenerequiredstyleframesbg_color

add_layer

Add a column with its own drawing level. Later layers are drawn ON TOP. mode: 'vector' (native OpenToonz vector .pli, editable in GUI, pressure lines) | 'raster' (PNG). style: override scene style for this layer (e.g. 'clean' for BG, 'sketch' for effects). parent: 'Table', a peg or another layer. boil: hand-drawn line boil on held drawings.

Parametersboilmodelayerrequiredscenerequiredstyleparent

add_peg

Add a pegbar (invisible transform node). Parent layers to it to move groups (character rigs, BG sets).

Parameterspegrequiredscenerequiredparent

set_parent

Re-parent a layer or peg to 'Table', a peg, or another layer.

Parametersscenerequiredparentrequiredtargetrequired

set_layer

Layer properties: visible, opacity (0-1, renders), boil, style (needs redraw), timing 'auto'|'manual'.

Parametersboillayerrequiredscenerequiredstyletimingopacityvisible

delete_layer

Delete a layer (column, level, drawings). Undo-able.

Parameterslayerrequiredscenerequired

draw

Draw drawing #frame on a layer (held until the next drawing when timing is auto). Shapes (canvas px, origin top-left), painted in order: circle{x,y,r} ellipse{x,y,rx,ry,rotation} rect{x,y,w,h,radius,rotation} (x,y=top-left) polygon{points,smooth} path{points,smooth=true,closed} text{x,y,text,size,anchor='mm'} svgpath{d:'M.. C.. A.. Z', transform?} - any SVG path data (detailed art: hair, hands, folds) brush{points:[[x,y,pressure 0-1],...], width:px max, color} - inked stroke with per-point pressure Paint/ink: fill, stroke, stroke_width (px; default from style), opacity, interior=true (thinner interior line), trace_line=true (iro-tore coloured line), shadow=true|{light:deg,depth:px,color} (anime cel shadow; light 90=top, 135=top-left), or shadow={style:'hatch', spacing:px, angle:deg, cross:true, gradient:0-1, jitter:0-1, width:px} for pen hatching of the shadow side (real ink strokes), human=false (perfect geometry), wobble (px). Colours: '#rrggbb', css names or [r,g,b,a].

Parametersforceframerequiredlayerrequiredscenerequiredshapesrequired

draw_many

Batch draw: drawings=[{"frame": n, "shapes": [...]}, ...]. Use for frame-by-frame animation.

Parametersforcelayerrequiredscenerequireddrawingsrequired

inbetween

Generate in-betweens (douga) between two key drawings (genga). start/end_shapes default to the drawings already on start_frame/end_frame. easing: slow_in_out (studio chart) | snappy | linear | in | out | bounce | elastic | back. step: 1 ones, 2 twos, 3 threes (default: style timing, anime=3, feature=2). arc: bow of the travel path (0.15 = natural arc). squash: 0-1 stretch round shapes along motion. Studio rule: only auto-inbetween 'tight' moves (rotation<=30deg, scale change<=25%); add a breakdown key otherwise.

Parametersarcstepforcelayerrequiredscenerequiredeasingsquashend_framerequiredend_shapesstart_framerequiredstart_shapes

set_exposure

Xsheet timing for a layer (sets timing=manual). cells[i] = drawing at frame i+1 (0 = blank), or run-length text '1x6 2x6 3x4 0x2' (drawing x frames). Cycle example on twos: '1x2 2x2 3x2 4x2 1x2 ...'.

Parameterscellsrequiredlayerrequiredscenerequired

set_keyframe

Keyframe a layer, peg, or 'camera' (real OpenToonz keys, editable in GUI Function Editor). x/y: px offset from rest (+y down). rotation: deg CCW. scale*: 1.0=100%. z: depth. interp (segment starting at this key): ease | linear | constant | speed | exp. Camera: scale<1 zooms IN; use exp interp for trucks (natural zoom).

Parametersxyzframerequiredscalescenerequiredinterptargetrequiredscale_xscale_yrotation

set_pivot

Set the rotation/scale pivot of a layer or peg without moving it (OpenToonz 'center'). x,y: canvas px. x='auto': from the layer's drawing bounds; anchor 'bottom' (feet - use for squash on the ground) | 'center' | 'top'. Do this BEFORE squash/stretch or rotation keys.

Parametersxyscenerequiredanchortargetrequired

clear_keyframes

Remove keys from a target (optionally one param: x,y,rotation,scale,scale_x,scale_y,z; optional frame range).

Parametersendparamscenerequiredstarttargetrequired

animate_action

Move a layer/peg/camera with animation principles baked in (Illusion of Life numbers): anticipation (opposite move, 15% amplitude, 25% of duration, min 3f), main move with slow-in/out, overshoot (10% past target) and damped settle (x0.45 swing) over settle_frames AFTER 'end'. to/from_: {x,y,rotation,scale,scale_x,scale_y} (px/deg/factor). from_ defaults to current value at start.

Parameterstorequiredendrequiredfrom_scenerequiredstartrequiredeasingtargetrequiredovershootanticipationsettle_frames

camera_move

Camera work (satsuei): kind='pan': move view by dx,dy px from start..end (eased 8f). parallax={layer: ratio} makes layers move at ratio of camera speed (sky 0.05, far BG 0.3, mid 0.6, char 1.0, FG 1.8). kind='truck': zoom to 'zoom' scale (0.75 = push in 25%) with exponential interpolation. kind='shake': impact shake starting at 'start', strength px (8 default), decays x0.7/frame on ones.

Parametersdxdyendkindrequiredzoomscenerequiredstartrequiredparallaxstrength

import_image

Bring a picture (sketch, scanned drawing, painting, photo, AI image) into a layer. Raster layer (mode 'raster'): the image is placed as-is. Traced layer (add_layer mode='traced'): OpenToonz's own vectorizer turns it into editable vector strokes and fills on compile. trace: set the traced layer's method once: 'outline' (colour regions) | 'centerline' (ink lines). box [x,y,w,h] px (default whole canvas); fit contain | cover | stretch | none.

Parametersboxfitpathrequiredframelayerrequiredscenerequiredtraceaccuracythresholdmax_colorsdespeckling

import_svg

Import an SVG file (Inkscape/Illustrator/free assets) as editable vector shapes on a drawing. Every path becomes an 'svgpath' shape you can tween, recolour or humanize (human=true adds the hand-drawn wobble/pressure of the layer style). box [x,y,w,h] fits the art (default whole canvas).

Parametersboxpathrequiredforceframehumanlayerrequiredscenerequired

save_part

Save a reusable part to the global model-sheet library (head, eye, hand, mouth chart, prop). shapes use the part's own coordinates; anchor [x,y] is its attachment/pivot point. variants: alternative drawings by name, e.g. {"closed": [...], "A": [...], "O": [...]}. Use in any drawing as {"type":"part","name":..,"variant":..,"x","y","scale","rotation","flip"}.

Parametersnamerequirednotesanchorshapesrequiredvariants

list_parts

Parts in the model-sheet library with their variants.

Takes no parameters.

physics_bounce

Physically exact bouncing (gravity parabolas, coefficient of restitution) on a layer/peg. The drawing must rest on the ground line; y offsets go UP from there. height px. fall_frames: frames for the first drop (default: real gravity for a 1.7 m character = 1080 px tall, i.e. 14.1*sqrt(height/1080)). material: rubber_ball | table_tennis | basketball | tennis | soft_rubber | bowling | balloon (sets restitution and squash). travel_x: px moved over the whole bounce, slowing with each contact. squash: area-preserving contact squash (set_pivot at the feet first).

Parametersscenerequiredstartrequiredheightrequiredsquashtargetrequiredbouncesmaterialtravel_xfall_framesstart_on_ground

physics_jump

Recipe jump on a layer/peg: anticipation crouch -> takeoff stretch -> exact parabola -> landing squash -> recovery. style: realistic | feature | cartoon (crouch depth, stretch and squash amounts). air_frames default: real gravity for the scene height (1.7 m character = frame height).

Parametersscenerequiredstartrequiredstyleheightrequiredtargetrequiredair_frames

follow_through

Overlapping action / follow-through from a damped spring (second-order system). The target reacts to the driver's motion (driver's `param`, exact OpenToonz values). mode 'follow': target_param = spring(driver) (a separate object trailing the driver). mode 'offset': target_param = gain * (spring(driver) - driver) (a part PARENTED to the driver: hair, ears, tail, cloth; use target_param='rotation' with gain in deg per px for a swing). frequency Hz (hair 2-2.5, ears 3, belly 4-5, cape 1.2), damping 0.25-0.5 (overshoot 15-45%), response < 0 anticipates. Keep frequency <= 4 Hz on ones, <= 2.5 Hz on twos (aliasing).

Parametersendrequiredgainmodeparamscenerequiredstartrequireddriverrequiredtargetrequireddampingresponsefrequencytarget_param

camera_follow

Follow a layer/peg with the camera using critically damped smoothing (game-camera SmoothDamp). smooth_time in frames (7 = 0.3 s); axis x | y | xy; offset px added to the followed position.

Parametersendrequiredaxisscenerequiredstartrequiredoffsettargetrequiredsmooth_time

lip_sync

Animate a mouth from text (no audio): each mouth shape is a VARIANT of a library part (anime3: closed/half/open; blair: AI E O U WQ MBP FV L etc rest). Draws one drawing per shape on the layer and writes the xsheet from `start` (2-frame minimum holds). Shift `start` 2 frames earlier than the audio (mouths lead sound).

Parametersxrequiredyrequiredpartrequiredtextrequiredchartlayerrequiredscalescenerequiredstartrequiredframes_per_syllable

anatomy_reference

Body proportions for drawing a person, from anthropometric data (Drillis-Contini segment lengths, de Leva masses, CDC/NHANES stature, growth-standard head ratios). person: baby | toddler | boy | girl | child | teen | teen_boy | teen_girl | young_man | young_woman | man | woman | old_man | old_woman (or give age years / label and sex). Returns heights from the floor, segment lengths, front widths, side depths (px), heads tall, mass fractions, centre of mass, notes. Scale: height_px, or px_per_m (340 = 1.75 m adult about 600 px; keep one px_per_m per scene). region (list_regions): population averages from national health surveys (stature, leg length via sitting-height ratio); bmi: a number, or 'average' for the region's surveyed mean (default: a neutral build). Averages only: individuals vary far more than regions do.

Parametersagebmisexpersonregionpx_per_mheight_px

list_regions

Regions with surveyed body averages for anatomy_reference / build_character (region=...).

Takes no parameters.

build_character

Build a side-view cut-out character rig with real proportions for the age and sex. Creates a root peg '<name>' at the hips and 16 vector layers '<name>_<part>' (torso, head, upper arm, forearm, hand, thigh, shin, foot, toe; far side darker and behind), parented like a skeleton with each pivot on its joint. Animate it with walk_cycle / run_cycle, or key the parts directly (rotation on a part turns it about its joint). x: hip x px (default centre); ground_y: floor line px (default 90% of the frame). hair: short | long | bob | ponytail | bun | none. colors: {skin, hair, top, bottom, shoes, line}. region / bmi: as in anatomy_reference (population averages; faces and heads are never varied by region). Every layer stays an editable vector level.

Parametersxagebmisexhairnamerequiredscenerequiredstylecolorsfacingpersonregion+2 more

walk_cycle

Walk a build_character rig with biomechanically correct timing for its age and sex. Feet stay planted and roll heel -> flat -> ball -> toe; legs use two-bone IK; the hips ride an inverted-pendulum arc (low at contact, high at passing); arms swing opposite the legs. Defaults come from gait studies (e.g. adult man 108 steps/min at 1.4 m/s; toddler 154 at 0.86; old age shorter steps). speed m/s, cadence steps/min override them. cycles (default 2) or end. travel=false walks in place (pan the BG). on=2 holds every pose 2 frames (keys become constant). bounce, arm_swing scale the motion (1 = natural; >1 = cartoon); lean adds forward trunk lean (deg). mood (Williams beat chart and character walks): natural | brisk | stroll (16 frames a step) | tired (20, head down, low clearance) | proud (chest out) | happy (double bounce) | sneak (crouched, 24 frames) | heavy (long contact, deep down) | cartoon (8 frames). speed/cadence still override. Returns the self-check: cadence, step length, vertical oscillation, knee flexion, foot slip.

Parametersonendleanmoodphasescenerequiredspeedstartbouncecyclestravelcadence+2 more

run_cycle

Run a build_character rig: spring-mass physics (exact gravity in the flight phase, a spring arc in contact, lowest at mid-stance), planted feet, high knee recovery, bent arms. Defaults by age and sex from jogging norms (adult man about 166 steps/min at 3.3 m/s). Same options as walk_cycle; bounce=1 keeps gravity exact.

Parametersonendleanphasescenerequiredspeedstartbouncecyclestravelcadencearm_swing+1 more

compile_vectors

Convert pending vector drawings to native OpenToonz .pli levels with pen-pressure lines. Runs automatically before preview/render/open. force=true also overwrites GUI-edited levels.

Parametersforcescenerequired

preview_frame

Render one frame through OpenToonz and return the image (check your work visually).

Parametersframescenerequiredmax_width

contact_sheet

Render several frames into one labelled grid (default 6 spread over the scene) to review motion.

Parametersscenerequiredframesthumb_width

render

Render with OpenToonz (tcomposer), then double-check: frame count, blank frames, flashing. format: mp4 | gif | png (sequence). shrink 2 = half size (faster drafts).

Parametersendscenerequiredstartformatshrink

open_in_opentoonz

Open the scene in the OpenToonz GUI for hand editing (vector levels compiled first). After editing: SAVE in OpenToonz, then the MCP picks up your changes automatically.

Parametersscenerequired

validate_scene

Double-check a scene: structure, missing files, layer/column mapping, timing gaps, studio rule warnings (holds, pan speed), and optionally a 1-frame test render.

Parametersscenerequiredrender_test

learn_lesson

Record an insight from reviewing your own output (e.g. 'squash 0.8 looks rubbery; 0.4 reads better for a heavy ball'). Lessons are shown in every later scene_context so future work improves.

Parameterstagsscenelessonrequired

feedback

Store the USER's rating (1-5) and comment about a result. Ranked highest in lessons/preferences. Ask the user for this after showing a render.

Parametersscenerequiredratingrequiredcomment

tune_style

Permanently adjust a style preset's defaults (learned from feedback). Keys: line, interior, wobble, wavelength, taper_start, taper_end, min_ratio, pressure_var, loop_var, exposure, squash [lo,hi], shadow, overshoot_ends. Applies to all future drawings using that style.

Parametersstylerequiredreasonrequiredchangesrequired

knowledge

Search accumulated lessons (errors seen, quality issues, insights, user preferences) with advice.

Parameterslimitquery

list_scenes

Scenes known to the MCP.

Takes no parameters.

list_looks

Studio looks apply_look can build from real OpenToonz fx, with what each does.

Takes no parameters.

apply_look

Give the scene a studio look made of real OpenToonz fx nodes (open the FX Schematic to tweak them). look: ghibli | klaus | spider_verse | comic | anime_satsuei | painterly | cartoon_saloon (list_looks). Whole-frame fx go just before the output; per-layer fx (e.g. Klaus form shadow and rim light) go on `layers` (default: every layer except ones named like bg/background/sky). strength scales the amounts (0.5 subtle, 1 default, 1.5 strong). light_angle: degrees, 90 = light from above, 135 = top-left. Re-applying replaces the previous look; fx you made by hand are kept.

Parameterslookrequiredscenerequiredlayersstrengthlight_angle

remove_look

Remove the fx apply_look added (fx you made in OpenToonz stay).

Parametersscenerequired

Version history

1
  1. v0.1.0LatestOct 22, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts