pixscii
Click on "Install 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., "@pixsciianimate a scene with a hero walking across grass and stone tiles"
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.
pixscii
LLMs can't draw. This MCP can. A pixel art animation toolkit for AI agents.
Sister project of artscii. While artscii provides terminal ASCII art, pixscii gives AI agents a full pixel art workbench — generate characters, animate scenes, draw sprites, and export PNGs. Offline, deterministic, zero latency.
One Call Animation
animate_scene {
"width": 128, "height": 48,
"background": { "tiles": [["tree","grass","grass","sand","stone","wall","wall","door"]] },
"actors": [
{ "seed": "hero", "species": "human", "armor": "plate", "weapon": "sword",
"motion": "walk", "from": {"x":0,"y":28}, "to": {"x":96,"y":28} },
{ "seed": "mage", "species": "elf", "armor": "cloth", "weapon": "staff",
"motion": "walk", "from": {"x":-16,"y":30}, "to": {"x":72,"y":30} },
{ "seed": "guard", "species": "skeleton", "motion": "idle",
"from": {"x":108,"y":28}, "to": {"x":108,"y":28} }
],
"frames": 24, "delay": 150
}One tool call. 3 characters, tiled background, 24 frames. 9ms.
The LLM translates a scene description into structured input. pixscii executes it instantly.
Related MCP server: Aseprite MCP
Quick Start
npx pixsciiOr add to your MCP client config:
{
"mcpServers": {
"pixscii": {
"command": "npx",
"args": ["-y", "pixscii"]
}
}
}Tools (19)
High-Level — Full scenes in one call
Tool | Description |
| Text description → animated scene with characters, background, and motion |
Source — Create or load a canvas
Tool | Description |
| New blank canvas with optional fill color |
| Load a bundled sprite into an editable canvas |
| Generate a procedural pixel character |
| Quantize any image (URL or base64) to pixel art |
| Browse the sprite library |
Mutate — Draw on a canvas
Tool | Description |
| Set individual pixels (batch up to 512) |
| Bresenham line between two points |
| Rectangle — outline or filled |
| Flood fill from a point (with leak detection) |
| Mirror left half to right half |
| Revert the last drawing operation |
Observe — Read the canvas state
Tool | Description |
| View the canvas as a hex character grid |
Compose & Output
Tool | Description |
| Animate actors across a scene with per-frame positions |
| Layer multiple canvases/sprites into a scene |
| Build a map from a tile grid |
| Stitch frames into a single PNG (horizontal/vertical/grid) |
| Animate a sprite with pixel motion (idle, walk, attack...) |
| Render a canvas to scaled PNG |
Three Layers of Control
Layer 1: animate_scene → full scene in one call (fast path)
Layer 2: sequence/compose → manual frame composition (precise control)
Layer 3: pixel/line/rect → individual pixel editing (full control)Start with animate_scene for a fast draft. Drop to lower layers to refine.
Example: One-Call Scene Animation
→ animate_scene {
width: 80, height: 40,
background: { tiles: [["grass","grass","stone","wall","door","wall"]] },
actors: [{
seed: "hero-girl", species: "human", armor: "cloth",
motion: "walk", from: {x:0, y:24}, to: {x:60, y:24}
}],
frames: 16, delay: 120
}
← 16 frame PNGs + frame_ids
→ spritesheet { frames: [frame_ids], direction: "horizontal" }
← single strip PNG with all 16 framesTwo calls: one to generate, one to assemble. Done.
Example: Drawing a Sprite from Scratch
→ create { width: 16, height: 16, fill: "." }
← canvas_id + hex grid
→ rect { canvas_id, x: 3, y: 5, w: 10, h: 9, color: "1" }
→ fill { canvas_id, x: 7, y: 7, color: "8" }
← filled: 56 pixels, leaked: false (grid returned — agent verifies)
→ inspect { canvas_id }
← agent reads grid, spots issue, fixes with pixel tool
→ export { canvas_id, scale: 4 }
← 64x64 PNGThe Hex Grid Protocol
Every pixel is one character. The agent reads and writes in the same alphabet:
0-F = PICO-8 palette colors (0=black, 7=white, 8=red, ...)
. = transparent 0123456789ABCDEF
0: ................
1: .....111111.....
2: .....177771.....
3: .....177771.....
4: ...1111111111...
5: ...1888888881...
6: ...1788888881...~80 tokens for a full 16x16 sprite. The LLM reads this like source code and reasons about it spatially.
Bundled Assets
22 sprites across 4 categories:
Items: sword, shield, potion, key, bow, coin
Tiles: grass, stone, water, wall, door, tree, sand, dirt
Effects: slash, sparkle, explosion, heal
UI: heart-full, heart-empty, arrow-up, cursor
648 procedural characters: 4 species (human, elf, dwarf, skeleton) x 3 armors x 3 weapons x 3 helms x 6 skin tones.
3 palettes: pico8 (default), grayscale, gameboy
6 motion types: idle, walk, attack, hurt, bounce, blink
CLI
npx pixscii import sprite.png --id my-sword --category items
npx pixscii export sword --scale 4 --out sword.pngDevelopment
npm install
npm run dev # Start MCP server (stdio)
npm run build # Compile TypeScript
npm test # Run testsLicense
MIT
Available Tools
19 toolsanimateB
Animate a sprite or character with pixel motion. Returns multiple PNG frames or a spritesheet.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Sprite ID to animate (use this OR seed) | |
| seed | No | Character seed to animate (use this OR id) | |
| scale | No | Scale factor (default 4) | |
| motion | Yes | Motion type: idle, walk, attack, hurt, bounce, blink | |
| palette | No | Palette ID (default "pico8") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It does disclose the output format (multiple PNG frames or spritesheet) and the nature of the action (pixel motion animation). However, it omits other behavioral traits such as whether it requires an existing sprite/character, potential side effects, or limitations. This is a moderate level of transparency.
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 two sentences, front-loaded with the primary action, and contains no filler. Every word contributes to understanding the tool's purpose and output. This is exemplary conciseness.
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 description covers the essential context: what the tool does and what it returns. Since there is no output schema, explaining the return format is important and handled well. However, for a tool with 5 parameters and no annotations, it could further explain the id/seed relationship or default behaviors, but the schema fills those 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 each parameter has a clear description (e.g., 'Sprite ID to animate (use this OR seed)' and the enum for motion). The tool description adds no parameter-specific information beyond the schema, so the baseline of 3 is appropriate.
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 clearly states the tool animates a sprite or character and specifies the output format (multiple PNG frames or spritesheet). The verb 'animate' and resource 'sprite or character' are specific, and the output mention adds clarity. However, it does not explicitly differentiate from sibling tool 'animate_scene', though 'sprite or character' implies a distinction.
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 provides no explicit guidance on when to use this tool versus alternatives. It doesn't mention 'animate_scene' or other siblings, nor does it state any prerequisites or exclusions. The context is only implied by 'Animate a sprite or character', which is too vague for clear usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
animate_sceneA
Create a full animated scene in one call. Generate characters, place them on a background, and animate them along paths. Returns multiple PNG frames.
| Name | Required | Description | Default |
|---|---|---|---|
| delay | No | ms between frames (default 150) | |
| scale | No | Scale factor (default 4) | |
| width | Yes | Scene width in pixels | |
| actors | Yes | Actors to animate | |
| frames | No | Frame count (default 8) | |
| height | Yes | Scene height in pixels | |
| palette | No | Palette ID (default "pico8") | |
| background | No | Background (omit for transparent) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It discloses that the tool generates characters, places a background, animates along paths, and returns PNG frames. However, it doesn't state whether the tool mutates an existing canvas/workspace, has side effects on prior state, or requires specific prerequisites before calling.
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 three short sentences, front-loaded with the core purpose. Every sentence adds information about capabilities or output; no redundant phrasing.
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 tool is complex (nested actors, background, 8 params) and lacks an output schema, yet the description adequately conveys the main output ('multiple PNG frames') and high-level behavior. It doesn't detail frame sequencing or default timing, but the schema covers those parameters; the description is sufficient for an agent to select and invoke the tool 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?
The schema covers all 8 parameters with descriptions (100% coverage), so the baseline is 3. The description adds a meaningful connection by saying 'animate them along paths,' which maps to the actors' from/to coordinates, providing semantic glue not explicit in 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 clearly states 'Create a full animated scene in one call,' names the key actions (generate characters, place on background, animate along paths), and notes it returns multiple PNG frames. This distinguishes it from sibling tools like 'pixel' or 'rectangle' which handle individual drawing primitives.
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 'full animated scene in one call' signals this is for high-level scene creation, implying a contrast with lower-level sibling tools, but it does not explicitly name alternatives or state when not to use it. There is no mention of using 'character' for standalone sprites or 'animate' for existing assets.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
characterA
Generate a procedural pixel character sprite. Same seed always produces the same character. 648 unique combinations.
| Name | Required | Description | Default |
|---|---|---|---|
| helm | No | Helm type: hood, iron, crown | |
| seed | Yes | Seed string for deterministic generation. Same seed = same character. | |
| skin | No | Skin tone index 0-5 | |
| armor | No | Armor type: cloth, leather, plate | |
| scale | No | Scale factor (default 4) | |
| weapon | No | Weapon type: sword, staff, bow | |
| palette | No | Palette ID (default "pico8") | |
| species | No | Species: human, elf, dwarf, skeleton |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits itself. It adds value by stating determinism (same seed same character) and the finite combination space, but does not mention output format, side effects, or error conditions. This is adequate but not comprehensive.
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 two concise sentences that immediately state the primary action and key property. No filler or redundant phrasing; it 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?
Given the tool has 8 parameters and no output schema, the description covers the core purpose and determinism but stops short of explaining the return value or how to interpret the result. The schema covers parameters well, so the remaining gap is the output format and potential errors, which prevents a higher score.
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 the description is not required to elaborate on parameters. It adds a useful note about deterministic seed behavior (though repeated in the schema) and the total combination count, but does not add significant semantic detail 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 clearly states the tool generates a procedural pixel character sprite, specifying the exact resource and action. It distinguishes from sibling tools like 'tilemap' and 'spritesheet' by focusing on character sprites, and mentions deterministic seeds and combination count.
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 conveys a clear use case (generating character sprites) but provides no explicit guidance on when to prefer this tool over alternatives, nor any exclusions. Usage is implied rather than explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
composeB
Compose multiple sprites into a single scene. Place sprites at specific x,y positions on a canvas.
| Name | Required | Description | Default |
|---|---|---|---|
| scale | No | Scale factor (default 4) | |
| width | Yes | Canvas width in pixels | |
| height | Yes | Canvas height in pixels | |
| layers | Yes | Layers to compose (back to front) | |
| palette | No | Palette ID (default "pico8") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It states the action but does not reveal whether this is a read-only render, a state-changing operation, or what the return value is. No mention of side effects, resource persistence, or output format.
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 two sentences long, front-loaded with the primary purpose, and contains no filler or redundant details. Every sentence 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?
The tool has 5 parameters including a complex layers array, but the description does not explain what the output of composition is (e.g., a scene ID, image data) since there is no output schema. It also omits crucial context like coordinate system origin, whether layers are composited back-to-front (though schema mentions it), or how this tool fits into a workflow with siblings like 'export' or 'create'.
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 schema covers all parameters with descriptions (100% coverage), so the baseline is 3. The description adds minimal information beyond the schema, only reinforcing the x/y placement concept. No additional insight on scale, palette, or layer ordering beyond what schema already provides.
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 clearly states a specific verb ('Compose') and resource ('multiple sprites into a single scene'), with explicit mention of placing sprites at x,y positions. This differentiates it from sibling tools like 'spritesheet' or 'tilemap' that have different outputs.
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 (when you need to assemble sprites into a scene) but provides no explicit when-to-use guidance or mention of alternatives. There are no exclusions or prerequisites stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convertA
Convert an image (URL or base64) to pixel art by quantizing to a palette. Returns both the PNG and sprite data.
| Name | Required | Description | Default |
|---|---|---|---|
| scale | No | Scale factor for output (default 4) | |
| width | No | Target width in pixels (default 16) | |
| height | No | Target height in pixels (default 16) | |
| source | Yes | Image URL (https://...) or base64 data URI | |
| palette | No | Palette ID (default "pico8") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the transparency burden. It discloses the output (PNG and sprite data) and the conversion method (palette quantization), but does not mention potential failures, required permissions, or whether it modifies any state. This is acceptable for a read-oriented converter but leaves gaps.
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 two sentences, front-loaded with the primary action, and contains no fluff.
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 tool has five parameters and no output schema. The description mentions the return format but lacks details on error handling, parameter interdependencies, or what 'sprite data' means. It is sufficient for a simple conversion tool but not fully complete given the absence of annotations and output schema.
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, so the schema already documents all parameters. The description does not add additional semantic detail beyond what the schema provides, 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?
The description clearly states the tool's function: converting an image (URL or base64) to pixel art via palette quantization. It uses specific verbs and resources, but does not explicitly differentiate from sibling tools like 'compose' or '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 provides clear context for when to use the tool: when you need to convert an image to pixel art. There are no exclusions or alternative tool mentions, but the implied use case is straightforward.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createA
Create a new blank canvas for drawing. Returns canvas ID and hex grid for inspection.
| Name | Required | Description | Default |
|---|---|---|---|
| fill | No | Fill color: hex char 0-F or "." for transparent (default ".") | |
| width | Yes | Canvas width in pixels | |
| height | Yes | Canvas height in pixels | |
| palette | No | Palette ID (default "pico8") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. It discloses the creation action and return value, but does not address potential side effects, persistence, or prerequisites. Given the tool creates a new canvas, this is reasonably transparent but not exhaustive.
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 just two short sentences, front-loaded with the primary action and immediately followed by the return value. Every word earns its place with no redundancy or fluff.
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 description explains the purpose and return value (canvas ID and hex grid), which is essential since no output schema is provided. Parameter details are fully covered by the schema. For a simple creation tool, this is nearly complete, though it could mention persistence or lack thereof.
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 provides descriptions for all four parameters (fill, width, height, palette), giving 100% schema coverage. The description adds no parameter-specific meaning beyond the schema, so the baseline score 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 clearly states the action ('Create a new blank canvas for drawing') with a specific verb and resource. It also mentions the return value (canvas ID and hex grid), distinguishing it from sibling tools like get, inspect, or pixel that operate on existing canvases.
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 use when needing a new canvas, but does not explicitly state when to use it versus alternatives (e.g., tilemap, compose, character). No exclusions or alternative references are provided, so guidance is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
exportA
Export a canvas as a scaled PNG image.
| Name | Required | Description | Default |
|---|---|---|---|
| scale | No | Scale factor (default 4) | |
| canvas_id | Yes | Canvas ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only says the output is a scaled PNG, but does not clarify whether the export returns binary data, saves to a file, or if there are 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?
One concise sentence that front-loads the action and resource. Every word adds value with no redundancy.
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 tool is simple and the description gives the essential idea, but it leaves out the exact return mechanism. Without an output schema, a brief note about the output type (e.g., 'returns PNG data') would improve completeness.
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 schema provides full descriptions for both parameters (canvas_id and scale with default). The description adds the word 'scaled' which maps to the scale parameter but no additional 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 clearly states the tool exports a canvas as a PNG image with scaling, using a specific verb and resource. This distinguishes it from drawing and composition siblings like 'draw' or '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 implies the tool is used when a PNG export of a canvas is needed, but it does not explicitly state when to use this tool versus alternatives or mention exclusions. No sibling tools are referenced as alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fillA
Flood fill from a point on a canvas. Returns the updated grid so you can verify the result.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | Start X | |
| y | Yes | Start Y | |
| color | Yes | Hex char 0-F or "." for transparent | |
| canvas_id | Yes | Canvas ID |
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 adds context about the return value ('Returns the updated grid so you can verify the result') and implies a mutating operation ('Flood fill'), but it does not disclose potential side effects, permission requirements, or reversibility. This is a notable gap for a mutation tool.
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 extremely concise, consisting of two short sentences that front-load the core purpose and mention the return value. Every word earns its place, with no redundant information.
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 tool is simple and the description covers the essential aspects: what it does (flood fill), where it operates (on a canvas), and what it returns (updated grid for verification). The detailed schema covers parameters, and the description is sufficient for an agent to correctly select and invoke the tool. It lacks only explicit usage guidance and more thorough side-effect disclosure, but these are not critical for such a straightforward operation.
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 schema has 100% coverage with descriptions for all parameters (x, y, color, canvas_id). The description does not add parameter-specific meaning beyond what the schema already provides, so it meets the baseline for high schema coverage.
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 clearly identifies the tool as a flood fill operation on a canvas ('Flood fill from a point on a canvas') and specifies the return value ('Returns the updated grid so you can verify the result'). This distinguishes it from sibling tools like pixel, line, and rect, which perform other drawing operations.
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 (use when you need to flood fill a region), but it does not explicitly state when to use this tool versus alternatives like pixel, line, or rect. No exclusion criteria or alternative tool names are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getA
Get a sprite as a PNG image by its ID. Returns a scaled pixel art PNG.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Sprite ID (e.g. "sword", "grass", "heart-full") | |
| scale | No | Scale factor 1-16 (default 4). Each pixel becomes scale×scale. | |
| palette | No | Palette ID (default "pico8"). Use search to see available palettes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the return type ('scaled pixel art PNG') and implies a read-only operation via 'Returns', but does not mention error behavior or any side effects. For a simple retrieval tool, this is adequate but not rich.
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 two short sentences, front-loaded with the core purpose and a brief return format. Every word contributes; no filler.
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 tool is simple with well-documented parameters and a clear return format stated in the description. However, there is no output schema and no mention of error cases, so an agent might wonder what happens if the ID is not found. Overall, it is complete for a straightforward retrieval tool.
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% with detailed descriptions for all three parameters, including examples, defaults, and constraints. The description adds no new parameter semantics beyond restating that the sprite is retrieved by ID and returns a scaled PNG.
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 ('Get') and resource ('sprite as a PNG image by its ID'), clearly distinguishing it from sibling tools like mirror, search, or export. The mention of 'by its ID' clarifies the retrieval method.
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 explicit when-to-use or alternatives are stated. The description implies this is the tool for fetching a sprite by ID, and the schema's mention of 'Use search' provides a hint for palette discovery, but there is no direct guidance on when not to use this tool or when to prefer a sibling like inspect.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspectA
Read the current pixel state of a canvas as a hex character grid. For canvases >32px, provide x,y,w,h to inspect a region.
| Name | Required | Description | Default |
|---|---|---|---|
| h | No | Region height | |
| w | No | Region width | |
| x | No | Region start X (for large canvases) | |
| y | No | Region start Y (for large canvases) | |
| canvas_id | Yes | Canvas ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It explicitly says 'Read', implying no mutation, and discloses the output format as a hex character grid plus a region requirement for large canvases. However, it does not cover any error behavior or other potential 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 two sentences, front-loaded with the purpose, and every phrase adds value. Zero redundancy.
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?
No output schema exists, but the description explains the output as a hex character grid. It also covers the action and the region restriction. Minor details like coordinate origin or exact format are missing, but the essential context is present.
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 each parameter already has a description. The description adds the >32px threshold and clarifies that x,y,w,h define a region to inspect, which supplements the schema, but it does not drastically enrich parameter meaning.
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 clearly states the action ('Read'), the resource ('current pixel state of a canvas'), and the output format ('hex character grid'). This is specific and distinct from sibling tools like 'get' or 'export', which likely serve different purposes.
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?
It provides a clear usage guideline for when to include x,y,w,h (for canvases >32px), but it does not explicitly mention when to use this tool versus alternatives or when not to use it. Sibling differentiation is absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lineA
Draw a line between two points on a canvas using Bresenham's algorithm.
| Name | Required | Description | Default |
|---|---|---|---|
| x1 | Yes | Start X | |
| x2 | Yes | End X | |
| y1 | Yes | Start Y | |
| y2 | Yes | End Y | |
| color | Yes | Hex char 0-F or "." for transparent | |
| canvas_id | Yes | Canvas ID |
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 discloses the algorithm but does not mention side effects (e.g., whether drawing overwrites existing pixels), return value, prerequisites like canvas existence, or any error behavior. The lack of such detail is a gap for a mutation tool.
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 that immediately states the core action and target. No unnecessary words or repetition, making it highly concise and well-structured.
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?
Given the tool's simplicity and full schema coverage, the description is minimally adequate. However, with no annotations or output schema, it lacks context about side effects and integration with sibling tools. It covers the essential purpose but not the broader operational context.
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 schema has 100% coverage with descriptive parameter names (Start X, End X, etc.), so the baseline is 3. The description adds no new semantic meaning to the parameters beyond what the schema already provides, though it does tie x1/y1 and x2/y2 to the line endpoints.
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 clearly states the tool's purpose: drawing a line between two points on a canvas. It uses a specific verb ('Draw'), names the resource ('canvas'), and distinguishes itself from siblings like pixel, rect, or fill. Mentioning Bresenham's algorithm adds further specificity.
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 for drawing lines but provides no explicit guidance on when to use this tool versus alternatives like pixel or rect. No when-not-to-use cases or alternative tool names are mentioned, leaving the context implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mirrorA
Mirror a canvas horizontally (left half copied to right half). Returns the updated grid.
| Name | Required | Description | Default |
|---|---|---|---|
| axis_x | No | X coordinate of mirror axis (default: center) | |
| canvas_id | Yes | Canvas ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the operation modifies the canvas (right half overwritten) and returns the updated grid. This is valuable behavioral context, though it does not mention edge cases or reversibility.
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 two concise sentences providing purpose and behavior without any wasteful verbiage. It is appropriately front-loaded with the action.
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 tool with 2 parameters and no output schema, the description provides sufficient context about the operation and return value. It could mention the handling of the axis_x default, but that is in the schema.
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% (both canvas_id and axis_x have descriptions). The description adds no parameter information beyond the schema, so 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 clearly states the action: 'Mirror a canvas horizontally' with a specific detail of what that means ('left half copied to right half'). This is a specific verb+resource that distinguishes it from sibling tools like pixel, line, fill, etc.
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 when to use the tool (when you want to mirror a canvas), but it does not explicitly mention alternatives or conditions for use. No exclusions or prerequisites are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pixelA
Set individual pixels on a canvas. Batch up to 512 pixels per call.
| Name | Required | Description | Default |
|---|---|---|---|
| pixels | Yes | Pixels to set | |
| canvas_id | Yes | Canvas ID |
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 discloses the batching limit (up to 512 pixels per call), which is a useful behavioral constraint. However, it does not mention error behavior, permission requirements, or what happens to existing pixels on overwrite.
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 two sentences and front-loaded with the primary action. Every word earns its place, and the batching constraint is stated efficiently without redundancy.
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 tool with full schema coverage and no output schema, the description adequately covers the core purpose and a key limit (batching). It does not explain return values, but those are not essential given the simple setter nature. Minor gaps exist around error handling and side effects, but the core context is 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 already provides 100% coverage with descriptions for both canvas_id and pixels. The tool description adds no additional parameter semantics beyond the schema, so the baseline score of 3 is appropriate.
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 starts with 'Set individual pixels on a canvas' which clearly identifies the verb (set) and resource (pixels on a canvas). The phrase 'individual pixels' distinguishes it from sibling tools like line, rect, and fill that operate on shapes or areas.
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 the tool is for pixel-level operations and gives a batch limit (512 pixels), but it does not explicitly state when to use this tool over alternatives or mention any exclusions. There is no reference to sibling tools like line or rect for shape drawing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rectB
Draw a rectangle on a canvas (outline or filled).
| Name | Required | Description | Default |
|---|---|---|---|
| h | Yes | Height | |
| w | Yes | Width | |
| x | Yes | Top-left X | |
| y | Yes | Top-left Y | |
| color | Yes | Hex char 0-F or "." for transparent | |
| filled | No | Fill the rectangle (default: false = outline only) | |
| canvas_id | Yes | Canvas ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the full burden of behavioral disclosure. It only states the basic drawing action without mentioning side effects, coordinate conventions, transparency, or whether the rectangle overwrites existing content. The outline default and color format are absent from the description.
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 that clearly states the action and the outline/filled option. It is concise with no extraneous words. However, it is slightly under-specified for a tool with this many parameters, which slightly reduces the score.
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 7 parameters, no annotations, and no output schema, this description is far too sparse. It provides no usage example, no return value, and does not clarify the role of canvas_id or the default outline behavior. The schema covers parameter names, but the overall context for using the tool is 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 description coverage is 100%, so the baseline is 3. The description adds no additional parameter meaning beyond the schema, which already thoroughly documents each parameter such as 'Top-left X', 'Width', and 'Hex char 0-F or '.' for transparent'. There is no extra value from the tool description.
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 clearly states the action ('Draw'), the resource ('a rectangle on a canvas'), and the dual scope ('outline or filled'). This strongly distinguishes it from sibling tools like 'line' and 'pixel', which draw different shapes.
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 is provided on when to use this tool versus alternatives. It does not explain when an outline or filled rectangle is appropriate, nor how to choose between 'rect' and 'fill' or 'line'. This lack of context may lead to incorrect tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchA
Search the sprite library by keyword, category, or get a random sprite. Returns a text listing of matching sprites.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Search keyword (matches id, name, category, tags) | |
| random | No | Return a single random sprite | |
| category | No | Filter by category: items, tiles, effects, ui |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full transparency burden. It discloses the return type ('text listing') and the random mode, but it does not explicitly state that the operation is read-only, whether parameters are mutually exclusive, or the content format of the listing.
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 sentence that is front-loaded and contains no filler. It efficiently conveys the tool's core purpose, modes, and output.
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 tool is simple, but with no output schema, the description's characterization of the result as a 'text listing' is vague; it doesn't specify what fields are included or how the listing is formatted. The implied exclusivity of modes is also left unstated.
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%, providing a baseline of 3. The description adds value by using 'or' to imply that query, category, and random are alternative modes, a relationship not stated in the schema. However, it largely mirrors the schema's parameter descriptions otherwise.
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 ('Search') and resource ('sprite library'), and lists three modes (keyword, category, random) plus the return format. It is clear, but it does not explicitly differentiate from sibling tools like 'get' or 'inspect'.
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 when to use the tool (searching by keyword/category, or getting a random sprite) but does not provide explicit guidance on when to prefer it over alternatives like 'get', nor does it mention exclusion cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sequenceB
Animate actors across a scene. Each actor has a pose cycle and a path of positions. Returns one PNG per frame.
| Name | Required | Description | Default |
|---|---|---|---|
| delay | No | ms between frames (default 150) | |
| scale | No | Scale factor (default 4) | |
| width | Yes | Scene width in pixels | |
| actors | Yes | Actors to animate | |
| height | Yes | Scene height in pixels | |
| palette | No | Palette ID (default "pico8") | |
| background | No | Canvas ID for the background (omit for transparent) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that output is one PNG per frame and describes actor structure, which is useful. However, it lacks important behavioral details such as how frame count is determined, how pose cycles and paths interact, or whether any side effects (e.g., canvas creation) 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 description is three concise sentences, front-loaded with the primary action, and every sentence adds meaningful information without redundancy. It efficiently summarizes the tool's core behavior and output.
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 7 parameters and nested actor objects, the description is somewhat minimal. It states returns PNG per frame but does not explain how frame count is derived from paths, how the pose cycle interacts with path length, or typical usage scenarios. Still, the high schema coverage partially compensates.
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 the baseline is 3. The description adds a small amount of context by explaining actors have 'poses' and 'path' matching the schema, but does not expand on parameters like delay, scale, palette, or background beyond what the schema already says.
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?
Description clearly states 'Animate actors across a scene' with a specific resource and action. It adds actor behavior details (pose cycle, path of positions) and output format. However, it does not differentiate from sibling tools like 'animate' or 'animate_scene' despite the similar names.
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 provides no guidance on when to use this tool versus alternatives. It does not mention exclusions, prerequisites, or comparisons to similar sibling tools. Usage context is only implied by the tool's purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spritesheetA
Stitch multiple canvases into a single PNG spritesheet. Supports horizontal, vertical, or grid layout.
| Name | Required | Description | Default |
|---|---|---|---|
| gap | No | Pixel gap between frames (default 0) | |
| scale | No | Scale factor (default 4) | |
| frames | Yes | Canvas IDs to stitch | |
| columns | No | Columns for grid layout | |
| palette | No | Palette ID (default "pico8") | |
| direction | No | Layout direction (default "horizontal") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations were provided, so the description carries the full burden. It discloses the output format (PNG spritesheet) and layout options, but does not mention side effects (e.g., whether input canvases are modified) or any operational constraints. It's not contradictory, but lacks depth.
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 concise sentence that front-loads the core action and output. Every word earns its place, with no filler or redundant information.
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?
Given the tool's moderate complexity and full schema coverage, the description is sufficiently complete. It states the output format and layout options. Minor gaps include not specifying the return type or side effects, but the schema fills most 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%, so all parameters are already documented. The description adds only the layout types, which are redundant with the schema's enum. It provides minimal additional meaning beyond what the schema already offers.
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 clearly states a specific verb ('Stitch') and resource ('multiple canvases') with a defined output ('single PNG spritesheet'). It also mentions supported layouts (horizontal, vertical, grid), which adds specificity and distinguishes it from general compose tools.
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 (when you need to combine multiple canvases into a spritesheet) but does not explicitly state when to use this tool versus alternatives like 'compose'. No exclusions or alternative guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tilemapB
Build a tilemap from a 2D grid of tile IDs. Each cell becomes a 16x16 tile.
| Name | Required | Description | Default |
|---|---|---|---|
| grid | Yes | 2D array of tile IDs (e.g. [["grass","grass","water"],["grass","door","grass"]]) | |
| scale | No | Scale factor (default 4) | |
| palette | No | Palette ID (default "pico8") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It adds the useful detail that each cell becomes a 16x16 tile, but does not disclose side effects, return value, output format, or any constraints beyond the schema.
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 two short sentences with zero wasted words. It front-loads the core purpose and immediately specifies the tile size, making it highly scannable.
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 relatively simple build tool with full schema documentation, the description is adequate but leaves gaps: it does not state what the tool returns, how scale/palette alter the result, or any side effects. Given no output schema and no annotations, a bit more detail would make it 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?
Schema description coverage is 100%, so the schema already documents all three parameters. The description adds the semantic detail that cells map to 16x16 tiles, which slightly clarifies the grid's role, but lacks deeper explanation of how scale and palette affect the output.
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 clearly states the tool builds a tilemap from a 2D grid of tile IDs and specifies the 16x16 cell size. It uses a specific verb and resource, distinguishing it from drawing primitives and other tools, though it does not explicitly contrast with siblings like 'compose' or 'convert.'
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 use when constructing a tilemap from a grid of tile IDs, but provides no explicit guidance on when to prefer this tool over alternatives or any exclusions. No context is given for typical use cases or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
undoA
Revert the last drawing operation on a canvas. Single-step undo.
| Name | Required | Description | Default |
|---|---|---|---|
| canvas_id | Yes | Canvas ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It adds the useful behavioral detail of 'Single-step undo,' but does not disclose what happens when there is no previous operation, whether the undo is itself reversible, or any side effects. These gaps keep it at a minimum viable level.
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 two short sentences, front-loaded with the primary action and a clarifying detail. Every word is meaningful, making it appropriately concise and well-structured.
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 tool is simple with one parameter and no output schema. The description covers the core purpose but leaves out edge-case behavior (e.g., empty undo stack) and return value expectations. Given the simplicity, this is adequate but not thorough.
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% with a simple 'Canvas ID' property. The description does not add any meaning beyond the schema, and the schema description is minimal. The baseline for high coverage is 3, and there's no additional semantic value provided.
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 clearly states the specific action ('Revert the last drawing operation') and the resource ('a canvas'), and further clarifies the single-step nature. This distinguishes it from other tools by explicitly scoping to drawing operations.
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 provides clear context for when to use it: after a drawing operation to revert it. It also implicitly excludes multi-step undo with 'Single-step undo,' but does not explicitly mention alternatives or when not to use it, so it stops short of a 5.
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. Dates show when Glama detected each change.
19 tool updates
v0.3.1- First observed
animate - First observed
animate_scene - First observed
character - First observed
compose - First observed
convert - First observed
create - First observed
export - First observed
fill - First observed
get - First observed
inspect - First observed
line - First observed
mirror - First observed
pixel - First observed
rect - First observed
search - First observed
sequence - First observed
spritesheet - First observed
tilemap - First observed
undo
TDQS
Most tools are distinct, but the three animation tools (animate, sequence, animate_scene) have overlapping purposes, making it unclear which to choose for scene-level animation. Other tool boundaries are clear.
All tool names are single lowercase words, providing a consistent style. However, some names like 'get' and 'create' are generic and less self-explanatory, but the overall pattern is uniform.
With 19 tools, the surface is somewhat heavy, but each tool addresses a specific aspect of pixel art creation, composition, and animation. The count is near the upper bound of acceptable for the range of features.
The server covers drawing, editing, library access, composition, export, and animation, providing a comprehensive workflow. Missing features like canvas deletion or rotation are minor and do not block core usage.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Generate authentic pixel art - sprites, animations, and tilesets - from any MCP client
MCP server for Flux AI image generation
MCP server for NanoBanana AI image generation and editing
MCP server for OpenAI Sora AI video generation
Related MCP Servers
- AlicenseBqualityDmaintenanceMCP server for Aseprite — create, edit, and export pixel art sprites, animations, and sprite sheets from any AI assistant.437MIT
- AlicenseBqualityCmaintenanceAn MCP server that lets AI agents create and edit Aseprite sprites headlessly, enabling pixel art, animation, and export via 98 tools.1005MIT
- FlicenseAqualityDmaintenanceAn MCP server that enables AI coding agents to create pixel art programmatically by providing canvas manipulation tools and PNG export.10301-
- AlicenseNot gradedqualityAmaintenanceAn MCP server that lets AI agents draw in a live Aseprite editor or headless mode, featuring one-action Unity sprite-sheet export, art-QA sweeps, and game-dev tools.3MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/rxolve/pixscii'
If you have feedback or need assistance with the MCP directory API, please join our Discord server