pixelworks
Provides tools for interacting with Aseprite, a pixel art editor, enabling creation and manipulation of sprites, layers, frames, palettes, animations, and exports via headless CLI.
Provides tools for interacting with Krita, a digital painting application, enabling canvas painting, layer management, image adjustments, selections, filters, and exports via its MCP plugin.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@pixelworksGenerate a 32x32 pixel art character and export it as a sprite sheet"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
pixelworks — MCP server for pixel-art toolchains
A single Model Context Protocol server (stdio transport) that consolidates three creative subsystems into one tool surface, so an LLM client can drive an entire pixel-art workflow:
Family | Count | Backing subsystem |
| 31 | Retro Diffusion — mostly the locally run Stable Diffusion finetuned model shipped inside the Retro Diffusion Aseprite extension (v15.0.0, WebSocket JSON on |
| 95 | Aseprite workbench driven through the headless CLI — pixel read/write, shapes, dithering, flood fill, selection + clipboard, outline/shading, palettes + retro presets/ramps/quantization, frames/layers/tags, layer management & blend modes, cel tweening/oscillation, slices (9-patch), tilemaps, onion-skin/frame-diff/color-stats analysis, transforms, color modes, sprite-sheet/per-layer/per-tag export, raw-Lua escape hatch |
| 39 | Krita over its MCP plugin HTTP API — painting (canvas, brushes, strokes, shapes, colors), layer tree management, pixel PNG bridge in/out, crash-free Pillow adjustments (invert/hsv/blur/…), filter catalog, selections, canvas transforms, per-layer export, view control, and QAction/run_python escape hatches |
| 4 | Capability/status probes and image-return helpers ( |
169 tools total. In MCP clients they surface as mcp__pixelworks__<tool>
(or just <tool>, depending on the client).
Each subsystem is independently gated: if one is unavailable, its tools
return {"available": false, "subsystem": ..., "error": ..., "hint": ...}
instead of raising, so the rest keeps working and the caller learns what to do
(e.g. run rd_start_backend). Call px_capabilities any time for a one-shot
overview of what is currently up.
Developed and tested on Windows 10/11 with Python 3.12, Aseprite 1.3.18 and Retro Diffusion extension 15.0.0. macOS and Linux are untested: the code has no Windows-only dependencies and the platform paths are handled, so it is expected to work — see macOS / Linux notes for what to adjust and what to watch for.
Prerequisites
Python 3.10+ (developed on 3.12). Download from python.org if you don't have it. Make sure to check "Add Python to PATH" during installation, or know where your Python executable lives.
Aseprite 1.3+ — required for the
ase_*tools. Note the path to the executable (Aseprite.exeon Windows;/Applications/Aseprite.app/Contents/MacOS/asepriteon macOS; theasepritebinary from Steam or your own build on Linux).Retro Diffusion Aseprite extension v15.0.0 — required for the local
rd_*tools. This is a paid product (purchase on itch.io) that ships the locally run Stable Diffusion finetuned pixel-art model, its own backend (image_server.py) and a private venv under<extension dir>\stable-diffusion-aseprite\. Install it through Aseprite normally; the default location is%APPDATA%\Aseprite\extensions\RetroDiffusionon Windows,~/Library/Application Support/Aseprite/extensions/RetroDiffusionon macOS and~/.config/aseprite/extensions/RetroDiffusionon Linux.Optional — the online version of Retro Diffusion (retrodiffusion.ai) is supported as an alternative to the local model: a retrodiffusion.ai API key enables the four cloud tools (
rd_api_txt2img,rd_api_img2img,rd_api_txt2anim,rd_api_img2anim). If you already entered the key in the Retro Diffusion dialog inside Aseprite, the server picks it up from there automatically (seeRD_API_KEYbelow).Optional — Krita 5.x with the bundled bridge plugin installed (
krita-plugin/in this repo; HTTP API onlocalhost:5678), only for thekrita_*tools.
You do not need the RD backend or Krita running to start the server — subsystems are probed lazily and gate themselves.
Related MCP server: Aseprite MCP Tools
Installation
1. Get the code and set up a Python virtual environment
Either clone:
git clone https://github.com/jmorais1988/pixelworks-mcp.git pixelworks
cd pixelworksor download pixelworks-mcp-<version>.zip from the
Releases page,
extract it, and cd into the extracted folder (a .sha256 file is
published alongside each zip if you want to verify the download). The zip
contains exactly the files listed under Repository layout; the steps
below are identical for both.
A virtual environment (venv) keeps pixelworks' dependencies isolated from your system Python:
# Create the virtual environment
python -m venv .venv
# Activate it
# Windows (Command Prompt):
.venv\Scripts\activate
# Windows (PowerShell):
.venv\Scripts\Activate.ps1
# macOS/Linux:
source .venv/bin/activate
# Install dependencies
pip install -r requirements.txtTroubleshooting: If
pythonis not recognized, either add Python to your system PATH (re-run the installer and check "Add Python to PATH"), or use the full path to your Python executable, e.g."C:\Users\YOU\AppData\Local\Programs\Python\Python312\python.exe" -m venv .venv.
requirements.txt pins fastmcp==4.0.3 (the standalone fastmcp 4 package —
the server uses its tool registry and fastmcp.utilities.types.Image) plus
websockets, pillow and httpx (upper-bounded to the majors that were
tested; the exact verified versions are listed in the file).
Alternative — pip install: the folder is also a package. Inside the
activated venv, pip install . installs the same dependencies and a
pixelworks console command (.venv\Scripts\pixelworks.exe on Windows)
that you can use as the MCP client's command instead of
python server.py. pip install -e . keeps it editable.
2. Configure paths (important)
server.py reads its configuration from environment variables. The defaults
match a standard Windows install (the RD extension under %APPDATA%); set the
variables when your layout differs — ase_status / px_capabilities tell you
which path failed to resolve.
Aseprite itself is discovered automatically, including installs outside the
system drive (a Program Files on D:, a Steam library on another disk).
Set ASEPRITE_EXE when you have several installs and want to pin one, or when
Aseprite lives somewhere unusual:
Variable | Default | Purpose |
| Auto-detected: first existing of the Windows uninstall registry entry, | Aseprite executable used for the headless CLI. Set it explicitly to pin a specific install when several are present |
| Windows: | Retro Diffusion extension folder (backend, venv, models, LoRAs) |
|
| Local RD backend WebSocket endpoint |
|
| Where generated images/sprites are saved |
|
| Preset store for |
|
| Generation timeout |
| (empty) | retrodiffusion.ai key for |
|
| Krita MCP plugin HTTP endpoint |
Alternatively, edit the configuration block near the top of server.py
(RD_URL, EXT_DIR, ASEPRITE_EXE, …) directly.
3. Apply the headless patch to the RD extension (once)
# Windows
.venv\Scripts\python reapply_headless_patch.py
# macOS/Linux (the script's built-in default is the Windows path, so point it explicitly)
RD_EXTENSION_DIR="$HOME/Library/Application Support/Aseprite/extensions/RetroDiffusion" .venv/bin/python reapply_headless_patch.py # macOS
RD_EXTENSION_DIR="$HOME/.config/aseprite/extensions/RetroDiffusion" .venv/bin/python reapply_headless_patch.py # LinuxThe RD extension shells out on every Aseprite start — including the headless
batch spawns this server performs — which flashes visible console windows on
Windows and prints harmless rm/del errors elsewhere. The patch prepends an env-guarded no-op for os.execute to extension.lua
(active only when RD_MCP_HEADLESS=1, which the server sets for its batch
spawns; interactive Aseprite sessions are unaffected). The script is idempotent.
Re-run it after every Retro Diffusion extension update.
4. Seed presets (optional)
copy presets.example.json presets.json # Windows
cp presets.example.json presets.json # macOS/Linuxpresets.json stores named generation presets for
rd_preset_save/list/apply/delete and rd_generate(preset=..., overrides=...).
It lives next to server.py and is created automatically on first save, so
this step is only a starting seed.
5. Install the Krita bridge plugin (optional, for krita_* tools)
Copy the bundled plugin into Krita's pykrita folder and enable it:
:: Windows
copy krita-plugin\kritamcp.desktop %APPDATA%\krita\pykrita\
xcopy krita-plugin\kritamcp %APPDATA%\krita\pykrita\kritamcp\ /E /I# Linux (also Flatpak: use ~/.var/app/org.kde.krita/data/krita/pykrita/)
mkdir -p ~/.local/share/krita/pykrita
cp -r krita-plugin/kritamcp krita-plugin/kritamcp.desktop ~/.local/share/krita/pykrita/
# macOS
mkdir -p ~/Library/Application\ Support/krita/pykrita
cp -r krita-plugin/kritamcp krita-plugin/kritamcp.desktop ~/Library/Application\ Support/krita/pykrita/Then start Krita → Settings → Configure Krita… → Python Plugin Manager →
tick Krita MCP Bridge → OK → restart Krita. The plugin serves
http://localhost:5678 (GET /health to verify). Every plugin change —
including updates of this repo — requires a Krita restart to load; until
then the v2 actions answer {"error": "Unknown action: ..."} while the
original painting actions keep working.
6. Start the RD backend (for rd_* tools)
Either:
open the Retro Diffusion dialog inside Aseprite once (this launches
image_server.pyon port 8765), orcall the
rd_start_backendtool — the server launches the backend headless from the extension's own venv and logs to<RD_EXTENSION_DIR>\stable-diffusion-aseprite\mcp-backend.log.
Check with rd_status (a plain socket probe by default).
Registering with an MCP client
The server speaks stdio: every client below simply spawns it with the venv's Python. Three rules apply to all of them:
Use absolute paths, and the venv interpreter — not
pythonfrom PATH.<PIXELWORKS>below stands for the folder you cloned into, e.g.C:\Tools\pixelworks. In JSON and TOML basic strings backslashes must be doubled (C:\\Tools\\pixelworks); YAML single-quoted strings and TOML literal strings ('...') take them as-is. On macOS/Linux the interpreter is<PIXELWORKS>/.venv/bin/pythonand paths use forward slashes with no escaping — e.g."command": "/Users/you/pixelworks/.venv/bin/python"; theenvvalue would be the Aseprite binary from the table above.envis optional — add only the variables whose default (see Configure paths) does not match your machine. The commonest one isASEPRITE_EXEwhen Aseprite is not under Program Files / Steam.RD_API_KEYgoes here too if you use the cloud tools.Raise the tool-call timeout where the client has one. Full-quality generations take minutes; the server's own limit is
RD_GEN_TIMEOUT(900 s), so give the client at least that. Clients without a per-tool setting (Claude Desktop, Antigravity) are fine — they wait for the server.
After editing a config, fully restart the client (Claude Desktop and
Antigravity keep running in the tray — quit them, don't just close the
window). The server name (pixelworks) becomes the tool prefix:
mcp__pixelworks__ase_status in Claude Code / Codex / DSH, or just
ase_status in clients that don't namespace.
Claude Desktop
Config file (create it if missing; Settings → Developer → Edit Config opens it):
Install | Path |
Windows (installer) |
|
Windows (Microsoft Store) |
|
macOS |
|
The Store build reads only its own file under Packages\...; editing the
%APPDATA% one has no effect on it. Use Edit Config if unsure — it opens
the right one.
{
"mcpServers": {
"pixelworks": {
"command": "<PIXELWORKS>\\.venv\\Scripts\\python.exe",
"args": ["<PIXELWORKS>\\server.py"],
"env": {
"ASEPRITE_EXE": "D:\\Games\\Aseprite\\Aseprite.exe"
}
}
}
}Keep any other servers already in the file — mcpServers is one object;
add pixelworks as another key. Then quit Claude from the tray and relaunch;
the tools icon under the prompt should list pixelworks with its tools. If
the server shows an error, Settings → Developer → Open Logs Folder has a
mcp-server-pixelworks.log with the Python traceback.
Claude Code
Register from a terminal (user scope makes it available in every project):
claude mcp add --scope user --transport stdio pixelworks \
-e ASEPRITE_EXE="D:\Games\Aseprite\Aseprite.exe" \
-- "<PIXELWORKS>\.venv\Scripts\python.exe" "<PIXELWORKS>\server.py"(-e is repeatable; drop it if the defaults fit. Use --scope project to
write a shareable .mcp.json next to your code instead.) Check with
claude mcp list — it should show pixelworks: ... - ✓ Connected — or
type /mcp inside a session. The equivalent JSON, if you prefer editing
~/.claude.json (mcpServers under the project or top-level key) or a
project .mcp.json:
{
"mcpServers": {
"pixelworks": {
"type": "stdio",
"command": "<PIXELWORKS>\\.venv\\Scripts\\python.exe",
"args": ["<PIXELWORKS>\\server.py"],
"env": { "ASEPRITE_EXE": "D:\\Games\\Aseprite\\Aseprite.exe" }
}
}
}Timeouts: stdio servers in Claude Code have no per-request timer and the
per-call limit (MCP_TOOL_TIMEOUT) defaults to ~28 h, so long generations
need no tuning. Only if you have lowered that variable globally, add
"timeout": 900000 to the server's JSON entry to override it for
pixelworks alone.
OpenAI Codex (CLI and desktop app)
Add to ~/.codex/config.toml (%USERPROFILE%\.codex\config.toml):
[mcp_servers.pixelworks]
command = '<PIXELWORKS>\.venv\Scripts\python.exe'
args = ['<PIXELWORKS>\server.py']
startup_timeout_sec = 120 # default is 10 s; the first import of fastmcp/pillow can exceed it
tool_timeout_sec = 900 # default is 60 s; full-quality generations take minutes
[mcp_servers.pixelworks.env]
ASEPRITE_EXE = 'D:\Games\Aseprite\Aseprite.exe'Single-quoted TOML strings are literal, so backslashes are not doubled.
Or use the CLI: codex mcp add pixelworks --env ASEPRITE_EXE=... -- <PIXELWORKS>\.venv\Scripts\python.exe <PIXELWORKS>\server.py, then verify
with codex mcp list. Restart Codex (the app fully; the CLI per session).
Antigravity (Google)
Antigravity reads ~/.gemini/config/mcp_config.json
(%USERPROFILE%\.gemini\config\mcp_config.json) globally, or
.agents/mcp_config.json inside a workspace. In the editor: ⋯ at the top
of the agent side panel → MCP Servers → Manage MCP Servers → View raw
config opens the same file:
{
"mcpServers": {
"pixelworks": {
"command": "<PIXELWORKS>\\.venv\\Scripts\\python.exe",
"args": ["<PIXELWORKS>\\server.py"],
"env": {
"ASEPRITE_EXE": "D:\\Games\\Aseprite\\Aseprite.exe"
}
}
}
}Save, then click Refresh in the MCP Servers panel (or restart Antigravity).
The server should list as pixelworks with its tools enabled. Antigravity
has no per-tool timeout setting; it waits for the server. Note this is
Antigravity's file, not the Gemini CLI's ~/.gemini/settings.json — the
Gemini CLI uses the same JSON shape under its own mcpServers key.
DeepSeek Harness (dsh) web profile
Add to ~/.dsh/profiles/web/cordis.patch.yml and restart dsh web:
- insert:
- id: mcp-pixelworks
name: '@deepseek-ai/dsh-mcp-client'
config:
serverName: pixelworks
transport: stdio
command: '<PIXELWORKS>\.venv\Scripts\python.exe'
args: ['<PIXELWORKS>\server.py']
env:
ASEPRITE_EXE: 'D:\Games\Aseprite\Aseprite.exe'
toolCallTimeoutMs: 900000serverName must be unique across the profile's MCP entries and becomes
the mcp__pixelworks__* prefix. Optional: failOnStartupError: true
makes a broken path fail loudly at startup instead of silently omitting the
tools.
Any other client
Everything above is the same three fields — command, args, optional
env — in the client's own container (mcpServers JSON for Cursor,
Windsurf, Cline, Gemini CLI, VS Code's .vscode/mcp.json under servers,
…). If a client offers a per-tool timeout, set it ≥ 900 s.
Verify the installation
After registering and restarting the client:
px_capabilities— should list the Aseprite/RD/Krita subsystems and their current availability.ase_status—available: truewhen Aseprite resolves and a probe batch runs. If it reportsavailable: false, the result also lists the locations that were probed (searched) — setASEPRITE_EXEto your executable when it lives somewhere unusual (a portable copy, a custom folder, any drive).rd_status— reachable once the RD backend listens on 8765.Smoke test:
rd_generatewith a tiny prompt, thenase_create_canvas+ase_draw_pixels_hex+ase_export_sprite.
Example: one object through all three subsystems
![]()
The examples/ folder holds a small end-to-end run that touches every
subsystem with a single object, a red-capped mushroom. Same prompt and seed
for the two Retro Diffusion steps, so the difference between them is exactly
what img2img inherits from the hand-drawn sprite. All outputs are first-try,
unedited.
Step | Subsystem | Calls | Result |
1 | Aseprite only |
|
|
2 | Retro Diffusion img2img |
|
|
3 | Retro Diffusion txt2img |
|
|
4 | Krita only |
|
|
Prompt used for steps 2 and 3: pixel art red mushroom with white spots, cream stem, green grass, game item sprite, clean outline.
Two things worth noticing when you reproduce it: size_preset means
output pixels (passing width=64 instead yields a 16px image, because
width is the RD canvas and pixel_size defaults to 8), and when you pass a
wrong argument name the gated ase_* tools answer with
accepted_params instead of failing, which is how the calls above were
corrected on the fly.
Artist credit. Every image in
examples/was created by an AI agent — Claude (modelclaude-fable-5-1) — operating this server's tools from a chat session: the sprite's pixels were placed by the agent, the Retro Diffusion prompts and settings were chosen by it, and the Krita scene was composed and painted by it, with a human only picking the subject and approving the result. No image was hand-edited afterwards.
Running the test suites
tests/ holds the batteries used during development. They import server.py
directly (no MCP client needed).
test_gates.py is headless: it covers the tool dispatch layer (argument
binding, parameter aliases, sprite pre-checks, gate coverage, availability
cache invalidation and Aseprite discovery) and needs no subsystem running, so
it is the one to run first:
.venv\Scripts\python tests\test_gates.py # 51 checks, no Aseprite/Krita/RD requiredThe remaining batteries drive the real subsystems, so each needs its own up:
.venv\Scripts\python tests\test_workbench.py # Aseprite basics (canvas, draw, palette, frames, export)
.venv\Scripts\python tests\test_v4_expansion.py # 40-step Aseprite suite (layers, cels, slices, tilemaps, ...)
.venv\Scripts\python tests\test_krita_v2.py # 32-step Krita battery (Krita running with the bridge plugin)
# macOS/Linux: .venv/bin/python tests/<suite>.pyEach prints PASS/FAIL per step and ends with ALL GREEN (exit 0) or a
FAILED: list (exit 1). Artifacts land under output/. See
DEVELOPMENT.md for protocol notes and known traps.
macOS / Linux notes
Untested. Everything below is what should work based on the code: the server is pure Python, all Windows-only calls (
CREATE_NO_WINDOW,STARTUPINFO) are guarded behindsys.platform == "win32", and the default paths above have macOS/Linux branches. It has simply never been run outside Windows. If you try it, please open an issue with the outcome either way.
Aseprite — the
ase_*tools only need a working<aseprite> --batch. SetASEPRITE_EXEto the real binary (the macOS default resolves inside the.appbundle; Steam on Linux puts it under~/.steam/steam/steamapps/common/Aseprite/aseprite).ase_statusruns a probe batch and tells you if it works.Retro Diffusion (local) — the extension is sold for Windows, macOS and Linux (its author notes Linux support is "not guaranteed" and tested only on Ubuntu, Mint and Fedora); the server launches its backend with
<extension>/stable-diffusion-aseprite/venv/bin/pythonand applies the same UTF-8 env. Therd_start_backend"no console window" behavior is a no-op there. If the extension's venv lives elsewhere on your platform, start the backend from the Retro Diffusion dialog in Aseprite instead — the WebSocket protocol is identical.Headless patch — needed on every platform (the extension's init shells out on each start); pass
RD_EXTENSION_DIRas shown in step 3.Krita — the bridge plugin is plain PyQt/libkis with no platform code; it binds
localhost:5678the same way. Flatpak Krita needs the plugin under~/.var/app/org.kde.krita/data/krita/pykrita/and may not seelocalhostfrom outside the sandbox without--share=network(the default permits it).Case-sensitive filesystems — the code opens files with the exact names it writes, and the repo's own filenames are consistent, so no issue is expected; but the RD extension's folder/model names must match what the extension itself uses.
Paths in client configs — forward slashes, no escaping, and
.venv/bin/python(see the client section). Claude Desktop's config on macOS is~/Library/Application Support/Claude/claude_desktop_config.json; the other clients use the same~/.codex,~/.gemini,~/.claude.json,~/.dshlocations as on Windows.
Troubleshooting
rd_*tools returnavailable: false— the backend is not listening. Open the RD dialog in Aseprite once or callrd_start_backend; inspectmcp-backend.login the extension'sstable-diffusion-asepritefolder. The handshake is version-pinned to extension 15.0.0 — other extension versions will refuse the connection.ase_*tools returnavailable: false—ASEPRITE_EXEis wrong or Aseprite is not installed.Console windows flash during batch operations — re-run
.venv\Scripts\python reapply_headless_patch.py(RD extension updates overwriteextension.lua).krita_*tools returnavailable: false— Krita is not running or its MCP plugin is not enabled; health probe isGET <KRITA_URL>/health.A v2
krita_*tool returnsUnknown action— the plugin loaded in the running Krita predatesactions_v2.py; restart Krita after (re)installing the bundled plugin.Native Krita filters:
Filter.apply()hard-crashes Krita 5.3.3 (a verified upstream bug), so it is quarantined — usekrita_adjust_pixels(Pillow over the pixel bridge) for invert/grayscale/hsv/blur/brightness- contrast/posterize, andkrita_list_filtersfor the native catalog.rd_api_*tools reportno Retro Diffusion API key— none of the three sources resolved: passapi_keyon the call, setRD_API_KEY, or enter the key once in the Retro Diffusion dialog inside Aseprite (stored asrdapikeyin<RD_EXTENSION_DIR>\data\settings.json; that lookup also fails silently ifRD_EXTENSION_DIRpoints to the wrong folder).Degenerate/garbled small sprites from raw RD usage — this server already normalizes onto RD's 8px latent grid internally.
Repository layout
server.py the MCP server (fastmcp 4, stdio) — everything lives here
reapply_headless_patch.py idempotent patcher for the RD extension's console flashing
requirements.txt pinned direct dependencies
pyproject.toml optional `pip install .` → `pixelworks` console command
tests/ headless dispatch battery (test_gates.py) + live integration
suites (Aseprite workbench, v4 expansion, Krita v2)
examples/ the mushroom walkthrough above: .aseprite, PNGs, .kra, pipeline.png
DEVELOPMENT.md protocol notes, headless behavior, known traps, libkis/Aseprite gotchas
presets.example.json optional seed for presets.json
krita-plugin/ the extended Krita MCP bridge plugin (kritamcp
package + .desktop manifest) — install into
%APPDATA%/krita/pykrita/ for the krita_* tools
README.md this file — installation & client setup
LICENSE MIT license
.gitignore ignores .venv/, output/, presets.json, logs
.github/workflows/ release.yml — builds the Releases zip on every v* tagRuntime artifacts are created on demand: output/ (generated files,
override with RD_OUT_DIR) and presets.json (on first preset save).
Acknowledgements
pixelworks consolidates and builds on three MIT-licensed open-source projects:
pixel-mcp by Brandon Williams (MIT, Copyright (c) 2025 Brandon Williams) — the Aseprite-through-AI-assistants concept and the original workbench toolset (animation, retro palettes, dithering, shading, spritesheet export) that this server consolidated and replaced.
krita-mcp by nanayax3 (MIT, Copyright (c) 2025) — the Krita painting tool surface reimplemented here as the
krita_*family over the same Krita plugin HTTP API. The bundledkrita-plugin/is a locally extended fork of that project's bridge plugin: the original 14 paint actions are unchanged, and anactions_v2.pymixin adds 24 more (layers, pixel bridge, filter catalog, selections, transforms, export, view, action/python escape hatches) built on Krita's libkis scripting API.aseprite-mcp by Divyansh Singh (MIT, Copyright (c) 2024 Divyansh Singh) — source of the workbench expansion: layer management, color effects, palette presets/ramps/ quantization, cel tweening & oscillation, slices, tilemaps, onion-skin/frame-diff/color-stats analysis, per-layer & per-tag export, and the raw-Lua escape hatch were ported from that project and reimplemented for this server's headless single-file architecture; shared Lua idioms (layer lookup, cel normalization, RGB↔HSL conversion, Bayer dithering) derive from its
core/lua.pyand tool modules.
Portions of server.py are therefore derived from MIT-licensed code; the
copyright notices above are retained here.
License
MIT — see LICENSE.
The example images under examples/ are released under the same MIT
terms. Note that otherwise this license covers this server's code only. It does not grant
rights to the third-party products it talks to: Aseprite, the Retro Diffusion
extension and its models (including .pxlm LoRAs), and Krita each remain
under their own licenses and terms.
Available Tools
169 toolsase_add_frameAse Add FrameB
Append a frame; returns the new frame count.
| Name | Required | Description | Default |
|---|---|---|---|
| duration_ms | No | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose that the tool mutates the sprite by appending a frame and that it returns the new frame count. However, it omits important behavioral details such as whether the new frame is blank or duplicated, how duration_ms applies, and what side effects occur.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with zero filler. 'Append a frame; returns the new frame count' is efficient and structurally clear, even though more content could have been added without hurting conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and ambiguous sibling names, the description is too thin. It does not explain how the appended frame is created, why sprite_path is required, or how duration_ms affects the new frame. The output schema may define the return shape, but the description still lacks enough context for reliable tool selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not compensate. It never mentions sprite_path or duration_ms, their roles, or acceptable values. The schema property names are somewhat self-explanatory, but the description adds no parameter-level meaning beyond what the raw field names imply.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the operation: append a frame and return the new frame count. It is specific enough to distinguish from delete/duplicate/duration tools, but it does not differentiate from similarly named siblings like ase_add_frames or ase_add_frames_blank, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. An agent cannot tell from the description whether to choose ase_add_frame over ase_add_frames or ase_add_frames_blank, nor whether it appends a blank frame or a copy of the current frame.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_add_framesAse Add FramesA
Append each PNG as a new animation frame on a new layer of an .aseprite sprite.
Useful to turn RD generations into idle-animation frames. Optionally wraps the new frames in an animation tag. Saves in place, headless CLI.
| Name | Required | Description | Default |
|---|---|---|---|
| tag_name | No | ||
| layer_name | No | rd-frames | |
| image_paths | Yes | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It states the key mutation side effect with 'Saves in place' and adds operational context with 'headless CLI.' It also discloses the optional tag-wrapping behavior, giving an agent a solid picture of what happens when the tool is invoked.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only three sentences, all of which add value. The core operation is front-loaded, the use case is concise, and the in-place save/headless behavior is stated in a short final sentence. There is no redundant repetition of schema fields or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description gives enough high-level context for an agent to understand the operation and the fact that the file is modified in place, and the presence of an output schema means return values need not be described. Still, there are gaps around layer semantics, image ordering, and what happens when a tag_name is or is not supplied, which leaves some ambiguity for a fully autonomous agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does provide conceptual mappings: PNGs correspond to image_paths, the .aseprite sprite corresponds to sprite_path, 'new layer' maps to layer_name, and 'animation tag' maps to tag_name. However, it does not explain ordering, path formats, defaults, or the exact effect of layer_name when a layer already exists, so compensation is incomplete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Append each PNG as a new animation frame on a new layer of an .aseprite sprite.' It clearly distinguishes itself from sibling frame tools by focusing on PNG inputs and optional tag wrapping, so an agent can tell it apart from tools like ase_add_frame or ase_add_frames_blank.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly provides a use case: 'Useful to turn RD generations into idle-animation frames.' This gives clear context for when the tool is appropriate, though it does not explicitly contrast it with sibling alternatives such as ase_add_frames_blank or ase_import_layer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_add_frames_blankAse Add Frames BlankA
Append N blank frames, each with the given duration. Returns the new frame count.
| Name | Required | Description | Default |
|---|---|---|---|
| count | Yes | ||
| duration_ms | No | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does it well: it states the append effect, that each frame receives the supplied duration, and that the call returns the new frame count. It does not cover side effects like file modification, but that is a minor gap for a simple append operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence with no filler: the operation, per-frame duration, and return value are all present and front-loaded. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a small three-parameter append tool, the description covers the operation and return value, and the schema covers types and defaults. It is slightly incomplete because sprite_path is never described and blank-frame semantics are taken for granted, but nothing essential blocks invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description maps 'N' to count and 'given duration' to duration_ms, adding meaning beyond the raw schema. It does not clarify sprite_path semantics, leaving one of three parameters without descriptive help.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Append'), a concrete resource ('blank frames'), and states the result (new frame count). It is clear, but it does not explicitly distinguish itself from the sibling ase_add_frames or ase_add_frame.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The use case is implied: use this when you need to append multiple blank frames with a specified duration. However, there is no explicit guidance about when to choose this over related frame tools such as ase_add_frames or ase_duplicate_frame.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_add_layerAse Add LayerC
Add a new image layer.
| Name | Required | Description | Default |
|---|---|---|---|
| layer_name | Yes | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden of behavioral disclosure. It only says 'Add a new image layer,' with no mention of where the layer is inserted, whether it is a blank raster layer, or what side effects occur.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler, and it front-loads the core action. It is appropriately sized for a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the tool is simple, the description omits placement behavior and fails to route the agent away from sibling layer-adding tools. With no annotations and no usage guidance, a one-line description is insufficient for confident selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds no parameter-level meaning beyond what the names sprite_path and layer_name imply. The parameter names are somewhat self-explanatory, but the description doesn't compensate for the missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Add') and a clear resource ('image layer'), so an agent knows the core action. However, it doesn't differentiate from nearby siblings like ase_import_layer or ase_create_tilemap_layer, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives. With sibling tools like ase_import_layer, ase_add_frames, and ase_create_tilemap_layer available, the agent gets no basis for choosing this one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_add_palette_colorAse Add Palette ColorB
Append a color to the sprite palette (grows by one).
| Name | Required | Description | Default |
|---|---|---|---|
| color | Yes | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosing behavior. It does mention the key side effect (palette grows by one), which is helpful, but it omits other details such as error conditions, color format expectations, or whether appending affects existing colors. The transparency is adequate but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, efficient sentence with no redundant words. It is front-loaded with the core action and effect, making it easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While an output schema exists (so return values are covered), the description fails to explain parameter semantics or provide usage context relative to sibling tools. For a 2-parameter tool with zero schema coverage, this is incomplete—an agent cannot confidently call it without additional knowledge.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description provides no information about the 'color' or 'sprite_path' parameters. The agent is left to guess the expected format for 'color' (hex, name, etc.) and the meaning of 'sprite_path'. This is a critical gap for correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Append') and a clear resource ('sprite palette') with an explicit effect ('grows by one'). This distinguishes it from siblings like ase_set_palette_color, which implies modification of an existing entry rather than addition.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage—adding a new color—but does not explicitly contrast with alternatives like ase_set_palette_color or ase_get_palette. It provides no when-to-use or when-not-to-use guidance, leaving the agent to infer context from the name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_adjust_hslAse Adjust HslA
Shift hue (-360..360 deg), saturation (-100..100) and lightness (-100..100) of all opaque pixels: palette swaps, night scenes, shadow layers. layer None = all layers; frame=0 processes every frame.
| Name | Required | Description | Default |
|---|---|---|---|
| frame | No | ||
| layer | No | ||
| hue_shift | No | ||
| sprite_path | Yes | ||
| lightness_shift | No | ||
| saturation_shift | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the disclosure burden and does add useful behavioral detail: it affects only opaque pixels, layer None means all layers, and frame=0 processes every frame. However, it is silent on whether the sprite is mutated in place, whether the operation is undoable, or whether the change is destructive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and front-loaded: ranges, scope, and special-value semantics are all packed into two sentences with no filler. Every clause adds operational value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a moderate-complexity tool with no schema descriptions, it covers the critical invocation details: shift ranges, opaque-pixel restriction, and the special meaning of layer None and frame=0. The only missing context is persistence/undo behavior, which is minor because an output schema exists for return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description compensates well by documenting the valid ranges for hue, saturation, and lightness and clarifying the special semantics of layer=None and frame=0. Only sprite_path is left to inference from its name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Shift') and resource (hue/saturation/lightness of all opaque pixels), and gives concrete use cases such as palette swaps and night scenes. It is clearly distinguishable from sibling color tools like ase_replace_color by the global HSL scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides example applications (palette swaps, night scenes, shadow layers), which imply usage context, but it does not explicitly say when to prefer this tool over alternatives or when not to use it. An agent must infer the selection logic from the operation name and scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_analyze_palette_harmoniesAse Analyze Palette HarmoniesB
Color-wheel analysis: complementary pairs, triads, analogous groups, temperature.
| Name | Required | Description | Default |
|---|---|---|---|
| palette | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry full behavioral disclosure. It does not explicitly state that the tool is read-only, what it returns, or any side effects. It does not mention constraints on the palette format (e.g., hex codes) or how invalid input is handled. For a tool that presumably analyzes without modifying, this lack of transparency is a notable gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose. It avoids any fluff and conveys the essential function without redundancy. It is concise yet informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (color theory analysis) and the presence of an output schema (not shown), the description should explain input expectations and output structure. It does neither: it fails to specify the palette format or what the returned data looks like. An agent would need to guess the input format and interpret the output schema without context, making it incomplete for effective usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the undocumented 'palette' parameter. It does not specify what each string in the array represents (e.g., hex colors, names) or the expected format. The description only mentions analysis categories, offering no guidance on how to construct a valid palette input.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: color-wheel analysis of a palette, listing specific outputs like complementary pairs, triads, analogous groups, and temperature. This is a distinct verb-resource pairing that differentiates it from sibling tools like ase_get_palette (retrieval) and ase_sort_palette (sorting). It leaves no ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for analyzing color relationships but does not explicitly state when to use it versus alternatives, nor does it name any alternative tools. There is no guidance on when not to use it (e.g., if only basic statistics are needed, use ase_get_color_stats). The context suggests it is for design decisions, but that is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_apply_outlineAse Apply OutlineC
Draw an outline around non-transparent pixels of a cel.
| Name | Required | Description | Default |
|---|---|---|---|
| color | Yes | ||
| frame | No | ||
| layer | No | ||
| thickness | No | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full burden of behavioral disclosure. It makes clear this is a mutating drawing operation, but it does not disclose whether existing pixels are overwritten, how frame/layer resolution works, or any destructive potential.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. Every word contributes to stating the core operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter tool with no schema descriptions and no annotations, this is too thin to fully guide a correct invocation. Color format, layer/frame resolution, and thickness semantics are left to inference, even though the output schema may cover return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for parameter meaning. It adds one useful semantic detail—the outline targets non-transparent pixels—but it does not explain the color format, thickness units, or how layer/frame defaults behave.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Draw') and a specific resource ('outline around non-transparent pixels of a cel'), so the core action is immediately clear. However, it does not distinguish this tool from closely related sibling tools such as ase_draw_contour or ase_draw_line.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives. It doesn't mention exclusions, prerequisites, or why one would choose this over ase_draw_contour or other drawing tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_apply_palette_presetAse Apply Palette PresetA
Set the sprite palette to a built-in retro preset. Only the palette is changed; snap existing pixels with ase_quantize_to_palette afterwards.
| Name | Required | Description | Default |
|---|---|---|---|
| preset | Yes | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It discloses an important side effect: existing pixels are not automatically remapped and must be quantized afterwards. It does not mention whether the file is saved in place or whether all frames are affected, but the key caveat is present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The main action is front-loaded, and the caveat is placed immediately after. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, but with zero schema descriptions and no parameter guidance, the description is incomplete. It does not mention how to obtain valid preset names or that sprite_path is the target file. The output schema exists, so return details are not required, but the missing parameter semantics leave an agent guessing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero description coverage, and the tool description does not explain either parameter (sprite_path or preset). It references a 'built-in retro preset' but does not specify valid preset values or how to discover them (e.g., via ase_list_palette_presets). This is a major gap for an agent trying to invoke the tool correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action ('Set the sprite palette to a built-in retro preset'), identifies the resource (sprite palette), and clarifies scope by saying only the palette is changed. This distinguishes it from sibling ase_set_palette, which likely sets a custom palette, and from ase_quantize_to_palette, which is explicitly named as a follow-up.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a clear usage context: apply a built-in preset, then quantize existing pixels with ase_quantize_to_palette. It does not explicitly state when not to use this tool versus alternatives like ase_set_palette, but the next-step guidance is useful and directs the agent to a specific sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_apply_shadingAse Apply ShadingB
Directional cell shading: recolor opaque pixels of the base color toward shadow/highlight depending on which way the silhouette faces the light.
| Name | Required | Description | Default |
|---|---|---|---|
| base | No | #e05830 | |
| frame | No | ||
| layer | No | ||
| shadow | No | #983820 | |
| highlight | No | #f89858 | |
| sprite_path | Yes | ||
| light_direction | No | top_left |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses that it operates on 'opaque pixels' and 'base color', and that shading depends on 'which way the silhouette faces the light'. However, it doesn't disclose whether the operation is destructive, whether it modifies the sprite in place, or what happens to transparent pixels. The description adds some behavioral context but leaves important mutation semantics unclear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact sentence that front-loads the core concept ('Directional cell shading') and then explains the mechanism. It's efficient and readable, though it could benefit from a second sentence clarifying parameter usage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 7 parameters, no annotations, and 0% schema description coverage, the description is too sparse. It doesn't explain the role of frame, layer, or the exact format of light_direction. The output schema exists but the description doesn't clarify what the tool returns or how it affects the sprite. An agent would need to inspect the schema carefully and still might not know how to set light_direction correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It mentions 'base color', 'shadow/highlight', and 'light direction' conceptually, but doesn't map these to the actual parameters (base, shadow, highlight, light_direction, frame, layer). The description doesn't explain the meaning of frame, layer, or how light_direction values are specified. With 7 parameters and zero schema coverage, this is a significant gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('recolor') and resource ('opaque pixels of the base color'), and explains the directional shading concept. It distinguishes itself from sibling tools like ase_apply_outline or ase_adjust_hsl by focusing on directional cell shading, though it doesn't explicitly name a sibling alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it: when you want directional shading based on light direction and silhouette. It doesn't explicitly state when not to use it or name alternatives like ase_adjust_hsl or ase_replace_color for simpler color changes. The context is clear enough for an agent to infer the use case, but explicit guidance is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_clear_celAse Clear CelA
Delete the cel on a layer/frame (makes it truly empty, unlike painting it transparent). layer None = first image layer.
| Name | Required | Description | Default |
|---|---|---|---|
| frame | No | ||
| layer | No | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it uses the key distinction that this deletes the cel instead of painting over it. It states the destructive effect clearly, though it does not mention reversibility or what happens when the target cel does not exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence plus a short, necessary parenthetical and one parameter clarification. Every phrase adds information, and the main action is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a small destructive operation with an output schema, this is largely complete: it explains the operation's purpose, the key null-layer behavior, and the distinction from transparent painting. It could add a note that frame 1 is the first frame or that layer strings are names, but an agent can proceed reasonably.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, but it only clarifies 'layer None = first image layer'. It leaves frame indexing, layer name/identifier format, and sprite_path semantics to be inferred from their names and defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first clause names a specific verb and resource ('Delete the cel on a layer/frame') and the parenthetical immediately distinguishes it from the superficially similar 'painting it transparent'. This makes it easy to tell apart from cel-drawing and layer-deletion siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The contrast with painting transparent states when the tool is appropriate: when the cel should be truly empty rather than just visually transparent. It does not spell out when not to use it versus all cel/layer siblings, so it misses the explicit exclusion bar for a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_color_modeAse Color ModeA
Convert color mode: rgb|grayscale|indexed, with optional ordered dithering (none|ordered) and bayer2x2|bayer4x4|bayer8x8 matrix.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | ||
| matrix | No | bayer4x4 | |
| dithering | No | none | |
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the conversion operation and dithering options, but does not say whether the conversion mutates the sprite in place, whether pixel data or palette are affected, or whether the operation is reversible. This is a meaningful gap for a tool that likely changes the image's color content.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence front-loads the action and packs all parameter domains into a compact string without filler. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema covers return values, and the description covers all four parameter domains, so an agent can construct a valid call. However, the absence of annotations and the lack of usage/behavioral context leave uncertainty about side effects and when to prefer this over palette/dithering siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must document parameters. It enumerates valid values for mode, dithering, and matrix, which compensates for the schema's bare strings. It does not explain the conditional relationship (matrix is only meaningful when dithering is ordered), but the core parameter meanings are present.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Convert') and names the exact resource ('color mode'), then enumerates the three target modes (rgb|grayscale|indexed). This makes the tool's function unmistakable and distinguishes it from the many ase_* sprite-editing siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case—converting a sprite's color mode—but does not name alternative tools or state when not to use it. There is no guidance distinguishing it from closely related operations like ase_quantize_to_palette or ase_dither_gradient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_compare_framesAse Compare FramesA
Diff two frames of the flattened sprite: changed pixel count, percent, and the bounding box of the changed region. Use while animating to confirm a frame actually changed (or did not change too much).
| Name | Required | Description | Default |
|---|---|---|---|
| frame_a | Yes | ||
| frame_b | Yes | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It implies a read-only diff operation but does not explicitly state it does not modify the sprite. It also introduces 'flattened sprite' without explaining whether flattening is performed automatically or assumed, leaving ambiguity. It does disclose the output nature but lacks side-effect clarity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no fluff. The first sentence front-loads the core purpose and outputs, the second gives a concrete use case. Every word earns its place; it is appropriately sized and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema, so return values are covered. However, the description does not address potential edge cases like out-of-range frame indices, the meaning of 'flattened' (whether it flattens the sprite or expects a flattened file), or error behavior. For a simple diff tool with only three parameters, this is a moderate gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must explain parameters. It mentions 'two frames' and 'flattened sprite', implying frame_a and frame_b are frame indices, and sprite_path is the file path, but it does not specify indexing (zero-based vs. one-based) or any constraints. It adds minimal value beyond the schema's type hints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Diff two frames of the flattened sprite' and enumerates the outputs (changed pixel count, percent, bounding box). It distinguishes itself from siblings by focusing on frame comparison, which no other ase_* tool does. The resource and verb are specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit usage context: 'Use while animating to confirm a frame actually changed (or did not change too much).' This tells when to use it, though it does not explicitly mention alternatives or when not to use it. Still, the guidance is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_copy_celAse Copy CelA
Copy a cel's image from one frame to another (independent clone, unlike ase_link_cel which shares the image). layer None = first image layer.
| Name | Required | Description | Default |
|---|---|---|---|
| layer | No | ||
| replace | No | ||
| sprite_path | Yes | ||
| source_frame | Yes | ||
| target_frame | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosing behavioral traits. It does explain that the copy is independent (unlike linked cels), which is a key behavioral aspect. However, it does not disclose what happens to the target cel if one already exists (the 'replace' parameter), nor any side effects or prerequisites. The mention of 'layer None = first image layer' adds useful default behavior, but more could be said about the operation's effects on the target frame.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, with the core action and differentiator front-loaded. Every word adds value: it states the operation, clarifies independence, names the alternative, and provides the layer default. No wasted words or redundant phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is relatively simple (copy cel image between frames), and an output schema is present, so return values are covered elsewhere. However, the description omits critical details like the behavior of the 'replace' parameter and does not explain what happens if the source cel is missing. For a mutation operation, the lack of clarity on overwriting behavior is a notable gap. It is minimally adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameter descriptions, so the description must compensate by explaining all parameters. It only explains the 'layer' parameter's default behavior ('layer None = first image layer'), leaving source_frame, target_frame, sprite_path, and replace undefined. While parameter names are somewhat self-explanatory, 'replace' is ambiguous (replaces existing cel? replaces image data?) and no guidance is given. This is a significant gap for a tool with 5 parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('copy') and resource ('a cel's image from one frame to another') and immediately distinguishes itself from the sibling ase_link_cel by clarifying it creates an independent clone. This is a clear, action-oriented purpose that an agent can act on without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly contrasts with ase_link_cel, indicating this tool is for when an independent clone is needed rather than a shared image. It implies the usage scenario but does not explicitly state when to prefer this over other cel-related tools like ase_create_cel or ase_duplicate_frame, leaving some inference to the agent. Still, the key alternative is named and differentiated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_copy_selectionAse Copy SelectionA
Copy the selected pixels to the server clipboard (keeps sprite intact).
| Name | Required | Description | Default |
|---|---|---|---|
| frame | No | ||
| layer | No | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the disclosure burden. It clearly discloses the side effect (server clipboard gets the pixels) and the non-destructive nature (sprite intact), which are the main behaviors. It doesn't mention clipboard overwrite or failure modes, but for a simple copy action the core transparency is present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no filler, key action and caveat at front. Well structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple and has an output schema, but the description omits parameter semantics and usage guidance needed given 0% schema coverage. It assumes the agent already knows an active selection exists and understands frame/layer contexts.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, and the description adds no meaning for frame, layer, or sprite_path. An agent cannot tell from the description how frame/layer affect what is copied or whether layer can be null. This is the biggest gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Copy'), resource ('selected pixels' to 'server clipboard'), and explicitly notes the sprite is left intact, which differentiates it from ase_cut_selection. The key behavior is front-loaded.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies copying for duplication because it notes the sprite remains intact, but it never says when to prefer this over ase_cut_selection or how paste_clipboard consumes the clipboard. No explicit conditions or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_create_canvasAse Create CanvasC
Create a new .aseprite sprite (rgb|grayscale|indexed). Returns its path.
| Name | Required | Description | Default |
|---|---|---|---|
| width | Yes | ||
| height | Yes | ||
| out_path | No | ||
| color_mode | No | rgb |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full behavioral burden. It discloses that a new sprite is created and its path is returned, but doesn't state what happens to any current/active sprite, whether the file is written immediately, or overwrite behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence that front-loads the core purpose and includes the key color-mode detail plus return value. No wasted words, appropriately sized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple creation tool with an output schema, the description covers purpose, color modes, and return. But with 0% schema coverage, no annotations, and no explanation of out_path semantics or required dimensions, some gaps remain for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains color_mode options (rgb|grayscale|indexed) but says nothing about width, height, or the out_path parameter, including its null default and what null implies. Only partial compensation for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb 'create' and resource '.aseprite sprite', and notes the supported color modes. The resource is clear enough to distinguish from export/save/color-mode tools, though it doesn't explicitly name which sibling it is not.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like ase_save_as or ase_color_mode. No context about prerequisites (e.g., whether an existing sprite is required) or when creation is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_create_celAse Create CelA
Create an empty canvas-sized cel on a layer/frame (no-op if one exists). layer None = first image layer.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| frame | No | ||
| layer | No | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden. It discloses the idempotent no-op behavior and the default layer selection, which are useful. However, it does not explain what happens if the specified layer or frame does not exist, whether the cel is placed at x/y, or other side effects 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. It front-loads the core action and includes a high-value parameter default. Every word contributes to understanding the tool's primary purpose and an important edge case.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although an output schema exists, the description fails to explain several key parameters (x, y, frame, sprite_path) that an agent must understand to invoke the tool correctly. For a tool with no annotations and 0% schema coverage, this is a notable completeness gap, even though the core idea is simple.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning only for the layer parameter ('layer None = first image layer'), but the input schema has 5 parameters (x, y, frame, layer, sprite_path) with 0% schema description coverage. The meaning of x, y, frame, and sprite_path is entirely omitted, leaving the agent to guess their semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the action ('Create'), the resource ('empty canvas-sized cel'), and the target ('on a layer/frame'), with an explicit no-op condition. It distinguishes this from sibling tools like ase_clear_cel or ase_copy_cel by specifying creation of an empty canvas-sized cel.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a use case (ensuring an empty canvas-sized cel exists on a layer/frame) and gives a helpful default for layer, but it does not explicitly state when to use this versus alternative tools such as ase_add_frame, ase_add_layer, or ase_clear_cel. No exclusions or alternative routing is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_create_sliceAse Create SliceC
Create a named slice (rectangular region exported for game engines).
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | ||
| y | Yes | ||
| name | Yes | ||
| width | Yes | ||
| height | Yes | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action but does not mention side effects (e.g., adding to the current sprite), coordinate system, units, or any output/return behavior. An agent cannot anticipate what happens on success or failure, nor whether existing slices are affected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no waste. It communicates the core purpose efficiently, achieving conciseness without sacrificing clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema (not shown) and six required parameters, the description is far too sparse. It does not clarify the coordinate system, the meaning of 'name', or how the slice integrates with the sprite. With zero annotation and schema coverage, this leaves critical gaps for an agent attempting to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description must compensate, but it does not mention any parameter names or semantics. The six required parameters (sprite_path, name, x, y, width, height) are completely unexplained, leaving an agent without clues about coordinate origin, units, or naming constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Create') and a specific resource ('named slice'), and clarifies the purpose for game engines. It clearly distinguishes from siblings like ase_list_slices (listing) and ase_delete_slice (deletion), making the tool's purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. Siblings like ase_export_sprite and ase_set_slice_center exist, but the description does not mention any conditions, prerequisites, or exclusions, leaving the agent to infer the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_create_tagAse Create TagC
Create an animation tag (forward|reverse|pingpong).
| Name | Required | Description | Default |
|---|---|---|---|
| tag_name | Yes | ||
| to_frame | Yes | ||
| direction | No | forward | |
| from_frame | Yes | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only says 'Create an animation tag' and lists direction options, but does not explain whether the operation is destructive, whether it modifies the sprite file, what happens if a tag with the same name exists, or any side effects. This is a significant gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the core purpose. It is appropriately sized, though it omits critical details. It earns a 4 because it is efficient and to the point, but not a 5 due to missing essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 5 parameters (4 required) and an output schema, the description is far too thin. It does not explain the semantics of frame ranges, tag names, or sprite paths, and lacks any context about how tags are used in animation workflows. The output schema might partially mitigate return-value clarity, but the description still fails to provide a complete picture.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description must compensate. It partially explains the direction parameter (forward|reverse|pingpong) but provides no meaning for sprite_path, tag_name, from_frame, or to_frame. An agent cannot infer what these values represent or how they relate to animation tags.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create') and the resource ('an animation tag'), and includes the direction options (forward|reverse|pingpong) which adds specificity. It is easily distinguished from sibling tag operations like ase_delete_tag or ase_export_tag by the verb.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives, no prerequisites, and no mention of what constitutes a valid tag definition. The description simply states the action without any context about animation frame ranges or typical workflows.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_create_tilemap_layerAse Create Tilemap LayerA
Create a tilemap layer with its own tileset: sets the sprite grid to the tile size and adds the layer. Tile index 0 is the reserved empty tile; draw real tiles with ase_draw_on_tile (which appends on demand).
| Name | Required | Description | Default |
|---|---|---|---|
| layer_name | Yes | ||
| tile_width | Yes | ||
| sprite_path | Yes | ||
| tile_height | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It discloses the two main side effects (setting the sprite grid to the tile size and adding the layer) and explains the reserved tile 0 semantic. It does not mention error conditions or whether prior layers are affected, but the core mutation behavior is clearly conveyed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, each earning its place: the first states the operation and side effects, the second conveys a key invariant and directs to the companion drawing tool. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is an output schema and no annotations, the description provides enough for correct invocation: purpose, side effects, the reserved tile convention, and a pointer to the next tool. It could add caveats about existing layers or grid conflicts, but the essentials are all present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It associates tile_width/tile_height with the grid tile size, layer_name with the added layer, and sprite_path via 'sets the sprite grid.' This adds meaning beyond the bare parameter names, though it does not give constraints, units, or explicit per-parameter explanations.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Create a tilemap layer with its own tileset') and the resource affected (the sprite's grid and layer stack). It implicitly distinguishes from plain layer creation (ase_add_layer) by emphasizing tilemap and tileset, so an agent can select this tool appropriately.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: this tool both sets the grid and adds the layer, and it explains the special role of tile index 0. It also names ase_draw_on_tile as the intended next step for drawing real tiles. However, it does not explicitly contrast with ase_add_layer or state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_crop_spriteAse Crop SpriteC
Crop the sprite to a rectangle.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | ||
| y | Yes | ||
| width | Yes | ||
| height | Yes | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are completely absent, so the description carries the full burden of behavioral disclosure. It says only 'crop' without revealing whether the operation is permanent, how it affects frames/layers, or whether it relies on the current selection. No side effects or destructive implications are mentioned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is concise and front-loaded with the action, containing no extraneous words. However, it is so minimal that it approaches under-specification rather than achieving the balance of a well-structured, complete description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 5 required parameters, no annotations, and no schema descriptions, the description is far too sparse to support correct tool invocation. It lacks coordinate system details, effect scope (e.g., all frames vs. active frame), and any mention of return values, even though an output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for 5 required parameters, and the description adds no meaning to x, y, width, height, or sprite_path. It does not specify coordinate origin, units, or how the rectangle relates to the canvas, leaving the agent with no parameter insight beyond raw types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Crop the sprite to a rectangle,' which is a specific verb (crop), resource (sprite), and geometric constraint (rectangle). This clearly communicates the core action and distinguishes from tools like ase_resize_canvas or ase_scale_sprite, though it does not explicitly name alternatives such as ase_trim_sprite.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus related siblings like ase_trim_sprite (which typically removes empty borders) or ase_resize_canvas. The description only states the action, leaving the agent to infer appropriate usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_cut_selectionAse Cut SelectionB
Copy the selection to the clipboard and clear it in the cel.
| Name | Required | Description | Default |
|---|---|---|---|
| frame | No | ||
| layer | No | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It does reveal the destructive aspect by stating it clears the cel, which is important, but it omits prerequisites such as needing an active selection, whether the selection itself is preserved, and what happens on error or empty selection.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler. The core action and target are front-loaded, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutating tool with no annotations, undocumented parameters, and a large sibling list, this is under-specified. It does not distinguish itself from ase_copy_selection, explain layer/frame defaults, or mention prerequisites, even though an output schema may cover return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain any of the three parameters: sprite_path, frame, or layer. The word 'cel' only weakly hints at frame/layer context but gives no meaning, defaults, or usage details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Copy the selection to the clipboard and clear it in the cel.' This clearly conveys cut semantics and distinguishes it from the sibling ase_copy_selection, which only copies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance about when to use this tool instead of ase_copy_selection or ase_clear_cel. The intended usage is implied by the wording, but no alternative or exclusion is mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_delete_frameAse Delete FrameC
Delete a 1-based frame.
| Name | Required | Description | Default |
|---|---|---|---|
| frame | Yes | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says 'Delete' without explaining that this is destructive and possibly irreversible, how it affects cels, animation tags, or the ordering of remaining frames, or what happens if the frame index is out of range.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with no fluff, and it front-loads the key action and indexing detail. It is concise without being a tautology, though it could be slightly more explicit about parameter roles.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter deletion tool, the 1-based indexing hint is the most critical detail and is present. Still, with no annotations and no behavioral context, an agent lacks information about destructive consequences and error conditions, so the description is minimally adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description clarifies that the 'frame' parameter is 1-based, which is meaning beyond the bare integer type in the schema. However, with 0% schema description coverage, it leaves 'sprite_path' semantics unaddressed, so it only partially compensates for the missing parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear action ('Delete') and resource ('frame'), and adds the important indexing detail '1-based'. It is distinct from sibling tools like ase_add_frame or ase_duplicate_frame, though it does not explicitly differentiate itself from them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives such as ase_duplicate_frame, ase_add_frame, or ase_clear_cel. The description gives no context about deleting animation frames, preserving cels, or any prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_delete_layerAse Delete LayerC
Delete a layer by name.
| Name | Required | Description | Default |
|---|---|---|---|
| layer_name | Yes | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only says 'Delete a layer by name,' which implies a destructive operation but doesn't disclose irreversibility, effect on cels, or error handling. This is insufficient for a destructive tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence, which is concise and front-loaded. It wastes no words, but it is under-specified, lacking any behavioral or usage detail. Still, it is efficiently sized for a simple action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple delete operation with two parameters, the description is minimal but lacks critical context: no mention of permanence, undo support, or what happens if the layer doesn't exist. Given no annotations, the description should provide more safety-relevant information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the description doesn't explain the parameters. Although the names sprite_path and layer_name are self-explanatory, the description doesn't add meaning beyond the schema, nor does it clarify formats or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: 'Delete a layer by name.' It distinguishes from other delete operations (e.g., ase_delete_frame) by specifying 'layer'. However, it doesn't mention the sprite context, which is implied by the sprite_path parameter, so it's not a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like ase_merge_layer_down or ase_set_layer_visibility. It doesn't state prerequisites (e.g., sprite must be open) or consequences, leaving the agent without direction on when to choose this over similar layer operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_delete_sliceAse Delete SliceB
Delete a slice by name.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only states the action without indicating that deletion is irreversible, what happens if the slice does not exist, whether the sprite must be saved, or any other side effects. This is a significant gap for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler. Each word contributes meaning, and the action is front-loaded. It is appropriately concise for a simple delete operation, with no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Even though an output schema exists, the tool is destructive and requires context about prerequisites (e.g., knowing the slice name from ase_list_slices), error handling for missing slices, and the effect on the overall sprite. The description provides none of this, so an agent would need to infer critical operational details, making the definition incomplete for safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has two required string parameters with no descriptions (schema coverage 0%). The description only hints at the 'name' parameter via 'by name' but says nothing about 'sprite_path'—how it identifies the sprite file, its expected format, or its relationship to 'name'. The description adds minimal value beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action (delete), a specific resource (slice), and the selection mechanism (by name). This clearly distinguishes it from sibling tools like ase_create_slice, ase_set_slice_center, and ase_list_slices, which have different actions on the same resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, nor any prerequisites such as obtaining slice names via ase_list_slices. The description does not mention exclusions, conditions, or when deletion is appropriate, leaving the agent without decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_delete_tagAse Delete TagC
Delete an animation tag by name.
| Name | Required | Description | Default |
|---|---|---|---|
| tag_name | Yes | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries full responsibility for behavioral disclosure. It clearly indicates a destructive delete action, but it does not describe side effects, irreversibility, what happens if the tag or sprite is not found, or whether the change must be saved.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise, front-loaded sentence with no redundant words. However, it is so terse that it omits useful parameter context, so it is not maximally effective despite being compact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation tool with two required parameters and no annotations, the description is incomplete: it omits parameter semantics for sprite_path, prerequisites, and behavioral details. The presence of an output schema reduces the need to describe return values, but the remaining gaps are significant.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description only clarifies the 'tag_name' parameter as 'by name'. It does not explain 'sprite_path', its expected format, or the relationship between the two parameters, leaving a required parameter semantically undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Delete an animation tag by name' states a specific verb ('Delete') and resource ('animation tag') with a clear selection criterion ('by name'). This clearly distinguishes it from sibling tag tools like ase_create_tag and ase_export_tag, which use different verbs and purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives, nor are prerequisites mentioned such as the tag needing to exist or the sprite being open/loaded. The usage context is only implied by the action itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_deselectAse DeselectA
Clear the server-side selection.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries the full burden of behavioral disclosure. It clearly states the core effect—clearing the server-side selection—but does not discuss idempotence, whether the editor-visible selection is also affected, or any other side effects. For a simple zero-argument operation, this is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no filler, front-loading the action and the object. Every word contributes meaning and the description is appropriately minimal for this tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with an output schema, the description is nearly complete: an agent knows what action is invoked and what state changes. The main ambiguity is the meaning of 'server-side selection' and the lack of usage context, but the low complexity keeps this acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool accepts zero parameters and the input schema is empty, so there are no parameter semantics to document. The baseline of 4 applies because there is nothing additional the description needs to clarify.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('clear') on a specific resource ('the server-side selection'), so an agent knows what the tool does. It adds the 'server-side' qualifier beyond the title, but it does not explicitly distinguish itself from sibling selection tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives such as ase_select_* or krita_clear_selection. The 'server-side' qualifier hints at a distinction, but there are no explicit when-to-use or when-not-to-use conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_dither_gradientAse Dither GradientA
Fill a rectangle with a two-color Bayer 4x4 ordered-dither gradient (the classic pixel-art blend: no new intermediate colors). Top-to-bottom by default; horizontal=true runs left-to-right. Coordinates are sprite-global (the cel is normalized to the canvas).
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | ||
| y | Yes | ||
| frame | No | ||
| layer | No | ||
| width | Yes | ||
| height | Yes | ||
| color_end | Yes | ||
| horizontal | No | ||
| color_start | Yes | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It explains the algorithm (Bayer 4x4 ordered-dither), the direction (top-to-bottom default, horizontal=true for left-to-right), and the coordinate system (sprite-global, cel normalized to canvas). It also notes the absence of intermediate colors, which is a critical behavioral trait. While it does not detail side effects like overwriting, the act of 'filling' is inherently clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short sentences with no redundancy. The first sentence states the primary purpose, the second covers direction, and the third clarifies the coordinate system. It is front-loaded and every sentence earns its place, making it easy for an agent to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (10 parameters, no schema descriptions, no annotations), the description covers the essential behavior, direction, and coordinate system. It does not explain frame/layer defaults or color string format, but these are partly addressed by the schema defaults. The presence of an output schema reduces the need to describe return values. Overall, it is complete enough for a drawing tool, with minor gaps in parameter details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains the rectangle dimensions (x, y, width, height) by referencing a rectangle and sprite-global coordinates, the two colors (color_start, color_end) as the two-color gradient, and the horizontal flag for direction. However, it does not explain the format for color strings, nor the meaning of frame and layer parameters, which are optional but present in the schema. It adds value beyond the schema but leaves some parameter semantics ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (fill a rectangle), the specific method (two-color Bayer 4x4 ordered-dither gradient), and the key constraint (no new intermediate colors). It distinguishes this tool from siblings like ase_draw_rectangle or ase_fill_area by specifying the dithering algorithm and gradient nature, making its purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for creating dithered gradients between two colors, but it does not explicitly mention when to use this tool versus alternatives such as ase_draw_with_dither or ase_fill_area. There is no statement about exclusions or preferred scenarios, leaving the agent to infer from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_downsampleAse DownsampleB
Box-ish downsample to target size (bilinear then nearest for pixel art).
| Name | Required | Description | Default |
|---|---|---|---|
| width | Yes | ||
| height | Yes | ||
| out_path | No | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the burden of disclosing behavior. It does reveal the resampling method ('box-ish', 'bilinear then nearest'), which is useful. However, it does not mention side effects such as whether the original file is modified, whether out_path is written, or what the tool returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that leads with the action and uses a parenthetical to add algorithm detail. Every word earns its place and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, 0% parameter schema coverage, and only one sentence of description, this tool is under-specified. An agent would not know whether this saves to out_path, how it differs from ase_scale_sprite, or what the expected output is, despite the presence of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain any parameter by name. 'Target size' hints at width and height, but sprite_path and out_path are left completely unexplained, so the description fails to compensate for the lack of schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('downsample to target size') and a specific algorithm ('bilinear then nearest for pixel art'), so an agent can tell it is a resampling operation. However, it does not explicitly distinguish itself from sibling tools like ase_scale_sprite or ase_resize_canvas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for pixel art' provides an implied use case, but there is no explicit guidance about when to use this tool versus alternatives such as ase_scale_sprite. No exclusions or alternative tool names are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_draw_circleAse Draw CircleC
Draw a circle (filled or outline).
| Name | Required | Description | Default |
|---|---|---|---|
| color | Yes | ||
| frame | No | ||
| layer | No | ||
| filled | No | ||
| radius | Yes | ||
| center_x | Yes | ||
| center_y | Yes | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Draw a circle' implies modification of the sprite, but it does not state whether existing pixels are overwritten, whether the operation is destructive, how colors are interpreted, or what happens if coordinates are out of bounds. The description is too thin to inform an agent 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short, which is concise, and front-loads the core action. The parenthetical adds value by clarifying the 'filled' option. However, it is under-specified to the point of being terse rather than efficiently informative, so it is only minimally acceptable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 8 parameters, 0% schema coverage, no annotations, and many sibling tools, this description is severely incomplete. It omits essential information about coordinate systems, color formats, frame/layer targeting, and rendering behavior. An agent cannot reliably invoke this tool correctly from the description alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must compensate for the 8 parameters, but it only hints at the 'filled' boolean ('filled or outline'). It does not explain sprite_path, center_x, center_y, radius, color, frame, or layer semantics. This is far from adequate for an agent to construct valid calls.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Draw a circle', which is distinct from sibling tools like ase_draw_line and ase_draw_rectangle. The parenthetical '(filled or outline)' adds a key nuance that maps to the 'filled' parameter. However, it does not explicitly differentiate from other ase_draw_* tools beyond the shape name, so it is clear but not fully sibling-aware.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. The description says nothing about suitable contexts, such as when a user wants a basic shape vs. a more complex drawing operation, nor does it mention any exclusions or prerequisites. With many sibling draw tools, an agent has no basis to decide between them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_draw_contourAse Draw ContourC
Draw a polyline/polygon through points.
| Name | Required | Description | Default |
|---|---|---|---|
| color | Yes | ||
| frame | No | ||
| layer | No | ||
| closed | No | ||
| points | Yes | ||
| thickness | No | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the basic drawing action and does not explain that it modifies the sprite at sprite_path, what coordinate space points use, how 'closed' and 'thickness' affect the result, or which frame/layer are affected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise and front-loaded, with no filler or redundancy. However, it is so brief that it skips structural details that would help an agent, so it earns high marks for conciseness but not full marks for structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given seven parameters, no annotations, and a mutation-oriented drawing operation, a single clause is insufficient. Critical information such as the point object format, coordinate system, default frame/layer behavior, and the meaning of closed/thickness is missing, making the tool hard to invoke correctly in practice.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but it only loosely associates 'points' with the path. It does not clarify the structure of a point object, nor does it add meaning for sprite_path, color, frame, layer, closed, or thickness.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Draw') and a distinct resource ('polyline/polygon') rather than just restating the tool name. The phrase 'through points' helps differentiate it from single-segment draw_line, draw_rectangle, and draw_circle siblings, although it does not explicitly name any sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit when-to-use guidance, no exclusions, and no mention of alternatives. An agent must infer from the name and the word 'polyline/polygon' that this is for connected multi-point paths, but that inference is not made explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_draw_lineAse Draw LineB
Draw a line (Bresenham, optional thickness).
| Name | Required | Description | Default |
|---|---|---|---|
| x1 | Yes | ||
| x2 | Yes | ||
| y1 | Yes | ||
| y2 | Yes | ||
| color | Yes | ||
| frame | No | ||
| layer | No | ||
| thickness | No | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only mentions the algorithm and optional thickness, but does not state whether the line overwrites existing pixels, whether it targets the active layer, or any side effects like selection handling. This is a significant gap for a drawing tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, a single sentence with no filler. It front-loads the primary purpose and includes two useful specifics (Bresenham, optional thickness). While efficient, it sacrifices completeness for brevity, which is acceptable but not exceptional.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 9 parameters, zero schema descriptions, no annotations, and an output schema that is not described, this description is grossly inadequate. An agent would not know how to set most parameters correctly, what the function returns, or what side effects to expect. It covers almost none of the needed context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the 9 parameters. It only adds meaning for 'thickness' and implicitly for coordinates via the line concept. Other parameters like color, frame, layer, and sprite_path are left undefined. This is insufficient for correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'draw' and the resource 'a line', and the parenthetical mention of Bresenham and optional thickness distinguishes it from sibling drawing tools like ase_draw_pixels, ase_draw_rectangle, and ase_draw_circle. It is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (when you need to draw a line on a sprite), but it does not provide explicit guidance on when to choose this over alternatives, nor does it mention any prerequisites or exclusions. It is adequate but leaves the selection rationale to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_draw_on_tileAse Draw On TileA
Paint pixels into a tile of a tilemap layer's tileset. Coordinates are tile-local (0,0 = tile top-left); pixels are [{x, y, color: '#rrggbb'}]. tile_index 1 is the first real tile (0 is the reserved empty tile); passing tile_index == current tile count appends a new tile.
| Name | Required | Description | Default |
|---|---|---|---|
| pixels | Yes | ||
| layer_name | Yes | ||
| tile_index | Yes | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses non-obvious behavior: coordinates are tile-local, 0 is a reserved empty tile, tile_index values start at 1, and passing the current tile count appends a new tile. It omits state requirements and error behavior, but covers the key mutation semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three focused sentences front-load the action and immediately provide coordinate and format details, followed by the tile_index edge case. There is no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter mutation tool with no annotations, the description provides the core semantics needed to call it correctly: coordinate frame, pixel format, reserved index, and append behavior. It leaves unspecified edge cases such as out-of-range tile_index or whether the target layer must already be a tilemap layer, but an output schema exists for return values and the main operational hazards are covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description must compensate. It precisely documents the pixel element shape ({x, y, color: '#rrggbb'}) and the special tile_index semantics, while sprite_path and layer_name are clear from the resource phrase. This adds significant meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Paint') and names the exact resource (pixels in a tile of a tilemap layer's tileset), which clearly separates it from sibling tools like ase_draw_pixels that operate on sprite canvas coordinates. It also states the coordinate system and tile-index conventions, making its function unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: use this tool when modifying the pixels that make up a tile in a tilemap layer's tileset, rather than drawing on the sprite canvas or setting tilemap grid positions. It does not name alternatives explicitly or state when not to use it, but the tile-local coordinate and tile_index hints are enough to identify the appropriate scenario.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_draw_pixelsAse Draw PixelsB
Draw individual pixels [{x,y,r,g,b,a}] (or hex via r/g/b/a ints) on a cel.
merge=True skips fully transparent pixels (sprite stamping); default replaces everything including alpha.
| Name | Required | Description | Default |
|---|---|---|---|
| frame | No | ||
| layer | No | ||
| merge | No | ||
| pixels | Yes | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It usefully reveals that the default mode replaces everything including alpha, while merge=True skips fully transparent pixels. However, it does not mention undoability, coordinate bounds, or effects on the rest of the cel.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded, with the core behavior in the first sentence. The second sentence earns its place by explaining merge behavior. The confusing 'hex via r/g/b/a ints' clause slightly hurts clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema lowers the burden for return-value documentation, and the essential pixel-drawing behavior is present. But for a 5-parameter tool with 0% schema coverage, the description is thin: pixel format details, defaults, and the hex ambiguity are not fully resolved.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains the pixel array shape [{x,y,r,g,b,a}] and the merge parameter's meaning. But it leaves color ranges, frame/layer semantics, and the ambiguous 'hex via r/g/b/a ints' phrase unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Draw individual pixels ... on a cel.' This clearly identifies the action. It does not explicitly differentiate from the sibling ase_draw_pixels_hex, and the phrase 'or hex via r/g/b/a ints' is confusing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives like ase_draw_pixels_hex, ase_draw_line, or ase_fill_area. The merge explanation is parameter behavior, not tool-selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_draw_pixels_hexAse Draw Pixels HexC
Convenience: draw pixels given as [{x, y, color: '#rrggbb' or '#rrggbbaa'}].
| Name | Required | Description | Default |
|---|---|---|---|
| frame | No | ||
| layer | No | ||
| merge | No | ||
| pixels | Yes | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only restates the core action (draw pixels) and does not clarify whether pixels are overwritten, how alpha colors are composited, or how frame/layer/merge settings affect the operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence that front-loads the key input format. It could be slightly improved by removing the vague 'Convenience:' prefix, but overall it is appropriately concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema, return values are likely covered, but the description is incomplete for an agent selecting among many drawing tools. It does not explain the relationship to ase_draw_pixels, the meaning of 'merge', or how the other parameters affect the draw operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for all parameters, but it only documents the 'pixels' item structure. Parameters like 'frame', 'layer', 'merge', and 'sprite_path' are left to inference from their names and defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('draw pixels') and the exact expected input format, including color encoding. It is distinguishable from most siblings by its hex-color focus, though it does not explicitly distinguish itself from the similarly named ase_draw_pixels.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The word 'Convenience' implies this is a simplified wrapper, but the description gives no concrete guidance about when to use this tool versus ase_draw_pixels or other drawing tools like ase_draw_line or ase_fill_area. No exclusions or alternatives are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_draw_rectangleAse Draw RectangleC
Draw a rectangle (filled or outline).
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | ||
| y | Yes | ||
| color | Yes | ||
| frame | No | ||
| layer | No | ||
| width | Yes | ||
| filled | No | ||
| height | Yes | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only says 'draw a rectangle (filled or outline)' and omits key details like whether it overwrites existing pixels, how it interacts with the active frame/layer, or what color format is expected. This is inadequate for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no redundancy, which is efficient. However, it is so terse that it borders on under-specification rather than effective conciseness; it would benefit from a second sentence providing context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (9 parameters, no annotations) and the lack of parameter descriptions in the schema, the description is far from complete. It doesn't address coordinate origin, color format, default frame/layer behavior, or any return values, leaving an agent to guess critical call details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% with 9 parameters (6 required), and the description adds almost no parameter meaning. The only hint is 'filled or outline', which maps to the 'filled' parameter, but x, y, width, height, color, sprite_path, frame, and layer are left completely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('draw') and a specific shape ('rectangle'), and mentions the filled/outline option, which helps differentiate it from sibling tools like ase_draw_line or ase_draw_circle. However, it doesn't explicitly name any alternatives or state the sprite context, which prevents a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus siblings such as ase_draw_pixels, ase_draw_line, or ase_fill_area. The purpose is implied by the name and brief description, but there is no explicit 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.
ase_draw_with_ditherAse Draw With DitherC
Fill a region with a dither pattern (bayer_2x2/4x4/8x8, checkerboard, noise).
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | ||
| y | Yes | ||
| frame | No | ||
| layer | No | ||
| width | Yes | ||
| color1 | Yes | ||
| color2 | Yes | ||
| height | Yes | ||
| density | No | ||
| pattern | No | bayer_4x4 | |
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the dither pattern types and that it fills a region, but it does not state whether the fill respects selection boundaries, whether it overwrites existing pixels, how the density parameter affects the result, or what the output schema contains. For a mutation tool with zero annotation coverage, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the core action and includes the key pattern options. It is concise and scannable, though it could be slightly more structured by separating the pattern list from the main action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 11 parameters, 7 required, no annotations, and an output schema, but the description only covers the pattern parameter. It lacks essential context about how the region is defined, how colors are specified, what density means, and what the output indicates. This is inadequate for an agent to invoke the tool correctly without opening the schema and guessing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains the 'pattern' parameter by listing valid values, but it does not explain the meaning of 'density', the format of 'color1'/'color2', or the coordinate system for x/y/width/height. With 11 parameters and no schema descriptions, the description only clarifies one parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Fill') and resource ('a region with a dither pattern'), and enumerates the pattern types. It clearly distinguishes from sibling drawing tools like ase_fill_area (solid fill) and ase_dither_gradient (gradient dither), though it doesn't explicitly name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for filling a region with a dither pattern, and the pattern list gives some context. However, it does not explicitly state when to use this tool versus ase_fill_area, ase_dither_gradient, or ase_draw_pixels, nor does it mention any prerequisites like active selection or layer requirements.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_duplicate_frameAse Duplicate FrameC
Duplicate a frame; insert_after=0 appends at the end.
| Name | Required | Description | Default |
|---|---|---|---|
| sprite_path | Yes | ||
| insert_after | No | ||
| source_frame | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description carries the full burden of behavioral disclosure. It reveals that insert_after=0 appends at the end, which is useful, but it does not disclose whether duplication copies all cels/layers/frame duration, whether the operation is additive, or how invalid indices are handled. For a mutating tool this is thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one compact sentence with no filler, and the main action is front-loaded. It is appropriately concise, though the brevity contributes to under-specification in other dimensions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple and an output schema exists, but without annotations and with zero parameter documentation, the agent only gets a bare action and one parameter hint. It lacks enough context to know what source_frame refers to or what 'duplicate a frame' entails in Aseprite terms.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains insert_after (0=end), but says nothing about sprite_path or source_frame, leaving both required parameters to inference.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource: 'Duplicate a frame'. It also gives a concrete behavioral detail about insert_after=0 appending at the end. It does not explicitly distinguish itself from siblings like ase_add_frame or ase_copy_cel, but the verb 'duplicate' is unambiguous about copying an existing frame.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as ase_add_frame, ase_copy_cel, or ase_duplicate_layer. The insert_after note is a parameter behavior, not selection guidance. No exclusions or alternative conditions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_duplicate_layerAse Duplicate LayerA
Duplicate a layer with independent copies of all its cels, plus opacity and blend mode. The copy lands directly above the source; default name is the source name plus a copy suffix.
| Name | Required | Description | Default |
|---|---|---|---|
| new_name | No | ||
| layer_name | Yes | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it does well: it states that the copy is independent (deep copy of cels), that opacity and blend mode are included, that the copy lands directly above the source, and that the default name follows a suffix pattern. It doesn't mention potential edge cases like overwrite behavior, but the key side effects are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences deliver the core action, the copied attributes, the placement, and the default naming convention. There is no filler, and the most important information is front-loaded. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with an output schema and modest complexity, the description is nearly complete: it clarifies what gets duplicated and how the result is positioned/named. It does not mention whether group layers or layer masks are included, but given the simple parameter set and the presence of an output schema, this is not a critical omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains new_name's default behavior ('source name plus a copy suffix'), which adds value. However, sprite_path and layer_name are not explicitly defined; they are only implied by the context of the description. The description partially compensates for the lack of schema documentation but not completely.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with the specific verb 'Duplicate a layer', identifying both the action and the resource. It extends the purpose by specifying what is duplicated (all cels independently, opacity, blend mode) and the placement/name behavior, which clearly differentiates it from sibling tools like ase_add_layer, ase_delete_layer, and ase_rename_layer.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool—when a full independent copy of a layer is needed—but it does not explicitly name alternatives or state when not to use it. An agent would infer the use case from the verb 'duplicate', but there is no direct guidance such as 'use instead of ase_add_layer for copying existing content'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_erase_colorAse Erase ColorA
Magic eraser: make every pixel matching a color fully transparent (per-channel tolerance 0-255). layer None = all layers, frame=0 = every frame. Returns the number of pixels erased.
| Name | Required | Description | Default |
|---|---|---|---|
| color | Yes | ||
| frame | No | ||
| layer | No | ||
| tolerance | No | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden. It discloses the core behavior (making pixels transparent) and return value, and clarifies layer/frame defaults. However, it does not mention whether the operation is destructive or irreversible, how it interacts with selections, or whether it affects all frames when frame=0 beyond the stated default. These are meaningful gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no redundancy. The core action is front-loaded, followed by parameter clarifications and the return value. Every clause contributes new information. This is a model of concise, structured description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 5 parameters and no annotations, the description covers the essential behavior, key parameter semantics, and return value. It doesn't mention error conditions, prerequisites like whether the sprite must be open, or how the operation interacts with existing selections. The output schema exists, which covers return format. Given the simplicity of the operation, it's nearly complete but could add a note on destructiveness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It does for three of five parameters: tolerance is given a range (0-255), layer is explained as 'None = all layers', and frame as '0 = every frame'. It does not explain the color format (e.g., hex, name) or the meaning of sprite_path, but the latter is self-evident. The description adds substantial value beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (make matching pixels transparent) and specifies per-channel tolerance and scope defaults. It is specific enough to distinguish from ase_replace_color (which changes colors) and ase_fill_area (which fills regions), though it doesn't explicitly name any sibling. The core function is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives. It doesn't mention prerequisites, exclusions, or scenarios where another tool would be preferable. The description only states what it does, not when to choose it. For an agent deciding between erase_color, replace_color, or fill_area, this provides no direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_export_layersAse Export LayersB
Export each visible layer as its own PNG named after the layer (--split-layers). out_dir defaults to output/layers_/. include_hidden also exports hidden layers.
| Name | Required | Description | Default |
|---|---|---|---|
| out_dir | No | ||
| sprite_path | Yes | ||
| include_hidden | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of disclosing behavior. It mentions that out_dir defaults to output/layers_<sprite name>/, which is useful, and that include_hidden exports hidden layers. However, it does not clarify whether the tool creates the output directory, whether it overwrites existing files, what naming conflicts arise, or whether it works for all sprite formats. The reference to --split-layers suggests a CLI wrapper but does not explain the tool's behavior on failure or edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, two sentences, and front-loads the core function. It efficiently mentions the key behavioral details: the --split-layers flag, the default output directory, and the include_hidden option. There is no redundancy or filler, but it could be slightly more structured by separating the default directory from the flag explanation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema (which likely describes the output paths or status), the description need not detail the return format. However, it lacks information on prerequisites (e.g., does the sprite need to be open?), edge cases (e.g., no visible layers, hidden layer behavior), and potential side effects (e.g., directory creation). For a tool with only 3 parameters, the description covers the essentials but leaves some gaps in operational context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains out_dir's default behavior (output/layers_<sprite name>/) and include_hidden's effect (also exports hidden layers), which adds meaning beyond the schema. However, sprite_path is barely elaborated, only implied as the input sprite file. Given the description covers two of three parameters, it partially compensates for the low schema coverage, but not fully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool exports each visible layer as a PNG named after the layer, which is distinct from ase_export_sprite (exports whole sprite) and ase_export_spritesheet (exports a spritesheet). It also mentions the flag --split-layers, which differentiates it from exporting a single image. The verb 'export' and resource 'layers' are specific, and the description conveys the exact output format.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for exporting layers individually, but it does not explicitly say when to use this tool versus ase_export_sprite or ase_export_spritesheet. It mentions include_hidden to also export hidden layers, giving a hint about typical use cases (visible layers only by default), but lacks explicit exclusions or comparisons. Given the large sibling list, more guidance on when to prefer this over other export tools would be valuable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_export_spriteAse Export SpriteB
Export sprite to png|gif|jpg|bmp; frame=0 exports the animation.
| Name | Required | Description | Default |
|---|---|---|---|
| frame | No | ||
| format | No | png | |
| output_path | Yes | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses one important behavior: frame=0 exports the animation, which is non-obvious given the schema default of 0. However, it does not mention overwrite behavior, path requirements, or any side effects. It adds some transparency but leaves many gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one sentence with no superfluous words. The core purpose and the frame caveat are front-loaded. It is efficiently structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple file-export tool, the description covers the essential invocation surface (sprite_path, output_path, format, frame) and notes the animation behavior. However, it doesn't mention whether output overwrites, whether paths must exist, or how it relates to sibling export tools. Given no annotations, a bit more context would help.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It provides the allowed format values (png|gif|jpg|bmp) not present in the schema, and explains the special meaning of frame=0. But it does not clarify sprite_path or output_path semantics, which are left to inference. This is partial compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb ('Export') and resource ('sprite') with supported formats, and adds a meaningful behavior for frame=0. However, it does not differentiate from sibling export tools like ase_export_spritesheet or ase_export_layers, so an agent may need to look elsewhere to distinguish them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to choose this tool over the sibling export tools (spritesheet, layers, tag). There is no mention of use cases or exclusions. The description only states what it does, not when to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_export_spritesheetAse Export SpritesheetC
Export a spritesheet (horizontal|vertical|rows|columns|packed) with optional JSON metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| layout | No | horizontal | |
| padding | No | ||
| output_path | Yes | ||
| sprite_path | Yes | ||
| include_json | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the behavioral burden. It does not disclose whether the export overwrites existing files, whether the output is created in the filesystem, or what the JSON metadata includes. It also does not state any side effects or dependencies as the ase_export_sprite sibling appears to handle single-sprite exports.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, concise and front-loaded with the core purpose and layout options. It does not waste words, though it could be richer with behavioral details without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (5 parameters, multiple layout modes, optional JSON), the description is incomplete. An output schema exists, so return values are covered, but the lack of usage guidance, behavioral disclosure, and parameter semantics leaves agents underinformed for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain any parameter semantics. The layout options (horizontal, vertical, etc.) are listed, but not defined. The schema parameters like 'include_json' and 'padding' have no additional meaning beyond their names. For a tool with 5 parameters and no schema descriptions, this is a significant gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Export') and resource ('spritesheet') with layout options and optional JSON metadata, which clearly distinguishes it from similar tools like ase_export_layers and ase_export_tag. It does not name siblings explicitly, but the resource and options make the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool versus alternatives. It does not mention prerequisites, such as the sprite being open, or when to prefer ase_export_sprite or ase_export_layers. The layout options are listed, but not explained in terms of use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_export_tagAse Export TagA
Export an animation tag: .gif output gives an animation, .png a frame-numbered sequence. The tag is validated up front because Aseprite's --tag silently exports ALL frames for a missing tag. output_path defaults to output/_.gif.
| Name | Required | Description | Default |
|---|---|---|---|
| scale | No | ||
| tag_name | Yes | ||
| output_path | No | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does well: it discloses the .gif animation vs .png sequence difference, the up-front validation that prevents Aseprite's silent all-frames fallback for a missing tag, and the default output path. It leaves overwrite behavior and other side effects unstated, but the most dangerous edge case is covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: the format/output distinction, the validation warning, and the default path behavior. It is front-loaded and contains no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a small export tool with two required parameters and an existing output schema, the description covers the key defaults and the critical validation trap. It is not fully complete because scale is undocumented anywhere and the description does not address what the tool returns, though an output schema lowers that latter burden.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description needed to compensate. It adds meaning for output_path via the default path and hints at tag_name behavior through the validation warning, but sprite_path is taken for granted and scale is entirely unexplained, leaving an agent without enough information to use that parameter correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Export an animation tag') and immediately clarifies the .gif vs .png output behavior. It clearly focuses on tags, distinguishing it from general sprite/spritesheet export siblings, though it does not explicitly name those alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is for exporting a named animation tag, and the warning about Aseprite's --tag behavior provides relevant context. However, it never explicitly states when to prefer this tool over ase_export_spritesheet, ase_export_sprite, or ase_export_layers, nor does it give exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_fill_areaAse Fill AreaB
Flood fill from a point (paint bucket), RGBA tolerance 0-255.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | ||
| y | Yes | ||
| color | Yes | ||
| frame | No | ||
| layer | No | ||
| tolerance | No | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must carry full behavioral disclosure. It adds a tolerance range ('0-255') and labels the tool as flood fill, but it does not disclose side effects such as whether it modifies the active layer/frame, whether the fill is destructive, or how it interacts with selections or layers.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no fluff. It efficiently names the operationeur and its key parameter, making it easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 7 parameters, zero annotation coverage, and no schema descriptions, the tool needs more context to be called correctly. The description leaves color format, frame/layer behavior, sprite_path meaning, and expected output unexplained, making it incomplete for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains tolerance (0-255) and implies x/y coordinates, but it does not describe the expected color format, sprite_path semantics, or frame/layer optional parameters. Seven parameters exist and only two are partially clarified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('flood fill') and resource ('from a point', 'paint bucket'), making the operation clear. It also distinguishes this tool from sibling drawing tools like ase_draw_pixels or ase_draw_rectangle, so an agent can differentiate without inspecting schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives, no mention of prerequisites, and no exclusionary context. The description only says what the tool does, not when it should be selected.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_flatten_layersAse Flatten LayersA
Flatten all layers into one.
| Name | Required | Description | Default |
|---|---|---|---|
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose the core destructive outcome: all layers are merged into one, which implies loss of individual layers. It does not mention irreversibility, hidden-layer behavior, or whether the change affects the saved file, but the essential behavior is stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with zero filler. It packs the operation and scope into five words and earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple and an output schema exists, so return-value details need not be described. Still, the definition lacks any parameter elaboration or usage context, making it only minimally complete for an agent that must invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not mention sprite_path at all. The only parameter is self-explanatory by name, but the description adds no guidance about how the path is used or what kind of sprite resource is expected.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: flatten all layers in the sprite into one. This clearly distinguishes it from siblings like ase_merge_layer_down or ase_export_layers, which have different semantics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is implied: use this when you want to reduce the entire sprite to a single composite layer. However, it does not explicitly state when to choose this over ase_merge_layer_down or krita_flatten, nor does it mention any caveats such as hidden layers being affected.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_flip_spriteAse Flip SpriteC
Flip horizontally|vertically (sprite or active layer).
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | sprite | |
| direction | No | horizontal | |
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden of behavioral disclosure. It only states the action 'flip' without describing side effects (e.g., in-place mutation, undo behavior, impact on animations, or whether flipping the sprite affects all layers). This is a significant gap for a mutating operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words, which is efficient. However, it is so terse that it omits important context. The core action is front-loaded, but the brevity borders on under-specification rather than polished conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there are 3 parameters, no annotations, and an output schema (which we don't see), the description is insufficient. It fails to clarify whether the operation modifies in place, what the return value contains, or how the 'sprite' vs 'active layer' choice behaves. The tool's complexity warrants more detail than a single clause.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It implicitly explains 'target' (sprite or active layer) and 'direction' (horizontal|vertical), which adds meaning beyond the raw parameter names. However, it does not clarify the required 'sprite_path' parameter, though its purpose is fairly obvious. It partially bridges the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action 'Flip' with a clear resource ('sprite or active layer') and specifies the directions ('horizontally|vertically'). This clearly identifies what the tool does and distinguishes it from other transform tools like rotation or scaling. It doesn't explicitly name a sibling alternative, but the verb+resource is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus other transform tools (e.g., ase_rotate_sprite, ase_scale_sprite). The description implies you can flip either the entire sprite or the active layer, but doesn't state conditions or exclusions. No alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_generate_color_rampAse Generate Color RampA
Generate a dark-to-light shading ramp around a base color using the standard pixel-art hue-shift technique: shadows lean cooler, highlights lean warmer, saturation tapers toward the light end. Pure computation (no Aseprite needed); feed the result to ase_set_palette or shading ops.
Returns the ramp darkest-first.
| Name | Required | Description | Default |
|---|---|---|---|
| steps | No | ||
| base_color | Yes | ||
| lightness_range | No | ||
| hue_shift_degrees | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It explicitly describes the algorithm (hue-shift with cooler shadows, warmer highlights, saturation taper) and the return order (darkest-first), which is valuable. It is a pure computation with no side effects, so not covering error cases is acceptable, but it could mention edge cases or valid input ranges.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with purpose and technique, then a clear statement about the return order. There is zero waste, and the most important information appears first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with only 4 parameters and an output schema, but the description lacks crucial input specifications such as base_color format (hex? HSL?), the meaning of lightness_range, and how hue_shift_degrees interacts with steps. While the algorithm is described, an agent cannot reliably call this tool without additional parameter knowledge, making the description incomplete for practical use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It provides qualitative meaning for the parameters (hue shift, lightness, saturation) but never explicitly names or explains each parameter (e.g., what does 'lightness_range' control, what are expected units/formats for base_color). It does not give enough detail to correctly set parameters without guessing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Generate'), identifies a concrete resource ('dark-to-light shading ramp around a base color'), and clearly distinguishes this tool from siblings by stating it is pure computation with no Aseprite needed. It also mentions the intended downstream use (ase_set_palette or shading ops), which differentiates it from editing tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by stating the technique and that it feeds into ase_set_palette or shading operations, giving context for when an agent would call it. However, it does not explicitly state when not to use it or name alternative tools for generating ramps, leaving some inference required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_get_color_statsAse Get Color StatsB
Histogram the colors of a flattened frame: unique color count, opaque pixel count, and the most-used colors. Catches palette drift and near-duplicate colors.
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | ||
| frame | No | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It describes the computed statistics but never confirms that the operation is read-only; the phrase 'flattened frame' is ambiguous and could be misread as a destructive flatten (cf. ase_flatten_layers). This is a meaningful transparency gap for a tool with no annotation safety hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler: the operation and outputs are front-loaded, and the second sentence adds a functional use case. Nothing is repeated from the title or schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema covers return shape, but the definition still lacks parameter semantics, usage exclusions, and any explicit read-only/safety context. An agent would have to guess how to provide sprite_path and whether calling this tool has side effects, which makes the definition incomplete despite its clean phrasing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description needed to define sprite_path, frame, and top. It only hints at 'frame' and 'most-used colors' as conceptual outputs, without explaining how parameters map to them, frame indexing/defaults, or what sprite_path should contain. This is inadequate compensation for the missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a concrete operation ('Histogram the colors...') and enumerates exactly what is computed: unique color count, opaque pixel count, and most-used colors. It also states the diagnostic use case ('palette drift and near-duplicate colors'), which clearly distinguishes it from siblings like ase_get_palette and ase_analyze_palette_harmonies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a usage context ('Catches palette drift and near-duplicate colors') but does not explicitly say when to prefer this tool over similar analysis tools or when not to use it. There are no exclusions, alternatives, or conditions given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_get_paletteAse Get PaletteC
Return the sprite palette as hex colors.
| Name | Required | Description | Default |
|---|---|---|---|
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for behavioral disclosure. 'Return' implies a read operation, but it does not explicitly state that the tool is non-destructive, whether the sprite_path must point to an existing file, or what happens if the palette is missing. These gaps leave the agent to infer safety and error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that efficiently conveys the action and the output format. It contains no filler and every word earns its place, making it exemplary from a conciseness standpoint.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema that may cover return values, the definition is incomplete because the only input parameter is entirely undocumented and there are no annotations to cover behavioral aspects. The description does not sufficiently compensate for the lack of schema descriptions, leaving key operational details unresolved.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the sole parameter sprite_path, and the description adds no explanation of what this parameter means or how it should be formatted. The description only mentions 'sprite' generically, leaving the agent without any guidance on the required path format or source asset.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('return') and a clearly defined resource ('sprite palette') with a concrete output format ('hex colors'). It distinguishes itself from sibling tools like ase_set_palette (which writes) and ase_get_pixels (which reads pixel data) by naming the exact object returned.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. The description does not mention prerequisites, fallback tools, or any context in which this should be preferred over other palette-related tools like ase_list_palette_presets or ase_analyze_palette_harmonies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_get_pixelsAse Get PixelsB
Read a rectangular region of a cel as {width,height,pixels:[{x,y,r,g,b,a,hex}]}.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| frame | No | ||
| layer | No | ||
| width | No | ||
| height | No | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the operation is a read, implying no mutation, but gives no details on edge cases, error behavior, or whether the sprite must be loaded. It is minimally adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded with the action and return format. It is concise with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 7 parameters, 0% schema coverage, and no annotations, the description is far too brief to guide correct invocation. It omits parameter meanings, default behaviors, and any mention of output schema details. An agent would likely misuse the tool without additional knowledge.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description provides no explanation of the parameters (x, y, width, height, frame, layer). It only mentions a 'rectangular region' without defining coordinates, defaults, or meaning of frame/layer, leaving the agent to guess from the schema's raw names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (read) and the resource (a rectangular region of a cel), and specifies the exact return format with a structured pixel array. This distinguishes it from sibling write tools like ase_draw_pixels and other read tools like ase_get_palette.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as krita_get_pixels or ase_get_palette, nor any mention of prerequisites or exclusions. An agent must infer usage from the name and description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_get_selectionAse Get SelectionC
Current selection state.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full transparency burden. It only names a state without disclosing whether the call is read-only, what happens when no selection exists, or whether an active document is required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short and free of filler, which is positive. However, this reads as under-specification rather than effective conciseness: it lacks a verb and enough context to be self-sufficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Because this is a zero-parameter getter with an output schema, the description does not need to explain return values, which mitigates the brevity. Still, edge cases like an empty selection and the active-document requirement are not addressed, leaving the definition merely adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters and coverage is 100%, so there are no parameter semantics for the description to clarify. The zero-parameter baseline applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description is a noun fragment ('Current selection state') that essentially restates the title 'Ase Get Selection'. It does not use a verb or specify what the agent will get (bounds, mask, etc.), so it does not stand alone as a clear action statement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus sibling tools like ase_get_pixels, ase_sprite_info, or the selection-manipulation tools. It also does not state any exclusions, prerequisites, or conditions that would make this the right choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_get_tile_atAse Get Tile AtB
Read which tile occupies a grid cell (0 = empty).
| Name | Required | Description | Default |
|---|---|---|---|
| col | Yes | ||
| row | Yes | ||
| frame | No | ||
| layer_name | Yes | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the read-only nature and the 0 = empty sentinel, which is useful. However, it doesn't mention what happens for out-of-bounds coordinates, which layer/frame is used, or whether the returned value is a tile ID or index. These are meaningful behavioral gaps for a grid-read tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that conveys the core purpose and the key sentinel value. Every word earns its place; there is no fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 5 parameters, no annotations, and an output schema, but the description is too thin to fully support correct invocation. It doesn't clarify coordinate systems, frame indexing, or error behavior, and it doesn't explain the output schema's meaning. For a read tool with zero schema description coverage, more context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but it only explains the return value (0 = empty) and not the parameters. The schema provides names and types but no semantics for col/row (0-based vs 1-based), frame (1-based default), layer_name, or sprite_path. The description adds no parameter-level meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Read which tile occupies a grid cell (0 = empty)' clearly states a specific verb (read), resource (tile at a grid cell), and the meaning of the 0 value. It distinguishes itself from the sibling ase_set_tiles (write operation) and ase_draw_on_tile (drawing), though it doesn't explicitly name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a read-only inspection use case ('Read which tile occupies a grid cell'), which is enough to infer when to use it versus a write tool like ase_set_tiles. However, it provides no explicit guidance on when to prefer this over ase_get_tilemap_info or ase_draw_on_tile, and no exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_get_tilemap_infoAse Get Tilemap InfoC
Tilemap layer info: tile size, real tile count (excluding empty tile 0), and map dimensions in cells.
| Name | Required | Description | Default |
|---|---|---|---|
| layer_name | Yes | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the return content (tile size, tile count, dimensions) but does not state whether this is a read-only operation, whether it requires the layer to be a tilemap layer, what happens if the layer is not a tilemap, or whether it errors on missing layers. The 'excluding empty tile 0' detail is useful but limited.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the key output fields. It is efficient and avoids fluff. However, it could have used the space to add parameter context or usage guidance without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema, so return values are partially covered, but the description lacks parameter semantics, error behavior, and usage context. For a tool with two required parameters and no annotations, the description is too thin to fully guide an agent. The 'excluding empty tile 0' detail is helpful but not enough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does not explain what sprite_path or layer_name mean, what formats are expected, or how they relate to the tilemap. The description only explains the output, not the parameters. With two required parameters and zero schema descriptions, this is a significant gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves tilemap layer info: tile size, real tile count (excluding empty tile 0), and map dimensions in cells. It names a specific resource (tilemap layer) and the specific data returned. It doesn't explicitly distinguish from sibling tools like ase_get_tile_at or ase_set_tiles, but the resource and output fields are clear enough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. It doesn't mention that this is a read-only inspection tool, nor does it contrast with ase_get_tile_at (which reads individual tile values) or ase_set_tiles (which writes tiles). The context is implied by the name and description but no explicit when/when-not guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_import_layerAse Import LayerA
Import a PNG (e.g. an RD generation) into an .aseprite sprite as a new layer.
The image cel is placed at (0,0) on the given 1-based frame. The sprite file is saved in place. Runs headless via the Aseprite CLI.
| Name | Required | Description | Default |
|---|---|---|---|
| frame | No | ||
| image_path | Yes | ||
| layer_name | Yes | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses key behaviors: 'saved in place' implies mutation of the file, 'runs headless via the Aseprite CLI' indicates no GUI, and the placement at (0,0) is stated. However, it does not disclose whether the operation is reversible or if it overwrites existing layers with the same name, which could be important.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the core purpose, followed by specific placement instructions and execution details. It is efficient without unnecessary fluff, but could benefit from a brief note on parameter specifics without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main operation and execution mode, but given the 0% schema description coverage and lack of annotations, it lacks detail on the parameters' meaning and expected formats. There is no output schema, so the description could mention what the tool returns (e.g., success status). Overall, it is adequate for a simple import but leaves important details for an agent to infer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not elaborate on the parameters. It mentions 'given 1-based frame' which adds context for the 'frame' parameter, but does not explain what 'sprite_path', 'image_path', or 'layer_name' should be (e.g., file formats, path requirements). This is a significant gap since the schema only lists types without descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (import a PNG as a new layer), the target resource (.aseprite sprite), and the context (e.g., an RD generation). It distinguishes from siblings like ase_add_layer or ase_export_sprite by specifying the import source and placement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides essential usage context: the image is placed at (0,0) on a given frame, and the file is saved in place. However, it does not explicitly mention when to use this tool versus alternatives like ase_add_layer (which likely creates an empty layer) or ase_create_cel (which might place an image differently). This is a minor gap, but the core usage is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_link_celAse Link CelC
Make a cel linked (shared image) with another frame's cel.
| Name | Required | Description | Default |
|---|---|---|---|
| layer_name | Yes | ||
| sprite_path | Yes | ||
| source_frame | Yes | ||
| target_frame | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the core behavior (creating a linked cel that shares an image), but does not explain side effects: whether the target cel is overwritten, if both cels must exist, what happens to the original image, or whether the operation is reversible. This is minimal transparency, not misleading but clearly insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler words, and the core action is front-loaded. It is appropriately sized for a tool that is conceptually simple, and every word contributes to the definition. This is a model of concise structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with four required parameters, zero schema descriptions, and no annotations, the one-sentence description is far too thin. It doesn't explain parameter semantics, the effect on existing cels, the direction of linking, or any prerequisites or return behavior. Even with an output schema present, the description leaves critical operational details undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate by explaining the four required parameters. It does not; it never mentions sprite_path, layer_name, source_frame, or target_frame. The phrase 'another frame's cel' vaguely alludes to frame parameters, but the mapping among parameters and their roles is left entirely to inference from names. This adds almost no value beyond the schema itself.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear action ('Make a cel linked') and specifies the resource ('with another frame's cel'), which distinguishes it from siblings like ase_copy_cel by the concept of linking rather than copying. However, it doesn't explicitly state the direction of the link (source to target) or the meaning of 'shared image' in Aseprite, which would make it even more precise among the many cel operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance on when to use this tool versus alternatives such as ase_copy_cel or ase_create_cel. It doesn't mention prerequisites (e.g., existing cels), typical scenarios, or exclusions. This is a bare definition with no usage context, so it falls at 'no guidance' rather than implied usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_list_palette_presetsAse List Palette PresetsA
List the built-in retro palette presets (gameboy, pico8, c64, cga, dawnbringer16/32, grayscale_4, monochrome) with their hex colors. Pure data: works without Aseprite.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses that the tool is pure data and works without Aseprite, which is a meaningful behavioral trait. It also lists the exact presets included, setting expectations for the output. It doesn't mention output format details, but the output schema exists and the description covers the key behavioral distinction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no waste. The first sentence states the resource and scope, the second adds the key behavioral trait (works without Aseprite). Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter listing tool with an output schema, the description is nearly complete. It names the presets and the data type (hex colors), and clarifies the no-Aseprite requirement. The only minor gap is not describing the exact output structure, but the output schema covers that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is no parameter semantics burden. The description adds value by enumerating the exact preset names and noting hex colors are included, which helps the agent understand what the output will contain. Baseline 4 for zero params is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists built-in retro palette presets and names the specific presets (gameboy, pico8, c64, cga, dawnbringer16/32, grayscale_4, monochrome) with their hex colors. It distinguishes itself from sibling tools like ase_apply_palette_preset by focusing on listing rather than applying.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is a pure data/listing tool that works without Aseprite, which helps an agent know when to use it (e.g., when needing palette hex values without a running Aseprite instance). It doesn't explicitly state when not to use it or name alternatives, but the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_list_slicesAse List SlicesB
List all slices with bounds, 9-patch centers and pivots.
| Name | Required | Description | Default |
|---|---|---|---|
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. The description states what it lists but does not disclose any side effects (likely none), whether it requires an existing sprite or modifies anything, or what happens if the sprite path is invalid. It does not contradict any annotations (since none exist), but it falls short of providing behavioral context 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the core action and the key output attributes. It has no fluff, but it could benefit from a brief note about the parameter or usage. Overall, it is efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema exists (though not detailed in the prompt), so the description does not need to explain return values. The tool is relatively simple with one parameter, but the lack of behavioral context and parameter semantics leaves gaps. Given the information available, it is adequate but not comprehensive, earning a 3.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the schema only defines sprite_path as a string with no description. The tool description does not clarify what sprite_path means (e.g., file path vs. sprite identifier) or provide any format expectations. It does not compensate for the lack of schema documentation, leaving the agent to infer the parameter's meaning from the tool name and context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'all slices', and mentions the key attributes (bounds, 9-patch centers, pivots). It is specific enough to distinguish from related slice operations (e.g., ase_create_slice, ase_delete_slice) because it is the only one focused on listing. However, it does not explicitly differentiate from other 'list' tools in the sibling set (e.g., ase_list_palette_presets), but the context makes it clear enough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: call this tool when you need to retrieve slice information for a sprite. It does not explicitly state when to use this versus alternatives (e.g., ase_sprite_info to get general sprite info), nor when not to use it. There is no mention of prerequisites like needing an open sprite or valid path. With only one parameter, the guidance is minimal but somewhat inherent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_merge_layer_downAse Merge Layer DownB
Merge a layer into the layer directly below it (must not be bottom).
| Name | Required | Description | Default |
|---|---|---|---|
| layer_name | Yes | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden of behavioral disclosure. It names the operation and an edge case but does not reveal that merge-down typically removes/consumes the upper layer, or mention any undo/permission implications, leaving destructive consequences implicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler. Every phrase contributes either the action or a necessary constraint.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool with an output schema, the description covers the core action and the key precondition. It is not fully complete because the destructive outcome and the absence of any sibling comparison leave an agent to infer important consequences.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds little beyond the schema: 'layer' hints at layer_name, and the bottom-layer restriction gives one constraint, but sprite_path is left entirely unexplained and no format or relationship is described.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a precise operation ('Merge a layer into the layer directly below it') with a specific resource and an explicit constraint ('must not be bottom'). This clearly differentiates from sibling tools like ase_flatten_layers and ase_reorder_layer.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: when a single layer should be merged downward into its immediate neighbor. However, it offers no explicit guidance about alternatives (e.g., ase_flatten_layers for merging all layers) or exclusions beyond the bottom-layer restriction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_move_selectionAse Move SelectionB
Move the selection bounds (not pixels).
| Name | Required | Description | Default |
|---|---|---|---|
| dx | Yes | ||
| dy | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for behavioral disclosure. It does reveal the key trait that only selection bounds move, not pixels, but it omits whether dx/dy are relative offsets, what happens if no selection exists, and whether bounds are clamped to canvas edges. This is minimal coverage for a tool with no annotation safety net.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with the core verb and resource, plus a clarifying parenthetical that enriches meaning. Every word earns its place and the essential scoping detail is front-loaded. This is appropriately sized for a simple two-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and the presence of an output schema, the description is moderately complete. It covers the primary action and the pixel/non-pixel distinction, but leaves out parameter semantics and behavior in edge cases. For an agent to invoke it confidently, more detail on dx/dy and selection existence would be needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain the parameters. It only says 'move the selection bounds' and gives no detail on dx/dy meaning, units, or direction. The names dx/dy hint at deltas, but the description adds no explicit value beyond the schema's bare integer declarations.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Move the selection bounds (not pixels)' uses a specific verb and resource, clearly distinguishing this from tools that move pixel content. It also differentiates from sibling selection tools like ase_select_rectangle or ase_copy_selection by focusing on repositioning the selection bounds.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for shifting the selection boundary without affecting underlying pixels, which is a clear use case. However, it does not explicitly state when to prefer this over alternatives such as ase_get_selection or ase_select_rectangle, nor does it mention prerequisites like having an active selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_oscillate_cel_positionsAse Oscillate Cel PositionsA
Sine-wave cel motion across a frame range (bobbing, breathing, hovering). Offsets are applied relative to each cel's position at script start, so run once per animation pass. x follows sin, y follows cos. layer None = first image layer.
| Name | Required | Description | Default |
|---|---|---|---|
| layer | No | ||
| cycles | No | ||
| end_frame | Yes | ||
| phase_deg | No | ||
| amplitude_x | No | ||
| amplitude_y | No | ||
| sprite_path | Yes | ||
| start_frame | Yes | ||
| create_missing | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It discloses the subtle relative-offset behavior, the run-once requirement, and the sin/cos axis mapping, all non-obvious traits. It does not explicitly state whether existing cel positions are destructively overwritten, but the 'offsets are applied' wording communicates mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no filler. The primary behavior is front-loaded, and the key caveat ('run once per animation pass') and default layer behavior are each given one compact sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core behavior and the most important gotchas, and an output schema is present so return-shape documentation is not required. But for a tool with 9 parameters and no annotations, omitting create_missing, phase_deg, and cycles semantics leaves the definition incomplete for confident configuration.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It adds meaning for layer ('None = first image layer'), frame range maps to start_frame/end_frame, and the sin/cos sentence clarifies amplitude_x/amplitude_y. However, cycles, phase_deg, and create_missing are left semantically undefined, which is a clear gap for a 9-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action and resource: 'Sine-wave cel motion across a frame range (bobbing, breathing, hovering).' It names the exact behavior (oscillating cel positions) and the axes involved (x=sin, y=cos), which clearly distinguishes it from sibling tools like ase_set_cel_position or ase_tween_cel_positions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear usage context: offsets are relative to each cel's position at script start, and the tool should 'run once per animation pass.' It also explains the layer default ('layer None = first image layer'). It does not explicitly name alternatives or exclusions, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_paste_clipboardAse Paste ClipboardC
Paste the server clipboard onto a cel at (x,y), respecting alpha.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| frame | No | ||
| layer | No | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It adds one useful detail — 'respecting alpha' — but fails to state whether the paste overwrites existing cel content, what happens if no cel exists at the target position, whether the clipboard is cleared after pasting, or any error conditions. For a mutation-style paste operation with zero annotation coverage, this is a significant disclosure gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single-sentence description is efficiently worded and front-loads the primary action. However, for a tool with 5 parameters and no other documentation, it leans toward under-specification rather than disciplined conciseness — it is compact but omits necessary detail, so it cannot be rewarded as well-structured completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The presence of an output schema covers return values, which helps. But the description leaves the parameters frame, layer, and sprite_path unexplained, omits the prerequisite clipboard-population step, and provides minimal behavioral context. For a 5-parameter tool with no annotations, the description is not complete enough for an agent to call it correctly and confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across all 5 parameters, so the description must compensate but does not. Only x and y are implied by the phrase 'at (x,y)'. The parameters frame, layer, and sprite_path are entirely unexplained in both the schema and the description. The description fails to add meaning for the majority of the tool's inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Paste'), a distinct source ('server clipboard'), and a precise target ('onto a cel at (x,y)'). This clearly identifies the tool's function and differentiates it from siblings like ase_copy_cel (copies a cel) and ase_copy_selection (copies a selection). The term 'server clipboard' signals a server-side buffer populated by another operation, which is a meaningful distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives, nor any prerequisite that a server clipboard must first be populated (presumably by ase_copy_selection or ase_cut_selection). The description does not mention when-not-to-use, required preconditions, or alternative routes such as pasting a selection locally. An agent would have to infer the workflow context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_propagate_celsAse Propagate CelsA
Copy the cels of a source frame across a frame range (per layer list; None = every image layer). The animation workhorse: draw once, propagate, then tween positions. replace=True overwrites existing cels.
| Name | Required | Description | Default |
|---|---|---|---|
| layers | No | ||
| replace | No | ||
| end_frame | Yes | ||
| sprite_path | Yes | ||
| start_frame | Yes | ||
| source_frame | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does disclose a key destructive behavior – 'replace=True overwrites existing cels' – and explains the layer-scope default (None = every image layer). However, it does not indicate what happens when replace=False (e.g., skip existing cels or add new ones), nor whether the operation is reversible or modifies the sprite in place.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with zero filler. The core operation is front-loaded, followed by the workflow hint and the overwrite caveat. Every word contributes to understanding the tool's purpose and key behaviors.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main operation, layer scope, and replace behavior, and an output schema exists so return-value documentation is not required. However, it leaves open what happens when replace=False (skip existing cels vs. create new ones) and whether the source frame is included in the target range. For a 6-parameter tool with no annotations, this is an important gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for missing parameter information. It does explain the `layers` parameter (per layer list; None = every image layer) and the effect of `replace=True`. It does not explicitly describe `sprite_path`, `source_frame`, `start_frame`, or `end_frame`, though their meanings are inferable from the first sentence and parameter names. This is partial compensation rather than complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Copy the cels of a source frame across a frame range' – a specific verb and resource. It does not explicitly differentiate from sibling tools like ase_copy_cel or ase_link_cel, but the 'across a frame range' scope makes the distinction apparent. The lack of explicit sibling comparison keeps it from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'The animation workhorse: draw once, propagate, then tween positions' provides a clear workflow context, indicating this tool is used after drawing a keyframe and before tweening. It does not explicitly list alternatives or state when not to use it, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_quantize_to_paletteAse Quantize To PaletteA
Snap every opaque pixel to the nearest color in the sprite's own palette (RGB distance, cached per color). layer None = all layers, frame=0 = every frame. Run after ase_apply_palette_preset / ase_set_palette to make existing art conform. Returns the number of pixels changed.
| Name | Required | Description | Default |
|---|---|---|---|
| frame | No | ||
| layer | No | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden, and it does well: it discloses the opaque-pixel scope, RGB distance matching, per-color caching, layer/frame defaults, and the return value. It does not explicitly state that transparent pixels are left untouched or that the operation modifies the sprite in place, but the core behavior is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences deliver the core operation, the critical parameter semantics, the workflow context, and the return value with no filler. The most important action is front-loaded before defaults and workflow guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the operation, the two optional parameters' scope, the recommended sequence relative to palette-setting tools, and the return value, which aligns with the output schema. A small gap remains around explicit handling of transparent pixels and whether the edit is destructive or reversible, but the agent has enough to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It adds real meaning by explaining that layer None means all layers and frame=0 means every frame, which are non-obvious defaults. sprite_path is not described, but its purpose is evident from the parameter name and the tool's function.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Snap every opaque pixel to the nearest color'), identifies the exact resource ('the sprite's own palette'), and specifies the distance metric. This clearly distinguishes it from broader palette-setting or color-adjustment siblings by framing it as a quantization-to-existing-palette operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells the agent when to run this tool: after ase_apply_palette_preset or ase_set_palette, to make existing art conform to the updated palette. It does not explicitly state when not to use it or name alternatives, so it stops short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_rename_layerAse Rename LayerA
Rename a layer (accepts group/child paths).
| Name | Required | Description | Default |
|---|---|---|---|
| new_name | Yes | ||
| layer_name | Yes | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the rename action and path support, but does not explain path syntax, what happens when the target layer is not found, whether renaming affects cels/blend modes, or whether the operation is reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. Every part earns its place: the action, the target resource, and the important path-scoping detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity rename tool with an output schema, the description is minimally adequate. However, key invocation details such as the exact path separator/format for group/child layers and behavior on missing or duplicate layer names are left unspecified, creating a clear gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for all three undocumented parameters. It partially clarifies layer_name by noting group/child path support, but sprite_path and new_name receive no additional semantic guidance beyond their self-evident names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Rename') and resource ('a layer'), and the parenthetical 'accepts group/child paths' adds a key scoping detail. This clearly distinguishes it from sibling operations like ase_duplicate_layer, ase_delete_layer, or ase_reorder_layer.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The operation is unambiguous and clear context is provided: it is the tool for renaming layers, with no exclusions or alternative tools needed. The mention of group/child paths also signals when this tool is appropriate for nested layer targets.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_render_onion_skinAse Render Onion SkinA
Render a frame over translucent ghosts of neighboring frames (batch onion-skinning) to check motion continuity without opening Aseprite. The flattened frames are exported via the CLI and composited with Pillow over white, then nearest-neighbor scaled. Returns the PNG path.
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | ||
| frame | Yes | ||
| scale | No | ||
| before | No | ||
| output_path | No | ||
| sprite_path | Yes | ||
| ghost_opacity | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral disclosure burden. It explains the processing pipeline: flattened frames exported via CLI, composited with Pillow over white, nearest-neighbor scaled, and returning a PNG path. It does not cover file-creation side effects or failure modes, but the disclosed rendering behavior is substantive and clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three tightly written sentences with no filler. It front-loads the core behavior, then adds implementation detail, and ends with the return value. Every sentence contributes useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides a coherent end-to-end mental model, and the output schema covers the return value, so explaining the PNG path is a bonus. However, for seven parameters with 0% schema description coverage and no annotations, the missing per-parameter semantics and absent sibling-routing guidance leave meaningful gaps. It is adequate at a high level but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description needed to compensate for seven parameters. It only hints at concepts—neighboring frames (before/after), ghosts (ghost_opacity), scaling (scale), and PNG path (output_path)—without defining any parameter's meaning, valid range, or interaction. An agent cannot reliably determine how to set before/after or ghost_opacity from the description alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb ('Render'), names the exact resource (a frame plus translucent ghosts of neighboring frames), and states the purpose (checking motion continuity). It also differentiates itself by noting it works 'without opening Aseprite,' making it distinguishable from export and single-frame preview siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The stated purpose gives a clear intended context—checking motion continuity—and 'batch onion-skinning' implies a preview workflow. However, it does not name alternatives or state when not to use this tool versus siblings like ase_view_frame or ase_compare_frames, so usage guidance is only implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_reorder_layerAse Reorder LayerB
Move a layer to a 1-based stack position (1 = bottom).
| Name | Required | Description | Default |
|---|---|---|---|
| position | Yes | ||
| layer_name | Yes | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosing behavior. It only states the action (move) and the position convention, but does not mention side effects such as modifying the sprite file, whether it is reversible, or how it interacts with other layers. This is minimal beyond the purpose statement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler. It front-loads the action and includes the essential clarification about 1-based indexing. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a simple reorder operation, and an output schema exists though its content is not visible here. The description is adequate for the action itself, but missing parameter explanations and behavioral context (e.g., persistence, errors) make it only minimally complete for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain parameters. It only clarifies 'position' (1-based), but leaves sprite_path and layer_name undefined. While these may be inferable from sibling tools, the description itself does not provide their semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Move'), a resource ('layer'), and a precise meaning of position ('1-based stack position (1 = bottom)'). This clearly distinguishes it from other layer operations like add, delete, rename, or merge, all of which appear as siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for reordering layers but gives no explicit when-to-use or when-not-to-use guidance, nor names alternatives. It relies on the verb 'reorder' and the sibling context, which is implied usage rather than explicit direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_replace_colorAse Replace ColorA
Replace one color with another across a layer (None = all layers), preserving alpha. frame=0 processes every frame. tolerance is per-channel 0-255. Returns the number of pixels replaced.
| Name | Required | Description | Default |
|---|---|---|---|
| frame | No | ||
| layer | No | ||
| to_color | Yes | ||
| tolerance | No | ||
| from_color | Yes | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses key behavioral traits: alpha is preserved, frame=0 processes every frame, tolerance is per-channel 0-255, and the return value is the number of pixels replaced. This is strong behavioral disclosure for a mutation tool. It doesn't mention whether the operation is destructive/reversible, but the return value and scope details are valuable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each packed with information. The core action is first, followed by scope modifiers, then parameter semantics, then return value. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the essential behavioral aspects: scope, alpha preservation, frame handling, tolerance, and return value. It doesn't specify the color format (hex string like '#RRGGBB'?) or whether the operation is reversible, but for a color replacement tool with an output schema, this is reasonably complete. The missing color format is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains the semantics of frame (0 = every frame), layer (None = all layers), and tolerance (per-channel 0-255). It doesn't explain the color format for from_color/to_color (hex? name?), which is a gap, but the description adds significant meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Replace'), the resource ('one color with another'), and the scope ('across a layer (None = all layers)'). It clearly distinguishes this from sibling tools like ase_erase_color (which erases a color) and ase_adjust_hsl (which adjusts hues). The behavior is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool: when you need to replace one color with another in a sprite. It doesn't explicitly name alternatives or exclusions, but the sibling list contains related color tools (ase_erase_color, ase_adjust_hsl) and the description's specificity makes the use case clear. It could be improved by explicitly saying 'use ase_erase_color to remove a color entirely' or similar, but the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_resize_canvasAse Resize CanvasA
Resize canvas without scaling content (anchor: center|top_left|top_right|bottom_left|bottom_right).
| Name | Required | Description | Default |
|---|---|---|---|
| width | Yes | ||
| anchor | No | center | |
| height | Yes | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the core behavior (canvas resize, content not scaled, anchor placement), but it omits potential side effects such as clipping/discarding content outside the new canvas when shrinking.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. It packs the operation, the key differentiator, and valid anchor values into a compact, scannable form.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple operation, but there are clear gaps: no mention of what happens to out-of-bounds content when shrinking, no units for width/height, and no detail on sprite_path. The output schema covers return values, so the main omissions are behavioral and parameter-level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It only elaborates the anchor parameter's allowed values; width, height, and sprite_path semantics are left entirely to inference, with no units or path format mentioned.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource ('Resize canvas') and immediately clarifies the key differentiator: content is not scaled. This clearly distinguishes it from sibling tools like ase_scale_sprite.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'without scaling content' implies when this tool is appropriate versus a scaling tool, but there is no explicit when-to-use guidance or named alternative. It leaves the agent to infer the choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_rotate_spriteAse Rotate SpriteB
Rotate 90/180/270 degrees clockwise (sprite or active layer).
| Name | Required | Description | Default |
|---|---|---|---|
| angle | Yes | ||
| target | No | sprite | |
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It does add the angle/direction constraints and the target scope, but it fails to disclose that this is an in-place mutation (rotating the sprite/layer directly), whether the change is destructive or undoable, whether it affects only the current frame or the whole animation, and what the side effects are. With zero annotation coverage, this is a significant gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One tight sentence with zero filler. The verb and critical angle constraint are front-loaded, and every word earns its place. This is exactly the right size for a simple operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 0% schema coverage, no annotations, and the fact that this is a mutating operation, the description is under-specified. It covers the core purpose but leaves sprite_path unexplained, gives no behavioral context (in-place vs. new sprite, frame scope, destructiveness), and offers no usage guidance. The presence of an output schema does not compensate for these input-side and behavior-side gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the schema's bare property names. It does add meaning for 'angle' (implies 90/180/270) and 'target' (via 'sprite or active layer'), but 'sprite_path' is entirely undocumented in both the schema and the description. Partial compensation is not enough for a 0%-coverage schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Rotate'), a specific resource ('sprite or active layer'), and precise scope ('90/180/270 degrees clockwise'). It clearly distinguishes the tool from sibling ase_flip_sprite (rotate vs. mirror) and other transforms like ase_scale_sprite, so an agent can tell what it does without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives, no exclusions, and no prerequisites. The parenthetical '(sprite or active layer)' hints at the target parameter but does not explain when choosing one over the other is appropriate. Compared to the calibration example, this is bare-minimum operation description with no decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_run_luaAse Run LuaA
Execute arbitrary Aseprite Lua in batch mode - the escape hatch when no dedicated tool fits (full API: https://www.aseprite.org/api/). One script can batch many operations into a single Aseprite launch.
Essentials: when sprite_path is given it is opened first and bound to a local 'spr' (also app.activeSprite); changes are NOT saved automatically - call spr:saveAs(spr.filename) at the end; print() is the only way to return data (captured in the result's output list); do NOT end the script with a top-level return (it skips the completion marker and the call is reported as failed). Cel-image coordinates are cel-local: offset sprite-global coordinates by cel.position.
WARNING: executes unrestricted Lua (including io/os access) on the host running Aseprite. Only pass scripts you trust.
| Name | Required | Description | Default |
|---|---|---|---|
| script | Yes | ||
| sprite_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full disclosure burden and delivers thoroughly: it covers automatic sprite opening and 'spr' binding, unsaved changes requiring spr:saveAs, print() as the only return channel, the completion-marker failure caused by a top-level return, cel-local coordinate semantics, and an explicit security warning about unrestricted io/os access.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but well-organized: purpose first, then 'Essentials', then a prominent warning. Every sentence adds operational value; there is no filler or repetition of schema content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a high-complexity arbitrary-code tool, the description covers invocation, state binding, persistence, output capture, failure conditions, coordinate systems, and security. An output schema exists, so return-value details are handled there; the API link supplies deeper language reference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains sprite_path behavior in detail (opened first, bound to 'spr' and app.activeSprite) and clarifies script expectations via the print/return/save guidance. The script parameter itself is less specifically documented, but the surrounding instructions define its semantics well.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Execute arbitrary Aseprite Lua in batch mode'. It also explicitly frames itself as 'the escape hatch when no dedicated tool fits', which distinguishes it from the many sibling ase_* tools in one phrase.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states when to use the tool: when no dedicated tool fits, and explains batch mode can consolidate many operations into one launch. It does not enumerate specific alternatives, but for an unconstrained script runner the condition is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_save_asAse Save AsC
Save a sprite copy to a new path.
| Name | Required | Description | Default |
|---|---|---|---|
| out_path | Yes | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries full responsibility for behavioral disclosure. The description only states the action; it does not mention whether the original sprite is modified, whether the output overwrites existing files, format support, error conditions, or any side effects. For a save operation, this is a critical gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no waste, but it is under-specified. Conciseness is achieved at the expense of essential information. It does not front-load any useful constraints or context beyond the minimal action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter save tool with no annotations, the description is severely incomplete. It does not explain return values (despite an output schema), file format behavior, overwrite policies, or any edge cases. An agent cannot reliably invoke this tool correctly based on the provided information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% – the description does not mention any parameters. The schema only provides field names (sprite_path, out_path) with no additional meaning. Since coverage is low, the description should compensate by explaining parameter roles, but it does not, leaving the agent to guess semantics from names alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Save a sprite copy to a new path' clearly states a specific action (save), the resource (sprite copy), and the destination (new path). It is not a tautology and conveys the core function. However, it does not explicitly differentiate from sibling tools like ase_export_sprite, which also involves saving sprite data, though 'copy' hints at non-destructive saving.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives. It does not mention conditions, prerequisites, or contrast with export tools. An agent is left to infer when 'save a copy' is preferred over ase_export_sprite or ase_export_spritesheet.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_scale_spriteAse Scale SpriteC
Scale the whole sprite (nearest|bilinear).
| Name | Required | Description | Default |
|---|---|---|---|
| scale_x | Yes | ||
| scale_y | Yes | ||
| algorithm | No | nearest | |
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full burden of disclosing behavior. It mentions the algorithm choices, which hints at resampling behavior, but it does not disclose whether this operation mutates the sprite in place, whether it is destructive, whether scale values are multipliers or pixel dimensions, or how alpha/frame data is treated. This is a significant gap for an operation that likely alters the source file.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely brief and front-loaded, which is good for scanning, but it may be under-specified rather than properly concise. Every word earns its place, yet meaningful behavior and parameter semantics are absent. It is efficient as a terse summary, but not adequately informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's potential to mutate sprite data, the absence of annotations, and zero schema description coverage, the description is far from complete. There is no explanation of what the output schema contains, how the scale factors are interpreted, or whether the operation is reversible. For a 4-parameter tool with no annotation support, this is inadequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds some meaning to the 'algorithm' parameter by listing the allowed values, but it offers no explanation of scale_x/scale_y semantics (are they factors, percentages, target sizes?) or what sprite_path refers to beyond the obvious. The description barely enriches the bare schema parameter names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Scale'), a precise resource ('the whole sprite'), and the algorithm options ('nearest|bilinear'). This clearly distinguishes it from related sibling tools like ase_resize_canvas or ase_resize_canvas that target the canvas rather than the sprite content, and from ase_flip_sprite/ase_rotate_sprite which perform different transforms. However, it does not explicitly name or contrast those siblings, so it's clear but not fully differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance about when to use this tool over alternatives such as ase_resize_canvas (canvas vs sprite scaling) or ase_downsample (which likely reduces the sprite similarly). No context about intended use cases or prerequisites (e.g., whether scaling replaces existing frames or resamples them) is given. The agent must infer selection 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.
ase_select_allAse Select AllD
Select the whole cel.
| Name | Required | Description | Default |
|---|---|---|---|
| frame | No | ||
| layer | No | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says 'Select the whole cel' without explaining whether this replaces the existing selection, is destructive, or what the output represents. This is insufficient for a tool that modifies 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise, but it is under-specified rather than efficiently informative. It omits essential details about the operation, parameters, and behavior, so brevity does not serve the agent's needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with three parameters, no annotations, and an ambiguous domain term, the description is severely incomplete. It fails to define 'cel', explain parameter roles, or disclose behavioral effects, leaving the agent without the information needed for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, and the description does not mention any of the three parameters (sprite_path, frame, layer). The agent receives no help understanding how these parameters affect the selection, so it cannot correctly compose the arguments.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb ('Select') and a specific resource ('the whole cel'), but 'cel' is an undefined term that an agent may not recognize. It does not differentiate from sibling selection tools like ase_select_rectangle or ase_deselect, leaving ambiguity about the exact scope of the operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. There is no mention of context, prerequisites, or scenarios where this tool is preferred, leaving the agent to guess.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_select_ellipseAse Select EllipseC
Set the server-side selection to an ellipse (bounding box).
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | ||
| y | Yes | ||
| width | Yes | ||
| height | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full behavioral burden. It states that the selection is set to an ellipse but does not disclose whether this replaces the existing selection, how coordinates are interpreted, whether bounds are clamped, or what side effects occur on other selection-dependent tools.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler and gives the core concept efficiently. It is appropriately front-loaded, though it errs on the side of under-specification.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple four-parameter tool with an output schema, the description is minimal but not sufficient. It lacks coordinate semantics, interaction with the existing selection, and any guidance about how this relates to other selection tools, leaving an agent to guess important call-time details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate for the four undocumented integer parameters. The phrase 'ellipse (bounding box)' implies x, y, width, and height describe a bounding rectangle, but it does not explain the origin, units, or whether width/height are diameters or radii.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the operation as setting the selection to an ellipse-shaped region, with 'server-side' adding relevant context. It distinguishes itself from sibling tools like ase_select_rectangle and ase_draw_circle, though it does not explicitly contrast with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool instead of alternatives such as ase_select_rectangle, ase_select_all, or ase_deselect. The agent must infer usage solely from the tool name and the word 'ellipse'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_select_rectangleAse Select RectangleB
Set the server-side selection to a rectangle.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | ||
| y | Yes | ||
| width | Yes | ||
| height | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure, but it only says the selection is set to a rectangle. It does not disclose side effects like replacing the existing selection, coordinate clamping, behavior with zero-size rectangles, or whether any canvas pixel data is touched.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler, front-loading the verb and object. It is appropriately concise for a simple state-setting tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity setter, this is largely usable, and output schema presence reduce the need to document return values. However, missing coordinate semantics and explicit selection-replacement behavior leave gaps an agent would need to handle safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description does not mention x, y, width, or height. The parameter names are self-explanatory as coordinates and dimensions, but the description adds no information about units, coordinate origin, bounds, or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Set') and resource ('server-side selection') and specifies the shape ('rectangle'). This clearly distinguishes the tool from sibling selection tools like ase_select_ellipse, ase_select_all, ase_move_selection, and ase_get_selection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the description and the shape keyword, but there is no explicit statement of when to choose this tool over ase_select_ellipse or ase_select_all. It does not discuss coordinate context, whether selection replaces an existing one, or any prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_set_cel_opacityAse Set Cel OpacityA
Set a single cel's opacity 0-255 (layer None = first image layer).
| Name | Required | Description | Default |
|---|---|---|---|
| frame | No | ||
| layer | No | ||
| opacity | Yes | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It adds useful context: the opacity range (0-255) and the special behavior that a null layer resolves to the first image layer. However, it does not disclose side effects like overwriting existing cel opacity, or any error conditions, which are relevant for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence: the verb and object come first, followed by the range, then a parenthetical with the layer-null behavior. There is no redundant wording, and the special-case clarification is placed efficiently without bloating the text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple four-parameter setter with no annotationsasi, the description covers the core operation and one key parameter quirk, but it leaves frame semantics undefined and does not explicitly differentiate from ase_set_layer_opacity. The presence of an output schema reduces the need to describe return values, but the missing frame context and sibling differentiation are noticeable gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It clarifies the opacity constraint (0-255) and the layer null default, but it says nothing about the frame parameter, which remains opaque despite having a default. sprite_path is left to the reader's inference from the tool name. The description adds value for two of the four parameters but misses frame entirely.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Set'), the resource ('a single cel's opacity'), and the valid range (0-255). The phrase 'single cel' distinguishes this tool from sibling ase_set_layer_opacity, which operates on layer opacity, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by specifying 'single cel' and noting that layer None means the first image layer, but it does not explicitly name alternatives or state when to use this tool over layer-level opacity tools. The absence of exclusions leaves the agent to infer the routing decision.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_set_cel_positionAse Set Cel PositionA
Place a cel at sprite coordinates (x, y). layer None = first image layer; errors when the cel does not exist (create/draw one first).
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | ||
| y | Yes | ||
| frame | No | ||
| layer | No | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action ('Place a cel') and one error condition, but it does not explicitly confirm this mutates the sprite, whether the operation is undoable, whether saving is required, or what happens to the cel's prior position. For a mutation tool with zero annotation coverage, this is a meaningful gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one compact sentence with two clauses, both earning their place: the core action and a critical usage caveat. It is front-loaded and contains no filler, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is relatively simple, and the description covers the main purpose and a key error case. But it leaves out the frame parameter semantics and does not clarify whether the cel is moved or copied, nor the coordinate system origin. Since an output schema exists, return values need no explanation, but these operational details would help an agent call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds meaning for x and y ('sprite coordinates') and clarifies the layer null default ('layer None = first image layer'). However, it does not explain the frame parameter (default 1) or the coordinate origin/bounds, leaving those aspects to the agent's inference.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb-resource pair: 'Place a cel at sprite coordinates (x, y)'. This unequivocally identifies the action and differentiates it from sibling tools like ase_create_cel (creates) and ase_set_cel_opacity (opacity). It also clarifies the target is an existing cel, which further pins down its role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context: it requires an existing cel ('errors when the cel does not exist (create/draw one first)') and explains the layer default. However, it does not explicitly tell the agent when to prefer this tool over alternatives such as ase_tween_cel_positions or ase_oscillate_cel_positions, nor does it mention any prerequisites beyond cel existence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_set_frame_durationAse Set Frame DurationC
Set a frame's duration in ms.
| Name | Required | Description | Default |
|---|---|---|---|
| frame | Yes | ||
| duration_ms | Yes | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only says 'Set a frame's duration,' which implies mutation but does not disclose side effects (e.g., whether the sprite file is overwritten, whether the operation is reversible, or what happens on invalid frame indices). For a mutation tool with zero annotation coverage, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no waste. It communicates the core action immediately and efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the tool is simple (3 scalar parameters), the description is too sparse to be complete. It omits essential context about parameter meaning, range constraints, and behavior. An output schema exists, so return values may be covered, but the lack of parameter semantics makes correct invocation uncertain for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, and the description adds nothing about the parameters. It doesn't explain that 'frame' is an index (likely zero-based), that 'duration_ms' is an integer in milliseconds, or that 'sprite_path' identifies the target sprite. The agent must infer all semantics from the schema's bare types, which is insufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Set a frame's duration in ms.' states a specific verb (set), a precise resource (frame's duration), and the unit (ms). It clearly distinguishes from sibling ase_set_frame_duration_all by specifying 'a frame' rather than all frames, so an agent can tell them apart without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no explicit when-to-use guidance or exclusions. It doesn't mention the sibling ase_set_frame_duration_all or any prerequisites, such as the sprite needing to be loaded or the frame index being zero-based. The usage context is only implied by the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_set_frame_duration_allAse Set Frame Duration AllA
Set every frame's duration in ms (unit-probed for Aseprite 1.3+).
| Name | Required | Description | Default |
|---|---|---|---|
| duration_ms | Yes | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the transparency burden. It does disclose the core behavior (overwriting every frame's duration with the given ms value) and adds a version-specific detail ('unit-probed for Aseprite 1.3+'). It does not mention permissions, reversibility, or side effects, but the primary behavioral effect is clearly stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. The parenthetical about Aseprite 1.3+ is compact and adds version-relevant behavior, though it is slightly cryptic and could be clearer.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter mutation tool with an output schema, the description covers the essential operation and target scope. It lacks explicit guidance on prerequisites, single-frame alternatives, or behavioral caveats, but the tool is simple enough that the provided text is nearly sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must add meaning. It clarifies that duration_ms is in milliseconds and applies to every frame, and sprite_path is implied as the target sprite file. It does not elaborate on ranges or constraints, but for two simple parameters the provided meaning is sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and object ('Set every frame's duration') and unambiguously states the unit ('ms'). It differentiates from the sibling ase_set_frame_duration by emphasizing 'every frame', so an agent can tell scope apart immediately.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The word 'every frame' implies this is the tool to use when all frame durations should be changed uniformly, and it indirectly contrasts with ase_set_frame_duration. However, it never explicitly says 'use this for all frames, use ase_set_frame_duration for a single frame', leaving the when-to-use guidance implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_set_layer_blend_modeAse Set Layer Blend ModeA
Set a layer's blend mode: normal, darken, multiply, color_burn, lighten, screen, color_dodge, addition, overlay, soft_light, hard_light, difference, exclusion, subtract, divide, hue, saturation, color, luminosity.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | ||
| layer_name | Yes | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description clearly states that this is a mutating 'set' operation and enumerates the valid mode values. With no annotations present, though, it does not disclose additional behavioral context such as whether the target layer must already exist, whether the operation is reversible, or how the change affects rendering/export. This is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence states the action and then gives the essential value list. There is no filler, no repeated title, and every part of the description earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 3-parameter setter, the description plus self-explanatory parameter names provide enough to call the tool, and the presence of an output schema covers return-value expectations. It loses a point because it does not explicitly note that the mode list is exhaustive or provide guidance on how to source sprite_path and layer_name.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does for the mode parameter by listing all 19 legal values, but sprite_path and layer_name receive no additional explanation in either the schema or description. Their names are self-explanatory, so the gap is moderate rather than severe.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Set') and a specific resource ('a layer's blend mode'), then lists every accepted mode. This unambiguously distinguishes it from sibling layer tools like ase_set_layer_opacity and ase_set_layer_visibility without needing to name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: if an agent needs to assign a layer's blend mode, this is the tool. However, it does not explicitly contrast with alternatives, state prerequisites (e.g., layer must exist), or say when not to use it. The context is clear but not fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_set_layer_opacityAse Set Layer OpacityB
Set layer opacity 0-255.
| Name | Required | Description | Default |
|---|---|---|---|
| opacity | Yes | ||
| layer_name | Yes | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full burden of behavioral disclosure. It states the mutation and the numeric range but does not mention side effects, whether the change is immediately applied, how invalid values are handled, or whether opacity interacts with visibility or cel opacity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded with the action and target. There is no filler or repetition, so every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple setter with an output schema present, the description is close to sufficient, but it omits practical context like what the opacity value represents, whether 255 is fully opaque, and how this differs from similar opacity-related tools. An agent could invoke it correctly, but with minimal guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds meaning by specifying the opacity range (0-255) and maps 'layer' to layer_name, which helps. However, it provides no additional detail about sprite_path or how layer_name is resolved.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Set') and clearly identifies the resource ('layer opacity') plus the valid value range ('0-255'). It is immediately distinguishable from sibling tools like ase_set_layer_visibility, ase_set_layer_blend_mode, and ase_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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives, such as ase_set_cel_opacity or ase_set_layer_visibility. There is no explicit or implicit exclusion, and no mention of when a different opacity-related tool would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_set_layer_visibilityAse Set Layer VisibilityC
Show or hide a layer.
| Name | Required | Description | Default |
|---|---|---|---|
| visible | No | ||
| layer_name | Yes | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden of behavioral disclosure. It says 'show or hide' implying a state change, but doesn't specify whether visibility is toggled or set to a specific value, nor does it explain the effect of the 'visible' parameter (default true). It lacks details on persistence, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, consisting of a single short sentence. It is front-loaded with the core action, but it is so brief that it sacrifices informational value. Conciseness is good, but it under-specifies behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (3 params, no annotations, no output schema), the description is barely sufficient. An agent could likely infer how to call it, but the lack of behavioral specificity (e.g., what happens if the layer doesn't exist, whether visibility is toggled or set) leaves gaps. For a mutation tool on a sprite, more context is expected.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not add any parameter-specific meaning. The parameter names are self-explanatory (sprite_path, layer_name, visible), but the description does not clarify the exact semantics of 'visible' (e.g., whether it toggles or sets an absolute state). The agent must guess from the default value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Show or hide a layer.' clearly states the verb (show/hide) and the resource (a layer), and is distinguishable from sibling tools like ase_set_layer_opacity or ase_set_layer_blend_mode, which modify other properties. It doesn't explicitly name siblings but the purpose is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. For instance, it doesn't mention that this is for toggling visibility as opposed to setting opacity or blend mode, which are separate tools. The agent must infer from the name and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_set_paletteAse Set PaletteC
Replace the sprite palette with the given hex colors.
| Name | Required | Description | Default |
|---|---|---|---|
| colors | Yes | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. The description says 'replace' which implies destructive overwriting of the existing palette, but it doesn't state whether the replacement is reversible, whether it affects all frames/layers, whether the number of colors must match the existing palette size, or what happens to sprite pixels that reference removed colors. For a destructive mutation tool with zero annotation coverage, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words. It front-loads the action ('Replace') and the resource ('sprite palette') before mentioning the input. It is appropriately concise for a simple tool, though it could have used the space to add behavioral caveats.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (2 params, no annotations, no output schema details in description), the description is incomplete. It doesn't explain the effect on existing sprite pixels, whether the palette size is constrained, or what the output/return value is. The output schema exists but the description doesn't reference it. For a destructive palette operation, an agent needs more context to call it correctly and safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. The description mentions 'hex colors' which maps to the 'colors' array parameter, and 'sprite palette' maps to 'sprite_path'. However, it doesn't clarify the format of the hex strings (e.g., '#RRGGBB' vs 'RRGGBB'), whether the array order determines palette index order, or whether the palette size is flexible. The description adds some meaning but leaves important parameter details undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Replace the sprite palette with the given hex colors' clearly states the action (replace), the resource (sprite palette), and the input (hex colors). It is specific enough to distinguish from sibling tools like ase_set_palette_color (which sets a single color) and ase_get_palette (which reads the palette). It loses a point because it doesn't explicitly contrast with those siblings, but the verb+resource combination is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: when you want to replace the entire palette with a new set of hex colors. However, it does not explicitly state when to use this tool versus alternatives like ase_set_palette_color (for changing one color) or ase_apply_palette_preset (for applying a preset). The context is clear enough for an agent to infer, but there is no explicit when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_set_palette_colorAse Set Palette ColorC
Set one palette entry by index.
| Name | Required | Description | Default |
|---|---|---|---|
| color | Yes | ||
| index | Yes | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure, but it only says 'set'. It does not explain whether the sprite file is modified in place, what happens with an out-of-range index, or whether a palette must already exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. Every part of it contributes to identifying the operation, and it avoids restating the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with three required parameters and no annotations, this is too sparse. Callers need to know the expected color format, whether the sprite_path refers to a file or in-memory sprite, and how the index behaves, none of which is covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the undocumented parameters. It adds only that index identifies a palette entry, but leaves color string format and sprite_path semantics completely unspecified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: setting one palette entry by index. It is clear and implies a distinction from bulk palette operations like ase_set_palette, though it does not explicitly name or differentiate siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as ase_set_palette, ase_add_palette_color, or ase_sort_palette. The description states only what the tool does, not when it should be chosen.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_set_slice_centerAse Set Slice CenterC
Set a slice's 9-patch center rectangle (relative to the slice origin): the stretchable region for game-engine 9-patch scaling.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | ||
| y | Yes | ||
| name | Yes | ||
| width | Yes | ||
| height | Yes | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must disclose behavior. It adds useful context (the rectangle is relative to the slice origin, it defines the stretchable region for 9-patch scaling), but it omits critical behavioral traits: whether the slice must already exist, what happens on invalid parameters (e.g., rectangle out of bounds), whether the operation is in-place or returns a new slice, and any permission or format requirements. For a mutating operation, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no filler. It front-loads the action and provides a brief definition of the concept. However, it lacks any structured breakdown of parameters or usage, which would be more helpful given the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter tool with no annotations and 0% schema coverage, the description is far from complete. It doesn't specify the coordinate system fully (e.g., origin at top-left?), units, constraints (rectangle within slice bounds), or prerequisite state. While an output schema exists (not shown), the description doesn't hint at return values or errors. An agent would struggle to call this tool correctly without additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate by explaining each parameter. It only hints that x, y, width, height define the center rectangle, but doesn't clarify whether x,y is the top-left corner, center, or other origin. It also doesn't explain sprite_path or name (how they identify the slice). With 6 undocumented parameters, the description provides almost no semantic value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Set a slice's 9-patch center rectangle') and the resource (the slice), and specifies the coordinate frame ('relative to the slice origin'). It distinguishes itself from siblings like ase_set_slice_pivot (pivot point) and ase_create_slice (creation), so an agent can infer this is for modifying an existing slice's 9-patch region.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. It doesn't mention that ase_create_slice must be called first or that ase_set_slice_pivot is for a different purpose. The description gives no context on typical workflows or exclusions, leaving the agent to infer usage 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.
ase_set_slice_pivotAse Set Slice PivotC
Set a slice's pivot point (relative to the slice origin).
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | ||
| y | Yes | ||
| name | Yes | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden, but it only says 'set' without disclosing side effects, prerequisites, coordinate units, behavior when the slice doesn't exist, or whether the change is persisted. It adds the origin-relative detail but omits most behavioral context an agent would need for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler, and the core action is front-loaded before the parenthetical coordinate detail. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the tool's low structural complexity and presence of an output schema, the description is incomplete for reliable invocation: parameter meanings are mostly missing, no error or prerequisite behavior is noted, and no distinction is made from the slice-center sibling. An agent can guess the operation but not confidently supply correct values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and all four required parameters are undocumented. The description only hints that x and y are measured relative to the slice origin; it does not explain sprite_path, name, pixel units, or how coordinates are interpreted beyond that hint.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: 'Set a slice's pivot point.' It also adds the coordinate detail 'relative to the slice origin,' which helps define the operation's scope. It does not explicitly differentiate from the sibling ase_set_slice_center, though 'pivot point' is reasonably specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives such as ase_set_slice_center or ase_create_slice. The description only rephrases the operation itself and leaves tool selection completely to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_set_tilesAse Set TilesA
Place tiles on a tilemap layer by grid position. tiles are [{col, row, tile_index}] (col/row are 0-based grid coordinates; tile_index 0 clears the cell). The cel is (re)built at map size.
| Name | Required | Description | Default |
|---|---|---|---|
| frame | No | ||
| tiles | Yes | ||
| layer_name | Yes | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden, and it does meaningful work: it specifies 0-based coordinates, defines tile_index 0 as clearing the cell, and warns that the cel is (re)built at map size. This gives the agent crucial side-effect information beyond the mere action name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences front-load the action, then give the exact tile-list syntax, then note the cel rebuild side effect. Every sentence adds necessary information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations, the description covers tile format, clearing semantics, and cel rebuild behavior, and an output schema exists so return values need not be explained. It does not spell out prerequisites such as an existing tilemap layer or the meaning/range of frame, but these are inferable from the tool name and schema defaults.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description compensates for the most complex parameter by specifying the required fields and meanings inside each tiles entry. sprite_path and layer_name are self-explanatory from their names; only frame is left implicit, and its schema default of 1 somewhat mitigates the gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description opens with a concrete verb and resource: 'Place tiles on a tilemap layer by grid position,' clearly separating it from sibling tile inspection and drawing tools. It then pins down the exact data shape, so an agent knows this is a batch tile-placement operation, not a single draw or query.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The context is clear: use it when writing tile indices to a tilemap layer at grid coordinates. However, it never states exclusions or explicitly names alternatives (e.g., ase_draw_on_tile), so the agent must infer the boundary between this and closely related tile tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_sort_paletteAse Sort PaletteC
Sort the sprite palette by hue|saturation|brightness|luminance.
| Name | Required | Description | Default |
|---|---|---|---|
| method | No | hue | |
| ascending | No | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the sort criteria but does not state whether the operation mutates the sprite file in place, whether it requires a saved file, whether it is reversible, or what the output schema contains. For a mutation-like operation, this is a notable gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the action and lists the sort options. It earns its place with no filler, though it could add a bit more behavioral context without becoming bloated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, 0% schema coverage, and an output schema present, the description is too thin. It does not explain the effect on the file, the meaning of ascending, or what the output schema contains. An agent would need to open the schema and guess at side effects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description only names the sort keys (hue|saturation|brightness|luminance) which map to the 'method' parameter. It does not explain 'ascending' behavior or the meaning/format of 'sprite_path'. The description partially compensates for the method parameter but leaves the other two parameters undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Sort') and resource ('sprite palette') with the sort keys listed. It is clear enough to distinguish from sibling tools like ase_get_palette or ase_set_palette, though it doesn't explicitly name a sibling alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: when you want to reorder the sprite palette by a given criterion. It does not state when not to use it or mention alternatives like ase_analyze_palette_harmonies or ase_quantize_to_palette, but the context of sorting is reasonably clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_sprite_infoAse Sprite InfoC
Sprite metadata: dimensions, color mode, frames (with durations), layers, tags.
| Name | Required | Description | Default |
|---|---|---|---|
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. The word 'metadata' implies a read operation, but it does not explicitly state that the tool is side-effect-free, what happens if the sprite_path is invalid, or whether the path refers to an open document or a file on disk. This is a significant gap for an info tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short, front-loaded, and every listed item carries meaning. There is no fluff. It loses one point because it is a noun-phrase fragment without a verb, which slightly hurts readability and flow.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values are covered, but the description still fails to explain the key operational context: how to reference the sprite, whether the sprite must be currently loaded in Aseprite, and what state the tool depends on. Given a single parameter and zero annotations, the description is not sufficient for safe, correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description provides no elaboration on sprite_path. The agent cannot tell whether the parameter is a file path, a sprite name, an in-memory sprite identifier, or something else. The description adds zero value beyond the schema's bare type.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the resource ('sprite') and enumerates the exact metadata returned: dimensions, color mode, frames, layers, tags. This makes the tool's purpose clear, but it lacks an explicit verb and does not differentiate itself from sibling read-tools like ase_get_pixels or ase_get_tile_at, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus sibling tools, no mention of prerequisites (e.g., whether the sprite must be open), and no exclusions or alternatives. The agent is left to infer the use case from the metadata list alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_statusAse StatusA
Check whether the headless Aseprite CLI is available (executable present and a probe batch run succeeds). Cached 60s; file-touching ase_* tools gate on this and report {available:false,...} instead of crashing when missing.
When the executable cannot be found the result also carries the locations that were probed, so an install in a custom folder can be pointed at directly instead of guessed.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for disclosing behavior. It does so thoroughly: it defines success criteria, mentions caching, explains the gating role for other tools, states that unavailable tools report {available:false,...} instead of crashing, and details extra output about probed locations when the executable is missing. This is far beyond the minimum.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: it opens with the main purpose and criteria, then adds caching and gating context, and finishes with a useful troubleshooting detail about probed locations. Every sentence contributes meaningful information with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters, an output schema, and a straightforward check operation, the description is complete. It covers what availability means, how results behave, how other tools use it, and what the output contains in the failure case. An agent has everything needed to decide when to call it and how to interpret its result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters are present, so there are no parameter semantics for the description to clarify. The schema coverage is 100% for an empty argument object, making parameter documentation unnecessary. The baseline of 4 applies because the tool simply needs no inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks whether the headless Aseprite CLI is available, with concrete success criteria: executable present and a probe batch run succeeds. It names a specific resource (Aseprite CLI) and distinguishes itself from sibling status tools like rd_status and krita_status by tying it to the ase_* family.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the key usage context: file-touching ase_* tools gate on this status check and use its result to avoid crashing. It also notes the 60-second cache, which implies when an agent can rely on it without recalling. It does not explicitly name alternatives or give when-not-to-use guidance, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_suggest_antialiasingAse Suggest AntialiasingB
Detect jagged diagonal edges and suggest (or apply) 50% blend pixels.
| Name | Required | Description | Default |
|---|---|---|---|
| apply | No | ||
| frame | No | ||
| layer | No | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of explaining side effects. It does disclose the dual behavior 'suggest (or apply)' and the 50% blend approach, which is useful. However, it does not state whether applying is destructive, whether it auto-applies by default, or what the suggestion output looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no filler. It front-loads the core behavior and conveys the key mode distinction in just a few words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotationsable behavior, mutable or suggest-only, and four parameters, the description is too thin. The output schema may explain returns, but the description does not cover scoping, frame/layer semantics, or safety, so an agent cannot confidently invoke it in a real workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description only weakly maps to parameters: 'suggest (or apply)' hints at the apply boolean, but sprite_path, frame, and layer are not explained at all. An agent cannot infer their meanings from the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb+resource: detecting jagged diagonal edges and suggesting or applying 50% blend pixels. This is specific enough to distinguish it from generic drawing tools, though it leaves whether the tool mutates or only reports suggestions somewhat ambiguous in the headline.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance on when to use this tool instead of alternatives such as ase_apply_outline or ase_apply_shading. There are no stated conditions, prerequisites, or exclusions, so an agent must infer usage from the name and short phrase.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_trim_spriteAse Trim SpriteA
Trim transparent borders (optionally by grid boundaries).
| Name | Required | Description | Default |
|---|---|---|---|
| by_grid | No | ||
| sprite_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description alone must disclose whether the trim modifies the sprite in place, affects frames or layers, or exactly what 'by grid boundaries' changes. It only restates the operation and the option, leaving mutation behavior and grid semantics undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence, front-loaded with the core action and then the optional mode; no wasted words. It is concise, though the lack of additional structure means it does not address the behavioral gaps.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only two parameters and an output schema present, the definition is minimally callable, but the missing by_grid semantics and in-place-versus-return behavior are clear gaps. It reaches adequacy without being complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds 'optionally by grid boundaries' for by_grid, but sprite_path is not described and no format or constraints are provided, leaving the agent to rely on parameter names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the operation: 'Trim transparent borders' – a specific verb and resource – and adds the optional 'by grid boundaries' mode. This distinguishes it from sibling tools like ase_crop_sprite, which implies manual cropping rather than automatic transparent-border trimming.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is directly stated: use this tool when you want to remove transparent borders from a sprite, optionally snapping to grid boundaries. It does not name alternatives or exclusions like ase_crop_sprite, so it stops short of fully explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_tween_cel_positionsAse Tween Cel PositionsA
Tween a cel's position linearly across a frame range (movement arcs, attacks, slides). easing: linear | ease_in | ease_out | ease_in_out | smoothstep. Missing cels are cloned from the start frame when create_missing=true. layer None = first image layer.
| Name | Required | Description | Default |
|---|---|---|---|
| end_x | Yes | ||
| end_y | Yes | ||
| layer | No | ||
| easing | No | linear | |
| start_x | Yes | ||
| start_y | Yes | ||
| end_frame | Yes | ||
| sprite_path | Yes | ||
| start_frame | Yes | ||
| create_missing | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It does disclose easing options, create_missing cloning behavior, and layer None semantics, which are genuinely useful. However, it omits whether existing positions are overwritten, what happens when create_missing=false, or any destructive consequences of the tween.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, no filler, and the core purpose is front-loaded. Each sentence earns its place: purpose, easing options, missing-cels behavior, and layer default all get compact treatment.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers key behaviors but leaves out operational details like overwrite semantics, edge cases with reversed frame ranges, and potential prerequisites for sprite/layer state. Since an output schema exists, return values need not be described, but the given context is still thin for a 10-parameter mutable operation with no annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds meaning to easing, create_missing, and layer (the null default). Coordinate and frame parameters remain self-explanatory from their names, and sprite_path is clear, but some nuances like coordinate units or frame ordering are not addressed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Tween') with a specific resource ('a cel's position') and scope ('across a frame range'), plus relevant use cases. Though it doesn't explicitly name sibling tools, the focus on interpolating positions over frames is distinct from single-frame or oscillating cel tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides user-facing contexts (movement arcs, attacks, slides) that imply when the tool is useful, but it does not explicitly state when to avoid it or name alternative tools. The frame-range behavior differentiates it from single-frame cel tools, but that distinction is implicit rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ase_view_frameAse View FrameA
Render one cel of a sprite to PNG and return it as MCP image content so the caller can SEE the current sprite state (layer defaults to first).
| Name | Required | Description | Default |
|---|---|---|---|
| frame | No | ||
| layer | No | ||
| max_side | No | ||
| as_base64 | No | ||
| sprite_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose that the result is PNG/MCP image content and that layer defaults to first, which are useful behavioral details. However, it does not state whether the operation is read-only, what happens with frame selection, or how as_base64 or max_side affect the output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one sentence, front-loaded with the core action, and contains no redundant or filler wording. Every phrase adds useful context about output format or default behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, no annotations, and the description omits several parameter behaviors. It tells the agent the output is MCP image content, but does not explain important options like as_base64, max_side resizing, or frame defaults, leaving the agent under-equipped to invoke the tool with confidence.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It only explains the layer default; frame, max_side, as_base64, and even sprite_path semantics are left undocumented. This is a significant gap for a tool with five parameters and no property descriptions in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Render'), a specific resource ('one cel of a sprite'), and the delivery format ('PNG ... as MCP image content'). It also clarifies the default layer behavior, which helps distinguish it from export-related siblings like ase_export_sprite and ase_export_spritesheet.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'so the caller can SEE the current sprite state' implies the tool is for visual inspection, but no explicit when-to-use or when-not-to-use guidance is given. Among many ase_* siblings, the description does not name alternatives or conditions for choosing this tool over an export or pixel-read tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
krita_adjust_pixelsKrita Adjust PixelsA
Crash-free image adjustments on a Krita layer region, computed with Pillow over the get_pixels/set_pixels PNG bridge (libkis Filter.apply() hard-crashes Krita 5.3.3, so native filters are quarantined; see krita_list_filters for names).
operation: invert | grayscale | hsv (hue_shift -360..360, saturation_shift/value_shift -100..100) | blur (radius px) | bright_contrast (brightness/contrast factors, 1.0 = unchanged) | posterize (bits 1-8). width/height 0 = to the canvas edge; layer=None targets the active layer. Alpha is preserved throughout.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| bits | No | ||
| layer | No | ||
| width | No | ||
| height | No | ||
| radius | No | ||
| contrast | No | ||
| hue_shift | No | ||
| operation | Yes | ||
| brightness | No | ||
| value_shift | No | ||
| saturation_shift | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden and does significant work: it promises 'crash-free', notes 'Alpha is preserved throughout', explains the internal computation path, and warns about the native filter crash based on the specific Krita version. It does not mention whether changes are undoable or if the operation returns anything, but for a pixel mutation tool the provided traits are meaningful and non-obvious.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence earns its place: the first sentence states the value proposition and crash caveat, the second compactly maps operations to parameters and defaults, and the final clause covers the alpha guarantee. Dense but not bloated, and all critical decision information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (13 parameters, no annotations, zero schema descriptions), the description supplies enough to call it correctly for most cases: operation semantics, ranges, defaults, layer handling, and edge behavior. It omits x/y meaning but that is inferable as a region offset sketch. An output schema exists which can explain return values, so the overall context is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It defines the 'operation' values and their associated parameters with ranges (hue_shift -360..360, saturation_shift/value_shift -100..100), explains 'brightness/contrast factors, 1.0 = unchanged', 'posterize (bits 1-8)', and 'width/height 0 = to the canvas edge; layer=None targets the active layer'. The only notable gap is x/y coordinates, which are left to inference.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'image adjustments on a Krita layer region'. It enumerates concrete operations (invert, grayscale, hsv, blur, bright_contrast, posterize) and names the integration mechanism (Pillow over get_pixels/set_pixels PNG bridge), distinguishing it from the quarantined native filter path and from sibling tools that mutate pixels (krita_set_pixels).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The text explicitly tells the agent why this tool exists ('libkis Filter.apply() hard-crashes Krita 5.3.3, so native filters are quarantined') and points to a sibling for filter names ('see krita_list_filters for names'). It also clarifies layer targeting and canvas-edge semantics, so the agent knows when and how to prefer it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
krita_clearKrita ClearA
Clear the canvas to a solid color.
| Name | Required | Description | Default |
|---|---|---|---|
| color | No | #1a1a2e |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses the primary behavior (clearing to a solid color) and implies a destructive action (clearing overwrites existing content). However, it doesn't disclose whether the clear affects only the active layer or the entire document, whether it creates a new layer, or whether it is undoable. The default color #1a1a2e is in the schema, not the description, so the description doesn't add that context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no wasted words. It is appropriately sized for a simple tool with one parameter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one optional parameter and an output schema, the description is mostly adequate. However, it doesn't clarify whether the clear applies to the active layer or the whole canvas, which is a meaningful ambiguity for an agent deciding between krita_clear and krita_clear_selection. The output schema exists, so return values don't need explanation, but the layer scope is a gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. The description mentions 'solid color' which maps to the 'color' parameter, but it doesn't explain the format (hex string), the default behavior if omitted, or that the default is #1a1a2e. The parameter name 'color' is self-explanatory, but the description adds minimal value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Clear the canvas to a solid color' clearly states the verb (clear), resource (canvas), and the effect (to a solid color). It distinguishes itself from sibling tools like krita_clear_selection, which clears a selection rather than the whole canvas, and from krita_fill, which fills with a color but may not clear. A 5 is not warranted because it doesn't explicitly contrast with krita_clear_selection or mention that it affects the entire canvas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: use when you want to reset the canvas to a solid color. However, it doesn't explicitly state when to use this over krita_fill or krita_clear_selection, nor does it mention any prerequisites (e.g., an open document). The context is clear enough for a simple tool, but no exclusions or alternatives are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
krita_clear_selectionKrita Clear SelectionA
Deselect everything.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Deselect everything' states the primary effect, but does not mention whether it is non-destructive to pixels/layers, what happens if no selection exists, or whether it only affects the current document. The statement is adequate but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two words ('Deselect everything.') with no filler. Every word contributes to the meaning, and the operation is front-loaded and immediately understandable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with an output schema, the description is nearly complete: it tells the agent exactly what the tool does. A small gap is that it does not explicitly state that it operates on the current Krita document's active selection, but the tool name and simplicity make this low risk.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the input schema already fully describes the invocation surface. The description does not need to elaborate on parameters, and the baseline of 4 for zero-parameter tools applies here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a clear verb and object: 'Deselect everything.' It accurately conveys that the tool clears the current selection. It does not explicitly differentiate from sibling selection tools like krita_modify_selection or ase_deselect, but the Krita-specific naming and the operation are unambiguous enough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives, nor any exclusions or conditions. The only context is the tool's name and title, which imply Krita-specific usage. An agent must infer when clearing a selection is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
krita_create_layerKrita Create LayerB
Create a paint or group layer. above = existing layer name to stack it over (default: top). The new layer becomes active.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| type | No | paintlayer | |
| above | No | ||
| opacity | No | ||
| blending_mode | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the important side effect that the new layer becomes active and explains stacking via 'above'. However, it omits prerequisites (e.g., open document), valid layer-type values, and behavior when a layer name already exists, so disclosure is partial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler. The core purpose is front-loaded, and the parameter note about 'above' earns its place because it clarifies a non-obvious default.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the presence of an output schema, this is a five-parameter tool with no annotations and incomplete parameter semantics. The description does not define valid type values, opacity/blending-mode behavior, or document prerequisites, leaving the agent to guess for non-default calls.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions are absent for all five parameters, so the description must compensate. It explains only 'above' and vaguely hints that 'type' selects paint or group layers; the required 'name', 'opacity', and 'blending_mode' are left semantically unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the operation ('Create'), the resource ('layer'), and the supported kinds ('paint or group layer'). It is not merely a restatement of the title, and the active-layer side effect adds useful scoping. It does not explicitly differentiate from sibling krita_duplicate_layer, but the action is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given for when to choose this tool over alternatives such as krita_duplicate_layer or krita_set_active_layer. The only contextual note is about the 'above' parameter, which is parameter usage rather than tool selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
krita_document_infoKrita Document InfoA
Active Krita document overview: name, filename, size, resolution, color model/depth, layer count, active layer, selection state, zoom, Krita version.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full transparency burden. It does convey that the tool returns a document overview and enumerates the data it reads, but it does not explicitly state that the operation is read-only or describe behavior when no document is active. 'Overview' implies non-mutating, but the claim is implicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact sentence with a colon-separated field list. Every listed item is directly informative, and the core subject 'Active Krita document overview' is front-loaded with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter informational tool, the description plus the existing output schema is largely sufficient: it identifies the target resource and all returned categories. It omits edge-case behavior like an absent active document, but that is a minor gap given the output schema and the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is no parameter semantics burden on the description. The empty input schema with 100% coverage already makes it clear that no arguments are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a concrete resource ('active Krita document') and enumerates the exact data categories returned: name, filename, size, resolution, layer count, active layer, selection state, zoom, and Krita version. It is clearly distinct from layer-specific or status tools, though it lacks a strong verb like 'get' or 'read'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is implied by the resource and field list, but there is no explicit guidance about when to choose this over related siblings such as krita_status, krita_get_canvas, or krita_list_layers. It does not mention exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
krita_draw_shapeKrita Draw ShapeC
Draw rectangle|ellipse|line on the canvas; x2/y2 are line endpoints.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | ||
| y | Yes | ||
| x2 | No | ||
| y2 | No | ||
| fill | No | ||
| shape | Yes | ||
| width | No | ||
| height | No | ||
| stroke | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only discloses that shapes are drawn on the canvas and that x2/y2 serve as line endpoints; it does not mention which layer receives the drawing, coordinate origin, pixel overwrite behavior, or undoability.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler, and the key parameter clarification is front-loaded. It is appropriately compact, though its brevity contributes to the overall completeness gap.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 9 parameters, no annotations, and 0% schema coverage, this description is not sufficient for reliable invocation. Accepted shape strings, coordinate semantics, active layer behavior, and the relationship between width/height and x2/y2 are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but it only clarifies x2/y2 as line endpoints and lists shape values. x/y positioning, width/height semantics, fill/stroke behavior, defaults, and the interaction between x2/y2 and width/height are all left unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Draw') and resource ('canvas'), and enumerates three shape types (rectangle|ellipse|line), so an agent can understand the tool's core function. It does not explicitly contrast with sibling drawing tools like krita_stroke or ase_draw_rectangle, so it stops short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to prefer this tool over krita_stroke, krita_fill, or the many ase_draw_* siblings. The phrase 'Draw rectangle|ellipse|line' implies primitive-shape usage, but no conditions, exclusions, or alternatives are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
krita_duplicate_layerKrita Duplicate LayerA
Duplicate a layer with its full pixel content; the clone lands directly above the source and becomes active.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| new_name | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses two important behavioral traits: the clone lands directly above the source and becomes active. This goes beyond the schema and helps the agent predict the document state after the call. It does not mention whether the new layer is selected or whether undo is possible, but the disclosed placement/activation behavior is meaningful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the core action and scope, followed by the two most important behavioral outcomes. Every word earns its place; no filler or repetition of schema fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool with an output schema, the description covers the essential behavior: what is duplicated, where the clone goes, and that it becomes active. It doesn't explain return values, but the output schema exists and the description needn't repeat them. It could mention whether the original layer remains unchanged, but that is implied by 'duplicate'. Overall, complete enough for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains the purpose of the operation but does not explain the 'name' parameter (which layer to duplicate) or 'new_name' (what to call the clone). The parameter names are somewhat self-explanatory, but the description adds no detail about required vs optional semantics or naming rules. Baseline 3 is appropriate because the schema is minimal and the description doesn't enrich parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Duplicate'), a specific resource ('a layer'), and the key scope ('with its full pixel content'). It also distinguishes itself from the sibling krita_remove_layer and krita_create_layer by clarifying that the clone lands directly above the source and becomes active. This is clear and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool: when you need a copy of a layer with its pixels intact, placed above the source. It does not explicitly state when not to use it or name alternatives (e.g., krita_create_layer for blank layers, krita_merge_layer_down for combining). The context is clear but exclusions are absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
krita_export_layersKrita Export LayersA
Export every top-level layer as its own PNG (trimmed to its bounds). Defaults to the plugin's canvas output dir; returns per-layer paths.
| Name | Required | Description | Default |
|---|---|---|---|
| output_dir | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden and does a solid job: it explains the export behavior, trimming, the default output location, and the return value (per-layer paths). It does not mention overwrite behavior, filename conventions, or handling of hidden layers, but the core side-effects are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight, front-loaded sentences with no filler. The core action is stated first, followed by default behavior and return value. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter export tool with an output schema available, the description covers the essential decision points: what is exported, in what format, where output goes by default, and what the tool returns. Slightly more detail about the output_dir parameter semantics and file naming would make it fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It clarifies that output_dir defaults to the plugin's canvas output directory, which adds meaningful meaning to the otherwise bare nullable string parameter. However, it does not specify path format, whether directories are created, or what happens when null is explicitly passed, leaving some ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Export'), a specific resource ('every top-level layer'), and the output format ('its own PNG'). The added scoping detail 'top-level' and 'trimmed to its bounds' distinguishes this from generic export or image-capture tools like krita_get_canvas or ase_export_layers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the intended use case clear: exporting all top-level layers to PNG files, with an optional override of the default output directory. It does not explicitly name alternatives or exclusion conditions, but the context is sufficiently clear that an agent can infer when this tool applies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
krita_fillKrita FillC
Fill a circle at (x, y) with the current color.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | ||
| y | Yes | ||
| radius | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It describes the expected visual effect but does not disclose whether the fill overwrites existing pixels, how radius relates to the circle, whether it requires a target layer, or what output or state changes occur. This is thin for a drawing mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It immediately states the action and target while remaining compact, which is appropriate for a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, 0% parameter coverage, and a fill operation that depends on prior state like the current color and active layer, the description is too sparse. It omits the radius entirely and does not explain behavioral context such as overwrite semantics or whether a layer must be selected.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It clarifies that x and y are the circle's location, but it completely omits the radius parameter, including the default of 50, units, or coordinate-system details. The schema values alone do not provide this meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Fill'), a resource ('a circle'), and the location ('at (x, y)'), with 'current color' making the behavior reasonably clear. However, it does not explicitly differentiate itself from overlapping siblings like krita_draw_shape or krita_stroke.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives, no prerequisites such as setting the current color first, and no mention of when another fill/drawing tool would be more appropriate. The usage context must be inferred entirely from the tool name and sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
krita_flattenKrita FlattenA
Flatten all layers of the active document into one.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry behavioral disclosure. It does disclose the core effect ('all layers ... into one'), which implies flattening is destructive to layer structure, but it does not mention undo behavior, hidden layers, or whether the active document on disk is affected. The core effect is transparent enough, but edge-case behavior is left unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no filler, accurately front-loading the verb and resource. Every word contributes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter operation with an output schema, the description covers the essential behavior and scope. It omits usage-alternative guidance and explicit caution about destructiveness, but these are minor for such a simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters; the schema is completely documented, so the schema carries all necessary parameter information. The description adds no parameter detail, which is acceptable and matches the baseline for no-parameter tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Flatten') and resource ('all layers of the active document') and states the endpoint state ('into one'). This clearly distinguishes it from siblings such as krita_merge_layer_down and krita_remove_layer.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it — whenever the user wants a single combined layer — but gives no explicit guidance about when not to use it or which alternative, such as merge_layer_down, fits partial merges. The operation's unique scope makes the intended usage reasonably evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
krita_get_canvasKrita Get CanvasC
Export the current Krita canvas to PNG (plugin output dir).
as_base64=true returns the PNG bytes as a plain text png_base64 field for callers that decode/write themselves; otherwise returns the plugin result including the exported path.
| Name | Required | Description | Default |
|---|---|---|---|
| filename | No | canvas.png | |
| max_side | No | ||
| as_base64 | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden. It does disclose the export target (PNG to plugin output dir), the two return modes (png_base64 field vs. plugin result with path), and that as_base64 switches between them. However, it leaves ambiguity about what 'plugin output dir' is and never clarifies whether the operation is destructive or requires a canvas state. Reasonable but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two focused sentences with the core purpose front-loaded. The as_base64 explanation is dense but earns its place since it clarifies the primary mode switch. No wasted words, though the plugin-output-dir parenthetical could have been a touch clearer.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 3 parameters, 0% schema coverage, no output schema, and no annotations, the description is under-specified. max_side is undocumented, the output directory location is vague, and the non-base64 return is only described as 'the plugin result including the exported path' with no indication of what else it carries. For a tool with zero structured metadata, this leaves material gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must document all three parameters. It explains as_base64 well (returns PNG bytes as plain text png_base64), and filename is inferable from its name and default. But max_side (integer, default 0) is completely unexplained — the agent has no idea what limit it applies or what 0 means. The description only partially compensates for the total schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Export the current Krita canvas to PNG'. This is clear and distinct from most siblings (e.g., krita_get_pixels reads pixel data, krita_save saves the document). However, it does not explicitly differentiate from krita_export_layers, which could plausibly overlap in an agent's mind, and it does not name any sibling for contrast.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance or explicit alternative routing. The only usage hint is the as_base64 explanation ('for callers that decode/write themselves'), which is a parameter selection hint rather than tool-selection guidance. Nothing tells the agent when to prefer this over krita_export_layers or how max_side should be chosen.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
krita_get_color_atKrita Get Color AtA
Sample the canvas color at (x, y) (eyedropper).
Falls back to exporting the canvas and reading the pixel locally when the Krita plugin's native action fails (older plugin builds crash on bytes formatting until Krita is restarted with the patched plugin).
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | ||
| y | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden of behavioral disclosure and does well: it reveals the native-action failure mode and the local fallback via canvas export and pixel reading. It does not explicitly state the color return format, but an output schema exists to cover that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core purpose, followed by a useful failure-handling note. The second sentence is slightly wordy with the parenthetical about older plugin builds, but it still earns its place by disclosing important fallback behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read operation with an output schema, the description covers the essential behavior and the important fallback path. It omits minor contextual details like coordinate-space semantics and bounds, but these are not critical for an agent to invoke the tool successfully.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must interpret the parameters; it does clarify that x and y are canvas coordinates. However, it does not define the coordinate origin, units, bounds, or whether they refer to the current canvas view or document pixels, leaving some meaning to inference.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific operation: 'Sample the canvas color at (x, y)' and labels it 'eyedropper', making the tool's function unmistakable. This clearly distinguishes it from sibling tools like krita_get_pixels or krita_set_color, which involve different resources or operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for reading a single canvas pixel's color at given coordinates, which is a clear use context. However, it does not explicitly compare against alternatives such as krita_get_pixels, nor does it state when not to use it or mention any prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
krita_get_pixelsKrita Get PixelsA
Export a canvas region as PNG (merged projection; layer=None reads the whole composite). width/height 0 = to the canvas edge. Returns the file path; as_base64 also returns the PNG bytes as a text field. Pair with px_view_image / read_image to LOOK at the canvas.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| layer | No | ||
| width | No | ||
| height | No | ||
| as_base64 | No | ||
| output_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses merged projection behavior, layer=None reading the whole composite, width/height 0 meaning canvas edge, and return behavior for as_base64. However, it leaves output_path and x/y coordinate semantics implicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences with the core purpose front-loaded. Every sentence adds distinct value: what it does, key parameter semantics, return behavior, and a usage workflow. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter tool with no annotations, the description covers the essential semantics, return values, and a practical workflow. Minor gaps remain around x/y origin, output_path default behavior, and potential side effects, but the output schema helps cover return expectations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains layer, width/height, and as_base64, but does not explain x, y, or output_path beyond their names and defaults. This is helpful but incomplete across all 7 parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific action and resource: 'Export a canvas region as PNG'. It also clarifies scope via 'merged projection' and 'layer=None reads the whole composite', making it clearly distinct from write tools like krita_set_pixels or krita_adjust_pixels.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides a concrete workflow: export a region, then pair with px_view_image/read_image to look at the canvas. It does not explicitly list exclusions or alternatives, but the intended context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
krita_get_selectionKrita Get SelectionA
Current global selection: exists flag plus bounding box.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It conveys that this is a read operation returning selection state, but it does not explicitly state side-effect freedom, coordinate system, or behavior when no selection exists beyond the implied exists flag. The description is adequate but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, compact sentence that front-loads the core purpose and immediately describes the output. Every word contributes meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter getter with an output schema present, the description fully captures the essential behavior: it reports whether a global selection exists and provides its bounding box. No further guidance is necessary for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema carries no semantic burden. The description appropriately focuses on the return value rather than parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource ('current global selection') and a specific action ('get'), and states exactly what is returned (exists flag plus bounding box). It is clearly distinguishable from sibling tools like krita_set_selection, krita_modify_selection, and krita_clear_selection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a read-only inspection use case through the word 'current', and sibling names clarify when not to use it (e.g., to change selection use krita_set_selection). However, there is no explicit when-to-use or alternative routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
krita_list_actionsKrita List ActionsA
List Krita QAction names runnable via krita_run_action (partial-name filter on name or display text).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| filter | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of conveying behavior. 'List' indicates a read-only introspection operation, and the partial-name filter on name or display text is explicit. It does not dwell on side effects, but listing actions is inherently non-mutating, and missing return details are handled by the output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with a parenthetical delivers the core purpose and the key filtering behavior with zero wasted words. The most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple: no required parameters, an output schema, and only two optional params with defaults. The description gives an agent everything needed to decide to invoke it and understand the filter behavior. No critical gap remains for this kind of enumeration tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has no parameter descriptions, so the description must compensate. It meaningfully explains that 'filter' performs a partial-name match against either the action name or display text. The 'limit' parameter is only implicit in the schema default, but its meaning is self-evident for a list operation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: it lists Krita QAction names that can be run via krita_run_action. It also adds filter semantics, and the focus on actions distinguishes it from sibling tools like krita_list_brushes and krita_list_filters.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly ties the tool to its use case: discover QAction names for subsequent use with krita_run_action. It does not explicitly enumerate alternatives or when-not-to-use cases, but the context is strong enough for an agent to know when this tool applies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
krita_list_brushesKrita List BrushesA
List Krita brush presets (partial-name filter).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| filter | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses the filter behavior and that it lists presets, but doesn't mention whether it requires an active Krita session, what the return format is (though output schema exists), or any side effects. It doesn't contradict 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that efficiently communicates the tool's purpose and the key filter feature. No unnecessary words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple listing tool with optional parameters, the description is sufficient. The output schema likely provides details on the return structure, so not explaining it is acceptable. The main gap is whether an active Krita connection is needed, but the sibling tools and tool family context suggest this is implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema describes both parameters with defaults, but the description adds minimal semantic value beyond the schema's basic types. It mentions the filter is for partial-name matching but doesn't elaborate on the limit's behavior or edge cases. With 0% schema coverage, a baseline of 3 is appropriate, but the description could provide more context on how the filter is applied.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists Krita brush presets with an optional partial-name filter. It is concise and unambiguous, though it doesn't explicitly differentiate from sibling tools like krita_set_brush, but the action of listing is distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for browsing or searching brush presets, and the filter parameter suggests a way to narrow results. However, it doesn't explicitly state when to use this vs alternatives or mention any prerequisites such as needing a Krita document open. The context is clear but lacks explicit routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
krita_list_filtersKrita List FiltersA
List Krita filter names usable with krita_apply_filter (partial-name filter).
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden. It discloses that the tool lists names and that the 'filter' parameter narrows by partial name, but it does not mention case sensitivity, whether an empty filter returns all filters, or confirm the operation is read-only. This is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single well-structured sentence with the core action front-loaded and the parameter behavior in a parenthetical. Every element contributes value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter list tool with an output schema present, the description covers the essential invocation details: what is listed, what the optional parameter does, and how the result relates to krita_apply_filter. A few behavioral specifics could be added, but nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides only a type and default for 'filter' with zero description coverage, so the description's parenthetical '(partial-name filter)' is the main source of meaning. It correctly explains what the parameter does, though it leaves details like case sensitivity or match location unspecified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') with a precise resource ('Krita filter names') and ties it to a downstream use case (krita_apply_filter). This clearly distinguishes it from sibling list tools like krita_list_brushes or krita_list_layers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: this tool exists to discover filter names for use with krita_apply_filter, and supports a partial-name filter. It does not explicitly name alternatives or state when not to use it, but for a simple lookup tool the usage context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
krita_list_layersKrita List LayersA
Layer tree of the active document (top-of-stack first): name, type, visibility, lock, opacity, blending mode, bounds, nested children.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It does well by stating the output ordering ('top-of-stack first'), the inclusion of nested children, and the list of exposed fields, all of which are observable behaviors beyond the tool name. It does not explicitly state side-effect-free behavior, but 'list' and the descriptive content imply a read-only operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, information-dense sentence with no filler. It front-loads the subject and scope, then lists the returned attributes compactly, earning every word.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, zero-annotation tool with an output schema, the description is complete enough: it defines the scope ('active document'), ordering, nesting behavior, and the fields returned. There are no missing inputs or usage prerequisites an agent would need to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is nothing for the description to clarify beyond what the empty schema already states. The baseline of 4 applies because no parameter documentation is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('List') and resource ('Layer tree of the active document'), and further specifies the exact properties returned. It clearly differentiates this from sibling tools like krita_list_filters or krita_list_brushes because the resource and scope are unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: call this tool to inspect the layer hierarchy of the active document, including nested children and their properties. It does not explicitly name alternatives or exclusions, but the resource is specific enough that an agent can infer when it applies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
krita_merge_layer_downKrita Merge Layer DownC
Merge a layer into the one below it.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden of behavioral disclosure. It fails to mention potential side effects: the bottom layer is modified or replaced, the top layer is removed, layer order changes, and there is no mention of whether this is undoable (likely via krita_undo, but not stated). The description is too brief for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that is efficient and front-loaded with the verb and object. It earns its place, though it could be slightly more informative without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given it is a destructive operation with no annotations and a single underdocumented parameter, the description is incomplete. It does not specify error conditions (e.g., no layer below), return behavior, or prerequisite state (e.g., a visible active layer). Output schema exists but does not compensate for missing behavioral detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 0%, so the description must explain the 'name' parameter. It does not state whether 'name' refers to the top layer, bottom layer, or target layer, nor does it clarify that the layer must exist and be mergeable. This could be confusing for an agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (merge) and the target (a layer into the one below), which is specific and unambiguous. It distinguishes from other layer operations like krita_remove_layer or krita_flatten, though it does not explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs. alternatives such as krita_flatten (which merges all layers) or ase_merge_layer_down (in a different editor). The context implies usage for layer compositing, but there is no explicit statement of when to prefer this over flattening or duplicate-then-merge workflows.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
krita_modify_selectionKrita Modify SelectionB
Modify the current selection: invert | feather(radius) | grow(x_radius,y_radius) | shrink(x_radius,y_radius,edge_lock) | smooth | erode | dilate | border(x_radius,y_radius).
| Name | Required | Description | Default |
|---|---|---|---|
| op | Yes | ||
| radius | No | ||
| x_radius | No | ||
| y_radius | No | ||
| edge_lock | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden of behavioral disclosure. The description explains that it modifies the current selection and lists operations, but it does not disclose side effects (e.g., does it replace the selection? does it require a selection to exist? does it return any status?). It provides some transparency about the range of operations but lacks details on behavior beyond that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is dense and efficient, listing all supported operations and their parameter options. It is front-loaded with the core purpose ('Modify the current selection') and immediately enumerates the operations. However, it uses a compact syntax that may require parsing, but that is still concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a multi-operation tool with 5 parameters and no annotations, the description is incomplete. It does not explain the return behavior, mention prerequisites (like having a selection), or describe how operations like feather or grow affect the selection in detail. An output schema exists, so return values are covered, but the operational context is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. The description lists operations and shows parameter usage (e.g., feather(radius), grow(x_radius,y_radius)) but does not explain what each parameter means semantically. For instance, it doesn't clarify the meaning of x_radius vs y_radius or the role of edge_lock, which is left to the agent's inference.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action: modifying the current selection, and lists the available operations (invert, feather, grow, etc.). This distinguishes it from other selection tools like krita_set_selection or krita_clear_selection, though it doesn't explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by listing operations and their parameters, but it does not explicitly state when to use this tool versus other selection modification alternatives. It lacks guidance on prerequisites (e.g., must have an active selection) or when NOT to use it, but the operation list gives some context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
krita_new_canvasKrita New CanvasC
Create a new canvas in Krita.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New Canvas | |
| width | No | ||
| height | No | ||
| background | No | #1a1a2e |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden of behavioral disclosure. It states the action but gives no information about side effects—whether it replaces the current canvas, requires saving, or is destructive. For a creation tool, users need to know if existing work is affected, but this is not addressed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, brief sentence with no wasted words, which is concise. However, it is too terse to provide substantive value beyond the tool name. It is not structured to front-load important details (e.g., parameter meaning or effects) and could be expanded without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With four parameters, no annotations, and no parameter descriptions, the description is grossly incomplete. It lacks any information about parameter semantics, expected outcomes, or return values (even though an output schema exists, its content is unknown). The tool is simple but still requires more context to be used correctly, so this is a major gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has four parameters with no descriptions (schema description coverage is 0%). The description does not mention any of these parameters, their purpose, units (e.g., width/height in pixels), or constraints (e.g., background color format). It fails to compensate for the complete lack of schema documentation, leaving the agent without essential information to correctly set parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Create') and resource ('a new canvas') and explicitly names the application ('in Krita'), which helps distinguish it from the sibling tool ase_create_canvas. However, it doesn't further differentiate from other Krita creation tools (e.g., krita_open_file) or elaborate on what 'new canvas' implies (new document vs. replacing current), so it's clear but not fully specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. It doesn't mention prerequisites, such as whether Krita needs to be running, or scenarios where this tool is preferred over opening an existing file or using other canvas-related tools. The description simply states the action without any context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
krita_open_fileKrita Open FileB
Open a file in Krita (.kra, .png, .jpg, ...).
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral burden. It only states the action and supported formats; it does not disclose whether opening a file replaces the current document, what happens with unsaved changes, or how missing/invalid paths are handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence that is front-loaded with the action and resource, and every word adds value. The supported-format list is compact and useful without bloating the text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter file-opening tool, the description is minimally sufficient: it names the operation and accepted formats. However, because there are no annotations and no guidance about replacing the current document or error behavior, it leaves some operational uncertainty.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description needs to clarify the 'path' parameter, but it only lists file extensions. It does not explain whether the path should be absolute or relative, accepted URI forms, or what happens if the file cannot be found. The parameter name is self-evident, but no additional meaning is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Open') and resource ('a file in Krita'), and lists common formats, making the tool's purpose immediately clear. It is distinct from siblings like krita_new_canvas and krita_save, so an agent can tell them apart without inspecting schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is implied: load an existing Krita-compatible file. However, the description does not explicitly state when to use this tool versus creating a new canvas or saving, nor does it mention any preconditions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
krita_redoKrita RedoA
Redo the last undone action in Krita.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It clearly states the core effect—redoing the last undone action—but does not disclose edge-case behavior such as a no-op or error when the undo stack is empty, or whether an active Krita document is required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler or repeated information. Every word adds meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-parameter, single-action tool, the description is largely complete, and an output schema is present to cover return values. It could be more complete by noting the no-op behavior when no undone action exists, but that is a minor gap given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and an empty input schema, so there is no parameter semantics for the description to supplement. Per the rubric, a no-parameter tool receives a baseline of 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Redo the last undone action in Krita.' This is unambiguous and clearly distinguishes the tool from its sibling krita_undo by semantic opposite.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'last undone action' establishes the clear precondition that an action must have been undone first, implying use after krita_undo. It does not explicitly name alternatives or state what happens when there is nothing to redo, but the usage context is evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
krita_remove_layerKrita Remove LayerB
Delete a layer (refuses to delete the only top-level layer).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It discloses an important safeguard: it refuses to delete the only top-level layer. However, it does not mention whether deletion is undoable, whether the active layer changes, or any error behavior beyond that one refusal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence with no filler. The core action is front-loaded, and the important edge-case guard is added as a brief parenthetical. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter destructive tool, the description is mostly adequate: it states the action and a key limitation, and an output schema exists so return values do not need explaining. The main gap is the undocumented parameter semantics, which prevents full completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has zero description coverage, and the description does not explain that 'name' is the layer name or how it should be specified. The parameter semantics are left entirely to inference from the tool name, which is not enough for a low-coverage definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Delete a layer') and the resource, and the verb 'delete' distinguishes it from siblings like krita_create_layer, krita_duplicate_layer, and krita_merge_layer_down. The parenthetical adds a precise edge-case behavior without obscuring the core purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives, nor any mention of prerequisites such as the layer needing to exist or how to obtain its name. The only contextual hint is the refusal behavior, but no explicit usage direction is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
krita_resize_imageKrita Resize ImageA
Resize the canvas without scaling content (crop or expand). x/y is the offset of the old canvas inside the new one (negative crops).
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| width | No | ||
| height | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses the core behavior (no scaling, crop/expand, offset meaning) but omits details such as background fill on expansion, effect on layers, or whether the operation is reversible. It is adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core behavior, and zero waste. The key constraint (no scaling) is stated first, and the offset semantics are added succinctly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 4 parameters, no annotations, and an output schema, but the description is incomplete. Width/height semantics are unclear, and the effect on existing canvas content (background fill, layer behavior) is not addressed. An agent cannot reliably infer correct usage without additional information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains x/y as offset but leaves width and height entirely unexplained. The default of 0 for width/height is ambiguous (current size? delta?), creating risk of misuse. Only half the parameters are clarified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (resize canvas) and the key distinction from scaling: 'without scaling content (crop or expand)'. It also explains the x/y offset, making the tool's purpose unambiguous and differentiating it from the sibling krita_scale_image.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the usage context (resizing canvas without scaling content) but does not explicitly mention alternatives or exclusions. It could have directed the agent to krita_scale_image for scaling content, but this is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
krita_run_actionKrita Run ActionA
Trigger any named Krita action (e.g. flatten_image, mirror_canvas, view_zoom_in, selectiontool...). Unknown names return did_you_mean suggestions from krita_list_actions.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility for behavioral disclosure. It does reveal that unknown names return did_you_mean suggestions, but it omits any warning about potentially destructive side effects, prerequisites like an open document, or what happens on success. This is a significant gap for a tool that can trigger arbitrary actions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler. The core purpose is front-loaded, examples support comprehension, and the error-handling note is placed as a useful secondary detail. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with an output schema, this is largely complete: it explains the function, provides examples, and points users to the action list for validation. It could mention that some actions are destructive, but the generic dispatcher nature makes that acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, leaving the 'name' parameter completely undocumented. The description compensates with example values (flatten_image, mirror_canvas, view_zoom_in, selectiontool) and explains error recovery via krita_list_actions, adding meaning well beyond the raw string type.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Trigger') and resource ('any named Krita action') with concrete examples. It is clearly distinguished from krita_list_actions (which lists actions) and krita_run_python (which runs scripts) by narrowing to named actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The did_you_mean hint implies that krita_list_actions is the source for valid names, giving indirect guidance. However, it does not explicitly state when to use this tool versus alternatives or provide exclusions for specific actions (e.g., undo/redo tools).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
krita_run_pythonKrita Run PythonA
Execute arbitrary Python inside Krita (escape hatch). The namespace provides: krita module, Krita/app, doc (active Document), view, InfoObject, Selection, QImage, os, json, math. print() is captured into the result's output field; assign to a variable named result to return a value (repr'd).
WARNING: executes unrestricted code inside the running Krita process. Only pass code you trust.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses critical behavioral traits beyond any annotations: it executes unrestricted code inside the running Krita process, captures print() output into the result's output field, and requires assigning to a variable named 'result' to return a value. It also includes a prominent security warning. This is exemplary transparency for a high-risk tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core purpose, followed by essential namespace details, output behavior, and a security warning. Every sentence earns its place; there is no filler or repetition of schema information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter escape-hatch tool with an output schema, the description covers everything an agent needs: what code can do, what namespace is available, how to capture output, how to return a value, and the risk involved. The output schema handles return-value structure, so no further description is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the single 'code' parameter. It does so by explaining what the code can access (namespace objects), how output is captured, and how to return a value. It doesn't provide syntax examples, but the parameter is self-evident as a Python code string and the description gives enough context for correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Execute arbitrary Python inside Krita') and identifies it as an escape hatch, which clearly distinguishes it from the many sibling tools that perform specific Krita operations. It also enumerates the available namespace objects, making the tool's purpose and scope immediately understandable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool: when no dedicated sibling tool exists for the needed operation, since it is an 'escape hatch' for arbitrary Python. It does not explicitly name alternatives or state when not to use it, but the framing as an escape hatch plus the warning about unrestricted code provides clear contextual guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
krita_saveKrita SaveC
Save the current Krita document to path (.kra/.png/...).
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Save' implies writing to disk, but there is no mention of whether existing files are overwritten, how formats are determined, or what happens if no document is open. This is a significant gap for a mutating operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no redundant filler. It front-loads the core action and provides essential context about the path parameter without wasting words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having only one parameter and an output schema, the description is too thin for a saving operation with no annotations. It fails to mention overwrite semantics, supported formats, error conditions, or any return value expectations, leaving the agent without enough context to invoke the tool safely and effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only defines 'path' as a string with no description. The description adds meaning by indicating that path points to a save location and that the extension (.kra/.png/...) likely determines format (as in 'Save the current Krita document to path'). However, it does not specify allowed formats, format inference behavior, or file overwrite behavior, so it only partially compensates for the 0% schema description coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Save'), the resource ('current Krita document'), and the destination ('to path'), with example extensions to clarify the path's role. It is distinguishable from siblings like krita_export_layers and krita_open_file, though it does not explicitly differentiate itself from them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives such as ase_save_as or krita_export_layers. The description does not mention prerequisites, such as an open document, or conditions that would make a different tool more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
krita_scale_imageKrita Scale ImageA
Scale the whole image to new pixel dimensions (resampling strategy: Bilinear | NearestNeighbor | Lanczos3 ...). xres/yres 0 keeps the current resolution.
| Name | Required | Description | Default |
|---|---|---|---|
| xres | No | ||
| yres | No | ||
| width | Yes | ||
| height | Yes | ||
| strategy | No | Bilinear |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses resampling strategy and resolution handling, but it does not mention whether the operation is destructive, whether it affects all layers, or how it interacts with canvas size. It also does not state prerequisites like an open document. This is partial but not severely deficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with a parenthetical, front-loading the core action. Every part serves a purpose: the action, the target, the resampling options, and the resolution note. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 5 parameters, no annotations, and an output schema (unseen), the description covers the essential scaling action but omits important context: whether it modifies the existing image or creates a new one, effects on layers, undo behavior, or any constraints. It is adequate for a basic scale operation but not fully complete for safe usage without additional knowledge.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains the strategy options and the xres/yres behavior (0 keeps current resolution), adding meaning beyond parameter names. However, width and height are left self-explanatory, and xres/yres are not defined as resolution/DPI. It adds value but does not fully document all parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool scales the whole image to new pixel dimensions, with a specific verb and resource. It does not explicitly contrast with the sibling krita_resize_image, but the mention of resampling strategy and resolution parameters adds specificity. It is clear but lacks explicit sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: scale the whole image to new dimensions. It does not state when not to use it or point to alternatives like krita_resize_image, but the purpose is unambiguous. No exclusions or when-not guidance is given, so it earns a 4 rather than a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
krita_set_active_layerKrita Set Active LayerA
Make a layer the active paint target (searched recursively by exact name).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose a key behavior: recursive search by exact name. However, it does not mention what happens if the layer is not found, whether it replaces the current active layer, or any side effects. For a simple setter, this is moderate coverage, but it could state more about error handling or idempotency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact sentence that front-loads the core action and adds a critical behavioral detail. There is no waste or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity tool with one parameter and an output schema, the description covers the essential behavior. It lacks details about error conditions (e.g., layer not found) but that may be covered by the output schema. It is sufficient for an agent to call it correctly in most cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides only a string type with no description, and schema coverage is 0%. The description compensates fully by explaining that 'name' is the exact layer name and that the search is recursive. This gives the agent precise meaning for the parameter beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('make active'), the resource ('layer'), and the specific behavior ('searched recursively by exact name'). This distinguishes it from sibling tools like krita_set_layer_props (which modifies properties) and krita_list_layers (which lists layers). An agent can understand the tool's function immediately.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it (to set the active paint target) but does not explicitly mention alternatives or when not to use it. It gives context about the search behavior but no exclusions or comparison with other layer-related tools. It's clear but lacks explicit routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
krita_set_brushKrita Set BrushB
Set brush preset and properties (preset partial name, size px, opacity 0-1).
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | ||
| preset | No | ||
| opacity | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosing behavior. It indicates a state change ('set') and provides constraints (partial name, px, 0-1 range), but does not explain side effects, persistence, whether a document must be open, or how it interacts with subsequent strokes or drawing tools. The description is too terse to be transparent about behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no fluff. The core action is front-loaded, and the parenthetical efficiently packs parameter semantics. It earns every word and is appropriately sized for a simple setter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, and an output schema exists, so return values are not a concern. However, with no annotations and no schema descriptions, the description is the sole source of behavioral context. It lacks when-to-use guidance, side effects, and any mention of the tool's role in the Krita workflow, leaving an agent without enough information to use it correctly in context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds meaning to all three parameters: preset is a partial name (implying fuzzy matching), size is in pixels, and opacity is a 0-1 number. This directly clarifies the input schema. It does not mention optionality, but the schema already provides default null values, so that is covered.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Set brush preset and properties') with the key properties enumerated in parentheses. It clearly identifies the resource (brush) and the operations, distinguishing it from sibling tools like krita_list_brushes or krita_set_color. However, it does not explicitly name a sibling or contrasting alternative, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives, no mention of prerequisites (e.g., active document), and no context about its role in a drawing workflow. The parenthetical gives parameter hints but not usage context. The only implied usage is 'before drawing,' but that is not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
krita_set_canvas_viewKrita Set Canvas ViewA
Control the active view's canvas: zoom level (1.0 = 100%), rotation degrees, mirror, wrap-around mode. Only provided fields change; returns the resulting zoom/rotation.
| Name | Required | Description | Default |
|---|---|---|---|
| zoom | No | ||
| mirror | No | ||
| rotation | No | ||
| wrap_around | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses a key behavioral trait: 'Only provided fields change' – meaning null/default fields are left untouched, which is critical for an agent to know before calling. It also states that the tool returns the resulting zoom/rotation, giving the agent expectation of the response. It does not mention whether mirror/wrap_around values are also returned, but the partial return disclosure is still valuable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler. The first sentence front-loads the resource and the four controllable properties; the second sentence adds the critical partial-update behavior and return value. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter, 0-required tool with an output schema, the description covers the essential semantics: what fields do, the partial-update behavior, and the return value. It doesn't specify zoom/rotation bounds or whether mirror/wrap_around are included in the return, but the output schema likely covers the return shape. The description is complete enough for an agent to call this tool correctly without opening the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does: it explains the meaning of zoom (1.0 = 100%), rotation (degrees), and names the boolean modes (mirror, wrap-around). It also explains the null semantics ('Only provided fields change'), which is essential for interpreting the anyOf/null schema. It doesn't give ranges for zoom or rotation, but the core semantics are covered.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Control') and resource ('the active view's canvas'), and enumerates the exact properties it affects: zoom level, rotation degrees, mirror, and wrap-around mode. It also clarifies the zoom unit (1.0 = 100%), which distinguishes it from other Krita tools that manipulate canvas content or layers. The tool name and title are reinforced rather than merely restated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies when to use this tool: when the agent needs to change the active view's display properties (zoom, rotation, mirror, wrap-around) rather than modifying the document content. It does not explicitly name alternatives or exclusions, but the sibling list contains no other view-control tool, so the context is clear. A small gap: it doesn't state when NOT to use it (e.g., for resizing the actual image, use krita_resize_image).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
krita_set_colorKrita Set ColorB
Set the foreground (paint) color (hex like #ff6b6b).
| Name | Required | Description | Default |
|---|---|---|---|
| color | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the tool sets the foreground color but doesn't disclose whether it affects the background color, whether it persists across sessions, or whether it requires an active document. The hex format example is helpful but behavioral details are minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the action and resource, with a concrete example. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter setter, the description is mostly complete. The output schema exists, so return values are covered. The main gap is behavioral context (e.g., does it require an open document, does it affect only the current session), but the tool is simple enough that this is a minor omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It does explain the 'color' parameter format (hex like #ff6b6b), which adds meaning beyond the bare schema. However, it doesn't specify whether the '#' is required, whether named colors are accepted, or whether alpha/opacity is supported.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool sets the foreground (paint) color in Krita, with a specific verb and resource. It distinguishes itself from sibling tools like krita_get_color_at (which reads color) and krita_fill (which applies color), though it doesn't explicitly name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: set the foreground color before painting or filling. It doesn't explicitly state when to use this vs alternatives like krita_get_color_at or krita_fill, but the context of setting a color is clear enough for an agent to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
krita_set_layer_propsKrita Set Layer PropsB
Change layer visibility/lock/opacity/blending mode/name. Only the provided fields are touched.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| locked | No | ||
| opacity | No | ||
| visible | No | ||
| new_name | No | ||
| blending_mode | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations available, the description itself discloses that the call mutates layer properties and, importantly, that unmentioned properties are left unchanged. It does not address failure behavior (e.g., missing layer name), undoability, or exactly how null values are treated beyond the 'only provided fields' statement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two compact sentences with no filler, and the property list is front-loaded before the important partial-update qualification. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter mutating tool with no annotations and 0% schema description coverage, the description is too thin: it omits how the layer is identified, what values are expected for opacity/blending_mode, and what occurs on missing prerequisites. An agent would need to inspect the schema and sibling tools further to call it safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage and the description only maps field categories; it calls the target field 'name' instead of clarifying that the required name is the lookup key and new_name is the renamed value. It also does not specify accepted opacity ranges or blending_mode vocabulary, so agents cannot infer valid values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a concrete operation ('Change') and enumerates the affected layer properties (visibility, lock, opacity, blending mode, name), which distinguishes it from sibling tools like krita_create_layer or krita_set_active_layer. It does not explicitly name alternatives, but the verb-plus-resource scope is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides no explicit when-to-use or when-not-to-use guidance and does not mention alternatives or preconditions such as the target layer needing to exist. 'Only the provided fields are touched' describes partial-update semantics, but that is a behavioral guarantee rather than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
krita_set_pixelsKrita Set PixelsA
Stamp a PNG file into a layer at (x, y) - the bridge for bringing Aseprite sprites or Retro Diffusion generations into Krita. layer=None targets the active layer.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| layer | No | ||
| image_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With zero annotations, the description must disclose side effects and safety. It states the core action (stamp PNG) and layer targeting, but omits details on overwrite behavior, reversibility, layer existence requirements, or error conditions. This leaves behavioral ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured, with the core action stated first, followed by the bridging context and the layer=None behavior. Every part earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main action and layer targeting, but leaves out coordinate system details and potential failure cases. Since output schema exists, return value explanation is not needed, but the missing coordinate origin and error handling make it slightly incomplete for a tool with no annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds context for x,y as position and for layer's default behavior, but does not explain coordinate origin or image_path format. With 0% schema coverage, the description partially bridges the gap but not fully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb, resource, and coordinate context. It explicitly mentions the bridging role for Aseprite sprites and Retro Diffusion generations, which distinguishes it from sibling tools that read or modify pixels. The layer=None note further clarifies the target layer semantics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly identifies the intended use case (bridging Aseprite/Retro Diffusion content) and provides the layer=None targeting rule. It doesn't list exclusions or alternative tools, but the context is strong enough to guide selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
krita_set_selectionKrita Set SelectionC
Set the global selection to a rectangle, or the whole canvas (all=True).
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| all | No | ||
| width | No | ||
| height | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the all=True mode and the rectangle option, but omits crucial details: whether it replaces the existing selection, how coordinates are interpreted (origin, units), what happens to x/y/width/height when all=True, and any side effects. This is insufficient for a mutation tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, tight sentence that front-loads the action and the key mode distinction. There is no wasted wording, and the structure effectively communicates the two ways to invoke the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given five parameters, zero required fields, no annotations, and an output schema that is not shown, the description leaves significant gaps. It does not cover coordinate system, units, behavior of all=True with other parameters, or the effect on existing selections. An agent could not safely call this tool correctly without additional information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for all five parameters. It only hints at the role of all=True and implies x, y, width, height define a rectangle, but does not explain their individual meanings, defaults, bounds, or interactions. The description adds minimal value beyond the raw schema names and leaves the agent guessing about parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb ('set') and specific resource ('global selection') with two modes: rectangle or whole canvas via all=True. This distinguishes it from read tools like krita_get_selection and clear tools like krita_clear_selection, but it does not explicitly name or differentiate from the closely related krita_modify_selection sibling, so it falls short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives like krita_modify_selection or krita_clear_selection. The description merely states what the tool does, leaving the agent to infer appropriate usage without any explicit context, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
krita_statusKrita StatusA
Check whether Krita is running with the MCP plugin active (forced probe).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the check is a 'forced probe,' implying active interrogation rather than cached state, and specifies the condition being checked (MCP plugin active). However, it does not describe potential side effects, error behavior, or blocking nature, leaving some behavioral ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that is precise and front-loaded. Every word adds value: 'Check' (action), 'Krita running with MCP plugin active' (scope), and 'forced probe' (behavior). No fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter status tool with an output schema present, the description is complete. It conveys the essential purpose and the notable forced-probe behavior. The output schema covers return details, so no further explanation is needed. Error handling is implicit for a read-only status check.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, and the schema has full coverage (vacuously). The baseline is 4, and the description adds no parameter details because none exist. It correctly focuses on the tool's behavior rather than inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action (check) and resource (Krita running with MCP plugin active). It clearly distinguishes from sibling status tools like rd_status and ase_status by naming Krita and the plugin condition. The phrase 'forced probe' adds specificity beyond a generic status check.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context (checking Krita availability before operations) but does not explicitly mention alternatives or when not to use it. No exclusions are given, but the intent is clear from the name and description. Lacks explicit routing to alternative status tools, though none directly overlap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
krita_strokeKrita StrokeB
Paint a stroke through [x, y] points; pressure 0-1.
| Name | Required | Description | Default |
|---|---|---|---|
| points | Yes | ||
| pressure | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosing behavior, but it only states the action and pressure range. It does not mention that the stroke is applied to the active layer using the current brush/color, nor whether the operation is destructive or undoable, so an agent may call it without the needed setup or side-effect awareness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one short sentence with no filler, and the core action is front-loaded. Every word contributes to the tool's meaning, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple and has an output schema, so the description need not explain return values, but it still omits important usage context such as dependence on active layer/current brush/color and the distinction from similar drawing tools. It is adequate for a basic call but not complete for safe, correct selection among sibling Krita drawing operations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning beyond the bare schema by explaining that points are [x, y] coordinate pairs and that pressure is a 0-1 value. However, it does not define the coordinate system, minimum number of points required, or the meaning/units of pressure, so the parameter semantics are only partially clarified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific action, 'Paint a stroke through [x, y] points', which clearly identifies what the tool does and distinguishes it from obvious siblings like krita_fill and krita_draw_shape. It does not explicitly name alternatives, so it misses the strongest form of differentiation, but the meaning is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool over krita_draw_shape, krita_fill, or other drawing tools, and no exclusions or context are provided. The intended usage is only implied by the action word 'paint', which is not enough to guide an agent choosing among multiple painting/drawing tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
krita_undoKrita UndoB
Undo the last action in Krita.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description carries the full burden of behavioral disclosure. It only states the basic action and does not mention that this mutates Krita's document state, what happens when there is nothing to undo, or that subsequent actions typically invalidate the redo stack.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence conveys the entire purpose with no filler or repetition. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless, low-complexity action paired with an output schema, the description is largely sufficient. The only notable omissions are behavioral edge cases like an empty undo stack and explicit routeing relative to krita_redo, but they do not block basic invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and an empty input schema, so the baseline is 4. There are no parameter semantics for the description to clarify, and no compensation is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Undo') and a specific resource ('the last action in Krita'), making the tool's function immediately clear. It does not explicitly distinguish itself from the sibling krita_redo, though the meaning is unambiguous in context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives such as krita_redo, krita_run_action, or krita_clear. There is no mention of undo-stack state, prerequisites, or scenarios where undo would not apply.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
px_capabilitiesPx CapabilitiesA
One-call overview of what this server can currently do: Aseprite (primary subsystem) and Retro Diffusion (conditional) availability, the gating behavior, and how to fetch image content back to the caller.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the disclosure burden. It reveals that the tool is informational, that Retro Diffusion availability is conditional, and that gating behavior is explained. It also tells callers how to fetch image content back. It does not explicitly say 'read-only' or 'no side effects,' but the overview framing and zero-parameter signature make that implicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with a colon-delimited list, front-loading 'One-call overview' to immediately establish purpose. Every phrase earns its place, and the structure makes the covered topics scannable. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema covers return values, and the zero-parameter signature simplifies invocation. However, the description claims to overview 'what this server can currently do' yet only names Aseprite and Retro Diffusion, omitting the Krita subsystem visible among the sibling tools. This creates ambiguity about whether the overview is truly server-wide or scoped to specific subsystems.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema is empty with zero parameters, so there are no arguments to document. The description adds meaning by scoping what the tool returns rather than needing to explain parameters. This is the appropriate baseline for a zero-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific meta-purpose: provide a one-call overview of server capabilities, specifically Aseprite and Retro Diffusion availability, gating behavior, and image-fetching mechanics. This distinguishes it from the operational sibling tools even though no sibling is named. The verb 'overview' plus the resource 'what this server can currently do' is specific and useful.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'one-call overview' phrasing clearly implies use for capability discovery and orientation before selecting an operational tool. However, it never explicitly states when to prefer this over subsystem status tools or when not to use it, and no alternatives are named. Context is clear, but exclusions are absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
px_image_base64Px Image Base64A
Return a PNG file's bytes as a PLAIN TEXT base64 field in the JSON result ({"png_base64": "iVBORw0...", "mime": "image/png", "bytes": N, ...}) instead of an ImageContent block, so the caller can decode and write it themselves (e.g. into a sandboxed outputs directory). Transparency is preserved. max_side=0 keeps the original size; otherwise downscale before encoding.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| max_side | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses the exact JSON shape, that transparency is preserved, that max_side=0 keeps the original size, and that larger values downscale before encoding. It does not mention error behavior or path validation, but for a read-only encoding operation this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences front-load the core output format, then justify why it exists and explain the only non-obvious parameter. Every sentence adds value, with no filler or repetition of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read tool with an output schema, the description covers output representation, purpose, and parameter behavior. The remaining omissions – explicit path documentation and edge-case handling – are minor and unlikely to block correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description compensates by fully explaining max_side semantics ('max_side=0 keeps the original size; otherwise downscale before encoding'). The path parameter is inferable as the PNG file path from the opening clause, though it is not explicitly described.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies a concrete verb ('Return'), resource ('a PNG file's bytes'), and distinguishes the output format ('as a PLAIN TEXT base64 field... instead of an ImageContent block'). This clearly separates it from image-viewing siblings like px_view_image or px_view_images.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'instead of an ImageContent block, so the caller can decode and write it themselves (e.g. into a sandboxed outputs directory)' gives an explicit use case and implicitly tells agents when to prefer this tool over display-oriented alternatives. It conveys both the purpose and the conditional in a compact way.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
px_view_imagePx View ImageB
Return an image file as MCP image content so the caller can SEE it (downscaled to max_side for token sanity), preceded by an info dict.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| max_side | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosing behavior. It does state that the image is downscaled to max_side and returned as MCP image content preceded by an info dict. However, it does not explicitly say the operation is read-only, what the info dict contains, or how errors are handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with a parenthetical, front-loaded with the main purpose and key behavior. There is no fluff, and the essential constraint (downscaling) is included without distraction.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description gives the core return shape (image content + info dict) but not the contents of the info dict, error behavior, or any constraints on the input path. Without an output schema or annotations, these omissions leave some uncertainty for correct invocation and result interpretation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains max_side well ('downscaled to max_side for token sanity'), but path is only implied as the image file source and is not given explicit semantics such as supported formats, file system scope, or required access.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns an image file as MCP image content, with downscaling, so the caller can see it. This distinguishes it from px_image_base64 by emphasizing visual content, but it does not explicitly differentiate it from the sibling px_view_images.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives such as px_view_images or px_image_base64. There are no stated conditions, exclusions, or preferences, leaving the agent to infer usage from the name and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
px_view_imagesPx View ImagesC
Return several image files as MCP image content blocks (animation frames, before/after pairs), each preceded by its info dict.
| Name | Required | Description | Default |
|---|---|---|---|
| paths | Yes | ||
| max_side | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full burden of behavioral disclosure. It does state that it returns image content blocks and info dicts, which is useful, but it says nothing about side effects, permissions, error behavior, or limitations (e.g., maximum number of paths, supported formats). Since it's a read‑only‑looking operation, it could have stated that it does not modify files, but it doesn't. Behavioral transparency is thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two lines, front‑loaded with the core action and output format. It has no filler and is appropriately sized for a simple tool. It loses one point because it omits parameter details, but the dimension is about conciseness, not completeness, and it is compact and well‑structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with only 2 parameters and no output schema, the description should still cover parameter usage, any constraints, and how it relates to siblings. It only hints at the plural nature, doesn't explain what 'paths' or 'max_side' do, and provides no guidance on when to use this vs px_view_image. Given the 0% schema coverage, the description is not enough for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description does not explain either parameter. 'paths' is required but its meaning (file paths? URLs?) is not clarified; 'max_side' (with default 384) is not described as a resizing constraint or any other purpose. The description adds zero value beyond the raw schema, so it fails to compensate for the lack of parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Return') and the resource ('several image files'), and specifies the output format ('MCP image content blocks' with accompanying info dicts). The plural wording differentiates it from the sibling px_view_image, though it doesn't explicitly name the singular alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'several image files' implies this is for multiple images, which distinguishes it from the singular px_view_image. However, it doesn't explicitly say 'use this for multiple images and px_view_image for a single one,' nor does it mention any contexts where it shouldn't be used. The usage is implied, not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rd_api_img2animRd Api Img2AnimB
Retrodiffusion.ai cloud API: image to animation. Returns frame PNGs plus an assembled GIF (needs an API key).
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | ||
| style | No | pixel art | |
| width | No | ||
| height | No | ||
| prompt | Yes | ||
| api_key | No | ||
| image_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the external cloud dependency, the need for an API key, and the output artifact (frame PNGs + GIF), which are non-obvious. It does not mention network failure modes, cost/rate limits, or whether image_path is local or remote, so disclosure is partial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single 17-word sentence with no filler; the service identity, conversion, outputs, and auth requirement appear before any details. There is nothing to cut or restructure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Seven parameters, a cloud dependency, and no schema descriptions demand more than a single sentence. The description omits input path semantics (local vs URL), output frame count/duration, and parameter roles, making it insufficient for reliable invocation despite the output schema existing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description needed to clarify parameters but only indirectly implies image_path/prompt roles via 'image to animation' and notes api_key. It does not explain style, width/height, seed, or how prompts drive animation, leaving the agent to infer from param names and defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the operation as image-to-animation conversion via Retrodiffusion.ai and specifies the output ('frame PNGs plus an assembled GIF'). It lacks an explicit verb and does not name sibling tools for contrast, but the cloud-API and image-to-animation framing distinguish it from rd_generate and rd_api_txt2anim.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to choose this cloud API over local alternatives like rd_img2img or rd_generate, nor any exclusions. The only usage-related note is the API-key requirement, which is a prerequisite, not a selection criterion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rd_api_img2imgRd Api Img2ImgC
Retrodiffusion.ai cloud API: image to image (needs an API key).
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | ||
| rembg | No | ||
| style | No | pixel art | |
| width | No | ||
| height | No | ||
| prompt | Yes | ||
| tile_x | No | ||
| tile_y | No | ||
| api_key | No | ||
| strength | No | ||
| save_grid | No | ||
| generations | No | ||
| image_paths | Yes | ||
| palette_url | No | ||
| return_image | No | ||
| palette_files | No | ||
| save_progress | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does state that this is a cloud API and that an API key is needed, which is useful contextual information. However, it does not describe whether it writes files, returns images, requires network access, incurs costs, or what happens on failure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler, making it concise in form. However, it is under-specified for a tool with 17 parameters and no other structured documentation. It is short rather than appropriately sized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 17-parameter API tool with no output schema, no annotations, and 0% schema description coverage, this one-line description is completely inadequate. An agent cannot determine required input semantics, output behavior, or how to use the tool correctly. The only useful fact is the API-key requirement.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds no meaning for the 17 parameters. The only hinted behavior, needing an API key, merely names the api_key parameter already present in the schema. None of the core parameters such as image_paths, prompt, strength, width, height, or generations are explained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as a Retrodiffusion.ai cloud API operation and specifies the image-to-image task. It also notes the API-key requirement, which helps distinguish it from local or non-API image tools. It lacks an explicit verb like 'generates' or 'transforms,' but the purpose is still reasonably clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to prefer this tool over alternatives such as rd_api_txt2img, rd_img2img, or rd_cn_img2img. It mentions that an API key is required, but does not explain prerequisites, expected input format, or when the cloud API should be used instead of local generation tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rd_api_txt2animRd Api Txt2AnimA
Retrodiffusion.ai cloud API: text to animation. Returns frame PNGs plus an assembled GIF (needs an API key).
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | ||
| style | No | pixel art | |
| width | No | ||
| height | No | ||
| prompt | Yes | ||
| api_key | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the transparency burden. It discloses the output format (frame PNGs plus an assembled GIF) and the prerequisite of an API key. However, it does not mention any side effects, safety profile, rate limits, or failure modes, leaving the behavioral picture incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with zero filler. The core action is front-loaded ('text to animation'), followed by output details and the API key requirement. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the essential output and API key requirement, but for a 6-parameter tool with zero schema coverage and no annotations, it leaves major gaps. The agent cannot infer how to supply parameters correctly. The presence of an output schema helps with return values, but parameter semantics remain unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% (no parameter descriptions in schema), so the description must compensate by explaining parameters. It does not mention prompt, style, seed, width, height, or api_key at all. The agent receives no guidance on what these parameters mean or how to fill them correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('text to animation') and resource ('Retrodiffusion.ai cloud API'), clearly distinguishing it from siblings like rd_api_txt2img (text to image) and rd_api_img2anim (image to animation). The purpose is unambiguous and unique among the many animation and generation tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it: for generating animations from text via the Retrodiffusion API. It does not explicitly name alternatives or state exclusions, but the purpose itself makes the usage context clear. The 'needs an API key' note is a usage constraint but not a comparison to other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rd_api_txt2imgRd Api Txt2ImgC
Retrodiffusion.ai cloud API: text to image (needs an API key: arg, RD_API_KEY env, or the extension's settings rdapikey).
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | ||
| rembg | No | ||
| style | No | pixel art | |
| width | No | ||
| height | No | ||
| prompt | Yes | ||
| tile_x | No | ||
| tile_y | No | ||
| api_key | No | ||
| strength | No | ||
| save_grid | No | ||
| generations | No | ||
| palette_url | No | ||
| return_image | No | ||
| palette_files | No | ||
| save_progress | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It usefully reveals that this is a remote cloud API call and that an API key is required, but it does not mention potential costs, rate limits, network dependence, output format, or side effects such as saving images.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. It states the core action, the service context, and the critical authentication requirement efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 16 parameters, no output schema, no annotations, and no parameter documentation, the description is materially incomplete. It provides some useful context about the cloud API and auth, but an agent cannot confidently determine parameter meanings or expected return behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description does not compensate. It mentions API key sources, which helps slightly for the api_key parameter, but none of the 16 parameters—prompt, style, strength, rembg, save_grid, palette_url, etc.—are explained, leaving an agent with little guidance for correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs text-to-image generation via the Retrodiffusion.ai cloud API. It is clear enough to distinguish from image-to-image tools like rd_api_img2img, though it does not explicitly differentiate from similar text-to-image siblings like rd_cn_txt2img or rd_generate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives such as rd_generate, rd_cn_txt2img, or other local generation tools. The only operational note is the API key requirement, which is an authentication detail rather than usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rd_benchmarkRd BenchmarkC
Run the backend benchmark (throughput/consistency measurement).
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | ||
| pixelvae | No | ||
| time_limit | No | ||
| error_range | No | ||
| max_test_size | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only says 'run' and 'throughput/consistency measurement', omitting side effects, whether it mutates backend state, or whether it requires a running backend. This is a significant transparency gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no fluff, and the parenthetical adds a helpful clarification. It is adequately concise, though it largely restates the title 'Rd Benchmark'.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 5 parameters and no annotations, the description leaves too much unsaid: parameter meanings, prerequisites, and what the benchmark does to the backend. The output schema may help, but the description alone is far from sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for all 5 parameters, and the description does not explain any of them. It adds no meaning beyond the parameter names themselves, so an agent cannot understand seed, pixelvae, time_limit, error_range, or max_test_size.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Run the backend benchmark (throughput/consistency measurement)' clearly states the verb, resource, and what the benchmark measures. No sibling tool claims to run a benchmark, so it is unambiguous and distinguishes itself from the other rd_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to invoke this tool, whether the backend must already be running, or how it relates to rd_start_backend and rd_stop_backend. No alternatives or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rd_cn_img2imgRd Cn Img2ImgA
ControlNet Image to Image: same as rd_cn_txt2img plus a source image (appended after the ControlNet slots, resized to 512 like the UI) and strength 0-100.
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | ||
| swap | No | ||
| loras | No | ||
| model | No | model.pxlm | |
| rembg | No | ||
| steps | No | ||
| width | No | ||
| height | No | ||
| prompt | Yes | ||
| light_x | No | ||
| light_y | No | ||
| light_z | No | ||
| comp_hue | No | ||
| negative | No | ||
| pixelvae | No | ||
| strength | No | ||
| use_ella | No | ||
| adherence | No | ||
| cfg_scale | No | ||
| comp_tint | No | ||
| save_grid | No | ||
| image_path | Yes | ||
| pixel_size | No | ||
| controlnets | Yes | ||
| generations | No | ||
| light_apply | No | ||
| palette_url | No | ||
| size_preset | No | ||
| comp_outline | No | ||
| post_process | No | ||
| return_image | No | ||
| add_to_prompt | No | ||
| comp_contrast | No | ||
| palette_files | No | ||
| prompt_tuning | No | ||
| save_progress | No | ||
| control_images | Yes | ||
| comp_brightness | No | ||
| comp_saturation | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does add useful behavior: the source image is appended after ControlNet slots and resized to 512, and strength is bounded 0-100. However, it says nothing about return values, output behavior, or side effects, so the disclosure is incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences front-load the purpose and state the exact differences with no filler. The parenthetical packs useful behavior without bloating the text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is complex (39 parameters, 4 required, no output schema, no annotations), and the description only covers the delta from rd_cn_txt2img. An agent would still lack the shared parameter semantics, expected output, and invocation defaults needed to call it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds meaning for the delta parameters (source image, appended after ControlNet slots, strength 0-100) and references rd_cn_txt2img for the rest. Most of the 39 parameters still lack direct explanation, but the cross-reference and delta details provide partial coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names the operation as "ControlNet Image to Image" and sharpens it by pointing to rd_cn_txt2img plus a source image and strength parameter. This directly distinguishes it from the most similar sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes clear this variant is appropriate when a source image should drive ControlNet generation, and implicitly points to rd_cn_txt2img when no source image is needed. It does not spell out exclusions versus other img2img or API siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rd_cn_txt2imgRd Cn Txt2ImgC
ControlNet Text to Image.
controlnets: list of {model: Composition|Depth|Pose|Sketch|Tile, weight: 0-100, process: bool (preprocess input), enabled: bool}; control_images: parallel list of input PNG paths (None for disabled slots). Palette constraint via palette_files (PNG palettes) or palette_url. Uses explicit steps (no quality).
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | ||
| swap | No | ||
| loras | No | ||
| model | No | model.pxlm | |
| rembg | No | ||
| steps | No | ||
| width | No | ||
| height | No | ||
| prompt | Yes | ||
| light_x | No | ||
| light_y | No | ||
| light_z | No | ||
| comp_hue | No | ||
| negative | No | ||
| pixelvae | No | ||
| use_ella | No | ||
| adherence | No | ||
| cfg_scale | No | ||
| comp_tint | No | ||
| save_grid | No | ||
| pixel_size | No | ||
| controlnets | Yes | ||
| generations | No | ||
| light_apply | No | ||
| palette_url | No | ||
| size_preset | No | ||
| comp_outline | No | ||
| post_process | No | ||
| return_image | No | ||
| add_to_prompt | No | ||
| comp_contrast | No | ||
| palette_files | No | ||
| prompt_tuning | No | ||
| save_progress | No | ||
| control_images | Yes | ||
| comp_brightness | No | ||
| comp_saturation | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It adds useful behavioral context like preprocessing via 'process: bool', palette constraints via palette_files/palette_url, and 'Uses explicit steps (no quality)'. However, it does not disclose what the tool returns, whether images are saved, or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core purpose. It packs useful parameter semantics into a small amount of text, though the dense semicolon-separated formatting is slightly hard to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a complex 37-parameter tool with no output schema and no annotations, but the description covers only a fraction of the parameters and no output or return behavior. It leaves many configuration semantics unexplained and does not clarify how multiple conditioning mechanisms interact.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It gives meaningful semantics for the key required parameters 'controlnets' and 'control_images', including model enum values, weight range, and parallel PNG paths. However, 37 parameters exist and the vast majority (prompt, seed, loras, steps, width, height, light, negative, etc.) receive no explanation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool performs 'ControlNet Text to Image', which clearly identifies the resource and operation: generating an image from text with ControlNet conditioning. It is clear enough to distinguish from img2img siblings like rd_cn_img2img, but it does not explicitly reference or differentiate against sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as rd_api_txt2img, rd_cn_img2img, or rd_img2img. It explains some parameter mechanics but does not state prerequisites, exclusions, or the intended scenario 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.
rd_color_transferRd Color TransferC
Color Style Transfer: recolor images to match a reference image's palette.
strict enforces the exact reference colors.
| Name | Required | Description | Default |
|---|---|---|---|
| strict | No | ||
| image_paths | Yes | ||
| reference_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only mentions that 'strict enforces the exact reference colors,' but does not state whether original files are modified, what the output is, or any side effects. This is a significant transparency gap for an image-processing tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short and front-loads the main purpose in the first sentence. The second sentence adds some parameter semantics. It is efficient, though slightly redundant with the title and too terse overall.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although the tool is relatively simple with three parameters and an output schema exists, the description lacks essential operational context: how inputs are provided, what happens to the source images, and when strict should be enabled. Without annotations, an agent cannot fully determine correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds meaning for the 'strict' parameter, but image_paths and reference_path are left completely unexplained beyond their names, with no guidance on path formats, multiple images, or how the reference is applied.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action: recolor images to match a reference image's palette. This clearly distinguishes the tool from many siblings that generate, quantize, or edit images, though it does not explicitly name any sibling alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance is provided. The description does not compare this tool with similar color/palette siblings like rd_palettize, rd_quantize, or ase_replace_color, leaving selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rd_generateRd GenerateA
Text to Image with the local Retro Diffusion pixel-art model.
Output pixels = width//pixel_size (or a size_preset like 64x64/160x144, swap=True transposes). Internally normalized onto RD's 8px latent grid so small sprites never degrade. quality ~1.6-6 drives steps; cfg_scale is the prompt scale; adherence 0-5 trades ELLA/CLIP guidance. Modifiers: comp_* (hue/tint/brightness/saturation/contrast/outline sliders), light_* (directional lighting leco). Rendering options: pixelvae (fast pixel decoder), rembg, post_process (auto reduce colors), tile_x/tile_y. Display: save_grid composes one grid PNG; save_progress stores intermediate previews. preset + overrides replays a saved preset (other args ignored).
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | ||
| swap | No | ||
| loras | No | ||
| model | No | model.pxlm | |
| rembg | No | ||
| width | No | ||
| height | No | ||
| preset | No | ||
| prompt | No | ||
| tile_x | No | ||
| tile_y | No | ||
| light_x | No | ||
| light_y | No | ||
| light_z | No | ||
| quality | No | ||
| comp_hue | No | ||
| negative | No | ||
| pixelvae | No | ||
| use_ella | No | ||
| adherence | No | ||
| cfg_scale | No | ||
| comp_tint | No | ||
| overrides | No | ||
| save_grid | No | ||
| pixel_size | No | ||
| generations | No | ||
| light_apply | No | ||
| size_preset | No | ||
| comp_outline | No | ||
| post_process | No | ||
| return_image | No | ||
| add_to_prompt | No | ||
| comp_contrast | No | ||
| prompt_tuning | No | ||
| save_progress | No | ||
| comp_brightness | No | ||
| comp_saturation | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and discloses substantial behavior: the pixel output formula, 8px latent grid normalization, quality→steps mapping, cfg_scale/adherence semantics, and the 'other args ignored' preset override behavior. It is dense but genuinely informative; some jargon ('leco', 'ELLA/CLIP') is opaque.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence carries technical payload and the content is clustered by topic (formula, sampling, modifiers, rendering, display, preset). It is a dense single paragraph with no visual breaks and heavy jargon, so readability is sacrificed, but no sentence is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 37 parameters, zero annotations, zero schema descriptions, and no output schema, the description covers parameter behavior well but leaves the return contract unspecified (no output schema means the agent must infer what the tool returns; return_image is never explained) and omits backend prerequisites (rd_start_backend is a sibling). Significant, but the dense parameter coverage lifts it above minimal.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it does: it maps meaning onto quality, cfg_scale, adherence, use_ella, size_preset, swap, pixel_size, comp_*, light_*, pixelvae, rembg, post_process, tile_x/tile_y, save_grid, save_progress, preset and overrides. A few parameters (loras, return_image, prompt_tuning) remain unexplained, but the bulk of the 37-parameter surface gets semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Begins with a specific verb-resource pair ('Text to Image with the local Retro Diffusion pixel-art model'). The 'local' qualifier separates it from rd_api_txt2img, but it does not explicitly name sibling alternatives, leaving the boundary with rd_cn_txt2img and rd_img2img to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus the many generation siblings (rd_api_txt2img, rd_img2img, rd_cn_txt2img, rd_texture_gen). The word 'local' implies an offline preference, but there are no explicit when/when-not conditions or alternative names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rd_img2imgRd Img2ImgC
Image to Image: refine/repaint existing PNGs. strength 0-100.
Inputs are resized to max side 512 like the UI does. Same advanced options as rd_generate.
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | ||
| swap | No | ||
| loras | No | ||
| model | No | model.pxlm | |
| rembg | No | ||
| width | No | ||
| height | No | ||
| prompt | Yes | ||
| tile_x | No | ||
| tile_y | No | ||
| light_x | No | ||
| light_y | No | ||
| light_z | No | ||
| quality | No | ||
| comp_hue | No | ||
| negative | No | ||
| pixelvae | No | ||
| strength | No | ||
| use_ella | No | ||
| adherence | No | ||
| cfg_scale | No | ||
| comp_tint | No | ||
| save_grid | No | ||
| pixel_size | No | ||
| generations | No | ||
| image_paths | Yes | ||
| light_apply | No | ||
| size_preset | No | ||
| comp_outline | No | ||
| post_process | No | ||
| return_image | No | ||
| add_to_prompt | No | ||
| comp_contrast | No | ||
| prompt_tuning | No | ||
| save_progress | No | ||
| comp_brightness | No | ||
| comp_saturation | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must disclose behavioral traits. It does mention that inputs are resized to max side 512 and strength range 0-100, which is useful. However, it says nothing about output behavior, whether the operation is destructive to input files, return format, or side effects. The reference to 'same advanced options as rd_generate' is a pointer rather than a disclosure. Significant gaps remain.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences, but it is under-specified. It front-loads the core purpose and adds the resizing note, yet it relies on referencing another tool for advanced options. While it avoids verbosity, the brevity comes at the cost of essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 37 parameters, no annotations, and no output schema, this description is severely incomplete. It lacks information about expected outputs, error cases, how it interacts with other tools, and the meaning of most parameters. The agent would be unable to make an informed call without extensive further exploration.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate by explaining the 37 parameters. It only clarifies the 'strength' parameter (0-100) and notes resizing, but it does not explain any other parameter such as prompt, seed, loras, model, etc. The vague 'same advanced options as rd_generate' does not provide semantic meaning for the current tool's parameters. This is a major deficiency.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as an image-to-image operation for refining/repainting existing PNGs, with a specific verb and resource. It also mentions the strength range and resizing behavior, which adds specificity. However, it does not explicitly differentiate from similar siblings like rd_api_img2img or rd_cn_img2img, though the name and 'Image to Image' label help.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage on existing PNGs ('refine/repaint existing PNGs'), but it never explicitly states when to prefer this tool over rd_generate, rd_api_img2img, or other image-to-image variants. There are no exclusions or alternative conditions mentioned, leaving the agent to infer the intended use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rd_kcentroidRd KcentroidB
K-Centroid Resize: downscale images with k-means palette preservation (centroids = target colors), optionally re-adding an outline.
| Name | Required | Description | Default |
|---|---|---|---|
| width | No | ||
| height | No | ||
| outline | No | ||
| centroids | No | ||
| image_paths | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It explains the algorithmic approach and the optional outline behavior, but does not mention side effects, file mutation, output format, or constraints beyond what the schema provides.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single tight sentence with no filler and the key method is front-loaded. Slight redundancy with the tool name 'K-Centroid Resize' keeps it from being perfect.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with five parameters and an output schema, the description covers the core algorithm but omits important invocation context like whether input files are modified in place, what output is produced, and when this method is preferable to similar tools. It is minimally viable but not rich.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It usefully clarifies 'centroids = target colors' and names the outline option, but does not elaborate on width/height semantics or the image_paths parameter, which remain dependent on naming conventions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the action as downscaling images and specifies the unique k-means palette preservation method. It distinguishes this tool from generic resize operations like rd_neural_resize or ase_scale_sprite, though it does not explicitly name those alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 the many similar image-resizing or palette-related sibling tools. The intended context must be inferred from the description and parameter names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rd_list_lorasRd List LorasA
List available Retro Diffusion style LoRAs (.pxlm) with their alias keys.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the transparency burden. The verb 'List' clearly signals a read-only, non-destructive operation, and specifying '.pxlm' and 'alias keys' tells the agent what data to expect. It does not discuss backend requirements, but that is not critical for a simple list tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, tightly written sentence that front-loads the core purpose and includes the file extension and alias-key detail. There is no filler or redundant phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless listing tool with an output schema, this description is complete: it states what is listed, the domain-specific file format, and the key output detail (alias keys). The existing output schema covers the return structure, so no further return-value explanation is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is no parameter semantics to document. The baseline for a zero-parameter tool is 4, and the description appropriately focuses on the output rather than inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'List available Retro Diffusion style LoRAs (.pxlm)' and adds the output detail 'with their alias keys.' This clearly differentiates it from sibling tools like rd_list_models and rd_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The purpose implies the usage case (when you need the available style LoRAs and their aliases), but there is no explicit guidance about when not to use it or how it relates to alternatives such as rd_list_models. This is adequate but leaves the selection logic to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rd_list_modelsRd List ModelsA
List selectable base models, ControlNet models, texture tiling modes and dimension presets.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations provided, so the description carries the burden of behavioral disclosure. The description indicates it is a read-only query, which is inferred from the verb 'List'. However, it does not disclose whether the list is cached, whether it requires a running backend, or whether it reflects the current configuration versus defaults. For a listing tool with no side effects, the inference is adequate, but more detail would help.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is concise and front-loaded with the action 'List' and the exact items covered. It wastes no words and conveys the scope efficiently. It is appropriately sized for a zero-parameter discoverability tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, clearly scoped list), the description is sufficient. The output schema exists, so the description does not need to explain return values. The main missing context is when to use it relative to alternatives, but the specificity of the listed item types mitigates that. For a discovery tool, the description is practically complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, and schema description coverage is 100% by default. The description does not add any parameter semantics because there are none. However, it does not explicitly state that no parameters are required, which could lead an agent to wonder about optional parameters. A sentence like 'Takes no arguments' would be clearer. Thus, the description adds minimal value beyond the schema in this dimension.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists selectable base models, ControlNet models, texture tiling modes, and dimension presets. It distinguishes itself from sibling listing tools like rd_list_loras by specifying the exact categories of items it lists. However, it does not explicitly mention the rd_ namespace context, but that is implied by the resource names.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description tells the agent when to use this tool: when the agent needs to know available base models, ControlNet models, texture tiling modes, or dimension presets. Since it takes no parameters, it is a discovery tool. It does not explicitly state when NOT to use it or mention alternatives, but the resource list is specific enough that confusion with other list tools is unlikely. It does not mention that this is a preliminary step, but the implication is clear for selection tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rd_neural_detailRd Neural DetailC
Neural Detail: add or remove detail (detail 0-100) on existing pixel art.
| Name | Required | Description | Default |
|---|---|---|---|
| blip | No | ||
| seed | No | ||
| loras | No | ||
| model | No | model.pxlm | |
| steps | No | ||
| width | No | ||
| detail | No | ||
| height | No | ||
| pixelvae | No | ||
| use_ella | No | ||
| adherence | No | ||
| cfg_scale | No | ||
| color_map | No | ||
| save_grid | No | ||
| image_path | Yes | ||
| pixel_size | No | ||
| description | No | ||
| generations | No | ||
| post_process | No | ||
| return_image | No | ||
| add_to_prompt | No | ||
| prompt_tuning | No | ||
| save_progress | No | ||
| negative_description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only states that it adds/removes detail, but does not specify whether the image is modified in place, if a backend is required, what the return value is, or any side effects. This is inadequate for a complex tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the core purpose. It avoids unnecessary words, though its brevity sacrifices important contextual information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 24 parameters and no output schema, yet the description covers only the core function and one parameter. It omits essential details about configuration, expected output, dependencies on the backend, and how it differs from other neural operations. This is highly incomplete for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the undocumented parameters. It only explains the 'detail' parameter (with a range), while the other 23 parameters (loras, adherence, cfg_scale, etc.) remain unexplained in both the schema and description, leaving the agent guessing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: to add or remove detail (0-100) on existing pixel art. It names the specific action (add/remove), the resource (existing pixel art), and the key parameter with its range, distinguishing it from sibling neural tools like pixelate or resize.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives such as rd_neural_pixelate or rd_img2img. It does not mention any conditions, prerequisites (e.g., backend running), or exclusions, leaving the agent to infer the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rd_neural_pixelateRd Neural PixelateB
Neural Pixelate: convert an image (photo/render) into pixel art.
blip auto-captions the input; color_map preserves the source palette.
| Name | Required | Description | Default |
|---|---|---|---|
| blip | No | ||
| seed | No | ||
| loras | No | ||
| model | No | model.pxlm | |
| steps | No | ||
| width | No | ||
| height | No | ||
| pixelvae | No | ||
| use_ella | No | ||
| adherence | No | ||
| cfg_scale | No | ||
| color_map | No | ||
| save_grid | No | ||
| image_path | Yes | ||
| pixel_size | No | ||
| description | No | ||
| generations | No | ||
| post_process | No | ||
| return_image | No | ||
| add_to_prompt | No | ||
| prompt_tuning | No | ||
| save_progress | No | ||
| negative_description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description carries the full burden. It adds two useful behavioral details: blip auto-captions the input and color_map preserves the source palette. But it does not disclose output format, file saving behavior, whether the original is modified, or any side effects, leaving major behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded, with the core purpose in the first sentence and a compact second sentence adding parameter-relevant context. The title restatement 'Neural Pixelate:' is slightly redundant but does not add meaningful waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex 23-parameter tool with no output schema and no annotations, this description is severely incomplete. It does not explain the required image_path parameter, what the tool returns, how to request an image back, or what each processing parameter controls.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 23 parameters and 0% schema description coverage, the description must compensate, but it only clarifies two parameters: blip and color_map. Core parameters like image_path, pixel_size, width, height, steps, and generations remain semantically unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb and outcome: 'convert an image (photo/render) into pixel art.' This is a unique purpose among the numerous neural/art tools and leaves no doubt about what the tool produces.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case — converting a photo or render to pixel art — by naming the source and target. However, it does not explicitly contrast this with alternatives like rd_neural_transform, rd_quantize, or rd_palettize, nor does it state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rd_neural_resizeRd Neural ResizeC
Neural Resize: change pixel density/resolution of pixel art while keeping detail coherent.
| Name | Required | Description | Default |
|---|---|---|---|
| blip | No | ||
| seed | No | ||
| loras | No | ||
| model | No | model.pxlm | |
| steps | No | ||
| width | No | ||
| height | No | ||
| pixelvae | No | ||
| use_ella | No | ||
| adherence | No | ||
| cfg_scale | No | ||
| color_map | No | ||
| save_grid | No | ||
| image_path | Yes | ||
| pixel_size | No | ||
| description | No | ||
| generations | No | ||
| post_process | No | ||
| return_image | No | ||
| add_to_prompt | No | ||
| prompt_tuning | No | ||
| save_progress | No | ||
| negative_description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the outcome ('keeping detail coherent'), but does not reveal whether the operation is destructive to the source, how long it might take, what output format is returned, or any side effects (e.g., writing files, requiring a backend). This is a significant gap for a tool with 23 parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no fluff, which is concise. However, it is so minimal that it borders on under-specification rather than elegant conciseness. It lacks structure such as sections or usage examples, and for a tool this complex, a bit more detail would be warranted. It front-loads the purpose but does not earn its place by adding utility beyond the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 23 parameters, no output schema, and no annotations, the description is drastically incomplete. It does not explain what the parameters do, what the output looks like, or any caveats. An agent cannot reasonably invoke this tool correctly with only the description and schema, as the semantics of most parameters remain opaque.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 23 parameters with 0% description coverage, meaning the schema only provides names and defaults. The description does not explain any parameter meanings, such as width, height, pixel_size, steps, or adherence. It adds zero value to parameter understanding, leaving the agent to guess what each controls.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's core function: changing pixel density/resolution of pixel art while preserving detail. It names a specific verb ('resize') and a resource (pixel art), and the phrase 'neural' hints at the method. However, it does not differentiate from sibling tools like rd_neural_pixelate or rd_neural_detail, which also deal with pixel-art processing, so it misses the distinguishing nuance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives. It does not mention when to prefer rd_neural_resize over rd_neural_pixelate, rd_neural_detail, or ase_scale_sprite, nor does it state any prerequisites (e.g., backend running, image loaded). The agent is left to infer usage from the name and context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rd_neural_transformRd Neural TransformC
Neural Transform: re-imagine the input image in a new style/pose from a prompt.
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | ||
| loras | No | ||
| model | No | model.pxlm | |
| steps | No | ||
| width | No | ||
| height | No | ||
| prompt | Yes | ||
| negative | No | ||
| pixelvae | No | ||
| use_ella | No | ||
| adherence | No | ||
| cfg_scale | No | ||
| save_grid | No | ||
| image_path | Yes | ||
| pixel_size | No | ||
| generations | No | ||
| post_process | No | ||
| return_image | No | ||
| add_to_prompt | No | ||
| prompt_tuning | No | ||
| save_progress | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the transformation intent and does not explain output behavior, nondeterminism, resource usage, file side effects, or failure modes. This is a material gap for a complex image-generation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence with no filler and front-loads the core purpose. However, the brevity comes at the cost of essential detail, so it is not ideal for a tool of this complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 21 parameters, no annotations, no schema descriptions, and no output schema, the description is far too thin. It does not explain return behavior, parameter roles, typical usage, or effects on the input image, leaving an agent to guess on nearly every axis needed to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description references only the input image and prompt concept. The other 19 parameters—seed, loras, model, steps, width, height, negative, adherence, cfg_scale, generations, return_image, and more—are left completely unexplained, so the agent cannot infer how to set them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear operation: re-imagine an input image in a new style/pose from a prompt. This is specific enough to distinguish it from sibling tools like rd_neural_pixelate, rd_neural_resize, and rd_neural_detail, though it never names alternatives explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus related tools such as rd_img2img, rd_cn_img2img, or rd_neural_detail. The single sentence implies a prompt-driven restyling use case, but gives no exclusions, prerequisites, or alternative-selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rd_paletteRd PaletteA
Generate a color palette with Retro Diffusion's palette model.
Returns the swatch image path plus extracted hex colors (row-major, deduplicated).
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | ||
| colors | No | ||
| prompt | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries the burden. It mentions the model and output format (swatch image path + hex colors), which is helpful, but does not disclose any side effects, processing time, or whether it requires the backend to be running. Typical for generation tools, but could be more transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the main action and a concise return description. No filler words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the essential purpose and return format. The output schema exists (though not shown in detail), which may explain return values. Minor gaps remain: no mention of backend prerequisites or parameter nuances, but overall adequate for a generation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It does not explain 'seed' or 'colors' meaning beyond the schema's defaults. However, the core parameter 'prompt' is self-explanatory, and the output description hints at how colors are used. Still, for a 3-param tool, more parameter detail would be beneficial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool's purpose clearly: generating a color palette with Retro Diffusion's palette model and returning the swatch image path plus hex colors. It distinguishes from siblings like rd_palettize and rd_quantize by specifying the model and output.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool (when you need a palette generated by the palette model), but does not explicitly state when NOT to use it or mention alternatives like rd_palettize or ase_get_palette. Slight gap, but the purpose is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rd_palettizeRd PalettizeB
Palettize: reduce images to a palette (file/URL constrained or automatic).
dither: None | Bayer 2x2 | Bayer 4x4 | Bayer 8x8; dither_strength, denoise, smoothness, intensity are 0-100 sliders mirroring the UI.
| Name | Required | Description | Default |
|---|---|---|---|
| colors | No | ||
| dither | No | None | |
| denoise | No | ||
| intensity | No | ||
| smoothness | No | ||
| image_paths | Yes | ||
| palette_url | No | ||
| palette_files | No | ||
| dither_strength | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that dither options are None/Bayer 2x2/4x4/8x8 and that several parameters are 0-100 sliders mirroring the UI, which adds useful behavioral context. However, it doesn't disclose side effects (e.g., whether input files are modified or new files created), output format, or failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core action. The second sentence efficiently packs parameter semantics. It could be slightly more structured, but it earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 9 parameters, no annotations, and an output schema, but the description leaves key gaps: it doesn't explain what the output is (despite output schema existing), how palette_url and palette_files interact, or whether the operation is destructive. For a tool with this many parameters and no annotations, more context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does explain dither, dither_strength, denoise, smoothness, and intensity ranges, but it omits meaning for colors, image_paths, palette_url, and palette_files. The phrase 'file/URL constrained or automatic' hints at palette_url/palette_files but doesn't clarify their relationship or required format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'reduce images to a palette' with file/URL constrained or automatic palette options. This clearly distinguishes it from siblings like rd_quantize or rd_palette, though it doesn't explicitly name them. The title 'Rd Palettize' is expanded with a concrete action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by mentioning 'file/URL constrained or automatic' palette modes, which tells the agent when palette_url/palette_files would be relevant. However, it doesn't explicitly state when to prefer this over rd_quantize, rd_palette, or ase_quantize_to_palette, nor does it provide exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rd_preset_applyRd Preset ApplyA
Return a saved preset's settings so they can be passed to rd_generate.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations exist (must bootstrap behavioral info into the description itself. discloses it is purely a retrieval operation returning settings for downstream use without side effects, implying non-destructive behavior and suitability for passing outputs onward—important distinguishing info absent from annotations which could otherwise imply mutation due to 'apply', giving clarity beyond schema alone. Does not mention error cases when the preset is missing or requires backend running, slight gap preventing a higher score; nevertheless transparency beyond annotations is solid given none exist. No contradiction with annotations because none exist, so annotation_contradiction remains false).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single crisp sentence packs core idea upfront mentioning both retrieval intent and how returned values are consumed downstream. Zero filler words maximize communicative efficiency without sacrificing clarity needed by agents scanning quickly among dozens peers on roster list provided earlier in sibling-tools enumeration section where brevity matters most in crowded workflows spanning many toolsets branching across domains beyond just RD family alone herewith concise enough indeed earning top marks on economy-of-expression frontlines overall assessment wise when weighed against competitors concurrently visible thereupon roster listing dozens upon dozens fellow APIs simultaneously accessible via dropdown menus typical inside modern-day assistants' UIs constraints requiring rapid-fire disambiguation capabilities inherent within LLM-driven orchestration loops driving these sorts high-throughput automation pipelines prevalent nowadays across industry production environments similarly tight spacespaces demanding exactly such stripped-down yet highly load-bearing language constructs), so yes definitely earns highest echelon recognition under this metric category unquestionably so forthwith unequivocally affirmed unambiguously yes absolutely certain surefire slam dunk undeniable irrefutable beyond shadow of a doubt guaranteed certified PERF five-star caliber masterpiece-level concision exemplar setting bar exceedingly high benchmark wise globally speaking universally agreed consensus verdict unanimity reached regarding scoring perfection hereon endgame state finality accomplished mission-complete status quo maintained thank you very much goodnight kiss, folks!).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given complexity is low (single optionalなし、必須なのは nameというパラメータのみで、output schema has been declared trueならば戻り値の詳細がschemaで説明されるためdescription側での再説明は必須ではないが、それでもagentが正しく使用するために必要なのは、このツールが保存済みpreset settingsを取得して返すこと、そしてその結果をrd_generateに渡すことだけであり、descriptionはそれを完璧に伝えているのである。slight gap remains concerning behavior when requested preset name does not exist or hasn't been saved via rd_preset_save beforehandwhich might matter inpractice; otherwise completeness adequate fortask at hand given schema availability covers return shape adequately enough overall assessment wise so yeah pretty solid job overall hereabouts within this dimension sphere-of-influence zone, yeah realism prevails throughout entirety thereof conclusively speaking Case Closed!} Evidence for needingbackend alive omitted but minor givenlow-risk nature of retrieval operation itself thus earning respectable high-four-point-seven-five mark practically speaking rounding down conservatively though since rigorous rubric demands integer outputs only accordingly final tally lands squarely onto FOUR territory comfortably albeit barely escaping four-and-half territory rounding rules dictate nearest whole number upward only when exceeding midpoint criteria; alas humblepie must prevail yielding FOUR exactly sans regrets remorse whatsoever nonepending further notice — FINAL ANSWER: FOUR. Goodbye crackers are served.🍪🍪🍪
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is zero percent yet there is exactly one parameter named 'name' whose type alone conveys little beyond requiring a string identifier for locating a preset saved earlier—description adds meaning by implying lookup semantics tied to persisted settings retrieval linked to generation pipelines;therefore adequately compensates for absent schema-level textual help beyond stating它是一个字符串identifier—still some ambiguity remains around uniqueness/existence semantics preventing perfect alignment with richer designs featuring validation rules or examples from enum hints unavailable here].
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb-driven purpose: "Return a saved preset's settings" specifying exactly what it retrieves and identifies its role within a larger generation workflow by mentioning that output feeds into rd_generate. This distinguishes it from sibling preset operations like rd_preset_save, rd_preset_delete, and rd_preset_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied through mentioning integration with rd_generate — suggesting an agent should call this when needing reusable settings fetched by preset name. It lacks explicit exclusions or mention of when NOT to use it versus alternatives like rd_preset_list.)
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rd_preset_deleteRd Preset DeleteB
Delete a saved preset.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only indicates a destructive action ('Delete') but does not mention whether deletion is permanent, reversible, or requires the preset to exist. No side effects or error conditions are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no filler words. It is front-loaded with the action and resource, making it instantly scannable. There is no waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, the description is still incomplete. It lacks usage guidance, behavioral details, and parameter explanation. The presence of an output schema does not offset the absence of any operational context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not mention the 'name' parameter at all, and the schema itself has 0% description coverage. While the parameter name is self-explanatory in context, the description adds no clarification about what constitutes a valid name or how it is used. It fails to compensate for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Delete') on a specific resource ('a saved preset'), which distinguishes it from sibling tools like rd_preset_save, rd_preset_list, and rd_preset_apply. The verb and object are unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, no prerequisites, and no exclusions. It merely states what it does without contextualizing the decision to call it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rd_preset_listRd Preset ListA
List saved generation presets.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of behavioral disclosure. 'List' implies a read-only, non-destructive operation, but the description does not add context about what kind of data is returned, whether presets are persisted on disk or in memory, or whether any side effects occur. It is adequate but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It immediately conveys the action and resource without redundancy or extraneous detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless tool with an output schema present, the description is nearly complete. It explains the core purpose, and the output schema can cover return values. Minor gaps remain around what 'saved' means and how this relates to the preset workflow siblings, but these are not critical for selecting the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameterscars, so parameter semantics are not a concern. With an empty schema, the description does not need to explain parameter behavior. The baseline of 4 applies because there is no missing parameter documentation to compensate for.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'List saved generation presets.' It clearly distinguishes this tool from its siblings like rd_preset_save, rd_preset_apply, and rd_preset_delete, all of which perform different operations. The scope is unambiguous even without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives, nor any exclusions or prerequisites. The description states what the tool does, but an agent must infer that this is the right choice for inspecting available presets before applying or saving them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rd_preset_saveRd Preset SaveA
Save a named generation preset (any rd_generate kwargs) to presets.json.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| settings | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden. 'Save ... to presets.json' indicates persistence, but it does not disclose overwrite behavior for duplicate names, return value, failure modes, or any side effects beyond writing a file. For a mutation tool with zero annotation coverage, this is a significant transparency gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no filler. Every word contributes meaning, and the core action and destination are front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple save tool, the core parameters and destination are sufficiently covered, and an output schema exists. But with no annotations and no mention of overwrite semantics, side effects, or the relationship to rd_preset_apply, the description leaves an agent to infer important behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does add the key semantic that 'settings' consists of 'any rd_generate kwargs', which is valuable. However, 'name' is only described as 'named' with no format or uniqueness constraints, so compensation is partial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action ('Save'), a specific resource ('a named generation preset'), and a destination ('presets.json'). This clearly differentiates it from sibling tools like rd_preset_list, rd_preset_apply, and rd_preset_delete without needing to inspect their schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage is implied: save a preset when you want to persist rd_generate kwargs. However, it gives no explicit when-to-use guidance, no exclusions, and does not mention that saved presets can later be loaded via rd_preset_apply.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rd_prompt_extractRd Prompt ExtractA
Extract a text prompt/description from a reference image (BLIP captioning, optionally guided by a partial description).
| Name | Required | Description | Default |
|---|---|---|---|
| description | No | ||
| reference_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It reveals that the tool performs BLIP captioning and accepts an optional partial description, which is useful. However, it does not explicitly state whether the operation is read-only, nor does it mention any side effects or prerequisites like backend availability. For an extraction tool, the read-only nature is implied but not stated, which is a minor gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, tightly written sentence that front-loads the primary action and resource. It includes the method and optional input without any filler. Every word contributes to understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool with an output schema (which covers return format), the description is mostly complete. It explains the core function and the optional parameter. It does not mention potential errors or required runtime context, but given the low complexity, the description suffices for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It does: 'reference image' clarifies reference_path, and 'optionally guided by a partial description' directly explains the description parameter. This adds meaning beyond the schema's bare type/default. It lacks detailed constraints (e.g., supported image formats), but for two simple parameters it is adequate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Extract a text prompt/description'), the resource ('from a reference image'), and the method ('BLIP captioning'). It also mentions the optional guidance, which distinguishes it from simple captioning tools. This is specific and unambiguous, setting it apart from generation or manipulation siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (to extract a prompt from an image) but does not explicitly mention alternatives or when not to use it. It does not reference any sibling tool for contrast, leaving the agent to infer usage from the verb 'extract'. No exclusion conditions or alternative routing are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rd_quantizeRd QuantizeA
Reduce a PNG to an indexed palette (GBA-friendly) and return the hex palette.
Pillow median-cut quantization; output is a P-mode PNG. Default out_path sits next to the input with a _q{colors} suffix.
| Name | Required | Description | Default |
|---|---|---|---|
| colors | No | ||
| out_path | No | ||
| image_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses the quantization algorithm (Pillow median-cut), output mode (P-mode PNG), the side effect of writing a file, default path naming, and the return of a hex palette. It does not mention overwrite or error behavior, but the core traits are well covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no filler. The main action and return value are front-loaded, and each subsequent sentence adds distinct technical or default-behavior information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter tool with an output schema and no annotations, the description covers the core operation, algorithm, output format, default output location, and return value. It could add overwrite/error semantics or GBA palette constraints, but an agent can invoke the tool correctly from this text plus the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for parameter meaning. It adds useful context for out_path (default next to input with _q{colors} suffix) and colors (affects filename suffix), but it never names image_path or explains colors' valid range/effect beyond the filename. Compensation is partial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Reduce a PNG to an indexed palette (GBA-friendly) and return the hex palette.' It also names the algorithm and output mode, making the action clear. However, it does not explicitly distinguish this from sibling tools like rd_palettize or ase_quantize_to_palette.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives such as rd_palettize or ase_quantize_to_palette. The 'GBA-friendly' phrasing implies a use case, but there are no explicit conditions, exclusions, or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rd_rembgRd RembgB
Remove Background: cut the background out of images (ISNET matting).
| Name | Required | Description | Default |
|---|---|---|---|
| image_paths | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only mentions the algorithm and the action, without disclosing side effects (e.g., whether files are modified in place, output format, processing overhead, or other constraints). This is a significant gap for a tool that processes files.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one sentence, front-loaded with the core purpose, and contains zero fluff. Every word contributes to clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with an output schema (present but not shown), this description is minimally viable. It tells what the tool does, but lacks usage context and behavioral details. Given there are no annotations, the definition overall is adequate but leaves important context uncovered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not elaborate on the 'image_paths' parameter. While the name is somewhat self-explanatory, the description adds no meaning beyond the schema, and with zero coverage the description should compensate more explicitly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Remove Background'), a clear resource ('background out of images'), and even names the algorithm ('ISNET matting'). It effectively distinguishes this tool from all sibling tools, none of which perform background removal.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The purpose implies the usage scenario, but there is no explicit guidance on when to use this over alternatives or any exclusions. It does not name alternative tools or contexts where this would be inappropriate, leaving the agent to infer 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.
rd_start_backendRd Start BackendA
Start the Retro Diffusion local backend (image_server.py in the extension venv) if not already listening.
Headless: no console window, UTF-8 IO env, logs to mcp-backend.log.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It discloses headless execution, no console window, UTF-8 IO environment, and log output to mcp-backend.log. It does not describe return behavior or failure modes, but the essential operational traits are present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences deliver the core action and the key operational details without waste. The main purpose is front-loaded, and every clause adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter startup tool, the description covers what it does, when it runs, and how it behaves headlessly. An output schema exists, so return-value documentation is not required. It could mention prerequisites or blocking behavior, but nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the input schema is empty, so there is no parameter meaning to add. The description correctly avoids inventing parameters, and the baseline for zero-parameter tools is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Start') and resource ('Retro Diffusion local backend'), names the underlying file (image_server.py), and adds the condition 'if not already listening.' This clearly distinguishes it from siblings like rd_stop_backend and rd_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states when the action is appropriate ('if not already listening'), implying idempotent startup. It does not explicitly name alternatives or exclusion cases, but the condition and sibling set make usage context reasonably clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rd_statusRd StatusA
Check whether the Retro Diffusion local backend is reachable on ws://127.0.0.1:8765.
By default this only opens a socket (zero side effects). With handshake=True it also performs the version handshake, which makes the backend minimize its console window once - avoid unless diagnosing.
| Name | Required | Description | Default |
|---|---|---|---|
| handshake | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description carries the burden. It discloses that the default is zero side effects, and that handshake=True causes the backend to minimize its console window—a non-obvious side effect. This goes beyond the schema, which only shows a boolean parameter. It lacks details on return format or error behavior, but the core behavioral transparency is strong.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (two sentences) but packs essential information: what it checks, the default behavior, side effects, and a caution. It is front-loaded with the core purpose, and every sentence earns its keep.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple diagnostic tool with one optional parameter, the description is nearly complete. It informs the agent of the default behavior and side effects. The absence of return-value details is acceptable because an output schema exists, and the tool's function is straightforward. The main gap is not specifying what constitutes a 'reachable' response or possible error codes, but that is minor given the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema only defines 'handshake' as a boolean with default false, and description coverage is 0%. The description explains the semantic of the parameter: it controls whether to perform the version handshake, which has a side effect. This adds meaning that the schema lacks, providing the necessary interpretation for correct use.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks reachability of the Retro Diffusion backend on a specific WebSocket URL, distinguishing its diagnostic role from the sibling state-changing tools like rd_start_backend and rd_stop_backend. It uses a specific verb ('Check whether... is reachable') and resource (ws://127.0.0.1:8765), making the purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains default behavior (pure socket open) and when to use handshake=True, with a clear warning ('avoid unless diagnosing'). It implicitly differentiates from rd_start_backend (starts backend) and rd_stop_backend (stops), but does not explicitly name alternatives or state conditions for when not to use this tool over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rd_stop_backendRd Stop BackendA
Ask the Retro Diffusion backend to shut down (also closes its console window loop).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses one extra side effect, closing the console window loop, but does not warn that shutting down the backend will make subsequent rd_* calls fail until it is restarted. This is a meaningful omission for a terminating action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with the core action front-loaded and no filler. The parenthetical adds useful behavioral detail without bloating the text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter control operation with an output schema, the description is mostly complete. The main missing context is the broader impact on other Retro Diffusion tools, but the sibling rd_start_backend makes the recovery path obvious.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema is empty with zero parameters, so there are no parameter semantics for the description to add. Per the rubric, the zero-parameter baseline of 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (the Retro Diffusion backend) and a specific action (shut down), and adds the concrete detail that it also closes the console window loop. This clearly distinguishes it from siblings like rd_start_backend and rd_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'ask the Retro Diffusion backend to shut down' gives a clear context for when to invoke the tool. It does not explicitly name alternatives or when-not-to-use cases, such as using rd_status to check state instead, but the purpose is self-evident enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rd_texture_genRd Texture GenB
Generate Textures: PBR maps (normal/roughness/displacement) from images.
tiling: none | seamless | mirror | replicate (extend).
| Name | Required | Description | Default |
|---|---|---|---|
| tiling | No | none | |
| image_paths | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral disclosure burden. It explains that PBR maps are generated and lists tiling modes, but does not disclose whether files are written, whether a backend must be running, what happens to inputs, or how results are returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: one core sentence plus a one-line tiling summary. All content is front-loaded and every phrase earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with only two parameters and an output schema exists, so the description is close to minimally viable. Still, without annotations it leaves behavioral gaps—such as side effects and prerequisites—that an agent would need to invoke it safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It adds meaning for tiling by enumerating its values, and 'from images' loosely maps to image_paths. However, it does not clarify path formats, accepted image types, or whether tiling defaults apply per map.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: generate PBR textures (normal/roughness/displacement) from images. This clearly distinguishes it from generic siblings like rd_generate and rd_img2img by naming the exact output type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like rd_generate or rd_img2img, and no exclusions or prerequisites are mentioned. The intended use is implied by the name and description, but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rd_translateRd TranslateC
Translate/enhance prompts into model-friendly English prompt text.
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | ||
| prompt | Yes | ||
| negative | No | ||
| generations | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It conveys that the tool transforms text, but does not disclose whether it calls an external model, requires a running backend, is deterministic, or has side effects. This is a significant gap for a tool with no annotation safety hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler words. It is front-loaded with the core action and output, making it easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has four parameters, no annotations, and no parameter descriptions, yet the description only covers the general purpose. Key details about parameter roles, expected behavior, and prerequisites are missing, making it insufficient for reliable invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate by explaining parameters. It does not mention prompt, negative, seed, or generations at all, leaving their semantics entirely to the schema property names and defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action (translate/enhance) on a specific resource (prompts) with a clear output (model-friendly English prompt text). It is distinguishable from most sibling tools, though it does not explicitly differentiate itself from rd_prompt_extract or explain what 'enhance' adds beyond translation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives like rd_generate or rd_prompt_extract. The description implies it should be used to improve prompts before generation, but that context is not stated explicitly.
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.
169 tool updates
v1.0.0- First observed
ase_add_frame - First observed
ase_add_frames - First observed
ase_add_frames_blank - First observed
ase_add_layer - First observed
ase_add_palette_color - First observed
ase_adjust_hsl - First observed
ase_analyze_palette_harmonies - First observed
ase_apply_outline - First observed
ase_apply_palette_preset - First observed
ase_apply_shading - First observed
ase_clear_cel - First observed
ase_color_mode - First observed
ase_compare_frames - First observed
ase_copy_cel - First observed
ase_copy_selection - First observed
ase_create_canvas - First observed
ase_create_cel - First observed
ase_create_slice - First observed
ase_create_tag - First observed
ase_create_tilemap_layer - First observed
ase_crop_sprite - First observed
ase_cut_selection - First observed
ase_delete_frame - First observed
ase_delete_layer - First observed
ase_delete_slice - First observed
ase_delete_tag - First observed
ase_deselect - First observed
ase_dither_gradient - First observed
ase_downsample - First observed
ase_draw_circle - First observed
ase_draw_contour - First observed
ase_draw_line - First observed
ase_draw_on_tile - First observed
ase_draw_pixels - First observed
ase_draw_pixels_hex - First observed
ase_draw_rectangle - First observed
ase_draw_with_dither - First observed
ase_duplicate_frame - First observed
ase_duplicate_layer - First observed
ase_erase_color - First observed
ase_export_layers - First observed
ase_export_sprite - First observed
ase_export_spritesheet - First observed
ase_export_tag - First observed
ase_fill_area - First observed
ase_flatten_layers - First observed
ase_flip_sprite - First observed
ase_generate_color_ramp - First observed
ase_get_color_stats - First observed
ase_get_palette - First observed
ase_get_pixels - First observed
ase_get_selection - First observed
ase_get_tile_at - First observed
ase_get_tilemap_info - First observed
ase_import_layer - First observed
ase_link_cel - First observed
ase_list_palette_presets - First observed
ase_list_slices - First observed
ase_merge_layer_down - First observed
ase_move_selection - First observed
ase_oscillate_cel_positions - First observed
ase_paste_clipboard - First observed
ase_propagate_cels - First observed
ase_quantize_to_palette - First observed
ase_rename_layer - First observed
ase_render_onion_skin - First observed
ase_reorder_layer - First observed
ase_replace_color - First observed
ase_resize_canvas - First observed
ase_rotate_sprite - First observed
ase_run_lua - First observed
ase_save_as - First observed
ase_scale_sprite - First observed
ase_select_all - First observed
ase_select_ellipse - First observed
ase_select_rectangle - First observed
ase_set_cel_opacity - First observed
ase_set_cel_position - First observed
ase_set_frame_duration - First observed
ase_set_frame_duration_all - First observed
ase_set_layer_blend_mode - First observed
ase_set_layer_opacity - First observed
ase_set_layer_visibility - First observed
ase_set_palette - First observed
ase_set_palette_color - First observed
ase_set_slice_center - First observed
ase_set_slice_pivot - First observed
ase_set_tiles - First observed
ase_sort_palette - First observed
ase_sprite_info - First observed
ase_status - First observed
ase_suggest_antialiasing - First observed
ase_trim_sprite - First observed
ase_tween_cel_positions - First observed
ase_view_frame - First observed
krita_adjust_pixels - First observed
krita_clear - First observed
krita_clear_selection - First observed
krita_create_layer - First observed
krita_document_info - First observed
krita_draw_shape - First observed
krita_duplicate_layer - First observed
krita_export_layers - First observed
krita_fill - First observed
krita_flatten - First observed
krita_get_canvas - First observed
krita_get_color_at - First observed
krita_get_pixels - First observed
krita_get_selection - First observed
krita_list_actions - First observed
krita_list_brushes - First observed
krita_list_filters - First observed
krita_list_layers - First observed
krita_merge_layer_down - First observed
krita_modify_selection - First observed
krita_new_canvas - First observed
krita_open_file - First observed
krita_redo - First observed
krita_remove_layer - First observed
krita_resize_image - First observed
krita_run_action - First observed
krita_run_python - First observed
krita_save - First observed
krita_scale_image - First observed
krita_set_active_layer - First observed
krita_set_brush - First observed
krita_set_canvas_view - First observed
krita_set_color - First observed
krita_set_layer_props - First observed
krita_set_pixels - First observed
krita_set_selection - First observed
krita_status - First observed
krita_stroke - First observed
krita_undo - First observed
px_capabilities - First observed
px_image_base64 - First observed
px_view_image - First observed
px_view_images - First observed
rd_api_img2anim - First observed
rd_api_img2img - First observed
rd_api_txt2anim - First observed
rd_api_txt2img - First observed
rd_benchmark - First observed
rd_cn_img2img - First observed
rd_cn_txt2img - First observed
rd_color_transfer - First observed
rd_generate - First observed
rd_img2img - First observed
rd_kcentroid - First observed
rd_list_loras - First observed
rd_list_models - First observed
rd_neural_detail - First observed
rd_neural_pixelate - First observed
rd_neural_resize - First observed
rd_neural_transform - First observed
rd_palette - First observed
rd_palettize - First observed
rd_preset_apply - First observed
rd_preset_delete - First observed
rd_preset_list - First observed
rd_preset_save - First observed
rd_prompt_extract - First observed
rd_quantize - First observed
rd_rembg - First observed
rd_start_backend - First observed
rd_status - First observed
rd_stop_backend - First observed
rd_texture_gen - First observed
rd_translate
TDQS
Scored across 169 tools
The subsystem prefixes (ase_, krita_, rd_, px_) separate concerns clearly, and most tools target a distinct resource or action. A few near-duplicates such as ase_draw_pixels vs ase_draw_pixels_hex, ase_add_frame vs ase_add_frames, and ase_dither_gradient vs ase_draw_with_dither create minor ambiguity, but the descriptions are detailed enough to resolve most confusion.
Names are uniformly snake_case and follow a recognizable verb_noun pattern within each subsystem. Minor inconsistencies exist, such as mixing add vs create, get vs list, and delete vs remove across tools, but the overall convention is predictable and readable.
169 tools is an extreme surface for any MCP server, even one spanning Aseprite, Krita, and Retro Diffusion. This volume will overwhelm context windows and make tool selection expensive and error-prone.
The tool surface is remarkably comprehensive, covering sprite/layer/frame/tag/palette/slice/tilemap operations, Krita document and layer workflows, image generation variants, and integration bridges between the subsystems. The escape hatches ase_run_lua and krita_run_python close almost any remaining gap.
Maintenance
Related MCP Connectors
Generate pixel art sprites, animations, 8-direction rotations and palettes for games.
LLM chat, text tools, image generation, editing, batch image jobs, and asynchronous video generation
Turn prompts into production-ready game assets: animated characters, textures, terrain, VFX, HUD.
AI game assets for agents: consistent sprites, 2D animations, tiles, maps, music and engine exports.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables AI sprite generation and semantic tools for Aseprite, allowing LLMs to create pixel art, add animations, and manage projects with visual feedback.61GPL 3.0
- AlicenseCqualityDmaintenanceEnables AI assistants to control Aseprite for creating pixel art and animated sprites, with 104 tools covering canvas, drawing, animation, palettes, effects, and more.100MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to drive Aseprite for pixel-art creation, including sprite setup, grid-based drawing, layer/frame/tag management, reference image import, and export, with rendered previews after every mutation.MIT
- AlicenseAqualityAmaintenanceEnables AI agents to create and edit pixel art in a live Aseprite window, with tools for drawing, selection, transformation, and animation.18120 npm2MIT