Skip to main content
Glama
gimp-mcp-studio
by Onru-Labs

GIMP MCP bridge

GIMP MCP Studio contains a GIMP 3 plug-in and MCP server, distributed as the standalone Python package source tree gimp-mcp-studio. The public source repository is Onru-Labs/gimp-mcp-studio. It has not been published to a package registry.

This is a modified fork of gimp-mcp/gimp-mcp, distributed under GPL-3.0 with original source attribution retained. See LICENSE and NOTICE.

From this directory, install with python -m pip install . and launch the stdio server with gimp-mcp-studio. The wheel includes the companion plug-in, PowerShell installer, and batch-start script under the environment's share/gimp-mcp-studio directory. GIMP itself is installed separately. For tests, install python -m pip install ".[test]" then run python -m unittest discover -s tests -v; these do not substitute for live GIMP editing verification.

The server exposes 89 named MCP tools in gimp_mcp_server.py. That number describes the fixed convenience tools; the live GIMP Procedure Database (PDB) and GEGL registries add operations discovered from the running GIMP installation. The bridge does not claim that every GIMP UI action or third-party plug-in is callable through the PDB.

Runtime

  • GIMP 3.x with this plug-in installed and its MCP socket started.

  • Python 3.11 or later for the MCP server.

  • The package declares mcp>=2.0,<3; pip install . installs its server dependency.

  • A local socket on localhost:9877 between the server and GIMP plug-in.

For a standalone checkout, python -m pip install . is sufficient for the MCP server.

Install or preview the plug-in copy from this checkout:

.\install-plugin.ps1 -WhatIf
.\install-plugin.ps1

Restart GIMP after installation, open an image, then choose Tools → MCP → Start MCP Server.

Launch the MCP server through the configured client using stdio. A direct local invocation is:

python gimp_mcp_server.py

Related MCP server: GimpMCP

Capability map

The fixed tools cover image metadata and snapshots; layers and transforms; selections; drawing and fills; text; color, tone, blur, sharpen, and noise adjustments; crop, scale, rotate, and warp; undo/redo; export; and batch/social formats.

For operations not represented by a fixed tool, discover the running GIMP's own installed procedures:

  1. pdb_search searches procedure names and descriptive fields with paging.

  2. pdb_describe returns typed input/output schemas.

  3. pdb_run executes one named procedure with typed JSON values and explicit image/layer references.

  4. gegl_list_operations and gegl_describe_operation inspect available GEGL operations and properties.

  5. gegl_apply_filter, gegl_list_filters, and gegl_filter_action apply and manage editable, non-destructive layer filters.

The PDB tools expose procedures installed in that GIMP instance. Generic JSON mapping handles common scalars, arrays, enums, colors, and supported GIMP object references; procedures requiring unsupported GObject values or UI-only interactions need a typed adapter. GIMP's own procedure browser and plug-in APIs describe what the installed application exposes.

Raw Python execution through call_api is disabled unless GIMP_MCP_ALLOW_UNSAFE_PYTHON=1 is set for the MCP server and plug-in. Typed tools and PDB access should be preferred. Independently, pdb_run always rejects procedure names matching code-evaluation, console, and application-shutdown patterns; the raw-Python opt-in does not bypass that PDB guard.

MCP versioning

The locally verified Python MCP SDK version is 2.3.0. Its implementation supports the 2026-07-28 protocol revision and compatibility paths for earlier handshake-era revisions; this package has not independently tested every client/revision combination. The current mcp.run() transport is stdio; the bridge's separate GIMP socket is an internal local transport, not an MCP network endpoint. Protocol version, SDK major version, and the count of GIMP tools are separate concepts.

The modern protocol uses stateless requests and supports multi-round-trip replies. It does not give this plug-in arbitrary server-initiated push to a client. The Tasks extension is not implemented by the Python SDK 2.0 baseline; long GIMP operations currently return through ordinary tool calls and local logs.

Service and verification

The service is registered as a GIMP persistent procedure, signals readiness to the host, and dispatches all GIMP API calls through the GLib main loop. File open/export/save calls have a 120-second socket timeout; other commands use 10 seconds. Set GIMP_MCP_OPERATION_TIMEOUT to override the operation timeout (bounded to 1–600 seconds).

For an isolated local profile, set GIMP3_DIRECTORY to a dedicated local directory and copy the plug-in into its plug-ins/gimp-mcp-plugin/gimp-mcp-plugin.py. Launch the installed gimp-console executable with --new-instance --no-data --no-shm --console-messages --batch-interpreter=python-fu-eval and a --batch expression that executes this folder's batch-start.py. Keep that process running; do not pass --quit.

A controlled GIMP 3.2.6 session opened a layered ORA, adjusted a named layer, exported a PNG and saved an XCF through an SDK 2.x in-process client. This verifies only that exercised edit path, not every registered tool or external stdio editing. A longer file-operation timeout addresses an observed export timeout.

The built wheel was also installed into an isolated target on 2026-11-05. Both its Python module and installed Windows gimp-mcp-studio.exe entry point successfully returned the same 89-tool registry over a real SDK 2 stdio connection. The wheel includes the companion plug-in, installer, batch-start script, GPL license, and notice. That transport/package probe calls discovery only and does not establish live editing coverage for every tool. On restricted Windows environments, use a writable TEMP/TMP directory when building or installing.

A separate read-only SDK 2 stdio probe of the running GIMP 3.2.6 instance on 2026-11-05 discovered 1,034 installed PDB procedures and 182 GEGL operations, alongside the 88 registered MCP tools. It paged every name and inspected five representative PDB schemas, without executing any discovered procedure or filter. These counts describe the installed environment, not guaranteed execution coverage or a maximum capability limit. GEGL property description was deliberately skipped in this strictly read-only probe because its implementation constructs and deletes a temporary filter on an existing layer.

A subsequent isolated GIMP 3.2.6 helper regression probe verified that native GEGL configuration is applied and updated before merging: the sharpen fixture produced a nonzero pixel change, while an invalid blur radius and an unknown property returned explicit errors. Local checks include validation of requested properties, clamped values, merge-error propagation, and the SDK 2 stdio registry. This confirms the exercised helper paths only; it does not extend coverage to every installed GEGL filter.

An isolated GIMP 3.2.6 snapshot regression session subsequently captured 24 actual full/detail views while exercising native object handles, checkpoint edits and restoration. Snapshots now duplicate the explicitly selected image, render its full composite, crop/scale that owned scratch image, and delete it; they no longer select a top layer through the global clipboard. Native alpha-preserving thumbnails cover sizes up to 1024 pixels, with PNG export for larger snapshots. The source ORA remained unchanged. Four snapshot tests exercise this behavior; this probe did not exercise every MCP tool.

A subsequent controlled native-semantics session on 2026-11-05 verified all 89 registered tools were discoverable, imported an original RGBA asset as a layer at explicit coordinates, created native GimpTextLayer text, and edited its content, font size and color with successful readback. It rejected a raster layer as editable text, created and attached a layer mask through actual PDB object handles, saved an XCF and reopened it to verify native text content, 40-pixel font size, position, original imported dimensions and mask persistence. The source ORA hash remained unchanged. This was a deterministic verification session without model calls, not proof of autonomous creative quality or every tool's execution. No client artwork is distributed with this project.

get_pixel_color returns encoded sRGB bytes through Babl (R'G'B'A u8), with explicit encoding and straight-alpha metadata. GEGL's linear get_rgba() values are not multiplied directly into CSS hex values. Native text state retains its linear-sRGB floats with an explicit encoding label. A controlled live swatch probe verified brand blue [11,95,255], encoded mid-gray 128, half alpha 128 without premultiplying RGB, and preserved RGB beneath zero alpha; its source PNG hash stayed unchanged. Six focused unit tests also cover conversion errors and invalid byte counts. This does not establish color accuracy for every image profile or output workflow.

add_text and edit_text use native Gimp.Font and Gimp.Unit objects and verify setter results plus property readback. Font substitutions are reported as requested/resolved names with fallback_used; they are not silent. Rasterized lettering remains rasterized. list_layers preserves its compatibility fields and adds native class, text state, mask, vector-layer and path inspection metadata, allowing callers to distinguish native objects from raster layers with descriptive names. import_layer imports a local file into the existing owned image and reports its actual dimensions and bounds. Generic PDB conversion also accepts local file values for GFile properties and explicit mask/path references; unsupported types still require adapters.

Export and geometry checks alone do not establish visual quality or product identity. Inspect the artwork before release; an unreviewed output is not an approved result.

Useful entry points:

Upstream status

This directory has package metadata, a GPL license and attribution notice, protocol/registry checks, and a CI workflow intended for a standalone checkout. The standalone source is published at Onru-Labs/gimp-mcp-studio. Thirty-four local unit/protocol/helper/snapshot/import/native-text/color checks pass on Python 3.13, and the standalone Python 3.11/3.13 Linux CI matrix passed. The checks cover connection handling, file-operation timeouts, and tool registration; full MCP protocol conformance and every live GIMP operation remain unverified. Publication makes the source available; it does not establish upstream acceptance or full GIMP capability coverage.

Available Tools

89 tools
add_textA

Add a text layer to an image.

Parameters:

  • text: The text string to render

  • x, y: Position of the text layer's top-left corner (default 0, 0)

  • font: Font family name — "Sans" (default), "Serif", etc.

  • size: Font size in pixels (default 24)

  • color: Text color (CSS name, hex, or rgb() string; default "black")

  • image_index: Target image index (default 0)

Returns: {layer_name, layer_id, text_width, text_height, position}

NameRequiredDescriptionDefault
xNo
yNo
fontNoSans
sizeNo
textYes
colorNoblack
image_indexNo

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. It does disclose the return shape ({layer_name, layer_id, text_width, text_height, position}), which is genuinely useful since there is no output schema. But it says nothing about mutation side effects: whether the new layer becomes active, whether it is undoable, or what happens if image_index is out of range.

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

Conciseness4/5

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

Front-loaded one-line purpose followed by a clean parameter list and a return line. The parameter restatement is somewhat duplicative of the schema but is justified given 0% schema coverage. No filler or marketing language.

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 medium-complexity creation tool with no annotations and no output schema, the description covers purpose, all parameters, defaults, and return values. The main gap is the absence of any behavioral context about the mutation (target image resolution, layer stacking, undo), which an agent modifying a document would want.

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, and it does. Every one of the seven parameters is explained with meaning beyond the schema: coordinate origin for x/y, accepted font families, pixel units for size, and accepted color formats (CSS name, hex, rgb()). Defaults are restated consistently with the schema.

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 and resource: 'Add a text layer to an image.' That is unambiguous and distinguishable from most siblings. It does not, however, differentiate itself from close alternatives such as edit_text or create_layer, which the 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 guidance on when to use this versus edit_text (modifying existing text) or create_layer. The reader must infer that this tool is for new text and edit_text is for existing text. No prerequisites (e.g. an open image) 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.

adjust_brightness_contrastB

Adjust brightness and contrast of a layer.

Parameters:

  • brightness: -127 to +127 (default 0)

  • contrast: -127 to +127 (default 0)

  • image_index: Target image index (default 0)

  • layer_name: Layer to adjust; defaults to active layer

Returns status dict.

NameRequiredDescriptionDefault
contrastNo
brightnessNo
layer_nameNo
image_indexNo

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden. It states the parameters and that a status dict is returned, but it does not disclose whether the adjustment is applied in place, whether it is destructive, whether undo is required, or how errors are handled when the layer is missing.

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 front-loaded with the purpose and then presents parameters in a compact, readable list. Every sentence is useful and there is no unnecessary wording.

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 and no output schema, the description is adequate for invocation because it documents all parameters. It is incomplete for safe and correct tool selection because it omits side-effect behavior, undo expectations, and sibling differentiation.

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: it documents all four parameters with ranges and defaults, including brightness and contrast from -127 to +127 and layer_name defaulting to the active layer. This adds meaningful invocation detail beyond the bare schema.

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: adjust brightness and contrast of a layer. It clearly identifies the target as a layer, but it does not distinguish this operation from sibling adjustments such as auto_levels, adjust_curves, adjust_hue_saturation, or adjust_color_balance.

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 provided. The description does not mention alternatives like auto_levels or adjust_curves, nor does it explain when a caller should choose this tool over other tonal adjustment tools.

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

adjust_color_balanceB

Adjust color balance (shadows / midtones / highlights) of a layer.

Parameters:

  • cyan_red: -100 to +100 (negative = cyan, positive = red; default 0)

  • magenta_green: -100 to +100 (default 0)

  • yellow_blue: -100 to +100 (default 0)

  • range: "shadows", "midtones" (default), "highlights"

  • image_index: Target image index (default 0)

  • layer_name: Layer to adjust; defaults to active layer

Returns status dict.

NameRequiredDescriptionDefault
rangeNomidtones
cyan_redNo
layer_nameNo
image_indexNo
yellow_blueNo
magenta_greenNo

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. It does add one useful fact ('Returns status dict') and notes that layer_name defaults to the active layer, but it never says whether the edit is destructive or undoable, what happens when the named layer or image index does not exist, or what keys the returned status dict contains.

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 purpose sentence is front-loaded and the parameter block is scannable, with no filler prose. It does repeat defaults and value types that also appear in the schema, but that repetition is justified at 0% schema description coverage.

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 mutation tool with no annotations and no output schema, the description is adequate on inputs but thin on outcomes: 'Returns status dict' does not tell the agent what success or failure looks like, and nothing addresses permission, error, or undo behavior. It is minimum viable rather than 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%, so the description must supply all parameter meaning, and it does: it documents the three color axes with their -100 to +100 range and channel polarity, the three accepted 'range' values with their default, the image_index default, and the layer_name default-to-active-layer behavior. The only gap is that it does not clarify the interaction between image_index and layer_name or the allowed bounds of image_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?

States a specific verb and resource ('Adjust color balance ... of a layer') and names the tonal ranges it operates on, which tells an agent this is a tonal correction tool. It does not explicitly distinguish itself from sibling tonal tools like adjust_curves, adjust_brightness_contrast, or adjust_hue_saturation, so the agent must infer the difference.

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 never says when to reach for color balance versus the many sibling adjustment tools, nor does it state prerequisites such as an open image or an existing layer. Usage is only implied by the purpose sentence.

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

adjust_curvesB

Adjust tonal curves for a layer.

Parameters:

  • preset: Built-in curve shape — "s_curve" (default), "lighten", "darken", "contrast"

  • points: Custom control points as [[input, output], ...] override (overrides preset)

  • channel: "value" (all), "red", "green", "blue", "alpha"

  • image_index: Target image index (default 0)

  • layer_name: Layer to adjust; defaults to active layer

Returns status dict.

NameRequiredDescriptionDefault
pointsNo
presetNos_curve
channelNovalue
layer_nameNo
image_indexNo

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 burden for a mutation tool. It discloses defaults and "Returns status dict." but says nothing about undoability, what happens if layer_name does not exist, whether the adjustment is destructive, or how errors surface.

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 purpose statement is front-loaded and the parameters are a tight, scannable bullet list with no filler. The only waste is restating schema defaults (default 0, default s_curve), which the schema already carries.

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 five-parameter, no-annotation, no-output-schema mutation tool, the parameter coverage is genuinely good and the return is at least named. Missing are the behavioral facts an agent needs to call it safely: failure modes for a bad layer_name or image_index, and whether the operation is undoable.

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 schema declares no enums, yet the description supplies the effective enum values for preset (s_curve/lighten/darken/contrast) and channel (value/red/green/blue/alpha) plus the [[input, output], ...] shape and preset-override relationship for points. It stops short of documenting value ranges or whether the preset list is exhaustive.

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?

"Adjust tonal curves for a layer" states a specific verb and resource, and the mention of curves distinguishes it from sibling tonal tools like adjust_brightness_contrast and auto_levels. It does not name or exclude any sibling explicitly, 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 description never says when to reach for curves instead of auto_levels, adjust_brightness_contrast, adjust_color_balance, or levels-style siblings. There are no prerequisites or exclusions, only a bare statement of what it does, leaving tool selection to inference.

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

adjust_hue_saturationB

Adjust hue, saturation, and lightness of a layer.

Parameters:

  • hue: Hue rotation -180 to +180 (default 0)

  • saturation: Saturation shift -100 to +100 (default 0)

  • lightness: Lightness shift -100 to +100 (default 0)

  • color_range: "all", "red", "yellow", "green", "cyan", "blue", "magenta" (default "all")

  • image_index: Target image index (default 0)

  • layer_name: Layer to adjust; defaults to active layer

Returns status dict.

NameRequiredDescriptionDefault
hueNo
lightnessNo
layer_nameNo
saturationNo
color_rangeNoall
image_indexNo

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 and does not disclose whether the adjustment is applied destructively in place, whether it is affected by the current selection, or what happens when the named layer or image index is invalid. Only 'Returns status dict' hints at output, and the default-to-active-layer behavior is the one genuinely useful behavioral detail.

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 purpose in one sentence and then uses a compact parameter list that is justified by the 0% schema coverage. No filler, though the trailing 'Returns status dict' is thin enough to be almost noise.

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 mutation tool with no annotations and no output schema, the definition covers parameter meaning well but omits error behavior, selection interaction, and any indication of whether edits are undoable. It is adequate to invoke the tool but not to predict its effects.

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, which it largely does: it lists numeric ranges (-180 to +180 for hue, -100 to +100 for saturation and lightness), defaults for all six parameters, and the full enum of color_range values that the schema leaves as a bare string. Units and interaction between hue/saturation/lightness are still unstated.

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: adjusting hue, saturation, and lightness of a layer. This is clearly distinguishable from siblings like adjust_brightness_contrast, adjust_color_balance, and desaturate, though the description never names those alternatives 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?

Provides no when-to-use or when-not-to-use guidance, and no routing to alternatives such as desaturate or adjust_color_balance for overlapping color work. It also omits prerequisites (an open image, an existing target layer), leaving the agent to infer context.

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

apply_drop_shadowB

Apply a drop shadow effect to a layer.

Parameters:

  • offset_x, offset_y: Shadow offset in pixels (default 5, 5)

  • blur_radius: Shadow softness radius (default 10)

  • color: Shadow color (default "black")

  • opacity: Shadow opacity 0-100 (default 60)

  • layer_name: Target layer; defaults to active layer

  • image_index: Target image index (default 0)

Returns status dict.

NameRequiredDescriptionDefault
colorNoblack
opacityNo
offset_xNo
offset_yNo
layer_nameNo
blur_radiusNo
image_indexNo

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations supplied, the description carries the full behavioral burden and mostly does not meet it: it does not say whether the effect is applied destructively to layer pixels, whether it can be undone, what happens when layer_name matches nothing, or in what format color should be given. 'Returns status dict' is the only behavioral disclosure, and it is too vague to tell the agent what success/failure looks like.

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

Conciseness4/5

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

One front-loaded purpose sentence followed by a tight bulleted parameter list and a one-line return note; there is no filler. The defaults repeat the schema slightly, but that is the intended value-add given 0% schema description coverage.

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 seven-parameter mutation tool with no annotations and no output schema, the parameter documentation is solid but the effect's side effects, reversibility, and error conditions are absent. The return note is present but too thin to substitute for a missing output schema.

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 gives units (offset in pixels), valid range (opacity 0-100), default values, and the meaningful semantic that layer_name falls back to the active layer and image_index targets a specific image. It leaves color's accepted format (name vs hex vs CSS) unstated, which is the one real 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?

States a specific verb and resource ('Apply a drop shadow effect to a layer'), which is instantly distinguishable from sibling effects such as apply_gaussian_blur, apply_vignette, and apply_emboss. It stops short of noting how it differs from the generic gegl_apply_filter route, but the core purpose is unambiguous.

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

Usage Guidelines3/5

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

Usage is only implied by the target parameters ('layer_name: Target layer; defaults to active layer'). There is no statement of when to prefer this over gegl_apply_filter or apply_vignette-style siblings, and no prerequisites such as needing an open image, an existing layer, or a running server.

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

apply_embossA

Apply an emboss (bas-relief) effect to a layer.

Parameters:

  • azimuth: Light direction in degrees 0-360 (default 315 = top-left)

  • elevation: Light elevation angle 0-90 (default 45)

  • depth: Effect depth/intensity (default 2)

  • layer_name: Target layer; defaults to active layer

  • image_index: Target image index (default 0)

Returns status dict.

NameRequiredDescriptionDefault
depthNo
azimuthNo
elevationNo
layer_nameNo
image_indexNo

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 must carry the behavioral load; it does disclose the mutation target (a layer) and the return shape ('Returns status dict'), plus the default-to-active-layer behavior. It does not say whether the effect is destructive or undoable, what happens if layer_name is not found, or whether an image must be open first.

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 one-line purpose followed by a compact bullet list of parameters and a one-line return note; nothing is padded. The bullets are slightly redundant with schema titles but earn their place by adding ranges and defaults.

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 five-parameter mutation tool with no annotations and no output schema, the definition covers parameters and return type adequately. It is missing safety and state context an agent would want: destructiveness/undo, required active image, and failure behavior for an unknown layer name.

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 carries the full burden and largely succeeds: it gives valid ranges for azimuth (0-360 degrees, default 315 = top-left) and elevation (0-90, default 45), explains depth as intensity, and clarifies that layer_name defaults to the active layer. Only depth units and image_index semantics remain thin.

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 ('Apply an emboss (bas-relief) effect to a layer') and disambiguates the effect type from the many sibling filters such as apply_noise, apply_drop_shadow, and apply_gaussian_blur. An agent can tell exactly which effect this produces and what it targets 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 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 choose this over alternatives like gegl_apply_filter or the other apply_* filters, and no prerequisites or exclusions are stated. Usage is only implied by the effect name.

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

apply_gaussian_blurB

Apply Gaussian blur as a destructive filter operation.

Parameters:

  • radius: Blur radius in pixels (default 5.0)

  • layer_name: Target layer; defaults to active layer

  • image_index: Target image index (default 0)

Returns status dict.

NameRequiredDescriptionDefault
radiusNo
layer_nameNo
image_indexNo

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, and it does disclose the most important trait — the operation is destructive. It stops short of stating whether the change is undoable, whether it applies only to the active layer's pixels, or what the status dict contains on failure, leaving real risk information unstated.

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 purpose sentence is front-loaded and the parameters follow as a compact bulleted list, so the reader gets the operation before the details. Nothing is padded, though the closing 'Returns status dict' line is thin and could carry slightly more substance.

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 description covers the operation, all parameters, and the return shape. It is still missing the routing guidance against same-family blur tools and any reversibility or failure-mode information an agent would want before mutating an image.

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: all three parameters are named with meaning and defaults, including the units for radius (pixels) and the fallback for layer_name (active layer). It omits a valid range or practical bounds for radius and the expected format of layer_name.

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 Gaussian blur') plus a key modifier ('destructive filter operation'), so the agent knows exactly what happens to pixels. It does not distinguish itself from the sibling tool 'blur' or the generic 'gegl_apply_filter', which an agent must disambiguate on its own.

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 prefer this over the sibling 'blur', 'gegl_apply_filter', or 'gegl_filter_action', nor any prerequisite such as an image needing to be open or a layer selected. Usage is only implied by the parameter list.

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

apply_noiseB

Add noise/grain to a layer.

Parameters:

  • amount: Noise intensity 0.0-1.0 (default 0.2)

  • layer_name: Target layer; defaults to active layer

  • image_index: Target image index (default 0)

Returns status dict.

NameRequiredDescriptionDefault
amountNo
layer_nameNo
image_indexNo

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 only says "Returns status dict." It does not say the layer is modified destructively in place, whether the operation is undoable, whether a prior selection is respected, or what happens if layer_name does not resolve — all 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?

The effect sentence is front-loaded and the parameter list is easy to scan. The default values restated in the parameter list duplicate the schema, which is mild redundancy rather than confusion.

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?

Parameters are fully covered, but for a destructive image-editing mutation with no annotations and no output schema, the definition should still disclose undo/edit-state implications and failure behavior. What is present is adequate; what is absent is the risky part.

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 description compensates well: it documents all three parameters, including the 0.0–1.0 range for amount and the active-layer fallback for layer_name. It loses a point because it does not explain how layer_name is matched (exact name vs. index vs. partial) or what an out-of-range amount does.

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?

"Add noise/grain to a layer" states a specific verb and resource plus the visual effect, which is enough to separate it from siblings like blur, denoise, or sharpen. It stops short of naming any sibling or clarifying the boundary with the other stylize filters (e.g. apply_pixelate, apply_emboss).

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 never says when to reach for this tool versus apply_gaussian_blur, apply_pixelate, or the generic gegl_apply_filter. The only guidance is a metaparameter default ("defaults to active layer"), which is about targeting, not about tool selection.

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

apply_pixelateB

Pixelate a layer using a mosaic/block effect.

Parameters:

  • block_size: Size of each mosaic block in pixels (default 10)

  • layer_name: Target layer; defaults to active layer

  • image_index: Target image index (default 0)

Returns status dict.

NameRequiredDescriptionDefault
block_sizeNo
layer_nameNo
image_indexNo

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 must carry the full behavioral burden; it does disclose that the operation targets a layer and returns a status dict, and that layer/image default to the active layer and index 0. However, it never states whether the pixelation is applied destructively in place, whether it affects the whole layer or only the selection, or whether it is undoable — key facts for an image mutation.

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 purpose sentence is front-loaded and the parameter list is easy to scan, with no filler prose. The default values in the list duplicate the schema defaults, which is minor but slightly 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 three-parameter, no-required-args mutation tool with no annotations and no output schema, the definition covers parameters and return type adequately but omits side-effect, scope (selection vs full layer), and undoability information. An agent could call it correctly but not predict its impact.

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: all three parameters are explained with units ('block_size in pixels'), default values, and the layer_name fallback to the active layer. That is meaningful added meaning beyond the bare schema, though the interaction between layer_name and image_index is not spelled out.

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 and resource ('Pixelate a layer') plus the effect mechanism ('mosaic/block effect'), which is unambiguous. It does not distinguish itself from neighboring filter tools such as apply_noise, apply_emboss, or blur, so differentiation among siblings is left to the reader.

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 choose this tool over alternatives like blur, apply_noise, or gegl_apply_filter, and no preconditions are stated. The only usage hint is implicit in the parameter defaults (active layer, image 0).

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

apply_vignetteB

Apply a vignette darkening effect around the edges of a layer.

Parameters:

  • softness: Edge softness / fade width (default 3.0)

  • shape: Shape factor — 1.0 = elliptical (default), values >1 = more rectangular

  • layer_name: Target layer; defaults to active layer

  • image_index: Target image index (default 0)

Returns status dict.

NameRequiredDescriptionDefault
shapeNo
softnessNo
layer_nameNo
image_indexNo

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 burden. It conveys that the operation is a mutation of layer pixels, but does not say whether the effect is destructive or reversible, whether it creates a new layer or edits in place, whether an alpha channel or selection matters, or what 'Returns status dict' actually contains. The mention of the return type is the only extra behavioral hint.

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 effect statement is front-loaded, followed by a compact bulleted parameter list and a one-line return note. No filler sentences, though the bullet block is somewhat list-like rather than integrated prose.

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 four-parameter, zero-required mutation tool with no output schema, the description covers every argument and states the return shape. The remaining gap is the lack of disclosure about destructive-ness and layer/target selection behavior, which matters for an image-editing mutation.

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% — properties have only titles and defaults — but the description compensates by documenting all four parameters with meaning and defaults, including the non-obvious shape semantics (1.0 = elliptical, >1 = more rectangular) and softness as fade width. This is genuinely additive over the raw schema.

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 states a specific verb and resource — 'Apply a vignette darkening effect around the edges of a layer' — which is unambiguous and clearly distinct from sibling effects such as apply_noise, apply_emboss, or apply_drop_shadow. It does not explicitly name alternatives, but the effect name alone is specific enough for an agent to identify it.

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 tool versus other edge or filter effects (e.g. apply_gaussian_blur, gefl_apply_filter), and no stated prerequisites such as whether a layer must exist or be selected. Usage is only implied by the notion of targeting 'the active layer' by default.

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

auto_levelsB

Automatically stretch the tonal range of an image (auto levels / auto stretch contrast).

Parameters:

  • image_index: Index of the target image (default 0)

  • layer_name: Name of the layer to adjust; defaults to active layer

Returns status dict.

NameRequiredDescriptionDefault
layer_nameNo
image_indexNo

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It says the tool adjusts a layer and returns a status dict, but it does not disclose whether the change is destructive or undoable, how the active layer default interacts with the target image, or what conditions cause errors.

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 short and front-loaded with the operation, followed by a compact parameter list and return note. Every sentence conveys useful information and there is no redundant wording.

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 image adjustment tool, the description covers the operation, parameters, defaults, and return type. However, with no annotations and no output schema, it leaves out mutation safety, undo behavior, and the contents of the status dict, so it is only minimally 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%, so the description must compensate. It documents both parameters with useful meaning beyond the schema titles: image_index identifies the target image and defaults to 0, while layer_name identifies the layer to adjust and defaults to the active 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?

The description names a specific verb and resource: automatically stretch the tonal range of an image, with the synonyms auto levels and auto stretch contrast. This is clear, but it does not explicitly distinguish the tool from nearby siblings such as adjust_curves or adjust_brightness_contrast.

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 states what the operation does but gives no when-to-use guidance. It does not mention alternatives like adjust_curves or adjust_brightness_contrast, nor does it say when auto levels is preferable or inappropriate.

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

batch_exportA

Export all open images (or a specific one) to a directory.

Parameters:

  • output_dir: Directory to write exported files into

  • format: "png", "jpeg", "webp", "tiff" (default "png")

  • quality: JPEG/WEBP quality (default 90)

  • name_pattern: Filename template — use {name} for image name, {index} for position

  • image_index: If set, export only that image; omit to export all open images

Returns:

  • exported: list of {file_path, name, width, height}

  • count: number of files written

  • errors: list of any export errors

NameRequiredDescriptionDefault
formatNopng
qualityNo
output_dirYes
image_indexNo
name_patternNo{name}

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 burden. It does disclose the return payload (exported, count, errors) and partial-failure reporting, which is genuinely useful given there is no output schema. It omits whether existing files are overwritten, whether the extension is appended automatically, and whether unsaved edits are included.

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, then two scannable blocks for parameters and returns; no filler sentences. The labeled list is slightly mechanical, but every entry carries information the schema lacks.

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 5-parameter export tool with no annotations and no output schema, the description covers scope, all inputs, and the return shape, which is close to sufficient. The remaining gap is file-collision/overwrite behavior and whether writes require a writable directory or elevated permissions.

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?

With 0% schema description coverage, the description fully compensates: every one of the 5 parameters gets meaning beyond its bare title, including the allowed format values, quality defaults and its JPEG/WEBP-only scope, and the {name}/{index} placeholders in name_pattern. The image_index note about omitting it to export all is a semantic rule the schema cannot express.

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 ('Export all open images ... to a directory') plus the scope toggle (all vs. a single image), so the agent can tell this is a bulk operation. It does not name the obvious single-image sibling (export_image), so differentiation is inferred 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 the image_index semantics ('omit to export all open images'), which tells the agent how to switch between batch and single export. However, it never names export_image as the alternative for one-off exports, nor does it state prerequisites such as having images open or an existing/writable output_dir.

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

batch_resizeA

Resize all open images to a common target size.

Parameters:

  • width / height: Target dimensions in pixels (provide one or both)

  • scale_factor: Proportional scale (e.g. 0.5 = 50%); overrides width/height if set

  • maintain_aspect: Preserve aspect ratio when only one dimension is given (default True)

Returns: {results: [{image_id, old_width, old_height, new_width, new_height}], count}

NameRequiredDescriptionDefault
widthNo
heightNo
scale_factorNo
maintain_aspectNo

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 does disclose the return payload and how conflicting parameters resolve, which is real value. It omits mutation semantics that matter here: whether images are resized in place versus copied, whether the operation is undoable, and what happens when no images are open or no sizing parameter is supplied.

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?

Front-loaded purpose sentence, then a compact bulleted parameter block, then a returns line — no filler. The Returns line earns its place because there is no output schema.

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 four undocumented parameters, no annotations, and no output schema, the description covers the essential contract: sizing options, precedence, default, and response shape. It falls short only on the zero-parameter case and on in-place/undo behavior for a destructive bulk operation.

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 largely does: width/height units in pixels, scale_factor as a proportional multiplier with an example, its override precedence, and the meaning of maintain_aspect. The gap is that all four parameters are optional and the description never states the behavior when none are provided.

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 gives a specific verb and resource ('Resize') with an explicit scope ('all open images'), which separates it from the single-image siblings like scale_image and scale_to_fit. It stops short of a 5 because no sibling is named, so the agent must infer that scale_image is the per-image counterpart.

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 communicates precedence rules inside the invocation ('scale_factor ... overrides width/height if set') and the aspect-ratio default, which is genuine usage guidance for choosing among parameters. However, it never says when to prefer this tool over scale_image, scale_to_fit, or batch_export, and gives no prerequisites such as needing images open.

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

blurB

Apply Gaussian blur to a layer.

Parameters:

  • radius_x: Horizontal blur radius in pixels (default 5.0)

  • radius_y: Vertical blur radius in pixels (default 5.0)

  • image_index: Target image index (default 0)

  • layer_name: Layer to blur; defaults to active layer

Returns status dict.

NameRequiredDescriptionDefault
radius_xNo
radius_yNo
layer_nameNo
image_indexNo

TDQS

B3.1/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, yet it only notes "Returns status dict." It does not say whether the blur is applied destructively to layer pixels, whether it is undoable, whether it respects selections, or what permissions/state the image must be in.

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 one-line purpose followed by a compact parameter list; every line earns its place. The quoted multi-line formatting is slightly verbose but not wasteful.

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 4-parameter mutation tool with no annotations and no output schema, the parameter coverage is good but behavioral coverage is thin — nothing about side effects, layer targeting when multiple images are open, or return dict contents beyond "status dict." Adequate as a minimum-viable definition, not 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%, so the description must compensate, and it does: it documents all four parameters including units (pixels), defaults (5.0, 5.0, 0), and the non-obvious semantics that `layer_name` defaults to the active layer. Minor gap: no guidance on valid ranges or whether non-integer radii are accepted.

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?

"Apply Gaussian blur to a layer" gives a specific verb and resource, so the core action is unambiguous. However, the sibling list contains `apply_gaussian_blur` (and `gegl_apply_filter`), and the description makes no attempt to say how this tool differs from those, leaving a real selection ambiguity.

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 the near-duplicate sibling `apply_gaussian_blur`. The agent must infer from the name alone that this is the preferred blur path versus the GEGL filter tools.

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

call_apiA

Call GIMP 3.2 API methods through PyGObject console.

GIMP MCP Protocol:

  • Use api_path="exec" to execute Python code in GIMP

  • args[0] should be "pyGObject-console" for executing commands

  • args[1] should be array of Python code strings to execute

  • Commands execute in persistent context - imports and variables persist

  • Always call Gimp.displays_flush() after drawing operations

For image operations, use get_image_bitmap() which return proper MCP Image objects that Claude can process directly.

GUIDANCE PROMPTS:

  • For common operations and best practices, invoke the 'gimp_best_practices' prompt

  • For complex multi-element drawings with layers, invoke the 'gimp_iterative_workflow' prompt

Optional Initialization Pattern: ["images = Gimp.get_images()", "image1 = images[0]", "layers = image1.get_layers()", "layer1 = layers[0]", "drawable1 = layer1"]

Common Operations:

  • Draw line: ["Gimp.pencil(drawable1, [0, 0, 200, 200])", "Gimp.displays_flush()"]

  • Set color: ["from gi.repository import Gegl", "red_color = Gegl.Color.new('red')", "Gimp.context_set_foreground(red_color)"]

  • Draw ellipse: ["Gimp.Image.select_ellipse(image1, Gimp.ChannelOps.REPLACE, 100, 100, 30, 20)", "Gimp.Drawable.edit_fill(drawable1, Gimp.FillType.FOREGROUND)", "Gimp.Selection.none(image1)", "Gimp.displays_flush()"]

  • Paint curve: ["Gimp.paintbrush_default(drawable1, [50.0, 50.0, 150.0, 200.0, 250.0, 50.0, 350.0, 200.0])", "Gimp.displays_flush()"]

  • Draw bezier curve: ["path = Gimp.Path.new(image1, 'my_bezier_path')", "image1.insert_path(path, None, 0)", "stroke_id = path.bezier_stroke_new_moveto(100, 100)", "path.bezier_stroke_cubicto(stroke_id, 150, 50, 250, 150, 300, 100)", "Gimp.Drawable.edit_stroke_item(drawable1, path)", "Gimp.Selection.none(image1)", "Gimp.displays_flush()"]

  • Get open filenames: ["print([x.get_file().get_path() for x in Gimp.get_images()])"]

  • Copy layer between images: ["image1 = Gimp.get_images()[0]", "image2 = Gimp.get_images()[1]", "width = image1.get_width()", "height = image1.get_height()", "image1.select_rectangle(Gimp.ChannelOps.REPLACE, 0, 0, width, height)", "image1_layers = image1.get_selected_layers()", "drawable = image1_layers[0]", "Gimp.edit_copy([drawable])", "image2_layers = image2.get_layers()", "target_drawable = image2_layers[0]", "floating_sel = Gimp.edit_paste(target_drawable, True)[0]", "Gimp.floating_sel_anchor(floating_sel)", "Gimp.displays_flush()"]

  • New image: ["image1 = Gimp.Image.new(350, 800, Gimp.ImageBaseType.RGB)", "layer1 = Gimp.Layer.new(image1, 'Background', 350, 800, Gimp.ImageType.RGB_IMAGE, 100, Gimp.LayerMode.NORMAL)", "image1.insert_layer(layer1, None, 0)", "drawable1 = layer1", "white_color = Gegl.Color.new('white')", "Gimp.context_set_background(white_color)", "Gimp.Drawable.edit_fill(drawable1, Gimp.FillType.BACKGROUND)", "Gimp.Display.new(image1)"]

Important Tips:

  • When filling layers with color, ensure layer has alpha channel using Gimp.Layer.add_alpha()

  • Use Gimp.Drawable.fill() for reliable full-layer fills

  • Specify colors precisely with rgb(R, G, B) or rgba(R, G, B, A) to avoid transparency issues

  • After drawing operations, always call Gimp.displays_flush()

  • After selection operations for drawing, unselect with Gimp.Selection.none(image1)

GIMP 3.2 API Changes:

  • Use Gimp.get_images() instead of deprecated Gimp.list_images()

  • Use image.get_layers() instead of Gimp.get_active_layer()

  • gimpfu module not available in GIMP 3.2

  • Colors created with Gegl.Color.new('color_name')

  • Full API documentation: https://developer.gimp.org/api/3.0/libgimp/

Parameters:

  • api_path: Use "exec" for Python execution

  • args: ["pyGObject-console", ["python_code_array"]] or ["pyGObject-eval", ["expression"]]

  • kwargs: Dictionary of keyword arguments (rarely used)

Returns:

  • JSON string of the result or error message

NameRequiredDescriptionDefault
argsNo
kwargsNo
api_pathYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.9/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 key behavior beyond the schema: commands execute in a persistent context where imports and variables survive between calls, results/errors come back as a JSON string, and GIMP 3.2-specific API changes apply. It stops short of warning that this is arbitrary code execution with potentially irreversible effects on open images, 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.

Conciseness3/5

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

Headers and front-loading are good — purpose first, then protocol, then parameters — but the body is very long and a large fraction of the 'Common Operations' recipes duplicate functionality already offered by dedicated siblings. Several tips (displays_flush, Selection.none) are repeated across examples, adding length without new 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 three-parameter arbitrary-code execution tool with no annotations and no schema descriptions, the definition covers the essentials: argument encoding, persistent interpreter state, error return format, and version-specific API gotchas. An output schema exists so return values need little explanation. The main omission is any caution about destructive operations or preferring dedicated tools.

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 explains api_path="exec", that args[0] must be "pyGObject-console" (or "pyGObject-eval"), that args[1] is an array of Python code strings, and that kwargs are a rarely-used keyword dictionary. Without this the zero-coverage schema would be nearly unusable; it adds the format meaning the schema lacks.

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 states a specific verb and resource: execute GIMP 3.2 API methods via the PyGObject console, with the concrete transport ('api_path="exec"', 'pyGObject-console') spelled out. It is clearly distinguishable as a raw escape hatch from the ~90 dedicated siblings (draw_line, fill_layer, etc.), but the definition never explicitly names that relationship, so the agent must infer 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 framed: it offers 'Common Operations' recipes and points to the gimp_best_practices and gimp_iterative_workflow prompts, but never says when to use this tool instead of the dedicated sibling tools that perform the same operations (draw_line, fill_ellipse, select_ellipse). No when-not-to-use or exclusion guidance is given, which is a real gap given the sibling set.

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

check_serverA

Check whether the GIMP MCP plugin socket is reachable and responding.

Returns a status dict:

  • connected: bool

  • host / port: where it tried

  • gimp_version: if connected successfully

  • error: description if not connected

Use this before any other operation to verify the GIMP plugin is running. If not connected, open GIMP and run Tools > Start MCP Server.

NameRequiredDescriptionDefault

No parameters

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 the tool only probes connectivity, enumerates the returned status dict keys (connected, host/port, gimp_version, error), and tells the agent what to do on failure. It does not mention timeouts or latency, so an agent can't tell whether a call may hang, but the safety profile is effectively conveyed ('check' implies a read-only probe).

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?

Front-loaded with the purpose in the first sentence, then a compact bulleted return-value contract, then usage guidance. Since there is no output schema, the enumerated return fields earn their place rather than padding.

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-parameter connectivity probe with no output schema and no annotations, the description supplies everything missing from structured fields: what it returns, what failure looks like, and the first-step usage rule plus recovery instructions. Nothing needed to call it correctly is absent.

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 schema coverage is 100% and empty. Baseline 4 applies.

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

Purpose5/5

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

States a specific verb and resource: 'Check whether the GIMP MCP plugin socket is reachable and responding.' This is unambiguous and clearly distinct from siblings such as restart_server, pdb_run, or call_api, which operate on GIMP itself rather than on the socket connection.

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 explicit placement in the workflow ('Use this before any other operation to verify the GIMP plugin is running') plus a concrete remediation path ('open GIMP and run Tools > Start MCP Server'). It stops short of naming restart_server as the alternative when the server hangs rather than being down, which is the one remaining routing gap.

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

close_imageB

Close an image, optionally saving as XCF first.

Parameters:

  • image_index: Index of the image to close (default 0)

  • save_first: If True, save as XCF before closing (default False)

Returns status dict.

NameRequiredDescriptionDefault
save_firstNo
image_indexNo

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations supplied, the description carries the full behavioral burden and does not meet it: it never says whether unsaved edits are discarded, whether closing the last image terminates or changes application state, where the XCF is written, or what happens if image_index is invalid. The only disclosure is "Returns status dict." For an operation that destroys in-memory state, 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.

Conciseness4/5

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

One front-loaded sentence states the action, followed by a compact parameter list and a one-line return note. It is tight overall, with slight redundancy between the parameter list and the schema's own defaults.

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, zero-required tool with no output schema or annotations, the definition covers the mechanics but omits the consequences of closing (loss of unsaved data), the XCF destination, and the shape of the returned status dict. Adequate to invoke, not adequate to invoke safely.

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 explain both parameters in prose (index of the image to close with default 0; save as XCF before closing when true). It adds meaning beyond the bare titles, though it doesn't say how to obtain a valid image_index (list_images/get_image_metadata) or where the XCF path comes from.

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?

"Close an image, optionally saving as XCF first" gives a specific verb plus resource, making it easy to separate from siblings like open_image, save_xcf, and export_image. It stops short of a 5 because it never explicitly contrasts itself with those siblings (e.g., whether closing with save_first is preferred over save_xcf then close).

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, no mention of alternatives such as save_xcf followed by close, and no prerequisites (is an active image context required?). The only conditional hinted at is the save_first flag, which is parameter behavior rather than usage guidance.

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

convert_color_modeB

Convert an image to a different color mode.

Parameters:

  • mode: "RGB", "GRAY", or "INDEXED"

  • num_colors: Number of colors for INDEXED mode (default 256)

  • image_index: Target image index (default 0)

Returns status dict.

NameRequiredDescriptionDefault
modeYes
num_colorsNo
image_indexNo

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, and it discloses almost nothing. It never says whether the conversion happens in place or on a copy, how the alpha channel or transparency is handled when converting to GRAY or INDEXED, whether the operation is undoable, or what 'status dict' contains. Only the return type is mentioned, and only in a single vague phrase.

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 short, front-loads the purpose, and then uses a clean parameter list, which makes it easy to scan. The only wasteful line is 'Returns status dict.', which adds little value without saying what the status contains.

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?

Parameter documentation is solid, but for a mutation tool with no annotations and no output schema, the description leaves out behavior the agent needs: whether it mutates in place, what the 'status dict' reports, and how INDEXED quantization interacts with the existing palette. It is adequate but clearly incomplete for a write operation.

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 schema declares no enums, so the description does real work: it enumerates the allowed mode values (RGB, GRAY, INDEXED), explains that num_colors applies only to INDEXED mode, and clarifies the role and default of image_index. The main gap is that it doesn't say what happens to num_colors when a non-INDEXED mode is passed.

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: 'Convert an image to a different color mode.' That is unambiguous about the operation. It does not distinguish itself from nearby siblings like desaturate or invert_colors, which also change pixel values, so the agent gets no explicit differentiation.

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 at all: nothing says when a color-mode conversion is preferred over desaturate, invert_colors, or adjust_color_balance. There is also no mention of prerequisites, such as needing an open image or an active image context, that would help the agent pick this tool correctly.

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

create_layerA

Create and insert a new layer into an image.

Parameters:

  • name: Layer name (default "New Layer")

  • width, height: Layer dimensions; defaults to image dimensions

  • fill: Initial fill — "transparent" (default), "white", "black", or any CSS color

  • opacity: Layer opacity 0-100 (default 100)

  • blend_mode: GIMP layer mode name — "NORMAL" (default), "MULTIPLY", "SCREEN", etc.

  • position: Stack position — -1 = top (default), 0 = bottom

  • image_index: Target image index (default 0)

Returns: {layer_name, layer_id, width, height, position}

NameRequiredDescriptionDefault
fillNotransparent
nameNoNew Layer
widthNo
heightNo
opacityNo
positionNo
blend_modeNoNORMAL
image_indexNo

TDQS

A3.6/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 disclose defaults and value domains for every parameter, which is genuinely useful for a mutation tool, but it says nothing about permissions, whether the layer becomes active/selected, error behavior when no image exists, or whether the action is undoable — notable gaps given that an undo tool exists alongside it.

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 purpose sentence followed by a compact parameter list and a Returns line; nothing is padded. The list format is appropriate for eight parameters, though a few entries only restate schema defaults rather than adding new meaning.

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 eight-optional-parameter mutation tool with no output schema, the definition covers purpose, every parameter, and the return shape, which is close to sufficient. What remains missing is precondition/error context (open image, image_index validity) and any note on side effects to the active layer or undo stack.

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%, yet the description documents all eight parameters with defaults, accepted values, and semantics — fill color options including CSS colors, opacity range 0-100, blend_mode examples, and the crucial meaning of position (-1 = top, 0 = bottom). This fully compensates for the barren schema.

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 sentence gives a specific verb and resource ('Create and insert a new layer into an image') and the position parameter implies it produces an empty layer rather than importing one. It never names the nearest alternatives (import_layer, duplicate_layer), so an agent must infer the distinction from the sibling list alone.

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: 'create a new layer' suggests this is the tool for adding an empty layer, and the defaults hint at the common case. There is no explicit statement of when to prefer this over import_layer or duplicate_layer, nor any prerequisite such as requiring an open image.

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

crop_to_rectB

Crop the image canvas to an explicit rectangle.

Parameters:

  • x, y: Top-left corner of the crop rectangle

  • width, height: Dimensions of the crop rectangle

  • image_index: Target image index (default 0)

Returns: {status, x, y, width, height}

NameRequiredDescriptionDefault
xYes
yYes
widthYes
heightYes
image_indexNo

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden. It says the canvas is cropped and lists the returned keys, but never discloses that pixels outside the rectangle are discarded, whether the operation is undoable, how it interacts with multiple images/layers, or what happens if the rectangle exceeds canvas bounds.

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?

Short, front-loaded with the action sentence, then a compact parameter list and a return shape. Every line carries information; only minor tightening is possible.

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 5-parameter mutation tool with no annotations and no output schema, the description covers parameters and return keys adequately. It is incomplete on the destructive side of the operation — irreversibility, undo, and multi-image effects — which an agent needs before invoking a canvas crop.

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 supply all parameter meaning, and it does: it defines x/y as the top-left corner, width/height as dimensions, and image_index as the target index with a default of 0. It still omits units (pixels), coordinate origin relative to the image, and behavior for out-of-bounds or non-positive 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 first sentence names a specific verb and resource ('Crop the image canvas') and adds the scoping qualifier 'explicit rectangle', which implicitly separates it from the sibling crop_to_selection. It stops short of naming that sibling, so the agent must infer the distinction from the sibling list.

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 'explicit rectangle' hints that this is the coordinate-based alternative to crop_to_selection, but no sentence states when to prefer one over the other. No prerequisites, no note about whether a selection affects the result, and no mention of undo.

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

crop_to_selectionB

Crop the image canvas to the current selection bounds.

Parameters:

  • autocrop: If True, auto-detect crop bounds instead of using selection (default False)

  • image_index: Target image index (default 0)

Returns: {status, x, y, width, height} — crop region applied

NameRequiredDescriptionDefault
autocropNo
image_indexNo

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It indicates that cropping occurs and reports the applied crop region, but it does not disclose that cropping is a destructive canvas mutation, whether the change can be undone, or what happens to existing layers or image state.

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

Conciseness4/5

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

The description is short and front-loads the main action before listing parameters and return values. The parameter defaults repeat the schema, but the structure remains efficient and appropriate for a two-parameter tool.

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

Completeness3/5

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

For a simple two-parameter tool, the description covers purpose, parameter meanings, and return shape without requiring an output schema. However, it omits the selection prerequisite, the destructive nature of cropping, and guidance against the closely related crop_to_rect sibling.

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%, but the description compensates by explaining both parameters: autocrop means auto-detect crop bounds instead of using the selection, and image_index selects the target image. The image_index explanation is thin, but overall the description adds meaningful semantics beyond the bare schema titles and 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 states a specific verb and resource: crop the image canvas to the current selection bounds. It is clear about what the tool does, but it does not distinguish it from the sibling crop_to_rect or explain how it relates to selection 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?

Usage is only implied by the phrase "current selection bounds" and by the autocrop parameter, which says to auto-detect bounds instead of using the selection. The description does not explicitly say when to choose this versus crop_to_rect, nor does it state prerequisites such as having an active selection.

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

delete_layerB

Delete a layer from an image.

Parameters:

  • layer_name: Name of the layer to delete

  • layer_index: Position index of the layer (alternative to layer_name)

  • image_index: Target image index (default 0)

Provide either layer_name or layer_index. Defaults to active layer if neither given.

Returns status dict.

NameRequiredDescriptionDefault
layer_nameNo
image_indexNo
layer_indexNo

TDQS

B3.4/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 mostly fails it. It does not state that deletion is destructive or whether it is undoable via the undo sibling, what happens to pixels in the removed layer, or what occurs if the named layer does not exist. Only "Returns status dict" hints at the outcome, and even that is vaguer than an output schema would 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?

The one-line purpose is front-loaded, followed by a tight parameter list that adds information rather than echoing the schema. Every sentence earns its place and there is no filler.

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

Completeness3/5

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

For a zero-annotation mutation with no output schema, an agent still lacks the safety picture: reversibility, failure modes, and side effects on the image state are unaddressed. The address-mode logic and defaults are complete, so the definition is usable but not sufficient on its own.

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: all three parameters are explained, the mutual exclusivity of layer_name and layer_index is made explicit, and both defaults (image_index=0, fall back to active layer) are stated. Gaps remain on whether layer_index is 0-based and whether layer_name must be unique.

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?

"Delete a layer from an image" states a specific verb and resource, and the target (a layer within an image) is unambiguous. It separates cleanly from sibling layer tools like create_layer, duplicate_layer, rename_layer, and reorder_layer purely by verb, 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?

The description gives within-call selection guidance ("Provide either layer_name or layer_index. Defaults to active layer if neither given"), which is genuinely useful for choosing an address mode. It gives no broader when-to-use context: nothing about preferring flatten_image or merge_visible_layers, nothing about prerequisites, and no warning that this is a destructive operation.

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

denoiseB

Reduce noise in a layer using GEGL noise-reduction.

Parameters:

  • strength: Noise reduction strength 0-100 (default 50)

  • image_index: Target image index (default 0)

  • layer_name: Layer to denoise; defaults to active layer

Returns status dict.

NameRequiredDescriptionDefault
strengthNo
layer_nameNo
image_indexNo

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 burden. It discloses only that it uses GEGL and returns a status dict; it does not say whether pixels are modified destructively in place, whether the operation is undoable, whether it requires the GIMP server to be running, or what happens if the named layer is missing. For a mutation tool with zero annotation coverage this is a meaningful gap.

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

Conciseness4/5

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

Front-loaded with the one-sentence purpose, followed by a compact, scannable parameter list and a return note. No filler sentences. Slightly under-structured only in that the parameter block lacks any note on error behavior, but nothing 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 simple three-parameter filter with no output schema, the definition covers purpose, parameters, and return type, which is close to sufficient. However, with no annotations and no output schema, the missing behavioral details (in-place mutation, failure modes, undo) leave the agent guessing about side effects 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?

Schema description coverage is 0%, so the description must compensate, and it largely does: it documents all three parameters with semantics the schema lacks — the 0-100 range and default 50 for strength, the default-0 target image index, and the fact that layer_name falls back to the active layer when omitted. Minor gap: no clarification of what image_index means when multiple images are open or what layer_name matching rules apply.

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 ('Reduce noise in a layer') plus the underlying mechanism (GEGL noise-reduction), which distinguishes it from nearby siblings like sharpen, blur, and especially apply_noise (which adds rather than removes noise). It stops short of explicitly contrasting itself with gegl_apply_filter or apply_gaussian_blur, 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 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. With siblings such as apply_gaussian_blur, sharpen, and the generic gegl_apply_filter available, the description never says why an agent should pick denoise over running the GEGL op through the generic filter tool, nor does it state preconditions like a selected/active image or an existing layer.

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

desaturateB

Convert a layer to grayscale (desaturate).

Parameters:

  • mode: Desaturation algorithm — "luminosity" (default), "luma", "average", "lightness"

  • image_index: Target image index (default 0)

  • layer_name: Layer to desaturate; defaults to active layer

Returns status dict.

NameRequiredDescriptionDefault
modeNoluminosity
layer_nameNo
image_indexNo

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 burden and does disclose the default target (active layer), per-parameter defaults, and that a status dict is returned. It omits whether the pixel change is destructive/undoable, whether it applies only to the layer or to any selection, and how missing layers are reported.

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-line purpose followed by a compact parameter list; front-loaded and free of filler. The mode default is restated in both the description and the schema, a minor redundancy, but nothing is wasted.

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 three-parameter pixel-mutation tool, the description covers purpose, every parameter, defaults, and the return type. The main gap is the absence of any note about destructiveness or undo, which matters most for a tool with no annotations and no output schema.

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

Parameters3/5

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

Schema coverage is 0%, so the description must compensate, and it does enumerate the mode values (luminosity, luma, average, lightness) plus defaults for all three parameters — real value the schema lacks. However it never explains what image_index indexes (multiple open images) or how layer_name is matched when duplicated, so the compensation is partial.

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: "Convert a layer to grayscale (desaturate)", which is unambiguous. It does not distinguish itself from convert_color_mode, a sibling that also produces grayscale output via a different mechanism, so it falls short of full sibling differentiation.

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

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, and no alternatives are named. An agent cannot tell from this text whether to use desaturate or convert_color_mode for a grayscale result, nor what preconditions (an open image, an existing layer) apply.

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

draw_ellipseA

Draw an ellipse outline (stroke only) on a layer.

Parameters:

  • x, y: Top-left corner of the bounding box

  • width, height: Bounding box dimensions

  • color: Stroke color; uses current foreground if omitted

  • line_width: Stroke width in pixels (default 2.0)

  • layer_name: Target layer; defaults to active layer

  • image_index: Target image index (default 0)

Returns status dict.

NameRequiredDescriptionDefault
xYes
yYes
colorNo
widthYes
heightYes
layer_nameNo
line_widthNo
image_indexNo

TDQS

A3.6/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 behavioral burden. It discloses useful traits — stroke-only rendering, foreground-color fallback, active-layer fallback, and a status-dict return — but says nothing about undo semantics, whether it respects the active selection, anti-aliasing, or what fields the status dict contains.

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 one-line summary followed by a scannable per-parameter list is well front-loaded and wastes little space. The repeated default values (line_width 2.0, image_index 0) duplicate the schema and are the only clearly expendable content.

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

Completeness4/5

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

For an eight-parameter drawing primitive with no annotations and no output schema, the definition covers every parameter and states the return type. The gaps are minor: 'Returns status dict' is not expanded, and no note about requiring an open image or selection behavior is given.

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 explains that x/y are the top-left corner of the bounding box (the schema only says 'X'/'Y'), that color falls back to foreground, that layer_name falls back to the active layer, and that line_width is in pixels. The defaults it repeats are already in the schema, and units for x/y/width/height are never stated.

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 gives a specific verb and resource ('Draw an ellipse outline') and the parenthetical '(stroke only)' distinguishes it from the sibling fill_ellipse without needing the schema. It does not explicitly name fill_ellipse or select_ellipse, 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?

'Stroke only' hints that a filled shape requires fill_ellipse instead, and 'on a layer' implies an image must be open. There is no explicit when-to-use or when-not-to-use statement, no mention of selection interaction, and no prerequisite guidance, so usage must be inferred.

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

draw_lineA

Draw a straight line on a layer.

Parameters:

  • x1, y1: Start point

  • x2, y2: End point

  • color: Stroke color (CSS / hex / rgb); uses current foreground if omitted

  • width: Stroke width in pixels (default 2.0)

  • tool: "pencil" (default, hard edge) or "paintbrush" (soft edge)

  • layer_name: Target layer; defaults to active layer

  • image_index: Target image index (default 0)

Returns status dict.

NameRequiredDescriptionDefault
x1Yes
x2Yes
y1Yes
y2Yes
toolNopencil
colorNo
widthNo
layer_nameNo
image_indexNo

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 does add real behavioral detail beyond structured fields: the color fallback to the current foreground, the width unit (pixels) and default, the pencil-vs-paintbrush edge semantics, and "Returns status dict." However, it never states that this mutates pixel data permanently, whether it is undoable, what happens on an invalid layer_name, or whether it errors with no open image — significant omissions for an unannotated write 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?

One-sentence purpose followed by a scannable per-parameter list ordered roughly by importance, with required coordinates first and optional styling last. Every line carries information, including "Returns status dict." which is needed because no output schema exists.

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 nine-parameter drawing tool with no annotations and no output schema, the definition covers all inputs, their defaults, and the return shape, which is enough to call it correctly. What it lacks is the operational frame — coordinate origin, layer type constraints, and mutation/undo semantics — so it stops short of fully complete.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate, and it largely does: all nine parameters are explained with meaning and defaults, and the `tool` parameter gets enum semantics ("pencil" hard edge vs "paintbrush" soft edge) that the schema lacks entirely. The remaining gap is the coordinate space for x1/y1/x2/y2 — image pixels vs canvas coordinates and origin — which is never 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?

"Draw a straight line on a layer" gives a specific verb (draw) and resource (a straight line on a layer). The shape term alone separates it from siblings draw_rectangle, draw_ellipse, and fill_rectangle 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 Guidelines3/5

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

Usage is only implied by the parameter list: layer_name "defaults to active layer" and image_index "default 0" hint at the multi-image/active-layer context, but there is no explicit when-to-use guidance, no alternative named (e.g. paintbrush soft-edge via a different tool), and no stated prerequisites such as an image or layer needing to exist.

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

draw_rectangleA

Draw a rectangle outline (stroke only) on a layer.

Parameters:

  • x, y: Top-left corner

  • width, height: Rectangle dimensions

  • color: Stroke color; uses current foreground if omitted

  • line_width: Stroke width in pixels (default 2.0)

  • layer_name: Target layer; defaults to active layer

  • image_index: Target image index (default 0)

Returns status dict.

NameRequiredDescriptionDefault
xYes
yYes
colorNo
widthYes
heightYes
layer_nameNo
line_widthNo
image_indexNo

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. It usefully discloses defaults (foreground color fallback, line_width 2.0, active layer fallback, image_index 0) and that it returns a status dict, but it does not state that this mutates the image, whether it is undoable, or 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.

Conciseness5/5

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

A single front-loaded purpose sentence followed by a compact per-parameter list. Every line adds information; nothing is redundant and the structure is easy to scan.

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 mutation tool with no annotations and no output schema, the description covers purpose, all parameters, key defaults, and the return shape ('status dict'). It could be more complete by noting the coordinate space and undo implications, but nothing essential to calling it correctly is missing.

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%, yet the description documents every one of the 8 parameters, including defaults that the schema only encodes as JSON defaults. It falls short of a 5 because the color format (hex vs. name) and the coordinate units for x/y are left unspecified.

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 and resource, 'Draw a rectangle outline (stroke only) on a layer,' and the '(stroke only)' qualifier distinguishes it from fill_rectangle and fill_ellipse without naming them. It stops short of explicitly naming the alternative siblings, so an agent must infer the contrast.

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: 'stroke only' suggests when to prefer this over fill_rectangle, and the layer_name default implies the active-layer case. There is no explicit when-to-use/when-not guidance and no mention of prerequisites such as an open image or an existing layer.

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

duplicate_layerA

Duplicate a layer and insert the copy above it.

Parameters:

  • layer_name: Name of the layer to duplicate; defaults to active layer

  • image_index: Target image index (default 0)

Returns: {layer_name, layer_id}

NameRequiredDescriptionDefault
layer_nameNo
image_indexNo

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 disclosure burden. It helpfully states that the copy is inserted above the original and what fields are returned, but it does not describe whether the original remains unchanged, which layer properties are copied, or what happens if the layer is not found.

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

Conciseness5/5

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

The description is short and front-loaded with the core operation. The parameter list and return fields are structured efficiently, with no unnecessary wording.

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 duplication tool, the description covers purpose, parameter defaults, insertion behavior, and return values. It is missing explicit sibling-tool routing and error-case behavior, but otherwise gives enough context to invoke the tool correctly.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate, and it does document both parameters with defaults. It clarifies that layer_name defaults to the active layer and that image_index targets an image and defaults to 0. This adds meaningful semantics beyond the bare schema.

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: duplicate a layer. It also adds the useful positional behavior that the copy is inserted above the original. It does not explicitly distinguish this from sibling tools such as create_layer or import_layer, so it stops short of a 5.

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

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 duplicate_layer versus create_layer, import_layer, or other layer-creation tools. The description only states what the tool does, leaving the agent to infer the appropriate context and any exclusions.

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

edit_textA

Edit an existing text layer's content or formatting.

Parameters:

  • layer_name: Name of the text layer to edit

  • text: New text content (omit to leave unchanged)

  • font: New font family (omit to leave unchanged)

  • size: New font size in pixels (omit to leave unchanged)

  • color: New text color (omit to leave unchanged)

  • image_index: Target image index (default 0)

Returns status dict.

NameRequiredDescriptionDefault
fontNo
sizeNo
textNo
colorNo
layer_nameYes
image_indexNo

TDQS

A3.5/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 usefully discloses partial-update semantics and that a status dict is returned, but says nothing about what happens with a missing layer_name, whether the edit is undoable, needed permissions, or what the status dict contains 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?

It is front-loaded with a single purpose sentence followed by a scannable parameter list, with no filler. The repeated '(omit to leave unchanged)' on four entries is slightly redundant, though it does reinforce the optionality.

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 mutation tool with no annotations and no output schema, the description covers the inputs adequately but omits error conditions and meaningful return detail, saying only 'Returns status dict'. An agent can call it, but cannot anticipate failure modes.

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 is the only documentation for these six parameters, and it does supply each one plus the image_index default of 0 and the units for size (pixels). It falls short on value formats, e.g. what form color takes (hex, name) or where valid font families come from (list_fonts is never referenced).

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 ('Edit an existing text layer's content or formatting'), which separates it from sibling mutation tools like set_layer_properties and from add_text, since it operates on an existing text layer. It never names those alternatives explicitly, so differentiation is implied by the resource 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?

Use is only implied: the 'omit to leave unchanged' notes convey that this is a partial-update tool, but there is no guidance on when to choose it over add_text or set_layer_properties, and no stated precondition that the text layer must already exist.

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

export_icon_sizesA

Export an image as a complete icon set for Android or iOS.

Android sizes: 48 (mdpi), 72 (hdpi), 96 (xhdpi), 144 (xxhdpi), 192 (xxxhdpi), 512 (Play Store) iOS sizes: 20x1/2/3, 29x1/2/3, 40x2/3, 60x2/3, 76x1/2, 83.5x2, 1024x1

Parameters:

  • output_dir: Directory to write icon files into

  • platform: "android" (default) or "ios"

  • source_image_index: Image to use as source (default 0)

  • format: Output format — "png" (default)

Returns: {exported: [{size, file_path}], count, platform}

NameRequiredDescriptionDefault
formatNopng
platformNoandroid
output_dirYes
source_image_indexNo

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 burden well: it enumerates the exact output artifacts per platform, states defaults for platform/format/source index, and discloses the return shape {exported, count, platform}. It omits whether existing files in output_dir are overwritten, whether the directory is created, and what happens on failure, which keeps it out of 5 territory.

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 one-line summary followed by a compact size table and a parameter/return block; the size enumeration is long but earns its place by telling the agent exactly what files result. No filler 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 filesystem-writing tool with no annotations and no output schema, the definition covers purpose, all parameters, defaults, and the response shape. The remaining gaps are operational (overwrite policy, directory creation, error cases), which are real but secondary.

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 supply meaning, and it documents all four parameters including the enum-like values for platform (android/ios) and the indexing semantics of source_image_index. The format parameter only says "png" (default), leaving open whether other values are accepted.

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 (export an image as a complete icon set) and narrows scope to Android/iOS with exact pixel size lists, which separates it from generic siblings like export_image, batch_export, and export_web_optimized.

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 makes the use case clear (producing platform icon sets) and gives defaults, but never says when not to use it or names an alternative such as export_image or batch_export for non-icon output. Usage is implied rather than routed.

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 current image to a raster file (PNG, JPEG, WEBP, TIFF).

Parameters:

  • file_path: Absolute path for the output file

  • format: Output format — "png" (default), "jpeg", "webp", "tiff"

  • quality: JPEG/WEBP quality 1-100 (default 90; ignored for PNG/TIFF)

  • flatten: Flatten all layers before export (default True)

  • image_index: Index of the image to export (default 0)

Returns:

  • status, file_path, format, file_size_bytes

NameRequiredDescriptionDefault
formatNopng
flattenNo
qualityNo
file_pathYes
image_indexNo

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 usefully discloses defaults and conditional behavior (quality ignored for PNG/TIFF, flatten defaults to True). It does not say whether flattening mutates the in-document image, whether an existing file at file_path is overwritten, or what happens if no image is active, which are material for a write-to-disk 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?

Front-loaded purpose sentence followed by scannable parameter and return lists with no filler. The parameter block duplicates schema field names, but that is justified given zero schema description coverage.

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?

There is no output schema, yet the description lists the return fields (status, file_path, format, file_size_bytes), and all parameters are documented. Missing only edge-case behavior around overwriting files and document mutation, which keeps it from a 5.

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%, and the description fully compensates: every one of the five parameters gets meaning, accepted values, defaults, and the format-dependent rule for quality. This is well beyond what the bare schema conveys.

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 and resource ('Export the current image to a raster file') and enumerates supported formats, so the agent knows exactly what the tool produces. It does not differentiate from near-siblings like batch_export or export_web_optimized, which limits it to a 4.

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 'current image' (as opposed to a batch or multi-sibling flow), but there is no explicit statement of when to choose this over batch_export, export_web_optimized, save_xcf, or when the image must already exist. The agent must infer the routing decision.

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

export_social_media_kitA

Export an image resized for multiple social media platforms.

Platform sizes (all in pixels):

  • instagram_square: 1080x1080

  • instagram_story: 1080x1920

  • twitter_header: 1500x500

  • facebook_cover: 820x312

  • youtube_thumbnail: 1280x720

Parameters:

  • output_dir: Directory to write output files

  • platforms: List of platform names to export (omit for all five)

  • image_index: Source image index (default 0)

Returns: {exported: [{platform, file_path, width, height}], count}

NameRequiredDescriptionDefault
platformsNo
output_dirYes
image_indexNo

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 burden; it does disclose that files are written into output_dir and specifies the exact return shape ({exported: [{platform, file_path, width, height}], count}). It omits important behavior for a write tool: overwrite behavior for existing files, whether the full kit is atomic, and what happens with invalid platform names (the schema's array items are untyped, so bad input is plausible).

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 purpose, then structured into platform sizes, parameters, and return value, all of which earn their place. The only mild redundancy is repeating platform names in both the size table and the parameters section, though the repetition serves different purposes.

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?

Because there is no output schema, the explicit Returns line is genuinely valuable, and the platform size table resolves the untyped array parameter. What keeps it at a 3 is the unresolved ambiguity around image_index and the absence of any statement about the source document state or file-overwrite semantics for a multi-file write operation.

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: it documents all three parameters and, critically, supplies the valid platform identifiers that the schema leaves as an untyped array. The one weak spot is image_index, described only as 'Source image index (default 0)' without saying which collection or ordering the index refers to.

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 ('Export an image resized for multiple social media platforms') and enumerates the exact platform variants produced, which distinguishes it from the many other export tools in the sibling list. It stops short of naming which sibling to prefer for non-social exports, so the differentiation is implicit 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?

Usage is inferable from the name and platform list, and the description does give one routing hint by parameter ('omit for all five'). However, it never says when to use this versus export_image, batch_export, export_web_optimized, or export_icon_sizes, and never states prerequisites such as needing an open image.

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

export_sprite_sheetA

Combine multiple frames into a sprite sheet PNG.

Parameters:

  • output_path: Absolute path for the output PNG file

  • columns: Number of columns in the grid (defaults to square root of frame count)

  • padding: Pixel gap between frames (default 0)

  • source: "layers" (each layer is a frame; default) or "images" (each open image)

  • image_index: Source image when source="layers" (default 0)

Returns: {file_path, columns, rows, frame_width, frame_height, count}

NameRequiredDescriptionDefault
sourceNolayers
columnsNo
paddingNo
image_indexNo
output_pathYes

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 disclosure burden and does well: it makes clear a PNG file is written to an absolute output_path and documents the returned fields (file_path, columns, rows, frame sizes, count). It omits whether an existing file is overwritten or whether any permissions/state requirements exist, which is the main remaining gap.

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 purpose sentence followed by a tight parameter list and a return-shape line; every entry earns its place given the empty schema descriptions. Slightly repetitive for an agent that also reads the schema titles, but justified here.

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 five-parameter export tool with no annotations and no output schema, the description covers purpose, all parameters with defaults, source-mode semantics, and the return object. Only overwrite behavior and any preconditions are unaddressed.

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, and it does: every one of the five parameters is explained, including the default for columns (square root of frame count), padding default, the enumerated values for source, and the meaning of image_index relative to source="layers".

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: 'Combine multiple frames into a sprite sheet PNG', which an agent can distinguish from generic exporters like export_image or batch_export by the sprite-sheet resource. It does not explicitly differentiate itself from near neighbors such as export_icon_sizes or export_social_media_kit, which keeps it 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 description explains the two source modes ('layers' vs 'images') and their defaults, which implies when each mode applies, but it never states when to prefer this tool over export_image, batch_export, or export_icon_sizes. Usage is inferable rather than explicit.

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

export_web_optimizedA

Export an image as both JPEG and PNG, choosing the smaller format.

Parameters:

  • output_dir: Directory to write output files

  • jpeg_quality: JPEG quality 1-100 (default 85)

  • png_compression: PNG compression level 0-9 (default 9)

  • max_width / max_height: Optional scaling before export

  • image_index: Source image index (default 0)

Returns: {jpeg_path, jpeg_size, png_path, png_size, recommendation}

NameRequiredDescriptionDefault
max_widthNo
max_heightNo
output_dirYes
image_indexNo
jpeg_qualityNo
png_compressionNo

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 burden. It does useful work by disclosing the return shape and the default quality/compression values, but it never says whether both files are always written regardless of which is smaller, whether existing files in output_dir are overwritten, or whether scaling affects the source document or only the exported copies. For a write-to-disk tool with zero annotation coverage, those gaps matter.

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 purpose sentence is front-loaded, then a compact parameter block, then the return shape. Nothing is wasted and the bulleted format is easy to scan. The parameter block largely mirrors the schema's property names, but with 0% coverage that restatement is earned rather than 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?

With no output schema, the explicit 'Returns: {jpeg_path, jpeg_size, png_path, png_size, recommendation}' line is valuable and completes the picture for a caller. All six parameters are covered. Remaining gaps are behavioral rather than structural: overwrite policy and whether max_width/max_height mutate the live image.

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 is the only source of parameter meaning, and it documents all six: output_dir, jpeg_quality (1-100, default 85), png_compression (0-9, default 9), max_width/max_height as optional pre-export scaling, and image_index (default 0). The only weak spot is image_index, which does not explain what the index refers to or how to obtain valid 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?

States a specific verb and resource (export an image) plus the distinguishing behavior: produces both JPEG and PNG so the caller can pick the smaller. That differentiates it from export_image, batch_export, and export_icon_sizes without naming them. The phrase 'choosing the smaller format' slightly overstates the tool, since the Returns list shows both files plus a recommendation rather than a single chosen file.

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 'web optimized' framing implies when to reach for this over export_image, but there is no explicit statement of when to use it versus export_image or batch_export, and no prerequisites or exclusions. Usage has to be inferred from the tool's name and the dual-format behavior.

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

fill_ellipseB

Fill an elliptical region with a solid color.

Parameters:

  • x, y: Top-left corner of the bounding box

  • width, height: Bounding box dimensions

  • color: Fill color (CSS name, hex, or rgb() string)

  • layer_name: Target layer; defaults to active layer

  • image_index: Target image index (default 0)

Returns status dict.

NameRequiredDescriptionDefault
xYes
yYes
colorYes
widthYes
heightYes
layer_nameNo
image_indexNo

TDQS

B3.3/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, and it does disclose two useful behaviors: the return is a status dict, and layer_name resolves to the active layer when null. It says nothing about permission requirements, interaction with an active selection, or whether the fill is destructive/undoable, which are real gaps for a pixel-mutating 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 purpose sentence is front-loaded and the parameter list is compact with no filler. The trailing "Returns status dict" is terse but earns its place given there is no output schema.

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

Completeness3/5

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

Parameter coverage is strong and the return type is mentioned, but with no annotations, no output schema, and no usage context, an agent still lacks guidance on preconditions and side effects. Adequate but visibly incomplete for a destructive drawing operation.

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 description compensates by documenting all seven parameters, including that x/y are the top-left of a bounding box, that color accepts CSS names, hex, or rgb() strings, and the fallback semantics for layer_name and image_index. Only the units/type expectations for width and height remain implicit.

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 an elliptical region with a solid color"), which clearly separates it from paint-like siblings such as fill_rectangle, draw_ellipse, and select_ellipse. It does not explicitly name any sibling or state the distinction, 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?

There is no when-to-use guidance, no prerequisites, and no mention of when to prefer fill_selection or fill_layer over this tool. The agent must infer the context entirely from the verb and the fact that coordinates are bounding-box based.

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

fill_layerB

Fill an entire layer with a solid color.

Parameters:

  • color: Fill color as CSS name, hex, or rgb() string

  • layer_name: Layer to fill; defaults to active layer

  • image_index: Target image index (default 0)

Returns status dict.

NameRequiredDescriptionDefault
colorYes
layer_nameNo
image_indexNo

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden. It discloses that the result is a "status dict" but never states whether existing layer pixels are destroyed, whether an active selection clips the fill, whether the operation is undoable, or if it requires an editable layer. For a destructive mutation on a layer, these are material omissions.

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-line purpose statement followed by a compact parameter list — appropriately front-loaded and free of filler. The parameter list is justified because the schema provides no per-field documentation of its own.

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?

There is no output schema, so the tool should say what "status dict" contains, and with no annotations the destructive/undo behavior should be spelled out. The description covers the operation and its parameters adequately but leaves those behavioral questions open for a 3-parameter mutation tool.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate and largely does: it gives accepted color syntaxes (CSS name, hex, rgb()), explains that layer_name defaults to the active layer, and that image_index targets a specific image. This adds genuine meaning the bare schema lacks, though it does not clarify what image_index means when multiple images are open or the semantics of a null layer_name.

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 and resource: "Fill an entire layer with a solid color." The word "entire" implicitly distinguishes it from selection-scoped siblings like fill_selection and shape-scoped ones like fill_rectangle, though neither is named explicitly. An agent can grasp the operation 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?

No explicit when-to-use or when-not-to-use guidance, and no named alternatives among the many fill-related siblings (fill_selection, fill_rectangle, gradient_fill). Usage is only implied by the defaults stated for layer_name ("defaults to active layer") and image_index ("default 0"), which does help an agent call it correctly but does not route it against alternatives.

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

fill_rectangleB

Fill a rectangular region with a solid color.

Parameters:

  • x, y: Top-left corner

  • width, height: Rectangle dimensions

  • color: Fill color (CSS name, hex, or rgb() string)

  • layer_name: Target layer; defaults to active layer

  • image_index: Target image index (default 0)

Returns status dict.

NameRequiredDescriptionDefault
xYes
yYes
colorYes
widthYes
heightYes
layer_nameNo
image_indexNo

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 burden. It reveals only that the call returns a "status dict" and that layer_name and image_index default to the active layer and 0. It omits that this is an in-place canvas mutation, whether prior pixel content is destroyed, whether it respects the current selection, and whether the change 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.

Conciseness4/5

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

A single front-loaded purpose sentence followed by a tight bulleted parameter list, with no filler. The return value is noted in one line. Structure is appropriate for a tool with seven parameters and a 0% schema description coverage.

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 parameter-heavy mutation tool with no annotations and no output schema, all parameters are at least defined, which is the minimum needed to call it correctly. However, interaction with selections, layer targeting semantics, and failure modes are absent, leaving an agent unable to predict the effect on the document.

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 description compensates well by documenting all seven parameters: x/y as the top-left corner, width/height as dimensions, color accepted as CSS name, hex, or rgb() string, plus the defaults for layer_name and image_index. It still does not state the unit or coordinate space for x/y/width/height, nor whether color supports alpha.

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 line states a specific verb and resource: "Fill a rectangular region with a solid color." That separates it from fill_layer, fill_selection, and fill_ellipse by naming both the shape and the fill type. It stops short of explicitly naming those siblings, so the differentiation is implicit rather than spelled out.

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 fill_selection, fill_layer, fill_ellipse, or draw_rectangle, all of which are close siblings in this toolset. The description never states prerequisites either, such as whether an image must be open, whether an active selection alters the fill region, or how this interacts with the active layer.

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

fill_selectionB

Fill the current selection with a color or fill type.

Parameters:

  • color: Fill color as CSS name, hex, or rgb() string (used when fill_type is omitted)

  • fill_type: Fill type override: "foreground", "background", or "transparent"

  • image_index: Target image index (default 0)

  • layer_name: Target layer; defaults to active layer

Returns status dict.

NameRequiredDescriptionDefault
colorNo
fill_typeNo
layer_nameNo
image_indexNo

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 and mostly does not meet it. It does not say what happens when no selection exists, whether the fill is destructive/undoable, whether it respects layer locks or transparency, or what the 'status dict' contains beyond its 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?

One-sentence purpose followed by a compact parameter list, each entry a single line. Front-loaded and free of filler; the only weakness is that the 'Returns status dict.' line adds almost nothing.

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 and no output schema, the description covers the inputs well but leaves out failure modes and side effects an agent needs. It is adequate to attempt a call but not sufficient to predict what happens in edge cases like no active selection or a transparent fill on a non-alpha layer.

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 parameter block is doing real work: it gives accepted color formats (CSS name, hex, rgb()), enumerates the fill_type values 'foreground'/'background'/'transparent' that the bare string schema lacks, and states defaults (image_index 0, layer_name = active layer). Only the interaction between color and fill_type is left slightly fuzzy.

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 a specific verb plus resource ('Fill the current selection') and clarifies the fill can be a color or a fill type. An agent can distinguish it from fill_layer and fill_rectangle by the 'current selection' scope, though the description never explicitly contrasts 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 only implied: 'current selection' tells the agent a selection must exist first, and the color/fill_type wording hints at two modes. There is no explicit when-to-use versus fill_layer, fill_rectangle, or gradient_fill, and no stated precondition about creating a selection first.

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

flatten_imageB

Flatten all layers into a single background layer.

Parameters:

  • image_index: Target image index (default 0)

Returns status dict.

NameRequiredDescriptionDefault
image_indexNo

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 burden. 'All layers into a single background layer' does disclose that every layer is collapsed, but it omits that hidden layers are also discarded, that the result is effectively irreversible apart from undo, and whether alpha/transparency is preserved. A precise but incomplete behavioral picture.

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 sentence is front-loaded and wasteful phrasing is absent. The 'Parameters' and 'Returns' blocks are small, though 'Returns status dict' adds little 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 one-parameter, destructive tool with no annotations and no output schema, the definition is minimal but not misleading. It should say more about irreversibility and the return value than 'status dict'.

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 lists image_index and its default of 0, which matches the schema but adds no interpretation — such as whether the index refers to the position in the image list from list_images or the active image.

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 — 'Flatten all layers into a single background layer' — so the agent knows exactly what operation is performed. It does not differentiate from the sibling merger, merge_visible_layers, which is the most likely competing choice.

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 flatten versus merge_visible_layers, no precondition that an image must exist or be active, and no mention that the operation should be paired with save/export. The only usage hint is the parameter default.

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

flip_imageB

Flip the entire image horizontally or vertically.

Parameters:

  • direction: "horizontal" (default) or "vertical"

  • image_index: Target image index (default 0)

Returns status dict.

NameRequiredDescriptionDefault
directionNohorizontal
image_indexNo

TDQS

B3.2/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 the mutation scope ("entire image"), the default direction, and that a status dict is returned, which is more than nothing. However it is silent on permissions/prerequisites, whether the operation is undoable, and whether it applies per-image or per-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?

Front-loaded one-line purpose followed by a compact parameter list and a note on the return value; nothing is padded. The parameter block largely restates schema defaults, which is mild redundancy but useful given the 0% schema coverage.

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 two-optional-parameter tool with no output schema, the description covers purpose, parameters, defaults, and return shape. What is missing is operational context a caller needs: required preconditions (open/active image), undo semantics, and effect on selections or layers.

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 list both parameters with their defaults. Crucially it adds the allowed values "horizontal" (default) or "vertical" for direction, which the schema lacks entirely (no enum). It says nothing meaningful about image_index beyond restating the default, so it only partially fills the 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?

States a specific verb and resource ("Flip the entire image") plus the axis of operation ("horizontally or vertically"), which is enough to distinguish it from geometry siblings like rotate_image or scale_image. It stops short of explicitly naming an alternative, 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 guidance on when to reach for flip_image versus rotate_image, transform_layer, or the selection-based operations, and no stated preconditions (e.g. an active/open image). The phrase "entire image" hints that it is whole-canvas rather than selection-scoped, but that is inference, not instruction.

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

gegl_apply_filterC

Append a named, editable, non-destructive GEGL filter to a layer.

NameRequiredDescriptionDefault
nameNo
opacityNo
operationYes
layer_nameNo
propertiesYes
image_indexNo

TDQS

C2.9/5.0
Behavior3/5

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

With no annotations provided, the description still discloses important behavior beyond the schema: the filter is appended rather than replacing existing filters, and it is editable and non-destructive. However, it omits prerequisites, layer-targeting behavior, failure cases, 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?

The description is a single front-loaded sentence with no filler. Every phrase contributes to the core meaning: append, named, editable, non-destructive, GEGL filter, and layer target.

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

Completeness2/5

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

The tool has six parameters, a nested properties object, no annotations, and no output schema, so the description carries a heavy documentation burden. It states the high-level effect but leaves out the operational and parameter details needed to invoke a GEGL filter confidently.

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 six parameters, including the required operation and nested properties object. The description only obliquely hints at name and layer_name through "named" and "to a layer," and does not explain valid operation values, properties structure, opacity, or image_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 uses a specific verb and resource: "Append a named, editable, non-destructive GEGL filter to a layer." It clearly identifies the action and target, though it does not explicitly distinguish this tool from nearby siblings such as gegl_filter_action or the specific apply_* filter tools.

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

Usage Guidelines2/5

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

The description implies it is used to add a filter to a layer, but gives no explicit when-to-use guidance, no exclusions, and no comparison to alternatives like gegl_filter_action or apply_gaussian_blur.

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

gegl_describe_operationC

Inspect a live GEGL filter's property schema on a layer before applying it.

NameRequiredDescriptionDefault
operationYes
layer_nameNo
image_indexNo

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. "Inspect" and "live" imply a read-only call requiring a running instance with an actual loaded image, but the description never states that this is non-destructive, what happens if layer_name is omitted or the layer is missing, or whether the schema reflects instance-specific values. For a tool with zero annotation coverage these are material gaps.

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 wording; the purpose and the motivating workflow both land immediately. It is arguably too terse given the parameter burden, but it is structurally clean.

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

Completeness2/5

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

The tool takes three parameters with no documented schema, has no annotations and no output schema, yet the description is one short sentence. An agent would not know what the returned schema looks like or how image_index and layer_name interact, which is insufficient for a live-instance inspection tool.

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

Parameters2/5

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

Schema description coverage is 0% across three parameters, so the description must compensate and largely does not. It hints that a layer is involved, loosely mapping to layer_name, but says nothing about the meaning of operation (the filter identifier) or image_index (how to choose among open images, and what the default 0 implies).

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 ("Inspect") and resource ("a live GEGL filter's property schema") scoped to a layer, which distinguishes it from sibling mutators like gegl_apply_filter and from enumerators like gegl_list_operations. It does not explicitly name those siblings, but the read-of-a-schema framing is clear enough to separate 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?

The trailing clause "before applying it" implies a workflow position: call this prior to scheduling a GEGL filter. That is useful implied usage, but there is no explicit statement of when not to use it, nor a named alternative such as gegl_list_filters for discovery versus this per-operation schema lookup.

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

gegl_filter_actionB

Change a filter's visibility/opacity or remove it by its GIMP filter ID.

NameRequiredDescriptionDefault
actionYes
opacityNo
visibleNo
filter_idYes

TDQS

B3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden for a mutation tool. It does not say whether removal is irreversible, whether opacity/visible changes are reversible via undo, what happens when action is an unrecognized value, or 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.

Conciseness4/5

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

A single compact sentence with the resource and identifier scheme front-loaded and no filler. It is efficient, though the brevity is a contributing factor to the missing action semantics.

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 zero annotation coverage, no output schema, and no documented parameter descriptions, one sentence is thin. The two most consequential unknowns — valid action values and removal irreversibility — are absent.

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 loosely maps opacity and visibility to the two optional parameters and clarifies filter_id as GIMP's identifier, but the required, enum-less "action" string — the parameter that actually selects the operation — has no documented vocabulary anywhere, which is a serious 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?

"Change a filter's visibility/opacity or remove it" gives a specific verb set and resource, and "by its GIMP filter ID" fixes the addressing scheme. It stops short of naming how it differs from gegl_apply_filter or gegl_list_filters, so an agent must infer the modify-vs-create distinction.

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 possessive "a filter's" implies this operates on an already-applied filter, contrasting with gegl_apply_filter, but that routing is never stated. There is no explicit when-to-use, no prerequisite (e.g., needing a filter ID from gegl_list_filters), and no when-not-to-use guidance.

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

gegl_list_filtersC

List the editable non-destructive filters attached to a layer.

NameRequiredDescriptionDefault
layer_nameNo
image_indexNo

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 the full behavioral burden, yet it says nothing about whether this is a safe read-only call, what happens if layer_name is omitted or invalid, or whether an empty result is possible. Only the verb 'list' weakly implies a non-mutating operation.

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

Conciseness4/5

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

A single front-loaded sentence with no filler, but it is so terse that it borders on under-specification rather than efficiency. Structure is fine; there is nothing extraneous.

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

Completeness2/5

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

For a tool with two undocumented parameters, no annotations, and no output schema, the description should explain what a returned filter entry looks like and how defaults resolve. It does neither, leaving the agent reliant on guessing about the default layer and image selection.

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 only loosely maps 'a layer' to layer_name without explaining the null default (presumably the active layer) or the meaning of image_index. Neither parameter's format, default behavior, or selection semantics are clarified 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 gives a specific verb+resource (list filters attached to a layer) and adds a meaningful qualifier ('editable non-destructive'), so the agent knows exactly what is being enumerated. It does not differentiate itself from sibling GEGL tools such as gegl_list_operations or gegl_describe_operation, so the 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 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 gegl_apply_filter or gegl_list_operations. The agent must guess whether this tool is for discovering existing filters on a layer versus the catalog of available GEGL operations.

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

gegl_list_operationsC

Discover installed GIMP 3.2 GEGL filters with paging; patterns are case-insensitive regex.

NameRequiredDescriptionDefault
limitNo
offsetNo
patternNo.*

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations supplied, the description carries the full behavioral burden. It discloses that results are paged, which is useful, but says nothing about ordering, what an invalid regex does, whether defaults apply, or what the call returns; a read-only listing is only implied by 'Discover'.

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 and the two most decision-relevant qualifiers (paging, regex semantics) front-loaded. Nothing is redundant, though the semicolon clause is dense enough that it reads as two ideas compressed into one line.

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 this is close to adequate: paging and pattern semantics are covered, and no output schema exists to describe. However, with zero annotation coverage and zero schema descriptions, the absence of return-shape and pagination-default details leaves a real gap.

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 three parameters, so the description must compensate and mostly does not. It clarifies that 'pattern' is a case-insensitive regex, but 'limit' and 'offset' are only hinted at via the word 'paging', leaving their meaning and defaults undocumented outside the schema's bare 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: 'Discover installed GIMP 3.2 GEGL filters'. The version pin and paging mention make the scope concrete, but it never distinguishes itself from the near-identical sibling 'gegl_list_filters', which an agent could easily 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 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 alternatives such as gegl_list_filters, gegl_describe_operation, or gegl_apply_filter. The only implied usage cue is the regex-pattern filtering, which the agent must infer.

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

get_context_stateA

Get the current GIMP context state (colors, brush, settings).

IMPORTANT: Context state can be changed by the user in GIMP UI at any time. Check context state before operations that depend on specific settings.

Returns information about:

  • Foreground and background colors (RGB/RGBA values)

  • Current brush and its properties

  • Opacity setting (0-100%)

  • Paint/blend mode

  • Feather state and radius

  • Antialiasing state

Use cases:

  • Verify colors before drawing operations

  • Check if feathering is enabled (avoid unwanted blurry edges)

  • Ensure correct opacity and blend mode

  • Detect if user changed settings in GIMP UI

Returns:

  • Dictionary containing current context state

  • Raises exception if unable to get context state

NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/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 reasonably well: it warns that state can be mutated externally by the user at any time, which is genuine behavioral context an agent cannot get from structured data. It also discloses the failure mode (raises an exception if the context cannot be read). It does not explicitly state it is a non-mutating read, though 'Get' implies it.

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 critical warning about user-driven state changes is well placed near the top, and the bulleted field list is scannable. However, content is duplicated: the 'Returns information about' bullets and the separate 'Returns:' section restate the same payload description, and the use-case bullets largely repeat the field list. Trimming one of those blocks would make it materially tighter.

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?

There is no output schema, so the description must describe the return value, and it does — a dictionary of the listed fields, plus the exception behavior. Combined with the schema being empty, an agent has enough to call this correctly; only the sibling differentiation and explicit read-only framing are absent.

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 input schema is empty, so there are no parameters whose semantics need explanation. The baseline of 4 applies; nothing is added or missing on this dimension.

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 ("Get the current GIMP context state") and enumerates exactly what state is covered (colors, brush, opacity, blend mode, feather, antialiasing). It is clear what the tool does, but it never distinguishes itself from related siblings such as get_state_snapshot, get_gimp_info, or get_pixel_color, leaving the agent to 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 Guidelines4/5

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

Provides an explicit 'Use cases' list and a strong conditional rule: check context state before operations that depend on specific settings. What is missing is the negative side — it never says when not to call it, or which alternative to use instead when the agent wants a broader snapshot or a single pixel value.

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

get_gimp_infoA

Get comprehensive information about the GIMP installation and environment.

Returns detailed information about GIMP that AI assistants need to understand the current environment, including:

  • GIMP version and build information

  • Installation paths and directories

  • Available plugins and procedures

  • System configuration

  • Runtime environment details

This information helps AI assistants provide better support and troubleshooting by understanding the specific GIMP setup they're working with.

Returns:

  • Dictionary containing comprehensive GIMP environment information

  • Raises exception if GIMP connection fails

NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/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 important behavior: it 'raises exception if GIMP connection fails,' which tells the agent this call can fail on a dead connection. However, it says nothing about cost/latency (the plugin and procedure enumeration could be large), side effects, or whether results are cached, so the behavioral picture is only partially covered.

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 bullet list is front-loaded and informative, but the separate 'Returns:' block largely restates the bullets ('Dictionary containing comprehensive GIMP environment information'), and the sentence about helping AI assistants troubleshoot is padding. Trimming the duplicate Returns block would make it tighter without losing meaning.

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 zero-parameter diagnostic tool with no annotations and no output schema, the description does the necessary work: it enumerates the categories of data returned and names the failure mode. The main remaining gap is not saying how large/expensive the returned payload is, which matters for a tool that lists plugins and procedures.

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; baseline 4 applies. The description correctly frames this as a no-argument environment query.

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 ('Get comprehensive information about the GIMP installation and environment') and enumerates the concrete content (version/build, install paths, plugins, system config, runtime). It does not explicitly differentiate itself from near-neighbors like check_server, get_state_snapshot, or get_context_state, so an agent must infer that this one is the static environment/config view rather than a connectivity or state probe.

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 description says the information 'helps AI assistants provide better support and troubleshooting,' which is a rationale rather than a directive. There is no explicit 'call this before X' or 'use check_server instead if you only want to verify connectivity,' leaving the choice among several related diagnostic siblings to inference.

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

get_histogramA

Get histogram statistics for a channel of the active layer.

Parameters:

  • channel: "value" (all; default), "red", "green", "blue", "alpha"

  • image_index: Target image index (default 0)

Returns: {mean, median, std_dev, min, max, pixels, count}

NameRequiredDescriptionDefault
channelNovalue
image_indexNo

TDQS

A4/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 burden. It does disclose the return fields and defaults, but says nothing about whether statistics cover the whole layer or the selection, what happens with no active image/layer, or cost on large images.

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 front-loaded purpose sentence followed by compact parameter and return blocks; every line adds information and nothing is padded.

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 only two optional parameters and no output schema, the description supplies the return shape and default values, which is most of what an agent needs. It falls short only on edge-case behavior (no active layer, selection scope, error responses).

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 description compensates well: it enumerates the valid channel values ("value" default, red, green, blue, alpha) and explains image_index as a target image index defaulting to 0, adding real meaning beyond the bare title-typed schema properties.

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

Purpose5/5

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

States a specific verb and resource ("Get histogram statistics") plus scope ("for a channel of the active layer"), which cleanly separates it from siblings like get_image_metadata, get_pixel_color, and get_image_bitmap.

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 analyzing tonal/luminance distribution, but the description never says when to prefer it over get_pixel_color or get_image_metadata, nor any prerequisites such as requiring an open image with an active layer.

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

get_image_bitmapA

Get the current open image in GIMP as an Image object with optional scaling and region selection.

No size restrictions — pass any max_width/max_height you need. For large images, omit max_width/max_height to get the full resolution.

Supports two main use cases:

  1. Full image with optional scaling (pass max_width/max_height)

  2. Region extraction with optional scaling (pass region dict)

Parameters:

  • max_width, max_height: Target dimensions for scaling (aspect-ratio preserved). Omit for full resolution.

  • region: Dictionary with keys:

    • origin_x, origin_y: Top-left corner of region to extract

    • width, height: Dimensions of region to extract

    • max_width, max_height: Optional scaling for the extracted region

Examples:

  • Full image at full res: get_image_bitmap()

  • Full image scaled: get_image_bitmap(max_width=2048, max_height=2048)

  • Region: get_image_bitmap(region={"origin_x": 0, "origin_y": 0, "width": 512, "height": 512})

Returns:

  • Image object containing PNG data in MCP-compliant format

  • Includes width, height, and base64-encoded image data

The returned Image object automatically handles base64 encoding and MIME types according to the Model Context Protocol specification.

Raises:

  • RuntimeError if no image is open, region is invalid, or export fails

NameRequiredDescriptionDefault
regionNo
max_widthNo
max_heightNo

TDQS

A4.5/5.0
Behavior4/5

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

No annotations exist, so the description carries the full burden, and it does well: it discloses the return format (PNG, base64, MIME type per MCP spec), states there are no size restrictions, and enumerates failure conditions ('RuntimeError if no image is open, region is invalid, or export fails'). It stops short of stating performance/resource implications of full-resolution export on very large images, which an agent planning calls would benefit from.

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?

Well front-loaded with the core action first, then use cases, parameters, examples, returns, and raises. The examples and returns sections earn their place given the absent output schema, though the two closing sentences about automatic base64/MIME handling restate the same point twice.

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 3-parameter, zero-annotation, no-output-schema tool with 0% schema description coverage, the description supplies everything needed: object shape, nested region keys, scaling semantics, concrete call examples, return payload contents, and error conditions.

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%, and the description fully compensates: it defines max_width/max_height as target dimensions with aspect ratio preserved, and unpacks the untyped region dict into origin_x, origin_y, width, height plus optional nested max_width/max_height. This is meaning the schema literally cannot convey, since region is only an open object type.

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+resource ('Get the current open image in GIMP as an Image object') plus the two capabilities (scaling, region selection). It is clearly distinguishable from siblings like get_image_metadata (metadata only) and export_image (writes to disk) 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?

Gives explicit usage scenarios ('Full image with optional scaling' vs 'Region extraction') and a sizing hint ('For large images, omit max_width/max_height'). It does not explicitly say when to prefer this over siblings such as get_image_metadata, export_image, or get_pixel_color, so routing guidance is implied rather than stated.

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

get_image_metadataA

Get metadata about the current open image in GIMP without the bitmap data.

Returns detailed information about the currently active image including:

  • Image dimensions (width, height)

  • Color mode and base type

  • Number of layers and channels

  • File information if available

  • Layer structure and properties

This is much faster than get_image_bitmap() since it doesn't export the actual image data. Perfect for when you only need to know image properties for decision making.

Returns:

  • Dictionary containing comprehensive image metadata

  • Raises exception if no images are open

NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/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 well: it discloses that no bitmap data is exported, that the result is a dictionary, and that an exception is raised if no images are open — an error condition an agent must anticipate. It does not explicitly confirm the operation is non-mutating, which is the main residual gap.

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 statement and the performance distinction, then a scannable bullet list of returned fields. The trailing 'Returns:' block partially restates the bullets ('comprehensive image metadata'), which is mild redundancy but also the only return documentation since no output schema exists.

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 parameterless read tool with no output schema, the description supplies the field inventory, the error case, and the cost comparison — enough to call it correctly. What is missing is a statement of state effect (read-only vs. any side effects), which matters since no annotations declare 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 (empty schema, 100% coverage by definition), so there is nothing for the description to disambiguate. Baseline 4 applies; no misleading parameter language is present.

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 ('Get metadata about the current open image in GIMP') and immediately scopes it ('without the bitmap data'), which distinguishes it from the sibling get_image_bitmap. An agent can tell the two apart 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?

Explicitly routes the agent away from the heavier alternative: 'much faster than get_image_bitmap() since it doesn't export the actual image data' and 'Perfect for when you only need to know image properties for decision making.' Clear selection context, though it never states when this tool is the wrong choice (e.g., when pixel data is actually needed).

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

get_pixel_colorB

Get the color of a single pixel.

Parameters:

  • x, y: Pixel coordinates

  • image_index: Target image index (default 0)

  • layer_name: Layer to sample from; defaults to active layer

Returns: {color_hex, color_rgb: [r, g, b], alpha}

NameRequiredDescriptionDefault
xYes
yYes
layer_nameNo
image_indexNo

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 useful defaults (image_index 0, layer_name falls back to the active layer) and the exact return shape {color_hex, color_rgb, alpha}. However it says nothing about out-of-bounds coordinates, missing layers, color-mode differences, or whether sampling is affected by selection/visibility.

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 purpose sentence followed by a compact Parameters block and a Returns line; every element earns its place. Minor loss for not labeling the coordinate system in the x,y bullet.

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 four-parameter read tool the description is largely sufficient, and it compensates for the absent output schema by spelling out the return object. It still omits error/failure behavior for invalid coordinates or layers, which matters because there are no annotations 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% (properties carry only bare titles like 'X' and 'Layer Name'), yet the description explains all four parameters, including the non-obvious fallback semantics of layer_name and the default of image_index. Only the coordinate origin/space is left unstated.

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 and resource: 'Get the color of a single pixel.' That is unambiguous and clearly distinct from the other sampling/inspection siblings such as get_histogram or get_image_metadata. It stops short of naming an alternative or scoping when a single pixel vs a region is appropriate, so it is clear but not sibling-differentiated.

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 rather than get_histogram, select_by_color, or get_image_metadata, and no stated preconditions (e.g., an image must be open, the layer must exist). The only implied usage comes from the parameter list itself.

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

get_selection_boundsB

Get the bounding rectangle of the current selection.

Parameters:

  • image_index: Target image index (default 0)

Returns: {has_selection, x, y, width, height}

NameRequiredDescriptionDefault
image_indexNo

TDQS

B3.2/5.0
Behavior3/5

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

No annotations exist, so the description carries the full burden. It does disclose the return shape ({has_selection, x, y, width, height}), which tells the agent how to detect an empty selection, but it omits units (assumed pixels), coordinate origin, and what x/y/width/height contain when has_selection is false.

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 short, front-loaded with the purpose, and cleanly split into Parameters and Returns blocks with no filler. The parameter line largely duplicates the schema's default value, but the overall size is appropriate for a one-parameter read tool.

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

Completeness3/5

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

For a simple read-only geometry query with no output schema, returning the field list inline is the right move. However, the absence of any statement about no-selection behavior, pixel units, or multi-image indexing leaves gaps an agent would likely hit in practice.

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 for the single parameter. It restates image_index with its default of 0 but never explains what an image index refers to (an index into list_images) or how it relates to set_active_image, leaving the parameter only partially meaningful.

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 states a specific verb and resource: reading the bounding rectangle of the current selection. An agent can tell it apart from mutating selection tools like select_rectangle or modify_selection, though the description never names a sibling 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 prerequisites, and no mention of alternatives such as get_image_metadata or get_context_state that might also expose geometry state. The agent must infer that this is a pre-flight read before crop_to_selection or crop_to_rect.

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

get_state_snapshotA

Return a live visual snapshot of the current image state — no file save needed.

AI agents call this to get immediate visual feedback after any edit operation, letting them verify results and decide next steps without saving to disk.

Parameters:

  • image_index: Which open image to snapshot (default: 0 = most recent)

  • max_size: Maximum width/height of the returned preview in pixels (default: 512)

  • region: Optional dict {x, y, width, height} to zoom into a specific area e.g. {"x": 200, "y": 300, "width": 100, "height": 80} for mouth area

  • label: Optional annotation label (logged but not drawn — for agent bookkeeping)

Returns:

  • PNG image of the current GIMP canvas state (with alpha if present)

Typical agent workflow: 1. open_image / new_canvas 2. 3. get_state_snapshot() ← see result, decide next step 4. 5. get_state_snapshot(region={"x":200,"y":300,"width":100,"height":80}) 6. export_image when satisfied

NameRequiredDescriptionDefault
labelNo
regionNo
max_sizeNo
image_indexNo

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 reasonably well: it discloses that nothing is written to disk, that the return is a PNG of the live canvas including alpha, and a non-obvious behavioral detail that 'label' is logged but not drawn. It does not state that the call is side-effect-free/read-only, nor any cost or performance characteristics of returning a 512px raster.

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?

It is front-loaded with the one-line purpose, then parameters, returns and workflow, so an agent can stop reading early. There is mild redundancy between 'no file save needed' and 'without saving to disk', and the Returns/Parameters blocks partly restate schema defaults.

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 zero-required-parameter read tool with no output schema, the description supplies purpose, full parameter semantics, the return format, and a realistic call sequence — enough to invoke it correctly. The remaining gap is sibling positioning against get_image_bitmap and a clear statement that the operation is non-mutating.

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, and it does: every one of the four parameters is explained beyond its schema type, including that image_index 0 means 'most recent', that max_size bounds both width and height in pixels, and a concrete region example. The label semantics ('logged but not drawn') correct a plausible misreading an agent would otherwise make from the bare schema.

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 states a specific verb and resource: 'Return a live visual snapshot of the current image state', and adds a scoping fact ('no file save needed') that separates it from export_image. It does not explicitly distinguish itself from the sibling get_image_bitmap, which appears to serve a similar visual-retrieval purpose, so differentiation is incomplete.

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 'AI agents call this to get immediate visual feedback after any edit operation' line plus the 6-step typical workflow give a concrete when-to-use context, including the zoomed-region inspection case. It stops short of any when-not guidance or named alternatives (e.g. when to prefer get_image_bitmap or export_image instead).

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

gradient_fillA

Fill a layer or selection with a gradient.

Parameters:

  • color1: Start color (default "black")

  • color2: End color (default "white")

  • x1, y1: Gradient start point (default top-left 0,0)

  • x2, y2: Gradient end point (defaults to bottom-right of image)

  • gradient_type: "linear" (default) or "radial"

  • layer_name: Target layer; defaults to active layer

  • image_index: Target image index (default 0)

Returns status dict.

NameRequiredDescriptionDefault
x1No
x2No
y1No
y2No
color1Noblack
color2Nowhite
layer_nameNo
image_indexNo
gradient_typeNolinear

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 does disclose that it mutates a layer/selection, that x2/y2 null resolves to the bottom-right of the image, that layer_name defaults to the active layer, and that it returns a status dict. It doesn't say whether existing pixels are replaced, whether the operation is undoable, or how blend/alpha 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 summary sentence followed by a scannable bullet list of parameters; front-loaded and easy to parse. Some redundancy with schema defaults, but that redundancy is what supplies the missing semantics here.

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 9-parameter, zero-annotation, no-output-schema tool, the description covers purpose, every parameter, defaults, and return type. The remaining gap is failure/permission behavior and the destructive nature of the fill.

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 carries the full burden and does it well: all nine parameters get a one-line meaning plus defaults, and it explains the non-obvious null-to-bottom-right behavior of x2/y2 that the schema leaves 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?

The first line names a specific verb and resource ('Fill a layer or selection with a gradient'), which is enough for an agent to tell it apart from adjacent drawing tools. It stops short of explicitly differentiating from siblings like fill_layer, fill_selection, or apply_vignette.

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?

Mentioning 'layer or selection' implies targeting behavior, but there is no explicit guidance on when to choose this over fill_layer or fill_selection, nor any stated prerequisites such as an open image or active selection.

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

import_layerA

Import an existing local asset as a layer into the owned, already open image.

Preserves the file's pixels/alpha and native dimensions. x/y are exact canvas pixel offsets; position is the top-to-bottom insertion index (0 means top). Does not open another image. Returns actual layer ID, name, bounds and image ID.

NameRequiredDescriptionDefault
xNo
yNo
nameNo
positionNo
file_pathYes
image_indexNo

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 usefully discloses that pixels/alpha and native dimensions are preserved, that no other image is opened, and what the call returns. It omits failure behavior (what happens if no image is open or the path is invalid), whether the import is undoable, and any path/permission constraints on file_path.

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 with the core action and the key negative constraint front-loaded, and no filler. The list of returned fields is slightly redundant given the tool's simplicity but still earns its place as a return hint.

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 6-parameter mutation tool with no annotations and no output schema, the description covers the important conceptual behavior and the return shape but leaves error modes, the semantics of image_index and name, and edit safety unaddressed. Adequate as a minimum, incomplete 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 coverage is 0%, so the description must compensate, and it does for half the parameters: x/y are clarified as exact canvas pixel offsets and position as a top-to-bottom insertion index with 0 meaning top. file_path, name (including what null defaults to), and especially image_index are left undefined, and image_index is genuinely confusing against the "already open image" framing.

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 ("Import an existing local asset as a layer") plus the target scope ("owned, already open image"), and explicitly distinguishes itself from open_image by saying it does not open another image. An agent can tell this apart from create_layer and open_image 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?

Gives a clear precondition (an image must already be open and owned) and rules out the adjacent alternative of opening a file as a new document. It stops short of naming create_layer/duplicate_layer as the alternatives for non-file sources, so the routing 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.

invert_colorsB

Invert all colors in a layer (create a negative).

Parameters:

  • image_index: Target image index (default 0)

  • layer_name: Layer to invert; defaults to active layer

Returns status dict.

NameRequiredDescriptionDefault
layer_nameNo
image_indexNo

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 burden. It says the tool transforms layer colors but never states whether the change is in-place and destructive, whether it is undoable, or whether it applies to the whole layer versus a selection; only 'Returns status dict' hints at output.

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-line purpose is front-loaded, followed by a compact parameter list, with no filler sentences. Minor redundancy in repeating defaults the schema already encodes, but overall tight and scannable.

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

Completeness3/5

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

For a simple two-parameter, no-annotation tool the description covers purpose, both parameters, and the return shape. It falls short on mutation semantics — in-place versus non-destructive, undo behavior, and layer-versus-selection scope — which matter for a color-modifying operation.

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: it documents both parameters and, crucially, explains that a null layer_name resolves to the active layer — meaning the schema does not convey on its own. The image_index default of 0 is restated but not given further meaning.

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

Purpose4/5

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

The description states a specific verb and resource ('Invert all colors in a layer') and clarifies the effect with '(create a negative)'. It is clearly distinct from siblings like desaturate or adjust_curves, though it does not explicitly differentiate itself from invert_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?

There is no when-to-use guidance, no mention of when to prefer this over invert_selection or the adjustment tools, and no prerequisites stated. The only contextual hint is the default-to-active-layer note, which is parameter behavior rather than usage routing.

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

invert_selectionC

Invert the current selection (select what is not selected).

Parameters:

  • image_index: Target image index (default 0)

Returns status dict.

NameRequiredDescriptionDefault
image_indexNo

TDQS

C2.8/5.0
Behavior2/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 of behavioral disclosure and does little with it. It says nothing about what happens when nothing is selected, whether the operation is per-image and affects the active image only, or what the status dict contains beyond the bare "Returns status dict" remark. Mutation of editor selection state with zero disclosure of failure modes or side effects is a real gap.

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 short and front-loaded: the action sentence comes first, then a small parameter block, then the return note. Nothing is padded, though the parameter section is essentially a restatement of the schema rather than earned content.

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 selection mutation this is close to minimally viable: the core action is clear and the return type is at least mentioned. However, with no annotations, no output schema, and an image-editor context where selection state is conditional, the missing preconditions and side-effect notes leave the definition thinner than the tool's actual complexity warrants.

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 parameter, so the description must compensate, but "Target image index (default 0)" merely restates the property name and the default already declared in the schema. It adds no information about how the index relates to the focused image or what happens if the index is invalid.

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 ("Invert the current selection") and the parenthetical "select what is not selected" removes ambiguity about the operation's effect. It implicitly separates itself from select_all/select_none/invert_colors by naming the selection state, though it never explicitly contrasts with the very similarly named sibling invert_colors.

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

Usage Guidelines2/5

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

No guidance on when to use this versus select_all, select_none, modify_selection, or invert_colors, all of which sit in the same sibling set. It also never states the prerequisite that an active selection should exist for the inversion to be meaningful, leaving the agent to infer preconditions.

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

list_fontsB

List available fonts installed in GIMP.

Parameters:

  • filter: Optional string to filter font names (case-insensitive substring match)

Returns: {fonts: [font_name, ...], count}

NameRequiredDescriptionDefault
filterNo

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 disclose the return shape ({fonts, count}), which is valuable since there is no output schema, but it never states that the call is read-only, has no side effects on the document, or how the filter interacts with server-side state.

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

Conciseness4/5

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

Front-loaded purpose sentence followed by a brief parameter note and a return-value line — every part earns its place. The 'Parameters:' header is slightly heavy for a single optional argument but costs little.

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, annotation-free, output-schema-free listing tool, this covers the essentials: what it lists, how filtering works, and what comes back. The remaining gap is what the returned font names can be used for elsewhere.

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: it documents the single parameter as an optional, case-insensitive substring match against font names, which the schema itself does not say. Only the exact string format expected by downstream text tools is left implicit.

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 ('List available fonts installed in GIMP'), which clearly distinguishes it from the layer, image, and GEGL listing siblings. It stops short of explicitly naming those alternatives, but the resource is unambiguous.

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

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. A useful hint would be that this is the way to discover valid font names before calling add_text or edit_text, but nothing like that is stated.

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

list_imagesA

List all images currently open in GIMP.

Returns:

  • images: list of {index, image_id, name, width, height, color_mode, num_layers, file_path, is_dirty}

  • count: total number of open images

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 disclosure burden. 'List' implies a read-only, side-effect-free operation, and the description helpfully enumerates the returned fields including is_dirty and file_path. It says nothing about error behavior, whether it can be called with no images open, or any cost/latency considerations.

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 sentence of purpose followed by a structured Returns block — front-loaded and easy to scan. The field enumeration is slightly long but earns its place because no output schema exists. No filler or redundant restatement of the tool name beyond the opening sentence.

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 zero-parameter read tool with no output schema, the description covers the essential gap by documenting the return payload field-by-field, including count. What is missing is minimal — no note on ordering of the image list or behavior on an empty session — but an agent has enough to call it correctly.

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

Parameters4/5

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

The tool takes zero parameters, so there is no parameter semantics to document. Baseline of 4 applies; the description correctly spends no words on nonexistent inputs.

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 and resource plus scope: 'List all images currently open in GIMP.' An agent can tell this apart from get_image_metadata or list_layers by the 'currently open' framing. It stops short of naming a sibling alternative explicitly, 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?

There is no explicit when-to-use or when-not-to-use guidance, and no mention of alternatives such as get_image_metadata for a single image. Usage is only implied by the nature of a listing operation — an agent infers this is a discovery call before acting on an image, but the description never says so.

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

list_layersB

List all layers in an image with their properties.

Parameters:

  • image_index: Target image index (default 0)

Returns: {layers: [{name, id, visible, opacity, blend_mode, width, height, has_alpha}], count}

NameRequiredDescriptionDefault
image_indexNo

TDQS

B3.2/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 burden. It discloses the return shape (per-layer name, id, visibility, opacity, blend mode, dimensions, alpha) and the default image index, which is genuinely useful. It omits ordering of the returned layers, behavior when the image index is out of range, and whether layers are listed top-to-bottom or bottom-to-top.

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 purpose sentence followed by a compact Parameters block and an explicit Returns line — the structure is easy to scan and has no filler. The Returns line is dense but earns its space given there is no output schema.

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

Completeness3/5

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

For a one-parameter read tool with no annotations and no output schema, the description covers purpose, parameter, and return fields, which is close to adequate. Missing pieces are layer ordering, error/empty-image behavior, and how to obtain a valid image_index, all of which an agent needs to use the result 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 description coverage is 0%, so the description is the only source for what image_index means, and it does define it as the target image index with default 0. It does not say how to discover valid indices (e.g., via list_images) or what happens for a missing image, leaving a real gap for the sole parameter.

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 ('List all layers in an image') plus what comes back ('their properties'). It does not distinguish itself from near-siblings such as get_image_metadata or get_state_snapshot, which also expose structural information, 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 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 alternatives are named despite dozens of siblings touching layers (create_layer, set_layer_properties, reorder_layer, get_state_snapshot). Usage is only implied by the read-only phrasing 'List'.

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

merge_visible_layersB

Merge all visible layers into a single layer.

Parameters:

  • image_index: Target image index (default 0)

Returns: {layer_name, layer_id}

NameRequiredDescriptionDefault
image_indexNo

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 burden. It does disclose the key behavior (only visible layers are merged) and states the return value {layer_name, layer_id}, but it omits what happens to the source layers, whether hidden layers survive, whether the operation is undoable, and whether an image must be 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?

Short and front-loaded, with the operation stated first and parameter and return sections separated clearly. The parameter line largely duplicates the schema's title and default, which is minor waste.

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?

A destructive layer-collapsing mutation with no annotations and no output schema needs more disclosure than is present. The return shape is covered, but the irreversible nature of the merge, the fate of hidden layers, and undo behavior are all unaddressed.

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 labels image_index as the "target image index" and repeats the default 0, which adds a little meaning (which image the merge applies to) but no format, range, or behavior for an invalid 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?

States a specific verb and resource ("Merge all visible layers into a single layer") with a clear scope qualifier ("visible"). That distinguishes it somewhat from flatten_image, but the description never explicitly contrasts the two, so an agent must infer the difference.

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 conditions, and no mention of the obvious alternative flatten_image, which also collapses layers. The agent is left to guess whether merging visible layers preserves hidden layers.

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

modify_selectionB

Grow, shrink, feather, border, or sharpen the current selection.

Parameters:

  • operation: "grow", "shrink", "feather", "border", "sharpen"

  • amount: Pixel radius for grow/shrink/feather/border; ignored for sharpen

  • image_index: Target image index (default 0)

Returns status dict.

NameRequiredDescriptionDefault
amountYes
operationYes
image_indexNo

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 notes that amount is ignored for sharpen and that a status dict is returned, but it omits prerequisite conditions (must a selection exist? what happens if none?), whether the operation is undoable, and whether it mutates the image canvas state.

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

Conciseness4/5

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

The summary sentence is front-loaded with the actions, followed by a compact parameter breakdown. Every line contributes information and there is no filler, though the trailing 'Returns status dict.' is minimal enough to be borderline padding.

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 mutation tool with no annotations and no output schema, the description covers parameters adequately but leaves out prerequisite state, failure modes, and mutability/undo semantics. It is sufficient to attempt a call but not to predict its behavior reliably.

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

Parameters4/5

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

With schema description coverage at 0%, the description does the needed work: it enumerates the accepted operation strings, explains that amount is a pixel radius for grow/shrink/feather/border and ignored for sharpen, and clarifies the default for image_index. This compensates well for the bare schema, though it could say what amount means for border specifically.

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 resource ('the current selection') and enumerates the five operations it performs, which lets an agent distinguish it from select_* and invert_selection siblings. It stops short of explicitly naming the boundary with those siblings, but the operation list is concrete and 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 implied by the operation names and the phrase 'current selection', so an agent can infer this applies only when a selection exists. However, there is no explicit when-to-use guidance, no statement of prerequisites (an active selection is required for grow/shrink/etc.), and no routing to alternatives like invert_selection or crop_to_selection.

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

new_canvasA

Create a new blank canvas in GIMP and open it in a display window.

Parameters:

  • width: Canvas width in pixels

  • height: Canvas height in pixels

  • name: Layer/image name (default: "Untitled")

  • color_mode: "RGB" (default), "RGBA", "GRAY", "GRAYA"

  • fill: Fill color for the background layer. Any CSS color name or hex string: "white" (default), "black", "transparent", "#FF5733", "rgb(100,200,50)", etc.

  • resolution: DPI resolution (default: 72)

Returns:

  • image_id: internal GIMP image ID

  • width / height: confirmed dimensions

  • color_mode: confirmed mode

  • display_opened: whether a GIMP window was opened

Examples:

  • new_canvas(1024, 1024) — white 1024x1024 RGB canvas

  • new_canvas(1920, 1080, name="Background", fill="black")

  • new_canvas(512, 512, color_mode="RGBA", fill="transparent")

NameRequiredDescriptionDefault
fillNowhite
nameNoUntitled
widthYes
heightYes
color_modeNoRGB
resolutionNo

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 does well to disclose that a GIMP window is opened and to return a display_opened flag, but it omits side effects an agent needs: whether the new image becomes the active/selected image, that the canvas is unsaved until save_xcf/export_image, and what happens on failure or if the server is not running.

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 Parameters/Returns/Examples sections, which is appropriately structured for a 6-parameter tool. Slightly redundant in that the three examples restate defaults already given in the parameter list, but the examples do add concrete call shapes.

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?

There is no output schema, so the explicit Returns block (image_id, confirmed dimensions, color_mode, display_opened) is genuinely necessary and present. The main gap is state-behavior around the newly created image and error conditions, but for a creation tool this is close to complete.

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%, and the description fully compensates: every one of the six parameters gets meaning, defaults, and accepted value formats — notably the fill parameter's CSS color name/hex/rgb() syntax and the enumerated color_mode values, none of which are encoded in the schema (0 enums).

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 — 'Create a new blank canvas in GIMP' — and adds the observable outcome 'open it in a display window.' This clearly separates it from siblings like open_image (existing files) and resize_canvas (modifying existing canvases).

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

Usage Guidelines3/5

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

Usage is only implied: an agent can infer this is the entry point for starting from scratch rather than loading a file, but the description never says when to prefer this over open_image or when not to call it (e.g. if an image is already active). No prerequisites or alternatives are named.

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

open_imageA

Open an image file in GIMP and create a display window.

Parameters:

  • file_path: Absolute path to the image file to open (PNG, JPEG, TIFF, etc.)

Returns:

  • image_id: internal GIMP image ID

  • width / height: image dimensions in pixels

  • color_mode: RGB / Grayscale / Indexed

  • num_layers: number of layers in the image

  • display_opened: whether a GIMP display window was created

NameRequiredDescriptionDefault
file_pathYes

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 behavioral burden. It usefully discloses that a display window is created and lists return fields such as image_id and display_opened, but it does not describe error behavior, state changes to the active image, or permission requirements.

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

Conciseness5/5

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

The description is well structured and front-loaded: the core action appears first, followed by a compact parameter list and a useful return-value list. Every sentence earns its place.

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

Completeness4/5

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

For a simple one-parameter tool with no annotations and no output schema, the description covers purpose, the parameter, and return values adequately. It is nearly complete, with minor gaps around failure behavior and side effects on GIMP's current state.

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 supply all meaning for file_path. It does so effectively by specifying an absolute path and giving example formats like PNG, JPEG, and TIFF, though it could say more about unsupported formats or path errors.

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 verb and resource: opening an image file in GIMP and creating a display window. It is distinct from siblings like new_canvas or import_layer, though it does not explicitly name those alternatives.

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

Usage Guidelines3/5

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

The purpose implies when to use the tool for opening an existing image file, but there is no explicit guidance about when to prefer it over siblings such as new_canvas, import_layer, or set_active_image. The usage is therefore inferred rather than stated.

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

pdb_describeA

Inspect a GIMP PDB procedure's argument and return schemas without running it.

NameRequiredDescriptionDefault
nameYes

TDQS

A3.5/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 burden. It does disclose the most important behavioral trait, that the procedure is not executed (a safe read-only introspection), but it says nothing about the shape of the result (structured schema dump vs. formatted text), failure behavior for unknown procedure names, or whether it 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.

Conciseness5/5

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

A single front-loaded sentence with no filler; the differentiator ('without running it') comes at the end where it belongs and every word earns its place.

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

Completeness3/5

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

For a one-parameter introspection tool with no output schema and no annotations, the description covers the essential purpose but leaves the return shape and the accepted name format unstated. An agent knows broadly why to call it but not exactly what it will get back.

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

Parameters3/5

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

Only one parameter exists and schema description coverage is 0%, so the description must compensate. Saying it inspects 'a GIMP PDB procedure's' schemas does imply that 'name' is the procedure identifier, but it gives no hint about the expected naming format (e.g., hyphenated PDB names such as gimp-image-new) or whether a display name works.

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 (Inspect) and resource (a GIMP PDB procedure's argument and return schemas), and 'without running it' implicitly separates it from the sibling pdb_run. It stops short of naming pdb_search as the way to find procedure names, so the distinction from that sibling is left to inference.

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 running it' implies the use case: look up a procedure's signature before invoking it via pdb_run. There is no explicit when-to-use guidance, no mention of pdb_search for locating the procedure name, and no stated prerequisites or error conditions.

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

pdb_runA

Run one installed GIMP PDB procedure using named JSON-compatible arguments.

This can modify the current document. Search and describe first. Procedures accept JSON scalars and arrays; object values use explicit references such as {"$ref": "image", "index": 0} or {"$ref": "layer", "index": 0, "image_index": 0}. Layer indices include nested layers. Drawable references resolve against the image's selected drawables. Inspect the schema first. Arbitrary Python/Scheme evaluation and GIMP shutdown procedures are blocked.

NameRequiredDescriptionDefault
nameYes
argumentsYes

TDQS

A3.8/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 meaningful work: it warns "This can modify the current document" and names hard blocks (arbitrary Python/Scheme evaluation and GIMP shutdown procedures). It does not disclose whether effects are undoable, how failures surface, or whether the operation is atomic, so some behavioral uncertainty remains.

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 action and mutation warning, then moves into encoding details and restrictions in a logical order with no filler. There is minor redundancy between "Search and describe first" and "Inspect the schema first," which convey nearly the same instruction.

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 generic dispatcher with zero schema description coverage, a nested free-form object, and no output schema, the description supplies the encoding contract and safety boundaries an agent needs to construct a valid call. Gaps remain around return values and error behavior, which no output schema covers either.

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 the nested arguments object is undocumented in the schema, so the description must compensate — and it largely does, explaining that values are JSON scalars/arrays and that object arguments use explicit $ref forms for image, layer, and drawable, plus resolution rules for nested layer indices and selected drawables. The 'name' parameter is only implicitly defined as the PDB procedure name, and no concrete argument example is given.

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: "Run one installed GIMP PDB procedure using named JSON-compatible arguments." The word "one" plus the emphasis on installed procedures makes clear this is a single generic dispatch call rather than a batch facility. It does not explicitly contrast itself with the many purpose-built siblings (scale_image, crop_to_rect, gegl_apply_filter), 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 Guidelines3/5

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

It gives sequencing guidance — "Search and describe first" and "Inspect the schema first" — which routes the agent toward pdb_search and pdb_describe. However, with ~90 siblings, the crucial question of when to prefer pdb_run over a dedicated wrapper like scale_image or sharpen is never answered, and no exclusion criteria or fallback framing is given.

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

redoA

Redo one or more previously undone operations on an image.

Parameters:

  • steps: Number of redo steps (default 1)

  • image_index: Target image index (default 0)

Returns: {steps_redone}

NameRequiredDescriptionDefault
stepsNo
image_indexNo

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It usefully discloses the return shape ({steps_redone}) and the per-call semantics of the steps parameter, but says nothing about error behavior when the redo history is empty, whether the operation requires an active image, or whether steps beyond the buffer are clamped. That is a meaningful gap for a history-mutating tool.

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

Conciseness5/5

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

Front-loaded summary sentence followed by a compact bulleted parameter list and a one-line return note. Zero filler text; every line carries 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 two-optional-parameter history tool with no output schema, the definition covers purpose, defaults, and the returned field, which is most of what an agent needs. The remaining shortfall is the absence of failure-mode guidance, which matters more here because no annotations are supplied to indicate safety or mutation characteristics.

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 two bare integer properties. It does name both parameters and restates their defaults, but 'Number of redo steps' and 'Target image index' add little beyond the schema's own property titles — no units, bounds, or behavior for out-of-range 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 opens with a specific verb and resource: 'Redo one or more previously undone operations on an image.' That is clearly distinguishable from sibling tools like undo or the adjustment verbs. It does not explicitly name or contrast with any sibling, 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 phrase 'previously undone operations' implies the precondition that something must have been undone first, and that this is the counterpart to undo. But the description never states when to prefer this over undo, nor what happens if there is nothing in the redo buffer. 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.

rename_layerB

Rename a layer.

Parameters:

  • new_name: New name for the layer

  • old_name: Current name of the layer to rename

  • layer_index: Position index alternative to old_name

  • image_index: Target image index (default 0)

Returns: {old_name, new_name}

NameRequiredDescriptionDefault
new_nameYes
old_nameNo
image_indexNo
layer_indexNo

TDQS

B3.1/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 and only discloses the return shape {old_name, new_name}. It says nothing about failure modes when the named layer does not exist, what happens if neither old_name nor layer_index is supplied, whether layers in non-active images are reachable, or whether the rename 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.

Conciseness4/5

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

The definition is short, front-loaded with the action, and organized as a compact parameter list plus a return line. No sentence is wasted, though the bare list format gives up the chance to state the addressing rule in one clarifying clause.

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 four-parameter mutation tool, the description covers purpose, parameters, and return value, which is close to sufficient. Given zero annotation coverage, it should still say what happens on a failed lookup and how the layer addressing resolves, since an agent cannot infer that from the schema.

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 carry parameter meaning and it largely does: all four parameters are described, and crucially it explains that layer_index is an alternative addressing mechanism to old_name, which is not expressed anywhere in the schema. It still omits whether the two are mutually exclusive or what the precedence is if both are given.

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?

"Rename a layer" gives a specific verb and resource, so the agent knows exactly what mutation is performed. It does not differentiate from the nearby sibling set_layer_properties, which could plausibly also change a layer name, leaving slight ambiguity about which 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 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 use this versus set_layer_properties, no prerequisites (e.g. an active image must be selected), and no guidance on which of old_name versus layer_index to prefer. The parameter notes hint at addressing modes but stop short of usage context.

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

reorder_layerB

Move a layer to a new stack position.

Parameters:

  • new_position: Target stack index (0 = bottom)

  • layer_name / layer_index: Identify the layer (defaults to active layer)

  • image_index: Target image index (default 0)

Returns status dict.

NameRequiredDescriptionDefault
layer_nameNo
image_indexNo
layer_indexNo
new_positionYes

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 and mostly does not. It says 'Returns status dict' without describing success/failure signalling, and it never states whether the move is reversible, whether out-of-range positions are clamped or rejected, or whether the active layer changes as a side effect. For a state-mutating operation on a layer stack, that 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.

Conciseness4/5

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

The purpose is front-loaded in one line, followed by a compact parameter block and a one-line return note. No filler sentences. The bulleted format is easy to scan, though the 'Returns status dict' line adds little and could have been spent on the missing precedence rule.

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 definition should cover mutation semantics and the return shape, and it only half does. Parameter meaning is adequately covered for a four-parameter tool, but the precedence between the two layer identifiers and the effect of an invalid position are missing. It is minimally sufficient to call the tool, not sufficient to call it confidently.

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

Parameters4/5

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

Schema description coverage is 0% and the schema only supplies titles and defaults, so the description does real work: it defines new_position as a stack index with 0 = bottom, notes layer_name/layer_index default to the active layer, and records image_index's default target. The remaining gap is precedence when both layer_name and layer_index are provided, which is left unstated.

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 gives a specific verb and resource: 'Move a layer to a new stack position.' That is unambiguous and separates it from transform_layer (geometric change) or set_layer_properties. It stops short of naming a sibling or explaining how reorder differs from a general layer mutation, so it is clear but not sibling-differentiated.

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 use this versus alternatives such as transform_layer or set_layer_properties, and no prerequisites (e.g. an open image or an existing layer stack). Nothing warns that the change may need an undo to reverse or that the active layer matters. The agent is left to infer usage 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.

resize_canvasA

Resize the image canvas without scaling the content.

Parameters:

  • width, height: New canvas dimensions in pixels

  • anchor: Position of existing content — "center" (default), "top-left", "top", "top-right", "left", "right", "bottom-left", "bottom", "bottom-right"

  • fill: Color for new canvas areas — CSS color or "transparent"

  • image_index: Target image index (default 0)

Returns: {status, width, height, offset_x, offset_y}

NameRequiredDescriptionDefault
fillNotransparent
widthYes
anchorNocenter
heightYes
image_indexNo

TDQS

A4/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 burden. It does useful work by naming all nine anchor values, the fill default, the target image index, and the return shape, but it never says whether the operation is undoable, what happens to layers/selection bounds, or whether existing content is clipped when shrinking - the key risk for a canvas mutation.

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 framing sentence followed by a tight parameter list and a return summary. It is front-loaded with the operative constraint and every line carries information the schema does not already contain, such as the anchor enumeration and pixel units.

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 five-parameter mutation tool with zero annotation coverage and no output schema, the parameter documentation is thorough and the return shape is spelled out. What is missing is the side-effect profile - clipping behavior on shrink, effect on layers and selection, and undoability - which an agent needs before invoking a destructive canvas operation.

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% and the schema has no enum on anchor, so the description is the only source of meaning. It defines width/height units in pixels, enumerates all valid anchor strings with the default, explains fill as a CSS color or "transparent", and gives image_index a default and target semantics - fully compensating for the schema 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?

"Resize the image canvas without scaling the content" states a specific verb and resource and adds the scope qualifier that separates it from scale_image and scale_to_fit, which are the obvious confusable siblings here. An agent can pick between canvas resize and image scaling on this sentence alone.

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 scaling the content" implies the canvas-vs-scale distinction, but no sibling is named and there is no explicit when-to-use or when-not guidance (e.g. versus crop_to_rect or batch_resize). Usage is inferable rather than stated.

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

restart_serverA

Drop and re-establish the connection to the GIMP MCP plugin.

Use this when:

  • GIMP was restarted after Claude Code was already running

  • The socket connection dropped mid-session

  • check_server() shows not connected but GIMP is open

Returns the new connection status (same format as check_server).

NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description carries the full burden; it does disclose the key behavioral traits that the operation tears down the existing connection and returns a fresh status. It does not say whether in-flight operations or session state are lost, or confirm GIMP must be running for the restart to succeed, which matters for an operation whose name suggests risk.

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 of purpose, then a tight bulleted when-to-use list, then the return contract. Front-loaded and free of filler; every line changes how an agent would decide to call it.

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

Completeness4/5

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

No output schema exists, and the description compensates by stating the return is the new connection status in the same format as check_server, which an agent can resolve from the sibling. Only the side-effect risk on the live session is left unaddressed.

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 no parameters, so the baseline is 4 and there is nothing for the description to compensate for. It correctly says nothing about inputs.

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 action on a specific resource: drop and re-establish the connection to the GIMP MCP plugin. It is immediately distinguishable from the other connectivity-adjacent sibling, check_server, which the description positions as a diagnostic rather than a repair.

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?

Three concrete triggering conditions are listed (GIMP restarted after Claude Code, socket dropped mid-session, check_server reports not connected while GIMP is open), which is strong positive guidance. It stops short of explicit negatives, e.g. do not call this when check_server already reports connected, so it falls just under the top mark.

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

rotate_imageB

Rotate the entire image.

Parameters:

  • angle: Rotation in degrees — 90, 180, 270 use lossless GIMP rotation; other values rotate all layers with interpolation and flatten

  • image_index: Target image index (default 0)

Returns status dict.

NameRequiredDescriptionDefault
angleYes
image_indexNo

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations supplied, the description carries the whole behavioral burden. It does disclose one important trait — that non-right angles interpolate and flatten — but omits that the tool mutates the active image in place, whether the change is reversible, and which image is affected absent image_index.

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 one sentence, then a short structured parameter list, then the return note — no filler. The wrapped lines under angle are slightly awkward but every clause carries 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 two-parameter mutation tool with no annotations and no output schema, the definition covers intent, both parameters, the lossless-vs-interpolated split, and the return shape. The remaining gap is destructive/undo context, which matters given the flatten side effect.

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 description does document both parameters meaningfully: the special lossless behavior at 90/180/270 and the default index of 0. It still leaves the accepted numeric range and negative-angle handling unstated, so a caller cannot tell whether arbitrary floats are valid.

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 entire image" gives a specific verb and resource and, via "entire," implicitly separates this from layer-scoped siblings such as transform_layer. It never names a sibling explicitly, so the differentiation is inferred 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 description makes the natural use case obvious (rotate a whole image), but it offers no when-to-use/when-not guidance against flip_image or transform_layer, and no note on undo or state prerequisites. Usage is implied rather than directed.

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

save_xcfA

Save the current image as a GIMP XCF file (preserves all layers and metadata).

Parameters:

  • file_path: Absolute path for the output .xcf file

  • image_index: Index of the image to save (default 0 = first open image)

Returns:

  • status: "success" or "error"

  • file_path: confirmed output path

NameRequiredDescriptionDefault
file_pathYes
image_indexNo

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 behavioral burden; it does disclose the return shape (status plus confirmed file_path) and the layer/metadata preservation property, which is genuine value. It leaves out whether an existing file at file_path is overwritten, whether the file must already exist, and whether errors are returned as status values rather than thrown.

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 purpose sentence is front-loaded and the parameter/return lists are compact and scannable. A little redundancy exists in restating parameters that the schema already names, but the added meaning justifies the space.

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 write tool with no output schema and no annotations, the description covers purpose, both parameters, and the return fields, which is close to sufficient. The remaining gap is destructive/overwrite semantics, which matters for a save operation that writes to a caller-specified path.

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: it specifies file_path must be an absolute path ending in .xcf, and explains image_index as the index of the image to save with default 0 meaning the first open image. This resolves the main ambiguity (which image gets saved) that the bare schema leaves open.

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: 'Save the current image as a GIMP XCF file', plus the differentiating property that XCF 'preserves all layers and metadata'. That implicitly separates it from export_image and batch_export, which produce flattened output formats, 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 only implied by the format choice — a reader can infer XCF saving is for preserving editability while export_image is for delivery formats, but the description never states when to prefer this tool or when to use export_image instead. No prerequisites or exclusions are given.

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

scale_imageA

Scale an image to exact pixel dimensions.

Parameters:

  • width: Target width in pixels

  • height: Target height in pixels

  • interpolation: "cubic" (default), "linear", "none"

  • image_index: Target image index (default 0)

Returns: {status, width, height}

NameRequiredDescriptionDefault
widthYes
heightYes
image_indexNo
interpolationNocubic

TDQS

A3.5/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 behavioral burden. It usefully states the return shape and the interpolation default, but never says whether scaling distorts aspect ratio, whether it is destructive, whether it applies to the active image or a specific image, or how layers are affected.

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

Conciseness4/5

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

Front-loaded one-line purpose followed by a compact parameter list and a return-shape line; every element is scannable. Minor redundancy in restating defaults that already appear in the schema's default fields, but the interpolation enumeration earns its place.

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

Completeness3/5

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

The description covers inputs and the return shape, which is reasonable given there is no output schema. For a 4-parameter mutation tool with zero annotation coverage, however, it omits the important behavioral facts: aspect-ratio handling, destructiveness, and which image the operation targets.

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% – properties carry only titles and defaults – so the description must compensate, and it largely does: it defines units in pixels for width/height and enumerates the interpolation options ("cubic", "linear", "none"), which the schema does not. The image_index explanation is thinner, leaving unclear what index space it refers to when multiple images are open.

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?

"Scale an image to exact pixel dimensions" gives a specific verb and resource, and the word "exact" hints at forced, possibly non-proportional scaling versus a fit-to-box sibling. It does not name scale_to_fit or resize_canvas, so the agent must infer the distinction from the qualifier alone.

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

Usage Guidelines3/5

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

No explicit when-to-use or when-not guidance, and no sibling is named. Usage is only implied by "exact pixel dimensions," which suggests this is the tool for forcing a specific size rather than preserving aspect ratio.

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

scale_to_fitA

Scale an image to fit within a bounding box, preserving aspect ratio.

Parameters:

  • max_width: Maximum allowed width in pixels

  • max_height: Maximum allowed height in pixels

  • interpolation: "cubic" (default), "linear", "none"

  • image_index: Target image index (default 0)

Returns: {status, width, height} — final dimensions after scaling

NameRequiredDescriptionDefault
max_widthYes
max_heightYes
image_indexNo
interpolationNocubic

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 burden and does disclose the key behavioral traits: aspect ratio is preserved and the final dimensions are returned. It does not state whether the operation mutates the image in place, whether upscaling is allowed when the source is smaller than the box, or what happens when only one dimension is binding, which are meaningful gaps for a mutation tool.

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

Conciseness5/5

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

The one-line purpose is front-loaded, then a tight parameter block, then a return-shape line. Nothing is redundant and the structure lets an agent scan purpose, inputs, and output in order.

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, the inline "Returns: {status, width, height}" line is genuinely necessary and included, and the default values for interpolation and image_index are surfaced. The remaining gap is in-place-vs-copy semantics and upscale behavior, which matter for a 4-parameter mutating image tool.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate, and it largely does: it glosses all four parameters and, critically, enumerates the accepted interpolation values ("cubic" default, "linear", "none") which the schema does not express as an enum. It stops short of stating constraints on max_width/max_height, such as acceptable ranges or mutual interaction.

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 ("Scale an image") plus the distinguishing constraint of fitting within a bounding box while preserving aspect ratio, which separates it conceptually from plain scale_image or resize_canvas. It never names a sibling explicitly, so an agent still has to infer the boundary from sibling names alone.

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 "fit within a bounding box" phrasing suggests this is the right choice when target maximums are known, but there is no explicit when-to-use, when-not-to-use, or pointer to an alternative such as scale_image or batch_resize. An agent must derive the routing decision itself.

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

select_allC

Select the entire image canvas.

Parameters:

  • image_index: Target image index (default 0)

Returns status dict.

NameRequiredDescriptionDefault
image_indexNo

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 discloses only "Returns status dict" and says nothing about whether an existing selection is discarded, whether the operation is undoable, or whether it fails when no image is open — significant gaps for a tool that mutates editor state.

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

Conciseness4/5

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

The purpose is stated in the first line, followed by compact Parameters and Returns sections with no filler. The structure is clean, though the parameter and return lines are terse enough to be near-trivial.

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-optional-parameter tool with no output schema, the description covers purpose, parameter, and a rough return value. It is adequate but leaves the key semantic question — that this overwrites the current selection — unanswered.

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 add real meaning by stating that image_index targets an image and defaults to 0. However, it never explains what the index refers to (e.g., position in list_images output) or what happens if the index is out of 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?

"Select the entire image canvas" gives a specific verb (select) and resource scope (entire canvas), which is enough to distinguish it from select_rectangle, select_by_color, and select_none. It does not explicitly name those siblings or state the 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?

There is no explicit when-to-use or when-not-to-use guidance. The agent must infer from the name and from siblings like select_none, invert_selection, and select_by_color that this replaces the current selection with a full-canvas selection, and nothing in the text confirms or denies that.

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

select_by_colorB

Select regions by color similarity.

Parameters:

  • color: Target color as CSS name, hex (#rrggbb), or rgb() string

  • threshold: Color similarity tolerance 0-255 (default 15)

  • operation: "replace" (default), "add", "subtract", "intersect"

  • image_index: Target image index (default 0)

  • layer_name: Layer to sample from; defaults to active layer

Returns status dict.

NameRequiredDescriptionDefault
colorYes
operationNoreplace
thresholdNo
layer_nameNo
image_indexNo

TDQS

B3.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. It reveals that the return is a 'status dict' and that selection mode is controlled by operation (default 'replace'), but says nothing about failure conditions, effect on the previous selection for non-replace modes, undo behavior, or the shape of the returned dict.

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 purpose followed by a compact parameter table — every line adds information an agent needs, and the purpose is front-loaded before the details. No filler or repetition.

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 is only just adequate: it documents all five parameters well but leaves the return value as an opaque 'status dict' and omits error behavior and interaction with an existing selection. For a selection-mutating tool that is a meaningful gap.

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: it documents accepted color formats (CSS name, hex, rgb()), the 0-255 range and default of threshold, the enumeration of operation values, and that layer_name falls back to the active layer. Only image_index gets a bare restatement with no added meaning.

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

Purpose4/5

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

The description opens with a specific verb+resource: 'Select regions by color similarity,' which clearly separates it from the geometric siblings (select_rectangle, select_ellipse) and from select_all/select_none. It does not explicitly name an alternative tool, 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 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 prefer this over other selection tools, no prerequisites (e.g., an image must be open), and no guidance on choosing a threshold value. The operation list implies the modes but never explains when to use 'add' versus 'replace' in a workflow.

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

select_ellipseB

Create an elliptical selection.

Parameters:

  • x, y: Top-left corner of the bounding box

  • width, height: Bounding box dimensions

  • operation: "replace" (default), "add", "subtract", "intersect"

  • feather: Feather radius in pixels (default 0)

  • image_index: Target image index (default 0)

Returns status dict.

NameRequiredDescriptionDefault
xYes
yYes
widthYes
heightYes
featherNo
operationNoreplace
image_indexNo

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 burden. It only notes "Returns status dict" and restates default values that the schema already declares; it says nothing about whether "replace" discards the current selection, what happens with a feathered edge at canvas boundaries, or whether the call fails when no image is 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?

Front-loaded one-line purpose followed by a tight parameter list and a return note; nothing is padded. Minor waste in restating default values already present in the schema.

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 7-parameter mutation tool with no annotations and no output schema, the description covers every parameter, the selection-combination modes, and the return type, which is enough to call it correctly. Missing only failure/edge-case behavior, which keeps it short of full completeness.

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

Parameters3/5

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

Schema description coverage is 0% (titles only), so the description must compensate, and it partly does: it defines x/y as the bounding-box top-left, width/height as box dimensions, feather as a pixel radius, and supplies the operation enum values that the schema omits entirely. The gaps are that coordinate origin (image vs canvas), negative/out-of-bounds handling, and the accepted scale for feather remain 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?

"Create an elliptical selection" states a specific verb plus resource, which distinguishes it implicitly from draw_ellipse/fill_ellipse (drawing/painting) and from select_rectangle (shape). However, it never names an alternative explicitly, so differentiation is inferred 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 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. With siblings like select_rectangle, select_by_color, select_all, and modify_selection competing for the same intent, the description offers nothing about which to pick, no prerequisite such as an open/active image, and no note on how the operation modes interact with an existing selection.

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

select_noneB

Remove / deselect all selections.

Parameters:

  • image_index: Target image index (default 0)

Returns status dict.

NameRequiredDescriptionDefault
image_indexNo

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 does disclose that the call returns a status dict and that the operation targets a specific image index, which signals this is a per-image mutation. It does not say whether the call errors when no selection exists, whether it affects only the active image, or whether it is idempotent.

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 purpose is front-loaded in the first line. The parameter list duplicates schema information and 'Returns status dict' is a terse but useful addition; nothing is padded or verbose.

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 trivial zero-required-parameter selection tool with no output schema, the description covers purpose, the single parameter, and the return shape. Only minor behavioral details (error behavior, active-image assumption) are missing.

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 define the lone parameter, and it does identify image_index as the 'target image index' with a default of 0. That is roughly the minimum needed, but for a single optional integer parameter it is sufficient meaning.

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

Purpose4/5

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

Uses a specific verb phrase ('Remove / deselect all selections') against a clear resource, so an agent immediately knows this clears the active selection. It does not explicitly contrast with siblings like select_all, invert_selection, or modify_selection, which would have earned 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 statement of when to use this versus alternatives such as invert_selection or modify_selection, and no prerequisites (e.g., requiring an active image or existing selection). The only guidance is the implicit 'deselect everything' reading of the name.

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

select_rectangleB

Create a rectangular selection.

Parameters:

  • x, y: Top-left corner of the selection

  • width, height: Dimensions of the selection

  • operation: "replace" (default), "add", "subtract", "intersect"

  • feather: Feather radius in pixels (default 0 = no feather)

  • image_index: Target image index (default 0)

Returns status dict.

NameRequiredDescriptionDefault
xYes
yYes
widthYes
heightYes
featherNo
operationNoreplace
image_indexNo

TDQS

B3.1/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 and discloses little beyond the parameter meanings. It does not state that the default "replace" operation discards any existing selection, whether the selection requires an active image, how out-of-bounds coordinates are handled, or whether the change is undoable; "Returns status dict" gives no shape or failure semantics for a state-mutating 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 one-line purpose is front-loaded, then a compact bulleted parameter list with no filler. The trailing "Returns status dict" is terse but justified, and nothing in the description 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 7-parameter, state-mutating selection tool with no annotations and no output schema, the description covers every parameter but omits interaction with pre-existing selections, prerequisite context (active image via image_index), and any return-value detail beyond the word "dict". It is enough to compose a call but not enough to predict its side effects.

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 parameter list is the only source of meaning, and it does real work: it labels x/y as the top-left corner, defines width/height, enumerates the four operation values (which the schema does not declare as an enum), and explains feather units and all three defaults. The main gap is that pixel units, coordinate origin, and valid ranges for width/height are never stated.

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?

"Create a rectangular selection" names a specific verb and resource, and the parameter list makes clear it is a geometric region selection rather than a color- or state-based one. An agent can distinguish it from select_ellipse, select_by_color, and select_all by the shape implied in the first sentence, 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?

The description never says when to choose this over select_ellipse, select_by_color, select_all, or select_none, nor when a selection is a prerequisite for later tools like fill_selection or crop_to_selection. The operation parameter hints at combining modes but the agent is left to infer the routing decision.

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

set_active_imageA

Raise a specific image to the front / make it active in GIMP.

Parameters:

  • image_index: Index of the image to activate (from list_images)

Returns status dict.

NameRequiredDescriptionDefault
image_indexYes

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are supplied, so the description must carry the full burden; it discloses that the call returns a status dict and that the image is brought to the front. It omits what happens with an invalid index, whether the operation is reversible (undo), and whether other images are affected.

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

Conciseness5/5

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

One-sentence purpose followed by a short parameter block and a return note — tightly structured with no filler. Every line adds 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 single-required-parameter tool with no output schema, the description covers purpose, parameter source, and return type, which is nearly everything an agent needs. Only error/failure behavior is missing.

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 is the only source of parameter meaning; it explains that image_index identifies the image to activate and, usefully, that it comes from list_images. It does not state whether indices are zero-based or whether out-of-range values error.

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 object ('Raise a specific image to the front / make it active in GIMP'), which is concrete and unambiguous. It is implicitly distinct from sibling tools like list_images and close_image, though it does not name any 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 Guidelines3/5

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

The description implies when to use it (switching which image is the active target before further operations) and points the agent at list_images as the source of the index. It does not state when not to use it or mention any alternative tool for image targeting.

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

set_colorsA

Set the GIMP foreground and/or background color.

Parameters:

  • foreground: New foreground color (CSS name, hex, rgb()); omit to leave unchanged

  • background: New background color; omit to leave unchanged

Returns: {foreground, background} confirmation dict.

NameRequiredDescriptionDefault
backgroundNo
foregroundNo

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 whole burden. It discloses that omitted parameters are left unchanged and that a {foreground, background} confirmation dict is returned, which is real behavioral value. It does not say whether the change is global to the GIMP session or scoped to the active image, what happens on an unparsable color string, or whether the setting persists across image changes.

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 purpose sentence followed by a compact parameter block and a one-line return note - no filler. The opening sentence duplicates the tool name slightly, and a prose paragraph or tighter bullet form would read equally well, but nothing is wasted.

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, no-annotation, no-output-schema tool, the description covers both inputs and the return shape, which is most of what an agent needs to call it correctly. The remaining gap is failure and scope semantics, which a longer definition could reasonably add.

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: both parameters are named, the accepted formats (CSS name, hex, rgb()) are listed, and the omit-to-leave-unchanged default behavior is spelled out. It stops short of enumerating edge cases such as alpha or HDR color notation.

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: 'Set the GIMP foreground and/or background color.' An agent immediately knows this mutates the active color state. No sibling in the list performs this function, so no differentiation is needed, but the description also doesn't state scope (per-image vs per-session), 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 Guidelines3/5

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

The 'omit to leave unchanged' notes on each parameter give implied usage for partial updates, which is genuinely useful. However there is no explicit when-to-use framing, no statement that at least one of the two parameters should be supplied, and no mention of how this relates to siblings like get_pixel_color or convert_color_mode.

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

set_layer_propertiesA

Set properties on an existing layer.

Parameters:

  • layer_name / layer_index: Identify the layer (defaults to active layer)

  • opacity: New opacity 0-100 (omit to leave unchanged)

  • blend_mode: New GIMP layer mode name (omit to leave unchanged)

  • visible: True/False visibility (omit to leave unchanged)

  • image_index: Target image index (default 0)

Returns status dict.

NameRequiredDescriptionDefault
opacityNo
visibleNo
blend_modeNo
layer_nameNo
image_indexNo
layer_indexNo

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 behavioral burden. It usefully discloses that omitted properties are left unchanged, that the active layer is the default target, and that the return is a status dict, but it omits permissions, reversibility/undo behavior, error handling, and validation details for invalid layers or blend modes.

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

Conciseness5/5

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

The description is front-loaded and compact, with a clear purpose sentence followed by a well-structured parameter list. Every line contributes useful calling information without redundant wording.

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 moderately complex mutation tool with no annotations and no output schema, the description covers purpose, all parameters, defaults, omission semantics, and return type. It is sufficient for correct basic invocation, though it could further clarify error conditions or sibling alternatives.

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 explains all six parameters, including opacity range 0-100, blend_mode meaning, visible as boolean, layer identification, and image_index default. It does not clarify precedence when both layer_name and layer_index are supplied, nor does it list valid blend mode names.

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: "Set properties on an existing layer." This is clear enough to distinguish a property mutation from creation, but it does not explicitly differentiate from siblings such as rename_layer, reorder_layer, or transform_layer.

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

Usage Guidelines3/5

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

Usage is implied by "existing layer" and by noting that the layer defaults to the active layer. However, there is no explicit guidance on when to use this instead of rename_layer, reorder_layer, or transform_layer, nor any when-not conditions.

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

sharpenB

Sharpen a layer using unsharp mask.

Parameters:

  • amount: Sharpening strength 0-500 (default 50.0)

  • radius: Blur radius for the mask in pixels (default 3.0)

  • threshold: Minimum difference before sharpening is applied (default 0)

  • image_index: Target image index (default 0)

  • layer_name: Layer to sharpen; defaults to active layer

Returns status dict.

NameRequiredDescriptionDefault
amountNo
radiusNo
thresholdNo
layer_nameNo
image_indexNo

TDQS

B3.3/5.0
Behavior2/5

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

No annotations and no output schema, so the description carries the full burden. It states the operation is a mutation of a layer and that it returns a status dict, but says nothing about whether it is destructive/in-place, undo behavior, required preconditions (an open image, an existing layer), or error conditions.

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

Conciseness4/5

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

The one-line purpose is front-loaded and the parameter list is compact and scannable, with no filler sentences. The trailing 'Returns status dict' is terse but earns its place as the only return-value note.

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 five-parameter mutation tool with zero annotation coverage and no output schema, the description covers parameters well but is thin on behavior: no side-effect, precondition, or failure information. It is adequate to invoke the tool but not to invoke it safely.

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: all five parameters get meaning, units, ranges, and defaults (amount 0-500 default 50.0, radius in pixels default 3.0, threshold as minimum difference, layer_name defaulting to the active layer). Only minor gaps remain, such as the meaning/units of image_index beyond 'target image 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 ('Sharpen a layer') plus the underlying technique ('using unsharp mask'), so the agent knows exactly what operation is performed. It doesn't explicitly contrast with nearby siblings like blur, denoise, or gegl_apply_filter, but 'sharpen' is unambiguous among the listed 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?

Usage is only implied by the verb and the parameter defaults; there is no statement of when to prefer this over blur/denoise or over a GEGL filter route. It does helpfully note that layer_name defaults to the active layer, which gives some operational context but no exclusions.

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

transform_layerA

Apply a bounded, named-layer 2D transform without changing the canvas.

Rotation is in degrees. Translation and optional pivot coordinates are image pixels. The default pivot is the layer center. This changes visible pixels; it does not invent a new camera view or reveal hidden product surfaces.

NameRequiredDescriptionDefault
pivot_xNo
pivot_yNo
scale_xNo
scale_yNo
layer_nameYes
image_indexNo
translate_xNo
translate_yNo
rotation_degreesNo

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations supplied, the description does real work: it discloses that the operation is bounded to a named layer, that the canvas is unaffected, that it mutates visible pixels, and that the default pivot is the layer center. It omits the order of scale/rotation composition and any failure behavior when the layer is missing, but the safety-relevant profile is clearly conveyed.

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

Conciseness4/5

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

Front-loaded with the action and scope, then unit conventions and the pivot default in short declarative sentences. The final clause about not inventing a camera view or revealing hidden surfaces reads as defensive boilerplate rather than useful tool 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 9-parameter mutation tool with no annotations and no output schema, the description covers units, pivot behavior and canvas scope but says nothing about what is returned, whether the transform is applied destructively, or what scale_x/scale_y and image_index control. Adequate, but not complete for this complexity.

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 it documents units for the highest-risk numerics: rotation in degrees, translation and pivot in image pixels, and the default pivot of layer center. Two parameters (scale_x/scale_y defaults, image_index) go unmentioned, which is a real gap, but the unit/default disclosure it does provide is well beyond what the bare schema offers.

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 a bounded, named-layer 2D transform') plus the key scope constraint ('without changing the canvas'). This implicitly separates it from canvas-level siblings like resize_canvas, rotate_image, and scale_image, though none are 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 only implied: the phrase 'without changing the canvas' signals this is the layer-scoped option rather than the image-scoped one. There is no explicit when-to-use/when-not guidance and no named alternative, so the agent must infer the routing from the scope wording.

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

undoB

Undo one or more operations on an image.

Parameters:

  • steps: Number of undo steps (default 1)

  • image_index: Target image index (default 0)

Returns: {steps_undone}

NameRequiredDescriptionDefault
stepsNo
image_indexNo

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 burden and does not meet it. It never states that this mutates image state and history, whether the redo stack is invalidated, or what happens when 'steps' exceeds the available history; the 'Returns: {steps_undone}' line is the one useful hint that fewer steps may be undone than requested.

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?

Short, front-loaded, and structured with a Parameters block and an explicit Returns line. The section labels are slightly ceremonial for only two parameters 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?

With no annotations and no output schema, the description must be self-sufficient; it covers the parameters and the return shape but omits preconditions, failure behavior on exhausted history, and whether the redo stack survives. Adequate to invoke the tool, incomplete for predicting its side effects.

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: both parameters are named with defaults, and 'steps: Number of undo steps' clarifies that the value is a count of undo operations rather than a history index. What 'image_index' indexes into (the list_images ordering) is left implicit, which keeps it from a 5.

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 ('Undo one or more operations on an image') and implies a scope of multiple steps. It is clearly distinguishable from the sibling 'redo' by name, though the description itself never names 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 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 preconditions (an open/active image, a non-empty history stack), and no routing to the alternative 'redo'. The only implied usage is that the tool applies to a target image via image_index.

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

warp_regionA

Warp / liquify a region of the image by pushing pixels in a direction.

Uses GEGL warp (GIMP 3 native) with plug-in-iwarp fallback. Ideal for subtle facial expression edits — e.g. turning a neutral mouth into a smile by pushing the mouth corners upward.

Parameters:

  • vectors: List of warp stroke dicts, each with:

    • x, y : center of the warp influence (pixels)

    • dx, dy : push direction — negative dy = push upward

    • radius : influence radius in pixels (default: 40)

    • amount : deform strength 0–1 (default: 0.3)

  • image_index: Which open image to edit (default: 0)

  • layer_name: Target layer; omit to use the active/top layer

Examples — make a character smile: warp_region(vectors=[ {"x": 215, "y": 355, "dx": 5, "dy": -8, "radius": 18, "amount": 0.45}, {"x": 295, "y": 355, "dx": -5, "dy": -8, "radius": 18, "amount": 0.45}, {"x": 255, "y": 370, "dx": 0, "dy": -4, "radius": 22, "amount": 0.30}, ])

Returns: {"warped_vectors": N}

NameRequiredDescriptionDefault
vectorsYes
layer_nameNo
image_indexNo

TDQS

A4.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 behavioral burden and does disclose implementation details (GEGL warp with plug-in-iwarp fallback) and the return value, which is real added context. However, it never states that this mutates the target layer in place, whether the edit is undoable, or how failures behave — meaningful gaps for a pixel-mutating operation.

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

Conciseness4/5

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

It is front-loaded with purpose and mechanism, then a parameter block, then one example — a sensible hierarchy. The three-vector example is verbose relative to the rest, but it demonstrates a non-obvious coordinate-based workflow that text alone could not convey, so it largely earns its space.

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?

There is no output schema, and the description supplies the return shape ({"warped_vectors": N}), plus defaults for every optional parameter and target selection rules. For a single-operation pixel-warp tool, nothing an agent needs to call it correctly is missing.

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% and the vectors array is untyped (items: {}), so the description must do all the work — and it does, documenting x, y, dx, dy, radius (default 40), and amount (0–1, default 0.3) with directional semantics such as "negative dy = push upward." It also explains image_index and layer_name fallback to the active/top layer, fully compensating for the schema 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?

"Warp / liquify a region of the image by pushing pixels in a direction" is a specific verb plus resource plus mechanism, and it clearly separates this tool from siblings like transform_layer (whole-layer transforms) or gegl_apply_filter (generic filter application). An agent can tell what this does without opening the schema.

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

Usage Guidelines4/5

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

It gives a concrete usage context (subtle facial expression edits, e.g. turning a neutral mouth into a smile) with a worked three-stroke example, which is unusually actionable. It stops short of explicit exclusions — nothing says when to prefer transform_layer or gegl_apply_filter instead — so it is strong but not a full when/when-not/alternatives statement.

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. 89 tool updatesv0.1.0
    • First observedadd_text
    • First observedadjust_brightness_contrast
    • First observedadjust_color_balance
    • First observedadjust_curves
    • First observedadjust_hue_saturation
    • First observedapply_drop_shadow
    • First observedapply_emboss
    • First observedapply_gaussian_blur
    • First observedapply_noise
    • First observedapply_pixelate
    • First observedapply_vignette
    • First observedauto_levels
    • First observedbatch_export
    • First observedbatch_resize
    • First observedblur
    • First observedcall_api
    • First observedcheck_server
    • First observedclose_image
    • First observedconvert_color_mode
    • First observedcreate_layer
    • First observedcrop_to_rect
    • First observedcrop_to_selection
    • First observeddelete_layer
    • First observeddenoise
    • First observeddesaturate
    • First observeddraw_ellipse
    • First observeddraw_line
    • First observeddraw_rectangle
    • First observedduplicate_layer
    • First observededit_text
    • First observedexport_icon_sizes
    • First observedexport_image
    • First observedexport_social_media_kit
    • First observedexport_sprite_sheet
    • First observedexport_web_optimized
    • First observedfill_ellipse
    • First observedfill_layer
    • First observedfill_rectangle
    • First observedfill_selection
    • First observedflatten_image
    • First observedflip_image
    • First observedgegl_apply_filter
    • First observedgegl_describe_operation
    • First observedgegl_filter_action
    • First observedgegl_list_filters
    • First observedgegl_list_operations
    • First observedget_context_state
    • First observedget_gimp_info
    • First observedget_histogram
    • First observedget_image_bitmap
    • First observedget_image_metadata
    • First observedget_pixel_color
    • First observedget_selection_bounds
    • First observedget_state_snapshot
    • First observedgradient_fill
    • First observedimport_layer
    • First observedinvert_colors
    • First observedinvert_selection
    • First observedlist_fonts
    • First observedlist_images
    • First observedlist_layers
    • First observedmerge_visible_layers
    • First observedmodify_selection
    • First observednew_canvas
    • First observedopen_image
    • First observedpdb_describe
    • First observedpdb_run
    • First observedpdb_search
    • First observedredo
    • First observedrename_layer
    • First observedreorder_layer
    • First observedresize_canvas
    • First observedrestart_server
    • First observedrotate_image
    • First observedsave_xcf
    • First observedscale_image
    • First observedscale_to_fit
    • First observedselect_all
    • First observedselect_by_color
    • First observedselect_ellipse
    • First observedselect_none
    • First observedselect_rectangle
    • First observedset_active_image
    • First observedset_colors
    • First observedset_layer_properties
    • First observedsharpen
    • First observedtransform_layer
    • First observedundo
    • First observedwarp_region

TDQS

B3.2/5.0

Scored across 89 tools

Disambiguation3/5

Most tools map to a distinct operation, but several pairs overlap significantly: blur vs apply_gaussian_blur (both Gaussian blur, destructive vs non-destructive), get_image_bitmap vs get_state_snapshot (both return a PNG of the current image), and scale_image vs scale_to_fit vs batch_resize. The generic escape hatches (pdb_run, call_api, gegl_apply_filter) also overlap with the focused effect tools (sharpen, denoise, apply_pixelate), forcing agents to guess which path is intended.

Naming Consistency4/5

The set is overwhelmingly snake_case verb_noun (create_layer, select_rectangle, export_image, apply_noise), which is predictable. Deviations are minor: some filters use a bare verb (sharpen, blur, denoise) while siblings use apply_ (apply_emboss, apply_vignette), and the gegl_/pdb_ namespaces put the qualifier before the verb (gegl_list_filters vs list_layers).

Tool Count2/5

89 tools is far beyond the practical range and clearly over-scoped; the effect/filter surface alone is split across dozens of near-duplicate entries (adjust_curves, auto_levels, adjust_brightness_contrast vs the GEGL filter tools). While image editing is a broad domain, a large fraction of these tools could be consolidated without losing capability.

Completeness4/5

Coverage is unusually thorough: lifecycle (new/open/save/export/close), layers, selections, transforms, drawing, text, filters, batch operations, and named export presets are all present. Gaps remain around layer masks, channels, and paths, but pdb_run/call_api provide a workaround for those.

Maintenance

ActivityMaintained
ResponsivenessOutdated data

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server that bridges GIMP 3.0 with natural language commands, enabling conversational image editing through Claude Desktop and other MCP clients. Exposes GIMP's full PyGObject API for AI-powered image manipulation.
    286
    GPL 3.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that allows LLMs to control GIMP programmatically, including images, layers, selections, text, transforms, filters, and arbitrary Script-Fu code.
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables scripted image editing with GIMP 3, including cropping, resizing, aspect-ratio fitting, dimension-spec validation, batch processing, and live control of a running GIMP instance.
    18
    1
    MIT
  • A
    license
    B
    quality
    B
    maintenance
    Enables AI agents to operate GIMP 3 end-to-end: open and inspect images, call every PDB procedure, apply GEGL filters destructively or as layer effects, measure pixels, render before/after/diff comparisons, cut out subjects with AI segmentation, and run multi-step recipes across folders.
    32
    92 PyPI
    5
    Apache 2.0