Skip to main content
Glama

pixel-mcp

An MCP server that lets an LLM create and edit pixel art reliably. Implements SPEC.md: indexed-color documents (8x8 to 256x256), layers, frames, symmetry, grid-text editing, server-side PNG/GIF rendering, reference quantization, and advisory quality linting.

Plain JavaScript with TypeScript-checked JSDoc types (tsc --checkJs, strict). No native dependencies.

Setup

pnpm install
pnpm check   # typecheck (tsc, strict, noEmit)
pnpm test    # node:test suite, includes an in-memory MCP end-to-end test
pnpm start   # run the server on stdio

Claude Desktop / Claude Code style config:

{
  "mcpServers": {
    "pixel": {
      "command": "node",
      "args": ["c:/path/to/pixel-mcp/src/index.js"]
    }
  }
}

Related MCP server: aseprite_mcp

Persistence

Documents survive restarts. Everything is written through to disk on every successful edit, and loaded on boot:

<dataDir>/
  documents/<docId>/
    document.json    # size, palette, layers, frames, symmetry, tile mode, stamps, selections
    cels/<frame>__<layer>.bin   # raw palette-index buffers
    preview.png      # composited frame 0, human-viewable
  refs/<refId>.png   # loaded reference images

dataDir defaults to the platform data directory (%LOCALAPPDATA%\pixel-mcp on Windows, ~/Library/Application Support/pixel-mcp on macOS, $XDG_DATA_HOME/pixel-mcp elsewhere). Override with --data-dir <path> or PIXEL_MCP_DATA_DIR. Undo/redo stacks and checkpoints are in-memory only, like a normal editor.

PIXEL_MCP_EXPORT_SCALE sets the default export scale factor for the project (built-in 4). Set it to 1 for native-resolution delivery — game textures an engine samples want no upscaling — so the model needn't pass scale on every export. A per-call scale argument still overrides it.

Tool surface (~60 tools)

Every tool that ingests a PNG accepts exactly one of png_base64 or path. Paths are read from the server filesystem; relative paths resolve against the server process's working directory. Base64 remains useful for remote clients.

  • Lifecyclecreate_document, open_document (PNG import + quantize), export (png / gif / aseprite_json — writes a real file to a caller path or <dataDir>/exports/ and returns the path; return_base64 for the bytes; default scale from PIXEL_MCP_EXPORT_SCALE), split_sprite_sheet (regular PNG grid from base64 or a server-local path to separate documents), pack_sprite_sheet (document frames to a transparent PNG sheet with layout metadata), resize_canvas, undo, redo, describe, list_documents, delete_document, set_symmetry, set_tile_mode, set_active_layer, set_active_frame, checkpoint

  • Paletteset_palette_color, add_palette_color, remove_palette_color (remaps pixels), swap_palette_indices, generate_ramp (cool shadows / warm highlights), replace_color, mix_palette_colors (blend two entries into a third), adjust_palette_color (HSL nudge in place or as a new variant), extract_palette (median-cut a PNG into hex colors + a swatch, no document — feeds create_document)

  • Drawingset_pixels, line (pixel-perfect no_doubles), rect, ellipse, flood_fill, outline, paste_grid

  • Shading & textureshade (ramp-step or nearest-snap darken/lighten), dither_gradient (ordered-dither blend between two indices), scatter (seeded grain/noise from an index set), import_image (drop an external PNG onto a layer or store it as a stamp)

  • Regionscopy_region / cut_region (named stamps), paste_stamp (flip/rotate; ignores symmetry by default so placed content is never silently mirror-corrupted), move_region, mirror_region, shift_layer, clear_region, save_selection

  • Layersadd_layer, remove_layer, rename_layer, reorder_layer, set_layer_visibility, set_layer_lock, merge_down

  • Viewingview, view_text, view_diff (vs. checkpoint), view_window (zoomed patch + context thumbnail), view_tiled (NxN repeat with seams marked — the perception tool for seamless textures)

  • Referencesload_reference, quantize_reference, view_reference

  • Animationadd_frame, remove_frame, reorder_frame, set_frame_duration, copy_cel, view_frames (onion skin; the model's perception tool for motion), preview_gif (human-facing output — clients show a GIF as a single still in model context)

  • Lintlint with all ten spec rules (orphans, doubles, banding, pillow_shading, unused_colors, near_duplicates, broken_outline, symmetry_drift, stray_alpha, tile_seams) plus persistent waivers via lint_waive / lint_unwaive: judged-and-accepted findings stay suppressed on every later pass. doubles flags rhythm breaks in diagonal staircases, not every 2-over-1 step, so ellipses don't light up; symmetry_drift reports one finding per contiguous asymmetric region; tile_seams only fires when a tile mode is set, so ordinary sprites stay quiet.

Every editing tool returns the changed bounding box plus a render of the changed region (4px context) and a whole-canvas thumbnail; pass render: false to skip. All edits are atomic — a failed call leaves the document untouched — and undoable (depth 100).

Grid text

One character per pixel, one line per row: . = transparent, 1-9 map to palette indices 1-9, a-z to 10-35, A-Z to 36-61, # = 62, @ = 63. (0 parses as transparent.) Digit characters equal their palette index, matching the spec's example; the spec's prose lists one more character than there are slots, which this resolves.

grid 8x8 palette=4
.111111.
11111111
11211211
11111111
12111121
11222211
11111111
.111111.
legend: 1=yellow #f8e030  2=black #202020

Workflow tip that earned its place in live testing: for a planned sequence of edits, pass render: false on each call and batch-verify with view at milestones. Use view_text for pixel-exact ground truth and view for gestalt — the two channels together are the point.

Spec deviations and gap-fills

  • set_symmetry, set_active_frame, save_selection, list_documents, delete_document are added; the spec references the underlying state but defines no tool to manage it.

  • open_document and load_reference accept PNG only; Aseprite binary import is not implemented (export to Aseprite JSON is).

  • quantize_reference with palette: 'auto' appends the extracted colors to the document palette so the returned indices are immediately valid.

  • Persistence (not in the spec) as described above.

Development

Manual end-to-end smoke that writes renders to scripts/smoke-out/ for eyeballing: node scripts/smoke.mjs.

Available Tools

70 tools
add_frameA

Append a frame (optionally duplicating an existing one). The new frame becomes active.

ParametersJSON Schema
NameRequiredDescriptionDefault
doc_idYesDocument id
duration_msNoDefault 100, or copied from the duplicated frame
duplicate_fromNo

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It discloses that the new frame becomes active and can duplicate an existing one, but does not specify where the frame is appended (e.g., after the current frame), effects on undo history, or any side effects. Adequate but lacks detail.

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?

Two concise sentences: the first states the action, the second the behavioral effect. No extraneous information, each sentence 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 3 parameters and no output schema or annotations, the description covers core behavior but omits details like append position, prerequisites (e.g., active document), and error conditions. Adequate for a simple append but not fully complete.

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 description adds meaning beyond the schema: it explains that duplicate_from is for optional duplication and that the new frame becomes active. The schema already describes duration_ms well (67% coverage), and the description complements it. However, duplicate_from lacks a schema description, so the description partially compensates.

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 'Append a frame', specifying the verb (append) and resource (frame). It also mentions optional duplication and that the new frame becomes active, which distinguishes it from sibling tools like remove_frame, reorder_frame, or set_frame_duration.

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 adding a new frame but does not explicitly state when to use this tool versus alternatives like copy_cel or remove_frame. No when-not guidance or exclusion criteria are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_layerB

Add a new transparent layer (becomes the active layer).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
indexNoInsert position, 0=bottom (default: top)
doc_idYesDocument id

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 full burden. It mentions the layer is transparent and becomes active, but lacks details on side effects, permissions, or return values. Insufficient for a framework with no annotations.

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?

Single, front-loaded sentence with no wasted words. Efficiently communicates core behavior.

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 simple add-layer tool, the description covers basic purpose and one effect, but misses details like return value, error conditions, and prerequisites. Adequate but could be more complete given no annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 67% (doc_id and index have descriptions, name does not). The description adds no parameter-specific details beyond what the schema provides, and does not clarify the 'name' parameter or other constraints.

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 ('Add a new transparent layer') and adds that it becomes the active layer, distinguishing it from other layer operations like set_active_layer. The verb+resource is specific.

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 guidance on when to use this tool versus alternatives. The description implies usage when a new layer is needed, but provides no exclusions or comparisons with sibling tools like remove_layer or rename_layer.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_palette_colorB

Append a color to the palette. Fails when the palette is full (64 entries).

ParametersJSON Schema
NameRequiredDescriptionDefault
hexYes
nameNo
doc_idYesDocument id

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 must carry the behavioral burden. It discloses the failure condition but does not describe success behavior, return values, or side effects. 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?

Two efficient sentences with no wasted words. The core action is front-loaded, and the constraint follows immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 3 parameters, no output schema, and no annotations, the description is minimal but covers the key constraint. Missing details on parameter usage and success behavior, making it sufficient but not thorough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is low (33%), and the description adds no explanation for the 'hex' or 'name' parameters beyond what the schema provides. It mentions 'color' vaguely but doesn't clarify parameter roles.

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 ('Append a color') and the resource ('the palette'), which is specific and distinguishes it from sibling tools like set_palette_color or remove_palette_color.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives (e.g., set_palette_color). Only a failure condition (palette full) is mentioned, but no context about appropriate scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

adjust_palette_colorA

Nudge a palette color in HSL space: darken/lighten via lightness, shift saturation or hue. Saves the model from hand-computing hex. Edits in place (all pixels using it update), or appends a fresh variant with as_new.

ParametersJSON Schema
NameRequiredDescriptionDefault
hueNoRotate hue, degrees
nameNo
indexYesPalette index
as_newNoAppend a new entry instead of editing in place (default false)
doc_idYesDocument id
renderNoInclude a render of the change (default true)
lightnessNoAdd to lightness, -1..1 (negative darkens)
saturationNoAdd to saturation, -1..1

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description carries full burden. It discloses mutation effects ('all pixels using it update') and the alternative behavior (append with as_new). It does not mention authorization or rate limits, but for a palette adjustment tool the disclosure is adequate.

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?

Two sentences with no fluff. First sentence defines the core action and parameters, second sentence explains the behavioral modes. Front-loaded and efficient.

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 no output schema and many sibling tools, the description covers parameters, behavior, and side effects. It could mention the return value (e.g., success confirmation), but this is not critical for a mutation tool. Overall, it is complete enough for the agent to use 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?

Schema coverage is 88% (7 of 8 parameters described in schema). The description adds value by explaining HSL adjustments (darken/lighten via lightness, shift saturation/hue) and the as_new behavior. It also provides the convenience context of saving hand-computing hex, which aids understanding 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 nudges a palette color in HSL space (darken/lighten via lightness, shift saturation or hue). It distinguishes itself from sibling tools like set_palette_color (sets specific color) and add_palette_color (adds new entry) by specifying it adjusts in place or appends with as_new.

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 explains when to use this tool (nudging in HSL space) and mentions two modes (edit in place or append). It does not explicitly state when not to use it or compare to alternatives, but the sibling context implies differentiation, and the behavior is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

checkpointB

Label the current state for later comparison with view_diff.

ParametersJSON Schema
NameRequiredDescriptionDefault
labelYes
doc_idYesDocument id

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It only states 'label the current state' without explaining side effects, permissions, error conditions, or whether the tool is destructive. This leaves significant behavioral ambiguity.

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 verb and object with no wasted words. It is appropriately sized for such a simple tool.

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 description is adequate for a simple tool but lacks context on what 'current state' entails (e.g., entire document vs. specific layer) and does not mention return values. With no output schema and 2 params, more context would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50% (doc_id has a description, label does not). The tool description adds no parameter-specific details, failing to compensate for the missing label description or clarify parameter formats.

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 (label), the resource (current state), and the purpose (for later comparison with view_diff). This distinguishes it from sibling tools like view_diff and implies the workflow.

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 using checkpoint before view_diff, but does not explicitly state when to use or not use it. No alternatives or prerequisites are mentioned, relying on context from sibling tool names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

clear_regionB

Set every pixel in a region to transparent.

ParametersJSON Schema
NameRequiredDescriptionDefault
clipNoSilently discard out-of-bounds pixels instead of rejecting (default false)
frameNoFrame index, 0-based (default: active frame)
layerNoLayer id or name (default: active layer)
doc_idYesDocument id
regionYesRegion: exactly one of 'rect', 'pixels', or 'selection'
renderNoInclude a render of the change (default true)
ignore_symmetryNoSkip symmetry mirroring for this call (default false)

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose all behavioral traits. It only states that pixels become transparent, but omits important details like effect on symmetry, clip behavior, render output, and whether changes are undoable. The description does not explain the side effects of parameters like clip, render, or ignore_symmetry.

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 one concise sentence that communicates the core purpose without waste. However, it could be slightly expanded without losing conciseness.

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?

Given the tool's complexity (7 parameters, nested objects, no output schema), the description is too brief. It lacks explanation of region specification, frame/layer targeting, and behavioral flags like clip and render. Important context for correct usage is missing.

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 each parameter already has a description. The tool description adds no additional meaning to parameters; it does not explain the region options (rect, pixels, selection) or other parameters. Baseline 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 clearly states the tool's function: setting every pixel in a region to transparent. The verb 'set' and resource 'every pixel in a region' are specific, and it distinguishes itself from sibling tools like set_pixels, line, or rect that set colors or draw 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?

The description provides no guidance on when to use this tool versus alternatives, nor any exclusions or prerequisites. There is no mention of when not to use it or related tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

copy_celC

Copy one layer's pixels from one frame to another.

ParametersJSON Schema
NameRequiredDescriptionDefault
layerNoLayer id or name (default: active layer)
doc_idYesDocument id
to_frameYes
from_frameYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description implies a non-destructive copy, but does not disclose whether the target frame's existing pixels are overwritten or merged. No annotations are provided to clarify safety, so the description should have addressed behavioral traits like overwriting behavior.

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, clear sentence with no redundant words. It is appropriately front-loaded and to the point.

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?

Given no output schema and four parameters, the description leaves significant gaps: it does not explain return behavior, whether the operation is reversible, or the impact on other layers. For a mutation tool, more completeness is needed.

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 50%, and the description adds context for 'from_frame' and 'to_frame' by mentioning them, but does not provide constraints or format details. It confirms the role of the 'layer' parameter. Baseline is 3, and the description adds minimal extra value.

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 action ('Copy') and the resource ('one layer's pixels from one frame to another'). It distinguishes the tool from siblings like 'copy_region' and frame manipulation tools, though it could be slightly more specific about the layer being the active or specified layer.

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 such as 'copy_region' or 'paste_stamp'. The description does not mention prerequisites or context, leaving the agent to infer usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

copy_from_documentA

Copy a region of pixels from another document into this one, lossless in palette-index space — the assembly tool for multi-agent fan-out: subagents draw parts in their own documents, then a parent composes them. Source colors map to identical destination palette entries where they exist; the rest are appended ('extend', default) or snapped to the perceptually nearest existing entry ('nearest'). Placed content: ignores symmetry by default, like paste_stamp.

ParametersJSON Schema
NameRequiredDescriptionDefault
xNoDestination left edge (default 0)
yNoDestination top edge (default 0)
clipNoSilently discard out-of-bounds pixels instead of rejecting (default false)
frameNoFrame index, 0-based (default: active frame)
layerNoLayer id or name (default: active layer)
doc_idYesDestination document id (receives the pixels and the undo step)
regionNoRegion in SOURCE coordinates (default: the whole source canvas)
renderNoInclude a render of the change (default true)
paletteNoUnmatched source colors: 'extend' appends them (default), 'nearest' snaps to the closest existing entry
from_frameNoSource frame index (default: source active frame)
from_layerNoSource layer id or name (default: flattened visible layers)
from_doc_idYesSource document id (read-only; left unchanged)
ignore_symmetryNoDefault TRUE for this tool (placed content). Pass false to mirror the copy across the symmetry axis.
skip_transparentNoSkip transparent source pixels instead of writing them (default true)

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It discloses that the copy is lossless in palette-index space, explains source color mapping behavior ('extend' vs 'nearest'), and states that symmetry is ignored by default. This adds significant behavioral context beyond what the schema provides.

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 paragraph, but it is concise and front-loaded with the main action. Every sentence adds value, though it could be more structured with bullet points for easier scanning. The length is appropriate for the complexity of the tool.

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 complexity (14 parameters, nested objects, no output schema), the description provides good contextual completeness. It covers the multi-agent use case, palette behavior, and symmetry defaults. However, it does not describe the output (e.g., whether a render is returned) or permissions, which slightly reduces 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?

Schema description coverage is 100%, so the baseline is 3. The description adds value by explaining the 'palette' enum options and the 'ignore_symmetry' default, but does not elaborate on other parameters beyond the schema. It provides useful semantic context for two key parameters, justifying a score of 3.

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 it copies a region of pixels from another document into this one, lossless in palette-index space. It explicitly calls it 'the assembly tool for multi-agent fan-out', distinguishing it from siblings like paste_stamp and copy_region. The verb 'copy' and specific resource 'a region of pixels from another document' provide a specific and unique purpose.

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 explicitly tells when to use this tool: 'the assembly tool for multi-agent fan-out: subagents draw parts in their own documents, then a parent composes them.' It also notes that placed content ignores symmetry by default, similar to paste_stamp. While it doesn't explicitly list when not to use, the context is clear enough for an AI agent to decide.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

copy_regionB

Copy a region into a named stamp for later paste_stamp.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
frameNoFrame index, 0-based (default: active frame)
layerNoLayer id or name (default: active layer)
doc_idYesDocument id
regionYesRegion: exactly one of 'rect', 'pixels', or 'selection'

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not mention side effects (e.g., whether existing stamps with the same name are overwritten, or if the original region is preserved). The behavior of the stamp storage is obtuse.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence of 8 words is highly concise and front-loaded with the core purpose. Every word is necessary and contributes to understanding the tool's function.

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 complexity (5 parameters, nested objects, no output schema), the description is minimal. It covers the basic intent but omits details about stamp lifetime, naming conflicts, and region constraints, which are important for effective use.

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 80%, so the schema already documents most parameters. The description adds no additional meaning beyond what is in the schema; for example, the 'name' parameter is simply 'string' without further constraints. A score of 3 is appropriate as it meets the baseline but lacks extra clarification.

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 'copy a region' and its purpose 'into a named stamp for later paste_stamp'. This distinguishes the tool from siblings like paste_stamp and cut_region, as it focuses on storing a region for future use.

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 explicit guidance on when to use this tool versus alternatives such as cut_region or copy_from_document. The description implies a workflow with paste_stamp but does not clarify when to choose this over other region copy operations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_documentA

Create a new pixel art document. Palette is a preset name (gameboy, grayscale4, pico8, sweetie16, nes) or a list of hex colors; index 0 is always transparent.

ParametersJSON Schema
NameRequiredDescriptionDefault
widthYes
heightYes
paletteNoPreset name or list of hex colors (default: pico8)

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description partially discloses behavior: it notes that palette index 0 is always transparent. However, it omits other important traits like side effects, return value, or whether the document becomes active.

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?

Two sentences, no wasted words. First sentence states purpose, second explains palette. Highly efficient.

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 3 parameters and no output schema, the description is incomplete. It doesn't mention that width/height are required, nor what the tool returns (e.g., document ID). The palette detail is helpful, but overall context is lacking.

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 low (33%), and the description adds meaning for 'palette' (preset names or hex colors). But 'width' and 'height' are not explained beyond schema bounds, so the description only partially compensates for the coverage gap.

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 new pixel art document', specifying the verb 'create' and the resource 'pixel art document'. It distinguishes from sibling tools like open_document by focusing on creation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives (e.g., open_document). The description does not specify prerequisites or exclusions, leaving the agent without context for tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cut_regionB

Copy a region into a named stamp and clear it from the layer.

ParametersJSON Schema
NameRequiredDescriptionDefault
clipNoSilently discard out-of-bounds pixels instead of rejecting (default false)
nameYes
frameNoFrame index, 0-based (default: active frame)
layerNoLayer id or name (default: active layer)
doc_idYesDocument id
regionYesRegion: exactly one of 'rect', 'pixels', or 'selection'
renderNoInclude a render of the change (default true)
ignore_symmetryNoSkip symmetry mirroring for this call (default false)

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 full burden. It discloses core behavior (copy and clear) but lacks details on side effects (e.g., overwriting existing stamps, undo behavior, error conditions). Adequate but not thorough.

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?

Single sentence, highly concise, front-loads the action. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complex input schema (8 parameters, nested region object) and no output schema, the description is too minimal. Does not address optional parameters or return behavior, making it incomplete for full use.

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 88%, so most parameters already have descriptions. Description adds no additional parameter meaning beyond what's in the schema, meeting baseline.

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?

Description uses specific verb and resource: 'Copy a region into a named stamp and clear it from the layer.' Clearly distinguishes from siblings like 'copy_region' (copy without clear) and 'clear_region' (clear without copy).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. Does not mention that it performs a cut-like operation or when to prefer it over separate copy and clear calls.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_documentA

Permanently delete a document from memory and disk. Cannot be undone.

ParametersJSON Schema
NameRequiredDescriptionDefault
doc_idYesDocument id

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Clearly states permanent deletion from memory and disk, and irreversibility. With no annotations, description carries full burden and does so well. Could mention potential side effects or failure modes.

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?

Two sentences, front-loaded with action and effect. No wasted words.

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?

Single parameter, no output schema, no annotations. Description adequately covers purpose and behavioral traits. Could mention success/failure indicators, but sufficient for a destructive 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?

Only one parameter (doc_id) with schema coverage 100%. Description adds no extra meaning beyond schema's 'Document id'. Baseline 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?

Description clearly states action: 'Permanently delete a document', specifies resource ('document'), and notes irreversibility. Distinguishes from sibling tools like create_document or open_document.

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?

Implies caution with 'Cannot be undone', but no explicit when-to-use or alternative guidance. Could mention that other tools like archive or move exist for non-destructive actions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

describeB

Full document state: size, palette with usage counts, layers, frames, symmetry, stamps, selections.

ParametersJSON Schema
NameRequiredDescriptionDefault
doc_idYesDocument id

TDQS

B3.4/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 lists what is returned but does not mention if the operation is read-only, if permission is required, or any side effects. This lack of detail hurts transparency.

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 very concise (one fragment listing components) and front-loaded with 'Full document state'. However, it could be slightly improved by being a full sentence, but overall it efficiently conveys the core information.

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 low complexity (one parameter, no output schema), the description provides a clear list of what the state includes. However, it does not specify the output format (e.g., JSON structure) or whether it includes metadata. It is adequate but not rich.

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% (only one parameter 'doc_id' with description 'Document id'). The description adds no additional semantics beyond the schema, so 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 explicitly states 'Full document state' and lists specific components (size, palette, layers, etc.), clearly indicating the tool's purpose. It distinguishes itself from sibling tools like 'view' by providing a comprehensive snapshot rather than a single aspect.

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 complete view of document state is needed, but it does not provide explicit guidance on when to use it versus alternatives (e.g., 'view' for just the image), nor does it mention any prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dither_gradientA

Fill a region with an ordered-dither gradient between two palette colors. The indexed-color way to blend a smooth-looking transition: from_index at one end, to_index at the other. axis horizontal/vertical/radial; pattern bayer (4x4, smoother) or checker (2x2, coarser). Either index may be 0 to fade to/from transparent.

ParametersJSON Schema
NameRequiredDescriptionDefault
axisNoDefault horizontal
clipNoSilently discard out-of-bounds pixels instead of rejecting (default false)
frameNoFrame index, 0-based (default: active frame)
layerNoLayer id or name (default: active layer)
doc_idYesDocument id
regionYesRegion: exactly one of 'rect', 'pixels', or 'selection'
renderNoInclude a render of the change (default true)
patternNoDefault bayer
to_indexYes
from_indexYesPalette index
ignore_symmetryNoSkip symmetry mirroring for this call (default false)

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 full burden. It explains the dithering technique and mentions that index 0 fades to/from transparent. However, it does not clarify if the tool modifies the image in place, whether it respects existing alpha, or any prerequisites like palette existence. It is adequate but could be more explicit.

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 four sentences long, each earning its place. Front-loaded with the core action, it explains the technique and key parameters without unnecessary details. No 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?

Given the complexity and no output schema, the description sufficiently covers the tool's behavior and parameters. However, it does not mention what the tool returns (e.g., success status) or explicitly state that it modifies the current document, leaving minor ambiguity.

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 high (91%), but the description adds value by explaining the purpose of from_index/to_index (palette colors), axis (horizontal/vertical/radial), pattern (bayer vs checker), and the special meaning of index 0. This goes beyond the schema's basic descriptions, making parameter usage clearer.

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 it fills a region with an ordered-dither gradient between two palette colors, using specific parameters like from_index, to_index, axis, and pattern. It distinguishes the tool as the 'indexed-color way to blend a smooth-looking transition,' which differentiates it from sibling tools like 'gradient' or 'blend' tools.

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 context on when to use the tool (for indexed-color images needing a smooth transition via dithering) and explains key parameters. However, it does not explicitly state when not to use it or mention alternatives among sibling tools, which would improve guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ellipseC

Draw an ellipse centered at (cx,cy) with radii rx,ry (outline or filled).

ParametersJSON Schema
NameRequiredDescriptionDefault
cxYes
cyYes
rxYes
ryYes
clipNoSilently discard out-of-bounds pixels instead of rejecting (default false)
frameNoFrame index, 0-based (default: active frame)
indexYesPalette index
layerNoLayer id or name (default: active layer)
doc_idYesDocument id
filledYes
renderNoInclude a render of the change (default true)
ignore_symmetryNoSkip symmetry mirroring for this call (default false)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must fully disclose behavioral traits. It only states the basic drawing action and mentions outline/filled, but fails to describe side effects, permissions required, or behaviors related to parameters like clip, ignore_symmetry, or render. This is inadequate for a tool with 12 parameters.

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 extremely concise, consisting of a single sentence that front-loads the core purpose. It wastes no words, though it sacrifices clarity on non-essential details. For a simple tool this is effective, but for one with many parameters it is slightly too sparse.

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?

Given the tool has 12 parameters, no output schema, and no annotations, the description is incomplete. It does not explain the effect on the document, how layers and frames interact, or what the tool returns. Important context about clip behavior, symmetry, and rendering is omitted.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds no meaning beyond what the schema already provides for parameters like cx, cy, rx, ry, and filled. With schema description coverage at 58%, the description does not compensate for undocumented parameters nor clarifies how parameters like clip or layer affect behavior.

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 explicitly states the verb 'Draw', the resource 'ellipse', and specifies the center coordinates (cx,cy) and radii (rx,ry) along with the outline or filled distinction. This clearly differentiates from sibling drawing tools like line and rect.

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, such as rect or flood_fill. There is no mention of prerequisites, constraints, or context that would help an agent decide to invoke this tool over others.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

exportA

Export the document to a real file and return its absolute path. png: one frame with true transparency. gif: all frames animated. aseprite_json: JSON with embedded spritesheet. This is delivery for humans — the response contains no rendered image; use view/view_frames for perception.

ParametersJSON Schema
NameRequiredDescriptionDefault
loopNogif only: loop forever (default true)
pathNoFile path to write (default: <data dir>/exports/<doc_id>.<ext>)
frameNoFrame index, 0-based (default: active frame)
scaleNoNearest-neighbor scale factor (png/gif only; default 4, set per-project with the PIXEL_MCP_EXPORT_SCALE env var)
doc_idYesDocument id
formatYes
return_base64NoAlso return the file bytes as base64 text (default false)

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description carries the burden. It explains the return behavior (file path, optionally base64) and the different behaviors of each format (png: true transparency, gif: animation, aseprite_json: embedded spritesheet). It does not disclose potential side effects like file overwriting or authorization requirements, but covers the main behavioral aspects well.

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: three sentences with no redundancy. The first sentence states the core function, the second lists format-specific behaviors, and the third clarifies the delivery purpose and distinguishes from perception tools. Every sentence adds essential value.

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 an export tool with 7 parameters (2 required) and no output schema, the description covers the main behavior and format distinctions. It does not detail every parameter (e.g., scale, loop), but the schema already does. Missing are potential error conditions or file overwrite semantics, but overall it is sufficient for an agent to understand the tool's purpose and usage.

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?

With 86% schema description coverage, the schema already documents most parameters. The description adds value by explaining the semantic implications of the format parameter (what each format yields). This contextualization helps the agent understand the output beyond the raw schema properties.

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 document to a real file and returns its absolute path. It explicitly lists three formats (png, gif, aseprite_json) with their specific behaviors (transparency, animation, embedded spritesheet), and distinguishes itself from view tools by stating it is for delivery humans and contains no rendered image.

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 a clear guideline to use view/view_frames for perception when the user needs to see the rendered image, which helps avoid misuse. However, it does not explicitly mention when to use this tool over other export-like siblings, though no direct siblings exist for exporting.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

extract_paletteA

Extract a color palette from a PNG supplied as exactly one of png_base64 or path, with median-cut quantization, WITHOUT creating a document. Returns a list of hex colors ready to pass to create_document(palette=[...]) (or add_palette_color), plus a swatch render so the colors are visible. Use this to pull a palette from a reference image; use open_document when you also want its pixels.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoPath to a PNG on the server filesystem (mutually exclusive with png_base64)
sortNoOrder of the returned colors and swatch (default luminance, dark to light)
max_colorsNoMax colors to extract (default 16)
png_base64NoPNG file content, base64-encoded (mutually exclusive with path)

TDQS

A4.6/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 discloses that the tool does not create a document, returns hex colors and a swatch render, and is designed for extracting palettes. It could mention error conditions or side effects, but the given details are sufficient for safe use.

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?

Description is three sentences, front-loaded with the core purpose, and every sentence adds necessary information. No redundant or vague 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?

Given no output schema, the description adequately explains the return structure (list of hex colors + swatch). It covers parameter usage, algorithm, and integration with other tools. Could mention pagination or performance limits, but overall complete for a palette extraction tool.

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%, so baseline is 3. The description adds significant value: clarifying mutual exclusivity of 'path' and 'png_base64', explaining the quantization algorithm, and showing how output integrates with other tools (create_document, add_palette_color).

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 verb ('extract'), resource ('color palette from a PNG'), and method ('median-cut quantization'). It explicitly distinguishes itself from sibling tools like create_document and open_document by specifying 'WITHOUT creating a document' and contrasting with open_document.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-to-use ('Use this to pull a palette from a reference image') and when-not-to-use ('use open_document when you also want its pixels'). This directly guides the agent in selecting between sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flood_fillA

Flood fill from a seed pixel. contiguous=false recolors every pixel that matches the seed color.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYes
yYes
clipNoSilently discard out-of-bounds pixels instead of rejecting (default false)
frameNoFrame index, 0-based (default: active frame)
indexYesPalette index
layerNoLayer id or name (default: active layer)
doc_idYesDocument id
renderNoInclude a render of the change (default true)
contiguousNoDefault true
ignore_symmetryNoSkip symmetry mirroring for this call (default false)

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral traits. It explains the key difference between contiguous=true/false. However, it does not mention that the tool modifies the document in place, whether it respects undo, or any side effects like symmetry handling. It lacks comprehensive transparency 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: two sentences, no filler. It front-loads the core action ('Flood fill from a seed pixel') and immediately explains a critical behavioral toggle. 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?

Given the tool has 10 parameters, 4 required, and no output schema, the description is inadequate. It does not explain return values (e.g., success indication, render), error conditions, or interaction with layers and frames. The user would need external knowledge to invoke it confidently.

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 80%, so the baseline is 3. The description adds meaningful context for the 'contiguous' parameter by explaining its effect ('recolors every pixel that matches the seed color'), which goes beyond the schema's 'Default true'. For other parameters, the description adds no new semantics, but the key parameter is clarified.

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 'Flood fill from a seed pixel' with a specific verb (flood fill) and resource (pixels). It also explains the effect of the 'contiguous' parameter, distinguishing the tool's basic behavior from siblings like 'replace_color' or 'set_pixels'. The purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives such as 'replace_color' or 'set_pixels'. There is no mention of prerequisites, common patterns, or when not to use it. The description only states what it does, not when or why.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_rampB

Append a shading ramp built around a base color (dark to light). Shadows hue-shift toward cool, highlights toward warm.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoRamp tag and name prefix
stepsYes
doc_idYesDocument id
base_hexYes
hue_shiftNoDegrees of hue rotation per step (default 12)

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses the hue-shift behavior (cool shadows, warm highlights) and implies appending rather than replacing. However, lacking annotations, it does not cover side effects on existing palette, required permissions, or error conditions.

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?

Two sentences efficiently convey the core purpose and behavioral trait. No filler; front-loaded with the verb 'Append'.

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 5 parameters and no output schema, the description explains the high-level effect but omits parameter details, return values, and error scenarios. It is adequate but not fully comprehensive for an agent to use reliably.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description only hints at the base_hex parameter via 'base color' and mentions no other parameters. With 60% schema coverage, the description adds little beyond what is in the schema, failing to explain steps, hue_shift, or name.

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 appends a shading ramp around a base color, specifying dark-to-light progression and hue shifts. This verb-resource-action combination is distinct from sibling tools like 'shade' or 'set_palette_color'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. It does not mention prerequisites, limitations, or compare to related tools like 'shade' or 'dither_gradient'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

import_imageA

Import an external PNG supplied as exactly one of png_base64 or path onto the canvas. Resamples to width x height (default native size), maps to the document palette ('document') or extends the palette with median-cut colors ('extend'), then writes it to a layer at (x,y). With as_stamp it is stored as a named stamp instead (place later with paste_stamp). Unlike open_document (new doc) this drops pixels into the current canvas.

ParametersJSON Schema
NameRequiredDescriptionDefault
xNoLeft edge to place at (default 0)
yNoTop edge to place at (default 0)
clipNoSilently discard out-of-bounds pixels instead of rejecting (default false)
pathNoPath to a PNG on the server filesystem (mutually exclusive with png_base64)
frameNoFrame index, 0-based (default: active frame)
layerNoLayer id or name (default: active layer)
widthNoResample width (default native)
ditherNoDefault none
doc_idYesDocument id
heightNoResample height (default native)
renderNoInclude a render of the change (default true)
paletteNoDefault document; 'extend' appends extracted colors
as_stampNoStore as a named stamp instead of writing to a layer
max_colorsNoextend mode: colors to extract (default 16)
png_base64NoPNG file content, base64-encoded (mutually exclusive with path)
skip_transparentNoTreat transparent source pixels as skip (default true)

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 full burden. It explains resampling, palette mapping, and layer/stamp placement. However, it omits details on error behavior (e.g., what happens if both png_base64 and path are provided), aspect ratio handling during resizing, or constraints like file format limitations beyond PNG.

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?

Three sentences efficiently cover the core action, input specification, processing steps, and key distinction from a sibling. No fluff, front-loaded with the essential verb and resource.

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 complex tool with 16 parameters and no output schema or annotations, the description adequately covers the main use case and important constraints. Minor gaps exist, such as not mentioning the role of the clip parameter or skip_transparent behavior, but overall it provides sufficient context for an AI 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?

Schema coverage is 100%, so parameter descriptions are already detailed. The description adds value by explaining the overall workflow (resample, palette, write) and the as_stamp parameter's purpose, which goes beyond individual parameter descriptions. It also clarifies the mutual exclusivity of png_base64 and path.

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 imports an external PNG onto the canvas, specifies the two input methods (png_base64 or path), and distinguishes it from open_document by noting it drops pixels into the current canvas rather than creating a new document.

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 explicitly positions this tool for importing external PNGs onto the current canvas and contrasts with open_document. However, it does not provide exhaustive guidance on when to use alternatives like paste_stamp or other import methods, though it does mention as_stamp for stamp storage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lineB

Draw a Bresenham line. no_doubles removes L-shaped double pixels for pixel-perfect diagonals.

ParametersJSON Schema
NameRequiredDescriptionDefault
x1Yes
x2Yes
y1Yes
y2Yes
clipNoSilently discard out-of-bounds pixels instead of rejecting (default false)
frameNoFrame index, 0-based (default: active frame)
indexYesPalette index
layerNoLayer id or name (default: active layer)
doc_idYesDocument id
renderNoInclude a render of the change (default true)
no_doublesNo
ignore_symmetryNoSkip symmetry mirroring for this call (default false)

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears full responsibility. It names the Bresenham algorithm and explains no_doubles, but omits behaviors like default symmetry mode (implied by ignore_symmetry parameter), coordinate clipping (clip parameter), or any side effects. The transparent aspects are partial.

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?

Two concise sentences front-load the main action. No wasted words; every phrase adds value (e.g., 'Bresenham', 'no_doubles' explanation).

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?

No output schema exists, yet the description does not mention return values. Despite 12 parameters and several required ones, the description covers only the no_doubles behavioral detail. It misses context on prerequisites, coordinate system, or interaction with other tools (e.g., symmetry). Completeness is low.

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 58%, so baseline 3. The description adds meaning for no_doubles ('removes L-shaped double pixels for pixel-perfect diagonals'), which is absent in the schema. However, it does not explain the core parameters x1, y1, x2, y2 (endpoints) or the meaning of index (palette index). It adds some value but not fully compensating for the schema's gaps.

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 'Draw a Bresenham line', specifying the verb (draw) and resource (line) with a specific algorithm. This distinguishes it from sibling drawing tools like rect, ellipse, or set_pixels.

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 explicit guidance on when to use this tool versus alternatives like set_pixels or rect. The no_doubles mention implies a use case for diagonals, but no context on when to avoid or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lintA

Run pixel-art quality checks and return findings with a render circling them. Rules: orphans, doubles, banding, pillow_shading, unused_colors, near_duplicates, broken_outline, symmetry_drift, stray_alpha, tile_seams. Findings are advisory; nothing is auto-fixed.

ParametersJSON Schema
NameRequiredDescriptionDefault
frameNoFrame index, 0-based (default: active frame)
rulesNoSubset of rules to run (default: all)
doc_idYesDocument id
regionNoRegion: exactly one of 'rect', 'pixels', or 'selection'

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It discloses that findings are advisory and nothing is auto-fixed, implying read-only behavior. However, it does not explicitly state that no state changes 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 a single clear sentence followed by a bullet list of rules. It is front-loaded and concise with no wasted words.

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 4 parameters (including nested region) and no output schema, the description lacks details on the structure of returned findings and how region interacts. It provides basic behavioral context but is incomplete for complex usage.

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 baseline is 3. The description does not add meaning beyond the schema; it only lists the rules that can be passed via the 'rules' parameter but does not elaborate on frame, region, or doc_id.

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 'Run pixel-art quality checks and return findings with a render circling them', listing specific rules. This verb+resource combination is distinct from siblings like lint_waive and lint_unwaive.

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 explicit guidance on when to use this tool vs alternatives like lint_waive or lint_unwaive. The description only states that findings are advisory, but doesn't contextualize within the sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lint_unwaiveA

Remove a lint waiver by id, or all waivers for the document when no id is given.

ParametersJSON Schema
NameRequiredDescriptionDefault
doc_idYesDocument id
waiver_idNo

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears full responsibility. It clearly explains the behavior: removes a specific waiver if id is given, otherwise removes all waivers for the document. Additional context like reversibility or permissions would improve it.

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 sentence of 18 words, efficiently packaging the main action and conditional logic. No unnecessary words.

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 simplicity (2 params, no output schema), the description covers the core functionality well. It explains both modes of operation. Mentioning return values or error cases would be a minor improvement.

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 50% (only doc_id described). The description adds meaning to waiver_id by stating it is the id of the waiver to remove, and clarifies the optionality (if no id, all waivers are removed). This partially compensates for the missing schema 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 (remove), the resource (lint waiver/document), and the conditional behavior (by id or all). It distinguishes from siblings like lint_waive, which likely adds waivers.

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 explicitly covers two use cases (remove one waiver by id or all waivers for a document). It implies when to use each, but does not provide explicit when-not-to-use or alternative tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lint_waiveA

Persistently waive lint findings so they stay waived on every future pass (reported only as a count). Scope to a region to waive only there; omit the region to waive the whole rule.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNoWhy this is waived (shown in describe)
ruleYesRule to waive, one of: orphans, doubles, banding, pillow_shading, unused_colors, near_duplicates, broken_outline, symmetry_drift, stray_alpha, tile_seams
doc_idYesDocument id
regionNoRegion: exactly one of 'rect', 'pixels', or 'selection'

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations; description discloses persistence and counting behavior. Lacks details on side effects, reversibility, or error conditions, but covers core behavior adequately.

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?

Two concise sentences front-loaded with main action, then scope detail. No wasted words.

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?

Missing output schema and description does not mention return values or error handling. For a mutation tool, some indication of success/failure would be helpful.

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 covers all parameters at 100%. Description adds meaningful context for the region parameter (scope logic) and note (why waived), improving beyond basic schema descriptions.

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?

Clearly states it waives lint findings persistently, distinguishing from lint_unwaive (undo) and lint (find). Uses specific verb+resource and explains scope variation.

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?

Explicitly says when to use region for scoped waiving vs omitting for whole rule. Provides clear context but does not explicitly compare with lint_unwaive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_documentsA

List all documents, including ones persisted by other sessions sharing the data dir.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/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 documents from other sessions are included, which is a significant behavioral trait. However, it does not explicitly state that the operation is read-only or non-destructive, though that is implied by 'list'.

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 purpose and scope. No extraneous words or 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?

Given the tool has no output schema, the description should ideally indicate what the list contains (e.g., document names, IDs). It does not mention the return format, which is a minor gap. However, the tool is simple and low-complexity.

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?

There are no parameters, and the schema coverage is 100% (empty properties). The description adds meaning by explaining what the list contains, which goes beyond the empty schema. Baseline for 0 parameters is 4.

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 verb 'list' and resource 'documents', and specifies the inclusive scope (including from other sessions). It distinguishes from sibling tools like create_document or open_document by focusing on listing what already exists.

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 viewing all documents, but does not explicitly state when to use this tool versus alternatives like search or filtered listing. No exclusions or when-not-to-use guidance are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

load_referenceA

Store a reference PNG supplied as exactly one of png_base64 or path under an id for quantizing or side-by-side viewing.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoPath to a PNG on the server filesystem (mutually exclusive with png_base64)
ref_idYes
png_base64NoPNG file content, base64-encoded (mutually exclusive with path)

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It only discloses the mutual exclusivity constraint. It does not mention what happens if the ref_id already exists, error handling, file size limits, permission needs, or whether the operation is destructive.

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?

Single sentence, 20 words, front-loaded with verb and resource, no redundant information. Every word 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?

The description covers the main action and purpose, and references two sibling tools, but lacks details on error behavior, id uniqueness, path resolution, and output. For a storage tool with no output schema, more behavioral context 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?

Schema description coverage is 67%, and the description adds little beyond what the schema already provides (mutual exclusivity is restated). The purpose clause ('for quantizing or side-by-side viewing') gives context but does not enhance parameter semantics.

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 verb 'Store' and resource 'reference PNG', specifies that it is supplied via one of two mutually exclusive inputs (png_base64 or path), and identifies the purpose ('for quantizing or side-by-side viewing'), which distinguishes it from siblings like quantize_reference and view_reference.

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 context by mentioning the purpose and the mutual exclusivity of inputs, but does not explicitly state when to use this tool vs alternatives, nor does it provide guidance on when not to use it or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

merge_downA

Merge a layer into the one below it. Non-transparent top pixels replace bottom pixels; partial layer opacity is discarded.

ParametersJSON Schema
NameRequiredDescriptionDefault
layerNoLayer id or name (default: active layer)
doc_idYesDocument 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 full burden. It discloses key behaviors: non-transparent top pixels replace bottom pixels, and partial opacity is discarded. This provides useful transparency beyond the name.

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?

Two sentences, no filler. The core action and important behavioral details are front-loaded. Every sentence earns its place.

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 adequately explains the merge operation's pixel behavior and opacity handling. No output schema exists, but the return value is likely implicit. For a simple tool, it is complete enough.

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 descriptions for both parameters. The description adds no additional meaning beyond the schema, which already specifies the default for layer. Baseline 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 clearly states the action 'Merge a layer into the one below it', specifying the verb and resource. It distinguishes from sibling tools like reorder_layer or remove_layer.

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 does not explicitly state when to use or avoid this tool. It implies usage for merging layers, but lacks guidance on alternatives or prerequisites, though for a straightforward operation it is acceptable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mirror_regionB

Mirror a region in place across its own bounding-box axis.

ParametersJSON Schema
NameRequiredDescriptionDefault
axisYesvertical flips left-right
clipNoSilently discard out-of-bounds pixels instead of rejecting (default false)
frameNoFrame index, 0-based (default: active frame)
layerNoLayer id or name (default: active layer)
doc_idYesDocument id
regionYesRegion: exactly one of 'rect', 'pixels', or 'selection'
renderNoInclude a render of the change (default true)
ignore_symmetryNoSkip symmetry mirroring for this call (default false)

TDQS

B3.2/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 does not disclose that the operation modifies the image, potential side effects (e.g., out-of-bounds clipping with clip parameter), or any destructive nature. The minimal description omits critical behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, 12-word sentence is extremely concise and front-loaded. Every word adds value.

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 8 parameters, nested objects, and no output schema, the description is too minimal. Missing behavioral details, usage examples, and interaction between parameters.

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 baseline is 3. The description adds no extra parameter context beyond what the schema 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 the verb 'mirror' and the resource 'region', and the phrase 'in place across its own bounding-box axis' defines the scope. It distinguishes from sibling tools like move_region or shift_layer.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives. The description only states what it does without context for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mix_palette_colorsA

Blend two palette colors and store the result. The indexed-color way to make an in-between shade: t interpolates from color a (0) to color b (1). Appends a new entry by default, or overwrites into_index.

ParametersJSON Schema
NameRequiredDescriptionDefault
aYesPalette index
bYes
tNoBlend amount, 0=a .. 1=b (default 0.5)
nameNo
doc_idYesDocument id
into_indexNoOverwrite this existing entry instead of appending

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses append vs overwrite behavior and interpolation parameter t, but lacks details on error handling, side effects, or return value. Adequate but incomplete.

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?

Two sentences with front-loaded purpose and compact details. No unnecessary words.

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?

Covers key aspects but missing return value, error conditions, and prerequisites (e.g., palette existence). Adequate for simple tool but not thorough.

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 67% (4 of 6 parameters described). Description adds value by explaining t interpolation and into_index overwrite behavior, but does not describe the name parameter.

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?

Description clearly states it blends two palette colors and stores the result, with specific details about interpolation. Distinct from sibling tools like set_palette_color or add_palette_color.

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?

Explicitly states it's for creating in-between shades via interpolation, implying use case. No explicit when-not-to-use or comparison to alternatives, but context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

move_regionB

Move a region by (dx,dy), clearing its old location.

ParametersJSON Schema
NameRequiredDescriptionDefault
dxYes
dyYes
clipNoSilently discard out-of-bounds pixels instead of rejecting (default false)
frameNoFrame index, 0-based (default: active frame)
layerNoLayer id or name (default: active layer)
doc_idYesDocument id
regionYesRegion: exactly one of 'rect', 'pixels', or 'selection'
renderNoInclude a render of the change (default true)
ignore_symmetryNoSkip symmetry mirroring for this call (default false)

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses that the old location is cleared, a key behavioral trait. With no annotations, the description carries the full burden. It does not mention side effects on layer/frame, undo history, or error handling, but the core mutating behavior is stated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence of 9 words that directly conveys the core purpose. No superfluous content.

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?

Given the tool's complexity (9 params, nested region object, no output schema), the description omits details like how to specify the region (rect/pixels/selection), error conditions, and return values. It is insufficiently complete for an AI agent to use reliably without additional 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?

Schema description coverage is high (78%), so the schema already documents most parameters. The description adds no extra meaning to parameters beyond the schema. Baseline 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 clearly states the verb 'Move' and the resource 'region', specifying the operation of moving by (dx,dy) and clearing old location. It distinguishes from sibling tools like copy_region and cut_region.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like shift_layer or copy_region. No prerequisites or exclusions mentioned. Usage is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

open_documentA

Import a PNG image as a new document from exactly one of png_base64 or path, quantizing to at most max_colors colors. Max 256x256.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoPath to a PNG on the server filesystem (mutually exclusive with png_base64)
max_colorsNoMax palette colors (default 16)
png_base64NoPNG file content, base64-encoded (mutually exclusive with path)

TDQS

A3.9/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 burden. It discloses key behaviors: import, quantization, size limit, exclusivity of inputs. However, it doesn't mention error handling (e.g., if both or neither source given), whether the file must exist for path, or the return value after creation. Missing details lower 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?

Two concise sentences: first states action and exclusive sources, second states constraints. No filler words. Front-loads the core purpose. Every sentence 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?

The description covers input constraints adequately but omits output behavior (e.g., returns document ID?), error cases, and any side effects on existing documents. Given no output schema or annotations, more detail on success conditions 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?

Schema descriptions cover 100% of parameters. The description adds value by summarizing the quantization behavior of max_colors and reinforcing exclusivity of png_base64 and path. However, the schema already explains each parameter well, so the description's added semantics are marginal. Baseline 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 clearly specifies the action (import PNG as new document), the two exclusive sources, and constraints (quantizing, max_colors, max 256x256). It distinguishes this tool from siblings like 'create_document' (no import) and 'import_image' (likely no quantization or size limit).

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 states when to use (importing a PNG with quantization and size limit) and clarifies mutual exclusivity of the two sources. It doesn't explicitly mention when not to use or provide alternatives, but the constraints are clear enough for appropriate selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

outlineB

Draw a 1px border around all non-transparent pixels of the layer (or region). 'outside' draws into transparent pixels; 'inside' onto the shape's edge.

ParametersJSON Schema
NameRequiredDescriptionDefault
clipNoSilently discard out-of-bounds pixels instead of rejecting (default false)
modeYes
frameNoFrame index, 0-based (default: active frame)
indexYesPalette index
layerNoLayer id or name (default: active layer)
doc_idYesDocument id
regionNoRegion: exactly one of 'rect', 'pixels', or 'selection'
renderNoInclude a render of the change (default true)
ignore_symmetryNoSkip symmetry mirroring for this call (default false)

TDQS

B3.4/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 of explaining behavior. It explains the basic effect (1px border) and mode differences, but omits details such as whether the operation is destructive, permissions needed, or how it interacts with transparency. The description is adequate 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 concise, consisting of two sentences. It front-loads the main action and provides essential details without extraneous information.

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?

Given the tool has 9 parameters including nested objects and no output schema, the description is too sparse. It does not explain the region parameter, clip behavior, or return format. Essential context for proper usage is missing.

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 89% description coverage, so the baseline is 3. The description adds value by explaining the 'mode' parameter ('outside' draws into transparent pixels; 'inside' onto the shape's edge). Other parameters like clip, region, etc., are not elaborated beyond what the schema 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 the tool draws a 1px border around non-transparent pixels, specifying two modes ('outside' and 'inside'). It distinguishes the tool's action with a specific verb and resource, and differentiates between the mode options.

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 like line, rect, or ellipse. It does not mention scenarios, prerequisites, or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pack_sprite_sheetA

Pack document frames into a transparent PNG sprite sheet in row-major order and write it to disk. Sprites may have different sizes; cell dimensions default to the largest sprite. This is delivery output and returns no preview image.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoOutput path (default: a unique PNG in the exports directory)
alignNoAlignment of smaller sprites within their cells (default top_left)
marginNoTransparent border around the sheet (default 0)
columnsNoColumns in the sheet (default: roughly square)
spacingNoTransparent pixels between cells (default 0)
spritesYes
cell_widthNoCell width (default: widest sprite)
cell_heightNoCell height (default: tallest sprite)
return_base64NoAlso return the PNG bytes as base64 text (default false)

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 full burden. It discloses key behavioral traits: writes to disk, no preview returned, variable sprite sizes with automatic cell sizing, and optional base64 return. However, it does not mention whether the document is modified or other 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?

Two concise sentences with no wasted words. The first sentence provides the core operation and order, the second adds crucial context about delivery nature and the lack of preview. Every sentence earns its place.

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 9 parameters with complex defaults and no output schema, the description adequately covers the overall behavior, output format, and key defaults. It could mention that sprites are frames from documents, but that is evident from the 'doc_id' and 'frame' fields in the schema. Missing explicit mention of row-major order impact on layout, but it's clear enough.

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 high (89%), so baseline is 3. The description adds value by explaining 'cell dimensions default to the largest sprite', 'transparent border', and 'transparent pixels between cells', which directly clarify parameters margin, spacing, cell_width, cell_height. This goes beyond schema descriptions.

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 specifies the action ('Pack document frames'), the output ('transparent PNG sprite sheet'), and the order ('row-major'). It also distinguishes itself by stating 'This is delivery output and returns no preview image,' differentiating from possible preview tools among siblings.

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 lacks explicit guidance on when to use this tool versus alternatives like 'export' or 'split_sprite_sheet'. It only implies final delivery by stating 'delivery output' and 'no preview', but does not provide when-not-to-use or name alternative tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

paste_gridA

Bulk-write a region from grid text (one char per pixel, '.'=transparent, then 1-9, a-z, A-Z, '#', '@' for palette indices 1-63; rows top to bottom). The workhorse for blocking in shapes.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesLeft edge of where the grid lands
yYesTop edge of where the grid lands
clipNoSilently discard out-of-bounds pixels instead of rejecting (default false)
frameNoFrame index, 0-based (default: active frame)
layerNoLayer id or name (default: active layer)
doc_idYesDocument id
renderNoInclude a render of the change (default true)
grid_textYesRows of palette-index characters, one line per row
ignore_symmetryNoSkip symmetry mirroring for this call (default false)
skip_transparentNoTreat '.' as skip-pixel instead of write-transparent (default false)

TDQS

A4.2/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 full burden. It explains the character encoding and behavior of '.' as transparent, but does not explicitly state that the operation is destructive (overwrites pixels) or mention other behavioral traits like boundary handling.

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, both concise and front-loaded with essential information. It packs the entire character mapping and usage intent into a single sentence, with no redundant words.

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 complexity (10 parameters, 4 required) and lack of output schema or annotations, the description covers the core functionality well. It explains the input format and key parameters, though it doesn't describe return values or error handling, which is acceptable for a write tool.

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%, so baseline is 3. The description adds significant value by explaining the grid text format (character mapping to palette indices) and the meaning of '.' and other characters, which goes beyond the schema's description of 'Rows of palette-index characters'.

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 'Bulk-write a region from grid text', specifying the verb (write), resource (region), and format (grid text with character mapping). It distinguishes from sibling tools like paste_stamp which likely paste image data.

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 says 'The workhorse for blocking in shapes', implying it is the primary tool for that task and suggesting when to use it. However, it does not explicitly state when not to use it or provide alternatives, but the sibling list offers other drawing tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

paste_stampA

Paste a named stamp with optional flips and rotation. Transparent stamp pixels are skipped by default. Unlike other tools, paste_stamp ignores document symmetry by default: stamps are placed content, and mirroring would silently flip deliberate asymmetry.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYes
yYes
clipNoSilently discard out-of-bounds pixels instead of rejecting (default false)
nameYes
frameNoFrame index, 0-based (default: active frame)
layerNoLayer id or name (default: active layer)
doc_idYesDocument id
flip_hNo
flip_vNo
renderNoInclude a render of the change (default true)
rotateNo
ignore_symmetryNoDefault TRUE for this tool. Pass false to mirror the paste across the symmetry axis (warns if the stamp content is asymmetric).
skip_transparentNoDefault true

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description fully bears the burden of disclosure. It transparently states that transparent pixels are skipped by default and that symmetry is ignored, explaining the rationale. It does not cover error handling or stamp existence validation, but the key behavioral defaults are well covered.

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, using only three sentences to convey purpose, default transparency behavior, and key symmetry distinction. Every sentence earns its place 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?

Given the tool has 13 parameters and no output schema, the description is adequate but lacks details on failure modes, required parameters (x, y, name), and the effects of optional parameters like clip, frame, and render. It focuses on the most important behavioral traits but misses some contextual details.

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 description adds value beyond the input schema by explaining the default behaviors for skip_transparent and ignore_symmetry, and emphasizes that flips and rotation are optional. With only 54% schema description coverage, it compensates by highlighting the most critical parameter behaviors.

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 pastes a named stamp with optional flips and rotation, directly indicating its primary function. It also distinguishes from siblings by noting the default symmetry behavior, making its specific use case clear.

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 a hint about when to use this tool versus others by mentioning that it ignores document symmetry by default, contrasting with other tools. However, it does not explicitly name alternative tools or provide exhaustive when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_gifA

Render the animation as a GIF (on checkerboard background). Human-facing output only: most clients show a GIF as a single still in model context, so it verifies nothing — use view_frames to check motion.

ParametersJSON Schema
NameRequiredDescriptionDefault
loopNoDefault true
scaleNoDefault 4
doc_idYesDocument id

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses important behavior: renders on checkerboard, human-facing only, and that most clients show a single still, so it doesn't verify motion. No annotations to contradict.

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?

Two sentences, front-loaded with the core purpose, then provides critical usage guidance. No wasted words.

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 no output schema, description adequately explains output (GIF) and includes important caveat about motion verification. Could mention return type but sufficient for intended use.

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 covers 100% of parameters with descriptions. Description adds no extra parameter meaning beyond 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?

Clearly states it renders animation as a GIF with checkerboard background. Differentiates from sibling view_frames by noting it doesn't verify motion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states human-facing output only and advises using view_frames to check motion, providing clear when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

quantize_referenceA

Downsample a reference to the given size and map it to the document palette ('document') or to a fresh median-cut palette appended to the document ('auto'). Optionally write the result into a layer.

ParametersJSON Schema
NameRequiredDescriptionDefault
widthYes
ditherNoDefault: none
doc_idYesDocument id
heightYes
ref_idYes
paletteNoDefault: document
to_layerNoLayer id or name to write the result into (size must match the canvas)
max_colorsNoauto mode: colors to extract (default 16)

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 carries full burden. It discloses downsampling, palette mapping, and optional layer writing, but does not clarify side effects (e.g., whether original reference is modified) or return value. Moderate transparency, but missing behavioral details.

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 (approximately 30 words), front-loading the core action and options. Every sentence provides value; no redundancy or 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?

With 8 parameters, no output schema, and no annotations, the description covers the main functionality but lacks details on defaults for dither and max_colors, and does not explain the absence of to_layer. It 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 description coverage is 63%, and the description does not add significant meaning beyond the schema. For instance, width and height are only described with min/max, and palette options are already enumerated. The description adds no new semantics, so baseline score 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 (downsample and map palette), the resource (reference), and the two palette modes ('document' or 'auto') with optional layer output. It effectively distinguishes the tool from siblings by specifying its unique quantization behavior.

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 outlines the two palette modes and optional layer writing, but does not provide explicit guidance on when to use this tool over alternatives like extract_palette or mix_palette_colors. Usage context is implied but not clearly stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rectC

Draw a rectangle (outline or filled).

ParametersJSON Schema
NameRequiredDescriptionDefault
hYes
wYes
xYes
yYes
clipNoSilently discard out-of-bounds pixels instead of rejecting (default false)
frameNoFrame index, 0-based (default: active frame)
indexYesPalette index
layerNoLayer id or name (default: active layer)
doc_idYesDocument id
filledYes
renderNoInclude a render of the change (default true)
ignore_symmetryNoSkip symmetry mirroring for this call (default false)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided; description does not mention document modification, coordinate handling, or whether changes are destructive. Minimal behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single short sentence is concise, but lacks structure and detail. Could be expanded without losing conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 12 parameters and no output schema, description fails to explain coordinates, return values, or side effects. Incomplete for a complex drawing tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Description only hints at 'filled' parameter; does not explain x, y, w, h, index, or other parameters. Schema has some descriptions but coverage is 58%.

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?

Description clearly states tool draws a rectangle, optionally filled or outlined. Distinguishes from sibling tools like line and ellipse.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives like flood_fill or outline. No prerequisites or context provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

redoB

Redo previously undone edit(s).

ParametersJSON Schema
NameRequiredDescriptionDefault
stepsNoHow many edits to redo (default 1)
doc_idYesDocument id
renderNoInclude a render of the change (default true)

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description carries full burden but only states the action. It does not disclose that redo only works if there are undone edits, potential side effects, or state changes. This is insufficient for an agent to anticipate behavior.

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 concise sentence with no wasted words. However, it could be slightly expanded to include key behavioral context without sacrificing conciseness.

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 simple tool with no output schema, the description omits important context like the prerequisite of having undone edits and the impact on document state. It feels incomplete given the richness of sibling tools.

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% (all three parameters have descriptions). The tool description adds no additional context beyond the schema, so baseline 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 'Redo previously undone edit(s)' is a specific verb+resource that clearly states the tool's action. It distinguishes from the sibling 'undo' by the word 'redo', making its purpose unambiguous.

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 when-not-to-use guidance is provided. The description implies usage after an undo operation, but it does not mention prerequisites or alternatives. It meets the minimum viable standard.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_frameC

Delete a frame.

ParametersJSON Schema
NameRequiredDescriptionDefault
frameYes
doc_idYesDocument id

TDQS

C2.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description only says 'Delete a frame' without disclosing side effects (e.g., impact on other frames, permissions needed, or return value). This leaves significant behavioral ambiguity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise but under-specified. While front-loaded, it lacks essential details about parameters and behavior, so it fails to earn its brevity.

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?

Given the tool's simplicity (2 parameters, no output schema), the description is incomplete. It does not clarify the frame parameter's role or return behavior, lacking completeness for effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 50% coverage (only doc_id described). The description does not explain the 'frame' parameter beyond the schema's type and minimum, so it adds no semantic meaning.

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 'Delete a frame' clearly states the action and resource. It distinguishes from sibling tools like add_frame or reorder_frame, though it lacks context about what 'frame' means here.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. The description does not specify prerequisites or when not to use it, making it purely factual without context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_layerB

Delete a layer and its pixels on every frame.

ParametersJSON Schema
NameRequiredDescriptionDefault
layerYesLayer id or name
doc_idYesDocument id

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden but only states the action and scope. It omits important behavioral traits such as undoability, permissions, or side effects on other layers.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no wasted words, efficiently conveying the core action.

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 simple tool with two parameters and no output schema, the description is minimally adequate but lacks safety warnings or notes on irreversibility, which would be helpful for a destructive 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?

Schema coverage is 100% with clear parameter descriptions. The tool description adds no additional meaning about parameters beyond what the schema provides, so baseline 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 verb 'Delete' and the resource 'layer', and specifies that it affects pixels on every frame, distinguishing it from sibling tools like 'add_layer' or 'rename_layer'.

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 (e.g., 'set_layer_visibility' or 'merge_down'), nor any when-not-to-use conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_palette_colorA

Delete a palette entry, remapping its pixels to remap_to. Higher indices shift down by one.

ParametersJSON Schema
NameRequiredDescriptionDefault
indexYesPalette index
doc_idYesDocument id
renderNoInclude a render of the change (default true)
remap_toYesPalette index existing pixels are remapped to

TDQS

A3.6/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 key behaviors (remapping pixels, index shifting) but omits details like required permissions, reversibility, or side effects on other elements.

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?

Two sentences with no redundant words. The core action and key behavioral nuance (index shift) are front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description is incomplete. It does not mention return values, error cases (e.g., index out of bounds), or prerequisites like palette size constraints.

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 description adds significant meaning beyond the schema: it explains that `remap_to` is where existing pixels go and that higher indices shift down. The schema covers 100% of parameters with descriptions, but the description ties them together operationally.

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 verb 'Delete' and resource 'palette entry', and specifies the remapping behavior and index shifting. This distinguishes it from sibling tools like `set_palette_color` or `swap_palette_indices`.

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 only implicitly states when to use (delete a palette entry) but provides no explicit guidance on when not to use it, prerequisites, or alternative tools (e.g., `replace_color` or `adjust_palette_color`).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rename_layerC

Rename a layer.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
layerYes
doc_idYesDocument id

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries full burden. It only states the rename action without disclosing behavioral traits like whether the layer must exist, return values, or side effects. Minimal transparency.

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 extremely concise at one sentence. For a simple rename operation, this brevity is acceptable, but it comes at the cost of omitting helpful details. The single 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?

For a tool with three required parameters and no output schema, the description fails to explain constraints, error conditions, or behavior. Sibling tools provide context, but the description alone is incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 33% schema description coverage, only doc_id has a description. The description adds no meaning beyond the schema for the three parameters (doc_id, layer, name). Parameters remain vague.

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 'Rename a layer.' clearly states the verb (rename) and resource (layer). It distinguishes from sibling tools like add_layer, remove_layer, and reorder_layer. However, it lacks context such as the document or layer specification.

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 like reorder_layer or set_layer_visibility. The description does not mention prerequisites or common use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reorder_frameC

Move a frame to a new position on the timeline.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYes
fromYes
doc_idYesDocument id

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, and the description does not explain side effects (e.g., whether moving shifts other frames, if indices are 0-based or 1-based, or if it's a swap). Lacks details on behavior.

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?

Single concise sentence, front-loaded with purpose. No unnecessary words, but could add more detail without losing conciseness.

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 3-parameter tool with no output schema, the description is insufficient. It does not convey the exact mechanics of the reordering (e.g., shift vs swap, index ranges). Leaves ambiguity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 33% (only doc_id described). The description does not explain 'from' and 'to' parameters (e.g., indices, constraints). Fails to compensate for low 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 states the action (move), resource (frame), and target context (new position on timeline), distinguishing it from siblings like add_frame and remove_frame.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives (e.g., reorder_layer or other frame operations). Lacks context about prerequisites or constraints.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reorder_layerB

Move a layer to a new position in the stack (0 = bottom).

ParametersJSON Schema
NameRequiredDescriptionDefault
toYes
layerYes
doc_idYesDocument id

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description bears full burden. It does not disclose potential side effects (e.g., order of other layers), error handling (e.g., invalid target position), or whether the operation is undoable. Only minimal behavioral context is given.

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 sentence of 13 words, extremely concise and front-loaded with the key action. No unnecessary information.

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?

Given no output schema, no annotations, and 3 parameters, the description leaves many gaps: no return value, no error conditions, no undo behavior. For a layer reordering tool, more context is needed for proper invocation.

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 description adds meaning by explaining the 'to' parameter as a position with 0=bottom, which the schema only specifies as integer minimum 0. However, it does not clarify the 'layer' parameter (e.g., whether it is a name or id). With schema coverage at 33%, the description partially compensates.

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 moves a layer to a new position in the stack, with '0 = bottom' clarifying the parameter. It distinguishes this from sibling tools like add_layer, remove_layer, or rename_layer which perform different operations.

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 usage guidance is provided. There is no mention of when to use this tool, prerequisites (e.g., layer must exist), or alternatives among sibling tools like reorder_frame for frames.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

replace_colorA

Replace every pixel of one palette index with another on a layer (palette untouched). Optionally restricted to a region.

ParametersJSON Schema
NameRequiredDescriptionDefault
frameNoFrame index, 0-based (default: active frame)
layerNoLayer id or name (default: active layer)
doc_idYesDocument id
regionNoRegion: exactly one of 'rect', 'pixels', or 'selection'
renderNoInclude a render of the change (default true)
to_indexYes
from_indexYesPalette index

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description adds some behavioral context (palette untouched, region restriction) but lacks details on side effects (e.g., pixel modification is permanent, undo behavior, or performance implications). Adequate but not thorough.

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?

Single sentence efficiently conveys core purpose and optional region feature. No fluff, front-loaded with key 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 moderate-complexity tool (7 params, nested region, no output schema), the description covers the main operation and key option. Could mention that it modifies layer in place, but overall sufficient.

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 high (86%); description adds marginal value beyond schema. It contextualizes region restriction but does not elaborate on parameter meanings 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?

Description clearly states the tool replaces pixels of one palette index with another on a layer, specifies palette is untouched, and mentions optional region restriction. This distinguishes it from siblings like set_palette_color or swap_palette_indices.

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?

Description implies usage for color replacement without modifying palette, but does not explicitly state when to use vs. alternatives like swap_palette_indices or set_palette_color. No when-not or alternative references.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

resize_canvasA

Resize the canvas. Existing content is placed according to the anchor; new area is transparent. Clears saved selections.

ParametersJSON Schema
NameRequiredDescriptionDefault
widthYes
anchorNoWhere existing content sits in the new canvas (default center)
doc_idYesDocument id
heightYes
renderNoInclude a render of the change (default true)

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description reveals important behaviors: content placement via anchor, transparent new area, and clearing saved selections. However, it does not disclose what happens when width/height is smaller than current canvas (e.g., cropping), nor any permissions or undo behavior.

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?

Three sentences with no extraneous content. The most critical information is front-loaded: 'Resize the canvas'.

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 description covers anchor behavior and selection clearing, but omits details on cropping when dimensions decrease, the render parameter, and return value. Given five parameters and no output schema, more detail is expected.

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 60%. The description mentions 'anchor' and 'transparent new area', which adds context but does not fully compensate for the missing parameter descriptions. The schema already describes anchor and render, but width/height lack descriptions; the description does not clarify them.

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 explicitly states 'Resize the canvas' which is a specific verb and resource. It distinguishes from siblings by detailing unique behaviors like anchor placement and clearing selections, which are not found in other sibling tools.

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 vs alternatives. There is no mention of prerequisites, when not to use, or comparisons to sibling tools like shift_layer or mirror_region.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

save_selectionC

Store a named selection that region parameters can reference later.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
doc_idYesDocument id
regionYesRegion: exactly one of 'rect', 'pixels', or 'selection'

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It states the tool stores a named selection but does not disclose whether the operation is reversible, requires authentication, or has side effects like overwriting existing selections. This is insufficient for a save-like operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no wasted words. However, it could be slightly more detailed without becoming verbose. The front-loading is good as the verb 'Store' immediately conveys the action.

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?

Description does not mention return values or confirmation, and the tool has a nested object parameter requiring explanation beyond the schema. Given no output schema, the description should clarify what happens upon success or failure. It 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 67%, with doc_id and region described. The description does not add any parameter-specific meaning beyond the schema. The 'name' parameter lacks a description, but the overall schema is moderately explanatory. Baseline 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 'Store a named selection that region parameters can reference later' clearly states the action and resource. It distinguishes the tool from siblings like copy_region or paste_stamp by specifying the saving for later reference, though it could be more explicit about the 'region parameters' context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives is provided. The description implies it is used for saving selections for later reference, but does not explain when to prefer it over direct region definitions or other selection tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scatterA

Randomly scatter pixels from a set of palette indices across a region, at the given coverage density (0-1). For grain and noise: stone, dirt, wood texture. Deterministic for a given seed, so the same call reproduces the same grain. weights biases which indices are picked.

ParametersJSON Schema
NameRequiredDescriptionDefault
clipNoSilently discard out-of-bounds pixels instead of rejecting (default false)
seedNoRNG seed for reproducibility (default 0)
frameNoFrame index, 0-based (default: active frame)
layerNoLayer id or name (default: active layer)
doc_idYesDocument id
regionYesRegion: exactly one of 'rect', 'pixels', or 'selection'
renderNoInclude a render of the change (default true)
densityNoFraction of region pixels to paint (default 0.5)
indicesYesPalette indices to scatter (index 0 carves transparent holes)
weightsNoRelative pick weight per index (must match indices length)
ignore_symmetryNoSkip symmetry mirroring for this call (default false)

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description carries the full burden. It discloses randomness, determinism, and weights biasing. However, it does not explicitly state that it modifies the layer or whether it overwrites existing pixels, leaving some behavioral 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 three sentences, front-loaded with the main action, then use cases and determinism/weights. Every sentence adds value without 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?

With 11 parameters and no output schema, the description covers key points but lacks explanation of return values (e.g., render) and precise behavior of density. It is adequate but not fully comprehensive.

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 each parameter. The main description adds minimal extra meaning ('weights biases which indices are picked'), so it meets the baseline but does not exceed.

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 ('scatter pixels') and the resource ('palette indices across a region'), with specific use cases (grain, noise, textures). It is uniquely distinguished from sibling tools like set_pixels, line, etc.

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 specific use cases ('for grain and noise: stone, dirt, wood texture') and notes determinism for reproducibility. It lacks explicit when-not-to-use or alternative tool comparisons, but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_active_frameC

Set the default target frame for editing tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
frameYes
doc_idYesDocument id

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description must fully disclose behavior. It only states the purpose without mentioning side effects (e.g., whether an invalid frame index creates a new frame or errors) or any state changes beyond setting the default target.

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 sentence that is front-loaded and contains no unnecessary words. It efficiently conveys the core purpose, though additional context could be added without harming conciseness.

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?

Given the simplicity of the tool (2 parameters, no output schema), the description is minimally complete but lacks essential details like error conditions (invalid frame index), return value, or prerequisites (document must exist). For an agent to use it correctly, more context is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers 50% of parameters (doc_id has a description). The tool description does not add any further meaning to the parameters, such as clarifying that 'frame' is a 0-based index or the expected format for doc_id.

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 'Set the default target frame for editing tools' clearly identifies the action (set) and the resource (default target frame). It distinguishes the tool from sibling tools like add_frame or set_frame_duration that deal with frame management but with 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 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 (e.g., when to change active frame, prerequisites like document existence). No when-not or context hints are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_active_layerB

Set the default target layer for editing tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
layerYesLayer id or name
doc_idYesDocument id

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavioral traits. It only states the basic purpose, omitting details like failure modes (e.g., invalid layer/document), side effects, or prerequisites. This leaves significant gaps for an agent.

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?

Single sentence of 8 words, no redundancy. It is efficient, though could marginally expand to include a hint about what constitutes an editing tool without becoming overly long.

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?

Given no output schema and no annotations, the description lacks contextual details about expected behavior, error states, or usage conditions. It feels incomplete for a tool with two required parameters.

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 descriptions for both parameters. The description does not add extra meaning beyond the schema, which meets the baseline but does not compensate for any gaps.

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 (set) and the resource (default target layer for editing tools). It distinguishes this tool from sibling tools like add_layer, remove_layer, set_layer_visibility, and set_active_frame.

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 before editing operations, but provides no explicit guidance on when to use versus alternatives, nor exclusion criteria. The context is clear but not fully elaborated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_frame_durationC

Set how long a frame displays (ms).

ParametersJSON Schema
NameRequiredDescriptionDefault
frameYes
doc_idYesDocument id
duration_msYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must fully disclose behavioral traits. It only states the action, omitting side effects (e.g., mutation, undoability, whether the document is modified in place). This is insufficient 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise at one sentence, with no redundancy. However, it could be structured to include more information without sacrificing brevity.

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?

Given the complexity (3 required params, no annotations, no output schema), the description is incomplete. It lacks return value info, side effects, and any context that an agent would need to safely invoke the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 33% (only doc_id has a description). The description does not clarify the meaning of 'frame' (e.g., index, ID), nor does it explain the significance of the duration constraints beyond what the parameter name implies. Minimal added value.

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 verb 'Set' and the resource 'how long a frame displays' with the unit 'ms'. It unambiguously defines the tool's function and distinguishes it from sibling tools like set_active_frame or add_frame.

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 vs alternatives, nor does it mention prerequisites (e.g., the document must exist, the frame must exist). The agent is left without context for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_layer_lockC

Lock or unlock a layer against edits.

ParametersJSON Schema
NameRequiredDescriptionDefault
layerYes
doc_idYesDocument id
lockedYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Description states lock/unlock effect but no annotations provided. Lacks details on side effects, permissions, or what 'against edits' means in practice (e.g., can the layer still be selected?). Minimal behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence is concise but under-specified. No wasted words, but lacks structure or additional context that would aid understanding without being verbose.

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?

Given low complexity (3 params, no output schema), the description should explain more. Lacks return value info, clarification on boolean locked, and integration with sibling tools. Insufficient for correct agent invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 33% (only doc_id described). Description adds no parameter meaning beyond schema; e.g., 'locked' parameter not clarified (true=locked? false=unlocked?). Does not compensate for missing schema descriptions.

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?

Description clearly states it locks or unlocks a layer against edits, with specific verb and resource. Distinguishes from siblings like set_layer_visibility (visibility) and set_active_layer (active layer).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use vs. alternatives, no prerequisites or when-not-to-use. For example, does the layer need to exist? Should this be called only after adding a layer?

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_layer_visibilityC

Show or hide a layer.

ParametersJSON Schema
NameRequiredDescriptionDefault
layerYes
doc_idYesDocument id
visibleYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden but only states a brief mutating action. It does not disclose whether the operation is reversible, affects other layers, triggers side effects, or requires specific permissions, leaving significant behavioral traits unclear.

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?

Single sentence, no redundancy, and the core purpose is front-loaded. However, the extreme brevity risks underspecification, but for a simple toggle it is appropriately concise.

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?

Given no output schema, low schema coverage, and no annotations, the description is insufficiently complete. It does not explain return values, error states, or the exact behavior when a layer is already in the requested visibility state, which is critical for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only 33% schema description coverage, and the description adds no parameter-specific meaning. The 'visible' boolean and 'layer' string are not elaborated (e.g., layer name vs ID, whether visible is a toggle or explicit set), so an agent must infer from names alone.

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 'Show or hide a layer.' clearly states the action and resource. It distinguishes from sibling tools like set_layer_lock or add_layer by focusing on visibility toggling, but lacks specificity about the layer identification method.

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 about when to use this tool versus alternatives, nor are there any prerequisites or exclusions mentioned. The description does not help the agent decide between, e.g., set_layer_visibility and other layer manipulation tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_palette_colorB

Change the color (and optionally name) of a palette entry. All pixels using the index update visually.

ParametersJSON Schema
NameRequiredDescriptionDefault
hexYes
nameNo
indexYesPalette index
doc_idYesDocument id
renderNoInclude a render of the change (default true)

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds the behavioral detail that all pixels using the index update visually, which is useful. However, with no annotations provided, it omits other important aspects like whether the operation requires specific permissions, is destructive, or what happens if the index does not exist.

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 action, and contains no redundant information. Every word contributes to clarity.

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 no output schema and no annotations, the description should cover return behavior and failure scenarios. It mentions the visual update but not whether the tool returns a success indicator or what happens if the palette entry or document is invalid. This leaves some gaps for the agent.

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 60%, with 'hex' and 'name' lacking descriptions. The description clarifies 'color (and optionally name)', adding meaning to these parameters. However, it does not specify format restrictions (e.g., hex format) or interaction between parameters, so the improvement over schema is modest.

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 changes the color and optionally name of a palette entry, with a specific verb and resource. It does not explicitly distinguish from sibling tools like 'adjust_palette_color' or 'replace_color', but the focus on 'palette entry' and 'index' makes the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives such as 'add_palette_color' or 'adjust_palette_color'. No prerequisites or when-not-to-use conditions are provided, leaving the agent to infer context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_pixelsC

Set individual pixels to palette indices.

ParametersJSON Schema
NameRequiredDescriptionDefault
clipNoSilently discard out-of-bounds pixels instead of rejecting (default false)
frameNoFrame index, 0-based (default: active frame)
layerNoLayer id or name (default: active layer)
doc_idYesDocument id
pixelsYes
renderNoInclude a render of the change (default true)
ignore_symmetryNoSkip symmetry mirroring for this call (default false)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description should disclose behavioral traits such as overwriting behavior, support for alpha, or side effects. It fails to mention any of the parameter-driven behaviors like clipping, frame selection, or symmetry handling.

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 short sentence with no wasted words. However, it is under-specified for the tool's complexity, so while concise, it sacrifices completeness.

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?

Given the tool's 7 parameters and many siblings, the description is insufficient. It does not explain that pixels can be set in bulk, nor does it describe the context of indexed images or the effect of parameters like clip or render.

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 86%, so the schema already documents parameters well. The description adds no additional meaning beyond what the schema provides, which is acceptable but not enhancing.

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 sets individual pixels to palette indices, which distinguishes it from shape-drawing siblings like line, rect, and ellipse. However, it could be more explicit about the indexed context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. The description does not mention when not to use it or provide any context for decision-making.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_symmetryA

Set the document symmetry mode. While set, drawing and region tools mirror writes across the canvas center automatically.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeYesvertical mirrors left-right; horizontal mirrors top-bottom
doc_idYesDocument id

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description must cover behavior. It states that symmetry affects drawing/region tools automatically but does not mention reversibility, effects on existing content, or authorization needs. 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?

Two concise sentences with no wasted words. Front-loaded with the verb and resource, immediately clear.

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 simplicity (2 params, no output schema, no annotations), the description is fairly complete. It could mention return value or side effects, but it adequately covers the core functionality.

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 description does not need to add much. The main description does not provide extra parameter meaning beyond schema, meeting the baseline.

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 sets the document symmetry mode and explains its effect (mirroring writes across canvas center). It is specific and distinct from sibling tools like set_tile_mode or set_active_layer.

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 implies when to use (when symmetry is desired for drawing/region tools) and provides context. It does not explicitly state when not to use, but no direct alternative exists among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_tile_modeA

Set seamless-tiling mode. While set, drawing tools wrap across the tiling edges (a stroke off one side continues on the opposite side) and the tile_seams lint rule activates. 'horizontal' tiles left-right, 'vertical' top-bottom, 'both' for a full repeat. Use view_tiled to check seams.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeYes
doc_idYesDocument id

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully discloses the behavioral changes: drawing tools wrap across edges and the tile_seams lint rule activates. However, it does not mention reversibility or other 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 contains no unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (two parameters, no output schema), the description provides complete context: what the tool does, how each mode works, and the effect on drawing and lint.

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 50%. The description adds meaning to the 'mode' parameter by explaining each enum value ('horizontal' tiles left-right, etc.), but does not add extra detail for 'doc_id' 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 sets seamless-tiling mode and explains the wrapping behavior and lint rule activation. It distinguishes from siblings by mentioning 'view_tiled' as a related tool.

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 explains when to use the tool and what each mode does. It suggests using 'view_tiled' to check seams, providing a clear alternative, but does not explicitly state when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

shadeA

Darken or lighten existing pixels. A pixel whose color is part of a ramp steps along that ramp; otherwise it snaps to the nearest palette color in that direction. mode 'ramp' only moves ramp colors, 'nearest' ignores ramps, 'auto' (default) does ramp-then-nearest. Operates on the whole layer unless a region is given.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoDefault auto
frameNoFrame index, 0-based (default: active frame)
layerNoLayer id or name (default: active layer)
stepsNoHow many shades to move (default 1)
doc_idYesDocument id
regionNoRegion: exactly one of 'rect', 'pixels', or 'selection'
renderNoInclude a render of the change (default true)
directionYes

TDQS

A4.4/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 operation on whole layer unless region given, the ramp/nearest snapping logic, and mode defaults. This is detailed, though could mention undo implications.

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?

Two sentences pack in the main verb, behavior details, mode explanations, and region note. No wasted words; front-loaded and efficient.

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 8 parameters including nested region objects and no output schema, the description covers the core behavior, default values, and region usage. It is sufficient for an experienced user.

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 high (88%), and the description adds meaning beyond the schema by explaining mode behavior, default auto, and region structure. It complements the schema well.

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 it darkens or lightens pixels, explains ramp vs nearest behavior, and specifies the three modes. This is specific and distinguishes from sibling tools like replace_color or set_pixels.

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?

It explains the three modes and default behavior, providing clear context on when each mode applies. However, it does not explicitly compare to alternatives or state when not to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

shift_layerB

Translate the whole layer by (dx,dy), optionally wrapping around the edges.

ParametersJSON Schema
NameRequiredDescriptionDefault
dxYes
dyYes
wrapNo
frameNoFrame index, 0-based (default: active frame)
layerNoLayer id or name (default: active layer)
doc_idYesDocument id
renderNoInclude a render of the change (default true)

TDQS

B3.2/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 behaviors. It states 'Translate' implying modification but does not clarify if it's destructive, what happens to pixels that shift out of bounds (clipping vs wrapping beyond wrap parameter), or authentication requirements.

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?

Single sentence of 12 words, front-loaded with the core action and optional behavior. No redundant or extra information.

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?

Despite having 7 parameters and no output schema or annotations, the description is extremely brief. It omits important context like prerequisites (e.g., layer must exist), destructive nature, return value (render?), and behavior beyond translation (e.g., whether the operation is undoable).

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 description explains dx/dy as translation offsets and mentions 'wrapping around the edges' for the wrap parameter, adding value over the schema where dx, dy, and wrap lack descriptions. However, it does not specify units or range for dx/dy, and the other parameters have schema descriptions, so the net addition is moderate.

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 'Translate the whole layer by (dx,dy)', specifying the verb 'Translate', the resource 'whole layer', and the parameters (dx,dy). It also mentions optional wrapping, distinguishing it from other transformation tools like move_region which shift selections.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives (e.g., move_region, set_pixels). No information about prerequisites, limitations, or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

split_sprite_sheetA

Split a regular PNG sprite sheet into separate pixel-mcp documents in row-major order. Provide exactly one of png_base64 or path. Supports sheet margins and spacing between cells; transparent cells are skipped by default.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoPath to a PNG on the server filesystem (mutually exclusive with png_base64)
rowsNoRows to read (default: all complete rows that fit)
marginNoTransparent or decorative border around every edge of the sheet (default 0)
columnsNoColumns to read (default: all complete columns that fit)
spacingNoPixels between adjacent cells (default 0)
max_colorsNoMaximum opaque colors in each new document (default 63; larger palettes are quantized per sprite)
png_base64NoPNG file content, base64-encoded (mutually exclusive with path)
skip_emptyNoDo not create documents for fully transparent cells (default true)
sprite_widthYes
sprite_heightYes

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears full burden. It discloses that transparent cells are skipped by default and mentions margins and spacing. However, it does not reveal whether the original file is modified or if there are any destructive side effects, which is relevant for a tool that creates new documents.

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?

Two sentences front-load the core purpose and input format, followed by essential notes on skipping empty cells and margin/spacing. No extraneous information; every sentence earns its place.

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 complexity (10 parameters, no output schema, no annotations), the description covers the main algorithm and defaults adequately. It could mention that created documents are added to the active document list, but overall it is sufficient for an AI agent to invoke 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?

With 80% schema coverage, the description adds meaning beyond the schema by explaining the row-major order, the mutual exclusivity of png_base64 and path, and the default skip_empty behavior. This helps an agent use parameters correctly.

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 splits a regular PNG sprite sheet into separate pixel-mcp documents in row-major order. This specific verb+resource+output distinguishes it from sibling tools like pack_sprite_sheet (which likely does the opposite) and other document 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 on when to use the tool: to split a sprite sheet. It explicitly requires providing one of png_base64 or path. However, it does not explicitly mention when not to use it or suggest alternatives, though the sibling context hints at pack_sprite_sheet as the inverse operation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

swap_palette_indicesA

Swap two palette entries and all pixel references to them. The image looks unchanged.

ParametersJSON Schema
NameRequiredDescriptionDefault
aYesPalette index
bYes
doc_idYesDocument id

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description explicitly states that 'The image looks unchanged,' which is a key behavioral fact. However, it does not disclose reversibility, error handling, or permission requirements. With no annotations, this provides valuable but incomplete 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 core action, and every word is necessary. No redundancy or extraneous content.

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 primary effect and visual invariance. It lacks details on edge cases, undo behavior, or index bounds, but for a simple swap operation, it is fairly complete. No output schema reduces the need for return value documentation.

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 67%, so the schema documents doc_id and a's meaning as 'Palette index'. The description adds no additional parameter semantics beyond what the schema provides. Baseline 3 is appropriate for moderate coverage with no added value.

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 (swap two palette entries and all pixel references) and the resource (palette indices). It distinguishes the tool from siblings like set_palette_color and remove_palette_color by specifying that it swaps indices globally.

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 like set_palette_color or remove_palette_color. It does not mention prerequisites, context, or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

undoB

Undo the last edit(s).

ParametersJSON Schema
NameRequiredDescriptionDefault
stepsNoHow many edits to undo (default 1)
doc_idYesDocument id
renderNoInclude a render of the change (default true)

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description bears full burden. It does not disclose key behaviors: that undo typically works sequentially, may have a history limit, or what happens if no edits exist. It fails to specify whether it's a destructive or safe operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise—one sentence with no wasted words. It front-loads the action. However, it might be overly terse, sacrificing clarity for brevity.

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?

Given 3 parameters (one required) and no output schema, the description should explain what 'last edit(s)' means and what the result looks like. It is insufficient for the tool's complexity; e.g., it doesn't mention that undo affects the document state or how to interpret success.

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 all parameters documented. The description adds no additional meaning beyond the schema. Baseline 3 applies because the schema already defines parameter semantics adequately.

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 ('undo') and target ('last edit(s)'). The verb 'Undo' and noun 'edit(s)' directly describe the tool's function. It implicitly distinguishes from sibling tool 'redo'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like 'redo' or 'checkpoint'. No mention of prerequisites or limitations (e.g., undo history depth, session scope). The description is too generic to help the agent decide when to invoke.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

viewA

Render the canvas (or a region) as a PNG. The primary perception tool: call it after every couple of edits.

ParametersJSON Schema
NameRequiredDescriptionDefault
frameNoFrame index, 0-based (default: active frame)
scaleNoDefault: longer side scaled to 320-640px
coordsNoCoordinate rulers (default true)
doc_idYesDocument id
layersNoRender only these layers (ids or names), even if hidden
regionNo
grid_overlayNoPixel grid lines (default false)

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the full behavioral disclosure burden. It only mentions rendering as PNG and default scale behavior but omits important details like authentication needs, rate limits, output format, or whether the operation is read-only.

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?

Two sentences, front-loaded with the core purpose, and every sentence adds value. No wasted words.

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 description lacks information about the return value (PNG image data), which would be valuable given no output schema. However, the high schema coverage partially compensates. Adequate but not 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 86% (high), so the schema already documents most parameters. The description adds no parameter-specific information beyond what the schema provides, thus baseline 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?

Clearly states 'Render the canvas (or a region) as a PNG' and identifies itself as 'the primary perception tool', which differentiates it from sibling view tools like view_text, view_diff, view_window, and view_tiled.

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?

Explicitly advises 'call it after every couple of edits', providing clear usage context. However, it does not specify when not to use this tool or mention alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

view_diffB

Compare the current state against a checkpoint: before, after, and changed-pixels panels.

ParametersJSON Schema
NameRequiredDescriptionDefault
sinceYesCheckpoint label
doc_idYesDocument id

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description must carry full burden. It only states the operation and output panels, with no mention of side effects, permissions, or limitations (e.g., whether checkpoint must exist, or if it's a read-only operation).

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?

Single sentence that is front-loaded with the core action and specific outputs. No unnecessary words.

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?

Although no output schema exists, the description explains the three panels returned (before, after, changed-pixels). This is sufficient for a comparison tool, though it could elaborate on the format (e.g., images or data).

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 parameters are described in the schema. Description adds minimal value beyond schema, only hinting at the output structure but not explaining parameters further. Baseline 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?

Description clearly states it compares current state against a checkpoint, listing the output panels (before, after, changed-pixels). This distinguishes it from sibling tools like view, view_text, etc., which do not perform comparisons.

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 explicit guidance on when to use this tool vs alternatives (e.g., view for just viewing, or other checkpoints). The description only states what it does, not when it's appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

view_framesA

Render frames as a horizontal strip. With onion, each frame shows the previous frame at 40% opacity beneath it. This (plus per-frame view) is the perception tool for animation — use it to verify motion, not preview_gif.

ParametersJSON Schema
NameRequiredDescriptionDefault
onionNo
doc_idYesDocument id
framesNoDefault: all frames

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden of behavioral disclosure. It reveals that onion shows the previous frame at 40% opacity, which is a behavioral trait. It doesn't mention error handling or authentication, but as a rendering tool, the main behavior is adequately described.

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 consists of two concise sentences. The first sentence states the main function, and the second provides context and usage guidance. Every sentence adds value, and there is 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?

For a simple 3-parameter rendering tool, the description adequately covers the rendering method, a behavioral feature (onion), and usage context (distinction from preview_gif). It does not explain return values or error conditions, but given the absence of output schema and annotations, it provides sufficient information for correct invocation.

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 67% (two of three parameters have descriptions). The description adds meaning to the undocumented 'onion' parameter by explaining its effect. For 'frames' and 'doc_id', it adds no new information beyond the schema. Thus, it compensates for the missing schema description on one parameter.

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 renders frames as a horizontal strip, specifies the onion effect, and distinguishes itself from preview_gif as a tool for verifying motion rather than previewing. It references a specific sibling tool and provides a clear purpose.

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 explicitly advises using this tool to verify motion, not preview_gif, providing a when-to-use and when-not-to-use guideline. It also mentions per-frame view as an alternative, but doesn't elaborate on when to choose that over this tool. Overall, it gives clear context for usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

view_referenceB

Render a reference image, optionally beside the current canvas at matched display size.

ParametersJSON Schema
NameRequiredDescriptionDefault
frameNoFrame index, 0-based (default: active frame)
doc_idNoRequired when beside_canvas is true
ref_idYes
beside_canvasNo

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It says 'Render' but does not disclose whether this is a read-only operation, any side effects, or permissions needed. The behavioral footprint is unclear.

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 sentence that is front-loaded with the core action ('Render a reference image') and includes the key optional behavior. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 4 parameters, no output schema, and no annotations, the description is too sparse. It does not explain what a reference image is, how the display size matching works, or what the tool's output looks like, leaving significant gaps for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50% (2 of 4 parameters have descriptions). The description adds no information about parameters beyond hinting at beside_canvas with 'optionally beside'. It does not explain ref_id, frame, or doc_id, leaving the agent to rely solely on schema which has gaps.

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 'Render a reference image', which is a specific verb and resource. It also mentions an optional placement beside the canvas at matched display size, distinguishing it from sibling viewing tools like view, view_text, view_diff, etc.

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 like view or view_window. It does not mention prerequisites, context, or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

view_textA

Read pixels as grid text (max 64x64; use view_window or a region for bigger canvases).

ParametersJSON Schema
NameRequiredDescriptionDefault
frameNoFrame index, 0-based (default: active frame)
layerNoSingle layer to read (default: flattened visible layers)
coordsNoCoordinate prefixes/ruler (default: on for width >= 24)
doc_idYesDocument id
regionNo

TDQS

A4.4/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 cover behavioral traits. It mentions the 64x64 limit and coordinate prefix default, but does not explain error handling for oversized inputs, output format beyond 'grid text', or behavior when reading multi-layer documents. Adequate but not thorough.

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?

Single sentence that front-loads the core purpose ('Read pixels as grid text') and includes a critical constraint and alternative. No wasted words.

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 tool with 5 parameters and no output schema, the description is reasonably complete: explains the tool's function, size limit, and alternative for larger inputs. Lacks details on return format and error cases, but sufficient for most use cases.

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 80%, so the schema already documents most parameters. The description adds context that output is 'grid text' and mentions the coords default (on for width >=24). This adds value beyond schema descriptions.

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 it reads pixels as grid text, specifies a max size of 64x64, and suggests alternatives (view_window or region) for larger canvases. It distinguishes itself from siblings like view_window and view_tiled.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells when to use alternatives: 'use view_window or a region for bigger canvases'. This helps the agent choose the correct tool among many view-related siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

view_tiledA

Render the canvas repeated reps x reps so tiling seams are visible, with the tile boundaries marked in faint red. The perception tool for seamless textures — a tile only reads as seamless when you see it tiled. Pairs with set_tile_mode and the tile_seams lint rule.

ParametersJSON Schema
NameRequiredDescriptionDefault
repsNoRepetitions per side (default 2)
frameNoFrame index, 0-based (default: active frame)
scaleNoDefault: tiled image longer side scaled to ~320-640px
doc_idYesDocument id

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It discloses that the tool renders the canvas tiled, shows seams in faint red, and is non-destructive. It does not mention permissions or limitations, but as a visualization tool, this is sufficient 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?

Two sentences with zero waste. The key information (what, why, how) is front-loaded. Every sentence earns its place.

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 no output schema, the description does not explain return values, but the tool's output is a visual rendering. It mentions pairing with other tools, adding useful context. For a straightforward render tool, this is complete enough.

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 input schema already documents all parameters. The description adds no additional meaning for parameters beyond what is in the schema. Baseline 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?

Description clearly states verb+resource: 'Render the canvas repeated reps x reps so tiling seams are visible'. It specifies the output (tile boundaries in faint red) and the tool's purpose as a 'perception tool for seamless textures'. This distinguishes it from other view tools like view or view_diff.

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?

Description implies usage context: 'A tile only reads as seamless when you see it tiled' and mentions pairing with set_tile_mode and lint rule. While no explicit 'when not to use', the context is clear enough for an agent to decide to use it for checking seamless textures.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

view_windowA

Zoomed view of a 16 or 32 px window plus a whole-canvas thumbnail with the window marked. The intended workflow for 64px+ canvases.

ParametersJSON Schema
NameRequiredDescriptionDefault
cxYes
cyYes
sizeYes
frameNoFrame index, 0-based (default: active frame)
doc_idYesDocument id

TDQS

A3.9/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 disclose behavior. It implies a read-only view, but does not explicitly state side-effect absence, auth needs, or error behavior. The description adds moderate context 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?

Two concise sentences, front-loaded with the main action and context. No unnecessary words.

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?

No output schema, so the description should explain return format. It mentions 'zoomed view' and 'thumbnail' but doesn't specify output type (e.g., image data). Schema coverage is low (40%), and the description does not fully compensate, leaving some ambiguity.

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 40% (only doc_id and frame have descriptions). The description adds that the window is 16 or 32px and includes a thumbnail, but does not detail parameters like cx/cy meaning (e.g., center coordinates). It adds some value but leaves gaps.

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 provides a zoomed view of a 16 or 32 px window along with a whole-canvas thumbnail marking the window. It specifies the tool is intended for canvases 64px and larger, which distinguishes it from sibling viewing tools.

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?

It explicitly indicates the intended workflow for 64px+ canvases, giving context for when to use. However, it does not explicitly state when not to use or name alternative siblings for smaller canvases.

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. 70 tool updatesv0.1.0
    • First observedadd_frame
    • First observedadd_layer
    • First observedadd_palette_color
    • First observedadjust_palette_color
    • First observedcheckpoint
    • First observedclear_region
    • First observedcopy_cel
    • First observedcopy_from_document
    • First observedcopy_region
    • First observedcreate_document
    • First observedcut_region
    • First observeddelete_document
    • First observeddescribe
    • First observeddither_gradient
    • First observedellipse
    • First observedexport
    • First observedextract_palette
    • First observedflood_fill
    • First observedgenerate_ramp
    • First observedimport_image
    • First observedline
    • First observedlint
    • First observedlint_unwaive
    • First observedlint_waive
    • First observedlist_documents
    • First observedload_reference
    • First observedmerge_down
    • First observedmirror_region
    • First observedmix_palette_colors
    • First observedmove_region
    • First observedopen_document
    • First observedoutline
    • First observedpack_sprite_sheet
    • First observedpaste_grid
    • First observedpaste_stamp
    • First observedpreview_gif
    • First observedquantize_reference
    • First observedrect
    • First observedredo
    • First observedremove_frame
    • First observedremove_layer
    • First observedremove_palette_color
    • First observedrename_layer
    • First observedreorder_frame
    • First observedreorder_layer
    • First observedreplace_color
    • First observedresize_canvas
    • First observedsave_selection
    • First observedscatter
    • First observedset_active_frame
    • First observedset_active_layer
    • First observedset_frame_duration
    • First observedset_layer_lock
    • First observedset_layer_visibility
    • First observedset_palette_color
    • First observedset_pixels
    • First observedset_symmetry
    • First observedset_tile_mode
    • First observedshade
    • First observedshift_layer
    • First observedsplit_sprite_sheet
    • First observedswap_palette_indices
    • First observedundo
    • First observedview
    • First observedview_diff
    • First observedview_frames
    • First observedview_reference
    • First observedview_text
    • First observedview_tiled
    • First observedview_window

TDQS

B3.4/5.0
Disambiguation4/5

With 70 tools, some overlap is inevitable, but each tool has a detailed description that clarifies its distinct purpose. For example, the various view tools (view, view_text, view_window, etc.) serve specific viewing needs. A few tools like copy_region and cut_region could be confused, but overall disambiguation is strong.

Naming Consistency5/5

All tools follow a consistent snake_case naming pattern, typically verb_noun (e.g., set_tile_mode, add_layer, reorder_frame). Even single-word verbs like view and undo fit the pattern. No mixing of conventions like camelCase or inconsistent verb forms.

Tool Count2/5

70 tools is very high for an MCP server, far beyond the typical 3-15 range. While the domain of pixel art editing is complex, this count feels excessive and could overwhelm agents. Consolidating some tools (e.g., merging palette editing tools) would improve usability without losing functionality.

Completeness5/5

The tool surface covers the full workflow of pixel art creation: document management, layers, frames, palette editing, drawing primitives, region operations, stamps, selections, linting, and export. There are no obvious gaps for basic to intermediate pixel art tasks.

Maintenance

ActivitySlowing
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/ehm-93/pixel-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server