Pencil2D Model Context Protocol (MCP) Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Pencil2D Model Context Protocol (MCP) Servermake a 1920x1080 24fps project named bounce.pclx"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Pencil2D Model Context Protocol (MCP) Server
An open-source Model Context Protocol (MCP) server and automation toolkit that empowers AI agents (Claude Desktop, Google Antigravity, Cursor, Cline, etc.) to programmatically create, inspect, edit, and render traditional 2D hand-drawn animations using Pencil2D.
โจ Features
โก Zero Heavyweight Runtime Dependencies: Pure Python implementation with standard library + Pillow.
๐ฌ Native Headless Rendering: Leverages Pencil2D AppImage CLI to render animations directly to MP4 (H.264), animated GIF, WebM, or PNG image sequences.
๐จ Complete Project (.pclx) Support: Read, construct, and modify native
.pclxarchives, layer structures (Bitmap, Vector, Sound, Camera, Palette), frame timings, and camera transformations.โก Batch Frame Operations: Import whole animations from directories or structured lists in a single operation.
๐ Sound & Audio Integration: Embed voiceovers and sound effects (WAV/MP3) directly into sound layers.
๐ฅ Dynamic Camera Controls: Keyframe camera pan (dx, dy), zoom (scale), and rotation angles.
๐ผ๏ธ Spritesheet Generator: Pack animated frames into game-ready spritesheet PNGs with coordinate metadata.
๐ฉบ Project Health & Validation: Sanity check
.pclxprojects for broken links, missing frame gaps, and XML errors.๐ฅ๏ธ Dual Execution Modes: Automated background pipelines or live visual GUI launching (
pencil2d_launch_gui).๐ Standard MCP Compatibility: Speaks JSON-RPC 2.0 over standard I/O (stdio transport).
Related MCP server: rev2d
๐ ๏ธ Complete MCP Toolset (14 Tools)
Every tool is exposed as a first-class AI tool over MCP:
Tool Name | Parameters | Description |
|
| Inspect a |
|
| Create a fresh, valid |
|
| Insert or replace an animation frame in a bitmap layer using an image file or base64 data. |
|
| Batch import multiple animation frames from a folder or list in a single call. |
|
| Add a new layer to the project timeline. |
|
| Delete a layer and its keyframes from the project. |
|
| Embed an audio track/clip (WAV/MP3) into a sound layer at a specific keyframe. |
|
| Keyframe camera pan, zoom, and rotation angle at any frame. |
|
| Add or update a color swatch in the project palette. |
|
| Pack animated frames into a sprite sheet with coordinate grid metadata. |
|
| Deep project integrity test checking XML syntax, asset references, and frame continuity. |
|
| Unpack all PNG frames from a |
|
| Headlessly render an animation project to video (MP4), animated GIF, WebM, or PNG sequence. |
|
| Open the project in the visual Pencil2D GUI for interactive editing. |
๐ Installation
Option 1: From PyPI
pip install pencil2d-mcpOption 2: From Source
git clone https://github.com/chriz-3656/pencil2d-mcp.git
cd pencil2d-mcp
pip install -e .Pencil2D Executable Prerequisite
Download the official Pencil2D Linux AppImage (v0.7.2 or newer) and make it executable:
chmod +x ~/Downloads/pencil2d-linux-amd64-v0.7.2.AppImageโ๏ธ Client Configuration
1. Google Antigravity (~/.gemini/config/mcp_config.json)
{
"mcpServers": {
"pencil2d": {
"command": "python3",
"args": ["-m", "pencil2d_mcp", "serve"],
"env": {
"PYTHONPATH": "/home/demo/pencil2d-mcp/src",
"PENCIL2D_APPIMAGE": "/home/demo/Downloads/pencil2d-linux-amd64-v0.7.2.AppImage",
"DISPLAY": ":0.0"
}
}
}
}2. Claude Desktop (claude_desktop_config.json)
{
"mcpServers": {
"pencil2d": {
"command": "python3",
"args": ["-m", "pencil2d_mcp", "serve"],
"env": {
"PENCIL2D_APPIMAGE": "/path/to/pencil2d-linux-amd64-v0.7.2.AppImage"
}
}
}
}3. Cursor / Cline / Roo-Code
{
"mcpServers": {
"pencil2d": {
"command": "pencil2d-mcp",
"args": ["serve"]
}
}
}๐ป CLI Usage
# Verify system setup, AppImage detection, and display
pencil2d-mcp check
# Inspect a .pclx project
pencil2d-mcp inspect animation.pclx
# Headlessly export animation to MP4 or GIF
pencil2d-mcp export animation.pclx -o output.mp4
pencil2d-mcp export animation.pclx -o preview.gif --width 800 --height 600
# Open project in GUI
pencil2d-mcp gui animation.pclx
# Start the MCP stdio server manually
pencil2d-mcp serve๐งช Testing
python -m unittest discover tests๐ License
Distributed under the MIT License. See LICENSE for details.
Maintained with โค๏ธ by chriz-3656.
Available Tools
14 toolspencil2d_add_audioC
Attach a sound clip (WAV/MP3) to a sound layer at a specific keyframe in the animation.
| Name | Required | Description | Default |
|---|---|---|---|
| frame | No | Keyframe number where audio starts playing (default 1). | |
| audio_path | Yes | Path to audio file (.wav, .mp3) to embed. | |
| layer_name | No | Sound layer name (default 'Sound Layer'). | |
| project_path | Yes | Path to the .pclx file. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, yet it does not disclose whether the .pclx is saved/mutated on disk, what happens if the named sound layer does not exist, whether audio is embedded vs referenced, or any error behavior. Only the media format constraint (WAV/MP3) is added, which is minimal for an unannotated write-style operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single well-formed sentence with the core action front-loaded and no filler. It is efficiently sized, though it leaves little room for the behavioral detail an unannotated tool needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter mutation tool with no annotations and no output schema, the definition covers the 'what' and the media formats but omits persistence behavior, layer-existence assumptions, and return/error semantics. The rich schema compensates partially, leaving it adequate but incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all four parameters (including defaults for frame and layer_name) are already documented in the schema. The description restates the keyframe and sound-layer concepts but adds no syntax, constraints, or format detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Attach') and resource ('sound clip') with the target ('sound layer at a specific keyframe'), so the action is unambiguous. It implicitly distinguishes itself from siblings since it is the only audio-related tool, but it never names or contrasts with any sibling to reinforce that.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus alternatives, no prerequisites (e.g., must a sound layer already exist?), and no exclusions. The agent must infer the entire usage context from the verb alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pencil2d_add_frameC
Add or replace a keyframe image in a Pencil2D project bitmap layer.
| Name | Required | Description | Default |
|---|---|---|---|
| frame | Yes | Keyframe number (1-based index). | |
| image_path | No | Absolute path to a PNG/JPEG image file to insert. | |
| layer_name | No | Name or ID of the bitmap layer (defaults to first bitmap layer). | |
| top_left_x | No | Canvas X offset (default centers image: -width/2). | |
| top_left_y | No | Canvas Y offset (default centers image: -height/2). | |
| base64_data | No | Optional base64-encoded image data (if image_path is not used). | |
| project_path | Yes | Path to the .pclx file. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does disclose that this can 'replace' an existing keyframe, which is useful, but it does not explain overwrite effects, permissions or project-state requirements, whether the project must be saved or closed, or what happens to an existing image at that frame.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. It is efficient, though the terseness leaves important behavioral context unstated rather than wasting words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a seven-parameter mutation tool with no annotations and no output schema, the description is too thin. It does not cover overwrite semantics, project state expectations, layer requirements, or how the tool relates to batch insertion alternatives.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented in the input schema. The description adds no parameter-level meaning beyond the schema, and the baseline score of 3 is appropriate when the schema fully documents the parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Add or replace a keyframe image' in a 'Pencil2D project bitmap layer.' This is clear enough to distinguish it from inspection or export tools, though it does not explicitly call out how it differs from sibling `pencil2d_add_frames_batch`.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance, no prerequisites, and no alternatives. It does not say when to choose this over `pencil2d_add_frames_batch` for adding multiple frames, nor does it mention that a bitmap layer must already exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pencil2d_add_frames_batchB
Batch insert multiple animation keyframes into a project from a list or directory in a single operation.
| Name | Required | Description | Default |
|---|---|---|---|
| step | No | Step interval between frames (default 1). | |
| frames | No | List of keyframe objects to insert. | |
| layer_name | No | Target layer name when importing from directory. | |
| start_frame | No | Starting frame index when importing from directory (default 1). | |
| project_path | Yes | Path to the .pclx file. | |
| directory_path | No | Optional directory containing image frames to import in sorted order. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and falls well short. 'In a single operation' hints at batching but doesn't state atomicity, whether existing keyframes at those indices are overwritten, whether the .pclx must already exist, or what happens on partial failure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, correctly leading with the batch verb and the two input sources. It is efficient, though its brevity is also the source of the behavioral gaps.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter mutation tool with no annotations and no output schema, the description leaves the agent without mutation semantics (overwrite behavior, ordering, failure handling) or any indication of what is returned. Rich schema coverage offsets this only partially.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all six parameters including the nested frame object fields are documented in the schema; baseline 3 applies. The description adds only the high-level list-vs-directory framing and no syntax, format, or precedence details beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('batch insert'), resource ('multiple animation keyframes'), and dual source modes ('from a list or directory'), which distinguishes it from the singular sibling pencil2d_add_frame. It stops short of naming that sibling explicitly, but the 'batch' framing makes the distinction inferable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the word 'batch' versus the singular pencil2d_add_frame sibling; there is no explicit when-to-use, when-not-to-use, or named alternative. The two source modes (list vs directory) are mentioned but not explained as a decision the caller must make.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pencil2d_add_layerC
Add a new layer (bitmap, vector, sound, or camera) to a Pencil2D project.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name for the new layer. | |
| visible | No | Initial layer visibility (default true). | |
| layer_type | No | Type of layer to create (default 'bitmap'). | |
| project_path | Yes | Path to the .pclx file. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It never says that this mutates and writes the .pclx file on disk, whether changes are persisted immediately, where the new layer is inserted in the stack, or what happens on duplicate names or a missing project file.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, and the enumerated types are the most useful part. It is efficiently written, though its brevity is partly a symptom of the missing behavioral detail noted elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with zero annotations and no output schema, the description should cover preconditions, persistence, and at least a hint of the return value (e.g. the created layer's index). None of that is present, so an agent cannot call it confidently without trial and error.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented, including the layer_type enum and the visibility default. The description restates the enum values but adds no extra semantics such as naming constraints or whether layer order is controllable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (add a layer) plus the four valid layer types, so the agent knows exactly what is created. It does not name or contrast with any sibling such as pencil2d_add_frame or pencil2d_remove_layer, leaving that inference to the agent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus pencil2d_add_frame, pencil2d_add_frames_batch, or pencil2d_add_audio, and no stated preconditions (e.g. that the .pclx project must already exist). The agent must guess at the workflow ordering.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pencil2d_createB
Create a new blank Pencil2D project (.pclx) with specified canvas resolution, FPS, and layers.
| Name | Required | Description | Default |
|---|---|---|---|
| fps | No | Animation playback frames per second (default 12). | |
| width | No | Canvas width in pixels (default 800). | |
| height | No | Canvas height in pixels (default 600). | |
| layer_names | No | Names of initial bitmap layers to create (default ['Drawing Layer']). | |
| project_path | Yes | Output path for the new .pclx file. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden. It usefully signals that the result is a 'blank' project in .pclx format, but it says nothing about overwrite behavior if project_path exists, whether directories are auto-created, what file system permissions are needed, or what happens on failure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the core action and the configurable surface are both stated immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a file-creating mutation tool with no annotations and no output schema, the description leaves out what the call returns (e.g., the created path or a project handle) and the overwrite semantics. The parameter surface itself is fully covered by the schema, so the remaining gaps are moderate rather than severe.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so defaults for fps, width, height, and layer_names are already documented in the schema. The description mirrors those fields (resolution, FPS, layers) without adding format details such as typical aspect ratios or valid FPS ranges, so it sits at the baseline for a fully documented schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Create') and a precise resource ('new blank Pencil2D project (.pclx)') and names the configurable dimensions (resolution, FPS, layers), so an agent immediately knows what the tool produces. It stops short of explicitly distinguishing itself from siblings like pencil2d_launch_gui or pencil2d_add_layer, which is why it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus alternatives (e.g., creating a project before adding frames/layers, or launching the GUI instead). No preconditions are stated either, such as whether project_path must not already exist or whether parent directories are created.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pencil2d_create_spritesheetB
Pack animation frames from a Pencil2D project into a single spritesheet image with grid metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| columns | No | Number of columns in spritesheet grid (default: horizontal strip). | |
| layer_name | No | Layer to pack into spritesheet (default: first bitmap layer). | |
| output_image | Yes | Destination PNG path for the spritesheet. | |
| project_path | Yes | Path to the .pclx file. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry behavioral disclosure. It notes the output is a single spritesheet image with grid metadata, but omits whether an existing output file is overwritten, what permissions are needed, whether the project is modified, and what the tool returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It states the action, source, and output immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The high schema coverage covers parameter meaning, and the description identifies the output artifact. However, with no annotations and no output schema, it leaves out behavioral details such as overwrite semantics and return information that would help an agent invoke it safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and all four parameters have descriptions, including defaults for columns and layer_name. The description adds no parameter detail beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Pack') and resource ('animation frames from a Pencil2D project') and states the output ('single spritesheet image with grid metadata'), distinguishing it from frame extraction or general export. It does not explicitly name the sibling alternatives it differs from, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance is provided, and no alternative sibling is named. The purpose implies spritesheet creation, but an agent must infer when to choose this over pencil2d_extract_frames or pencil2d_export.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pencil2d_exportC
Render a Pencil2D animation project to video (MP4), animated GIF, or image sequence using the Pencil2D AppImage CLI.
| Name | Required | Description | Default |
|---|---|---|---|
| width | No | Optional output width in pixels. | |
| camera | No | Name of camera layer to use. | |
| height | No | Optional output height in pixels. | |
| end_frame | No | Last frame to include in export. | |
| output_path | Yes | Output rendered file (e.g., animation.mp4, preview.gif, frames.png). | |
| start_frame | No | First frame to include in export. | |
| project_path | Yes | Path to the .pclx file. | |
| transparency | No | Enable transparency when exporting images or formats that support it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It usefully discloses that rendering happens via the Pencil2D AppImage CLI, but says nothing about overwrite behavior for output_path, whether export is long-running/blocking, failure modes, or what is returned. For a file-writing tool with zero annotation coverage this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler that puts the action and output formats first. It is efficient, though arguably too terse for an 8-parameter export tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 8 parameters, no annotations, and no output schema, the description should cover overwrite semantics, format selection, and return behavior, but covers none of them. An agent knows what the tool does but not how to call it safely or what to expect back.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 8 parameters including start/end frame, camera, and transparency. The description adds no extra semantics (e.g., format inferred from output_path extension, default frame range) beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (render/export), resource (Pencil2D animation project) and the three concrete output formats (MP4, GIF, image sequence), which distinguishes it from siblings like pencil2d_extract_frames and pencil2d_create_spritesheet. It does not explicitly name those siblings, so routing is inferred rather than spelled out.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description never says when to use this versus pencil2d_extract_frames or pencil2d_create_spritesheet, nor does it state prerequisites (project must exist/validate, AppImage installed). Usage is only implied by the list of output formats.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pencil2d_extract_framesB
Extract all frame PNG images from a .pclx file into a target directory.
| Name | Required | Description | Default |
|---|---|---|---|
| output_dir | Yes | Directory where extracted frame images will be written. | |
| project_path | Yes | Path to the .pclx file. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral burden. It discloses that PNG files are written into the output directory, but omits important side-effect details such as overwrite behavior, whether the directory is created, file naming, and what happens on failure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. Every partโverb, resource, source file, and destinationโearns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity, two-parameter extraction tool, the description covers the core action and destination, and the schema fully documents both parameters. However, without annotations or an output schema, the lack of behavioral detail around file writing leaves clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already documents both parameters with clear descriptions. The description reinforces the mapping but adds no extra syntax or constraints beyond what the schema provides, which fits the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb ('Extract') and specific resource ('all frame PNG images from a .pclx file') with the destination ('target directory'). It is understandable without the schema, but it does not explicitly distinguish this from sibling tools like pencil2d_export or pencil2d_create_spritesheet.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit when-to-use guidance, prerequisites, or alternatives. An agent must infer usage from the purpose alone, and there is no indication of when to prefer this over pencil2d_export or pencil2d_create_spritesheet.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pencil2d_inspectA
Inspect a Pencil2D project (.pclx file), returning canvas resolution, FPS, keyframe counts, layers, and palette.
| Name | Required | Description | Default |
|---|---|---|---|
| project_path | Yes | Path to the .pclx Pencil2D project file. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'Inspect' implies a read-only operation and the listed return fields add useful behavioral context, but the description does not cover permissions, error cases (e.g., missing or malformed .pclx files), or whether any side effects occur.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is a single front-loaded sentence with no filler. The key action, file type, and return values all appear immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read tool with full schema coverage and no output schema, the description supplies the main return fields and enough context to call it correctly. Minor gaps remain around error behavior and explicit differentiation from pencil2d_validate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is only one parameter and the schema describes it fully ('Path to the .pclx Pencil2D project file.'). The description adds no syntax or format details beyond that schema coverage, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Inspect') and resource ('a Pencil2D project (.pclx file)') and enumerates the metadata returned. It is clearly a read/introspection tool among mutation-focused siblings like pencil2d_create and pencil2d_add_frame, though it does not explicitly name those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'returning canvas resolution, FPS, keyframe counts, layers, and palette' implies the tool is for reading project metadata. However, it does not state when to use this instead of pencil2d_validate or otherwise give explicit alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pencil2d_launch_guiB
Open a project (or a new workspace) inside the Pencil2D GUI for visual animation editing.
| Name | Required | Description | Default |
|---|---|---|---|
| project_path | No | Optional path to .pclx file to open in Pencil2D. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral burden. It reveals that a project or new workspace will be opened in the GUI, but omits important launch behavior such as whether it blocks, what happens if project_path is invalid, display/environment requirements, and whether it returns any handle or status.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted wording. It states the action and scope immediately, with a compact parenthetical covering the no-project case.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one optional parameter and no output schema, the description covers the basic action and default behavior adequately. However, because there are no annotations, it should disclose more about GUI launch side effects, environment expectations, or return behavior to be fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage and documents the single optional project_path parameter as a .pclx file. The description adds some meaning by implying that omitting the path opens a new workspace, but it does not add syntax or constraints beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: "Open a project (or a new workspace) inside the Pencil2D GUI." The "visual animation editing" phrase distinguishes it implicitly from sibling tools that inspect, create, export, or manipulate data programmatically, though it does not name those alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase "for visual animation editing" gives implied usage context, suggesting this tool is for GUI-based visual work. However, it does not explicitly state when to choose this over sibling tools such as pencil2d_inspect or pencil2d_create, nor does it provide exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pencil2d_manage_paletteC
Add or update a color swatch in the Pencil2D project palette.
| Name | Required | Description | Default |
|---|---|---|---|
| red | Yes | Red channel (0-255). | |
| blue | Yes | Blue channel (0-255). | |
| alpha | No | Alpha channel (0-255, default 255). | |
| green | Yes | Green channel (0-255). | |
| color_name | Yes | Name of the color swatch. | |
| project_path | Yes | Path to the .pclx file. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It reveals only that the operation mutates a palette swatch, without explaining whether an existing color_name is overwritten, whether the .pclx file is modified in place, what permissions are needed, or what the return behavior is.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It states the action and target immediately and is appropriately sized for a simple palette mutation tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter mutation tool with no annotations and no output schema, the description is too sparse. It omits the add-versus-update behavior, file mutation effects, and response/error behavior that an agent would need to invoke it safely and correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all six parameters, including red/green/blue/alpha ranges and project_path, are already documented in the schema. The description adds no parameter meaning beyond what the schema provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb pair, "Add or update," and a specific resource, "a color swatch in the Pencil2D project palette." It is clear what the tool does, but it does not distinguish its palette-management scope from siblings such as pencil2d_create or pencil2d_inspect beyond the word "palette."
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by saying it adds or updates palette swatches, but it gives no explicit when-to-use guidance, no prerequisites, and no alternatives. An agent must infer that this is the palette-editing tool rather than one of the many project/frame/layer tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pencil2d_remove_layerC
Remove a layer from a Pencil2D project by name or ID.
| Name | Required | Description | Default |
|---|---|---|---|
| project_path | Yes | Path to the .pclx file. | |
| layer_name_or_id | Yes | Name or integer ID of the layer to delete. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full behavioral burden. It does not disclose that deletion is destructive/irreversible, whether it removes contained frames, what happens if the layer is not found, or whether a save is required afterward.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero waste. It is efficient, though arguably too terse for a destructive mutation tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation with no annotations and no output schema, the description is insufficient. It omits safety warnings, preconditions, error handling, and post-operation state, leaving an agent unable to call it safely with confidence.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are documented in the schema. The description repeats the name-or-ID identification but adds no format, constraints, or error behavior beyond the schema, matching the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Remove) and resource (a layer) scoped to a Pencil2D project, and clarifies identification by name or ID. It implicitly contrasts with sibling add_layer, but does not explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus add_layer or other layer operations, no prerequisites (e.g., whether the project must be closed or the layer must be empty), and no exclusions. Usage is only inferable from the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pencil2d_set_cameraC
Configure camera keyframe positioning, panning (dx, dy), zooming (scale), and rotation angle.
| Name | Required | Description | Default |
|---|---|---|---|
| dx | No | Horizontal camera pan offset in pixels. | |
| dy | No | Vertical camera pan offset in pixels. | |
| frame | No | Frame number for the camera keyframe (default 1). | |
| scale | No | Camera zoom scale (1.0 = 100%, 1.5 = 150% zoom-in). | |
| rotation | No | Camera rotation angle in degrees. | |
| project_path | Yes | Path to the .pclx file. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It implies a write operation and mentions keyframe configuration, but does not disclose whether a keyframe must already exist, whether missing keyframes are created, permission requirements, or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. Every phrase maps directly to a configurable camera concept and the sentence is appropriately sized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations, six parameters, and no output schema, the description is too thin. It omits behavioral context such as keyframe creation behavior, required project state, and what happens on failure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents each parameter with units and defaults. The description reinforces panning for dx/dy, zooming for scale, and rotation angle, but adds no meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: "Configure camera keyframe positioning, panning... zooming... rotation angle." It is clearly distinct from siblings like pencil2d_add_frame or pencil2d_add_layer, though it does not explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states what can be configured but gives no guidance on when to use this tool versus alternatives or prerequisites. Usage is only implied by the action of configuring a camera keyframe.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pencil2d_validateB
Perform deep sanity and health validation on a Pencil2D project, verifying frame continuity, XML integrity, and asset health.
| Name | Required | Description | Default |
|---|---|---|---|
| project_path | Yes | Path to the .pclx file. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden. It discloses what is examined (frames, XML, assets) and 'sanity and health validation' implies a non-mutating operation, but it never states that the file is left unmodified, whether it can repair anything, or whether issues are thrown as errors or returned as a report.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the action and followed by the specific checks, with no filler. It is efficient, though the enumerated checks could be separated structurally for easier scanning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter validation tool with no output schema, the description should say what the agent gets back (a report of issues? a boolean?) and what happens when the project is invalid. Those gaps matter more here than for a mutation tool whose effects speak for themselves.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single required parameter and the schema already documents it at 100% coverage ('Path to the .pclx file'). The description adds no detail about path format, expected extension validation, or relative vs absolute paths, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (validate a Pencil2D project) and enumerates the checks performed: frame continuity, XML integrity, asset health. It is clearly distinct from mutation siblings like pencil2d_add_frame, but it never explicitly contrasts with pencil2d_inspect, which is the closest alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to run this versus pencil2d_inspect, or whether it should be a pre-export gate. The word 'deep' faintly implies a heavier check than a shallow inspect, but no condition, prerequisite, or exclusion is stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
14 tool updates
v0.2.0- First observed
pencil2d_add_audio - First observed
pencil2d_add_frame - First observed
pencil2d_add_frames_batch - First observed
pencil2d_add_layer - First observed
pencil2d_create - First observed
pencil2d_create_spritesheet - First observed
pencil2d_export - First observed
pencil2d_extract_frames - First observed
pencil2d_inspect - First observed
pencil2d_launch_gui - First observed
pencil2d_manage_palette - First observed
pencil2d_remove_layer - First observed
pencil2d_set_camera - First observed
pencil2d_validate
TDQS
Scored across 14 tools
Most tools have clearly distinct purposes (add_frame vs add_frames_batch, add_layer vs remove_layer, extract_frames vs export). The main potential confusion is inspect vs validate, but descriptions clarify that one returns metadata and the other performs deep health checks. Minor overlap remains between extract_frames and export image-sequence modes.
Every tool follows the strict pencil2d_verb_noun pattern with a uniform snake_case convention. Verbs are predictable (add, remove, create, inspect, validate, export) and the prefix is applied consistently. No mixed styles or vague names.
14 tools is well within the ideal range and each earns its place across inspection, creation, authoring, rendering, and validation. The single-purpose grouping (frames, layers, audio, camera, palette) avoids bloat.
The surface covers the lifecycle well: create, inspect, add content, validate, export, and open in GUI. However, there is no remove_frame or frame-editing deletion counterpart to add_frame, and no way to remove or edit audio/palette swatches beyond adding, so a few lifecycle gaps remain.
Maintenance
Related MCP Connectors
Create AI animations and export transparent sprite sheets, alpha video, frames, and game assets.
- tonpitOAuthcom.tonpit
Video production studio for AI agents: AI media, motion graphics as code, timeline and export.
Create 2D characters and animations, revise sprites, adjust timing and export assets via OAuth.
One sentence to a finished animation: your AI writes motion graphics as code and checks real frames.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables AI coding agents to create, draw, and refine Aseprite documents through deterministic canvas, layer, frame, tag, and palette tools, with pixel analyzers, style validation, and preview/diff visual feedback. It also supports spritesheet and animated GIF export, producing multi-layer game-ready assets.1MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to author, validate, render, measure, and fix 2D rigs and animations through 16 tools, returning results as images and providing a live editor bridge.14MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to create layered pixel-art sprites and animations, inspect pixels, and export images, spritesheets, GIFs, APNGs, and TrueType pixel fonts. Documents and edits stay local, accessible over stdio MCP or callable directly from a shell.22MIT
- AlicenseAqualityBmaintenanceEnables AI assistants to create and edit layers, set attributes and keyframes, wire connections, render PNG previews, and save scenes in the 2D procedural motion-design application through typed, validated tools.29MIT