Skip to main content
Glama

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 pixscii

Or add to your MCP client config:

{
  "mcpServers": {
    "pixscii": {
      "command": "npx",
      "args": ["-y", "pixscii"]
    }
  }
}

Tools (19)

High-Level — Full scenes in one call

Tool

Description

animate_scene

Text description → animated scene with characters, background, and motion

Source — Create or load a canvas

Tool

Description

create

New blank canvas with optional fill color

get

Load a bundled sprite into an editable canvas

character

Generate a procedural pixel character

convert

Quantize any image (URL or base64) to pixel art

search

Browse the sprite library

Mutate — Draw on a canvas

Tool

Description

pixel

Set individual pixels (batch up to 512)

line

Bresenham line between two points

rect

Rectangle — outline or filled

fill

Flood fill from a point (with leak detection)

mirror

Mirror left half to right half

undo

Revert the last drawing operation

Observe — Read the canvas state

Tool

Description

inspect

View the canvas as a hex character grid

Compose & Output

Tool

Description

sequence

Animate actors across a scene with per-frame positions

compose

Layer multiple canvases/sprites into a scene

tilemap

Build a map from a tile grid

spritesheet

Stitch frames into a single PNG (horizontal/vertical/grid)

animate

Animate a sprite with pixel motion (idle, walk, attack...)

export

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 frames

Two 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 PNG

The 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.png

Development

npm install
npm run dev      # Start MCP server (stdio)
npm run build    # Compile TypeScript
npm test         # Run tests

License

MIT

Available Tools

19 tools
animateB

Animate a sprite or character with pixel motion. Returns multiple PNG frames or a spritesheet.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoSprite ID to animate (use this OR seed)
seedNoCharacter seed to animate (use this OR id)
scaleNoScale factor (default 4)
motionYesMotion type: idle, walk, attack, hurt, bounce, blink
paletteNoPalette ID (default "pico8")

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
delayNoms between frames (default 150)
scaleNoScale factor (default 4)
widthYesScene width in pixels
actorsYesActors to animate
framesNoFrame count (default 8)
heightYesScene height in pixels
paletteNoPalette ID (default "pico8")
backgroundNoBackground (omit for transparent)

TDQS

A4.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 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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
helmNoHelm type: hood, iron, crown
seedYesSeed string for deterministic generation. Same seed = same character.
skinNoSkin tone index 0-5
armorNoArmor type: cloth, leather, plate
scaleNoScale factor (default 4)
weaponNoWeapon type: sword, staff, bow
paletteNoPalette ID (default "pico8")
speciesNoSpecies: human, elf, dwarf, skeleton

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
scaleNoScale factor (default 4)
widthYesCanvas width in pixels
heightYesCanvas height in pixels
layersYesLayers to compose (back to front)
paletteNoPalette ID (default "pico8")

TDQS

B3.4/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 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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
scaleNoScale factor for output (default 4)
widthNoTarget width in pixels (default 16)
heightNoTarget height in pixels (default 16)
sourceYesImage URL (https://...) or base64 data URI
paletteNoPalette ID (default "pico8")

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
fillNoFill color: hex char 0-F or "." for transparent (default ".")
widthYesCanvas width in pixels
heightYesCanvas height in pixels
paletteNoPalette ID (default "pico8")

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
scaleNoScale factor (default 4)
canvas_idYesCanvas ID

TDQS

A3.5/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 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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesStart X
yYesStart Y
colorYesHex char 0-F or "." for transparent
canvas_idYesCanvas ID

TDQS

A3.8/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. 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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSprite ID (e.g. "sword", "grass", "heart-full")
scaleNoScale factor 1-16 (default 4). Each pixel becomes scale×scale.
paletteNoPalette ID (default "pico8"). Use search to see available palettes.

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
hNoRegion height
wNoRegion width
xNoRegion start X (for large canvases)
yNoRegion start Y (for large canvases)
canvas_idYesCanvas ID

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
x1YesStart X
x2YesEnd X
y1YesStart Y
y2YesEnd Y
colorYesHex char 0-F or "." for transparent
canvas_idYesCanvas ID

TDQS

A3.5/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 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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
axis_xNoX coordinate of mirror axis (default: center)
canvas_idYesCanvas ID

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pixelsYesPixels to set
canvas_idYesCanvas ID

TDQS

A3.8/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. 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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
hYesHeight
wYesWidth
xYesTop-left X
yYesTop-left Y
colorYesHex char 0-F or "." for transparent
filledNoFill the rectangle (default: false = outline only)
canvas_idYesCanvas ID

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

sequenceB

Animate actors across a scene. Each actor has a pose cycle and a path of positions. Returns one PNG per frame.

ParametersJSON Schema
NameRequiredDescriptionDefault
delayNoms between frames (default 150)
scaleNoScale factor (default 4)
widthYesScene width in pixels
actorsYesActors to animate
heightYesScene height in pixels
paletteNoPalette ID (default "pico8")
backgroundNoCanvas ID for the background (omit for transparent)

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
gapNoPixel gap between frames (default 0)
scaleNoScale factor (default 4)
framesYesCanvas IDs to stitch
columnsNoColumns for grid layout
paletteNoPalette ID (default "pico8")
directionNoLayout direction (default "horizontal")

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
gridYes2D array of tile IDs (e.g. [["grass","grass","water"],["grass","door","grass"]])
scaleNoScale factor (default 4)
paletteNoPalette ID (default "pico8")

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

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 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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
canvas_idYesCanvas ID

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

  1. 19 tool updatesv0.3.1
    • First observedanimate
    • First observedanimate_scene
    • First observedcharacter
    • First observedcompose
    • First observedconvert
    • First observedcreate
    • First observedexport
    • First observedfill
    • First observedget
    • First observedinspect
    • First observedline
    • First observedmirror
    • First observedpixel
    • First observedrect
    • First observedsearch
    • First observedsequence
    • First observedspritesheet
    • First observedtilemap
    • First observedundo

TDQS

A3.5/5.0
Disambiguation3/5

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.

Naming Consistency4/5

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.

Tool Count3/5

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.

Completeness4/5

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

ActivityInactive
ResponsivenessSyncing

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

Related MCP Servers

Latest Blog Posts

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