Skip to main content
Glama
chriz-3656

Pencil2D Model Context Protocol (MCP) Server

by chriz-3656

Pencil2D Model Context Protocol (MCP) Server

License: MIT Python 3.8+ PyPI Website Maintainer

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 .pclx archives, 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 .pclx projects 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

pencil2d_inspect

project_path

Inspect a .pclx project file to inspect canvas resolution, framerate (FPS), total keyframes, layer breakdown, and color palette.

pencil2d_create

project_path, width, height, fps, layer_names

Create a fresh, valid .pclx project ready for drawing keyframes.

pencil2d_add_frame

project_path, frame, image_path / base64_data, layer_name, top_left_x, top_left_y

Insert or replace an animation frame in a bitmap layer using an image file or base64 data.

pencil2d_add_frames_batch

project_path, frames (list), directory_path (str), layer_name, start_frame, step

Batch import multiple animation frames from a folder or list in a single call.

pencil2d_add_layer

project_path, name, layer_type (bitmap, vector, sound, camera), visible

Add a new layer to the project timeline.

pencil2d_remove_layer

project_path, layer_name_or_id

Delete a layer and its keyframes from the project.

pencil2d_add_audio

project_path, audio_path, frame, layer_name

Embed an audio track/clip (WAV/MP3) into a sound layer at a specific keyframe.

pencil2d_set_camera

project_path, frame, dx, dy, scale, rotation

Keyframe camera pan, zoom, and rotation angle at any frame.

pencil2d_manage_palette

project_path, color_name, red, green, blue, alpha

Add or update a color swatch in the project palette.

pencil2d_create_spritesheet

project_path, output_image, layer_name, columns

Pack animated frames into a sprite sheet with coordinate grid metadata.

pencil2d_validate

project_path

Deep project integrity test checking XML syntax, asset references, and frame continuity.

pencil2d_extract_frames

project_path, output_dir

Unpack all PNG frames from a .pclx file into a directory for AI inspection or external editing.

pencil2d_export

project_path, output_path, width, height, start_frame, end_frame, transparency, camera

Headlessly render an animation project to video (MP4), animated GIF, WebM, or PNG sequence.

pencil2d_launch_gui

project_path

Open the project in the visual Pencil2D GUI for interactive editing.


๐Ÿš€ Installation

Option 1: From PyPI

pip install pencil2d-mcp

Option 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 tools
pencil2d_add_audioC

Attach a sound clip (WAV/MP3) to a sound layer at a specific keyframe in the animation.

NameRequiredDescriptionDefault
frameNoKeyframe number where audio starts playing (default 1).
audio_pathYesPath to audio file (.wav, .mp3) to embed.
layer_nameNoSound layer name (default 'Sound Layer').
project_pathYesPath to the .pclx file.

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

NameRequiredDescriptionDefault
frameYesKeyframe number (1-based index).
image_pathNoAbsolute path to a PNG/JPEG image file to insert.
layer_nameNoName or ID of the bitmap layer (defaults to first bitmap layer).
top_left_xNoCanvas X offset (default centers image: -width/2).
top_left_yNoCanvas Y offset (default centers image: -height/2).
base64_dataNoOptional base64-encoded image data (if image_path is not used).
project_pathYesPath to the .pclx file.

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

NameRequiredDescriptionDefault
stepNoStep interval between frames (default 1).
framesNoList of keyframe objects to insert.
layer_nameNoTarget layer name when importing from directory.
start_frameNoStarting frame index when importing from directory (default 1).
project_pathYesPath to the .pclx file.
directory_pathNoOptional directory containing image frames to import in sorted order.

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

NameRequiredDescriptionDefault
nameYesName for the new layer.
visibleNoInitial layer visibility (default true).
layer_typeNoType of layer to create (default 'bitmap').
project_pathYesPath to the .pclx file.

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

NameRequiredDescriptionDefault
fpsNoAnimation playback frames per second (default 12).
widthNoCanvas width in pixels (default 800).
heightNoCanvas height in pixels (default 600).
layer_namesNoNames of initial bitmap layers to create (default ['Drawing Layer']).
project_pathYesOutput path for the new .pclx file.

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

NameRequiredDescriptionDefault
columnsNoNumber of columns in spritesheet grid (default: horizontal strip).
layer_nameNoLayer to pack into spritesheet (default: first bitmap layer).
output_imageYesDestination PNG path for the spritesheet.
project_pathYesPath to the .pclx file.

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

NameRequiredDescriptionDefault
widthNoOptional output width in pixels.
cameraNoName of camera layer to use.
heightNoOptional output height in pixels.
end_frameNoLast frame to include in export.
output_pathYesOutput rendered file (e.g., animation.mp4, preview.gif, frames.png).
start_frameNoFirst frame to include in export.
project_pathYesPath to the .pclx file.
transparencyNoEnable transparency when exporting images or formats that support it.

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

NameRequiredDescriptionDefault
output_dirYesDirectory where extracted frame images will be written.
project_pathYesPath to the .pclx file.

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

NameRequiredDescriptionDefault
project_pathYesPath to the .pclx Pencil2D project file.

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

NameRequiredDescriptionDefault
project_pathNoOptional path to .pclx file to open in Pencil2D.

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

NameRequiredDescriptionDefault
redYesRed channel (0-255).
blueYesBlue channel (0-255).
alphaNoAlpha channel (0-255, default 255).
greenYesGreen channel (0-255).
color_nameYesName of the color swatch.
project_pathYesPath to the .pclx file.

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

NameRequiredDescriptionDefault
project_pathYesPath to the .pclx file.
layer_name_or_idYesName or integer ID of the layer to delete.

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

NameRequiredDescriptionDefault
dxNoHorizontal camera pan offset in pixels.
dyNoVertical camera pan offset in pixels.
frameNoFrame number for the camera keyframe (default 1).
scaleNoCamera zoom scale (1.0 = 100%, 1.5 = 150% zoom-in).
rotationNoCamera rotation angle in degrees.
project_pathYesPath to the .pclx file.

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

NameRequiredDescriptionDefault
project_pathYesPath to the .pclx file.

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

  1. 14 tool updatesv0.2.0
    • First observedpencil2d_add_audio
    • First observedpencil2d_add_frame
    • First observedpencil2d_add_frames_batch
    • First observedpencil2d_add_layer
    • First observedpencil2d_create
    • First observedpencil2d_create_spritesheet
    • First observedpencil2d_export
    • First observedpencil2d_extract_frames
    • First observedpencil2d_inspect
    • First observedpencil2d_launch_gui
    • First observedpencil2d_manage_palette
    • First observedpencil2d_remove_layer
    • First observedpencil2d_set_camera
    • First observedpencil2d_validate

TDQS

B3.4/5.0

Scored across 14 tools

Disambiguation4/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables 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.
    1
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables 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.
    22
    MIT