Skip to main content
Glama

krita-mcp

CI Release Downloads Tested on Krita 5.3.4 Python MCP SDK License

Let AI agents create and edit art, photos, animation and video inside a running Krita. It works with any MCP client: Claude, ChatGPT, Gemini, Cursor, VS Code Copilot, Codex and others.

AI client ──MCP (stdio or HTTP)──▶ krita-mcp ──127.0.0.1 + token──▶ Krita plugin ──▶ your canvas

What the AI can do (86 tools + 7 workflow prompts)

  • Paint like an artist. It uses Krita's real brush engine with any preset, pressure and eraser, plus crisp shapes and gradients, editable SVG vectors and text, procedural SeExpr textures, screentones, and colourising line art with Krita's Colourise Mask.

  • See and measure. Snapshots (zoomed in, a single layer, any animation frame, or a labelled coordinate grid), plus analyze_image (palette, light, contrast, sharpness, layout), exact read_pixels, and find_color.

  • Edit photos. Exact levels, curves, exposure and temperature; hue/saturation, colour balance, sharpen, denoise, blur and about 25 more; auto-enhance; vignette; non-destructive filter masks; 16-bit colour spaces.

  • Chat with an AI inside Krita. The AI Chat docker lets you sign in to Gemini, Claude, OpenAI, OpenRouter (with your browser, no key to copy), Mistral, Groq, DeepSeek, xAI Grok, Together, Fireworks, Cerebras, Hugging Face, NVIDIA, Qwen, Moonshot, SambaNova, Cohere, Z.AI, DeepInfra, Vercel AI Gateway and about 20 more, or a local model (Ollama, LM Studio), or use it free with no sign-in (Pollinations, Kilo Gateway, OVHcloud, LLM7, or the OmniRoute gateway), type what you want and watch it work in your document. It keeps spending down (only the newest pictures are resent, Claude's prompt cache is used, repeated failures stop) and shows the tokens each answer used. Skills (39 built in - photoreal images, retouching, pixel art, logos, comics, animation, saving credits, ... - plus any you install) are found and loaded only when a request needs them. Models are always listed live from each provider; nothing is hard-coded. One Services list holds every key and server URL, and AI apps connected through MCP use the same sign-in.

  • Real-world materials. CC0 photo textures and HDRI skies from Poly Haven, and openly licensed photos from Openverse (with attribution), tiled or placed on layers to make work look real.

  • Just give it a prompt. create_artwork decides: realistic or photographic requests are generated (with looks like photo, cinematic, portrait or product, plus negative prompts that remove AI artefacts). Hand-made requests, or setups with no model connected, are painted in Krita, with prepared layers, guides and a painting plan.

  • Generate with any image model, right on the canvas. It works with ComfyUI (including your own workflows: Flux, ControlNet, IP-Adapter, …), AUTOMATIC1111/Forge, OpenAI, Gemini, Stability AI, Replicate and fal.ai. You can generate from text, rework a region (img2img), inpaint a selection, outpaint beyond the edges, upscale, and remove backgrounds. Several variations at once come with a numbered comparison sheet. You can also paint a sketch layer and let ControlNet follow it. match_colors blends a generated element into the scene. Results always land on new layers, cut to your selection, and each placement is one undo step.

  • Video and a second opinion. Generate video with Sora, Veo, HeyGen talking avatars (they can even make your painted character talk) or any Replicate/fal video model. It opens in Krita as an animation you can edit. Cinematic camera moves (dolly, orbit, crane, FPV, crash zoom…) steer video models, and camera_move animates any still inside Krita without AI. ask_vision gets a critique, caption or prompt from Claude, GPT or Gemini (or a local Ollama model).

  • Animate and edit video. Keyframes, onion skin, frame contact sheets, importing video from mp4/mov/webm/gif, grading every frame (for_each_frame), and rendering to mp4/webm/gif/ProRes with Krita's bundled ffmpeg.

  • Full layer control. Paint, vector, group, fill, filter, clone and file layers; masks; clipping; blend modes; arranging; merging; transforms. About 70 of Krita's own commands via krita_action.

  • Real undo for AI edits, even for edits Krita itself doesn't record. It never overwrites your own work.

  • batch and for_each_frame let the AI do many steps in one call.

Built-in prompts (create, generative_inpaint, concept_variations, retouch_photo, product_shot, paint_scene, animate) appear as slash commands in clients that support MCP prompts.

The plugin updates itself from this project's GitHub releases: it tells you when a new version is out (or installs it automatically, if you choose), checks every download against GitHub's published checksum, and updates the krita-mcp server too.

An AI Bridge (MCP) panel inside Krita shows the status and a live activity log. From it you can make the AI read-only or pause it, undo AI edits, set the workspace and token, and copy a ready-made config for your AI client.

Related MCP server: krita6-mcp

Quick start

  1. Plugin. Download krita-mcp-bridge-*.zip from Releases. In Krita choose Tools ▸ Scripts ▸ Import Python Plugin from File…, enable the plugin and restart Krita.

  2. Server. Run pip install krita-mcp, or install the .whl from the release, or use uvx --from git+https://github.com/jowinjohnchemban/krita-mcp krita-mcp.

  3. Connect. Open Settings ▸ Dockers ▸ AI Bridge (MCP), pick your client and copy the snippet. For example, in Claude Code:

    claude mcp add krita -- krita-mcp
  4. Ask: "Create a 1200×800 canvas, paint a sunset over mountains with real brushes, look at it and improve it."

Details: installation · clients · the panel

Command-line flags

krita-mcp [--transport {stdio,http}] [--host HOST] [--port PORT] [--agent [--agent-port N]]
          [--check-update | --update] [--version]

Flag

Default

Meaning

--transport

stdio

stdio for local clients (Claude Code/Desktop, Cursor, VS Code, Gemini CLI, Codex). http for clients that need a URL.

--host

127.0.0.1

HTTP bind address. Binding anything other than loopback requires KRITA_MCP_HTTP_TOKEN.

--port

8765

HTTP port (the endpoint is http://HOST:PORT/mcp).

--agent

Run the in-Krita assistant service for the AI Chat docker instead of an MCP server. The docker starts it by itself.

--agent-port

5680

Port of that service (loopback only, bridge-token auth). Also KRITA_MCP_AGENT_PORT.

--check-update

Ask GitHub whether a newer release exists (prints JSON).

--update

Download, verify and install the newest release of the server.

--version

Print the version and exit.

Environment variables:

Variable

Used by

Default

Meaning

KRITA_MCP_HTTP_TOKEN

server

random, printed at start

Bearer token HTTP clients must send (Authorization: Bearer …)

KRITA_MCP_PORT

server + plugin

5679

Port of the Krita bridge (not the HTTP port above)

KRITA_MCP_HOST

server

127.0.0.1

Host of the Krita bridge

KRITA_MCP_HOME

server + plugin

~/.krita-mcp

Folder holding the bridge token

KRITA_MCP_TOKEN

server

read from KRITA_MCP_HOME

Bridge token, instead of reading the file

KRITA_MCP_WORKSPACE

plugin

~/KritaMCP

The only folder the AI may read/write (overrides the panel setting)

KRITA_MCP_AUTOSTART

plugin

on

0 = don't start the bridge with Krita

KRITA_MCP_FFMPEG

plugin

Krita's bundled copy

Folder with ffmpeg/ffprobe for video

Plugin settings can also be changed in Krita's AI Bridge (MCP) panel; environment variables take priority.

Generative services are configured with more server variables (KRITA_MCP_COMFYUI_URL, KRITA_MCP_A1111_URL, KRITA_MCP_OPENAI_API_KEY, KRITA_MCP_GEMINI_API_KEY, KRITA_MCP_STABILITY_API_KEY, KRITA_MCP_REPLICATE_API_TOKEN, KRITA_MCP_FAL_KEY, KRITA_MCP_HEYGEN_API_KEY, KRITA_MCP_ANTHROPIC_API_KEY, KRITA_MCP_IMAGE_BACKEND, …). Cloud services are used only with a KRITA_MCP_… key, so a key that happens to be in your environment never uploads your art by surprise. See Connecting AI services.

Documentation

AI Chat inside Krita

The chat docker, signing in to services, asset libraries

Connecting AI services

ComfyUI, A1111, OpenAI, Gemini, Stability, Replicate, fal, HeyGen, Sora, Veo, Claude

Workflows

Painting, photo retouching, inpainting, line art, animation, video

Tool reference

All 86 tools, their parameters, and the prompts

Undo, safety and limits

How undo works, the security model, access modes

Development

Architecture, tests, real-Krita smoke test, adding tools

Krita upstream

Proposing the plugin for bundling with Krita itself

Releasing

How plugin zips, wheels and GitHub/PyPI releases are published

Safety in one paragraph

The bridge listens on loopback only and requires a secret token. The AI can read and write files only in one workspace folder (~/KritaMCP by default). There is no code-execution tool. You can switch the AI to read-only or pause it from the panel at any time. Full details: security model.

Status

The project is tested against Krita 5.3.4 on Windows. scripts/smoke_krita.py runs 56 end-to-end checks against a running Krita, including an undo matrix over every kind of edit and the Quick start's sunset prompt. scripts/paint_sunset.py paints the sunset with real brushes, looks at it, improves it and checks the result. Unit tests run on Linux and Windows with PyQt5 and PyQt6 in CI. Krita 6 is covered by the PyQt6 unit tests but has not yet been run end to end.

Develop

pip install -e .[test] PyQt6
QT_QPA_PLATFORM=offscreen pytest
python scripts/smoke_krita.py        # against a real running Krita with the plugin enabled

See development.

Available Tools

86 tools
add_svgA

Add SVG elements as EDITABLE vector shapes: , , , , , , , gradients in , groups. Bare elements use canvas pixel coordinates. Goes onto layer (a vectorlayer), the active vector layer, or a new vector layer called name. No external references (href/url() only to #ids, images as data: URIs).

NameRequiredDescriptionDefault
svgYes
nameNoVector
layerNo

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description must carry the full behavioral burden, and it does disclose several important traits: output is editable vector (not raster), bare elements use canvas pixel coordinates, and external references are restricted to #ids and data: URIs. It omits what happens to pre-existing content on the target layer, what the call returns (shape ids? layer name?), and error behavior, which are material 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.

Conciseness4/5

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

Four short sentences, front-loaded with the core capability and the element list, then the coordinate rule, then layer targeting, then constraints. No filler; the element enumeration is dense but earns its space as a validity constraint.

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

Completeness3/5

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

For a 3-parameter, no-output-schema, no-annotation mutation tool, the description covers input content rules and layer targeting well but leaves the return value and post-call state unaddressed. An agent could invoke it correctly but could not predict the result or verify success from the definition alone.

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

Parameters4/5

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

Schema coverage is 0%, so the description has to compensate and largely does: `svg` is defined by allowed element set, coordinate convention, and reference restrictions; `layer` is constrained to a vectorlayer; `name` is explained as the name for a newly created vector layer. The `name`/`layer` interaction is clarified, though the precedence when both are supplied is only implied by the ordering.

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

Purpose4/5

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

States a specific verb ("Add") and resource (SVG elements as editable vector shapes), and enumerates the supported element types, which lets an agent distinguish this from raster drawing tools like draw_shapes. It stops short of naming the closest sibling (e.g. draw_shapes or import_image) explicitly, so the differentiation is inferable rather than stated.

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

Usage Guidelines3/5

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

The layer-resolution rule (explicit `layer`, else active vector layer, else new layer named `name`) is a concrete usage rule that guides invocation. However, there is no statement of when to prefer this over draw_shapes or import_image, and no exclusions or failure conditions.

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

add_vignetteB

Darken (or tint) the edges on a new layer on top; adjust its opacity or delete it later.

NameRequiredDescriptionDefault
sizeNo
colorNo#000000
strengthNo
blend_modeNonormal

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does disclose the key behavioral trait: the effect is applied to a new layer on top, so it is non-destructive and reversible via opacity or deletion. That is genuinely useful beyond what structured fields provide. It does not say whether the tool needs an active selection, what the new layer is named, or what the result looks like 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.

Conciseness4/5

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

A single compact sentence with the core effect front-loaded and the lifecycle note trailing. Nothing is redundant or padded. It is arguably too terse for a four-parameter tool, but as prose it is well-formed.

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

Completeness2/5

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

Four parameters with zero schema descriptions, no annotations, and no output schema mean the description is the only documentation — and it explains none of the inputs. For a tool with adjustable size, color, strength, and blend mode, the definition leaves the agent guessing at nearly every argument.

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

Parameters2/5

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

Schema description coverage is 0% — the four parameters (size, color, strength, blend_mode) have only titles and defaults. The description compensates only obliquely: 'darken' and 'tint' imply color, 'edges' implies size, and 'darken' implies strength, but no parameter is named or explained. An agent cannot learn valid ranges, units, or what blend_mode values are legal from this definition.

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

Purpose4/5

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

The description pairs a specific verb ('Darken (or tint)') with a specific effect ('the edges') and states the mechanism ('on a new layer on top'). That is far clearer than the bare name 'add_vignette' and an agent can predict the visual result. It stops short of distinguishing itself from sibling effect tools like apply_filter or adjust_image, so it lands at 4 rather than 5.

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

Usage Guidelines3/5

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

Usage is only implied: the phrase 'adjust its opacity or delete it later' signals a non-destructive workflow, which hints at when this is preferable to a baked-in filter. There is no explicit statement of when to choose add_vignette over apply_filter, nor any prerequisite such as an open document or active layer. The agent must infer the context.

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

adjust_imageA

Photo adjustment on a paint layer (limited to the selection if any). operation + settings: exact tone tools (pixel-precise, channel = rgb|r|g|b): levels {in_black, in_white, gamma, out_black, out_white} · curves {points: [[in,out],...] 0-255} brightness_contrast {brightness, contrast -100..100} · exposure {stops} · gamma {gamma} temperature {temperature -100..100 (warm+), tint -100..100 (magenta+)} Krita filters (non_destructive=true adds them as an editable filter mask instead): hue_saturation {hue -180..180, saturation, lightness -100..100, colorize} color_balance {shadows_|midtones_|highlights_ + cyan_red|magenta_green|yellow_blue: -100..100} sharpen {amount 0-10, radius, threshold} · blur {radius} · motion_blur {angle, length} lens_blur {radius} · denoise {strength} · denoise_gaussian {threshold, window} desaturate {method} · auto_contrast · normalize · invert · posterize {steps} threshold {level} · pixelize {size} · oil_paint {brush_size, smooth} · emboss {depth} edge_detect {radius} · high_pass {radius} · noise {amount, opacity, grayscale} color_to_alpha {color, threshold} · dodge / burn {exposure 0-1, range 0 shadows|1 mid|2 highlights} wave {amplitude, wavelength} · round_corners {radius} Any other Krita filter: apply_filter.

NameRequiredDescriptionDefault
layerNo
settingsNo
operationYes
non_destructiveNo

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does disclose meaningful behavior: non_destructive=true creates an editable filter mask rather than baking pixels, and 'exact tone tools (pixel-precise)' vs 'Krita filters' signals a fidelity distinction. However it never states what happens when layer is null (presumably active layer), whether the default path is destructive/undoable, or what the call returns — significant gaps 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.

Conciseness4/5

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

Purpose is front-loaded in the first clause, followed by a tightly formatted catalog that is dense but scannable and where each line names a distinct valid operation. There is minor redundancy — gamma appears both standalone and inside levels — and the bulk of the text is reference material an agent must read in full, but nothing is padding.

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

Completeness4/5

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

For a complex, four-parameter tool with 0% schema coverage and no output schema, the description supplies nearly everything an agent needs to construct a valid call, including the escape hatch to apply_filter. It falls short only on layer resolution semantics and on any hint of return/result behavior, which matter because there is no output schema to fall back on.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate, and it largely does: the operation vocabulary is enumerated exhaustively with per-operation settings keys and numeric ranges (e.g. brightness/contrast -100..100, curves points 0-255, dodge/burn exposure 0-1). The notable gap is the `layer` parameter, which is never explained despite defaulting to null.

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

Purpose4/5

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

The opening line gives a specific verb and resource — 'Photo adjustment on a paint layer (limited to the selection if any)' — and the closing line explicitly routes non-listed Krita filters to the apply_filter sibling. What's missing is differentiation from other adjustment-flavored siblings such as auto_enhance, add_vignette, or colorize_lineart, so the agent must infer that those are separate tools.

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

Usage Guidelines4/5

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

There is a real routing rule: any filter not enumerated here should go to apply_filter, and the selection caveat tells the agent when the effect is scoped. There is no explicit 'use this when / don't use this when' for the overlapping siblings (auto_enhance, add_vignette), so guidance is clear but incomplete.

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

ai_backendsA

Which generative-AI services are connected: image backends (ComfyUI, AUTOMATIC1111/Forge, OpenAI, Gemini, Stability, Replicate, fal) with their models/samplers/upscalers, video backends (HeyGen, Sora, Veo, Replicate, fal; details=true lists HeyGen avatars and voices), vision models for ask_vision, and the ComfyUI workflows saved in /workflows. Call this before generate_image.

NameRequiredDescriptionDefault
detailsNo

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. Its 'Which services are connected' framing implies a read-only discovery operation, and it discloses the categories of returned data (models, samplers, upscalers, workflows, avatars and voices when details=true). It says nothing explicitly about side effects, permissions, or cost, and does not describe the response shape.

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

Conciseness4/5

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

Three sentences, front-loaded with the core purpose, and the actionable call-before-generate_image rule is placed last for emphasis. The long vendor enumerations are informative but slightly heavy; trimming them would lose useful completeness, so this is close to optimal.

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

Completeness3/5

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

With no output schema and 0% schema coverage, the description must serve as documentation, and it does name the returned categories and the workspace workflows path. However, it does not describe the response structure (key names, per-backend shape, error when nothing is connected), leaving gaps for an agent that needs to consume the result.

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

Parameters4/5

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

Schema coverage is 0%, so the description must compensate for the single undocumented boolean. It does: 'details=true lists HeyGen avatars and voices' explains what the flag adds. It is incomplete because it does not say whether details affects other backends or what the default (false) yields, but it still adds real meaning beyond the bare boolean.

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

Purpose4/5

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

The description clearly identifies the tool as a discovery query for connected generative-AI services, enumerating image backends, video backends, vision models, and ComfyUI workflows. It has no single leading verb like 'list' or 'get', but the enumerated scope distinguishes it well from siblings such as generate_image, generate_video, and ask_vision.

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

Usage Guidelines4/5

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

It gives an explicit precondition: 'Call this before generate_image.' That is a concrete when-to-use rule tied to a named sibling. It does not mention generate_video or ask_vision, even though the tool also reports video backends and vision models, so the guidance is clear but not exhaustive.

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

analyze_imageB

Numbers about the image (or a region / one layer): dominant palette with shares, mean colour, brightness, contrast, sharpness (0..1), coverage of non-transparent pixels, content bounds, and a grid x grid layout of mean colours (top row first). Use it to judge and match colours and lighting.

NameRequiredDescriptionDefault
xNo
yNo
gridNo
layerNo
widthNo
heightNo
palette_sizeNo

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It usefully discloses that analysis can target the whole image, a region, or a single layer, and it describes the shape of the returned metrics. It does not state that the operation is read-only/non-mutating, nor mention cost or performance characteristics of the pixel-heavy metrics.

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

Conciseness4/5

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

Front-loaded with the returned content, then the usage hint. Parentheticals ('or a region / one layer', 'top row first') each add real information rather than padding. It is dense but no sentence is wasted.

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

Completeness3/5

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

For a 7-parameter, unannotated, no-output-schema tool, the description does substantial work by enumerating the returned metrics. Gaps remain around the coordinate space for x/y/width/height, default behavior when no region or layer is given, and whether region and layer can be combined — details an agent needs to call it correctly.

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

Parameters3/5

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

Schema coverage is 0% and parameter titles are bare tokens (X, Y, width, height, grid, layer, palette_size). The description partially compensates: 'a region' implies x/y/width/height, 'one layer' maps to layer, '(top row first)' explains grid ordering, and 'dominant palette with shares' relates to palette_size. However, it never says x/y are the region origin, how width/height default when omitted, what grid=3 vs other values means, or how region and layer interact.

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

Purpose4/5

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

States a specific resource and enumerates the measurements returned (dominant palette with shares, mean colour, brightness, contrast, sharpness, non-transparent coverage, content bounds, grid of mean colours), which makes it clearly distinct from siblings like sample_color or palette_colors. It never names those siblings explicitly, so differentiation is inferred from the output list rather than stated.

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

Usage Guidelines3/5

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

The final sentence gives one positive usage condition: 'Use it to judge and match colours and lighting.' There is no guidance on when to prefer sample_color, palette_colors, read_pixels, or ask_vision instead, and no prerequisites or exclusions are stated.

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

animation_contact_sheetB

See many frames at once: a labelled grid of frames (max 48) to review motion and consistency.

NameRequiredDescriptionDefault
endNo
stepNo
startNo
columnsNo
cell_sizeNo

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are supplied, so the description carries the full disclosure burden and covers very little beyond the visual layout. It does not say whether the call is read-only or side-effect free, what form the result takes (rendered image versus data), how ranges exceeding 48 frames are handled (truncation, sampling, or error), or what the default step is.

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

Conciseness4/5

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

A single tight sentence with the useful detail (max 48, labelled grid) front-loaded and no filler. It is efficient, though its brevity is part of why key parameter and behaviour details are absent.

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

Completeness2/5

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

A five-parameter, all-optional tool with no annotations and no output schema leaves the description responsible for range/default semantics and for what the returned artifact is, neither of which it addresses. The max-48 note is helpful but not enough for an agent to call it confidently with a non-default range.

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

Parameters3/5

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

Schema description coverage is 0% across five parameters, and the description supplies almost no compensating meaning beyond the implicit frame-count cap. Start/end/step and columns/cell_size are guessable from their names, but there is no stated default behaviour for omitted values or interaction between step and the 48-frame limit.

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

Purpose4/5

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

The description states a concrete output artifact (a labelled grid of frames, max 48) and its purpose (reviewing motion and consistency), which goes beyond restating the name. It doesn't explicitly contrast with neighbouring preview tools such as view_image, canvas_snapshot, or export_animation_frames, so the boundary is inferable rather than stated.

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

Usage Guidelines3/5

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

The stated intent 'to review motion and consistency' implies when the tool is appropriate, but there is no explicit when-not guidance or named alternative (e.g. use export_animation_frames for full-resolution output, view_image for a single frame). The max-48 cap is the only hard constraint given.

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

animation_infoC

Frame rate, playback/clip range, current frame and animated layers.

NameRequiredDescriptionDefault

No parameters

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are supplied, so the description carries the full behavioral burden. It implies a read-only retrieval by listing fields, but never states that it is non-mutating, whether it requires an active document or animation, or what happens if no animation exists. For a zero-annotation tool 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.

Conciseness3/5

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

It is a single short fragment with no wasted words, but it is under-specified rather than concise: a bare field list with no framing sentence. Front-loading is fine, but the fragment lacks a subject or verb to anchor it.

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

Completeness3/5

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

With no output schema, the description must convey return values, and the field enumeration does that partially. However, it omits the shape of the response (units, structure, whether layers are names or objects) and any precondition, leaving the agent with an incomplete picture of a simple but undocumented tool.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline of 4 applies. The field list does at least signal what the call surfaces, though it is not parameter information.

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

Purpose3/5

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

The description is a noun phrase enumerating returned fields (frame rate, playback/clip range, current frame, animated layers) rather than a verb+resource statement. The resource is inferable from the name 'animation_info', but the description never says 'retrieves' or 'returns', so the agent must infer that this is a read operation distinct from animation_set or list_keyframes.

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

Usage Guidelines2/5

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

There is no when-to-use guidance at all: no mention of when to call this versus animation_set, keyframe, list_keyframes, or video_info. The agent is left to infer usage purely from the tool name and the field list.

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

animation_setC

Set frame rate, frame range (start..end) and/or go to frame (drawing then edits that frame).

NameRequiredDescriptionDefault
endNo
fpsNo
frameNo
startNo

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It usefully discloses that going to a frame makes subsequent edits apply to that frame, but it omits whether setting fps or frame range affects existing drawings, whether the operation is undoable, and what permissions or setup are required.

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

Conciseness4/5

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

The description is a single, front-loaded sentence covering purpose and key parameters without waste. The parentheticals add needed clarification, though the sentence is slightly dense.

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

Completeness3/5

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

For a four-parameter mutation tool with no annotations, no output schema, and 0% schema coverage, the description is minimally viable. It explains the purpose and broad parameter meanings but omits behavioral details like side effects, undoability, and constraints, which leaves meaningful gaps for an agent.

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

Parameters3/5

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

With 0% schema description coverage, the description must clarify the four parameters. It maps each one reasonably: fps is frame rate, start..end is frame range, and frame is the navigation target. However, it does not add constraints such as valid fps values, start/end ordering, or frame bounds.

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

Purpose4/5

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

The description states a specific verb ('Set') and resources ('frame rate, frame range, and/or go to frame'), making the tool's intended action clear. It does not explicitly differentiate from siblings such as animation_info or keyframe, but the setter semantics are evident.

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

Usage Guidelines2/5

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

The description implies that the parameters can be combined ('and/or') but gives no explicit when-to-use guidance, no prerequisites, and no instructions on when to use animation_info instead. It leaves usage decisions to inference.

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

apply_filterB

Apply a Krita filter (blur, levels, invert, ...) to a paint layer, restricted to the selection if any. params: filter properties from describe_filter (string/number/bool values only).

NameRequiredDescriptionDefault
nameYes
layerNo
paramsNo
ignore_selectionNo

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations at all, the description carries the full burden for a mutation tool. It discloses selection-restricted application, but not whether the edit is undoable, whether it mutates the layer in place, what happens if the target is not a paint layer, whether an omitted layer means the active layer, or what the call returns 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.

Conciseness4/5

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

Two sentences, front-loaded with the action and scope, with no filler. The second sentence's param note earns its place, though the phrasing is slightly compressed to the point of ambiguity about the 'name' parameter.

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

Completeness4/5

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

For a 4-parameter mutation tool with no annotations and no output schema, the definition covers the essential workflow (discover filter properties, then apply). Gaps remain around layer defaulting, return values, and undo/error behavior that an agent would need before committing a destructive edit.

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

Parameters3/5

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

Schema coverage is 0%, so the description must compensate, and it does partially: it explains that params holds filter properties obtained from describe_filter and that only string/number/bool values are accepted. However 'name' allowed values are only hinted ('blur, levels, invert, ...'), 'layer' semantics with default null are never explained, and 'ignore_selection' is only obliquely implied by 'restricted to the selection if any'.

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

Purpose4/5

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

The description gives a specific verb and resource ('Apply a Krita filter') plus scope ('to a paint layer, restricted to the selection if any'), with example filters (blur, levels, invert). It implicitly separates itself from describe_filter/list_filters by consuming their output, though it never explicitly contrasts with the sibling adjust_image family.

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

Usage Guidelines3/5

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

Usage is only implied: the note that params come 'from describe_filter' tells an agent to call describe_filter first, which is a useful workflow hint. There is no explicit statement of when to prefer this over adjust_image/auto_enhance, no preconditions, and no when-not guidance.

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

arrange_layerA

Restack a layer. to = top, bottom, up or down; or above = a sibling to sit directly over; parent = a group to move the layer into (top of it unless to/above say otherwise).

NameRequiredDescriptionDefault
toNo
aboveNo
layerNo
parentNo

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It does explain how ordering and parenting work, including precedence when `to`/`above` are provided, but it omits mutation-related details such as required target identification, failure behavior, and whether restacking affects grouping or rendering context.

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

Conciseness5/5

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

The description is compact and front-loaded with the core action, then efficiently defines the key parameter interactions. Every clause contributes directly to invoking the tool correctly.

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

Completeness3/5

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

For a simple layer-ordering tool with no annotations, no output schema, and no schema descriptions, the description covers the main placement semantics adequately. However, it is incomplete because the target `layer` parameter is never explained and there is no clarification of required versus optional combinations.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must define the parameters. It usefully explains allowed `to` values, sibling placement via `above`, and group placement via `parent`, but it does not describe the `layer` parameter at all, leaving a central input undocumented.

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

Purpose4/5

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

The description clearly states a specific action and resource: 'Restack a layer.' It also explains the main restacking modes, making the tool distinguishable in practice from layer creation, deletion, or transformation tools, though it does not explicitly contrast itself with those siblings.

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

Usage Guidelines3/5

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

Usage is implied by 'Restack a layer' and by the descriptions of `to`, `above`, and `parent`, but there is no explicit guidance on when to choose this over sibling layer tools or when not to use it. The parameter modes provide some context, but the agent must infer the appropriate scenario.

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

ask_visionB

Ask another vision AI about the canvas and get its answer as text: a second opinion or critique, a caption, or a detailed prompt for an image model. provider: anthropic (Claude), openai (GPT, or any OpenAI-compatible server such as Ollama or LM Studio), gemini. Optionally a region or a single layer.

NameRequiredDescriptionDefault
xNo
yNo
layerNo
modelNo
widthNo
heightNo
max_sizeNo
providerNo
questionYes

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It usefully discloses that calls go to an external provider (Anthropic, OpenAI-compatible servers, Gemini) and that canvas scope can be narrowed to a region or single layer, implying a read-oriented operation. It omits critical operational context: whether API keys/backends must be configured, latency/cost, what happens when no region is given (full canvas?), and whether the call has 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.

Conciseness4/5

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

Roughly three sentences: purpose and output forms are front-loaded, followed by the provider enumeration. There is little waste, though the provider list is dense and could be better separated from the capability statement.

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

Completeness3/5

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

For a nine-parameter tool with no annotations and no output schema, the description covers purpose and provider choice but leaves credential setup, default capture scope, image downscaling behavior, and return-shape expectations unstated. It is workable but not complete enough that an agent could invoke it confidently without trial and error.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate for nine undocumented properties. It explains provider (with concrete values), model (implicitly via Claude/GPT/Gemini), and that a region or single layer can be targeted, which maps loosely to x/y/width/height/layer. It says nothing about max_size (default 1024), coordinate units, or how width/height interact with x/y, leaving several parameters unexplained.

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

Purpose4/5

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

The description uses a specific verb and resource ('Ask another vision AI about the canvas and get its answer as text') and enumerates the output kinds (critique, caption, image-model prompt). It implicitly differentiates from local siblings like analyze_image or read_pixels by emphasizing 'another vision AI', but never names those alternatives explicitly, so an agent must infer the split.

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

Usage Guidelines3/5

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

The three listed use cases (second opinion/critique, caption, prompt generation) give implied usage context. However, there is no explicit when-not guidance, no mention of how this differs from local analysis tools in the sibling list, and no mention of prerequisites like configured API credentials.

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

auto_enhanceC

One-click photo fix: stretch the tonal range (per channel also removes colour casts).

NameRequiredDescriptionDefault
layerNo
per_channelNo
clip_percentNo

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It implies a destructive tonal change but doesn't say whether it modifies the active layer, creates a new one, is undoable, or how it interacts with the layer parameter; the mechanism of clipping is only hinted at.

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

Conciseness4/5

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

A single tight sentence with the core effect front-loaded; the parenthetical adds useful detail without waste. It is short, though its brevity is also the source of its gaps.

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

Completeness2/5

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

For a mutation tool with no annotations, no output schema, and 0% schema description coverage on three parameters, the description is far too thin. An agent cannot know how the parameters alter behavior or what the operation does to the document.

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

Parameters2/5

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

Schema coverage is 0%, so all three parameters (layer, per_channel, clip_percent) need explanation. The description only partially explains per_channel's effect (removing colour casts) and says nothing about what layer selects or what clip_percent controls or its valid range.

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

Purpose4/5

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

The description states a specific operation ('stretch the tonal range') and names the additional effect of the per-channel mode ('removes colour casts'). It is distinguishable from siblings like adjust_image or match_colors, though it doesn't explicitly say it contrasts with them.

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

Usage Guidelines2/5

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

There is no guidance on when to use auto_enhance versus adjust_image, match_colors, or colorize_lineart. The phrase 'one-click photo fix' implies a quick automatic correction, but the agent gets no conditions for choosing this over manual adjustment tools.

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

batchA

Run several tool calls in one go, in order: [{"tool": "draw_shapes", "args": {...}}, ...] (max 200). Any tool except batch itself. Returns one result per operation; images (canvas_snapshot, view_image) are returned after the summary. Much faster than one call per step.

NameRequiredDescriptionDefault
operationsYes
stop_on_errorNo

TDQS

A3.6/5.0
Behavior2/5

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

No annotations exist, so the description carries the full behavioral burden. It does disclose ordering, the 200 cap, non-recursiveness, and that images come back after the summary, but it says nothing about failure semantics: whether a failing operation aborts the remainder, whether completed operations persist, or whether any of this is destructive or reversible. For a tool that can execute up to 200 mutating calls, that is a major omission.

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

Conciseness5/5

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

Three dense sentences, no filler: capability, payload format with a concrete example, then return behavior and the performance rationale. Front-loaded and sized well for a tool whose schema is nearly empty.

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

Completeness4/5

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

With no output schema and no annotations, the description does cover return shape ('one result per operation', images after the summary) and the nesting restriction. It falls short on error handling and on 'stop_on_error', which is exactly the information an agent needs to decide whether a long batch is safe.

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

Parameters3/5

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

Schema description coverage is 0%, yet the description fully explains the shape of 'operations' via the inline example (tool name plus args object) and its bound. The second parameter, 'stop_on_error', is never mentioned in the description, and the JSON schema carries only a title and default true — so its behavior on partial failure is undocumented in both places.

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

Purpose5/5

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

States a specific verb and resource ('Run several tool calls in one go, in order'), shows the literal argument shape with an example, caps it at 200, and excludes the recursive case ('Any tool except batch itself'). An agent immediately knows this is a meta-dispatch tool distinct from every single-purpose sibling.

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

Usage Guidelines3/5

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

It implies usage conditions ('Much faster than one call per step') and states the one hard exclusion, but never says when batching is wrong — notably whether later calls can depend on earlier results, or whether the agent should fall back to individual calls when it needs intermediate output. That missing negative guidance matters for an orchestrator tool.

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

brush_strokeA

Paint ONE stroke with Krita's real brush engine (texture, wet mixing, ... from the preset). points: [[x, y], ...] or [[x, y, pressure 0..1], ...] (pressure needs a pressure-sensitive preset). preset: brush preset name or unique part of it (see list_brush_presets; default: the current brush). size in px, opacity/flow 0..1, eraser=true erases with the brush. smooth=true curves through the points. closed/fill: close the path / fill it with the colour (outline=false for fill only). Painting respects the current selection. The user's own brush settings are restored afterwards.

NameRequiredDescriptionDefault
fillNo
flowNo
sizeNo
colorNo
layerNo
closedNo
eraserNo
pointsYes
presetNo
smoothNo
opacityNo
outlineNo

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does much of it: it discloses that pressure only works with a pressure-sensitive preset, that strokes are clipped to the current selection, and that the user's own brush settings are restored afterwards (an important side-effect guarantee for a mutation tool). It still omits the return value and whether the stroke is undoable as a single step.

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

Conciseness4/5

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

Compact and front-loaded with the core action, then grouped parameter notes. The telegraphic style ('size in px, opacity/flow 0..1') is efficient rather than bloated, though the fragmentary formatting is slightly harder to parse than full sentences.

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

Completeness4/5

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

For a 12-parameter mutation tool with no annotations and no output schema, this covers the critical calling semantics well, including the settings-restoration side effect. The remaining gaps are the undocumented color/layer parameters and the lack of any statement about what is returned or how failures surface.

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

Parameters4/5

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

Schema coverage is 0%, so the description must compensate, and it does for most parameters: points accept [x,y] or [x,y,pressure], preset takes a name or unique fragment and defaults to the current brush, size is in px, opacity/flow are 0..1, eraser paints with the brush in erase mode, smooth interpolates a curve, and closed/fill/outline are explained. It leaves 'color' and 'layer' entirely undocumented, which matters for a tool with 12 parameters.

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

Purpose5/5

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

States a specific verb and resource ('Paint ONE stroke with Krita's real brush engine'), and the emphasis on ONE stroke plus the texture/wet-mixing phrasing distinguishes it from vector siblings like draw_shapes and from fill_selection. An agent can tell immediately that this is the raster-brush painting tool.

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

Usage Guidelines3/5

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

Usage is implied rather than stated: it points to list_brush_presets for preset discovery and notes that painting respects the current selection, which is use-relevant context. However, it never says when to choose this over draw_shapes, fill_selection, or krita_action, and there are no exclusions.

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

camera_moveA

Bring a still to life without any AI model: renders the current picture through a moving virtual camera into an animation (a new document by default). move: dolly_in, dolly_out, push_in, pull_back, zoom_in, zoom_out, crash_zoom, pan_left, pan_right, tilt_up, tilt_down, orbit_left, orbit_right, crane_up, crane_down, handheld, ken_burns, static. intensity 0.1-3. render_path = also render it, e.g. 'shot.mp4'.

NameRequiredDescriptionDefault
fpsNo
moveNodolly_in
widthNo
secondsNo
intensityNo
render_pathNo
new_documentNo

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does disclose two important behaviors: a new document is created by default, and render_path additionally renders the result to a file. It does not state whether the source document is modified, whether the operation is undoable, or how long rendering takes, leaving 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.

Conciseness4/5

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

The core purpose is front-loaded in the first clause, and the long move list is compactly enumerated rather than prose-wrapped. The text is dense and slightly run-on, but nearly every token carries information.

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

Completeness3/5

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

For a 7-parameter tool with no annotations and no output schema, the description covers the key creative controls and the side effect of document creation, but omits output dimensions, frame rate, and duration semantics. An agent could call it correctly with defaults but would be guessing on several parameters.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate, and it does for the most important parameters: it enumerates all 19 valid 'move' values (the schema has no enum), gives the intensity range 0.1-3, and shows a render_path example. It leaves fps, width, and seconds undocumented, so it is strong but not complete.

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

Purpose5/5

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

States a specific verb and resource ('renders the current picture through a moving virtual camera into an animation') and explicitly distinguishes itself from AI-based siblings with 'without any AI model', which separates it from generate_video/generate_image. An agent can identify the tool's function 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.

Usage Guidelines3/5

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

The phrase 'without any AI model' implies this is the non-generative alternative to generate_video, and 'a new document by default' hints at the default workflow. However, there is no explicit when-to-use/when-not guidance or named alternative, so the routing signal is only implied.

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

canvas_snapshotA

Return the current composite image so you can SEE the canvas. Optionally zoom into a region (x, y, width, height in canvas pixels). max_size caps the longest side (64-4096). layer = show only that layer (transparent elsewhere). grid = draw labelled canvas-coordinate lines every grid pixels, to read off exact positions. frame = look at another animation frame (the current frame is restored).

NameRequiredDescriptionDefault
xNo
yNo
gridNo
frameNo
layerNo
widthNo
heightNo
max_sizeNo

TDQS

A3.9/5.0
Behavior4/5

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

With zero annotations the description carries the full burden, and it does disclose real behavior: the frame option temporarily switches animation frame and restores the current one (a side effect worth knowing), layer blanking makes everything else transparent, grid burns labelled coordinate lines into the returned image, and max_size caps the longest side. What is missing is the return channel (image content vs. path) and whether output is cached or re-rendered per call.

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

Conciseness5/5

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

The core purpose is front-loaded in the first clause, then each optional behavior gets exactly one compact clause. No filler, no repetition of the schema, and the parenthetical layout makes scanning for the parameter of interest trivial.

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

Completeness4/5

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

For an 8-parameter, zero-annotation, no-output-schema tool this is close to self-sufficient: all options are explained and the frame-restore side effect is called out. Minor omissions remain – the layer value format and the response format – but neither would likely cause a failed call.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must do all the work, and it covers nearly every parameter: x/y/width/height are in canvas pixels, max_size caps the longest side with a stated 64-4096 range, and grid/layer/frame each get a one-line meaning. The gap is the layer parameter, whose accepted value form (name vs. id/index) is never specified, and no hint that x/y/width/height must be supplied together as a region.

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

Purpose4/5

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

"Return the current composite image so you can SEE the canvas" names a concrete verb (return) and resource (composite canvas image), and the follow-on options (zoom, layer isolation, grid overlay, frame) describe capabilities that clearly are not those of siblings like view_image or export_image. It stops short of explicitly naming which sibling it replaces, so the differentiation is inferred from capabilities rather than stated.

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

Usage Guidelines3/5

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

Usage is implied through purpose clauses – "so you can SEE the canvas", "to read off exact positions" – which tell the agent the intended scenarios for grid and zoom. However, no alternative is named: an agent choosing between canvas_snapshot, view_image, read_pixels, and analyze_image gets no explicit when-to-pick-this guidance, and no exclusions are given.

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

colorize_lineartC

Flat-colour line art with Krita's Colourise Mask: regions = [{"color": "#e0b090", "points": [[x,y],...] (a scribble inside the area)} or {"color": ..., "rect": [x,y,w,h]}]. Krita floods each scribble's colour up to the lines. transparent_color marks areas to leave empty.

NameRequiredDescriptionDefault
nameNoColourise
layerNo
cleanupNo
regionsYes
edge_detectionNo
transparent_colorNo

TDQS

C2.9/5.0
Behavior3/5

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

With no annotations, the description carries the full burden; it usefully explains the flood-fill behavior and the semantics of transparent_color for leaving areas empty. However it never says whether a new layer is created (the 'name' default of 'Colourise' hints at it), whether the operation is destructive or undoable, or how it interacts with an existing layer.

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

Conciseness4/5

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

Two tight sentences with the core action and the region format front-loaded, no filler. The inline JSON fragment is slightly awkward but earns its space as the only specification of the regions structure.

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

Completeness2/5

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

For a six-parameter mutation tool with no annotations and no output schema, the description covers only the regions shape and transparent_color. It omits return values, whether a layer is created or modified, and the meaning of cleanup/edge_detection, which an agent needs before calling correctly.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate, and it does well for 'regions' — supplying the exact object shape with color/points or color/rect, which the schema only types as a generic object array. But 'name', 'layer', 'cleanup' (default 0.7), and 'edge_detection' are entirely unexplained, leaving four of six parameters opaque.

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

Purpose4/5

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

Opens with a specific verb+resource: "Flat-colour line art with Krita's Colourise Mask," and explains the underlying mechanism (flooding each scribble's colour up to the lines). An agent can distinguish this from generic painting tools like brush_stroke or fill_selection, though no sibling is named explicitly.

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

Usage Guidelines2/5

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

No statement of when to use this versus alternatives such as fill_selection, apply_filter, or brush_stroke, and no prerequisites (e.g. whether a line-art layer must be active). Usage is only inferable from the mechanics described.

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

convert_color_spaceB

Convert the image colour space, e.g. depth U16/F16/F32 for high-precision grading, back to RGBA/U8 for pixel tools. model: RGBA, GRAYA, CMYKA, LABA, XYZA. Profile defaults to sRGB.

NameRequiredDescriptionDefault
depthNoU8
modelNoRGBA
profileNo

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations at all, the description carries the full behavioral burden and leaves the most important traits unstated: whether the conversion is destructive or in-place, whether it applies to the whole document, the active layer, or a selection, and whether it returns a new image. It does add one useful default ('Profile defaults to sRGB'), but that is closer to parameter semantics than to behavior.

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

Conciseness4/5

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

The verb and resource are front-loaded, and every clause carries information — the depth examples, the model list, and the profile default all earn their place. It is dense to the point of terseness (the line break mid-sentence and compressed phrasing), but there is no filler.

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

Completeness3/5

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

For a mutation tool with no annotations and no output schema, the definition covers parameters well but omits scope of effect (document/layer/selection) and return behavior. An agent could call it with plausible arguments yet be unsure what it is actually converting or what state it leaves behind.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate, and it largely does: it enumerates valid model values (RGBA, GRAYA, CMYKA, LABA, XYZA), states the profile default (sRGB), and gives depth examples (U16/F16/F32, RGBA/U8). The gap is that depth's valid values are only shown by example rather than enumerated, and the profile's accepted form (path vs. name) is never clarified.

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

Purpose4/5

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

The description names a specific verb and resource ('Convert the image colour space') and grounds it with concrete examples (U16/F16/F32 depth for grading, RGBA/U8 for pixel tools), which distinguishes it from siblings like adjust_image or match_colors. It stops short of explicitly contrasting with those siblings, but the operation is unambiguous.

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

Usage Guidelines3/5

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

Use cases are implied rather than stated: 'for high-precision grading' and 'back to RGBA/U8 for pixel tools' hint at when a caller would reach for this tool. There is no explicit when-not guidance, no mention of alternatives such as adjust_image or match_colors, and no prerequisites (e.g. whether the document must be in a certain mode).

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

create_artworkA

START HERE when the user asks you to make a picture from a prompt. Creates the document and either GENERATES it with an image model (realistic photos, cinematic stills, anything photographic) or sets it up for you to PAINT it with Krita's own brushes. approach: auto (decides: realism or a connected image model -> generate; hand-made / graphic requests or no model -> paint), generate, paint, or hybrid (generate, then add layers for you to paint over and refine). style: photo, cinematic, portrait, product, fashion, street, landscape, macro, food, architecture, drone, concept_art, illustration, anime, watercolor, oil_painting, 3d_render, pixel_art, comic, sketch (default: guessed from the prompt). aspect: 1:1, 4:3, 3:4, 3:2, 2:3, 16:9, 9:16, 21:9, 4:5, 5:4 (or width/height). count = variations to compare (generate; default 4 on a local GPU, 1 on paid cloud services, which charge per image). For painting it returns a plan; then use brush_stroke / draw_shapes / add_svg, look with canvas_snapshot, and iterate. To turn your painted sketch into a realistic image later: generate_image(control=[{"layer": "Sketch", "type": "scribble"}], style="photo").

NameRequiredDescriptionDefault
nameNo
seedNo
countNo
modelNo
styleNo
widthNo
aspectNo1:1
heightNo
promptYes
backendNo
approachNoauto

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses that painting mode returns a plan rather than an image, that style defaults to a guess from the prompt, and that count defaults to 4 on local GPU but 1 on paid cloud services that charge per image. It does not say what happens to an existing document or how failures surface, which keeps it from a 5.

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

Conciseness4/5

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

Front-loaded with the trigger condition and the generate-vs-paint fork, then parameter guidance, then the follow-on workflow. Dense but nearly every clause carries information; the inline enumeration of 20+ style values is long but genuinely useful given the schema has no enums.

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

Completeness4/5

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

For an 11-parameter, no-annotation, no-output-schema tool, the description covers the decision logic, the mode-dependent return shape, cost behavior, and the downstream workflow. The unexplained name/seed/model/backend parameters are the main omission, but they are secondary to correct invocation.

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

Parameters4/5

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

Schema coverage is 0%, so the description must compensate, and it does for most parameters: it enumerates approach values with their decision logic, lists style and aspect options with defaults, explains count's cost tradeoff, and notes width/height as an alternative to aspect. It leaves name, seed, model, and backend entirely unexplained, which is a real gap across 11 parameters.

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

Purpose5/5

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

States a specific verb and resource ('Creates the document') and immediately splits the two modes: GENERATES with an image model or sets up for PAINT with Krita brushes. The 'START HERE' framing plus the explicit contrast with generate_image and the painting siblings makes it unmistakable which tool to pick.

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

Usage Guidelines5/5

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

Gives explicit routing rules: 'auto' decides realism/connected model -> generate, hand-made/graphic or no model -> paint, plus hybrid. It also names the follow-on tools (brush_stroke, draw_shapes, add_svg, canvas_snapshot) and the escape hatch to generate_image with a control layer, so the agent knows both when to use this and what comes next.

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

create_layerA

Create a layer or mask; it becomes the active layer. type: paintlayer (fill = optional solid colour), vectorlayer, grouplayer, filllayer (fill = colour, or pattern = pattern resource name) - a non-destructive colour/pattern layer, filterlayer (filter + filter_params) - non-destructive adjustment of everything below, clonelayer (source = layer to mirror live), filelayer (path = image in the workspace, kept as a live link), filllayer with generator = seexpr | screentone | gradient | multigrid and generator_config, e.g. seexpr {"script": "$c = noise(10*$u, 10*$v); [$c, $c*0.8, 1-$c]"} (procedural textures), screentone {"pattern": 0, "shape": 0, "frequency_x": 30, "rotation": 45, "foreground_color": "#000000", "background_color": "#ffffff"} (manga tones), gradient {"shape": "radial", "start_position_x": 50, "start_position_y": 50, "end_position_x": 100, "end_position_y": 50} (uses the user's fg/bg colours), filtermask (filter + filter_params) / transparencymask - attached to parent (default: active layer), limited to the current selection if there is one. parent = group layer id/name (or the layer a mask attaches to); above = sibling to stack over.

NameRequiredDescriptionDefault
fillNo
nameNoLayer
pathNo
typeNopaintlayer
aboveNo
filterNo
parentNo
sourceNo
patternNo
generatorNo
filter_paramsNo
generator_configNo

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses the side effect that the new layer becomes active, that fill/filter layers are non-destructive, that clonelayers and filelayers stay live-linked, that masks attach to parent (defaulting to the active layer), and that creation is clipped to the current selection. It omits failure conditions (no open document, invalid filter name) and whether the operation is undoable.

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

Conciseness3/5

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

The core purpose is front-loaded and the length is defensible given 12 undocumented parameters, but the body is a dense run-on enumeration with dangling fragments ('type:', 'parent = ...; above = sibling to stack over.'). Bullet-per-type formatting would preserve the same content with far better scanability.

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

Completeness4/5

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

For a 12-parameter creation tool with no annotations and no output schema, the description covers nearly everything an agent needs to construct a valid call, including nested config shapes. The remaining gap is return behavior — it never says what comes back (e.g. the new layer's id/name), which matters since no output schema exists.

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

Parameters5/5

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

Schema description coverage is 0% across 12 parameters, so the description must compensate and largely does: fill, path, parent, above, filter, filter_params, source, pattern, generator, generator_config, and type each get concrete meaning, including worked generator_config examples for seexpr, screentone, and gradient. Only 'name' (default 'Layer') is left to obvious inference.

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

Purpose5/5

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

States a specific verb and resource up front ('Create a layer or mask') and then enumerates every creatable type (paintlayer, vectorlayer, grouplayer, filllayer, filterlayer, clonelayer, filelayer, filtermask, transparencymask). This makes it unmistakable versus siblings like update_layer, duplicate_layer, or delete_layer, and the 'becomes the active layer' clause fixes the resulting state.

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

Usage Guidelines4/5

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

Guidance is embedded per type: filllayer for non-destructive colour/pattern, filterlayer for non-destructive adjustment of everything below, clonelayer for live mirroring, filelayer for a live-linked image, plus the selection caveat and the parent default of 'active layer'. It never names a sibling to use instead (e.g. update_layer for modifying an existing layer), so the when-not path is left implicit.

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

crop_imageB

Crop the canvas to a rectangle, or to the current selection's bounds when no rectangle is given.

NameRequiredDescriptionDefault
xNo
yNo
widthNo
heightNo

TDQS

B3/5.0
Behavior2/5

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

No annotations are supplied, so the description carries the full behavioral burden. It never says that cropping discards pixels outside the rectangle, whether the operation is undoable, or what happens if only some of x/y/width/height are provided. For a destructive canvas mutation with zero annotation coverage, this is a substantial gap.

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

Conciseness5/5

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

A single well-formed sentence with the primary behavior front-loaded and the fallback clause second. Nothing is wasted and nothing is buried.

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

Completeness2/5

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

With no annotations, no output schema, and four completely undocumented parameters, the description should explain coordinate semantics and the destructive nature of the operation. It covers the high-level intent but leaves an agent unable to call it correctly with confidence.

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

Parameters2/5

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

Schema description coverage is 0%, so the four parameters (x, y, width, height) are documented nowhere. The description only alludes to a 'rectangle' without specifying coordinate origin, units, whether all four must be supplied together, or how partial values are handled.

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

Purpose4/5

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

The description gives a specific verb (crop) and resource (the canvas), plus the two modes of operation: an explicit rectangle or the current selection's bounds. It implicitly distinguishes itself from siblings like resize_canvas and scale_image, which change dimensions rather than discarding pixels, though it never names them.

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

Usage Guidelines3/5

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

It states the fallback condition clearly: with no rectangle, the selection bounds are used. That is a real usage rule, but there is no guidance on when to prefer crop over resize_canvas or scale_image, and no mention of prerequisites such as an active selection being required for the fallback path.

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

delete_layerC

Delete a layer (default: active layer).

NameRequiredDescriptionDefault
layerNo

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are supplied, so the description carries the full burden for a destructive mutation. It does not say whether the deletion is undoable, what happens to pixel content on the layer, whether it errors when the target is missing, or what the response contains. Only the default-target behavior is disclosed.

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

Conciseness4/5

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

One short sentence with the key behavior front-loaded and no filler. Nothing is bloated, though the brevity leaves the definition thin for a destructive operation.

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

Completeness2/5

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

For a destructive tool with no annotations, no output schema, and an undocumented parameter, the description is too sparse. An agent cannot tell whether the call is reversible, what identifier to pass, or what it returns.

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

Parameters3/5

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

Schema description coverage is 0%, and the schema only shows a nullable string with default null, which gives an agent little to work with. The description partly compensates by explaining that omitting the argument targets the active layer, but it never states what form the 'layer' value should take (name, id, index).

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

Purpose4/5

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

The description states a specific verb and resource ('Delete a layer'), which clearly separates it from siblings like create_layer, update_layer, and merge_down. It does not explicitly name those alternatives, 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.

Usage Guidelines2/5

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

The only usage signal is the parenthetical '(default: active layer)', which explains fallback behavior when no argument is given. There is no guidance on when to prefer this over merge_down, update_layer, or remove_vector_shapes, and no mention of prerequisites or cautions before deleting.

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

describe_filterB

Default parameters of a filter, so you know which params apply_filter accepts.

NameRequiredDescriptionDefault
nameYes

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries the full burden. It does not say this is a read-only, side-effect-free lookup, does not describe the shape of what comes back (parameter names, types, defaults), and does not say how an unknown filter name is handled.

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

Conciseness4/5

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

A single efficient sentence with the purpose front-loaded and no redundant wording. It is tight, but tightness here borders on under-specification given the schema documentation gaps.

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

Completeness4/5

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

The tool is simple, with one parameter and no output schema, and the description does convey the essential contract: return defaults so the agent can construct an apply_filter call. The missing pieces, where `name` comes from and what the returned structure looks like, are noticeable but small for a tool of this complexity.

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

Parameters2/5

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

Schema coverage is 0% and the single required parameter `name` has no description in the schema. The description only hints that it identifies 'a filter'; it adds no format, source, or validity information beyond that, so the agent is left guessing what to supply.

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

Purpose4/5

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

The description names a specific resource, a filter's default parameters, and frames the tool as introspection aimed at apply_filter. An agent can distinguish it from apply_filter and list_filters, though it never states the retrieval verb explicitly or that the result is keyed by filter name.

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

Usage Guidelines3/5

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

The description implies the use case, finding out which params apply_filter accepts, so it is clearly upstream of apply_filter. It never says when not to call it, and it does not tell the agent where the required `name` value comes from (presumably list_filters), leaving a real step to inference.

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

document_activateB

Switch the active document (index from krita_status).

NameRequiredDescriptionDefault
indexYes

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It does not state whether the switch is reversible, what happens on an out-of-range or stale index, whether unsaved changes matter, or what the tool returns; the only behavioral hint is that indices come from krita_status. For a state-mutating focus switch, this is a significant gap.

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

Conciseness5/5

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

A single short sentence with the action front-loaded and the parameter hint in a parenthetical; there is no filler or redundancy.

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

Completeness4/5

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

The tool is simple (one required parameter, no nested objects, no output schema), so the description does not need to explain return values. What is missing is only failure behavior for invalid indices, which is a modest gap given the tool's low complexity.

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

Parameters3/5

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

Schema coverage is 0% and the schema only declares a bare integer named "Index". The description partially compensates by anchoring the value to krita_status output, but it leaves the base (0- vs 1-based) and the validity range unstated, so the agent still cannot be certain of the correct value to pass.

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

Purpose4/5

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

"Switch the active document" is a specific verb+resource pair that is clearly distinct from sibling document operations such as document_new, document_open, document_info, and document_close. The parenthetical reinforces that this is a focus/selection change rather than a file operation, though it doesn't explicitly name a 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.

Usage Guidelines3/5

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

The parenthetical "index from krita_status" implies a prerequisite workflow (call krita_status first to obtain valid indices), which is genuinely useful routing information. However, there is no explicit when-to-use/when-not guidance and no mention of what to do if the target document is not yet open (e.g., use document_open instead).

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

document_closeA

Close the active document. Unsaved changes are discarded unless save=true.

NameRequiredDescriptionDefault
saveNo

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden and does the most important part: it warns that unsaved changes are discarded and names the flag that prevents that loss. It leaves unstated what happens afterward (whether another document becomes active, or what is returned), which keeps it below a 5.

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

Conciseness5/5

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

Two short sentences with zero waste, and the destructive default is placed where it will be read rather than buried. Nothing could be removed without losing information.

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

Completeness4/5

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

For a one-parameter tool with no annotations and no output schema, the description covers the essential risk (data loss) and the escape hatch. It is only slightly short on post-close state, which matters little for correct invocation.

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

Parameters3/5

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

Schema coverage is 0% and the single parameter `save` has no description, but the prose explains its effect (save=true preserves changes, default discards). That covers the semantics, though it does not state the default explicitly or what a save failure would mean for the close.

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

Purpose4/5

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

The description gives a specific verb and resource ("Close the active document"), which is immediately distinguishable from siblings like document_open, document_new, or save_document. It does not explicitly contrast itself with save_document, which also concerns the active document, 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.

Usage Guidelines3/5

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

Usage is only implied by the action itself — an agent can infer it closes whatever document is currently active. There is no statement of when to prefer save_document instead, nor any note that another document must be activated first if a different one should be closed.

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

document_infoA

Active document details including the full layer tree (listed bottom-to-top) and selection bounds.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are supplied, so the description carries the full behavioral burden. It contributes one genuinely useful, non-obvious fact – the layer tree is ordered bottom-to-top – and implies a side-effect-free read. It does not state that the call is read-only, what happens with no active document, or how large the returned tree may be.

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

Conciseness5/5

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

A single front-loaded sentence with no filler. The ordering parenthetical is the one addition and it earns its place.

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

Completeness3/5

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

With no output schema, the description must explain the return value, and it only names two components while 'Active document details' leaves the rest unspecified (dimensions, color space, filename, behavior when nothing is selected). Adequate for a zero-parameter info call, but not fully self-contained.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline of 4 applies. The schema is trivially complete.

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

Purpose4/5

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

States a specific resource (the active document) and enumerates the key payload: the full layer tree and selection bounds. It is clearly a read-only info tool, distinguishable from mutating siblings like update_layer. It stops short of naming a sibling like list_layers, so an agent must infer the distinction itself.

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

Usage Guidelines3/5

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

Usage is implied by 'info' and 'Active document details' – you call it to inspect the current document. There is no explicit when-to-use, no statement about when to prefer list_layers or krita_status instead, and no note that no document must be open for it to fail.

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

document_newB

Create a new RGBA 8-bit sRGB document and make it active. background: colour or 'transparent'.

NameRequiredDescriptionDefault
nameNoUntitled
widthNo
heightNo
backgroundNowhite
resolution_ppiNo

TDQS

B3/5.0
Behavior3/5

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

With no annotations, the description does real work: it fixes the color model, bit depth and colorspace (RGBA 8-bit sRGB, none of which are parameters) and discloses the side effect that the new document becomes active. It does not say what is returned (document id/info), whether creation can fail, or how the document is named on disk.

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

Conciseness5/5

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

Two short sentences, front-loaded with the core action and format constraints, then the one parameter nuance. No filler, nothing redundant.

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

Completeness2/5

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

For a create tool with zero annotations, zero schema descriptions and no output schema, the description is thin: an agent still cannot tell what the call returns, the units for width/height, or what happens to the previously active document. Only the color-model and background semantics are filled in.

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

Parameters2/5

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

Schema description coverage is 0% across 5 parameters, so the description must compensate, yet it only clarifies one: background accepts a colour or 'transparent'. Name, width, height and resolution_ppi are left without units (pixels? PPI semantics) or bounds, despite having silent defaults.

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

Purpose4/5

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

The description gives a specific verb and resource ("Create a new ... document and make it active") and pins down the document format as RGBA 8-bit sRGB. The verb "new" implicitly separates it from document_open and document_activate, though it never names those siblings explicitly.

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

Usage Guidelines2/5

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

There is no guidance on when to use this versus document_open (open existing file) or import_image, and no stated prerequisites or restrictions (e.g. whether it's valid with no active workspace). Usage must be inferred entirely from the verb.

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

document_openB

Open a .kra/.ora/.psd or image file from the workspace and make it active.

NameRequiredDescriptionDefault
pathYes

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations supplied, the description carries the full burden. It does disclose a meaningful side effect — the opened document becomes the active document — which is real behavioral context an agent needs. It says nothing about what happens to any already-open document, whether the file is locked or read-only, or what errors occur on a bad path, so it is only partially transparent for a state-changing operation.

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

Conciseness5/5

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

A single front-loaded sentence with no filler; each clause (supported formats, workspace source, active-document effect) carries distinct information. Nothing is redundant or re-stated from the schema.

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

Completeness3/5

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

For a one-parameter tool with no annotations and no output schema, the description covers what is opened, from where, and the resulting state change. It omits the return value entirely (no output schema exists to document it) and does not address interaction with already-open documents, leaving an agent unable to predict the response shape.

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

Parameters3/5

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

Schema description coverage is 0% and the single parameter `path` has no schema-level description, so the description must compensate. It does add one useful constraint — the path is relative to "the workspace" rather than an arbitrary filesystem location — but gives no format, relative-vs-absolute rules, or extension handling.

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

Purpose4/5

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

The description gives a specific verb ("Open") plus the resource (a file from the workspace) and enumerates supported formats (.kra/.ora/.psd or image), which tells an agent exactly what kinds of files are accepted. It also states the post-condition ("make it active"). It stops short of distinguishing itself by name from close siblings such as document_new, document_activate, or import_image, so a 4 rather than a 5.

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

Usage Guidelines2/5

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

There is no explicit when-to-use or when-not-to-use guidance and no named alternative, despite a dense sibling set where confusion is likely (document_new for creation, document_activate for switching, import_image for bringing in raster content). The format list only weakly implies usage. The agent must infer selection criteria on its own.

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

draw_shapesA

Draw vector-style primitives (anti-aliased) onto a paint layer, in order (max 5000 per call). Every shape has "type" and optional "opacity" (0..1). Types: line {x1,y1,x2,y2,color,stroke_width} polyline {points:[[x,y],...],color,stroke_width} bezier {points:[start, c1,c2,end, c1,c2,end ...],color,stroke_width} (1+3n points) rect {x,y,width,height,radius?,fill?,stroke?,stroke_width?,gradient?} ellipse {cx,cy,rx,ry,fill?,stroke?,stroke_width?,gradient?} polygon {points:[[x,y],...],fill?,stroke?,stroke_width?,gradient?} text {x,y,text,size(px),font?,bold?,color} (x,y = baseline-left) For closed shapes color is the fill when neither fill nor stroke is given. gradient: {"type":"linear","x1","y1","x2","y2","stops":[[0,"#fff"],[1,"#000"]]} or {"type":"radial","cx","cy","r","stops":[...]}. layer = id or name of a paint layer (default: active layer). These are crisp geometric shapes; for painterly marks use brush_stroke.

NameRequiredDescriptionDefault
layerNo
shapesYes

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations the description carries the full burden, and it discloses a lot: draw order, a 5000-shape cap, anti-aliased rasterization onto a paint layer, coordinate convention (baseline-left for text), and the fill/stroke fallback for color. It still omits whether drawing mutates or overwrites existing pixels, whether the result is undoable, and what happens if the named layer 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.

Conciseness4/5

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

Front-loaded with the core action and limits, then a compact per-type field table that earns its space as a payload specification. The density is justified by the unstructured item schema, though the type block is reference-manual style rather than narrative.

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

Completeness4/5

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

Given no annotations, no output schema, and a free-form array payload, the description supplies nearly everything needed to construct a valid call. Missing only return-value expectations (shape ids/counts) and failure behavior for bad layer references or malformed points.

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

Parameters5/5

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 does: it enumerates every shape type with its exact field set, documents the 1+3n bezier point rule, the gradient object forms, and defines the layer parameter as an id or name with active-layer default.

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

Purpose5/5

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

States a specific verb and resource ('Draw vector-style primitives ... onto a paint layer') plus the ordering and volume bounds. The closing line distinguishes it from brush_stroke, so an agent can pick between the two without opening either schema.

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

Usage Guidelines4/5

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

Names the sibling alternative and the condition selecting it ('for painterly marks use brush_stroke'), and gives the default-targeting rule ('default: active layer'). It does not address how it relates to other shape tools such as add_svg, list_vector_shapes, or remove_vector_shapes.

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

duplicate_layerB

Duplicate a layer directly above the original.

NameRequiredDescriptionDefault
nameNo
layerNo

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are supplied, so the description carries the full disclosure burden, and all it conveys is placement ('directly above the original'). It does not say what the duplicate is named, whether it becomes the active/selected layer, whether the source is the given `layer` or the current selection, or what happens if the layer does not exist. For a mutation tool with zero annotation coverage this leaves significant behavioral gaps.

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

Conciseness5/5

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

A single front-loaded sentence with no filler; the key outcome (placement above the original) is stated immediately. Nothing is wasted or redundant.

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

Completeness3/5

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

The tool is conceptually simple and has no output schema to explain, so a short description is defensible. Nevertheless, with two undocumented optional parameters, no annotations, and no note about how the layer is identified or what the duplicate inherits, it falls short of what an agent needs to invoke it confidently.

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

Parameters2/5

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

Schema description coverage is 0% for both parameters and the description never mentions `name` or `layer`. An agent must infer that `layer` selects the source (and how – by name? by identifier?) and that `name` names the copy, which is exactly the kind of ambiguity the description should resolve. The phrase 'the original' hints at a layer selector but adds no real semantics.

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

Purpose4/5

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

States a specific verb and resource ('Duplicate a layer') plus the resulting placement ('directly above the original'), which distinguishes it from create_layer or arrange_layer without opening a schema. It does not explicitly name those siblings, 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.

Usage Guidelines3/5

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

Usage is strongly implied by the word 'duplicate' – use this instead of create_layer when you want a copy of an existing layer. However, there is no explicit when-to-use / when-not-to-use statement, no mention of alternatives like create_layer or transform_layer, and no precondition such as an active layer being required.

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

export_animation_framesC

Render frames as numbered PNGs into a workspace folder.

NameRequiredDescriptionDefault
endNo
startNo
folderNoframes
prefixNoframe

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are supplied, so the description carries the entire behavioral burden. It reveals the output format and destination but omits important behavior: that it writes files (a mutation with side effects), what happens on filename collisions or to existing folder contents, whether the range is inclusive, and likely runtime cost for long ranges.

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

Conciseness5/5

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

One short sentence, front-loaded with the verb and the output artifact, with no filler. Nothing could be trimmed without losing content.

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

Completeness2/5

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

For a file-writing export tool with four undocumented parameters, no annotations, and no output schema, one sentence is far from sufficient. An agent cannot determine defaults behavior, range semantics, or overwrite risk before invoking it.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate; it only partially does. 'Numbered' hints that start/end select a frame range and 'workspace folder' maps to folder, but the meaning of start/end (frame indices, inclusive/exclusive, null = all frames) and the role of prefix are left entirely unexplained.

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

Purpose4/5

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

States a specific verb ('Render') plus the resource ('frames') and the output form ('numbered PNGs into a workspace folder'). It implicitly separates this from render_video or export_image by describing a sequential PNG frame dump, though it never names an alternative explicitly.

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

Usage Guidelines2/5

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

There is no when-to-use guidance: no mention of prerequisites (e.g., an animation/document must be active), no indication that leaving start/end null exports the whole timeline, and no pointer to export_image, render_video, or animation_contact_sheet as alternatives.

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

export_imageA

Export the flattened image to png/jpg/webp/bmp/tiff/psd/ora in the workspace (format from extension). layer = export only that layer (cropped to its content unless full_canvas). quality = 0-100 for jpg/webp. x/y/width/height = export just that region (e.g. the area to send to an inpainting model).

NameRequiredDescriptionDefault
xNo
yNo
pathYes
layerNo
widthNo
heightNo
qualityNo
full_canvasNo

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the full disclosure burden and does well: it explains extension-driven format selection, that layer export is cropped to content unless full_canvas, and that quality applies only to jpg/webp. It omits whether the export is non-destructive to the document, whether it overwrites existing files, and what the call returns.

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

Conciseness5/5

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

Four compact sentences in a front-loaded "param = meaning" format with zero filler; the core export statement comes first, then parameter modifiers. Nothing can be cut without losing information.

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

Completeness4/5

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

For an 8-parameter export tool with no annotations and no output schema, the description covers the call semantics well enough to invoke it correctly. Minor gaps remain around path resolution (relative vs absolute, workspace root behavior) and whether a return value/path is produced.

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

Parameters5/5

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 8 parameters, and it does: path/format via extension, layer, full_canvas, quality range, and the x/y/width/height region quad with a practical example. Each optional parameter's effect on the output is explained in a way the bare schema titles ("X", "Y", "Width") never could.

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

Purpose5/5

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

States a specific verb (export) and resource (flattened image), lists the supported formats, and scopes the output to the workspace with format inferred from the file extension. The word "flattened" distinguishes it from sibling exports like export_selection_mask and export_animation_frames.

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

Usage Guidelines4/5

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

Gives concrete usage contexts through the parameter notes: layer export for per-layer output, region export "for the area to send to an inpainting model". It does not explicitly steer the agent away from sibling tools (export_selection_mask, canvas_snapshot), so routing requires some inference.

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

export_selection_maskB

Save the current selection as a greyscale PNG mask (white = selected) for inpainting models.

NameRequiredDescriptionDefault
pathYes
invertNo

TDQS

B3/5.0
Behavior2/5

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

No annotations are supplied, so the description carries the full disclosure burden. It does reveal the output format and the white=selected polarity, which is genuinely useful, but says nothing about what happens with an empty/absent selection, whether the target file is overwritten, or what the call returns — all material for a write-to-disk tool.

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

Conciseness4/5

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

A single front-loaded sentence that identifies the saved artifact and its pixel convention with no filler. It is appropriately sized, though the brevity comes partly at the cost of the missing parameter and behavior detail noted above.

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

Completeness3/5

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

For a two-parameter side-effect tool with no annotations and no output schema, the description covers the core purpose and output encoding but leaves the path contract, the invert flag, and failure/overwrite behavior undocumented — enough to attempt a call, not enough to call it confidently.

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

Parameters2/5

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

Schema description coverage is 0% across two parameters, so the description must compensate and largely does not: 'path' is never identified as an output file path (versus a directory, with or without extension), and 'invert' is never explained, only indirectly hinted at by the 'white = selected' convention.

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

Purpose4/5

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

States a specific verb and resource ('Save the current selection as a greyscale PNG mask') plus the encoding convention (white = selected), which clearly separates it from the generic export_image sibling. It stops short of naming export_image or set_selection explicitly, so the differentiation is implied rather than stated.

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

Usage Guidelines3/5

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

The trailing phrase 'for inpainting models' implies the intended downstream use, but there is no explicit statement of when to pick this over export_image or whether a selection must first be created via set_selection. Usage is inferable but not spelled out.

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

fill_selectionA

Fill the current selection on a paint layer with a colour; omit colour to erase the selected pixels.

NameRequiredDescriptionDefault
colorNo
layerNo

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It usefully discloses that the tool only affects paint layers and that omitting the colour destroys the selected pixels (an erase), which is valuable context. However, it does not say what happens when no selection exists, whether the operation is undoable, or what the response contains.

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

Conciseness5/5

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

A single well-structured sentence with the primary action front-loaded and the erase case attached after a semicolon. No filler or redundant restatement of the tool name.

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

Completeness3/5

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

For a two-parameter destructive-ish paint operation with no annotations and no output schema, the description covers the main action and the erase mode but leaves the layer target and no-selection edge case unexplained. Adequate but with clear gaps.

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

Parameters3/5

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

Schema description coverage is 0% – both parameters have only titles and null defaults. The description meaningfully explains that an omitted/null colour means erase, covering the most important ambiguity of 'color'. But the 'layer' parameter is never addressed: whether it takes a name, id, or index, nor what the active layer fallback is.

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

Purpose4/5

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

States a specific verb and resource: fill the current selection on a paint layer with a colour. An agent can distinguish it from brush_stroke or draw_shapes because it operates on an existing selection rather than drawing new geometry. It does not explicitly name a sibling alternative, 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.

Usage Guidelines3/5

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

The 'omit colour to erase' clause is genuine usage guidance for one mode of the tool, but there is no statement of when to prefer this over related tools (set_selection, modify_selection, brush_stroke) or any prerequisite such as an active selection being required.

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

find_colorB

Where does a colour occur? Returns connected regions (bbox, share, centroid), largest first, plus total coverage. Good for locating objects before editing them.

NameRequiredDescriptionDefault
xNo
yNo
colorYes
layerNo
limitNo
widthNo
heightNo
toleranceNo

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations and no output schema, the description usefully discloses the response structure and ordering ('connected regions... largest first, plus total coverage'), which the agent would otherwise have to guess. It stops short of behavioural detail: nothing about how tolerance affects region merging, what limit truncates, or whether omitted x/y/width/height default to the whole canvas.

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

Conciseness4/5

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

Two tight sentences with the core question front-loaded and the return shape immediately following. The fragment-style opening is slightly cryptic but costs no words that could be spent on parameters.

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

Completeness2/5

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

For an 8-parameter tool with zero schema coverage, no annotations, and no output schema, the definition is under-specified: the search scope parameters (x/y/width/height/layer) and tolerance semantics are the main risk of a mis-call and are unaddressed. Only the return value side is adequately covered.

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

Parameters2/5

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

Schema description coverage is 0% across 8 parameters. The description only implicitly covers 'color' and hints at ordering (relevant to 'limit'); x, y, width, height, layer, and tolerance — the parameters that determine search scope and matching strictness — carry no explanation anywhere. This is a substantial gap the description should compensate for but does not.

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

Purpose4/5

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

The description states a specific operation (finding where a colour occurs) and enumerates the return shape (bbox, share, centroid, largest first, total coverage). It is clearly distinguishable from sample_color or match_colors by describing regions rather than pixel or palette operations, though it never names those siblings explicitly.

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

Usage Guidelines3/5

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

One implicit usage cue is given: 'Good for locating objects before editing them.' There is no statement of when not to use it, no mention of alternatives such as sample_color or analyze_image, and no prerequisites or ordering advice.

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

find_skillsA

Find skills - step-by-step know-how for kinds of Krita work (photoreal images, hand painting, retouching, video, and any the user installed). Search with a few words about the task; then load the one that fits with use_skill. Cheap: returns names and one-line descriptions only.

NameRequiredDescriptionDefault
limitNo
queryNo

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the disclosure burden and does meaningful work: it describes the cost profile ("Cheap") and the return shape ("names and one-line descriptions only"), which tells the agent this is a lightweight discovery call, not a content fetch. It does not mention permissions, failure modes, or result ordering, so it is not fully complete.

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

Conciseness5/5

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

Three short sentences, front-loaded with what a skill is, then the call pattern, then the cost/return note. Every sentence adds information an agent needs to choose and invoke the tool correctly; nothing is redundant.

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

Completeness4/5

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

For a two-parameter discovery tool with no output schema, the description covers the essentials: the entity being searched, the search style, the follow-up tool, and the shape of results. The only omission is any hint about how limit affects behavior or how results are ranked.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It explains the query parameter's intent well ("a few words about the task"), replacing the vague schema default of an empty string. However, the limit parameter and its default of 8 are never explained, leaving a real gap.

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

Purpose5/5

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

States a specific verb and resource ("Find skills") and immediately defines what a skill is: "step-by-step know-how for kinds of Krita work," with example domains. It is clearly distinguished from the sibling use_skill, which it frames as the follow-up action rather than a competitor.

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

Usage Guidelines4/5

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

Gives concrete when-to-use guidance ("Search with a few words about the task") and explicitly routes to the alternative ("load the one that fits with use_skill"), establishing a clear two-step workflow. It lacks any when-not-to-use guidance, such as skipping the search when the skill name is already known.

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

flatten_imageB

Merge all layers into one.

NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are supplied, so the description carries the full behavioral burden, yet it omits that flattening is destructive and discards layer structure. It also does not say whether hidden, locked, or non-visible layers are included, or whether the operation requires an active document.

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

Conciseness5/5

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

A single six-word sentence that front-loads the action and names the scope; nothing is redundant and nothing pads the definition.

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

Completeness2/5

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

For a destructive, no-argument canvas operation with no annotations and no output schema, the description should at minimum warn that the change collapses all layers irreversibly and note undo availability. It conveys the action but none of the risk context an agent needs before invoking it.

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

Parameters4/5

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

The tool takes zero parameters and the schema is empty, so there is no parameter meaning for the description to add. Baseline 4 applies for a no-argument tool.

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

Purpose4/5

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

"Merge all layers into one" states a specific verb (merge) and resource (all layers) plus the resulting state, so an agent knows exactly what the operation does. It does not, however, distinguish itself from the close sibling merge_down, which a caller must resolve by name inference alone.

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

Usage Guidelines2/5

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

There is no explicit when-to-use or when-not-to-use guidance, and no mention of the obvious alternative merge_down for collapsing a single layer. Usage is only inferable from the action itself, leaving the agent to guess which merge tool matches its intent.

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

flipB

Mirror the whole image (target=image) or one layer (target=layer). direction: horizontal or vertical.

NameRequiredDescriptionDefault
layerNo
targetNoimage
directionNohorizontal

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are supplied, so the description carries the full behavioral burden. It never states whether the flip is applied in place, whether it is undoable, whether it affects the active selection or canvas dimensions, or what the caller receives back; for a mutating image operation this leaves significant gaps.

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

Conciseness5/5

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

Two short sentences, front-loaded with the operation and its scope split, then the direction options. Every clause carries useful information and nothing is padded.

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

Completeness3/5

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

With zero required parameters, no annotations, and no output schema, the description covers the happy path of target and direction but omits what happens on success, how the layer argument is resolved, and what defaults do when arguments are omitted.

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

Parameters3/5

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

Schema description coverage is 0% and no parameter has an enum, so the description legitimately adds value by enumerating target=image/layer and direction=horizontal/vertical. However, the `layer` parameter is never explained: it is unclear how a layer is identified (name vs id) or that it only applies when target=layer.

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

Purpose4/5

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

"Mirror the whole image (target=image) or one layer (target=layer)" names a specific verb (mirror/flip) and resource, and immediately splits the operation by scope. An agent can distinguish it from rotate_image or crop_image without opening any schema, though no sibling is named explicitly.

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

Usage Guidelines3/5

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

Usage is implied by the operation itself: call this when a mirror is wanted on the image or a single layer. There is no explicit when-not guidance and no pointer to alternatives such as rotate_image or transform_layer for other transforms.

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

for_each_frameA

Apply the same tool calls to every frame of an animation / imported video, e.g. colour-grade a clip: [{"tool": "adjust_image", "args": {"operation": "temperature", "settings": {"temperature": 30}}}]. Frames default to the playback range (max 1000 frames, 20 operations).

NameRequiredDescriptionDefault
endNo
stepNo
startNo
operationsYes

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are supplied, so the description carries the full disclosure burden. It does disclose valuable operational limits (max 1000 frames, 20 operations) and the default frame range (playback range), which no structured field provides. It says nothing about cost, latency, undo behaviour, or whether the original frames are replaced or a new result is produced.

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

Conciseness4/5

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

Two sentences, front-loaded with the core action, followed by the example payload and the limits. The example is long but earns its space by resolving the undocumented 'operations' format. Nothing reads as filler.

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

Completeness4/5

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

For a 4-parameter, no-annotation, no-output-schema tool, the description covers the essentials: what gets operated on, the operations payload format, the default range, and the hard caps. The remaining gap is behavioural (what happens to source frames, cost of a 1000-frame run), which is a real but secondary omission.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must carry parameter meaning, and it does: it specifies the exact shape of each element in 'operations' ({tool, args}) with a concrete worked example, and explains that start/end default to the playback range. That is meaning an agent cannot derive from an array-of-objects schema. Only 'step' is left to the default value.

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

Purpose4/5

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

States a specific verb and resource: apply the same tool calls to every frame of an animation or imported video. The example (colour-grading a clip) pins down the kind of work it is for. It does not explicitly distinguish itself from the sibling 'batch' tool, which is the one nearby capability an agent might confuse it with.

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

Usage Guidelines3/5

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

Usage is conveyed by example ('colour-grade a clip') rather than by an explicit when-to-use rule, and there is no statement of when not to use it. With 'batch' among the siblings, the absence of any routing guidance between the two leaves a real decision to inference.

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

generate_imageA

Generate pixels with an image model and place them as NEW layers (one undo step). mode: auto (inpaint if there is a selection, else txt2img), txt2img, img2img (rework the region; strength 0..1 = how much changes), inpaint (regenerate only the selected pixels; soft edges blend). The region is the selection's bounds + padding (or x/y/width/height, or region='canvas'); results are cut to the selection, so nothing outside it changes. count 1-8 = variations in a group plus a numbered comparison sheet (choose with pick_variation). backend: comfyui, a1111, openai, gemini, stability, replicate, fal (default: KRITA_MCP_IMAGE_BACKEND or the first available - see ai_backends). model = checkpoint / model id (Replicate 'owner/name', fal 'fal-ai/...'). size = longest side to generate at (default 1024). workflow = a ComfyUI API-format graph saved as /workflows/NAME.json using {{prompt}} {{negative}} {{seed}} {{image}} {{mask}} {{width}} {{height}} {{strength}} placeholders (ControlNet, IP-Adapter, Flux, ... anything ComfyUI can do). extra = provider-specific inputs. control = guide the composition with a layer, e.g. [{"layer": "Sketch", "type": "lineart", "strength": 0.8}] - paint a sketch / pose / depth layer and the model follows it. type: lineart, scribble, canny, softedge, depth, openpose, normal, seg, tile, ...; model = ControlNet model (default: the first installed whose name contains the type); preprocess = A1111 preprocessor (e.g. depth_midas when the layer is a photo); start/end 0..1; layer omitted = the whole picture. Real ControlNet on comfyui / a1111 (several guides at once; in workflows use {{control}} / {{control_1}}...); stability uses its sketch / structure control; openai and gemini receive the guide as the image to follow. style = a look recipe added to the prompt (with a matching negative prompt): photo, cinematic, portrait, product, fashion, street, landscape, macro, food, architecture, drone (realistic) or concept_art, illustration, anime, watercolor, oil_painting, 3d_render, pixel_art, comic, sketch.

NameRequiredDescriptionDefault
xNo
yNo
cfgNo
modeNoauto
nameNo
seedNo
sizeNo
countNo
extraNo
modelNo
stepsNo
styleNo
widthNo
heightNo
promptYes
regionNoauto
backendNo
controlNo
paddingNo
samplerNo
strengthNo
workflowNo
schedulerNo
negative_promptNo

TDQS

A4.3/5.0
Behavior4/5

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

There are no annotations, so the description carries the full burden, and it discloses substantial behavior: results are new layers in one undo step, generation is clipped to the selection so nothing outside it changes, count>1 produces a group plus a numbered comparison sheet, and backend resolution falls back to KRITA_MCP_IMAGE_BACKEND or the first available backend. Control-guide handling is explicitly differentiated per provider (real ControlNet on comfyui/a1111, sketch/structure on stability, image-to-follow on openai/gemini). It still omits failure modes, credential/API-key requirements, and speed or cost characteristics of the remote backends.

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

Conciseness4/5

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

The text is a single dense block, but it is telegraphic rather than padded — nearly every clause conveys a distinct fact (a default, a range, a fallback rule, a provider caveat). The purpose leads the paragraph and the mode rules come next, so the most decision-relevant content is front-loaded, though the wall-of-text layout makes scanning harder than it needs to be for a tool this complex.

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

Completeness4/5

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

For a 24-parameter tool with no annotations, no output schema, and zero schema descriptions, the definition is unusually complete: it explains mode routing, region geometry, variation grouping, backend fallbacks, workflow templating, and control-guide semantics. The remaining shortfall is the undocumented sampling knobs (cfg, steps, sampler, scheduler, seed) and the name parameter, which an agent must guess at.

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

Parameters4/5

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

Schema description coverage is 0% across 24 parameters, so the description must compensate and largely does: mode, region/x/y/width/height, padding, count, backend, model (with per-provider id formats), size, strength, workflow (file path plus the placeholder list), extra, control (object keys, types, defaults, start/end), and style presets are all explained. Gaps remain for cfg, steps, sampler, scheduler, seed, and name, which are never mentioned, though several are conventional diffusion settings an agent can infer.

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

Purpose5/5

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

The first sentence states a concrete verb and object — generate pixels with an image model and place them as NEW layers — and adds the side-effect detail (one undo step). It is clearly distinguishable from sibling tools such as upscale_image, outpaint, create_artwork, and generate_video.

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

Usage Guidelines4/5

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

The mode enumeration gives real decision guidance: auto picks inpaint when a selection exists and otherwise txt2img; img2img 'rework the region' with strength controlling how much changes; inpaint regenerates only selected pixels with soft-edge blending. The count section even routes the agent to pick_variation for choosing a result. However, it never says when to prefer this tool over its close siblings (outpaint for extending the canvas, upscale_image, create_artwork), so the alternative-selection rule is incomplete.

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

generate_videoA

Make a video with a video model, save it in the workspace and (by default) open it in Krita as an animation to paint over, grade or re-render. use_canvas=true sends the current picture as the start frame (image-to-video) or, for HeyGen, as the background behind the avatar. backend: heygen (talking avatar: script + avatar_id + voice_id; character='photo' makes the character painted on the canvas talk), openai (Sora), gemini (Veo), replicate / fal (any video model id). camera = a cinematic camera move written into the prompt: dolly_in, dolly_out, push_in, pull_back, crash_zoom, pan_left/right, tilt_up/down, orbit_left/right, crane_up/down, handheld, fpv_drone, whip_pan, bullet_time, ken_burns, static. style = a look (cinematic, photo, anime, ... as in generate_image). Generation can take several minutes. (No video model? camera_move animates the picture locally.)

NameRequiredDescriptionDefault
pathNo
extraNo
modelNo
styleNo
widthNo
cameraNo
heightNo
promptNo
scriptNo
backendNo
secondsNo
voice_idNo
avatar_idNo
characterNoavatar
max_framesNo
use_canvasNo
negative_promptNo
import_into_kritaNo

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does disclose meaningful behavior: the result is saved to the workspace, optionally imported into Krita as an animation layer stack, and 'Generation can take several minutes' warns about long latency. It does not say what is returned (path? document handle?), what happens on backend failure, or whether partial artifacts are left behind.

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

Conciseness4/5

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

Front-loads the core action and side effects in the first sentence, then uses compact labeled fragments for backend, camera and style. The parenthetical asides and trailing '(No video model? ...)' note make it denser than ideal, but nearly every clause carries distinct information.

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

Completeness3/5

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

For an 18-parameter generative tool with no annotations and no output schema, the description covers the workflow and backend routing well but omits return values, resolution/duration parameter behavior (width, height, seconds, max_frames) and the meaning of path/extra. An agent could call it with defaults but would be guessing on several knobs.

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

Parameters4/5

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

Schema description coverage is 0% across 18 parameters, so the description must compensate, and it does for the high-ambiguity ones: backend, use_canvas, camera (full enumerated list of moves), style, character, model. However path, extra, width, height, seconds, max_frames and negative_prompt are never explained, leaving roughly half the surface undocumented.

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

Purpose5/5

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

States a specific verb and resource ('Make a video with a video model') plus the full lifecycle: saved in the workspace and by default opened in Krita as an animation. It also differentiates itself from siblings by naming camera_move as the local no-model alternative and by referencing generate_image semantics for style.

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

Usage Guidelines4/5

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

Gives concrete selection rules: use_canvas=true means image-to-video for most backends and background-behind-avatar for HeyGen, and per-backend requirements (heygen needs script + avatar_id + voice_id; replicate/fal need a model id). The fallback 'No video model? camera_move animates the picture locally' names an alternative with its condition, but there is no explicit statement of when not to use this tool (e.g. cost/quality tradeoffs vs. render_video or import_video).

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

historyC

Your undoable edits in the active document plus Krita's own undo stack (done=false = undone).

NameRequiredDescriptionDefault
limitNo

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations, the description carries the full burden. It usefully states that results combine user undoable edits and Krita's undo stack and that done=false means undone, but it does not state read-only behavior, ordering, pagination, or side effects.

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

Conciseness4/5

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

The definition is a single compact sentence with the key content front-loaded. It wastes no words, though the noun-phrase phrasing makes the action less explicit than it could be.

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

Completeness2/5

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

There is no output schema and no annotations, while the description explains only what the history contains. It omits return structure, limit behavior, ordering, and the relationship to undo/redo, leaving meaningful gaps for an agent that must call it correctly.

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

Parameters2/5

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

Schema description coverage is 0%, and the only parameter, limit, is not mentioned in the description. Its name and default value make it somewhat intuitive, but no behavioral semantics are added.

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

Purpose3/5

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

The description identifies the resource as undoable edits plus Krita's own undo stack, so an agent can infer it retrieves history. However, it gives no verb such as list or get and does not explicitly distinguish the tool from sibling undo/redo operations.

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

Usage Guidelines2/5

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

There is no explicit guidance on when to use this tool versus undo or redo, nor any stated prerequisites. The content implies inspection rather than mutation, but the agent must infer that.

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

import_assetA

Put a search_assets result on a new layer. Textures tile across the canvas by default (tile_size = px per tile; texture_map: diffuse, normal, roughness, ao, displacement); hdris and photos cover the canvas (fit: cover, contain, stretch, tile, none). To texture a painted shape: import it, then update_layer(clipped=true, blend_mode='overlay' or 'multiply') above the shape in the same group. Returns the layer and the attribution to credit (photos).

NameRequiredDescriptionDefault
idYes
fitNo
kindNotextures
nameNo
parentNo
opacityNo
tile_sizeNo
blend_modeNo
resolutionNo2k
texture_mapNodiffuse

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses that textures tile by default, that hdris/photos cover the canvas, the allowed fit and texture_map values, and that the return includes the layer plus photo attribution. It omits permission requirements and what happens to existing layers or how parent/opacity interact with the new layer.

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

Conciseness4/5

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

The core action is front-loaded in the first sentence, and the parenthetical enumerations of fit and texture_map values are compact. The workflow sentence is slightly dense but every clause adds usable information.

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

Completeness3/5

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

For a 10-parameter tool with no annotations and no output schema, the description covers the asset-type-dependent behavior and return value but leaves several parameters (parent, opacity, resolution, name) undocumented. It is adequate but not complete for the tool's complexity.

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

Parameters3/5

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

Schema description coverage is 0% across 10 parameters, so the description must compensate. It explains tile_size, texture_map, and fit well, and implies kind via the textures/hdris/photos distinction, but leaves id, name, parent, opacity, blend_mode, and resolution entirely unexplained.

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

Purpose5/5

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

The first sentence states a specific verb and resource ('Put a search_assets result on a new layer'), which both names the operation and ties it to the sibling that produces its input. An agent can distinguish it from import_image or import_image_from_url 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.

Usage Guidelines4/5

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

It clearly routes the agent from search_assets into this tool and gives a concrete follow-up workflow (import, then update_layer with clipped=true and overlay/multiply above the shape). It does not explicitly contrast with import_image or import_image_from_url, so the alternative-selection guidance is incomplete.

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

import_framesB

Load image files from the workspace (in order) as frames of a new animated layer.

NameRequiredDescriptionDefault
stepNo
pathsYes
first_frameNo

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations at all, the description carries the full burden, and it does disclose the key behavioral facts: a mutation that creates a NEW layer (non-destructive to existing content) and that file order maps to frame order. It says nothing about frame-size compatibility, failure handling for missing paths, what happens if the document lacks an animation timeline, or what is returned.

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

Conciseness4/5

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

A single front-loaded sentence with the verb first and no filler; every clause carries information. It is efficient, though the terseness trades away detail that this 3-parameter tool needs.

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

Completeness2/5

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

For a mutation tool with no annotations, no output schema, and zero parameter documentation, the description is too thin. An agent cannot determine what 'step' and 'first_frame' do or what constraints apply to the imported images, so it would have to guess on a call that creates document content.

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

Parameters2/5

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

Schema description coverage is 0%, so all three parameters are undocumented in structured data. The description only implicitly touches 'paths' via '(in order)'; 'step' (presumably a frame sampling interval) and 'first_frame' (presumably a starting frame offset) are never explained, leaving their meaning to guesswork.

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

Purpose4/5

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

The description gives a specific verb ('Load') and resource ('image files from the workspace') plus the resulting artifact ('frames of a new animated layer'), which clearly separates it from siblings like import_image or import_video. It stops short of explicitly naming those alternatives, but the animated-layer outcome makes the intent unambiguous.

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

Usage Guidelines3/5

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

Usage is only implied: an agent can infer this is for building animation from an ordered image sequence, and '(in order)' hints the paths list is sequenced. There is no explicit when-to-use guidance, no prerequisite (e.g., an open document), and no mention of when to prefer import_video or batch instead.

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

import_imageA

Put a raster image on a NEW paint layer. Provide path (inside the workspace) OR image_base64 (PNG/JPEG/WebP bytes). fit: contain (default), cover, stretch, none (natural size at x,y), or selection (stretched over the selection and masked by it, soft edges included - for inpainting). This is how images from an image-generation model get into Krita for further editing.

NameRequiredDescriptionDefault
xNo
yNo
fitNo
nameNoImported image
pathNo
widthNo
heightNo
parentNo
image_base64No

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does well: it discloses that a NEW paint layer is created (a document mutation), that the path must be inside the workspace, and which byte formats are accepted. It omits what happens if neither source is supplied or both are, and does not mention undo/reversibility.

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

Conciseness4/5

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

Front-loaded with the core action, then input sources, then fit modes; the parentheticals ('soft edges included - for inpainting') add real selection guidance rather than filler. Slightly dense in the fit enumeration but nothing is wasted.

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

Completeness3/5

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

For a 9-parameter, zero-annotation, mutation tool with no output schema, four parameters (name, width, height, parent) go entirely undocumented and error behavior for missing sources is unstated. The image-import path itself is well covered, so it is adequate but with clear gaps.

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

Parameters3/5

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

Schema description coverage is 0% across 9 parameters, so the description must compensate and only partially does. It fully documents fit (all five modes with semantics) and the path/image_base64 exclusivity, and implies x/y meaning through the 'none' mode, but name, width, height, and parent are never explained.

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

Purpose5/5

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

States a specific verb and resource ('Put a raster image on a NEW paint layer') plus a constraint that separates it from siblings: 'raster' distinguishes it from add_svg, and 'path OR image_base64' distinguishes it from import_image_from_url. An agent can identify the right tool 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.

Usage Guidelines4/5

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

The closing sentence gives a clear when-to-use context ('how images from an image-generation model get into Krita for further editing'), and the fit-mode list implies the inpainting use case via the 'selection' mode. No explicit when-not or named alternative, but the input-source rule (path OR base64) is a usable routing cue.

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

import_image_from_urlA

Download a PUBLIC http(s) image URL (no redirects, max 25 MB, private addresses blocked) and place it on a new layer. Same placement options as import_image.

NameRequiredDescriptionDefault
xNo
yNo
fitNo
urlYes
nameNoImported image
widthNo
heightNo

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the load and does it well: it discloses network constraints (no redirects, 25 MB cap, private-address blocking) and the side effect of creating a new layer. It does not say what happens on failure, timeout, or unsupported content types, and doesn't state that this is a network operation with latency.

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

Conciseness5/5

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

Two tight sentences with the source-type constraint front-loaded and limits in a compact parenthetical. No filler.

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

Completeness3/5

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

For a 7-parameter, zero-coverage, no-annotation, no-output-schema tool, the description covers the risky part (fetching from a URL) thoroughly but delegates six placement/name parameters to a sibling reference. Adequate but not self-contained.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It clarifies 'url' semantics well, and 'Same placement options as import_image' gives indirect meaning to x/y/fit/width/height, but that requires consulting another tool, and 'name' (default 'Imported image') is never addressed.

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

Purpose5/5

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

States a specific verb and resource ('Download a PUBLIC http(s) image URL and place it on a new layer') and implicitly separates itself from the file-based sibling via 'Same placement options as import_image.' An agent can tell this is the remote-source variant without opening either schema.

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

Usage Guidelines4/5

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

'PUBLIC http(s)' and 'private addresses blocked' effectively exclude internal/local targets and point to import_image for local files. However, the routing to import_image is only implied by the placement-options reference rather than stated as 'use import_image for local files.'

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

import_videoA

Decode a video (mp4/mov/webm/mkv/avi/gif...) from the workspace into an animated layer so every frame can be painted, filtered or adjusted. Opens a new document sized to the video unless into_current. start/duration in seconds; fps resamples; width scales (keeps aspect). Max 1000 frames.

NameRequiredDescriptionDefault
fpsNo
nameNo
pathYes
startNo
widthNo
durationNo
max_framesNo
into_currentNo

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations at all, the description carries the full burden and does substantial work: it discloses the side effect of creating a new document, the frame cap (max 1000), fps resampling, and aspect-preserving width scaling. It stops short of stating what happens past the frame cap, whether an error is returned, or what the result looks like, which are meaningful gaps for a resource-heavy import.

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

Conciseness5/5

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

Three tight sentences, front-loaded with the core action and formats, then the document-creation rule, then a compact parameter clause. No filler, and the most decision-relevant fact (new document vs into_current) lands early.

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

Completeness4/5

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

For an 8-parameter tool with no annotations and no output schema, the description covers side effects, limits and most parameter meanings well enough to call it correctly. It leaves the return value and failure behavior unspecified, and the 'name' parameter ambiguous, which keeps it just short of complete.

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

Parameters4/5

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

Schema description coverage is 0% with 8 parameters, so the description must compensate, and it does for most: start/duration units (seconds), fps resampling effect, width scaling with aspect preserved, into_current's document behavior, and max_frames (with a 1000 cap vs the 240 default). 'path' and 'name' are left unexplained — notably whether 'name' labels the document or the resulting layer.

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

Purpose5/5

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

States a specific verb and resource ('Decode a video ... into an animated layer') plus the supported formats, and the phrase 'so every frame can be painted, filtered or adjusted' distinguishes it from import_frames, import_image and video_info without opening any schema.

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

Usage Guidelines4/5

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

It clearly frames the use case (bring a workspace video in as an editable frame layer) and gives the key decision rule: 'Opens a new document sized to the video unless into_current'. It never explicitly names alternatives such as video_info for inspection or import_frames for image sequences, so the routing is implied rather than spelled out.

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

keyframeB

Keyframe operation on a paint layer at frame: blank (new empty drawing), duplicate (copy of the previous drawing), remove, remove_and_pull (shift later frames back), hold (insert a hold frame, shifting later ones), unhold. The layer becomes animated; draw on it while at that frame.

NameRequiredDescriptionDefault
kindNoblank
frameYes
layerNo

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It does useful work here by disclosing the downstream side effects of the mutating kinds (remove_and_pull and hold shift later frames), and by stating 'The layer becomes animated'. It omits other behavioral facts an agent needs: whether the operation is undoable, whether layer must be a currently active paint layer, what happens when frame is out of range, and what is returned.

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

Conciseness4/5

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

Two sentences, front-loaded with the operation list and ending with the practical consequence. The parenthetical glosses are dense but every one earns its place by defining a value the schema leaves untyped. Minor cost: the kind enumeration is a long comma run that could be easier to scan as a list.

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

Completeness3/5

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

For a three-parameter mutation tool with no annotations and no output schema, the definition covers the operation kinds and the frame target but leaves the layer parameter, the return value, and undo/permission behavior undescribed. Adequate to attempt a call, but an agent would have to experiment to learn what layer=null does.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate, and it does so well for kind — a bare string with no enum in the schema, whose six legal values are only defined in the description. It also clarifies frame as the target position. However, the layer parameter (nullable, default null) is never mentioned, so its meaning is left entirely to guesswork.

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

Purpose4/5

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

The first sentence names a specific resource (a paint layer) and a specific frame target, and enumerates the six operations the tool can perform, so an agent knows exactly what it does. It does not, however, disambiguate itself from close siblings such as list_keyframes, export_animation_frames, or animation_set, so the boundary is left implicit.

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

Usage Guidelines3/5

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

Usage is only implied through the parenthetical glosses on each kind (e.g. 'duplicate (copy of the previous drawing)', 'remove_and_pull (shift later frames back)'). There is no explicit when-to-use versus when-not-to-use guidance, and no sibling (animation_set, list_keyframes) is named as an alternative for related tasks. The trailing sentence 'draw on it while at that frame' is the only real workflow hint.

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

krita_actionB

Run one of Krita's own commands on the active document/layer (curated, no dialogs): selection: select_all, deselect, reselect, invert_selection, select_opaque(_add|_subtract|_intersect), copy_selection_to_new_layer, cut_selection_to_new_layer, clear_selection_pixels, fill_with_foreground, fill_with_background, fill_with_pattern, selection_to_vector_shape layers: convert_to_paint_layer, convert_to_animated_layer, convert_group_to_animated, convert_to_transparency_mask, convert_to_selection_mask, alpha_into_mask, flatten_layer, isolate_layer, isolate_group, rotate_layer_90_cw|90_ccw|180, mirror_all_layers_horizontally|vertically image: rotate_image_90_cw|90_ccw|180, trim_to_image, trim_to_layer, trim_to_selection, duplicate_image_as_new_document, create_snapshot animation: next_frame, previous_frame, next_keyframe, previous_keyframe, first_frame, last_frame, toggle_onion_skin, play_pause, stop_playback view: zoom_to_fit, zoom_to_100, zoom_in, zoom_out, mirror_view, rotate_view_left|right, reset_view, toggle_wrap_around, toggle_grid, toggle_pixel_grid, toggle_guides, toggle_rulers, toggle_selection_display, toggle_canvas_only

NameRequiredDescriptionDefault
nameYes
layerNo

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It usefully discloses the execution model (native Krita command, no dialogs, acts on the active document/layer), but it does not flag that several listed commands are destructive or irreversible in effect (flatten_layer, clear_selection_pixels, trim_to_image, cut_selection_to_new_layer), nor does it mention error behavior for unknown names or whether operations land in undo history.

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

Conciseness4/5

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

The one-sentence preamble is front-loaded and the enumeration is grouped into labeled categories, so scanning is easy. Length is justified because it is the only source of the allowed command values, though the compressed alternative-syntax notation adds avoidable parsing burden.

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

Completeness3/5

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

For a two-parameter command dispatcher with no output schema and no annotations, the description covers the input value domain well but leaves the agent guessing on several practical points: the meaning of the optional layer argument, return content, and failure modes. It is adequate but not sufficient to invoke confidently in edge cases.

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

Parameters4/5

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

Schema description coverage is 0% and the 'name' field has no enum, so the description is doing real work by supplying the entire allowed value domain, grouped by category. It falls short on the 'layer' parameter, which is never explained (whether it overrides the active layer and what 'null' means), and the pipe/underscore notation such as 'select_opaque(_add|_subtract|_intersect)' and 'rotate_layer_90_cw|90_ccw|180' must be decoded by the agent rather than listed as literal values.

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

Purpose4/5

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

The description states a specific verb and resource: 'Run one of Krita's own commands on the active document/layer (curated, no dialogs)', and then enumerates the exact command set by category. It never distinguishes this from overlapping siblings such as rotate_image, flip, flatten_image, view_control, fill_selection or set_selection, so an agent cannot tell which surface is authoritative for a given operation.

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

Usage Guidelines2/5

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

There is no explicit when-to-use or when-not-to-use guidance. The word 'curated' hints that only a subset of Krita commands is exposed, but nothing tells the agent whether to prefer this tool or the dedicated sibling (for example rotate_image, flip, or view_control) for the same effect, or what to do when a command is not in the list.

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

krita_statusB

Krita version, the sandboxed workspace folder, and the open documents (index, size, active).

NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does disclose the returned content (version, workspace folder, per-document index/size/active). However, it never states that the call is read-only and side-effect free, and since no output schema exists, the return structure is only loosely implied by a parenthetical.

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

Conciseness4/5

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

A single short sentence with no filler, and the three main return elements are front-loaded. The parenthetical field list is terse but readable.

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

Completeness3/5

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

For a zero-parameter status tool the description is mostly sufficient, listing the three categories of data returned. Because there is no output schema, it should specify more about the document entry structure (e.g. what 'size' represents, or the shape of the list) to fully compensate.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the schema to document and the baseline of 4 applies. The description instead spends its words on return content, which is appropriate for a parameterless status call.

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

Purpose4/5

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

The description names a specific resource set — Krita version, sandboxed workspace folder, and open documents with index/size/active — so an agent knows exactly what it returns. It does not explicitly differentiate itself from overlapping siblings like document_info or list_workspace, which 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.

Usage Guidelines2/5

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

There is no guidance on when to call this versus document_info or list_workspace, both of which appear to cover overlapping information. The agent must infer that this is a lightweight environment/status probe rather than a detailed document query.

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

list_brush_presetsC

Names of Krita's brush presets (optionally containing filter, e.g. 'ink', 'pencil', 'airbrush').

NameRequiredDescriptionDefault
limitNo
filterNo

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are supplied, so the description carries the full behavioral burden. Beyond implying a read, it says nothing about result ordering, whether all presets are returned or a truncated subset, or how the default limit of 200 affects output — meaningful gaps for a listing tool.

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

Conciseness4/5

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

A single compact sentence with the resource stated first and the optional filter behavior nested in parentheses. Nothing is wasted, though the parenthetical could be split into a clearer second sentence.

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

Completeness3/5

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

With no annotations and no output schema, the description should still cover truncation behavior and what the returned names are for. It handles the core purpose and filter semantics adequately but leaves the agent guessing about result size and downstream use.

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

Parameters3/5

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

Schema coverage is 0%, so the description must compensate. It does well for `filter` by explaining substring containment and giving concrete examples ('ink', 'pencil', 'airbrush'), but it says nothing about `limit` or the default truncation at 200, leaving one of two parameters undocumented everywhere.

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

Purpose4/5

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

The description names the exact resource (Krita's brush presets) and states that names are returned, which separates it from siblings like list_filters, list_resources, and pick_variation. It reads as a noun phrase rather than an explicit verb, but the intent (enumerate preset names) is unmistakable.

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

Usage Guidelines2/5

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

There is no statement of when to call this versus alternatives such as list_resources or pick_variation, and no prerequisites or exclusions are given. The only usage hint is that the `filter` argument matches substrings, which is parameter guidance 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.

list_filtersA

Names of all Krita filters usable with apply_filter.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations provided, the description carries the full disclosure burden. It does disclose the essential behavioral fact — the result is names only, not filter parameters or presets — but it says nothing about whether a document must be open, ordering, or whether the call is a pure read.

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

Conciseness4/5

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

A single short sentence with zero padding, and the key scoping cue ("usable with apply_filter") lands immediately. It is a sentence fragment without an explicit verb, which is a minor structural weakness but costs no clarity.

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

Completeness5/5

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

For a zero-argument enumeration tool with no output schema, the description supplies exactly what an agent needs: what is listed and what the list is for. There is no meaningful complexity left unexplained.

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

Parameters4/5

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

The tool takes zero parameters and the schema is an empty object, so there is nothing for the description to disambiguate. Baseline 4 applies.

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

Purpose4/5

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

The description names a specific resource ("Names of all Krita filters") and ties its scope to a named sibling ("usable with apply_filter"), so an agent can distinguish it from describe_filter and apply_filter. It is a noun phrase rather than a verb+resource statement, which keeps it just 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.

Usage Guidelines3/5

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

Usage is only implied: the phrase "usable with apply_filter" signals this is a discovery step that feeds filter application. It never states when not to use it, nor does it point at describe_filter, the sibling an agent actually needs once it has a name in hand.

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

list_keyframesC

Frames at which a layer has keyframes.

NameRequiredDescriptionDefault
endNo
layerNo
startNo

TDQS

C2.2/5.0
Behavior2/5

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

No annotations are supplied, so the description carries the full burden and discloses almost nothing. It does not say whether the result is sorted, whether it covers the whole timeline when start/end are null, whether omitting the layer returns all layers, or what happens for a layer with no keyframes.

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

Conciseness3/5

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

It is a single short, front-loaded phrase with no wasted words, but the brevity reflects under-specification rather than discipline. Structurally it is not even a complete sentence, and no key information is prioritized because none is provided.

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

Completeness3/5

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

For a simple read-only listing tool with three optional parameters and no output schema, an agent mainly needs to know the scope semantics of the nullable parameters. The description leaves those unspecified, which is a real gap, though the low complexity of the operation keeps the omission from being severe.

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

Parameters2/5

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

Schema description coverage is 0%, and all three parameters (layer, start, end) are optional with null defaults. The description only hints at the 'layer' parameter and adds nothing about the meaning or default behavior of start and end, so 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.

Purpose2/5

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

The text is a noun fragment ('Frames at which a layer has keyframes') that essentially restates the tool name list_keyframes. It never states a verb such as 'list' or 'return', and it does not distinguish the tool from siblings like 'keyframe' or 'animation_info', which plausibly overlap in the same animation domain.

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

Usage Guidelines2/5

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

There is no when-to-use or when-not-to-use guidance, and no mention of alternatives such as animation_info (for general timeline data) or keyframe (for setting keyframes). The only guidance is an implied 'use this to see keyframes on a layer', which an agent could 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.

list_layersB

Layer tree of the active document (children bottom-to-top) and the active layer id.

NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses a genuinely useful behavioral detail — children are ordered bottom-to-top — and that the active layer id is included, but it says nothing about ordering of top-level layers, failure behavior with no open document, or whether the tree is flat or nested.

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

Conciseness5/5

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

A single tight sentence that front-loads the primary return value and appends the secondary one in parentheses. No filler words.

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

Completeness3/5

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

For a zero-parameter read tool with no output schema, the description should more fully characterize the returned structure (names vs ids, nesting shape, node count), which it only partially does. It is adequate but leaves an agent guessing about how to parse the result.

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

Parameters4/5

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

The tool takes zero parameters, so the schema cannot add semantic value and there is nothing for the description to compensate for; baseline 4 applies.

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

Purpose4/5

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

The description names the resource precisely ('layer tree of the active document') plus the secondary return value (active layer id). It is distinguishable from siblings like list_vector_shapes or list_keyframes, though it does not explicitly contrast with document_info.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisite stated (e.g. that a document must be open and active), and no reference to alternative tools such as document_info or list_vector_shapes for other inspection needs.

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

list_resourcesC

Names of Krita resources: type = preset (brushes), pattern, gradient, palette, brush, workspace.

NameRequiredDescriptionDefault
typeNopreset
limitNo
filterNo

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full disclosure burden, yet it only says 'Names of' resources — it never states that the call is read-only, that the default limit is 200, whether results are truncated or paginated, or how `filter` matches. The phrase 'Names of' is a small useful hint about the return payload but far short of what a 3-parameter tool with zero annotation coverage needs.

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

Conciseness4/5

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

A single compact sentence with the resource class front-loaded and the type list following. Nothing is wasted, though the terse 'type = ...' syntax reads like a note rather than a structured instruction.

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

Completeness2/5

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

With no annotations, no output schema, and zero schema description coverage, the description should explain the two undocumented parameters and the result shape. It covers only one of three parameters, leaving an agent unable to predict truncation or filtering behavior.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It does add real meaning for `type` by enumerating the accepted values (which the schema leaves as a bare string with no enum), but `limit` and `filter` are never explained — no default, no matching semantics, no paging behavior.

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

Purpose4/5

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

The description names the resource being listed ('Krita resources') and enumerates the valid types (preset/brushes, pattern, gradient, palette, brush, workspace), so an agent knows exactly what comes back. It is clear but does not acknowledge overlapping siblings like list_brush_presets or list_workspace, so the differentiation is only partial.

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

Usage Guidelines2/5

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

There is no explicit when-to-use statement and no mention of alternatives, even though list_brush_presets and list_workspace in the sibling list clearly overlap with two of the advertised types. Usage is only implied by the enumeration of types.

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

list_vector_shapesC

Shapes on a vector layer: name, type, bbox in pixels (optionally each shape's SVG).

NameRequiredDescriptionDefault
layerNo
include_svgNo

TDQS

C2.2/5.0
Behavior2/5

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

No annotations are supplied, so the description carries the full behavioral burden, yet it only discloses that bbox units are pixels and that SVG output is optional. It says nothing about read-only semantics, ordering of returned shapes, pagination, or the output-size cost of requesting SVG for every shape.

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

Conciseness3/5

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

It is a single short sentence with no padding, and the key return-field information is front-loaded. But it is a fragment rather than a well-formed statement, and its brevity comes from omitting needed information rather than from efficient editing.

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

Completeness2/5

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

For a listing tool with no output schema, no annotations, and undocumented parameters, the description should at minimum resolve the default-layer behavior and warn about output volume with SVG. Neither is covered, leaving core invocation questions unanswered.

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

Parameters2/5

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

Schema description coverage is 0%, and both parameters are named only in the schema titles. The description hints that shapes belong to a layer and that SVG inclusion is opt-in, but it never explains what a null 'layer' means (active layer? all layers?) or how large include_svg output can become.

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

Purpose3/5

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

The description names the resource ('shapes on a vector layer') and the fields returned (name, type, bbox in pixels, optional SVG), which distinguishes it from siblings like remove_vector_shapes or draw_shapes. However, it is a noun-phrase fragment with no verb, so the 'list' action is only inferred from the tool name rather than stated.

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

Usage Guidelines1/5

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

There is no when-to-use guidance, no mention of how it relates to list_layers or remove_vector_shapes, and no statement of prerequisites. An agent must guess whether this reads the active layer or an arbitrary one.

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

list_workspaceC

Files in the workspace folder (path relative to it, size, modified time).

NameRequiredDescriptionDefault
limitNo
folderNo
recursiveNo

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden and does not meet it. It says nothing about the default recursive walk, the default limit of 200, whether results are truncated, or how errors (missing folder, permission denied) surface.

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

Conciseness3/5

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

It is short with no wasted words, but it is a sentence fragment with no leading verb, so the reader has to reconstruct the action. Brevity here comes at the cost of clarity rather than being earned economy.

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

Completeness2/5

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

For a three-parameter tool with no annotations and no output schema, the description is too thin. It partially compensates by naming likely return fields (relative path, size, modified time), but omits the recursion default and the 200-item limit, which materially affect results.

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

Parameters2/5

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

Schema description coverage is 0%, so all three parameters (limit, folder, recursive) are undocumented anywhere. The phrase 'workspace folder' and 'path relative to it' weakly hints at the folder argument, but limit and the recursion flag get no explanation at all.

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

Purpose3/5

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

The fragment 'Files in the workspace folder' identifies the resource (files in the workspace) and the parenthetical implies a listing with path/size/mtime, so the purpose is inferable. However, there is no verb and no explicit statement that this enumerates a directory, and nothing distinguishes it from siblings like list_resources or list_layers.

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

Usage Guidelines2/5

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

No when-to-use guidance, no prerequisites, and no mention of alternatives despite many list_* siblings (list_resources, list_layers, list_vector_shapes, list_brush_presets). The agent must infer from the name alone that this is the filesystem-workspace lister rather than an asset or document lister.

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

match_colorsA

Make a layer's colours sit in the scene: transfers the mean and contrast of each channel from a reference (another layer, an image file in the workspace, or a region [x,y,w,h] of the picture - by default the whole picture). Use after pasting or generating an element. Respects the selection.

NameRequiredDescriptionDefault
layerNo
strengthNo
reference_pathNo
reference_layerNo
reference_regionNo

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It usefully discloses that the operation is a statistical transfer, that the reference defaults to the whole picture, and that the selection is honoured. It does not say whether the change is destructive/undoable, which layer is affected when none is named, or how partial strength behaves.

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

Conciseness4/5

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

Three dense sentences with the core behaviour front-loaded and the usage hint following. The opening clause is slightly colloquial but not wasteful; no sentence is filler.

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

Completeness3/5

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

For a mutating image operation with no annotations, no output schema, and 0% schema coverage, the description explains the mechanism and reference sources well but omits the meaning of `strength` and the layer-targeting default. An agent could call it, but would be guessing on two of five inputs.

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

Parameters4/5

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

Schema coverage is 0%, so the description must compensate, and it does for the reference family: it explains that reference_layer, reference_path, and reference_region map to another layer, a workspace image, or an [x,y,w,h] region, with whole-picture as default. It leaves `layer` (target selection) and especially `strength` (default 1) undefined, which is a real gap for a 5-parameter tool.

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

Purpose4/5

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

States a specific verb and resource: transfers the per-channel mean and contrast of a reference onto a layer's colours. The operation is unambiguous and technically precise. It does not explicitly contrast itself with neighbours like adjust_image, auto_enhance, or colorize_lineart, so it stops 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.

Usage Guidelines4/5

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

"Use after pasting or generating an element" gives a concrete trigger condition, and "Respects the selection" tells the agent the operation is scoped to an active selection. No when-not conditions or named alternatives are given, so the agent must infer that other colour tools are not appropriate here.

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

merge_downC

Merge a layer (default: active) into the layer below it. Returns the merged layer.

NameRequiredDescriptionDefault
layerNo

TDQS

C2.6/5.0
Behavior1/5

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

No annotations are supplied, so the description carries the full burden. It reveals only that the operation returns the merged layer; it does not disclose that merging is destructive, whether it is undoable, what happens to blend modes/opacity of the lower layer, or any permission or format constraints. For a mutation with zero annotation coverage this is a serious gap.

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

Conciseness5/5

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

Two short, front-loaded sentences with no filler. The operation and its return value are stated immediately, and nothing is repeated from structured fields.

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

Completeness2/5

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

For a destructive layer operation with no annotations, no output schema, and an undocumented parameter, the description is too thin. It should at minimum state the destructive/undo implications and the accepted layer identifier format so an agent can invoke it safely.

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

Parameters2/5

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

Schema coverage is 0%, so the description must compensate. It does clarify that the layer parameter is optional and defaults to the active layer, which is genuinely useful, but it never says what identifier format is expected (name, ID, index) nor how the default is resolved when no active layer exists.

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

Purpose4/5

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

States a specific verb and resource ('Merge a layer ... into the layer below it') and adds the directional detail that separates it from flatten_image or delete_layer. It does not explicitly name a sibling for contrast, 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.

Usage Guidelines2/5

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

The only usage signal is the default of merging the active layer. There is no guidance on when to choose merge_down over flatten_image, arrange_layer, or delete_layer, and no stated preconditions such as whether the target must be a raster layer or whether the bottom layer can be merged.

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

modify_selectionC

operation: invert, grow, shrink, feather, border or smooth. amount in pixels.

NameRequiredDescriptionDefault
amountNo
operationYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not state whether the operation mutates the active selection, whether changes are undoable, how amount affects each operation, or what happens when no selection exists.

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

Conciseness4/5

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

The definition is compact and front-loads the operation choices. However, the fragmentary phrasing is terse to the point of omitting a clear subject and verb.

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

Completeness2/5

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

For a mutation tool with no annotations, no output schema, and zero schema description coverage, the description is too sparse. An agent still lacks essential context about selection state requirements and the effect of each operation.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It usefully enumerates operation values and says amount is in pixels, but it does not clarify which operations use amount, what the default means, or constraints on the values.

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

Purpose4/5

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

The description lists the specific selection-modification operations (invert, grow, shrink, feather, border, smooth), so the tool's purpose is inferable with the name. It does not explicitly state that it modifies the active selection or distinguish it from siblings like set_selection or fill_selection.

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

Usage Guidelines2/5

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

The description names possible operations but gives no guidance on when to use this tool versus set_selection, fill_selection, or export_selection_mask. It also omits prerequisites such as whether an active selection must exist.

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

notify_userB

Show a short floating message on the user's Krita canvas.

NameRequiredDescriptionDefault
messageYes
secondsNo

TDQS

B3/5.0
Behavior3/5

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

With no annotations supplied, the description carries the full burden, and it does disclose the key trait: the message is transient and non-intrusive ("short floating") on the canvas rather than a modal or a document change. It does not say whether the call blocks, whether the user must acknowledge it, or what happens if a notification is already displayed, which leaves real behavioral gaps for an unannotated tool.

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

Conciseness4/5

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

A single front-loaded sentence with no filler or redundancy. It is efficient, but the brevity is partly under-specification rather than tightness, since a second clause about duration would have earned its place.

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

Completeness3/5

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

For a two-parameter UI utility with no output schema, the description covers the essential action and is close to sufficient. It still leaves the duration parameter undocumented and omits blocking/return behavior, so an agent must guess at how `seconds` behaves.

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

Parameters2/5

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

Schema description coverage is 0%, so the description needed to compensate and does not. It never mentions the `seconds` parameter at all, and the word "short" only vaguely gestures at duration without connecting to that argument or explaining its default of 4.

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

Purpose4/5

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

The description gives a concrete verb and object ("Show a short floating message on the user's Krita canvas"), which is far more specific than a tautology and clearly identifies a user-facing notification. No sibling tool in the list performs notifications, so the tool is distinguishable in practice, though the description never explicitly contrasts itself with anything.

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

Usage Guidelines2/5

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

There is no guidance on when to call this versus other ways of surfacing information to the user, and no exclusions or prerequisites. The intended use (transient status feedback) is only weakly implied by "short floating message."

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

outpaintB

Extend the picture beyond its edges: grows the canvas by left/right/top/bottom pixels, selects the new border (reaching overlap px into the old image so it blends) and inpaints it.

NameRequiredDescriptionDefault
topNo
leftNo
seedNo
sizeNo
countNo
modelNo
rightNo
bottomNo
promptYes
backendNo
overlapNo
workflowNo
negative_promptNo

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It does well on mechanism: it discloses that the canvas grows by pixel amounts, that a border is selected reaching `overlap` px into the old image for blending, and that the border is inpainted. It is silent on side effects that matter for a mutation tool — whether it edits the current document/layer in place, whether the result is a new layer or overwrites, and any backend/cost implications of generating multiple results.

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

Conciseness4/5

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

One tightly packed sentence with the core action front-loaded before the parenthetical mechanism detail; no filler. It is dense but readable, though the colon-and-clause construction slightly compresses what could be two clean sentences.

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

Completeness2/5

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

For a 13-parameter generative mutation tool with no annotations and no output schema, the description covers the geometry but not the invocation surface or the return shape. An agent still cannot tell what `size`, `count`, `model`, `backend`, or `workflow` do, nor what happens to the document after the call.

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

Parameters2/5

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

Schema description coverage is 0% across 13 parameters, so the description must compensate and largely does not. It explains only the four directional pixel amounts and `overlap`; the required `prompt`, plus `negative_prompt`, `seed`, `size`, `count`, `model`, `backend`, and `workflow` get no meaning, no units, no valid ranges, and no defaults restated.

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

Purpose5/5

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

States a specific verb and resource ('extend the picture beyond its edges', 'grows the canvas') and describes the mechanism (border selection plus inpainting), which cleanly separates it from siblings like resize_canvas, scale_image, and crop_image that also change canvas geometry but add no generated content.

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

Usage Guidelines3/5

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

Usage is implied by the mechanism — you call this when you want new generated content past the existing edges rather than stretching or cropping. But there is no explicit when-to-use/when-not, no mention of alternatives such as generate_image or resize_canvas, and no stated prerequisites (e.g., an open document or active layer).

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

palette_colorsC

The colours (name + hex) of a Krita palette resource, for a coherent colour scheme.

NameRequiredDescriptionDefault
nameYes

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden, and it only discloses the return shape (name + hex pairs). It is silent on read-only nature, on what happens when the palette name is unknown or a built-in palette, on ordering of the returned colours, and on whether hex values include alpha or an '#' prefix.

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

Conciseness4/5

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

A single compact sentence with no filler, and the most important information (name + hex output) is front-loaded. It is efficient rather than padded, though the terseness shades into under-specification rather than genuine crispness.

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

Completeness3/5

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

For a one-parameter read with no output schema, the description does state the returned fields, which is the single most valuable thing. It still leaves gaps an agent needs: how to obtain a valid palette name and what occurs on a miss, which matters because there is no output schema or annotation to fall back on.

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

Parameters2/5

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

Schema description coverage is 0% for the single 'name' parameter, so the description must compensate and only partially does: 'of a Krita palette resource' implies the argument is a palette name. It does not specify whether the name is a built-in Krita palette, a user-created one, a resource path, or how case/whitespace are handled.

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

Purpose3/5

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

The description states the resource (a Krita palette resource) and the returned content (colours as name + hex), which is more informative than the bare name. However, it is a noun phrase with no verb, so it never says whether it lists, reads, or resolves a palette, and it does not distinguish itself from list_resources or find_color, which plausibly overlap.

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

Usage Guidelines2/5

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

There is no when-to-use guidance at all: no mention of when a palette lookup is appropriate versus sample_color, find_color, or list_resources, and no hint that list_resources is how an agent discovers valid palette names. The dependent clause 'for a coherent colour scheme' gestures at intent but gives no actionable selection criteria.

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

pick_variationA

Show variant index (1-based, as numbered on the sheet) of a generate_image variants group. keep_only=true deletes the other variants and leaves just the chosen layer.

NameRequiredDescriptionDefault
groupYes
indexNo
keep_onlyNo

TDQS

A3.5/5.0
Behavior3/5

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

Because there are no annotations, the description must carry the full behavioral burden, and it does disclose the important destructive case: keep_only=true deletes the other variants and keeps only the chosen layer. It does not state what happens when keep_only=false, whether the discarded variants can be restored with undo, or what the call returns, so a substantial part of the mutation behavior remains unexplained.

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

Conciseness5/5

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

Two short sentences, and both are front-loaded: the selection behavior comes first, and the destructive behavior comes second. It wastes no words on restating the schema and uses none that do no work.

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

Completeness3/5

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

The description is adequate for a 3-parameter tool with no annotations and no output schema, but it cannot be called complete: the meaning of 'group' is undefined, the behavior of keep_only=false is never described, and there is no information about side effects in the layer stack or about recoverability. An agent has to guess at too much before calling it safely.

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

Parameters3/5

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

With 0% schema coverage, the description has to define the parameters, and it does add real meaning for two of the three: index is 1-based and matches the numbering on the sheet; keep_only=true means delete the other variants. The required 'group' parameter is never explained, such as what identifier to pass or what it points to, which leaves the critical required parameter ambiguous.

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

Purpose4/5

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

The description uses a concrete verb+resource pair: it selects or shows one variant, by index, from a variants group that generate_image produced. An agent can tell that this is not generate_image itself, but it never names a sibling it should be used instead of, so differentiation is contextual rather than explicit.

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

Usage Guidelines3/5

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

The phrase 'of a generate_image variants group' implies the precondition: call it only after generate_image has produced a set of variants. It gives no explicit when-not guidance, no stated alternative to use if there is no variants group, and no mention of how index ties to the sheet other than in the parameter note.

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

read_pixelsC

Exact colours of a small block (max 1024 pixels), rows top to bottom.

NameRequiredDescriptionDefault
xYes
yYes
layerNo
widthNo
heightNo

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden, yet it only discloses the 1024-pixel size limit and row-major ordering. It does not say what happens when x/y are out of canvas bounds, whether the request is truncated or rejected above the cap, whether hidden or non-active layers are read, or how colour values are returned (hex vs channel tuple).

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

Conciseness4/5

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

A single short sentence with no waste, and the most important constraint (the pixel cap) is packed in early. It is efficiently written, though the terseness borders on under-specification for a five-parameter tool.

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

Completeness2/5

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

For a 5-parameter tool with 0% schema coverage, no annotations, and no output schema, the description omits the essentials: coordinate origin, layer selection semantics, out-of-bounds behaviour, and the format of returned colour values. It is too thin relative to the tool's complexity.

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

Parameters2/5

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

Schema description coverage is 0% across 5 parameters, so the description must compensate. 'Small block' and 'max 1024 pixels' implies width/height semantics, but x and y are never explained (top-left origin? canvas coordinates?), and the 'layer' parameter with default null is completely undiscussed, including whether null means the active layer.

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

Purpose3/5

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

The description names the resource ('exact colours of a small block') and adds scope ('max 1024 pixels') plus output ordering ('rows top to bottom'), so an agent can tell it reads raw pixel data rather than rendered previews. However, it is a noun phrase with no explicit verb, and it never distinguishes itself from nearby siblings such as sample_color or canvas_snapshot.

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

Usage Guidelines2/5

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

There is no when-to-use guidance at all: no statement of when to prefer this over sample_color (single-point sampling) or canvas_snapshot (full/visual capture), and no prerequisites mentioned. The 1024-pixel cap hints that this is for small regions only, but the agent must infer that this tool is inappropriate for large regions or visual inspection.

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

redoC

Redo edit(s) undone with undo.

NameRequiredDescriptionDefault
stepsNo
nativeNo

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are supplied, so the description carries the full behavioral burden, yet it only restates the operation. It says nothing about whether redo is destructive to the redo stack, what happens on repeated calls, whether it requires a prior undo, 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.

Conciseness3/5

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

The single sentence is front-loaded and wastes no words, which is good structure. However, the brevity borders on under-specification rather than genuine conciseness given the two unexplained parameters.

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

Completeness2/5

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

Redo is a simple operation, but with no annotations, no output schema, and zero parameter documentation, the definition leaves an agent guessing about multi-step behavior and the 'native' flag. A sentence or two more would make it callable with confidence.

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

Parameters1/5

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

Schema description coverage is 0% for the two parameters. The description never mentions 'steps' (implying multi-step redo) or 'native', so an agent has no guidance on their meaning, units, or defaults beyond the bare titles. This is a significant gap the description should have filled.

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

Purpose4/5

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

The definition gives a specific verb (redo) and ties the resource to the sibling operation it reverses (edits undone with undo), so an agent can distinguish redo from undo at a glance. It stops short of differentiating from history or explaining the scope of 'edit(s)'.

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

Usage Guidelines3/5

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

Usage is only implied through the phrase 'undone with undo', which suggests redo is invoked after an undo. There is no explicit when-to-use/when-not-to-use guidance, no mention of what happens when the redo stack is empty, and no reference to history as an alternative for inspecting undo state.

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

remove_backgroundA

Cut the subject out of a layer. mode: mask (non-destructive transparency mask, default), erase, or select (just select the subject). method: color (local, no AI: floods the plain background in from the image border, within tolerance of the border colour or of color), ai (a segmentation model via stability / replicate / fal / a1111 with the rembg extension), auto (ai if a capable backend answers, else color).

NameRequiredDescriptionDefault
modeNomask
colorNo
layerNo
modelNo
methodNoauto
backendNo
featherNo
toleranceNo

TDQS

A4/5.0
Behavior4/5

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

With no annotations supplied, the description carries the full burden and does substantial work: it distinguishes non-destructive output (mask is a 'non-destructive transparency mask') from erase and select, and discloses the external-service dependency of the ai method plus the auto fallback. It stops short of stating that erase is irreversible or what happens when no capable backend is configured and method is forced to ai.

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

Conciseness4/5

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

Front-loaded with the core action, then the two option dimensions in a compact labeled form ('mode: ... method: ...'). It is a single dense block with no wasted words, though the parenthetical nesting makes it slower to scan than a short bulleted enumeration would be.

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

Completeness3/5

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

For an 8-parameter tool with zero annotations and no output schema, the description covers the interesting dimensions (mode, method, backend) well but leaves layer targeting, feathering, and model selection entirely implicit, and says nothing about what the tool returns or how failures surface. Adequate to call correctly in the common case, incomplete for the parameter surface it exposes.

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

Parameters3/5

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

Schema description coverage is 0% across 8 parameters, so the description must compensate and only partly does: it defines `mode` values, `method` values, `tolerance` (as proximity to border colour or `color`), `color`, and implies `backend`. It never mentions `layer` (which layer is targeted), `feather`, or `model`, leaving three parameters undefined in both schema and description.

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

Purpose5/5

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

The opening clause 'Cut the subject out of a layer' gives a specific verb and resource that no sibling tool (crop_image, flatten_image, modify_selection) duplicates. The rest of the sentence then enumerates the three concrete modes, so the agent knows exactly what operation family this is 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.

Usage Guidelines4/5

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

The description gives real selection guidance between the three methods, including a decision rule: 'auto (ai if a capable backend answers, else color)', and flags that color is 'local, no AI'. It also documents which backends satisfy the ai path (stability / replicate / fal / a1111 with rembg). It lacks explicit when-not-to-use guidance relative to sibling operations like crop_image or set_selection.

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

remove_vector_shapesB

Delete shapes by name from a vector layer (["all"] removes every shape).

NameRequiredDescriptionDefault
layerNo
namesYes

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full disclosure burden. It does add genuinely useful behavior: the special ["all"] argument performs a bulk wipe of every shape, which an agent must know before calling. However, it is silent on undo/irreversibility, behavior when a name is not found, and what happens when the optional layer argument is omitted (the active layer?).

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

Conciseness5/5

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

One sentence, front-loaded with the action, with the destructive special case in a parenthetical where it reads naturally. Nothing is redundant.

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

Completeness2/5

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

This is an unannotated deletion tool with no output schema, an undocumented optional 'layer' parameter, and no statement about whether deletions are undoable or what is returned (e.g., count deleted). For a destructive operation, that leaves the agent with real gaps before calling.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It clarifies that 'names' is a list matched against shape names and documents the magic value ["all"] — meaningful value beyond the schema. But the 'layer' parameter is completely unexplained: its schema allows null and defaults to null, and the description never says which layer is targeted when it is omitted.

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

Purpose4/5

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

States a specific verb ('Delete') and resource ('shapes') with the scoping qualifier 'from a vector layer', which distinguishes it from delete_layer (which removes layers) and draw_shapes (which adds shapes). It does not explicitly name a sibling to defer to, but the resource is unambiguous enough to select it confidently.

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

Usage Guidelines2/5

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

There is no when-to-use / when-not-to-use guidance and no reference to alternatives such as list_vector_shapes for discovering valid shape names, or delete_layer for removing an entire layer. Usage is only implied by the verb itself.

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

render_videoB

Render the animation (default: playback range) to .mp4 (H.264), .webm (VP9), .gif, .mov (ProRes), .mkv or .apng in the workspace, using the ffmpeg bundled with Krita. width scales the output.

NameRequiredDescriptionDefault
endNo
fpsNo
pathYes
startNo
widthNo
qualityNo
bitrate_kbpsNo

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations, the description carries the full burden and does deliver real context: rendering uses Krita's bundled ffmpeg, output lands in the workspace, and the default range is the playback range. It omits behavior an agent needs for a write/export tool — overwrite semantics for an existing path, whether the call blocks on a long render, and any error or partial-file behavior.

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

Conciseness4/5

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

A single front-loaded sentence with the action first and the format/codec enumeration second; nothing is padding. The format list is long but each entry carries real encoding information, so it earns its space.

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

Completeness2/5

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

For a 7-parameter export tool with no annotations and no output schema, the description is thin: the encode-quality knobs (fps, quality, bitrate_kbps) and the required path parameter are left entirely to an undocumented schema. An agent could guess reasonable defaults but could not confidently set quality or bitrate from this text.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate and only partly does: it explains width ("width scales the output") and implies the start/end default via the playback range. fps, quality, bitrate_kbps, and path — including what path is relative to — get no meaning beyond their bare titles, leaving four of seven parameters unexplained.

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

Purpose4/5

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

The description states a specific verb and resource ("Render the animation") plus the exact output formats and codecs (.mp4/H.264, .webm/VP9, .gif, .mov/ProRes, .mkv, .apng), which implicitly separates it from frame-export siblings like export_animation_frames. It never names a sibling explicitly, so an agent must infer the boundary with export_image, export_animation_frames, and generate_video.

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

Usage Guidelines2/5

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

There is no when-to-use or when-not-to-use guidance and no named alternative. The only routing hint is incidental — "default: playback range" tells the agent the scope when start/end are omitted, but nothing says when to pick this over export_animation_frames or generate_video.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

resize_canvasB

Change the canvas size WITHOUT scaling content. Offsets shift existing content.

NameRequiredDescriptionDefault
widthYes
heightYes
x_offsetNo
y_offsetNo

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations at all, the description carries the full burden, and it does disclose one genuinely useful behavior: content is not scaled, and offsets shift existing content. It omits other important traits — what happens to content when the canvas shrinks (clipping/cropping), units, and whether the operation is undoable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with the key constraint front-loaded in capitals. No filler, and the most decision-relevant fact (no scaling) comes first.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a four-parameter mutation tool with no annotations, no output schema, and zero schema coverage, the description covers the core behavioral distinction but leaves units, offset direction/origin, and shrink behavior unstated. It is adequate to select the tool but thin for invoking it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so all four parameters are undocumented in the schema. The description only partially compensates: it explains that offsets shift existing content, giving some meaning to x_offset/y_offset, but says nothing about the units or acceptable range of width/height or how the offsets are measured (from which origin, in which direction).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource ('Change the canvas size') and immediately scopes it with 'WITHOUT scaling content', which cleanly separates it from a sibling like scale_image. It stops short of naming the alternative tool, so the agent must infer the routing rather than being told.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'WITHOUT scaling content' clause implies when this tool is appropriate versus a scaling tool, but there is no explicit when-to-use/when-not-to-use statement and no alternative is named. Usage is inferable but not stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rotate_imageA

Rotate the whole image clockwise by any angle; the canvas grows to fit.

NameRequiredDescriptionDefault
degreesYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It does disclose one genuinely useful non-obvious trait, "the canvas grows to fit," telling the agent the result bounding box expands rather than clipping. It omits other important behavior: whether negative degrees rotate counterclockwise, whether the operation is destructive to existing pixels, how new corner regions are filled, and interpolation/quality characteristics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single compact sentence with the core action front-loaded and the secondary behavioral fact (canvas growth) attached after a semicolon. Nothing is wasted, though the brevity is part of why parameter direction conventions go unstated.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter geometry tool with no annotations and no output schema, the description covers what it does and the main non-obvious side effect. The remaining gaps (sign convention, new-area fill, quality) are minor relative to the tool's simplicity, so it is close to complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the single parameter "degrees" has no description in the schema, so the description must compensate. It adds the useful notion that measurements are clockwise and unbounded ("any angle"), but never states the sign convention for counterclockwise rotation or whether values wrap at 360. That leaves a real gap for the one required argument.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Rotate the whole image clockwise by any angle" gives a specific verb and resource, and "whole image" distinguishes it from layer-scoped siblings like transform_layer. It is not differentiated from the other geometry tools (flip, scale_image, resize_canvas), but an agent can still identify the operation unambiguously.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use or when-not-to-use statement and no sibling is named as an alternative, so an agent must infer that this is the tool for arbitrary-angle rotation versus flip or scale_image. The clockwiseness plus "any angle" implies the use case well enough for a simple geometry operation, but guidance is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sample_colorB

Colour (rgba + '#rrggbbaa') of one pixel of the visible image, or of a single layer if given.

NameRequiredDescriptionDefault
xYes
yYes
layerNo

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It usefully discloses the return format (rgba and '#rrggbbaa'), substituting for the absent output schema, but says nothing about coordinate origin, out-of-bounds behaviour, or whether it is a read-only sampling operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single well-formed sentence with the resource and return format front-loaded. No wasted words, though it is arguably too terse given the undocumented coordinates.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a three-parameter read tool with no annotations and no output schema, the description covers the return value but leaves coordinate semantics and the layer-override behaviour only partially explained. Adequate but with clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It only clarifies the optional layer parameter ('a single layer if given'); x and y remain undocumented as to coordinate origin, units, or valid ranges.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb+resource (sample the colour of one pixel) and scopes it to the visible image or a named layer. It is distinguishable from siblings such as find_color and read_pixels, though it does not say so explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use or when-not-to-use guidance is given. The agent is left to infer whether read_pixels, find_color, analyze_image, or this tool is appropriate for a colour lookup.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

save_documentA

Save the active document as native .kra/.ora in the workspace (omit path to re-save in place).

NameRequiredDescriptionDefault
pathNo

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It discloses native format, workspace scope, and that omitting path re-saves in place, but omits overwrite semantics, error/permission behavior, and return information.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with a useful parenthetical covering optional-parameter behavior. It contains no redundant restatement of the tool name or title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter tool, it covers format, location, and default save mode. However, with no annotations, no output schema, and undocumented path semantics, the missing overwrite and error details leave it short of fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must clarify path. It explains the key default, omit path to re-save in place, and the workspace location, but does not say whether path is a file, relative or absolute, or whether an extension is required.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb, save, and resource, the active document, with target formats .kra/.ora and workspace location. The native-format wording distinguishes it from export_image and document_close without needing the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear context for saving native documents and clarifies the optional path's alternate behavior. It does not explicitly name export_image as the non-native alternative, so the agent must infer that from the format constraint.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scale_imageB

Scale the whole image (all layers) to a new size. method: Bicubic, Bilinear, Lanczos3, Box, Hermite, Mitchell, BSpline or NearestNeighbor (pixel art).

NameRequiredDescriptionDefault
widthYes
heightYes
methodNoBicubic

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the behavioral burden. It usefully discloses scope ('whole image, all layers'), but never states that this is a mutating, resampling operation, whether the original pixel data is lost or undoable, or how it interacts with vector/text layers.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the action and scope, with no filler. The dense method enumeration is slightly awkward inline but every value listed is necessary given the empty schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple three-parameter tool with no output schema the description is broadly adequate, but it omits units for width/height and says nothing about irreversibility or layer-type effects, which matter for a destructive resample of the entire document.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate. It does well for 'method' by enumerating eight accepted values and flagging NearestNeighbor for pixel art, but adds nothing for width/height beyond the names — no units, no aspect-ratio behavior, no constraint that the schema omits.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Scale the whole image (all layers) to a new size') and the '(all layers)' scope helps distinguish it from transform_layer or layer-level operations. It does not, however, differentiate itself from close siblings such as resize_canvas or upscale_image, which an agent would need to choose between.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance on when to use this versus resize_canvas, upscale_image, or crop_image. The only usage hint is the parenthetical '(pixel art)' attached to NearestNeighbor, which guides method selection rather than tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_assetsA

Find free real-world material to make work realistic. kind: textures - Poly Haven CC0 photo textures (rock, wood, bark, fabric, leather, skin, metal, ground, ...), hdris - Poly Haven CC0 HDRI panoramas as photographic skies and backdrops, photos - Openverse openly licensed photos for reference or compositing (licence: e.g. 'cc0,pdm' for no attribution, or 'by,by-sa'); results include the attribution text. Then import_asset(id, kind).

NameRequiredDescriptionDefault
kindNotextures
limitNo
queryNo
licenceNo

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it does disclose genuinely useful behavior: sources are CC0/openly licensed, and photo results include the attribution text an agent must carry forward. It omits pagination/result-count behavior, whether queries are fuzzy or keyword-based, and whether returned URLs are temporary, which matters for a search tool with a default limit of 12.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening sentence states the purpose immediately, and the per-kind breakdown is compact and scannable despite spanning several lines. Every line adds information; nothing is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 4 optional parameters, no output schema, and no annotations, the description covers purpose, kind values, licence syntax, and the follow-up import call — enough for an agent to invoke it correctly on the first try. The missing pieces are minor: `limit` behavior and what the result list looks like.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and there are no enums, so the description does significant lifting: it enumerates the valid `kind` values with a one-line rationale for each and shows the exact `licence` string format ('cc0,pdm' vs 'by,by-sa') with the attribution implication. It leaves `limit` and `query` semantics completely unexplained, which is the main gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific action (find/search) and resource (free real-world material), then enumerates the three asset kinds it covers — Poly Haven textures, Poly Haven HDRIs, and Openverse photos — so an agent can tell exactly which content pool it queries. It does not explicitly differentiate from other image-producing siblings like generate_image, but the 'free real-world material' framing distinguishes it from generative tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The closing line 'Then import_asset(id, kind)' gives a clear workflow hook, telling the agent this is a discovery step that pairs with import_asset. However, there is no explicit guidance on when to prefer this over generate_image or create_artwork, and no note about what to do when a search returns nothing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_guidesC

Set the document's guide lines (pixel positions), e.g. thirds or a layout grid the user can see.

NameRequiredDescriptionDefault
clearNo
visibleNo
verticalNo
horizontalNo

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are supplied, so the description carries the full burden. It mentions that guides are visible to the user, but omits whether vertical/horizontal replace or append to existing guides, what happens to unspecified axes, what 'clear' resets, and whether the change is undoable or persisted with the document.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no wasted words; the purpose and units appear immediately. It is lean to the point of under-specification, but nothing in it is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with four undocumented parameters, no annotations and no output schema, one sentence is not enough. An agent cannot infer replace-vs-append semantics or the role of 'clear'/'visible', which are exactly the details needed to call this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across four parameters, so the description must compensate. It only indirectly explains that the coordinate arrays are pixel positions; it says nothing about 'vertical' vs 'horizontal' arrays or the 'clear' and 'visible' flags, leaving half the argument surface unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Set the document's guide lines') and even clarifies the unit ('pixel positions') plus concrete examples (thirds, layout grid). It is unambiguous and, since no sibling tool touches guides, no sibling differentiation is required.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The examples imply a use case, but there is no explicit when-to-use guidance, no prerequisites, and no statement about how this relates to other layout/canvas tools (e.g. resize_canvas, view_control) or when to prefer clearing guides instead of setting them.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_selectionA

Select: kind=rect or ellipse (x, y, width, height), polygon (points [[x,y],...]), layer (the opaque pixels of layer), color (every pixel within tolerance 0-255 of color, or of the colour at x,y; contiguous=true = magic wand from x,y), all, or none. mode: replace, add, subtract, intersect. Later draw/brush/filter/fill operations are limited to it.

NameRequiredDescriptionDefault
xNo
yNo
kindNorect
modeNoreplace
colorNo
layerNo
widthNo
heightNo
pointsNo
toleranceNo
contiguousNo

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does substantial work: it explains that the resulting selection constrains later draw/brush/filter/fill operations, and clarifies tolerance/contiguous semantics ('magic wand from x,y') and how mode interacts with an existing selection. It omits error behavior and what happens when kind maps to 'none' or when required coordinates are missing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two dense sentences, front-loaded with the resource and its variants; the parenthetical enumerations keep related semantics adjacent and there is essentially no filler. The compression into slash-separated lists is slightly harder to scan than a short bulleted breakdown would be.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 11-parameter, default-everything mutation tool with no annotations and no output schema, the description covers all parameter meanings and the key downstream effect on painting operations. It falls short only on failure modes and on the default selection behavior (e.g., empty call), which an agent might need.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 11 parameters, so the description must compensate, and it does: it defines kind values, the x/y/width/height box, the points [[x,y],...] structure, layer meaning ('opaque pixels'), color plus tolerance 0-255 and the x,y-sampled color case, contiguous, and mode. This is meaning well beyond the bare schema titles.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb ('Select') and then enumerates every selection shape it supports (rect, ellipse, polygon, layer, color, all, none), so an agent knows exactly what the tool produces. It does not, however, distinguish itself from the sibling modify_selection, which an agent could easily confuse with it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: the 'mode' enumeration (replace, add, subtract, intersect) tells the agent how to combine with an existing selection, and the final sentence implies you call this before draw/brush/filter/fill. There is no explicit when-to-use or when-not-to-use versus modify_selection or fill_selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

transform_layerB

Scale (about the layer centre), rotate (degrees, clockwise) and/or shear a layer.

NameRequiredDescriptionDefault
layerNo
scale_xNo
scale_yNo
rotate_degreesNo
shear_x_degreesNo
shear_y_degreesNo

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It does disclose the pivot ('about the layer centre') and rotation direction ('degrees, clockwise'), which is genuine added detail, but says nothing about what happens when layer is null, whether the transform is destructive/undoable, or how scale factors are interpreted.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single compact sentence, front-loaded with the primary verb and resource, with no filler. Every clause adds information: operation list, pivot, and unit convention.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a six-parameter, zero-annotation, no-output-schema tool, the definition covers the geometry well enough to invoke it, but leaves the layer targeting parameter and default/null behavior unexplained, which an agent needs in order to call it unambiguously.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across six parameters, so the description must compensate. It clarifies the pivot point for scaling, the unit and direction for rotation, and that shear is degree-based, but leaves the 'layer' argument (name vs. id vs. active layer default) and the scale factor convention (1.0 vs. percent) undefined.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names three specific operations (scale, rotate, shear) on a clearly identified resource (a layer), which separates it from document-level siblings like rotate_image or scale_image. It does not explicitly name those alternatives, so the distinction rests on the word 'layer'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'and/or' phrasing implies the operations can be combined in one call, but there is no when-to-use guidance, no mention of prerequisites (selection, active layer), and no routing to alternatives such as rotate_image or arrange_layer.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

undoA

Undo your last edit(s) (each tool call is one step: pixels, layer changes, selection...). native=true steps through Krita's own undo stack instead (also covers edits made by hand).

NameRequiredDescriptionDefault
stepsNo
nativeNo

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It usefully discloses that undo granularity is per tool call and that native mode reaches hand-made edits, which is real behavioral value. However, it says nothing about failure behavior (e.g., when there is nothing left to undo), limits, or whether steps is honored in native mode, which are the remaining gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with zero waste. The core action and its step semantics come first, and the mode caveat follows – appropriately front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter tool with no output schema or annotations, this is nearly complete: it defines the operation, the unit, and the mode switch. Only edge cases such as exhausted undo history and the steps/native interaction are left unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% (bare titles and defaults only), so the description must compensate. It explains the native flag's meaning explicitly and conveys steps semantics through 'one tool call is one step' and 'last edit(s)'. The only ambiguity is whether steps also applies when native=true.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Undo your last edit(s)') and clarifies the unit of work ('each tool call is one step: pixels, layer changes, selection...'). It also distinguishes the non-native mode from the native Krita stack mode, though it never names the sibling redo as the counterpart.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context for when to set native=true: it walks Krita's own undo stack and also covers edits made by hand. That effectively tells the agent which mode to pick, but there is no explicit when-not guidance or mention of redo as the alternative operation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_layerB

Change layer properties. layer = id or name (default: active layer). opacity is 0..1. blend_mode uses Krita ids such as normal, multiply, screen, overlay, add, color, hue. alpha_locked = only paint where the layer already has pixels; clipped = clip to the layers below in the group (Krita "inherit alpha"); color_label 0-8. x/y place the top-left of the layer's content (its "bounds"); dx/dy move it relative to where it is.

NameRequiredDescriptionDefault
xNo
yNo
dxNo
dyNo
nameNo
layerNo
lockedNo
clippedNo
opacityNo
visibleNo
activateNo
blend_modeNo
color_labelNo
alpha_lockedNo

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full disclosure burden, and it does add real behavioral detail: 'layer' defaults to the active layer, opacity is 0..1, blend_mode takes Krita ids, and x/y set absolute bounds while dx/dy are relative. However, it never says what happens when no properties are supplied, whether partially supplied fields are left untouched, or what the 'name' parameter actually does (rename vs. selector), which is a genuine ambiguity given 'layer = id or name'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with a one-line purpose followed by a compact per-parameter glossary; no filler and no repetition of the schema types. It could be marginally better structured by separating the target-selection parameters from the properties being changed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 14-parameter mutation tool with no annotations, no output schema, and no schema descriptions, the definition covers the majority of the surface but is not complete: four parameters are undocumented, partial-update/no-op semantics are unstated, and there is no hint about failure modes such as an unknown layer or invalid blend mode id.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 14 parameters, so the description has to compensate; it explains 10 of them with useful detail (opacity range, blend_mode id list, alpha_locked, inherit-alpha clipping, color_label 0-8, absolute vs relative positioning). It leaves 'name', 'locked', 'visible', and 'activate' (default false) completely unexplained, and the 'name' omission is the most costly since it is easily confused with the layer-name selector.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Change layer properties" states a specific verb and resource, and the parameter glossary makes the scope concrete (opacity, blend mode, alpha lock, clipping, bounds). It does not explicitly distinguish itself from siblings like transform_layer or arrange_layer, which also touch layer geometry/stacking, so an agent must infer the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: the parameter list suggests it is the general-purpose mutator for an existing layer, as opposed to create_layer/delete_layer/duplicate_layer. There is no explicit when-to-use or when-not-to-use statement, and no mention of how this relates to transform_layer for the x/y/dx/dy case.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

upscale_imageA

AI super-resolution: scales the document by factor (all layers, Lanczos) and adds the model's upscaled rendering of the whole picture as a new top layer. backend: a1111 / comfyui (their upscale models), stability, replicate, fal. Without an AI backend use scale_image.

NameRequiredDescriptionDefault
modelNo
factorNo
backendNo

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden and does well: it discloses that all layers are scaled (Lanczos), that a new top layer is created, and which backends are supported. It stops short of stating whether a backend requires credentials/network access, what happens on backend failure, or whether the new layer becomes active.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Dense but front-loaded: the core action and its side effect come first, then backend list, then the alternative-tool pointer. No filler sentences, though the backend enumeration is slightly list-like.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-parameter, no-annotation, no-output-schema mutation tool, the description covers the action, its side effect, backend options, and the fallback tool. The remaining gap is the 'model' parameter and error/credential behavior, which are minor but real.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate. It explains 'factor' (scaling multiplier) and 'backend' (a1111/comfyui/stability/replicate/fal), but 'model' is only alluded to via 'the model's upscaled rendering' without saying how to choose or name one, leaving one of three parameters under-specified.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('AI super-resolution: scales the document by factor') plus the concrete effect of adding the upscaled rendering as a new top layer. It also explicitly distinguishes itself from the sibling scale_image, so an agent can choose between them without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit routing rule: use this tool when an AI backend is available, and 'Without an AI backend use scale_image.' The alternative and the condition that selects it are both named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

user_tool_stateC

Read (no arguments) or set the colours and brush the USER paints with next - e.g. hand them the palette colour or brush you used. Returns the current state.

NameRequiredDescriptionDefault
flowNo
sizeNo
eraserNo
presetNo
opacityNo
backgroundNo
blend_modeNo
foregroundNo

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are supplied, so the description carries the full behavioral burden. It does disclose that the tool returns the current state and inverts read/write based on argument presence, but it says nothing about whether setting overwrites the user's existing brush mid-session, whether changes persist, whether partial updates leave unmentioned fields untouched, or what validation errors look like.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the read/write distinction, with no filler. The mid-sentence line break and the 'e.g.' aside are slightly awkward but the content is tight for the space used.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 8 undocumented parameters, no annotations and no output schema, this definition is too thin for the tool's complexity. An agent can tell roughly what the tool is for but not how to construct a valid call — the units for size/opacity, valid blend_mode and preset values, and the interaction between eraser and the colour fields are all unknown.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 8 parameters, so the description must compensate and largely fails to. It hints only at two categories ('colours' and 'brush'), leaving flow, size, eraser, preset, opacity, background, blend_mode and foreground completely unexplained — no units, ranges, accepted preset names, or colour formats.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource pair: read or set the colours and brush the USER paints with. The explicit emphasis on 'the USER paints with' distinguishes it from agent-side brush tools like brush_stroke or list_brush_presets, though the purpose of the dual read/write mode is only implied by the parenthetical '(no arguments)'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Read (no arguments)' gives a concrete condition for the read path, and 'hand them the palette colour or brush you used' gives one motivating use case for the set path. However, there is no guidance on when to prefer this over siblings such as brush_stroke, list_brush_presets or palette_colors, and no statement of when setting state would be inappropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

use_skillA

Load a skill's instructions (from find_skills) and follow them. file = one of the extra text files the skill lists (references, templates). Skills are text only; nothing in them is executed.

NameRequiredDescriptionDefault
fileNo
nameYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it does disclose the most important non-obvious trait: skills are text only and nothing in them is executed, which tells the agent the load is a safe read. It does not cover error behavior for an invalid name or what exactly is returned (full instruction text vs. a reference), so it is strong but not exhaustive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the core action, with the file semantics and the safety caveat following in priority order. No sentence is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter tool with no annotations and no output schema, the description covers purpose, the optional file modifier, and the safety profile, which is close to sufficient. It still leaves the return content and not-found behavior unexplained, which matters for a tool whose whole job is pulling text into context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It explains 'file' well — one of the extra text files the skill lists, such as references or templates — but 'name' is only implied via the find_skills reference rather than stated as the skill identifier from that listing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Load a skill's instructions') and ties it to the sibling tool that supplies the skill name (find_skills), so an agent can distinguish discovery from loading. It stops short of an explicit contrast statement such as 'use find_skills to discover, use_skill to load', but the pairing is clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The parenthetical '(from find_skills)' implies a prerequisite workflow: find a skill first, then load it here. There is no explicit when-not-to-use guidance or statement about what happens if the name is unknown, so usage is implied rather than spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

video_infoC

Size, fps, duration, frame count, codec and audio presence of a video in the workspace.

NameRequiredDescriptionDefault
pathYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are supplied, so the description carries the full behavioral burden, yet it says nothing about whether this is a read-only probe, what happens when the path is missing or points to a non-video, which container/codec formats are supported, or whether the file is decoded. Only the implicit word 'info' signals non-mutation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single compact sentence with no filler, which is appropriate for a simple probe. However, it is a bare noun phrase rather than a front-loaded verb clause, so the reader has to infer that these fields are returned rather than configured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter, no-output-schema tool, enumerating the returned fields does useful work that a schema would otherwise do. Still missing are path semantics, failure behavior, and any read-only assurance, which matter because nothing else in the definition supplies them.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the single required 'path' parameter, so the description must compensate. The phrase 'in the workspace' hints that path is workspace-scoped rather than an arbitrary filesystem path, but format (relative vs absolute), accepted extensions, and resolution rules are left entirely undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description enumerates the exact metadata returned (size, fps, duration, frame count, codec, audio presence) for a video resource, which is meaningfully more specific than the bare name 'video_info'. It lacks an explicit verb ('returns'/'inspects'), and it never distinguishes itself from the close sibling animation_info, which an agent could easily confuse with this tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as animation_info or import_video. An agent must infer that this is a pre-import/pre-render inspection step purely from the field list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

view_controlA

Move the user's view of the canvas (not the image): zoom (1.0 = 100%), rotation in degrees, mirror, fit to window, reset, or centre on a canvas point - e.g. to show the user what you changed.

NameRequiredDescriptionDefault
fitNo
zoomNo
resetNo
mirrorNo
center_xNo
center_yNo
rotationNo

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden; it usefully discloses that the operation is display-only and does not alter the image, which is the key safety fact. It says nothing about whether an active document is required, whether the change persists or is session-local, or how conflicting flags (fit + reset + zoom together) are resolved.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with the most important disambiguation (view, not image) placed first, then the operation list. Nothing is redundant, though the em-dash enumeration is dense enough that combination semantics get squeezed out.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter, zero-required, unannotated tool, the description covers what each option does and confirms no image mutation, which is the essential part. The gaps around mutual exclusivity of fit/reset/zoom and the absence of any statement about the result or required document state leave real ambiguity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it largely does: it maps zoom (1.0 = 100%), rotation in degrees, mirror, fit, reset, and centre-on-point to the seven parameters. It omits units/coordinate space for center_x/center_y and gives no precedence rule when multiple parameters are supplied at once.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb (move) and resource (the user's view of the canvas) and immediately scopes it with "not the image", which separates it from siblings like rotate_image, flip, and transform_layer. The enumerated operations (zoom, rotation, mirror, fit, reset, centre) make the tool's surface fully legible.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase "not the image" plus the example "e.g. to show the user what you changed" give a clear condition for choosing this over image-transform siblings. It stops short of explicit when-not guidance (e.g. don't use this to persist a rotated result — use rotate_image).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

view_imageA

Look at an image file in the workspace (reference, generated output, export) without importing it.

NameRequiredDescriptionDefault
pathYes
max_sizeNo

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. "Without importing it" usefully discloses that the workspace is not mutated and no asset is created, but the description says nothing about what comes back (image content vs. path), whether viewing a large image costs significant context, or how the max_size cap behaves.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence of roughly twenty words with no filler. The scope first, the qualifier second — nothing wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read tool this is nearly adequate: purpose and the non-importing constraint are clear. But with no annotations, no output schema, and an undocumented max_size, an agent still cannot predict the return payload or the meaning of the size limit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for both parameters and does not. The path parameter is inferable, but max_size (default 1024) is entirely undefined — there is no indication whether it means pixels on the long edge, a byte cap, or a token budget.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb and resource ("Look at an image file in the workspace") and adds the key qualifier "without importing it," which tells an agent this is a read/view operation. It distinguishes itself implicitly from import_image and analyze_image, but never names those siblings explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The parenthetical "(reference, generated output, export)" gives concrete situations where this tool applies, and "without importing it" signals the boundary against the import_* family. It stops short of naming alternatives or stating when NOT to use it (e.g., when pixel analysis via read_pixels/analyze_image is needed).

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.

  1. 86 tool updatesv0.3.0
    • First observedadd_svg
    • First observedadd_vignette
    • First observedadjust_image
    • First observedai_backends
    • First observedanalyze_image
    • First observedanimation_contact_sheet
    • First observedanimation_info
    • First observedanimation_set
    • First observedapply_filter
    • First observedarrange_layer
    • First observedask_vision
    • First observedauto_enhance
    • First observedbatch
    • First observedbrush_stroke
    • First observedcamera_move
    • First observedcanvas_snapshot
    • First observedcolorize_lineart
    • First observedconvert_color_space
    • First observedcreate_artwork
    • First observedcreate_layer
    • First observedcrop_image
    • First observeddelete_layer
    • First observeddescribe_filter
    • First observeddocument_activate
    • First observeddocument_close
    • First observeddocument_info
    • First observeddocument_new
    • First observeddocument_open
    • First observeddraw_shapes
    • First observedduplicate_layer
    • First observedexport_animation_frames
    • First observedexport_image
    • First observedexport_selection_mask
    • First observedfill_selection
    • First observedfind_color
    • First observedfind_skills
    • First observedflatten_image
    • First observedflip
    • First observedfor_each_frame
    • First observedgenerate_image
    • First observedgenerate_video
    • First observedhistory
    • First observedimport_asset
    • First observedimport_frames
    • First observedimport_image
    • First observedimport_image_from_url
    • First observedimport_video
    • First observedkeyframe
    • First observedkrita_action
    • First observedkrita_status
    • First observedlist_brush_presets
    • First observedlist_filters
    • First observedlist_keyframes
    • First observedlist_layers
    • First observedlist_resources
    • First observedlist_vector_shapes
    • First observedlist_workspace
    • First observedmatch_colors
    • First observedmerge_down
    • First observedmodify_selection
    • First observednotify_user
    • First observedoutpaint
    • First observedpalette_colors
    • First observedpick_variation
    • First observedread_pixels
    • First observedredo
    • First observedremove_background
    • First observedremove_vector_shapes
    • First observedrender_video
    • First observedresize_canvas
    • First observedrotate_image
    • First observedsample_color
    • First observedsave_document
    • First observedscale_image
    • First observedsearch_assets
    • First observedset_guides
    • First observedset_selection
    • First observedtransform_layer
    • First observedundo
    • First observedupdate_layer
    • First observedupscale_image
    • First observeduse_skill
    • First observeduser_tool_state
    • First observedvideo_info
    • First observedview_control
    • First observedview_image

TDQS

B3/5.0

Scored across 86 tools

Disambiguation3/5

Most tools target distinct resources or actions, but the 86-tool surface has several overlapping clusters: adjust_image vs apply_filter vs auto_enhance, view_control vs krita_action view commands, set_selection vs krita_action selection commands, and the create_artwork/generate_image split. The detailed descriptions clarify these boundaries, but an agent still has a realistic chance of choosing a redundant or lower-level tool.

Naming Consistency4/5

The set is overwhelmingly snake_case and follows a predictable verb_noun or noun_info pattern across documents, layers, selections, animation, and media. A few names are noun-only or verb-less (keyframe, history, batch, outpaint, palette_colors), but they remain readable and do not break the overall convention.

Tool Count1/5

At 86 tools, the surface is far beyond the well-scoped 3-15 range and crosses the extreme-mismatch threshold of 50+. Krita is broad, but this many tools creates a sprawling interface where the agent must navigate many specialized and partially overlapping operations.

Completeness5/5

The surface covers document lifecycle, layer CRUD and arrangement, selections, filters, drawing, vector shapes, animation, video import/render, AI generation, asset search, skills, undo/history, and batching. Only minor gaps such as direct editing of existing vector shapes exist, and those have practical workarounds.

Maintenance

ActivityMaintained
ResponsivenessNo recent community issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI models to directly control a local Krita instance by inspecting real canvas previews, managing documents and layers, importing and masking generated images, inpainting, painting with the brush engine, checkpointing, and exporting KRA/PNG files.
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables an AI assistant to inspect and edit a live Krita 6 desktop session, create and modify documents and layers, paint with native brushes, and receive inline PNG previews.
    56
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables MCP-compatible AI clients to control a running Krita instance, allowing them to create canvases, paint strokes, draw shapes, export images, and perform other painting tasks.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI assistants to create, paint, edit, inspect, and export images in a running GIMP 3.2 instance via MCP.
    199 PyPI
    GPL 3.0