Skip to main content
Glama

aseprite-mcp

An MCP server for Aseprite — create, edit, and export pixel art sprites, animations, and sprite sheets from any AI assistant.

Drawn and animated entirely via aseprite-mcp tools — no manual pixel editing!

Features

  • 43 tools across 11 categories

  • Native drawing with configurable brush thickness via app.useTool()

  • Pixel-perfect algorithms (Bresenham line, midpoint circle) for thin strokes

  • Cross-platform — Windows, macOS, Linux

  • Secure — Lua injection prevention, sandboxed execution

  • Zero runtime dependencies beyond @modelcontextprotocol/sdk

Tool Overview

Category

Tools

Examples

Sprites

6

create_sprite, resize_sprite, crop_sprite

Layers

4

add_layer, set_layer_properties, list_layers

Frames

4

add_frame, set_frame_duration, list_frames

Tags

3

create_tag, remove_tag, list_tags

Drawing

7

draw_rect, draw_circle, draw_line, draw_ellipse, fill_area, outline, draw_pixels

Transform

5

replace_color, flip_sprite, rotate_sprite, flatten_layers, merge_down

Palette

4

get_palette, set_palette_colors, load_palette, resize_palette

Cels

3

move_cel, set_cel_opacity, clear_cel

Export

3

export_sprite_sheet, export_frame, export_layers

Slices

2

create_slice, remove_slice

Utility

2

run_script, get_aseprite_version

📖 Full parameter reference: docs/API.md


Related MCP server: aseprite-mcp

Quick Start

Requirements

Install

# npm global
npm install -g aseprite-mcp

# or from source
git clone https://github.com/ayigityol/aseprite-mcp.git
cd aseprite-mcp && npm install && npm run build

Configure

{
  "mcpServers": {
    "aseprite": {
      "type": "local",
      "command": "node",
      "tools": ["*"],
      "args": ["/path/to/aseprite-mcp/build/index.js"],
      "env": { "ASEPRITE_PATH": "/path/to/aseprite" }
    }
  }
}
{
  "mcpServers": {
    "aseprite": {
      "command": "node",
      "args": ["/path/to/aseprite-mcp/build/index.js"],
      "env": { "ASEPRITE_PATH": "/path/to/aseprite" }
    }
  }
}
{
  "servers": {
    "aseprite": {
      "command": "node",
      "args": ["/path/to/aseprite-mcp/build/index.js"],
      "env": { "ASEPRITE_PATH": "/path/to/aseprite" }
    }
  }
}
{
  "mcpServers": {
    "aseprite": {
      "command": "aseprite-mcp"
    }
  }
}

Environment Variables

Variable

Description

ASEPRITE_PATH

Path to Aseprite executable. Auto-detected if not set.

DEBUG

Set "true" for verbose stderr logging.

Auto-detection searches standard install paths on all platforms, plus system PATH.


Architecture

sequenceDiagram
    participant Client as MCP Client
    participant Server as aseprite-mcp
    participant Aseprite as Aseprite CLI

    Client->>Server: Tool call (JSON-RPC via stdio)
    Server->>Server: Generate Lua script
    Server->>Aseprite: aseprite -b --script temp.lua
    Aseprite->>Aseprite: Execute Lua (headless)
    Aseprite-->>Server: stdout: __RESULT__{"success":true, ...}
    Server->>Server: Parse JSON, cleanup temp file
    Server-->>Client: Tool result
graph LR
    A[Tool Call] --> B{Thickness > 1?}
    B -->|Yes| C[app.useTool<br/>Native Brush]
    B -->|No| D[image:drawPixel<br/>Pixel Algorithms]
    C --> E[Save & Return]
    D --> E

All operations run headless — no GUI window is opened.


Docker

# Build
docker build -t aseprite-mcp .

# Run (mount your Aseprite binary + working directory)
docker run --rm -i \
  -v /path/to/aseprite:/usr/local/bin/aseprite:ro \
  -v ./sprites:/sprites \
  aseprite-mcp

# Or use Docker Compose
docker compose up

Aseprite must be mounted into the container. The image packages only the MCP server.


Development

npm run build       # Compile TypeScript
npm run watch       # Recompile on changes
npm test            # Run 74 unit tests (vitest)
npm run test:watch  # Watch mode
npm run inspector   # MCP Inspector for interactive testing

Security

  • luaEscape() — prevents Lua injection by escaping \, ", \n, \r

  • luaPath() — normalizes and escapes file paths

  • execFile() — argument arrays, no shell interpolation

  • pcall() wrapping — all generated Lua scripts have error handlers

  • Local only — no data sent to external services


Troubleshooting

Problem

Solution

"Aseprite executable not found"

Set ASEPRITE_PATH env var to the full path

Tool returns Aseprite error

Set DEBUG=true to see stderr output

"Layer not found" / "Tag not found"

Names are case-sensitive — use list_layers or list_tags first

Sprite won't save

Ensure the output directory exists


License

MIT

Available Tools

43 tools
add_frameC

Add new frame(s) to a sprite

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesSprite file
countNoNumber of frames to add (default: 1)
afterFrameNoInsert after this frame number (1-indexed). If omitted, appends at end.
emptyNoCreate empty frames (default: false, copies previous)
savePathNoPath to save

TDQS

C2.8/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 fully disclose behavioral traits. It fails to mention whether the operation is destructive, if it modifies the sprite in place, or any side effects. The behavior beyond the name 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.

Conciseness3/5

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

The description is a single concise sentence, which earns its place for purpose clarity. However, it is too brief for a tool with 5 parameters, lacking structure and additional context that would be useful.

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 no output schema, no annotations, and 5 parameters, the description fails to explain return values, edge cases, or behavior (e.g., what happens when saving). It is incomplete for an agent to use correctly.

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

Parameters3/5

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

Schema coverage is 100%, so parameters are well-documented in the schema. The description adds no additional meaning beyond what the schema provides, resulting in a baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Add' and the resource 'frame(s) to a sprite', making the action understandable. However, it does not differentiate from sibling tools like 'add_layer', so it lacks explicit sibling distinction.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives, nor any prerequisites or when-not-to-use conditions. The description offers no usage context.

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 layer to a sprite

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesSprite file
layerNameYesName for the new layer
isGroupNoCreate a group layer instead of image layer
savePathNoPath to save

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, and the description is minimal. It does not disclose important behavioral traits, such as whether the layer is appended, what happens if the layer name already exists, or side effects on the sprite file.

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

Conciseness4/5

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

The description is a single sentence, efficient and to the point, but could include more context 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 4 parameters and no output schema, the description is too brief. It fails to explain the return value (e.g., layer object) or effects on the sprite, leaving the agent uncertain about tool 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 the schema already describes the parameters. The description adds no extra meaning beyond the generic action; 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 'Add' and the resource 'layer to a sprite', directly distinguishing it from sibling tools like remove_layer or list_layers.

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 create_sprite for a new sprite or add_frame for frames. Missing prerequisites like ensuring the sprite file exists.

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

clear_celB

Clear (delete) a cel at a specific layer and frame

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesSprite file
layerNameYesLayer name
frameNumberNoFrame number (1-indexed, default: 1)
savePathNoPath to save

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose behavioral traits like permanence, undo capabilities, or side effects beyond the core action.

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 with clear structure, no wasted words. Efficiently communicates the core purpose.

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 deletion tool with 4 parameters and no output schema, the description is incomplete. It does not explain what happens to the cel (e.g., is it permanently deleted?) or mention any prerequisites.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description adds minimal extra context beyond what the schema already provides (e.g., clarifying 'clear (delete)').

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 'Clear (delete)' and the resource 'cel at a specific layer and frame', distinguishing it from siblings like move_cel or 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 such as move_cel or remove_frame. No exclusions or context provided.

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

create_sliceB

Create a named slice region in a sprite

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesSprite file
sliceNameYesName for the slice
xYesLeft edge
yYesTop edge
widthYesSlice width
heightYesSlice height
pivotXNoPivot X (optional)
pivotYNoPivot Y (optional)
savePathNoPath to save

TDQS

B3.2/5.0
Behavior2/5

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

No annotations provided, and description only says 'Create a named slice region'. No disclosure of side effects, error handling, or safety. Burden is high but coverage low.

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, no fluff. Action verb first, efficient.

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 9 parameters and no output schema, description fails to explain coordinate system, pivot usage, or interaction with existing slices. Incomplete for safe agent 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. Tool description adds no extra meaning beyond the schema, so 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 action (Create) and resource (a named slice region in a sprite), distinguishing it from siblings like remove_slice.

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 add_frame or draw_rect. No prerequisites or exclusions mentioned.

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

create_spriteB

Create a new Aseprite sprite file

ParametersJSON Schema
NameRequiredDescriptionDefault
widthYesWidth in pixels
heightYesHeight in pixels
colorModeNoColor mode (default: rgb)
savePathYesPath to save the new sprite file

TDQS

B3.3/5.0
Behavior2/5

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

The description does not disclose behavioral traits beyond the annotation-free context. It implies creation but lacks details on overwrite behavior, side effects, or permission 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?

A single sentence with no extraneous 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?

Adequate for a simple creation tool, but lacks behavioral context that would help an AI agent understand edge cases or integrate with the sibling toolset.

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?

With 100% schema coverage, the schema already documents parameters fully. The description adds no additional meaning, meriting a baseline 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 uses the specific verb 'Create' and explicitly states the resource 'Aseprite sprite file', making the tool's purpose clear and distinct from siblings like 'open_sprite' or 'save_sprite'.

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 'open_sprite' for existing files, or any prerequisites like ensuring the output directory exists.

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

create_tagB

Create an animation tag on a range of frames

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesSprite file
tagNameYesName for the tag
fromFrameYesStart frame (1-indexed)
toFrameYesEnd frame (1-indexed)
aniDirNoAnimation direction (default: forward)
colorNoTag color as hex (#RRGGBB)
savePathNoPath to save

TDQS

B3/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 fully disclose behavior. However, it only states the basic action without any details on side effects, permissions, constraints, or behavior beyond creation.

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?

The description is a single sentence, which is concise but lacks detail for a tool with 7 parameters. It is not verbose but could benefit from additional structured 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 lack of output schema and annotations, the description should provide more context. It fails to describe return values, error conditions, or usage hints, making it incomplete for a creation 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?

The input schema has 100% coverage, so the schema itself documents parameters. The description adds no additional meaning or context beyond the tool's purpose, meeting the baseline but not exceeding it.

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 'Create', the resource 'animation tag', and the scope 'on a range of frames'. This effectively distinguishes it from sibling tools like 'remove_tag' and 'list_tags'.

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 does it mention prerequisites or exclusions. No when-to-use or when-not-to-use information.

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

crop_spriteB

Crop a sprite to given bounds

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesSource sprite file
xYesLeft edge
yYesTop edge
widthYesCrop width
heightYesCrop height
savePathNoPath to save (defaults to overwrite source)

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It does not state whether the source file is overwritten (though savePath defaults to overwrite), or any side effects. The tool likely modifies a file, but that is not explicit.

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, which is efficient. However, it could incorporate more context without sacrificing brevity, such as noting the effect of savePath.

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 potentially destructive tool that modifies files, the description lacks completeness. It does not explain the effect of not providing savePath, nor does it mention file format support or the outcome (e.g., returns nothing).

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 descriptions for each parameter (filePath, x, y, width, height, savePath) are already present. The description adds no extra meaning beyond what the schema provides, 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 'Crop a sprite to given bounds' uses a specific verb and resource, clearly indicating the action and target. It is unambiguous and distinguishes well from sibling tools like resize_sprite or rotate_sprite.

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. There is no mention of prerequisites, or when cropping is preferred over other transformations.

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

draw_circleC

Draw a circle on a specific layer and frame

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesSprite file
layerNameNoTarget layer name
frameNumberNoFrame number (1-indexed, default: 1)
centerXYesCenter X coordinate
centerYYesCenter Y coordinate
radiusYesCircle radius
colorYesColor as hex string (#RRGGBB), palette index, or {r,g,b,a}
filledNoFill the circle (default: true)
thicknessNoStroke thickness in pixels (default: 1). Uses native Aseprite brush when > 1.
savePathNoPath to save

TDQS

C2.9/5.0
Behavior2/5

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

The description lacks disclosure of side effects, such as whether it overwrites existing content or adds to a new cel. With no annotations, the description should provide more behavioral context but does not.

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. It is appropriately sized, though slightly 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 10 parameters and many siblings, the description is incomplete. It does not mention return value, prerequisites, or error conditions. Output schema is absent, so description should compensate.

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 documented. The description adds no additional meaning beyond the schema, which is acceptable but not improved.

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 (draw) and resource (circle) and specifies the context (specific layer and frame). It is specific but does not distinguish from sibling tool 'draw_ellipse', which could cause confusion.

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 draw_ellipse. There is no indication of prerequisites (e.g., file must exist, layer must exist) 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.

draw_ellipseC

Draw an ellipse on a specific layer and frame using Aseprite's native ellipse tool

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesSprite file
layerNameNoTarget layer name
frameNumberNoFrame number (1-indexed, default: 1)
xYesLeft edge of bounding box
yYesTop edge of bounding box
widthYesEllipse bounding box width
heightYesEllipse bounding box height
colorYesColor as hex string (#RRGGBB), palette index, or {r,g,b,a}
filledNoFill the ellipse (default: true)
thicknessNoStroke thickness in pixels (default: 1)
savePathNoPath to save

TDQS

C2.9/5.0
Behavior2/5

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

No annotations provided, so the description carries full burden. It only mentions 'using Aseprite's native ellipse tool' but does not disclose side effects (e.g., overwrites existing pixels, requires file to be open), error conditions, or any restrictions.

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 clear and front-loaded. It is concise and to the point, though slightly more detail could be added without becoming 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?

With 11 parameters and no annotations or output schema, the description is minimal. It does not explain what happens if the file is not open, the layer doesn't exist, or an invalid frame number is given. More context is needed for a tool of this complexity.

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 parameters are well-documented in the schema. The description adds no additional meaning beyond what is already in the schema, meeting the baseline for high coverage.

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 (draw), resource (ellipse), and context (specific layer and frame). It distinguishes from sibling tools like draw_rect and draw_line, but could be more explicit about differences from draw_circle, which is a specific ellipse type.

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 (e.g., draw_circle, draw_pixels). No mention of prerequisites, such as the sprite file being open or the layer existing.

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

draw_lineB

Draw a line between two points on a specific layer and frame

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesSprite file
layerNameNoTarget layer name
frameNumberNoFrame number (1-indexed, default: 1)
x1YesStart X
y1YesStart Y
x2YesEnd X
y2YesEnd Y
colorYesColor as hex string (#RRGGBB), palette index, or {r,g,b,a}
thicknessNoLine thickness in pixels (default: 1). Uses native Aseprite brush when > 1.
savePathNoPath to save

TDQS

B3.4/5.0
Behavior3/5

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

The description adds some behavioral context by mentioning 'Uses native Aseprite brush when > 1' for thickness, which is beyond the schema. However, it lacks disclosure about destructive nature, undo, coordinate system, or effects on existing content. With no annotations, the burden is higher.

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, no redundancy, front-loaded action and key parameters. Efficient for its purpose.

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 is too brief. It does not explain coordinate system, what happens if layer/frame is missing, or return value. For a tool with 10 parameters, more context 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 100% with clear descriptions for all parameters. The only additional value from the description is the note about brush behavior for thickness > 1. Baseline 3 is appropriate given high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (draw) and resource (line between two points on a specific layer and frame). It effectively distinguishes from siblings like draw_rect or draw_circle by specifying 'line between two points'.

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 draw_pixels or draw_rect. No prerequisites, exclusions, or context about layer/frame existence provided.

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

draw_pixelsB

Draw individual pixels on a specific layer and frame

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesSprite file
layerNameNoTarget layer name
frameNumberNoFrame number (1-indexed, default: 1)
pixelsYesArray of pixels to draw
savePathNoPath to save

TDQS

B3.1/5.0
Behavior2/5

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

No annotations provided, and the description lacks details on side effects, permissions, or whether drawing requires subsequent saving. It only states the basic action.

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 concise at one sentence, but it lacks structure or front-loading of key details. Still, it is 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 5 parameters and a complex pixel array input, the description is too brief. It does not explain default behavior, error handling, or prerequisites like having an open sprite.

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 parameters are well-documented. The tool description adds minimal extra meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it draws individual pixels on a specific layer and frame, distinguishing it from sibling tools that draw shapes or perform bulk 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 guidance on when to use this tool versus alternatives like draw_circle or fill_area. For a tool with many siblings, explicit usage conditions are missing.

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

draw_rectB

Draw a rectangle on a specific layer and frame

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesSprite file
layerNameNoTarget layer name
frameNumberNoFrame number (1-indexed, default: 1)
xYesLeft edge
yYesTop edge
widthYesRectangle width
heightYesRectangle height
colorYesColor as hex string (#RRGGBB), palette index, or {r,g,b,a}
filledNoFill the rectangle (default: true)
thicknessNoStroke thickness in pixels (default: 1). Uses native Aseprite brush when > 1.
savePathNoPath to save

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 but only states 'Draw a rectangle'. It fails to disclose whether the tool modifies the sprite, what happens with overlapping, or any side effects (e.g., overwriting existing content). No contradiction with annotations since none 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?

Single sentence with no wasted words. Front-loaded with the core 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?

Given 11 parameters (6 required), no output schema, and no annotations, the description is insufficient. It lacks context on defaults, parameter relationships, and expected behavior, which is critical for a drawing tool.

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

Parameters3/5

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

Schema coverage is 100%, so baseline 3. The description adds no additional meaning beyond the schema; all parameters are already described in the input 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 action (draw) and resource (rectangle) with context (layer, frame). It effectively distinguishes from sibling tools like draw_circle or draw_line.

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

Usage Guidelines3/5

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

The description implies usage for drawing rectangles but provides no guidance on when to use vs. alternatives like draw_circle, draw_ellipse, or draw_pixels. No exclusions or conditions are given.

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

export_frameA

Export a single frame as an image file

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesSource sprite file
frameNumberNoFrame to export (1-indexed, default: 1)
outputPathYesOutput image path
layerNameNoExport only this layer (optional)

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 bears the full burden of behavioral disclosure. It correctly indicates a read/export operation but omits details about side effects (none intended), required permissions, or error handling scenarios like missing files or out-of-range frames. The description is adequate but not comprehensive.

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

Conciseness5/5

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

The description is a single, clear sentence with no redundant words. It efficiently communicates the core functionality without unnecessary elaboration.

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

Completeness3/5

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

Given the tool's simplicity, the description covers the basic purpose but lacks context about expected behaviors such as overwriting output files, default frame number behavior (1-indexed), and what happens if the specified layer doesn't exist. The absence of an output schema means the description could clarify return value (e.g., success/failure).

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description adds no added meaning beyond parameter names and descriptions in the input schema. Parameters like filePath, frameNumber, outputPath, and layerName are self-explanatory from the schema alone.

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 'Export', the resource 'a single frame', and the output 'as an image file'. It effectively distinguishes from sibling tools like export_layers and export_sprite_sheet which handle multiple frames or layers.

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 export_sprite_sheet or export_layers. The description does not mention when to avoid using it or any prerequisites like file existence or frame validity.

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

export_layersB

Export each layer as a separate image file

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesSource sprite file
outputPatternYesOutput path pattern with {layer} placeholder (e.g. 'output-{layer}.png')
frameNumberNoExport this frame only (1-indexed)

TDQS

B3.2/5.0
Behavior2/5

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

Without annotations, the description should disclose behavioral traits such as file format, resolution, or whether the sprite is modified. It only states the basic function, leaving many aspects unspecified.

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 with no extraneous words. It is dense and efficient.

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 no output schema and no mention of return values or side effects, the description is insufficient for a tool with 3 parameters. It lacks details on behavior like naming conventions or file extensions.

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

Parameters3/5

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

Schema description coverage is 100% and parameters are self-explanatory from their names and descriptions. The tool description adds no additional parameter context 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 action (export), the resource (each layer), and the outcome (separate image file). It distinguishes from sibling tools like export_frame and export_sprite_sheet.

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 export_frame or export_sprite_sheet. The description implies batch export but lacks context for selective use.

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

export_sprite_sheetB

Export a sprite as a sprite sheet image with optional JSON data

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesSource sprite file
outputImageYesOutput sprite sheet image path (.png)
dataFileNoOutput JSON data file path (optional)
sheetTypeNoSheet layout type (default: rows)
columnsNoFixed number of columns
rowsNoFixed number of rows
borderPaddingNoPadding on texture borders
shapePaddingNoPadding between frames
innerPaddingNoPadding inside each frame
trimNoTrim transparent edges
mergeDuplicatesNoMerge duplicate frames
layerNoExport only this layer
tagNoExport only this tag
splitLayersNoSplit each layer into separate images

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It states 'Export a sprite' but does not clarify whether the original sprite is modified, whether files are overwritten, or other side effects. Critical behavioral traits are missing.

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 may be too brief given the tool's complexity; 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?

For a tool with 14 parameters, no output schema, and no annotations, the description fails to explain return values, the structure of the optional JSON data, or limitations. The richness of the input schema is not matched by the description.

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?

Since schema description coverage is 100% (all 14 parameters have individual descriptions in the schema), the description adds minimal extra meaning beyond restating the tool's purpose. 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 clearly states the verb 'export' and resource 'sprite as a sprite sheet image' with optional JSON data. However, it does not differentiate from sibling tools like 'export_frame' or 'export_layers', which might confuse an AI agent about which export tool to use.

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

Usage Guidelines3/5

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

The description implies usage when a sprite sheet is needed, but provides no explicit when-to-use or when-not-to-use guidance, nor does it mention alternatives. The agent must infer context from the name alone.

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

fill_areaB

Flood fill an area starting from a point using Aseprite's native paint bucket tool

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesSprite file
layerNameNoTarget layer name
frameNumberNoFrame number (1-indexed, default: 1)
xYesX coordinate of the fill starting point
yYesY coordinate of the fill starting point
colorYesFill color as hex string (#RRGGBB), palette index, or {r,g,b,a}
toleranceNoColor tolerance for flood fill (0-255, default: 0)
contiguousNoOnly fill contiguous pixels (default: true). If false, fills all matching pixels.
savePathNoPath to save

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 carries the full burden. It only mentions using Aseprite's native tool, without detailing side effects (e.g., destructive modification), undo behavior, or required permissions. The schema covers parameters but the description adds little behavioral context beyond the function name.

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, clear sentence with no extraneous information. Could be slightly more informative without losing conciseness.

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 flood-fill tool with well-documented parameters, but lacks behavioral context (e.g., destructive nature, undoability) that would be helpful given the absence of annotations and output schema.

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

Parameters3/5

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

Input schema has 100% coverage with descriptions, so the schema already explains parameters. The description adds no additional parameter-level meaning beyond referencing the paint bucket tool.

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 (flood fill) and the resource (area) and mentions the specific tool (Aseprite's native paint bucket tool), distinguishing it from other drawing and editing 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 explicit guidance on when to use this tool vs. alternatives like draw_line or replace_color. The description does not specify contexts or exclusions.

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

flatten_layersB

Flatten all layers in a sprite into a single layer

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesSprite file
savePathNoPath to save

TDQS

B3.2/5.0
Behavior2/5

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

No annotations provided; the description does not disclose if the operation is destructive, how savePath works, or whether it modifies the sprite in-place. Only states what it does, not behavioral 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?

Single sentence, no filler. Every word is necessary.

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?

Missing details about saving behavior, side effects, and return values. For a transformation tool with no output schema and no annotations, this is inadequate.

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 adds no additional meaning beyond the schema's brief descriptions ('Sprite file', 'Path to save').

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 verb 'flatten' and resource 'all layers in a sprite' are specific. It clearly distinguishes from sibling tools like 'merge_down' which handles single layers.

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 flatten versus alternatives like merge_down. No prerequisites or exclusions mentioned.

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

flip_spriteA

Flip the entire sprite canvas horizontally or vertically

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesSprite file
directionYesFlip direction
savePathNoPath to save

TDQS

A3.5/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. It fails to disclose key behaviors: does flipping modify the original file? Is the operation destructive? What happens if savePath is omitted? These gaps leave the agent uncertain about 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?

Single sentence with no wasted words. Front-loads the core action and scope, efficiently conveying purpose.

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 three parameters and no output schema, the description is adequate but incomplete. It lacks behavioral transparency and does not explain the role of savePath or what the tool returns. Additional context would improve usability.

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 beyond what is in the schema. Baseline 3 is appropriate as the schema does the heavy lifting.

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 verb 'flip' and resource 'entire sprite canvas' with direction options. It distinguishes from sibling tools like rotate_sprite or crop_sprite, as flipping is a distinct operation.

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 for flipping the canvas, but does not provide context for when to choose it over similar operations like rotation or cropping.

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

get_aseprite_versionA

Get Aseprite version information

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

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

No annotations provided, so description must carry behavioral transparency. It states it gets version info, implying a read-only operation with no side effects. However, it does not disclose the return format (string, object) or any potential permissions needed. With zero annotations, this is minimally 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?

The description is a single sentence, front-loaded with the key information. No unnecessary words, earning its place.

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

Completeness3/5

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

For a simple getter, the description is mostly adequate. However, there is no output schema, and the description does not specify the return type (e.g., version string or object). The agent may need to infer from usage. Completeness could be improved by adding return format.

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 (schema coverage 100% empty). Baseline for 0 parameters is 4. The description adds no parameter-specific info, but nothing is needed. The schema already fully defines the parameter set as empty.

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 'Get Aseprite version information' clearly states the action (get) and the resource (Aseprite version). This is a specific verb+resource pair that distinguishes it from all sibling tools, which focus on sprite manipulation, layer management, etc.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool versus alternatives. However, given there are no sibling tools for version retrieval, usage is implicitly clear: use when version info is needed. Missing explicit when-not or context.

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

get_paletteC

Get all colors in a sprite's palette

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesSprite file

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It only states what the tool does but not how it behaves (e.g., read-only nature, prerequisites like an open sprite, or output format). This is insufficient for an AI agent to anticipate 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.

Conciseness4/5

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

The description is extremely concise at one sentence with no fluff. It front-loads the core action. However, for a tool with only one parameter, slightly more detail (e.g., output hint) 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 no output schema and no annotations, the description is incomplete. It does not describe what the agent can expect as a return value (e.g., list of color codes). Sibling tools exist, but no usage context is provided. The description is adequate for a very simple tool but lacks completeness for safe autonomous 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 coverage is 100%, so the baseline is 3. The description adds no extra meaning beyond the schema's 'Sprite file' description. It does not clarify how to specify the path (absolute/relative) or file formats, but the schema is adequate.

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 ('Get') and the resource ('all colors in a sprite's palette'), making the tool's purpose easy to understand. It distinguishes from sibling tools like 'set_palette_colors' or 'load_palette', though it could specify the return format.

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. For instance, it does not mention that this tool is ideal for reading colors, while 'set_palette_colors' is for modifying them. The description lacks any contextual cues.

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

get_sprite_infoA

Get detailed sprite metadata: dimensions, layers, frames, tags, palette, slices

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesPath to the sprite file

TDQS

A4/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 behavioral disclosure responsibility. It describes the tool as a read operation ('Get'), which is appropriate, but does not disclose any additional traits such as idempotency, side effects, or permission requirements. The description is adequate but not comprehensive.

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

Conciseness5/5

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

The description is a single sentence that lists all relevant metadata types. No extraneous information, perfectly concise.

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 read tool with one parameter and no output schema, the description covers the purpose and scope of the tool. It could mention return format or error cases, but the context is adequate for an agent to select and invoke it correctly.

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

Parameters3/5

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

Schema coverage is 100% for the single parameter filePath, and the description adds no additional meaning beyond the schema's 'Path to the sprite file'. According to guidelines, 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 'Get detailed sprite metadata' and enumerates the types of metadata (dimensions, layers, frames, tags, palette, slices), distinguishing it from sibling tools like create_sprite or list_frames.

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 implicitly indicates when to use this tool (when you need comprehensive sprite metadata), but does not provide explicit exclusions or alternatives. However, the purpose is clear enough to guide selection among read-oriented siblings.

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

list_framesA

List all frames in a sprite with durations

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesSprite file

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 carries full burden. It indicates this is a read-only listing operation, which is safe, but lacks details on potential side effects, error cases, or behavior with large sprites. The mention of durations gives some behavioral context but not exhaustive.

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

Conciseness5/5

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

The description is one sentence of seven words, fully front-loaded with the action and resource. Every word is meaningful with no redundancy.

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

Completeness4/5

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

Given low complexity (one parameter, no output schema), the description suffices for basic usage. It clarifies that durations are included, which is helpful. A slight gap is the lack of mention of return format or ordering, but overall acceptable.

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

Parameters3/5

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

Schema coverage is 100% with a single parameter described as 'Sprite file'. The description adds the phrase 'in a sprite' which is consistent but does not add new meaning beyond the schema. As coverage is high, 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 tool's purpose: 'List all frames in a sprite with durations'. The verb 'list' specifies the action, the resource 'frames' is precise, and the scope 'in a sprite with durations' distinguishes it from frame manipulation tools like add_frame or 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 Guidelines3/5

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

The description implies when to use (when you need to see all frames and their durations) but does not provide explicit guidance on when not to use or alternatives. No comparison with sibling tools like get_sprite_info or list_layers is given.

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

list_layersA

List all layers in a sprite with their properties

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesSprite file

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It only states it lists layers and properties, but lacks details on side effects, auth needs, or output 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?

Single sentence, no fluff, efficiently communicates the purpose.

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?

Adequate for a simple list tool, but lacks specification of output format and what 'properties' entails, could be more 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 coverage is 100% and description does not add meaning beyond the schema; baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'list' and resource 'layers' with scope 'in a sprite' and includes 'with their properties', effectively distinguishing it from sibling tools like list_frames.

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 vs alternatives. The usage is implied but not articulated, missing conditions or prerequisites.

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

list_tagsB

List all animation tags in a sprite

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesSprite file

TDQS

B3.3/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 disclose any behavioral traits such as read-only nature, error handling, or side effects beyond the basic action.

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 with no wasted words, front-loaded with key action and resource.

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?

Adequate for a simple list tool, but lacks description of return format or behavior for missing file, which would be helpful given no output schema.

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

Parameters3/5

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

Schema coverage is 100% and baseline is 3, but the description adds no extra meaning to the parameter 'filePath'—the schema already describes it as 'Sprite file'.

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 uses a specific verb 'List' and resource 'animation tags' with scope 'in a sprite', clearly distinguishing it from sibling tools like create_tag and remove_tag.

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 create_tag or remove_tag. No when-not or context provided.

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

load_paletteC

Load a palette from a file into a sprite

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesSprite file
palettePathYesPath to palette file (.gpl, .pal, .aseprite, .png, etc.)
savePathNoPath to save

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 fully disclose behavioral traits. It only says 'Load', which implies a mutation (changes the sprite's palette), but does not explain side effects, whether the existing palette is overwritten, or what happens to sprite content. The optional 'savePath' parameter is not elaborated, leaving its purpose ambiguous.

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 extraneous information. It is front-loaded with the main action. However, the lack of explanation for the optional savePath parameter reduces clarity slightly.

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?

Without output schema, the description should at least hint at return behavior (e.g., nothing returned, or modified sprite info). It also fails to explain what the optional savePath does (e.g., save the modified sprite to that path). Given the complexity of loading a palette, the description is incomplete.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The parameter descriptions add a little value (e.g., listing file formats for palettePath), but do not explain the role of savePath or the relationship between filePath and palettePath. The main description adds no additional parameter context.

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 verb 'load' and the resource 'palette from a file into a sprite', providing a clear purpose. However, it does not distinguish this tool from siblings like 'get_palette' which retrieves the current palette, or 'set_palette_colors' which modifies palette data directly.

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 'set_palette_colors' or 'get_palette'. It does not specify prerequisites or scenarios where this tool is appropriate.

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

merge_downB

Merge a layer with the one below it

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesSprite file
layerNameYesLayer to merge down (will merge with layer below)
savePathNoPath to save

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description must bear full behavioral disclosure. It fails to mention whether merging is destructive (e.g., the merged layer is consumed), any side effects, 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?

The description is a single, straightforward sentence with no extraneous information, making it highly concise and front-loaded.

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?

While the description is clear, it lacks details about the effect on the merged layer, optional savePath behavior, and potential errors. Given no output schema, more context would be beneficial, but the description is minimally adequate.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already explains each parameter adequately. The tool description adds no additional meaning beyond what's in the schema, meeting the baseline for high 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 'Merge a layer with the one below it' clearly states the action (merge), resource (layer), and the target (the one below), which distinguishes this from sibling tools like flatten_layers that merge all layers.

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 does it mention prerequisites, such as requiring a layer below or conditions for merging.

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

move_celB

Move a cel to a new position

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesSprite file
layerNameYesLayer name
frameNumberNoFrame number (1-indexed, default: 1)
xYesNew X position
yYesNew Y position
savePathNoPath to save

TDQS

B3.1/5.0
Behavior2/5

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

The description only says 'move' but does not disclose what happens if the cel doesn't exist, boundaries, or side effects like saving. With no annotations, more detail is expected.

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 fluff. Could be slightly more informative while staying concise, but it is efficient.

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 no output schema and no annotations, the description is minimal. Lacks details on constraints, error conditions, and usage within the Aseprite tool ecosystem.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents parameters. The description adds no additional meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Move' and the resource 'cel', and distinguishes from siblings like clear_cel or set_cel_opacity. It is specific and action-oriented.

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 set_cel_opacity or clear_cel. No context about prerequisites or postconditions.

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

open_spriteA

Open a sprite file and return its metadata

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesPath to the sprite file (.aseprite, .ase, .png, etc.)

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It discloses the basic read behavior but does not mention potential side effects (e.g., file locking) or required permissions.

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 and efficient, with 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 simple tool with one parameter and no output schema, the description sufficiently explains input and output. It could benefit from specifying what metadata is returned (e.g., dimensions, frame count).

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% for the single parameter 'filePath', and the description does not add meaning beyond the schema's description of acceptable file formats. Baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description specifies the verb 'open', the resource 'sprite file', and the outcome 'return its metadata'. It clearly distinguishes from siblings like 'create_sprite' and 'get_sprite_info'.

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 opening an existing sprite file before modifications, but provides no explicit guidance on when to use this vs. alternatives like 'get_sprite_info' or 'add_frame'.

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

outlineB

Add an outline around non-transparent pixels on a layer

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesSprite file
layerNameNoTarget layer name
frameNumberNoFrame number (1-indexed, default: 1)
colorYesOutline color as hex string (#RRGGBB), palette index, or {r,g,b,a}
savePathNoPath to save

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose behavioral details such as whether a new layer is created, if existing pixels are modified, or how the outline is rendered. The description is too brief to convey important traits.

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, efficient sentence with no extraneous words. It is front-loaded with the core action, but could benefit from slightly more detail 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?

The description is incomplete for a tool with 5 parameters and no output schema or annotations. It lacks details on return value, side effects, frame behavior, and typical use cases.

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?

All 5 parameters have descriptions in the input schema (100% coverage), so the schema provides sufficient meaning. The description adds no extra parameter-level information, but the schema already does the heavy lifting.

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 an outline') and the resource ('around non-transparent pixels on a layer'). It effectively differentiates from sibling tools like draw_circle or fill_area by specifying that it operates on non-transparent 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?

The description provides no guidance on when to use this tool versus alternatives like draw_line or fill_area. There is no mention of prerequisites, context, or exclusion criteria.

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

remove_frameA

Remove a frame from a sprite

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesSprite file
frameNumberYesFrame number to remove (1-indexed)
savePathNoPath to save

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 bears full burden. It indicates a destructive action (removing a frame) but lacks details on reversibility, effects on other frames, or error cases.

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, well-formed sentence with no superfluous words. It is maximally concise.

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 mutation tool, the description is minimally adequate. However, it lacks information about return values and behavior in edge cases, and given the many sibling tools, more context could help.

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

Parameters3/5

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

Schema coverage is 100%, so the description adds no extra meaning beyond the already documented parameters. 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 clearly states the action 'Remove' and the target 'a frame from a sprite', which is specific and distinguishes from sibling tools like add_frame or clear_cel.

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., clear_cel, remove_layer). There is no mention of prerequisites or disclaimers.

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

remove_layerB

Remove a layer from a sprite by name

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesSprite file
layerNameYesName of the layer to remove
savePathNoPath to save

TDQS

B3.2/5.0
Behavior2/5

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

No annotations present, so description carries full burden. Only states the action; does not disclose consequences (e.g., what happens to associated cels, whether undoable, or error 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?

Single sentence, front-loaded with key information. 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?

Lacks context on return value, side effects, or prerequisites. For a simple removal tool, more guidance on expected behavior 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 coverage is 100% with parameter descriptions, so baseline is 3. Description adds no additional meaning beyond schema, but does not contradict.

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 (remove), resource (layer), and selection method (by name). Distinguishes from sibling tools like remove_frame and remove_slice.

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 (e.g., flatten_layers, merge_down). No prerequisites or exclusions provided.

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

remove_sliceB

Remove a slice by name

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesSprite file
sliceNameYesName of the slice to remove
savePathNoPath to save

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It does not mention whether the operation is destructive, what happens if the slice does not exist, or any side effects on the sprite.

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 (5 words), efficiently conveying the core purpose. While more detail could be added, it avoids unnecessary verbosity.

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

Completeness2/5

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

The description is too brief for a deletion operation with 3 parameters and no output schema. It lacks details on return behavior, error conditions, and whether the action is reversible, making it incomplete for reliable agent 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?

Schema coverage is 100% (all 3 parameters described in schema). The description adds no additional meaning beyond confirming that sliceName identifies the slice, but does not clarify the role of filePath or savePath 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 'Remove a slice by name' clearly states the action (remove) and the resource (slice), distinguishing it from sibling tools that remove frames, layers, or tags.

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 remove_layer or remove_frame. There is no mention of prerequisites or conditions, 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.

remove_tagB

Remove an animation tag by name

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesSprite file
tagNameYesName of the tag to remove
savePathNoPath to save

TDQS

B3/5.0
Behavior2/5

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

With no annotations, the description must disclose traits like destructiveness or error behavior, but it only states the action. It does not mention what happens if the tag doesn't exist, if it's reversible, or any permissions needed.

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?

The description is extremely concise (5 words) but lacks sufficient detail. While brevity is good, it omits critical information, making it under-specified rather than efficient.

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 output schema and no annotations, the description should provide more context about return values or side effects. It only describes the action, leaving gaps for an agent to understand the full behavior.

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 parameter descriptions ('Sprite file', 'Name of the tag to remove', 'Path to save') are functional but add no extra meaning beyond the schema, such as file formats or path conventions.

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 'Remove an animation tag by name' clearly states the action (remove) and the resource (animation tag), distinguishing it from sibling tools like create_tag, list_tags, remove_frame, or remove_slice.

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 whether the tag must exist or if there are prerequisites. There is no comparison with sibling removal tools.

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

replace_colorB

Replace all occurrences of one color with another in a sprite

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesSprite file
fromColorYesSource color to replace (hex, palette index, or {r,g,b,a})
toColorYesReplacement color (hex, palette index, or {r,g,b,a})
layerNameNoOnly replace on this layer (optional, all layers if omitted)
frameNumberNoOnly replace on this frame (optional, all frames if omitted)
toleranceNoColor matching tolerance (0-255, default: 0)
savePathNoPath to save

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description must fully disclose behavior. It only mentions 'replace all occurrences' but omits details like whether the operation is irreversible, required permissions, or error handling (e.g., if colors not found).

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, concise sentence that communicates the core functionality with no unnecessary words. Perfectly front-loaded.

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 7 parameters and no output schema, the description sufficiently summarizes the operation but lacks broader context such as return value, side effects, or common use cases. It is minimally 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 coverage is 100%, so baseline is 3. The description does not add any parameter-specific meaning beyond the schema, which already describes each parameter 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 verb 'Replace' and the resource 'one color with another in a sprite', making the tool's specific action obvious. It distinguishes from siblings like fill_area or set_palette_colors which have 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 such as fill_area or set_palette_colors. It only states the basic function without any contextual cues for selection.

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

resize_paletteB

Resize a sprite's palette to a new number of entries

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesSprite file
newSizeYesNew palette size
savePathNoPath to save

TDQS

B3.2/5.0
Behavior2/5

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

No annotations provided. Description does not disclose if the operation is destructive, whether it modifies the sprite in-place, or if there are limits on newSize. No mention of side effects on existing palette data.

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, directly states the tool's purpose with no extraneous words. Efficiently 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?

No output schema. Critical missing details: what happens if newSize is smaller/larger than current, behavior when savePath is omitted, and whether palette is modified in-memory or file is saved immediately.

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?

Input schema has 100% description coverage for all three parameters. However, the description adds no extra meaning; for example, 'newSize' is vague (number of entries? bytes?) and the description does not clarify. 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 action (resize) and the resource (sprite's palette). It distinguishes from sibling tools like set_palette_colors and load_palette by specifying 'resize to a new number of entries'.

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_colors). No prerequisites, edge cases, or exclusions mentioned.

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

resize_spriteC

Resize a sprite to new dimensions

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesSource sprite file
widthYesNew width in pixels
heightYesNew height in pixels
savePathNoPath to save (defaults to overwrite source)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It does not mention whether the sprite is scaled, maintains aspect ratio, or if overwriting the source is destructive. The savePath parameter hint is only in schema, not in the description.

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

Conciseness4/5

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

The description is very concise at 6 words, front-loaded, and to the point. However, it may be too minimal for a tool with no annotations or output schema.

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

Completeness3/5

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

Given the tool's simplicity and full schema coverage, the description is mostly adequate. But it lacks details about scaling behavior and overwrite implications, which are important for correct 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?

Schema coverage is 100%; all parameters have descriptions. The main description adds no extra meaning beyond the schema, so 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 'Resize a sprite to new dimensions' clearly states the verb and resource, and it distinguishes this tool from siblings like crop_sprite or rotate_sprite. However, it lacks specificity about resize behavior (e.g., aspect ratio preservation).

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 crop_sprite or set_frame_duration. The description does not mention prerequisites, exclusions, or ideal contexts.

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

rotate_spriteB

Rotate the sprite canvas by 90, 180, or 270 degrees

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesSprite file
angleYesRotation angle in degrees (clockwise)
savePathNoPath to save

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 convey behavior. It does not disclose whether rotation is destructive, if it affects all frames, or what happens with the optional savePath parameter.

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 with 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 three parameters and many sibling tools, the description lacks detail on behavior, optional parameters, and how this tool fits into the workflow.

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

Parameters3/5

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

Schema coverage is 100%, so the description adds little beyond the schema. It restates the valid angles but does not explain filePath or savePath 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 action (rotate), the resource (sprite canvas), and the specific angles (90, 180, or 270 degrees). It distinguishes from sibling tools like flip_sprite or resize_sprite.

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., flip_sprite). No exclusions or context are provided.

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

run_scriptB

Execute an arbitrary Lua script in Aseprite (for advanced operations)

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathNoSprite file to open before running (optional)
scriptYesLua script code to execute

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 fully disclose behavioral traits. It states execution of arbitrary scripts, which is powerful and potentially destructive, but does not mention side effects, return values, permissions, or risks. This is a significant gap.

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

Conciseness5/5

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

A single sentence of 9 words that is front-loaded with the core action. Every word is meaningful; no unnecessary text.

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 that executes arbitrary code, the description is too minimal. It does not explain the return value, error handling, or scope of operations, which is critical for an AI agent to safely and correctly invoke it. No output schema is provided.

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% (both parameters are described). The description adds no extra meaning beyond what is already in the schema fields, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Execute' and the resource 'an arbitrary Lua script in Aseprite'. It adds 'for advanced operations', which distinguishes it from the many specific sibling tools like draw_line 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 Guidelines3/5

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

The description implies usage when other tool-specific operations are insufficient by saying 'for advanced operations', but it does not explicitly state when to use or avoid this tool, nor mention alternatives like the many specific tools available.

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

save_spriteC

Save/convert a sprite to a different format or path

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesSource sprite file
savePathYesDestination path (format inferred from extension)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It only says 'save/convert' but does not disclose whether the original file is modified, permissions required, or side effects. 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.

Conciseness4/5

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

The description is a single concise sentence that clearly states the core function. It is front-loaded but lacks additional detail that could be included 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 save/convert tool with 2 parameters, no output schema, and no annotations, the description is insufficient. It does not explain return values, impact on the source file, or prerequisites, making it contextually 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?

The input schema covers both parameters with descriptions, achieving 100% coverage. The description adds no extra meaning 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool saves or converts a sprite to a different format or path, using specific verb+resource. However, it does not differentiate from sibling tools like export_frame or export_layers.

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 export_frame or export_sprite_sheet. The description lacks context for appropriate usage.

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

set_cel_opacityC

Set the opacity of a cel

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesSprite file
layerNameYesLayer name
frameNumberNoFrame number (1-indexed, default: 1)
opacityYesOpacity (0-255)
savePathNoPath to save

TDQS

C2.6/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 function without behavioral details like side effects, return values, or file modifications.

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?

Extremely concise (5 words) with no redundant information. However, it could include more context without becoming 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 5 parameters, no output schema, and no annotations, the description is incomplete. It lacks explanation of cel concept, savePath purpose, and behavioral implications.

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

Parameters3/5

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

Schema coverage is 100%, so the parameter descriptions are handled. The tool description adds no extra meaning beyond 'opacity (0-255)' already present in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description states the action 'Set opacity' and the resource 'cel', which is clear. However, it does not distinguish from sibling tools like set_layer_properties or move_cel, making it generic.

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, nor any prerequisites (e.g., cel must exist) or context for the savePath parameter.

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

set_frame_durationB

Set the duration of a frame in milliseconds

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesSprite file
frameNumberYesFrame number (1-indexed)
durationMsYesDuration in milliseconds
savePathNoPath to save

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description must bear full responsibility for behavioral disclosure. It fails to mention whether the operation is destructive, what permissions are needed, or any side effects on other frames or sprite state.

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, front-loading the key purpose. However, it could be slightly expanded without losing conciseness to include important behavioral context.

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 the tool being a mutation, the description should mention return values, permission requirements, or side effects. It omits these, making it incomplete for confident 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 100%, so the description adds little beyond what the schema already provides. The description does not explain parameter meanings further, but the baseline is 3 due to high 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 'Set the duration of a frame in milliseconds' clearly states the verb (Set), resource (frame duration), and unit (milliseconds). It distinguishes this tool from siblings like add_frame, remove_frame, and list_frames.

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 add_frame or set_layer_properties. 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.

set_layer_propertiesB

Set properties on a layer (visibility, opacity, blend mode, name)

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesSprite file
layerNameYesLayer to modify
newNameNoRename the layer
visibleNoSet visibility
opacityNoSet opacity (0-255)
blendModeNoSet blend mode (normal, multiply, screen, overlay, darken, lighten, color_dodge, color_burn, hard_light, soft_light, difference, exclusion, hue, saturation, color, luminosity)
savePathNoPath to save

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are present, so the description carries full burden. It does not disclose side effects, prerequisites (e.g., file must be open), destructiveness, or what happens to other properties not set. Merely restates what can be set.

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?

Very concise single sentence that front-loads the action and lists the key properties. No wasted words, though could be slightly more structured.

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 7 parameters, 2 required, no output schema, and no annotations, the description is too minimal. It doesn't explain how properties interact, default behaviors, or partial updates. A more complete description would include usage context and potential pitfalls.

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 new meaning beyond the schema; it just lists the property names. No elaboration on formats, constraints, or interactions.

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 the verb (Set) and the resource (layer properties), listing specific properties (visibility, opacity, blend mode, name). Distinct from sibling tools that set other attributes like cel opacity or 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 Guidelines2/5

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

No guidance on when or when not to use this tool versus alternatives. Sibling tools like set_cel_opacity overlap in setting opacity, but no comparison is provided. The description lacks context for choosing this tool.

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

set_palette_colorsB

Set colors in a sprite's palette

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesSprite file
colorsYesArray of palette entries to set
savePathNoPath to save

TDQS

B3.1/5.0
Behavior2/5

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

No annotations provided; description only says 'Set colors', implying mutation but no details on overwrite/merge behavior, whether sprite must be open, or any side effects. For a write operation, more transparency is needed.

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 that front-loads the purpose. However, it lacks structure such as bullet points or examples that could improve readability without adding much length.

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 (3 params, no output schema, no annotations), the description is insufficient. It does not explain the behavior of missing 'savePath', or what happens to existing palette colors, or if the sprite must be open. More context is needed for a mutation tool.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents all parameters. The description adds minimal value beyond the schema; it does not elaborate on structure or usage of the 'colors' array or the optional 'savePath'.

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 target ('colors in a sprite's palette'), making it distinct from sibling tools like 'replace_color' (single color) or 'set_cel_opacity'.

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., 'replace_color' for single color, 'load_palette' for loading a full palette). No prerequisites or conditions mentioned.

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. 43 tool updatesv1.1.0
    • First observedadd_frame
    • First observedadd_layer
    • First observedclear_cel
    • First observedcreate_slice
    • First observedcreate_sprite
    • First observedcreate_tag
    • First observedcrop_sprite
    • First observeddraw_circle
    • First observeddraw_ellipse
    • First observeddraw_line
    • First observeddraw_pixels
    • First observeddraw_rect
    • First observedexport_frame
    • First observedexport_layers
    • First observedexport_sprite_sheet
    • First observedfill_area
    • First observedflatten_layers
    • First observedflip_sprite
    • First observedget_aseprite_version
    • First observedget_palette
    • First observedget_sprite_info
    • First observedlist_frames
    • First observedlist_layers
    • First observedlist_tags
    • First observedload_palette
    • First observedmerge_down
    • First observedmove_cel
    • First observedopen_sprite
    • First observedoutline
    • First observedremove_frame
    • First observedremove_layer
    • First observedremove_slice
    • First observedremove_tag
    • First observedreplace_color
    • First observedresize_palette
    • First observedresize_sprite
    • First observedrotate_sprite
    • First observedrun_script
    • First observedsave_sprite
    • First observedset_cel_opacity
    • First observedset_frame_duration
    • First observedset_layer_properties
    • First observedset_palette_colors

TDQS

B3.3/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose, e.g., draw_circle vs draw_ellipse vs fill_area, and CRUD operations on layers/frames/tags/slices are well separated.

Naming Consistency4/5

The vast majority follow a consistent verb_noun pattern (e.g., add_frame, create_sprite, set_cel_opacity). The only exception is the tool 'outline', which lacks a noun prefix, causing slight inconsistency.

Tool Count3/5

43 tools is high but justifiable for a full-featured sprite editor. However, it borders on being overly large; some tools like multiple draw variants could potentially be consolidated.

Completeness4/5

Covers all major areas: sprite creation, rendering, layer/frame management, tags, slices, palette, export, and scripting. Minor gaps like duplicate frame or copy cel are absent but workable.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ayigityol/aseprite-mcp'

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