Skip to main content
Glama

Photoshop-MCP-IMT + SKILLS — Photoshop for AI agents

Photoshop-MCP-IMT + SKILLS — Photoshop for AI agents, with two ways in

Let an AI agent (Claude Desktop, Cursor, ChatGPT or any MCP-compatible client) drive a running Adobe Photoshop: documents, layers, text, masks, selections, filters, adjustments, Smart Objects, artboards, generative tools, export — from natural language.

Every Adobe UI language · a large skills library · built for generative features. Photoshop-MCP-IMT works with every UI language Adobe ships, comes with a large skills library and is built for Adobe's generative features — Generative Fill, Generative Expand, Generative Upscale, text to image, Firefly and partner models, generative credits.

Two parts, made to work together:

  • The MCP server — 135 tools behind a 10-tool facade, a second transport inside Photoshop for the moments a dialog blocks scripting, honest errors, no telemetry.

  • The skill (skills/ps, also served by the ps_skill tool, so it works in any client) — how to drive Photoshop safely, where scripting ends, and how to use Photoshop's own AI tools: Generative Fill / Expand / Remove, Generate Image and Background, partner models and their credits, reference images, Prompt to edit, Harmonize, Generative Upscale, the Remove tool, AI Assistant — plus the retouch, colour, selection and batch recipes that combine them, and the gotchas.

Built by Immersive Media Technologies. A fork of alisaitteke/photoshop-mcp (merged through 1.7.27) with a second transport, a small tool surface, honest errors and no telemetry.

macOS and Windows · Photoshop 2024–2026 · Node.js 18+ (we run 26). macOS is what we run every day (Photoshop 2026, 27.9–27.10); the Windows transport (ExtendScript through COM, with the UTF-16 result fix and a retry on the COM «busy» error) passes the same live sweep on Windows 11 with Photoshop 2026 — reports from Windows users are still welcome.

CAUTION

This tool edits real Photoshop documents and sends document contents (names, layer structure, text, rendered previews) to the AI service you use. Start with a copy, check your AI provider's data policy for NDA work, and keepps_execute_script and ps_uxp script (arbitrary code inside Photoshop) behind your agent's permission policy.

Why this one

Most Photoshop MCP servers stop at «the AI can run a script». Two things break that in daily use: Photoshop goes modal (a dialog, a progress bar, a tool in search mode) and every script call hangs until a timeout; and the agent drowns in a hundred tool definitions. This fork keeps a second transport inside Photoshop (UXP) for exactly those moments, shows the agent 10 tools instead of 135, and tells it the truth when something cannot be done.

Built for localized Photoshop, not just English. Most Photoshop MCP servers read Photoshop's English messages and names — on a German, Japanese or Russian install their error handling and layer lookups break. Photoshop-MCP-IMT classifies errors by Photoshop's error numbers and finds the Background layer, fonts and actions without localized names, so it behaves the same on every UI language Photoshop ships — verified live.

Photoshop-MCP-IMT (this repo)

alisaitteke/photoshop-mcp

mikechambers/adb-mcp

dcc-mcp/dcc-mcp-photoshop

Talks to Photoshop via

ExtendScript (osascript / COM) and a UXP panel plugin — chosen per call, UXP as fallback or first (PS_MCP_UXP_PREFER=1)

ExtendScript via AppleScript / COM (we are a fork)

UXP plugin → separate WebSocket proxy (Python) → MCP server

UXP plugin → Rust broker (adobepy) → Python MCP server

When Photoshop is modal

photoshop_busy in 4 s with an instruction for the user, 8 s hold; reads / save / export continue through UXP (via: uxp)

30 s timeout → extendscript_timeout, retry ping

—

UXP only, so unaffected — but no ExtendScript DOM at all

Tool surface

135 tools registered, 10 visible (ps_catalog / ps_do / ps_batch …) — ~900 tokens of definitions per turn instead of ~25 K; every tool reachable through ps_do

118–122 tools, all visible (photoshop_* + 16 recipes)

«a subset of functionality» per app, low-level tools (proof of concept)

40+ typed tools in 8 skill packages

Headless corner-pin

photoshop_distort_layer: four corners → custom warp solved for the homography; verified that Trnf + quadrilateral is silently ignored in Photoshop 2026 (12 combinations probed)

—

—

—

Telemetry

none — analytics module is a no-op, feedback nudge removed, server sends nothing

anonymous analytics on by default (opt-out), product-feedback nudge via photoshop_ping

—

—

Undo

recipes = one history state (upstream); photoshop_busy / command_unavailable / extendscript_timeout / scratch_disk_full tell the agent why instead of a generic timeout

recipes = one history state; extendscript_timeout, scratch_disk_full

—

staged install with --dry-run / receipts

Install

one click: .mcpb for Claude Desktop (no Node needed), «Add to Cursor» button, npx for any other client; install.sh / install.ps1 with a live self-test that write the client configs; UXP plugin as .ccx, UXP Developer Tools or a manual layout — every path documented with its failure modes

npx -y @alisaitteke/photoshop-mcp; UXP plugin for Neural Filters only

Python 3 + Node + UXP Developer Tools + proxy process

pip install or binaries; Rust broker

Verified on

Photoshop 2026 (27.9–27.10), macOS, UXP 9.4.1 — live sweep of every tool: 193 pass / 0 fail / 11 environment skips (2026-10-01); Windows 11 (ARM) + Photoshop 2026 — same sweep, 193 / 0 / 11 (2026-10-04)

Windows + macOS

Photoshop 26+, macOS + Windows

Windows, Linux, macOS

UI language

every UI language Photoshop ships — errors classified by error numbers, not localized messages; the Background layer, fonts (PostScript name) and actions found without localized names; verified live

License

Apache-2.0 for our work (attribution through NOTICE); upstream code stays MIT

MIT

MIT

MIT

Facts about other projects are from their READMEs and repository metadata on GitHub on 2026-10-01 (adb-mcp: 716 stars, last push 2026-07-08, «proof of concept»; dcc-mcp-photoshop: v0.2.0; alisaitteke/photoshop-mcp: 1.7.27 of 2026-09-30); corrections welcome.

Related MCP server: Illustrator AI MCP Server

What you can ask for

  • "Open poster.psd, put the client's logo on the billboard in perspective — corners at (412,88), (1388,140), (1370,690), (430,655) — and keep it editable."

  • "Replace the sky with this dusk one (sky.jpg), then export a 2000-px JPEG for review."

  • "Split this layout into Instagram, X and Story artboards and export each as PNG."

  • "Set the headline to Inter Bold 96 pt, tracking −20, only the word SALE in red."

  • "Build a frequency-separation stack at 6 px — I'll paint the Low / High layers myself."

  • "Photoshop is showing a dialog — tell me what is open and save the document anyway." (the save goes through the UXP bridge)

The agent combines the operations itself through ps_do, checking ps_get_state / ps_get_layers between steps and verifying with ps_export_frame (a PNG of the current state).

The skill

skills/ps/SKILL.md is a short router the agent reads first (ps_skill with no arguments); it points to the one reference the task needs (ps_skill {doc}):

SKILL.md

the tools, the order of work (state → backup → operate → verify by values, then by frame), addressing (active document and layer, the Background layer by flag, coordinates, selections as state, localized Photoshop, modal Photoshop) and a table of what scripts cannot do in Photoshop with the reference for each.

references/generative.md

Generative Fill / Expand / Remove, Generate Image and Background, the partner models (Gemini, FLUX, GPT Image) and what each costs, reference images, Prompt to edit, Markup, Enhance Detail — what is scripted and what stays in the UI.

references/retouch.md

the Remove tool (credit-free) and Find distractions, Harmonize, Generative Upscale (Firefly, Topaz), AI Sharpen / Denoise, Neural Filters through the UXP bridge.

references/selection-masking.md

selection and mask operations, Select Subject, the remove-background recipe, selection shape as a prompt, Quick Mask strength, Sky Replacement.

references/color-retouch.md

frequency separation, dodge & burn, portrait enhancement, curves, LUTs and grades, layer styles, type — which recipe does what and how to hand the brush work to the user.

references/batch-export.md

CSV → cards, watermarks, mockups, social variants, carousels, artboards, web export — inputs, outputs and where the files land.

references/ai-assistant.md

the AI Assistant (Photoshop Beta), Firefly Boards, Actions, and the hand-over pattern for UI-only steps.

references/combos.md

eleven jobs that combine tools: product on a new background, a billboard mockup in perspective, portrait retouch, a social set from one layout, restoring a photo, a composite that matches light.

references/gotchas.md

modal Photoshop and photoshop_busy, the UXP bridge, history and what undo cannot revert, credits and the output-size cap, localized names, Windows.

Clients with their own skill support can load the folder directly (e.g. copy skills/ps into ~/.claude/skills/).

Install

Requirements: Adobe Photoshop 2024+ running on this computer (2026 verified), macOS or Windows — platform specifics are in the two sub-sections below the table. Pick the route for your client:

Client

Route

What you need

Claude Desktop

download photoshop-mcp-imt.mcpb, double-click it, click Install (Windows: if the file opens with an app picker instead, drag the .mcpb onto Settings → Extensions) — the settings dialog has the switches (compact tool surface, UXP bridge)

nothing else: Claude Desktop brings its own Node.js

Cursor

Add to Cursor — one click: Cursor opens and writes the config (or put the snippet below into ~/.cursor/mcp.json).

Node.js 18+ (npx fetches the package)

Google Antigravity

Settings → Customizations → Installed MCP Servers → View raw config (or type /mcp in the prompt panel) and add the photoshop entry from the snippet below to ~/.gemini/config/mcp_config.json; install.sh / install.ps1 write it for you

Node.js 18+

ChatGPT and other clients that take only remote servers

one command on the Photoshop machine — npx -p @immersive-media-technologies/photoshop-mcp-imt photoshop-mcp-imt-chatgpt — starts the server behind a Streamable-HTTP gateway and a tunnel, and prints the public URL to paste into ChatGPT → Settings → Connectors → Create (developer mode, authentication: none). Photoshop stays on your machine; the tunnel is your door — whoever knows the URL can drive Photoshop while it runs, so stop it (Ctrl+C) after the session

Node.js 18+ and a tunnel tool: cloudflared (no account; brew install cloudflared / winget install Cloudflare.cloudflared) or ngrok (free account)

Any MCP client with a JSON config

the snippet below in its mcpServers

Node.js 18+

{
  "mcpServers": {
    "photoshop": {
      "command": "npx",
      "args": ["-y", "@immersive-media-technologies/photoshop-mcp-imt"],
      "env": { "PS_MCP_FACADE": "1", "PS_MCP_UXP": "1" }
    }
  }
}

macOS

Verified daily (Photoshop 2026, 27.9–27.10). The server drives Photoshop through AppleScript; the first call asks for the Automation permission (System Settings → Privacy & Security → Automation; AppleScript error −1743 means it was denied). From source, with a live self-test — the route we run ourselves:

git clone https://github.com/Immersive-Media-Technologies/photoshop-mcp-imt.git
cd photoshop-mcp-imt && ./install.sh

The script checks Photoshop and Node, builds the server and the UXP plugin, pings the running Photoshop through the real transport, and — after asking — writes the entry into Claude Desktop's, Cursor's and Google Antigravity's config files (backing them up first). --no-config only prints the snippet; --yes skips the questions.

Windows

Verified on Windows 11 with Photoshop 2026 (same live sweep as macOS: 193 / 0 / 11). The server talks to Photoshop through COM (cscript + a VBScript shim, results decoded as UTF-16); the bridge retries the transient COM «busy» error (PSMCP_BUSY_RETRY_MS, default 2000 ms). Set PHOTOSHOP_PATH when Photoshop is not under C:\Program Files\Adobe.

  • Claude Desktop: the .mcpb has no file association on Windows — if a double-click shows an app picker, drag the file onto Settings → Extensions instead.

  • From source: .\install.ps1 (same steps as install.sh; if scripts are blocked: powershell -ExecutionPolicy Bypass -File .\install.ps1). Node.js 18+ from nodejs.org; Git for Windows or MinGit.

  • UXP bridge: on Windows x64 install the .ccx as on macOS. On Windows on ARM Photoshop has no Plugins menu and loads no third-party UXP plugins at all (Adobe has not enabled the plugin infrastructure there yet) — the server works without the bridge.

Variable

Default

Meaning

PS_MCP_FACADE

off

1 / true → the client sees the 10 ps_* tools only; everything else through ps_do

PS_MCP_UXP

off

1 / true → start the bridge server for the UXP plugin (127.0.0.1:38452) and register ps_uxp

PS_MCP_UXP_PREFER

off

1 / true → UXP first for state / layers / save / export, ExtendScript second

PS_MCP_UXP_TOKEN_FILE

~/.ps-mcp-imt/uxp-bridge.token

shared secret the plugin must send (X-PS-MCP-Bridge-Token); created 0600 on first start

PHOTOSHOP_UXP_BRIDGE_PORT

38452

bridge port

PS_MCP_READ_TIMEOUT_MS

8000

ExtendScript timeout for read-only tools (fast fallback to UXP when Photoshop is modal)

PHOTOSHOP_SCRIPT_TIMEOUT

30000

ExtendScript timeout for everything else; timeout_ms on ps_execute_script overrides per call

PHOTOSHOP_PATH

auto-detect

path to the Photoshop app / executable

LOG_LEVEL

1

0 debug · 1 info · 2 warn · 3 error (stderr)

The UXP bridge (second transport)

A 10-KB panel plugin, Photoshop-MCP-IMT Bridge (uxp-plugin/, id llc.imt.ps-mcp-bridge), lives inside Photoshop and polls the server. It runs state, layers, batchplay, eval_js, export_png, save and neural_filter inside core.executeAsModal, so it answers while ExtendScript is blocked. Install one of three ways, in this order of convenience:

  1. Double-click dist/uxp/ps-mcp-imt-bridge.ccx (Creative Cloud). If Creative Cloud says «Plugin Not Compatible» — it does when Photoshop is missing from its installed-apps list — use 2 or 3.

  2. UXP Developer Tools → Add Plugin → uxp-plugin/manifest.json → Load.

  3. Manual layout into Adobe's UXP plugin folder plus one entry in PluginsInfo/v1/PS.json — exact paths and the JSON line in docs/development.md.

Then Photoshop → Plugins → Photoshop-MCP-IMT Bridge; leave the panel in your workspace so the plugin loads with Photoshop. The port is protected by a shared-secret file the server creates on first start and the plugin reads (always at the default path, ~/.ps-mcp-imt/uxp-bridge.token); a request without it gets 401, /health is open and reveals nothing. Several MCP clients at once (Claude Desktop, Cursor, …) share one bridge: the first server owns the port, the others relay to it. Honest about the boundary: the file is readable by any process of your user account (like an .env) — it protects against other users, sandboxes and a stray client on the port, not against malware running as you.

Tools

With PS_MCP_FACADE=1 the agent sees ten tools:

Tool

What it does

ps_catalog(category?)

categories with counts and operation names; with a category — every operation and its parameters

ps_do(operation, args)

run any registered operation by name (create_text_layer, distort_layer, recipe_remove_background …)

ps_batch(ops[])

several operations in order, one result per op, stops at the first error (stopOnError)

ps_get_state / ps_get_layers

document and layer state (ExtendScript, 8 s timeout, UXP fallback)

ps_save_document / ps_export_frame(path)

save (PSD / in place) and a PNG of the current state for the agent to look at — both with UXP fallback

ps_execute_script

arbitrary ExtendScript (timeout_ms per call) — gate it in your agent policy

ps_recipe(name, args)

the 16 recipes (remove background, enhance portrait, frequency separation, social variants, CSV → cards, watermark, mockup …)

ps_skill(doc?)

the Photoshop agent skill: the router, or one reference by name (generative, retouch, gotchas …)

ps_uxp(action: ping | batchplay | script) appears when the bridge is on: batchPlay descriptors and JavaScript in the UXP context (photoshop, uxp, params, await allowed).

Behind the facade: 135 tools — the 10 ps_* tools, 109 atomic photoshop_* in 21 categories (document, layer, image, smart_object, transform, filter, adjust, text, selection, mask, action, history, state, generative, neural, style, color, data, stack, export, artboard) and 16 recipes, each recipe one history state. Without the facade flag all of them are exposed directly, as in upstream. Reference: docs/available-tools.md; the fork-specific photoshop_distort_layer takes corners (four [x, y] in document pixels), mode (perspective | bilinear) and rasterize for Smart Objects.

Safety model for agents

  • One envelope for every failure: { ok: false, code, message, suggested_next_tool }. The codes that matter for an autonomous loop: photoshop_busy (Photoshop is modal — tell the user, do not retry blindly), extendscript_timeout (a script is still running — ping until it answers), scratch_disk_full, command_unavailable (the document state forbids the command — not a version problem), no_active_document, generative_credits_exhausted.

  • photoshop_ping never launches Photoshop and fails while a previous script is still running instead of reporting a healthy connection; other tools launch Photoshop when it is closed, as upstream does.

  • Gate what Cmd+Z cannot revert: ps_execute_script, ps_uxp script, close_document, save_document over the original, batch exports. Everything else is one history state.

  • Nothing leaves the machine except what your MCP client sends to its model: there is no analytics, no feedback prompt, no update check. The UXP bridge listens on 127.0.0.1 only and requires the shared-secret header.

  • Upstream's live test suite (npm run test:mcp-all) edits a scratch document in the running Photoshop; run it with no client work open.

Changes against upstream

See CHANGELOG.md (section 0.4.1) and THIRD-PARTY-NOTICES.md. In short: the UXP bridge as a second transport with a shared-secret token; the 9-tool facade; photoshop_distort_layer; photoshop_busy / command_unavailable and the 8-second read timeout; telemetry, feedback nudge, web UI, website and packaging removed. Upstream fixes are merged from alisaitteke/photoshop-mcp by topic, one at a time (currently through 1.7.27).

Release history

Each version is described on the Releases page — what the server does at that version and what the release added:

  • v1.1.2 · 2026-10-28 — descriptions everywhere: every Adobe UI language, a large skills library, built for Adobe's generative features.

  • v1.1.1 · 2026-10-28 — product name Photoshop-MCP-IMT (was PS-MCP-IMT); server name photoshop-mcp-imt like the npm package; tool counts corrected (10-tool facade with ps_skill); the MCP Registry entry also lists the npm package.

  • v1.1.0 · 2026-10-28 — the Photoshop agent skill (skills/ps, ps_skill): generative tools, partner models and credits, retouch, selection, batch, gotchas; the product becomes Photoshop-MCP-IMT + SKILLS.

  • v1.0.0 · 2026-10-28 — every Photoshop UI language (errors by number, fonts by PostScript name, actions without localized names), the Photoshop-MCP-IMT Bridge plugin, Apache-2.0.

  • v0.4.5 · 2026-10-03 — fix: Photoshop is detected automatically on the first call (no more «detect Photoshop first»).

  • v0.4.4 · 2026-10-01 — fix: the ChatGPT gateway command under npx -p.

  • v0.4.3 · 2026-10-01 — ChatGPT in one command (gateway + tunnel), client icons in Install.

  • v0.4.2 · 2026-10-01 — one-click installs: Claude Desktop extension (.mcpb), «Add to Cursor», npm package, install.sh / install.ps1 that write the client configs.

  • v0.4.1 · 2026-10-01 — first public release of the IMT fork: the full server (134 tools) on upstream 1.7.27, plus the UXP bridge, the facade, headless corner-pin and the modal-Photoshop error model.

Every change, including the upstream history 1.0.0 – 1.7.27, is in CHANGELOG.md.

License

Apache License 2.0 — © Immersive Media Technologies.

  • Free to use, modify and distribute, commercial use included.

  • Attribution is required. Every redistribution of this software or of a work derived from it must carry the notice from NOTICE: Photoshop-MCP-IMT by Immersive Media Technologies — https://github.com/Immersive-Media-Technologies.

  • No warranty.

Third-party notices (upstream MIT code): THIRD-PARTY-NOTICES.md.

Available Tools

135 tools
photoshop_adjust_brightness_contrastB

Adjust brightness and contrast of the active layer.

Users often say: fix exposure, add contrast, brighten, darken.

NameRequiredDescriptionDefault
contrastYesContrast adjustment (-100 to 100)
brightnessYesBrightness adjustment (-100 to 100)
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It identifies the target as the active layer but does not disclose whether the change is destructive or non-destructive, whether values replace or increment existing adjustments, what happens with no active layer, or what the result is. For a mutating tool this is a significant gap.

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

Conciseness5/5

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

Two short sentences with the core action front-loaded and no filler. The user-language list earns its place by helping agents map colloquial requests to this tool.

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

Completeness2/5

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

For a tool with no annotations and no output schema, the description leaves important context unstated: mutability, active-layer prerequisites/error behavior, and how to choose among the many adjustment siblings. It is a clear but minimal definition that does not fully equip an agent to invoke it correctly in all relevant scenarios.

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

Parameters3/5

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

Schema description coverage is 100%, so the parameters are already well documented with names, ranges, required flags, and a detailed document_id note. The description adds no parameter-level detail beyond restating brightness/contrast concepts, so the baseline 3 is appropriate.

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

Purpose4/5

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

States a specific verb ('Adjust') and resource ('brightness and contrast of the active layer'), making the core action clear. The user-language aliases help intent matching, though it does not explicitly distinguish itself from close siblings like photoshop_adjust_exposure or photoshop_auto_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?

The 'Users often say: fix exposure, add contrast, brighten, darken' line provides useful trigger phrases for when to use the tool. However, it gives no exclusions or alternatives, and 'fix exposure' is ambiguous given that a dedicated photoshop_adjust_exposure sibling exists.

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

photoshop_adjust_curvesA

Create a Curves adjustment layer on the active document.

Users often say: make it pop, S-curve, fix flat image, auto tone, improve contrast.

Use when: global tonal correction via a non-destructive Curves adjustment layer. Do NOT use when: stylistic cinematic grade — use photoshop_recipe_apply_color_grade.

Returns: JSON { ok, summary, details: { layer_name, preset } }. Preconditions: active document. Side effects: adds Curves adjustment layer.

NameRequiredDescriptionDefault
presetNoauto_tone (S-curve) or neutral (identity curve)auto_tone
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

A4.5/5.0
Behavior4/5

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

No annotations are provided, so the description must carry the behavioral burden. It discloses side effects ('adds Curves adjustment layer'), preconditions ('active document'), and notes the operation is non-destructive. It could be more explicit about whether it modifies existing layers, but the description adequately covers key behavioral traits.

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 with clear sections (Use when, Do NOT use when, Returns, Preconditions, Side effects). It is concise, front-loaded with the main purpose, and every sentence adds value without redundancy.

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 tool with 2 optional parameters and no output schema, the description covers all essential aspects: purpose, usage conditions, return format, preconditions, and side effects. It even provides example user intents and an explicit alternative, making it fully contextual for an agent.

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

Parameters3/5

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

Schema coverage is 100%, so both parameters (preset and document_id) are fully described in the schema. The description adds no extra parameter detail beyond what the schema provides, which aligns with the baseline of 3 for high schema coverage.

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

Purpose5/5

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

The description clearly states the action: 'Create a Curves adjustment layer on the active document.' It also lists common user intents (make it pop, S-curve, etc.) and explicitly names a sibling tool to avoid (photoshop_recipe_apply_color_grade), making its purpose distinct from other adjustment tools.

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

Usage Guidelines5/5

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

Provides explicit guidance: 'Use when: global tonal correction via a non-destructive Curves adjustment layer.' and 'Do NOT use when: stylistic cinematic grade — use photoshop_recipe_apply_color_grade.' This clearly differentiates when to choose this tool over alternatives.

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

photoshop_adjust_exposureA

Create an Exposure adjustment layer (stops, offset, gamma correction).

Users often say: fix underexposed photo, brighten by a stop, gamma fix.

Returns: JSON { ok, summary, details: { layer_name, exposure, offset, gamma } }. Preconditions: active document. Side effects: adds an Exposure adjustment layer.

NameRequiredDescriptionDefault
gammaNoGamma correction (0.01 to 9.99)
offsetNoOffset (-0.5 to 0.5)
exposureNoExposure in stops (-20 to 20)
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

A4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It explicitly states preconditions ('active document') and side effects ('adds an Exposure adjustment layer'), and it discloses the return format as a JSON object. This covers the key behavioral traits, though it does not mention whether the adjustment layer is inserted above the current selection or other fine-grained details.

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

Conciseness5/5

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

The description is compact and front-loaded: the first sentence states the action, then user phrasing, return format, preconditions, and side effects. Every sentence earns its place without redundancy or fluff.

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

Completeness4/5

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

The description is complete for a straightforward adjustment tool: it states the purpose, gives example user intents, specifies preconditions and side effects, and describes the return JSON. Given the optional parameters and clear schema, nothing essential is missing, though it does not clarify whether the layer is added above the active layer or document root.

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

Parameters3/5

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

The schema description coverage is 100%, with each parameter already described. The description adds minimal extra meaning—only the terms 'stops, offset, gamma correction' which map directly to parameter names. Since the schema already handles the semantics, the description adds little beyond that baseline.

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 action ('Create an Exposure adjustment layer') with the resource (Exposure adjustment layer) and lists its parameters (stops, offset, gamma correction). It is clear and distinct from other adjustment tools by name, but it does not explicitly contrast with sibling tools like brightness/contrast or curves, so it lacks the sibling differentiation needed for 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 Guidelines4/5

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

It provides concrete usage context by listing typical user requests ('fix underexposed photo, brighten by a stop, gamma fix'), which tells an agent when to select this tool. However, it does not mention alternatives or conditions when not to use it, so it stops short of explicit exclusion guidance.

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

photoshop_adjust_hue_saturationC

Adjust hue, saturation, and lightness of the active layer

NameRequiredDescriptionDefault
hueYesHue shift (-180 to 180)
lightnessYesLightness adjustment (-100 to 100)
saturationYesSaturation adjustment (-100 to 100)
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the burden of disclosing behavioral traits. It does identify the operation as adjusting the active layer, which is useful, but it does not mention whether the change is destructive, reversible, requires a selected layer, or can silently retarget documents. This is a significant gap for a mutation tool.

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

Conciseness4/5

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

The description is a single, efficient sentence with no filler or redundancy. It is appropriately sized for the simple operation, though it omits useful guidance that would make it more valuable.

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 plus a fully documented schema is adequate for basic invocation, but the lack of annotations, output schema, and usage alternatives leaves gaps. An agent can call the tool correctly, but may struggle to choose it over similar adjustment tools or anticipate side effects.

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

Parameters3/5

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

Schema description coverage is 100%, so the input schema already documents the meaning and ranges for hue, saturation, lightness, and document_id. The description adds no parameter-level detail beyond naming the same concepts, matching the baseline of 3.

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

Purpose4/5

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

The description uses a specific verb and resource: 'Adjust hue, saturation, and lightness of the active layer.' This clearly states what the tool does and names the target layer. However, it does not explicitly differentiate it from sibling color-adjustment tools like adjust_vibrance or adjust_brightness_contrast, so it falls short of a 5.

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

Usage Guidelines2/5

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

The description provides no guidance on when to prefer this tool over alternatives such as adjust_vibrance, adjust_brightness_contrast, or desaturate. It does not state prerequisites like requiring an active layer or explain scenarios where this tool is or is not appropriate.

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

photoshop_adjust_vibranceA

Create a Vibrance adjustment layer. Vibrance boosts muted colors while protecting skin tones.

Users often say: make colors pop (safely), boost saturation without clown look.

Returns: JSON { ok, summary, details: { layer_name, vibrance, saturation } }. Preconditions: active document. Side effects: adds a Vibrance adjustment layer.

NameRequiredDescriptionDefault
vibranceNoVibrance (-100 to 100)
saturationNoSaturation (-100 to 100)
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

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 behavioral burden. It discloses side effects ('adds a Vibrance adjustment layer') and preconditions ('active document'), and specifies the return JSON structure. This gives an agent a clear picture of the tool's non-destructive, layer-adding behavior.

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

Conciseness5/5

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

The definition is compact and front-loaded: purpose first, then user-intent mapping, then return/preconditions/side effects. Every sentence contributes useful information with no filler.

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

Completeness4/5

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

For a simple tool with optional parameters and no output schema, the description is complete: return shape, preconditions, and side effects are all stated. A small gap is the lack of explanation about what happens when no active document exists, but this is minor given the precondition is explicitly called out.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already fully documents all three parameters with ranges, defaults, and document_id behavior. The description adds no extra parameter detail, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

Description opens with a specific verb+resource: 'Create a Vibrance adjustment layer.' It defines the tool's function ('Vibrance boosts muted colors while protecting skin tones') and includes user phrasing ('make colors pop (safely), boost saturation without clown look') that clarifies intent. This clearly distinguishes it from sibling adjustment tools like photoshop_adjust_hue_saturation or photoshop_desaturate.

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

Usage Guidelines4/5

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

The description provides usage context via user language ('Users often say: make colors pop...') and states a precondition ('active document'). It does not explicitly name sibling alternatives or conditions when NOT to use this tool, which would raise the score to 5.

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

photoshop_apply_gaussian_blurA

Apply Gaussian Blur filter to the active layer

NameRequiredDescriptionDefault
radiusYesBlur radius in pixels (0.1-250)
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only names the action and target; it does not reveal whether the blur is destructive to pixels, whether it respects selections, or whether it can be undone. The document_id parameter description adds some retargeting context, but the main description lacks important side-effect transparency.

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

Conciseness5/5

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

A single, front-loaded sentence with no filler. It conveys the action and target efficiently, and is appropriately sized for a simple filter operation.

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 low-complexity tool with full parameter descriptions and no output schema, the definition is mostly sufficient to invoke correctly. The main gaps are the lack of usage differentiation and behavioral side-effect disclosure, which prevent it from being fully complete.

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

Parameters3/5

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

Schema description coverage is 100%, with both radius and document_id already documented in the schema. The main description adds no additional parameter meaning, so the baseline of 3 applies.

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

Purpose5/5

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

The description states a precise verb and object: 'Apply Gaussian Blur filter to the active layer'. It clearly identifies the operation and the target, and the filter type distinguishes it from sibling tools like apply_motion_blur and apply_smart_blur.

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

Usage Guidelines3/5

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

The description implies the tool is used when a Gaussian blur is needed on the active layer, but it does not explicitly state when to use it over alternative filters or when not to use it. There is no exclusion or prerequisite guidance, so usage context is only implied.

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

photoshop_apply_gradient_mapA

Create a Gradient Map adjustment layer (black→white by default) for duotone/B&W tonal remapping.

Users often say: duotone look, gradient map B&W, remap tones.

Returns: JSON { ok, summary, details: { layer_name, reverse } }. Preconditions: active document. Side effects: adds a Gradient Map adjustment layer.

NameRequiredDescriptionDefault
reverseNoReverse the gradient (white→black)
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

A4.2/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. It explicitly states preconditions ('active document') and side effects ('adds a Gradient Map adjustment layer'), plus the return format (JSON with ok, summary, details). This discloses the non-destructive mutation and output structure, which is sufficient for an adjustment-layer tool.

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

Conciseness5/5

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

The description is compact and well-organized: a main purpose sentence, user intent phrases, return format, preconditions, and side effects. Every line adds value and is front-loaded with the primary action. No redundant or filler text.

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 adjustment-layer tool, the description covers preconditions, side effects, and return structure. It does not mention whether the adjustment applies to the whole image or a selected layer, but since it creates a new adjustment layer, the behavior is standard. With no output schema, the explicit return format is helpful. Slightly more detail on the effect scope would push it to 5.

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

Parameters3/5

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

Schema description coverage is 100% – both 'reverse' and 'document_id' are documented in the schema. The description does not add extra meaning beyond the schema (it only mentions 'reverse' in the return details). Since the schema already explains the parameters, a baseline score of 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb and resource: 'Create a Gradient Map adjustment layer' with a clear purpose 'for duotone/B&W tonal remapping.' It also specifies the default gradient (black→white). This clearly distinguishes it from other adjustment tools like curves or photo filter.

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 'Users often say: duotone look, gradient map B&W, remap tones' provides clear contextual signals for when an agent should select this tool. It does not explicitly name alternatives or state when not to use it, but the context is strong enough to guide selection.

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

photoshop_apply_gradient_maskA

Apply a linear black-to-white gradient on the active layer mask channel (fade/blend).

Users often say: fade into background, gradient mask, blend subject, soft edge fade.

This paints on an existing layer mask — not a Gradient Fill layer. Use when: softening edges or fading a layer into the background through its mask. Do NOT use when: subject is not isolated — use photoshop_recipe_remove_background or photoshop_create_layer_mask first.

Returns: JSON { ok, summary, details: { applied, direction, angle, mask_auto_created? } }. Preconditions: active document and active layer. Creates a reveal-all mask if none exists. Side effects: modifies layer mask pixels; two history steps when mask is auto-created.

NameRequiredDescriptionDefault
end_pctNoGradient end along fade axis (0-100)
angle_degNoOverride gradient angle in degrees (optional)
directionNoGradient fade direction on the mask (default bottom_to_top)bottom_to_top
start_pctNoGradient start along fade axis (0-100)
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description carries full burden and does so thoroughly: it discloses preconditions (active document and layer), auto-creation of a reveal-all mask if none exists, and side effects (modifies mask pixels, two history steps when auto-created). It even specifies the return JSON structure, leaving no ambiguity about behavior.

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

Conciseness5/5

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

Every sentence earns its place. The core action is front-loaded, followed by user phrasing, a critical distinction (not a fill layer), usage conditions, return format, preconditions, and side effects. The structure with line breaks aids scanning and there is no filler.

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?

The description is complete for a mutation tool: it covers preconditions, side effects, return format, and even history steps. There is no output schema, but the return JSON is fully specified. All parameters are documented in the schema, and the tool's behavior is unambiguous.

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

Parameters3/5

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

Schema coverage is 100% with descriptive text for each parameter, so baseline is 3. The description adds some contextual meaning (e.g., that the gradient applies to the mask, and direction/angle appear in the return), but does not elaborate on start_pct/end_pct beyond schema. It adds marginal value, not enough to exceed baseline.

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

Purpose5/5

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

States a specific verb and resource: 'Apply a linear black-to-white gradient on the active layer mask channel'. It clearly distinguishes from a Gradient Fill layer and lists common user phrasings, making the intent unmistakable and differentiating it from siblings like photoshop_apply_gradient_map.

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

Usage Guidelines5/5

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

Explicitly provides 'Use when' and 'Do NOT use when' conditions, naming alternatives (photoshop_recipe_remove_background, photoshop_create_layer_mask) for the negative case. Also clarifies it operates on an existing mask, not a fill layer, so an agent knows when to select it.

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

photoshop_apply_high_passA

Apply the High Pass filter to the active raster layer — edge/detail extraction for sharpening workflows or frequency separation prep.

Users often say: high pass filter, sharpen edges, extract details, frequency separation high layer.

Use when: sharpening via overlay blend, detail extraction, or prepping a high-frequency layer. Do NOT use on text, Smart Objects, or the Background layer — rasterize or convert first (photoshop_rasterize_layer).

Returns: JSON { ok, summary, details: { filter, radius, context } }. Preconditions: active document; normal (raster) layer selected. Side effects: one history step.

NameRequiredDescriptionDefault
radiusYesEdge retention radius in pixels (0.1-250)
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

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 behavioral burden. It discloses preconditions (active document, normal raster layer selected) and a side effect (one history step). It also reveals the operation targets the active layer. It could go further by explicitly saying the pixel data is modified destructively and therefore undo/history is the recovery path, but the coverage is solid.

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

Conciseness5/5

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

The description is compact and front-loaded: the core action and purpose come first, followed by synonyms, usage guidance, exclusions, return format, preconditions, and side effects. Every line adds distinct value and none is redundant with the schema or annotations.

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

Completeness5/5

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

Given no annotations and no output schema, the description provides the return JSON shape, precondition requirements, unsupported layer types, and side effects. This is sufficient for an agent to invoke the tool correctly and interpret the result. The main behavior of applying the filter to the active raster layer is fully explained.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description does not add much parameter-level meaning beyond the schema, except indirectly through 'radius' appearing in the return details. The schema already documents radius range and document_id behavior, so this is adequate.

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

Purpose5/5

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

The description states a specific verb and resource: 'Apply the High Pass filter to the active raster layer.' It also gives the purpose (edge/detail extraction for sharpening or frequency separation), which clearly distinguishes it from the many other apply_* and filter tools in the sibling list. Even without naming a sibling, the intent 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 Guidelines5/5

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

It explicitly says when to use the tool: 'sharpening via overlay blend, detail extraction, or prepping a high-frequency layer.' It also gives strong negative guidance: do not use on text, Smart Objects, or the Background layer, and points to the rasterize tool as the prerequisite. This is clear routing and exclusion guidance.

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

photoshop_apply_layer_maskB

Apply (merge) the layer mask to the layer

NameRequiredDescriptionDefault
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

B3.1/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. It does not state that applying a mask is permanent/destructive, that the target layer must be active or selected, or that the operation is only reversible via undo. The word 'merge' hints at destructiveness but does not make it explicit.

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

Conciseness4/5

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

The description is brief, front-loaded, and free of filler. The parenthetical '(merge)' is useful clarification. It is efficient, though a bit too terse to carry the behavioral context needed for a destructive operation.

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

Completeness2/5

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

With no annotations and no output schema, the description leaves out important context: the operation is destructive, requires an existing mask, and affects the currently active layer. An agent would need background Photoshop knowledge or external information to invoke this safely and confidently.

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

Parameters3/5

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

The input schema has 100% coverage and fully documents the optional document_id parameter, including its role in activating the document. The tool description adds no additional parameter meaning, so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description names a specific verb ('Apply') and resource ('layer mask'), and the parenthetical '(merge)' clarifies that this is the destructive apply/merge operation rather than create, delete, or reveal. It clearly distinguishes itself from sibling tools like photoshop_create_layer_mask and photoshop_delete_layer_mask.

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

Usage Guidelines2/5

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

No guidance is given about when to use this tool versus alternatives, such as deleting a mask instead of applying it, or when a layer must already have a mask. The usage context is only weakly implied by the word 'merge'.

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

photoshop_apply_layer_styleA

Apply a layer style (drop shadow, outer glow, stroke, bevel & emboss) to the active layer via Action Manager layer effects.

Users often say: add shadow, glow effect, outline this layer, stroke, bevel, 3D button look, katmana gölge ver.

Use when: quick presentational effects on the active layer (cards, buttons, mockups, text pop). Do NOT use when: you need full custom layer-effects control — use photoshop_execute_script with a custom layerEffects descriptor.

Returns: JSON { ok, summary, details: { style, layer_name } }. Preconditions: active document with an active pixel/text layer. Side effects: sets the chosen effect on the active layer. Drop shadow uses the given angle (Use Global Light is off).

NameRequiredDescriptionDefault
redNoEffect color red (0-255)
blueNoEffect color blue (0-255)
sizeNoBlur/size in pixels (stroke width for stroke)
angleNoLight angle in degrees (drop shadow / bevel)
greenNoEffect color green (0-255)
styleNoWhich effect to applydrop_shadow
opacityNoEffect opacity (0-100)
distanceNoOffset distance in pixels (drop shadow only)
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

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 burden and does well: it states preconditions, side effects, return shape, and the Global Light behavior for drop shadow. It leaves minor ambiguity about whether existing layer styles are replaced or merged, but the disclosed side effect is clear.

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 action and uses compact labeled sections for use cases, exclusions, return, preconditions, and side effects. The user-phrase line is slightly extra but earns its place as intent-matching guidance.

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 9-parameter mutation tool with no annotations and no output schema, the description covers the key operational context: when to use, when not to use, required preconditions, side effects, return shape, and parameter-specific caveats. Nothing essential for correct invocation is missing.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents all parameters. The description adds one useful behavioral detail (drop shadow uses the given angle with Use Global Light off) but mostly restates what the schema descriptions already convey.

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

Purpose5/5

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

The first sentence names the exact action ('Apply a layer style'), specifies the target ('active layer'), and enumerates the four supported effects. It also names the sibling alternative (photoshop_execute_script) for full custom control, making the tool's scope unmistakable.

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

Usage Guidelines5/5

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

Explicit 'Use when' and 'Do NOT use when' sections give selection criteria ('quick presentational effects') and explicitly route full custom layer-effects needs to photoshop_execute_script. The natural-language user phrases further help intent matching.

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

photoshop_apply_lutA

Apply a Color Lookup (3D LUT) adjustment layer for cinematic color grading. Accepts a built-in LUT name (e.g. "Crisp_Warm.3dl", "Kodak 5218 Fuji 3510.3dl", "Moonlight.3dl") or an absolute path to a .cube/.3dl/.look file.

Users often say: cinematic grade, film look, teal and orange, apply LUT, sinematik renk.

Use when: stylistic non-destructive color grade in one step. Do NOT use when: basic tonal fixes — use photoshop_adjust_curves or photoshop_auto_levels.

Returns: JSON { ok, summary, details: { layer_name, lut, lut_source } }. Preconditions: active document. Side effects: adds a Color Lookup adjustment layer.

NameRequiredDescriptionDefault
lutYesBuilt-in LUT file name (e.g. "Crisp_Warm.3dl") or absolute path to a .cube/.3dl/.look file
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

A4.5/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses the key behavioral traits: an active document precondition, a side effect of adding a Color Lookup adjustment layer, and the non-destructive nature of the operation. It also states the return JSON shape. It does not cover failure modes or interaction with existing layers, but it covers the essentials well.

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

Conciseness5/5

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

The description is organized with clearly labeled sections (Users often say, Use when, Do NOT use when, Returns, Preconditions, Side effects), and it front-loads the core purpose. Although it is longer than the minimum, every section carries useful routing or behavioral information without 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 2-parameter tool with no output schema, the description is highly complete: it covers what the tool does, accepted input values, user intents, when to use and when not to use it, return format, preconditions, and side effects. An agent has everything necessary to invoke it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds example built-in LUT names and file extensions, but these largely mirror the schema's lut description. It does not add significant meaning for document_id beyond what the schema already states.

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 ('Apply'), a specific resource ('Color Lookup (3D LUT) adjustment layer'), and a clear purpose ('cinematic color grading'). It also enumerates example LUT names and supported file formats, making it easy to distinguish from other color/filter tools at a glance.

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

Usage Guidelines5/5

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

Explicitly provides 'Use when' (stylistic non-destructive color grade in one step) and 'Do NOT use when' (basic tonal fixes) with named alternatives (photoshop_adjust_curves or photoshop_auto_levels). It also lists natural-language user expressions, which helps an agent recognize when a user request maps to this tool.

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

photoshop_apply_motion_blurB

Apply Motion Blur filter to the active layer

NameRequiredDescriptionDefault
angleYesBlur angle in degrees (-360 to 360)
radiusYesBlur distance in pixels (1-999)
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It only states the action without disclosing side effects like layer modification being destructive, whether smart objects are handled differently, or if undo is supported. This is a significant gap for a mutation tool.

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

Conciseness5/5

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

The description is a single, efficient sentence that front-loads the core purpose. Every word is essential, with no redundancy or 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?

Given the tool's simplicity, the description adequately identifies the operation and target. However, with no annotations and no output schema, it would benefit from noting whether the filter is applied destructively or if it works on smart objects. Still, it is sufficient for basic use.

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

Parameters3/5

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

Schema description coverage is 100%, and each parameter (angle, radius, document_id) has its own description. The tool description adds no extra meaning beyond what the schema provides, so the baseline 3 applies.

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

Purpose5/5

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

The description states a specific verb ('Apply'), a precise resource ('Motion Blur filter'), and the target ('active layer'). This clearly distinguishes it from sibling blur tools like gaussian blur or smart blur by naming the exact filter type.

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

Usage Guidelines2/5

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

No guidance is given on when to use motion blur versus other filters (e.g., gaussian, smart blur) or other Photoshop tools. The description provides no context for selection or any exclusions.

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

photoshop_apply_noiseB

Apply Add Noise filter to the active layer

NameRequiredDescriptionDefault
amountYesNoise amount in percent (0.1-400)
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.
distributionNoNoise distribution typeUNIFORM
monochromaticNoApply monochromatic noise

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, but it only states the action and target. It does not disclose that the filter directly mutates the active layer's pixels, that repeated applications compound noise, or how smart objects are handled.

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

Conciseness5/5

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

A single concise sentence that front-loads the verb, filter name, and target layer. There is no fluff or 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?

The schema fully explains all parameters and the description states the active-layer target, making invocation possible. However, with no annotations or output schema, the lack of operational context like destructiveness and expected side effects leaves the definition only minimally complete.

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

Parameters3/5

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

All four parameters in the schema have descriptions, so the baseline applies. The tool description adds no parameter-level detail beyond what the schema already provides.

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

Purpose5/5

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

The description names a specific verb and resource: applying the Add Noise filter to the active layer. This clearly distinguishes it from sibling filter tools such as gaussian blur, sharpen, motion blur, and high pass.

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 about when to use this tool over other filter tools, nor any exclusions or prerequisites. The description does not mention alternatives or typical use cases, so the agent gets no selection help beyond recognizing the filter name.

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

photoshop_apply_photo_filterA

Create a Photo Filter adjustment layer (warming/cooling/custom tint with density control).

Users often say: warm it up, cool it down, add a tint, golden hour look.

Returns: JSON { ok, summary, details: { layer_name, color, density } }. Preconditions: active document. Side effects: adds a Photo Filter adjustment layer.

NameRequiredDescriptionDefault
redNoFilter color red (0-255); warming ≈ 236
blueNoFilter color blue (0-255); warming ≈ 0
greenNoFilter color green (0-255); warming ≈ 138
densityNoFilter density percent (0-100)
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.
preserve_luminosityNoPreserve luminosity (default true)

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the full behavioral disclosure burden. It explicitly states preconditions ('active document') and side effects ('adds a Photo Filter adjustment layer'), and also discloses the return JSON shape. It does not detail effects on existing layers or failure modes, but the core behavioral contract is clearly communicated.

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

Conciseness5/5

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

The description is compact and front-loaded: the core action appears first, followed by user-intent examples, then return shape, preconditions, and side effects. Every sentence earns its place with no redundant filler.

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

Completeness4/5

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

Given 6 parameters, no output schema, and no annotations, the description provides a solid foundation: it covers the return shape, preconditions, side effects, and user intent. It does not mention layer placement or non-destructive behavior, but for this tool's complexity the description is adequately complete.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds conceptual meaning by linking parameters to user intents (warming, cooling, tint, density), but it does not go beyond the schema's already-detailed parameter documentation. The description's value here is modest.

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

Purpose5/5

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

The description uses a specific verb-resource pair: 'Create a Photo Filter adjustment layer' with concrete variants (warming/cooling/custom tint with density control). It clearly distinguishes this from sibling adjustment tools by naming the exact Photoshop feature and mapping user intents like 'warm it up' or 'golden hour look' to it.

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

Usage Guidelines4/5

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

The description gives clear usage context via natural-language triggers ('Users often say: warm it up, cool it down, add a tint, golden hour look'). It does not explicitly list alternatives or when-not-to-use cases, but the intent mapping is strong enough for an agent to select this tool appropriately.

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

photoshop_apply_sharpenC

Apply Unsharp Mask (sharpen) filter to the active layer

NameRequiredDescriptionDefault
amountYesSharpening amount in percent (1-500)
radiusYesRadius in pixels (0.1-250)
thresholdNoThreshold levels (0-255)
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description must fully disclose behavior. It states 'Apply' implying mutation but doesn't mention that the operation modifies the layer destructively, requires an active layer, or has any undo implications. No side effects or prerequisites are disclosed.

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

Conciseness5/5

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

A single sentence with no extraneous content. The action and target are front-loaded, making it extremely concise and to the point.

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

Completeness2/5

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

With no annotations, no output schema, and four parameters including an optional document_id, the description is too sparse. It lacks critical context such as whether the operation works on the active layer (it does say that), what happens if no layer is selected, whether it affects smart objects differently, or any error conditions. The description is incomplete for a destructive filter operation.

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

Parameters3/5

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

Schema coverage is 100% with all parameters documented in the input schema. The description adds no additional parameter meaning beyond what the schema already provides. Baseline 3 is appropriate when the schema carries the semantic load.

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

Purpose4/5

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

The description clearly states the action: apply the Unsharp Mask filter to the active layer. It names the specific filter and target, distinguishing it from sibling filter tools like gaussian blur or noise. However, it doesn't explicitly contrast with alternatives, so it doesn't earn 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?

No guidance on when to use this filter versus other sharpening or filter tools. There are no exclusions, prerequisites, or context about appropriate scenarios. The description is purely declarative with no usage advice.

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

photoshop_apply_smart_blurA

Apply the Smart Blur filter to the active raster layer — edge-preserving blur for smoothing skin or simplifying backgrounds.

Users often say: smart blur, edge-preserving blur, smooth skin blur, blur but keep edges.

Use when: subtle smoothing that respects edges (portraits, product cleanup). Do NOT use on text, Smart Objects, or the Background layer — rasterize first (photoshop_rasterize_layer). Do NOT use when: uniform blur is enough — use photoshop_apply_gaussian_blur.

Returns: JSON { ok, summary, details: { filter, radius, threshold, mode, quality, context } }. Preconditions: active document; normal (raster) layer selected. Side effects: one history step.

NameRequiredDescriptionDefault
modeNoSmart blur mode (default: NORMAL)NORMAL
radiusYesBlur radius (0.1-100)
qualityNoBlur quality / smoothness (default: MEDIUM)MEDIUM
thresholdYesBlur threshold — higher values restrict blur to stronger edges (0.1-100)
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations provided, the description discloses preconditions (active document, normal raster layer), side effects (one history step), and return format (JSON with details). It also warns against using on certain layer types. This is comprehensive behavioral transparency.

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

Conciseness5/5

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

The description is well-structured with separate sections for purpose, aliases, usage, returns, preconditions, and side effects. Every sentence adds value, and the key information is front-loaded.

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?

The description covers all aspects needed for correct invocation: purpose, selection criteria, restrictions, return shape, preconditions, and side effects. Given the output schema is absent, the return description compensates adequately.

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

Parameters3/5

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

Input schema has 100% description coverage, so the baseline is 3. The description does not add parameter-level semantics beyond what the schema provides, but it doesn't need to.

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

Purpose5/5

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

Clearly states the tool applies the Smart Blur filter to the active raster layer, with an explicit description of its edge-preserving nature and typical use cases. It also differentiates from gaussian blur by stating when not to use this tool. The aliases help recognize user phrasing.

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

Usage Guidelines5/5

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

Provides explicit 'Use when' conditions, 'Do NOT use' exclusions (text, Smart Objects, Background) with a pointer to rasterize first, and an alternative tool for uniform blur. This fully guides tool selection.

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

photoshop_auto_contrastB

Apply auto contrast adjustment to the active layer

NameRequiredDescriptionDefault
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

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 names the operation but does not disclose whether pixel changes are destructive, whether the edit is recorded in history/undoable, how selections are treated, or what the call returns. This is an actionable but sparse disclosure for a 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?

One short sentence front-loads the operation and target with no filler. Every word earns its place, and no restructuring is needed.

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 single-parameter, no-output-schema tool, the core operation is complete enough to invoke, but the missing usage differentiation and behavioral caveats on a mutating operation prevent a higher score. It is a minimum-viable description rather than a fully contextual one.

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

Parameters3/5

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

Schema coverage is 100%, and the document_id parameter is already described with its source and purpose. The tool description adds no additional parameter-level detail, so the schema is doing the heavy lifting and the baseline 3 applies.

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

Purpose5/5

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

The description uses a specific verb ('apply') and a specific adjustment ('auto contrast') scoped to 'the active layer', leaving no ambiguity about what the tool operates on. It is immediately distinguishable from sibling tools like photoshop_auto_levels by naming the exact adjustment, even though it does not explicitly call out alternatives.

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 photoshop_auto_levels, photoshop_adjust_brightness_contrast, or other adjustment tools, and no prerequisites or selection requirements are mentioned. The only context is the target 'active layer', which comes from the operation itself rather than explicit usage direction.

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

photoshop_auto_levelsB

Apply auto levels adjustment to the active layer.

Users often say: fix flat image, auto tone, make it pop (mild).

NameRequiredDescriptionDefault
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

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 must disclose behavioral implications, but it only restates the operation and target layer. It does not say that pixels are modified, that the adjustment may be destructive without undo, or how it differs from auto contrast, which is important safety information for an image-edit 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?

Two short sentences front-load the core action, then add practical user-phrase triggers. No wasted words, and the quoted phrases earn their place by aiding tool selection.

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

Completeness4/5

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

For a one-parameter tool with no output schema, the description covers the target (active layer), the operation, and common user phrasings. It is slightly incomplete only in not clarifying side effects or when to prefer auto contrast.

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

Parameters3/5

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

Schema coverage is 100% and the single optional document_id parameter is already documented in the input schema. The description adds no parameter-level detail beyond that, matching the baseline for a fully covered 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 ('Apply') and resource ('auto levels adjustment') and targets the active layer. It is clear but does not explicitly differentiate from sibling tools like photoshop_auto_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 Guidelines3/5

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

It provides natural-language triggers ('fix flat image, auto tone, make it pop (mild)') that help an agent recognize when a user wants this tool. However, it gives no exclusions or explicit comparison to alternatives such as auto contrast or brightness/contrast, leaving selection partly to inference.

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

photoshop_close_documentA

Close a Photoshop document tab. Defaults to the active document; pass document_id to close a specific open file.

Use when: the user is done with a file, or when cleaning up extra open tabs after photoshop_list_documents. Do NOT use when: you only need to switch tabs — use photoshop_set_active_document.

Returns: confirmation that the document closed. Preconditions: target document is open. Side effects: closes that tab; save=true writes unsaved changes first.

NameRequiredDescriptionDefault
saveNoWhether to save changes before closing
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure, and it succeeds. It states preconditions (target document open), side effects (closes the tab), the save behavior ('save=true writes unsaved changes first'), and the return value. It also reveals a nuanced behavior: passing document_id activates the document before closing to prevent UI tab-switch retargeting.

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 uses five short, labeled sections (use when, do NOT use, returns, preconditions, side effects), front-loading the core action and default behavior in the first sentence. Every sentence earns its place; there is no filler or repetition of structured fields.

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 simple mutation tool with two optional parameters and no output schema, the description covers everything an agent needs to call it correctly: what it does, when to use it, what to avoid, prerequisites, side effects, and return. The sibling tool list provides further disambiguation, and the description resolves the most likely confusion points directly.

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 already documents both parameters with 100% coverage, so the baseline is 3. The description adds value by explaining the default active-document behavior not fully in the schema, and by connecting save=true to the side effect of writing unsaved changes. It clarifies the document_id parameter's role in closing a specific open file, complementing the schema's activation detail.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Close a Photoshop document tab.' It clarifies the default target (active document) and the optional document_id override, and explicitly distinguishes itself from photoshop_set_active_document. An agent can confidently tell this apart from the closely related save and tab-switching tools.

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

Usage Guidelines5/5

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

The description provides explicit 'Use when' and 'Do NOT use when' guidance, including the exact alternative (photoshop_set_active_document) for the non-closing case. It also gives a practical cleanup scenario after photoshop_list_documents. This leaves no ambiguity about when to invoke the tool.

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

photoshop_content_aware_fillA

Fill the current pixel selection using Content-Aware Fill.

Users often say: remove distraction, erase object, content aware fill, inpaint selection.

Use when: a rectangular or other selection covers the area to remove/replace. Do NOT use when: no selection exists — use photoshop_select_rectangle first. Do NOT use when: generative remove is requested — not scriptable; use this fill or manual touch-up.

Returns: JSON { ok, summary, details: { filled } }. Preconditions: active document and active pixel selection. Side effects: modifies pixels inside selection; deselects afterward.

NameRequiredDescriptionDefault
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations provided, the description carries the full behavioral burden and does so thoroughly. It states preconditions (active document and active pixel selection), side effects (modifies pixels inside selection, deselects afterward), and return shape (JSON with ok, summary, details). This is more transparent than most descriptions.

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 core action, then provides user phrasing, usage conditions, exclusions, return format, preconditions, and side effects in a compact, scannable structure. 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.

Completeness5/5

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

For a one-parameter tool with no output schema, the description covers everything an agent needs: preconditions, side effects, return value, when to use it, and when to use a different tool. No critical operational context is missing.

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

Parameters3/5

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

Schema coverage is 100% and the only parameter, document_id, is fully described in the input schema itself. The description adds no parameter-specific detail, but with full schema coverage the baseline of 3 is appropriate; nothing is missing.

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

Purpose5/5

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

The description clearly states the action ('Fill the current pixel selection using Content-Aware Fill') with a specific verb and resource, and is differentiated from related tools by explicitly naming when it should not be used (generative remove). It also lists common user phrasings, making it easy for an agent to match intent.

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

Usage Guidelines5/5

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

The description gives explicit when-to-use guidance ('a rectangular or other selection covers the area'), explicit when-not-to-use conditions (no selection, generative remove requested), and names the alternative tool (photoshop_select_rectangle) when a selection is missing. This is model guidance for tool selection.

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

photoshop_contract_selectionA

Contract (shrink) the active pixel selection inward by a pixel amount.

Use when: tightening a loose selection or trimming halo after expand. Do NOT use when: no selection exists — create one first.

Returns: JSON { ok, summary, details: { pixels, bounds?, context } }. Preconditions: active document and active pixel selection. Side effects: modifies selection.

NameRequiredDescriptionDefault
pixelsYesPixels to contract by (minimum 1)
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

A4.3/5.0
Behavior4/5

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

No annotations are present, so the description carries the behavioral disclosure burden. It compensates well by stating preconditions (active document and active pixel selection), side effects (modifies selection), and the return shape. It doesn't describe failure behavior or reversibility, but the core mutation semantics are disclosed.

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

Conciseness5/5

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

The description is compact and well-structured, with scannable sections for operation, usage, returns, preconditions, and side effects. Every sentence adds useful information and there is no filler.

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 2-parameter selection mutation with no annotations and no output schema, the description covers preconditions, side effects, return format, and use context. An agent has enough information to call it correctly and interpret the result.

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

Parameters3/5

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

Schema description coverage is 100%, and both parameters already have clear descriptions in the schema. The description adds only the phrase 'pixel amount' and reuses 'pixels' in the return shape, so this is the baseline-3 case where the schema does the heavy lifting.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Contract (shrink) the active pixel selection inward by a pixel amount.' This unambiguously identifies the operation and distinguishes it from sibling selection tools like expand, feather, or select_rectangle.

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

Usage Guidelines4/5

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

The description gives explicit 'Use when' contexts (tightening a loose selection, trimming halo after expand) and a clear 'Do NOT use when' precondition (no selection exists). It stops short of naming an alternative tool such as photoshop_expand_selection, so it doesn't fully satisfy the alternatives criterion.

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

photoshop_convert_to_smart_objectA

Convert the active layer (or a named layer) to an embedded Smart Object.

Users often say: convert to smart object, make smart layer, embed layer.

Use when: non-destructive transforms/filters are needed on a raster or shape layer. Do NOT use when: the layer is already a Smart Object — returns success with already_smart_object. Do NOT use on background layers — unlock or duplicate first.

Returns: JSON { ok, summary, details: { layer_name, kind, already_smart_object? } }. Preconditions: active document; target layer must be selected or named. Side effects: one history step.

NameRequiredDescriptionDefault
layer_nameNoOptional exact layer name (recursive search). Default: active layer.
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations, the description carries the full behavioral burden and meets it: it discloses the return JSON shape, preconditions (active document; layer selected or named), side effects (one history step), and the idempotent edge case (already_smart_object success flag). This is unusually complete behavioral disclosure for a 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.

Conciseness5/5

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

Well-structured with labeled sections that each earn their place: core purpose first, then aliases, usage rules, return format, and preconditions/side effects. Zero redundancy; the 'Users often say' line adds matching value rather than padding.

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

Completeness4/5

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

For a mutation tool with no annotations and no output schema, the description compensates well by specifying the return JSON and side effects. The only gaps are error behavior for the excluded cases (background layer, layer not found when layer_name is given), which are implied but not explicitly stated.

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

Parameters3/5

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

Schema coverage is 100%, so both parameters (layer_name, document_id) are already fully described in the input schema, establishing the baseline of 3. The description adds only marginal param value — mapping 'named layer' to layer_name and reiterating the selection precondition — without introducing new parameter semantics beyond the schema.

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

Purpose5/5

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

States a specific verb+resource ('Convert the active layer (or a named layer) to an embedded Smart Object') and the qualifier 'embedded' distinguishes it from the sibling photoshop_create_smart_object_via_copy. The explicit exclusion 'Do NOT use when: the layer is already a Smart Object' further separates it from edit/replace smart-object tools. Natural-language aliases aid agent intent matching.

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 explicit when-to-use ('non-destructive transforms/filters are needed on a raster or shape layer') and two explicit when-not-to-use conditions (already a Smart Object; background layers). However, it never names the alternative tools (e.g., photoshop_edit_smart_object_contents or photoshop_rasterize_layer), stopping short of full alternative routing.

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

photoshop_create_artboardA

Create a Photoshop artboard (AM artboardSection) at an explicit origin or placed to the right of existing artboards.

Users often say: add iPhone frame, new artboard, multi-screen layout, 画板 ekle.

Use when: building a multi-device / multi-screen document. First artboard converts a regular canvas into an artboard document. Do NOT use when: you only need a new document tab — use photoshop_create_document.

Returns: JSON { ok, summary, details: { artboard, count } }. Preconditions: active document. Side effects: adds an artboard layer group.

NameRequiredDescriptionDefault
topNoTop origin in pixels (default: aligned with existing artboards, or 0)
leftNoLeft origin in pixels (default: 32px to the right of existing artboards, or 0)
nameNoArtboard name (default Artboard)
widthYesArtboard width in pixels
heightYesArtboard height in pixels
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and it does well: states preconditions (active document), side effects (adds an artboard layer group), and a key conversion behavior (first artboard turns a regular canvas into an artboard document). It also specifies the return shape. It stops short of describing error behavior or reversibility, but covers the essential traits.

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

Conciseness4/5

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

The description is well-structured with line breaks, front-loaded summary, and clearly separated sections for examples, usage, returns, and side effects. It is slightly verbose with example phrases, but each section contributes useful operational context.

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

Completeness4/5

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

For a tool with no annotations and no output schema, the description covers the important operational needs: what it creates, when to use it, what it returns, preconditions, and side effects. It could add explicit failure modes (e.g., no active document), but the given context is enough to invoke 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 100%, so baseline is 3. The description does not add significant parameter-level meaning beyond the schema; it restates origin defaults and document_id behavior that the schema already documents. No compensation needed, but also no extra semantic value.

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

Purpose5/5

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

The description opens with a specific verb and resource ('Create a Photoshop artboard') and explicitly scopes the behavior (explicit origin or to the right of existing artboards). It names the sibling tool it is not (photoshop_create_document), so an agent can disambiguate without opening schemas.

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

Usage Guidelines5/5

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

Provides explicit 'Use when' and 'Do NOT use when' guidance, and names the exact alternative (photoshop_create_document) for the excluded case. Also gives user-phrase examples, helping map natural language to this tool.

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

photoshop_create_clipping_maskA

Create a clipping mask on the active layer (or a named layer).

Users often say: clip to layer below, clipping mask, clip this layer, mask to shape below.

Use when: the active layer should be visible only where the layer directly below it has opaque pixels. Do NOT use when: the layer is already clipped — returns success with already_clipping. Do NOT use when: the layer is the bottom-most layer — there is no base layer to clip into.

Returns: JSON { ok, summary, details: { layer_name, is_clipping, already_clipping? } }. Preconditions: active document; target layer must sit directly above the base layer below it in the same group/stack. Side effects: one history step (groupEvent).

NameRequiredDescriptionDefault
layer_nameNoOptional exact layer name (recursive search). Default: active layer.
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations provided, the description carries full responsibility for behavioral disclosure. It covers preconditions, the already_clipping success case, return JSON shape, and side effects (one history step). This is thorough and gives an agent a realistic model of what will happen.

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 comes first, followed by user phrasings, usage conditions, return shape, preconditions, and side effects. Every section contributes actionable information without redundant filler.

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 tool with two optional parameters and no output schema, the description provides all necessary context: what the tool does, when to use it, when not to use it, preconditions, and the exact return contract. There is no obvious missing information an agent would need to call it successfully.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters are already documented in the input schema. The description adds little beyond what the schema provides, which matches the baseline of 3. The mention of 'named layer' reinforces the layer_name parameter but does not meaningfully extend it.

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

Purpose5/5

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

The description starts with a specific verb and resource: 'Create a clipping mask on the active layer (or a named layer).' It also includes common user phrasings that help disambiguate intent, and the behavior is clearly distinct from siblings like photoshop_create_layer_mask and photoshop_release_clipping_mask.

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

Usage Guidelines4/5

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

The description provides explicit 'Use when' and 'Do NOT use when' conditions, including edge cases like already-clipped layers and bottom-most layers. It does not name a specific alternative tool, but the contraindications are clear enough to guide an agent away from misuse.

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

photoshop_create_documentA

Create a new empty Photoshop document with specified dimensions and color mode.

Use when: starting a design from scratch or no document is open. Do NOT use when: opening an existing file — use photoshop_open_image.

Returns: created document id and name. Preconditions: none. Side effects: creates a new document and makes it active.

NameRequiredDescriptionDefault
widthYesDocument width in pixels
heightYesDocument height in pixels
colorModeNoColor mode (RGB, CMYK, Grayscale)RGB
resolutionNoDocument resolution in DPI (default: 72)
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are present, so the description carries the full burden. It clearly discloses the side effect ('makes it active'), returns (id and name), and preconditions (none). This goes well beyond a generic 'creates a document'; a small gap is that it doesn't explicitly state what happens to any currently open document, though 'makes it active' implies the new one becomes the active tab.

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

Conciseness5/5

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

The description is compact and well-structured: a one-sentence purpose, followed by labeled 'Use when', 'Do NOT use when', 'Returns', 'Preconditions', and 'Side effects' lines. Every sentence earns its place, and the most important info is front-loaded.

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

Completeness4/5

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

For a tool with no output schema and no annotations, the description covers the essential context: usage, returns, side effects. The one oddity is the `document_id` parameter, which is not mentioned in the description; while the schema explains it, the description could briefly note that it only activates an existing document before creation. This is a minor gap, so a 4 is appropriate.

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

Parameters3/5

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

The schema has 100% parameter description coverage, so the baseline is 3. The description itself adds no per-parameter detail beyond what the schema already provides, so it neither improves nor degrades the baseline.

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

Purpose5/5

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

The description states a specific action ('Create a new empty Photoshop document') with explicit scope (dimensions and color mode) and differentiates from the sibling `photoshop_open_image` by naming when NOT to use it. This makes the tool's purpose instantly distinguishable from its siblings.

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

Usage Guidelines5/5

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

Explicit 'Use when' and 'Do NOT use when' guidance is provided, including a direct pointer to the alternative tool (`photoshop_open_image`) for opening existing files. No guesswork is left for the agent.

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

photoshop_create_layerA

Create a new empty layer above the active layer.

Use when: user needs a blank layer for painting, fills, or stacking content. Do NOT use when: adding text — use photoshop_create_text_layer.

Returns: created layer name and context. Preconditions: active document. Side effects: adds layer to history.

NameRequiredDescriptionDefault
nameNoName for the new layer (optional)
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

A4.5/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It covers the side effect ('adds layer to history'), the precondition ('active document'), and the return value ('created layer name and context'). This is strong, though it does not delve into failure modes or what happens if no document 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.

Conciseness5/5

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

The description is compact and well-structured, with the core action front-loaded followed by crisp 'Use when', 'Do NOT use when', 'Returns', 'Preconditions', and 'Side effects' sections. Every sentence adds useful information without redundancy.

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

Completeness5/5

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

Given that there is no output schema and no annotations, this description provides a complete operational picture: what the tool creates, where, when to use it, what it requires, what it returns, and what side effects it has. An agent has enough context to invoke it correctly in most scenarios.

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

Parameters3/5

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

Schema description coverage is 100%, and the parameter descriptions already explain 'name' and 'document_id' thoroughly, including the document activation behavior. The tool description adds no parameter-specific semantics, so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Create a new empty layer above the active layer,' which clearly states what the tool does and where the layer appears. It also distinguishes itself from the sibling photoshop_create_text_layer by naming it and stating the difference. No ambiguity remains about the tool's purpose.

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

Usage Guidelines5/5

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

The description explicitly states when to use the tool ('when user needs a blank layer for painting, fills, or stacking content') and when not to use it ('adding text — use photoshop_create_text_layer'). This gives an agent direct routing guidance without needing to infer from context.

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

photoshop_create_layer_maskA

Create a layer mask on the active layer from the current selection (reveal selection).

Users often say: mask this, hide the background, non-destructive cutout (after selection).

Use when: non-destructive hide/show after a selection exists. Do NOT use when: no selection exists — create selection first or use remove_background recipe.

Returns: maskCreated confirmation. Preconditions: active document and active selection. Side effects: adds mask to active layer.

NameRequiredDescriptionDefault
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

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 behavioral burden. It discloses preconditions ('active document and active selection'), side effects ('adds mask to active layer'), and the return signal ('maskCreated confirmation'), while also noting the operation is non-destructive. It could go further by describing failure behavior when preconditions are unmet, but the key behavioral traits are present.

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

Conciseness5/5

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

The description is compact, front-loaded with the core definition, and each subsequent line adds distinct value: user phrasing, usage boundaries, returns, preconditions, and side effects. There is no redundant filler.

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 simple tool with one optional parameter and no output schema, this description covers everything an agent needs to invoke it correctly: what it does, when to use/avoid it, required preconditions, side effects, and the confirmation return. The alternative recipe reference also provides broader context.

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

Parameters3/5

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

Schema description coverage is 100%, and the single optional document_id parameter is already well documented in the schema. The description does not repeat parameter details, which is appropriate; it adds minor context by mentioning 'active document' as a precondition, but the schema already does the substantive work.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Create a layer mask on the active layer from the current selection (reveal selection).' It distinguishes the operation from siblings by emphasizing 'layer mask' and 'reveal selection,' and user phrasing like 'mask this' and 'non-destructive cutout' reinforces what the tool does without ambiguity.

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

Usage Guidelines5/5

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

Explicit 'Use when' and 'Do NOT use when' guidance is provided, including a concrete alternative ('create selection first or use remove_background recipe'). This makes the selection condition unmistakable and routes agents away from invalid calls.

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

photoshop_create_smart_object_via_copyA

Create an independent Smart Object via Copy — unlinked duplicate with its own embedded contents.

Users often say: new smart object via copy, independent smart copy, duplicate smart object separately.

Use when: you need a second Smart Object that does not share embedded data with the original. Do NOT use when: you want linked instances — use photoshop_duplicate_layer (Layer via Copy).

Returns: JSON { ok, summary, details: { source_layer_name, new_layer_name, kind } }. Preconditions: Smart Object layer active or named. Side effects: adds a new Smart Object layer.

NameRequiredDescriptionDefault
layer_nameNoOptional source Smart Object layer name. Default: active layer.
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses preconditions ('Smart Object layer active or named'), side effects ('adds a new Smart Object layer'), and the return shape. The 'unlinked duplicate' phrasing clarifies the independence behavior. It could also mention that the original is untouched, but the independence statement covers this implicitly.

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 well-organized with line breaks, front-loading the core action. The 'Users often say' list is slightly extra but useful for natural-language matching, and every other sentence (usage, return, preconditions, side effects) earns its place. Not overly verbose for the amount of context it provides.

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?

Despite no output schema or annotations, the description includes the return JSON shape, preconditions, side effects, and alternative routing. For a tool with two optional parameters and clear semantics, 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.

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description mostly restates what the schema already says (optional layer name defaults to active layer, document_id activates the document). It adds no new semantic meaning beyond the schema, so a 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb and resource: 'Create an independent Smart Object via Copy — unlinked duplicate with its own embedded contents.' It explicitly differentiates from sibling photoshop_duplicate_layer by noting the difference between linked and independent instances, so an agent can distinguish it without opening schemas.

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

Usage Guidelines5/5

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

Provides explicit 'Use when' and 'Do NOT use when' clauses that name the alternative tool (photoshop_duplicate_layer). This leaves no ambiguity about the appropriate context for selecting this tool over its siblings.

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

photoshop_create_text_layerA

Create a text layer with content, position, font, and optional typography (tracking, leading, paragraph box, alignment, color).

Users often say: add title, letter spacing, line height, text box, 字间距, 行高, 排版.

Use when: adding labels, titles, or typography to the design. Do NOT use when: editing existing text — use photoshop_update_text_content / photoshop_set_text_style. Do NOT use execute_script for tracking/leading/box — pass those fields here.

Returns: JSON { ok, summary, details: { layerName, text, style, context } }. Use photoshop_list_fonts to discover font names; photoshop_set_text_font / photoshop_set_text_style to change later. Preconditions: active document. Side effects: adds text layer.

NameRequiredDescriptionDefault
xNoX position in pixels (default: 100)
yNoY position in pixels (default: 100)
redNoText color red 0–255
blueNoText color blue 0–255
kindNopoint = single-line; paragraph = wrapped text box (default point unless box_width/height set)
textYesText content
greenNoText color green 0–255
leadingNoLine height in points. Sets auto_leading false.
fontNameNoOptional font PostScript name (preferred, the same in every Photoshop UI language) or display name (resolved via app.fonts; see photoshop_list_fonts)
fontSizeNoFont size in points (default: 24)
trackingNoCharacter spacing in 1/1000 em (−1000 to 10000). Photoshop tracking.
alignmentNoParagraph/point justification
box_widthNoParagraph text box width in pixels (implies kind=paragraph)
box_heightNoParagraph text box height in pixels (implies kind=paragraph)
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.
auto_leadingNoUse Photoshop auto leading (ignores leading when true)

TDQS

A4.6/5.0
Behavior4/5

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

No annotations are provided, so the description carries the burden and does well: it declares the precondition (active document), the side effect (adds a text layer), and the return envelope { ok, summary, details }. It does not mention undo/reversibility or whether the new layer becomes the active selection, which are the remaining behavioral facts an agent might want.

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 core action, then tightly labeled sections (Users often say / Use when / Do NOT use when / Returns / Preconditions / Side effects). No filler sentences; the multilingual keyword line is unusual but directly serves retrieval.

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 16-parameter creation tool with no output schema, the description supplies the return shape, preconditions, side effects and sibling routing. Minor gaps remain: x/y coordinate reference frame is unspecified and there is no note on when point vs. paragraph text is appropriate beyond the schema's default inference rule.

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 already 100%, so the baseline is 3; the description earns above baseline by mapping colloquial user phrasings onto parameters (letter spacing→tracking, line height→leading, text box→box_width/height) and by directing font discovery to photoshop_list_fonts. It does not clarify the coordinate space of x/y or the interaction between auto_leading and leading.

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?

Specific verb+resource (create a text layer) with the exact settable facets enumerated: content, position, font, optional typography. It explicitly distinguishes itself from photoshop_update_text_content and photoshop_set_text_style, so an agent can route new-text vs. edit-text without opening a schema.

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

Usage Guidelines5/5

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

Gives an explicit 'Use when' (labels, titles, typography) and 'Do NOT use when' (editing existing text) with named alternative tools, plus a negative routing rule telling the agent not to fall back to execute_script for tracking/leading/box. That is the full when/when-not/alternative triad.

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

photoshop_crop_documentB

Crop the document to specified bounds

NameRequiredDescriptionDefault
topYesTop edge position in pixels
leftYesLeft edge position in pixels
rightYesRight edge position in pixels
bottomYesBottom edge position in pixels
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It only says 'Crop the document' without specifying whether the crop is destructive, whether it applies to a selection, units of the bounds, undo behavior, or confirmation. For a mutation tool, this is a significant gap; the agent cannot anticipate side effects.

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

Conciseness4/5

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

The description is a single, concise sentence with no extraneous words. It front-loads the core purpose. However, it is so brief that it lacks detail, which is a trade-off; still, for a simple tool, it is appropriately sized and well-structured.

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

Completeness2/5

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

Given a simple crop operation with 4 numeric params and no output schema, the description is too minimal. It omits behavioral details (destructive, undo), coordinate system assumptions, and any note about the optional document_id parameter's effect. An agent cannot fully understand the tool's behavior or failure modes without additional context.

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

Parameters3/5

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

Schema coverage is 100%, so each parameter has a minimal description (type, name). The description adds no extra meaning about coordinate origin, order, or semantics beyond 'specified bounds'. Since coverage is high, baseline 3 is appropriate; the description does not add value over the schema but does not need to.

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

Purpose5/5

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

The description states a clear verb ('Crop') and resource ('the document') with an explicit scope ('to specified bounds'). Among siblings like photoshop_resize_image, which changes overall dimensions, crop is a distinct operation. The verb and resource combination unambiguously identifies the tool's purpose without 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 guidance on when to use this tool versus alternatives. No mention of exclusions (e.g., 'use resize instead if you need to scale') or prerequisites (e.g., active document, selection). The agent must infer context from the tool name alone, which is insufficient given the many related operations in the sibling list.

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

photoshop_delete_layerB

Delete the active layer

NameRequiredDescriptionDefault
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description must fully disclose behavior. It only says 'Delete' which implies destructiveness, but does not mention side effects (e.g., whether the deletion is irreversible, if the background layer is protected, or if the operation can be undone via photoshop_undo). It also does not clarify that it operates on the active layer selected in the UI, which is a key behavioral constraint.

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

Conciseness5/5

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

The description is a single, clear sentence with no unnecessary words. It is appropriately sized for a tool with a single optional parameter and a simple action. It front-loads the primary purpose.

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

Completeness2/5

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

For a destructive operation with no annotations and no output schema, the description is insufficiently informative. It does not disclose constraints like the active layer requirement, whether background layers are protected, or any return behavior. An agent may call it without understanding the risks or prerequisites. The tool's simplicity does not excuse the lack of critical context.

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

Parameters3/5

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

The description does not mention the document_id parameter at all. However, the input schema fully describes it with 100% coverage, including its purpose and behavior. Per the rubric, when schema coverage is high, the baseline is 3; the description adds no additional meaning beyond what the schema already provides.

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

Purpose5/5

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

The description states a specific verb (Delete) and a specific resource (the active layer). It clearly distinguishes itself from other layer-related tools, especially the delete_layer_mask sibling, by naming the resource explicitly. There is no ambiguity about what the tool does.

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

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 (to remove a layer) but provides no explicit context about prerequisites, such as requiring an open document or a non-background layer. There are no alternative delete-layer tools, so differentiation is not needed, but the description does not mention when not to use it or any preconditions.

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

photoshop_delete_layer_maskA

Delete the layer mask from active layer

NameRequiredDescriptionDefault
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

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 burden of behavioral disclosure, and it does state the mutating action ('Delete') and its target ('layer mask'). However, it does not disclose whether the action is irreversible, what happens if there is no mask, or whether any other layer state is 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?

A single, clear sentence with no filler. The action and target are front-loaded, and the description is appropriately sized for the simplicity of the tool.

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

Completeness4/5

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

For a simple tool with one optional parameter, no output schema, and no nested objects, the description is mostly complete. It could mention the precondition of an active layer with a mask, but the core call is fully understandable from the given text plus 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 description coverage is 100%, so the single optional document_id parameter is already well documented in the schema. The description adds no new meaning about the parameter, which is acceptable but not additive.

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

Purpose5/5

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

The description states a specific verb and resource: 'Delete the layer mask from active layer.' It clearly distinguishes this from related siblings like photoshop_delete_layer (deletes an entire layer), photoshop_create_layer_mask, and photoshop_apply_layer_mask.

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 about when to choose this tool over alternatives, nor any mention of prerequisites such as having an active layer with an existing mask. The agent must infer usage context entirely from the tool name and description.

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

photoshop_desaturateA

Desaturate the active layer (convert to grayscale)

NameRequiredDescriptionDefault
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

A3.6/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden. It states that the active layer is desaturated but does not disclose whether the operation is destructive, whether the original color data is preserved, whether it is reversible via undo, or any side effects. For a pixel-mutating tool, this is a significant gap.

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

Conciseness5/5

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

The description is a single, compact sentence with no filler. The core action is front-loaded, making it immediately scannable and easy to parse.

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

Completeness4/5

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

For a simple tool with one optional parameter and no output schema, the description adequately conveys the operation. However, it omits prerequisite context (e.g., requires an open document) and any mention of result or undo behavior. These gaps are minor given the tool's simplicity, but a note on reversibility would improve completeness.

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

Parameters3/5

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

The single parameter document_id is fully described in the schema (100% coverage), explaining its purpose and when to set it. The tool description itself adds no additional parameter context, so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action (desaturate), the resource (active layer), and clarifies the result (convert to grayscale). This distinguishes it from siblings like photoshop_invert (color inversion) and photoshop_adjust_hue_saturation (controlled saturation adjustment).

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

Usage Guidelines3/5

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

The description implies usage by naming the target ('active layer'), but it does not explicitly state when to use this tool versus alternatives, nor does it mention when not to use it. There is no guidance on selecting between this and other color-adjustment tools.

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

photoshop_deselectB

Deselect all selections

NameRequiredDescriptionDefault
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does state the core behavior: all selections are cleared. However, it does not mention whether an active document is required, whether the action is reversible, or that it only affects the selection state and not layer content.

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

Conciseness5/5

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

The description is a single concise phrase with no filler or repetition. Every word contributes to the meaning, and the verb is front-loaded.

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

Completeness3/5

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

For a simple operation with one optional, well-documented parameter, the description is usable, but it leaves out surrounding context such as when a deselect is needed, its effect on subsequent selection operations, and behavior when no selection exists. The tool is minimal but complete in syntax, not in explanatory context.

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

Parameters3/5

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

The only parameter, document_id, is already fully described in the input schema, including how to obtain it and why it prevents UI retargeting. The description adds no additional parameter semantics, so the baseline of 3 applies.

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

Purpose4/5

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

The description gives a specific verb ('deselect') and resource ('all selections'), so an agent can tell this clears the active selection rather than selecting or inverting it. It doesn't explicitly tie the action to the active document, but the sibling set contains no competing deselect tool, so the purpose is unambiguous.

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

Usage Guidelines2/5

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

There is no guidance about when to invoke this tool versus alternatives such as select_all, invert_selection, or undo. The intended usage is only implicit in the action name; no explicit context or exclusion is provided.

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

photoshop_distort_layerA

Corner-pin / perspective distort of a layer: map its bounding box to four target corners (absolute document pixels, clockwise from top-left). Headless replacement for Free Transform → Distort / Perspective Warp (which are modal and cannot be scripted). Implemented as a custom warp mesh fitted to the homography — exact on pixel layers; a Smart Object must be rasterized first (rasterize:true, destructive — duplicate it before if the original matters). Read the current bounds with get_layers / get_state, then compute the target corners. Save a copy of the document before (save_document).

NameRequiredDescriptionDefault
modeNoperspective — true projective mapping (parallel lines converge); bilinear — straight edges, no convergenceperspective
layerNolayer name (searched recursively); default — active layer
cornersYesTarget corners in absolute document px: {"tl":[x,y],"tr":[x,y],"br":[x,y],"bl":[x,y]} or a flat array [x1,y1,x2,y2,x3,y3,x4,y4] (tl,tr,br,bl)
rasterizeNorasterize a Smart Object layer before warping (destructive; required for Smart Objects)
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.
interpolationNobicubic

TDQS

A4.3/5.0
Behavior5/5

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

With no annotations provided, the description carries the full behavioral burden and does so well: it discloses the custom warp mesh/homography implementation, exactness on pixel layers, and that Smart Objects must be rasterized with rasterize:true, which is destructive and should be preceded by duplication. It also warns to save a copy of the document before 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?

The description is a dense paragraph rather than structured bullets, but it front-loads the purpose and every sentence adds operational detail about prerequisites, rasterization, or saving. There is little filler.

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

Completeness4/5

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

For a complex, mutating transform tool with no output schema and no annotations, the description covers the important invocation context: bounds discovery, corner computation, rasterization behavior, and saving a copy. It does not describe return values or failure modes, but is largely complete for correct invocation.

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

Parameters3/5

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

Schema coverage is 83%, so most parameter meaning is already documented in the schema. The description reinforces the coordinate convention and destructive rasterization warning, but does not add much beyond the schema for mode, interpolation, or document_id.

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

Purpose5/5

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

States a specific verb and resource: corner-pin/perspective distort of a layer, mapping its bounding box to four target corners. This distinguishes it clearly from sibling transform tools such as move, scale, and rotate.

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?

Explains it is a headless replacement for Free Transform -> Distort / Perspective Warp and instructs the agent to read current bounds with get_layers/get_state, compute target corners, and save a copy first. It gives clear usage context, though it does not explicitly name sibling tools or state when not to use it.

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

photoshop_duplicate_layerA

Duplicate the active layer. The duplicate becomes the active layer; returns its name and, when available, its layer id.

NameRequiredDescriptionDefault
newNameNoName for the duplicated layer (optional)
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

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 and does disclose useful behavioral facts: the duplicate becomes the active layer orientation gives the layer name and id when available. Yet it omits other relevant traits, such as where the duplicate is placed, what happens if there is no active layer, or whether the operation is undoable. The disclosed info is valuable but not comprehensive.

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

Conciseness5/5

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

One sentence with no filler. It front-loads the core action ('Duplicate the active layer') and then adds the two most important consequences (new active layer, return value). Every clause earns its place.

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

Completeness4/5

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

For a simple single-action tool, the description covers the key postcondition (duplicate becomes active), return value, and the one parameter that affects naming. It does not mention edge cases or error behavior, but the absence is not crippling given the tool's simplicity and the fully descriptive schema. Slightly incomplete because no output schema exists, so the described return info is the only guide the agent gets.

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

Parameters3/5

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

Schema description coverage is 100% — both newName and document_id are already documented in the input schema. The description adds no parameter-level detail, but since the schema fully explains the parameters, a baseline score of 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb ('Duplicate') and a specific resource ('the active layer'), which clearly distinguishes this tool from all 100+ siblings. No other sibling duplicates a layer; the closest alternatives (create_smart_object_via_copy, create_layer) are conceptually different, so an agent can tell them apart immediately.

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 intended use is implied: call this when you need a duplicate of the active layer in the current document. However, the description does not state when not to use it, mention alternatives (e.g., smart object via copy), or give any disambiguating context. It is adequate but relies on the agent to infer the scenario.

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

photoshop_edit_smart_object_contentsA

Open a Smart Object for editing (double-click / Edit Contents). The embedded .psb becomes the active document until you save and close it.

Users often say: edit smart object, open embedded file, double-click smart layer.

Use when: modifying pixels inside an embedded Smart Object non-destructively. Do NOT use when: replacing the whole asset — use photoshop_replace_smart_object_contents.

Returns: JSON { ok, summary, details: { parent_document, embedded_document, layer_name } }. Preconditions: Smart Object layer active or named. Side effects: active document switches to the embedded .psb — save/close it to return to the parent document.

NameRequiredDescriptionDefault
layer_nameNoOptional exact Smart Object layer name. Default: active layer.
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations, the description fully carries the behavioral disclosure burden. It states the side effect that the active document switches to the embedded .psb, instructs that save/close is required to return, and specifies the JSON return shape plus preconditions.

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, with the core action in the first sentence. Sections for user phrasing, usage guidance, return format, preconditions, and side effects each earn their place without unnecessary 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?

The tool is fully specified for an agent: it explains what the tool does, when to use it, what to avoid, what it returns, what must be true beforehand, and what state changes occur. No output schema exists, but the description explicitly provides the return structure.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds useful operational context by stating that a Smart Object layer must be active or named, which clarifies when layer_name is needed. The schema already explains document_id's activation behavior, so the extra contribution is moderate but meaningful.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Open a Smart Object for editing' and clarifies it operates on the embedded .psb. It also distinguishes itself from the sibling photoshop_replace_smart_object_contents, so there is no ambiguity about what this tool does.

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

Usage Guidelines5/5

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

The description provides explicit 'Use when' and 'Do NOT use when' guidance, directly naming the alternative tool for replacement. It also lists preconditions, making it clear when this tool is appropriate versus when a sibling should be chosen.

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

photoshop_execute_scriptA

Execute custom ExtendScript (JSX) code inside Photoshop (advanced escape hatch).

Use when: no existing tool covers the operation and you can write safe JSX. Do NOT use when: a recipe or atomic tool exists — prefer photoshop_recipe_* or photoshop_* tools.

Returns: script return value serialized as text/JSON. IMPORTANT: Your code runs inside a wrapping IIFE. Use an explicit return to pass data back — a bare trailing expression returns undefined. Example: return { ok: true }; Objects are serialized with toSource() and parsed automatically on macOS and Windows. Long scripts: pass timeout_ms (up to 600000) so the default 30s budget does not kill the job. Preconditions: valid ExtendScript; active document if script expects one. Side effects: depends on code.

NameRequiredDescriptionDefault
codeYesExtendScript code to execute
timeout_msNoScript timeout in milliseconds (default 30000, max 600000). Override with env PHOTOSHOP_SCRIPT_TIMEOUT. Use for long loops, batch jobs, or large documents.
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

A4.9/5.0
Behavior5/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 so thoroughly: it explains the IIFE wrapper, the need for explicit return, serialization via toSource() and automatic parsing, timeout behavior with defaults and max, preconditions, and that side effects depend on the code. This far exceeds typical behavioral disclosure for an arbitrary execution tool.

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

Conciseness5/5

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

The description is well organized: purpose first, then usage rules, return behavior, timeout guidance, and preconditions/side effects. Each sentence earns its place, and key warnings are front-loaded.

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 high-complexity escape-hatch tool with no output schema and no annotations, the description covers selection logic, execution semantics, return serialization, timeout mitigation, preconditions, and side-effect variability. An agent has enough context to invoke it correctly and avoid common 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 coverage is 100%, so the baseline is met; the description goes beyond by explaining the return-value contract for the code parameter (explicit return required, bare expression returns undefined, toSource serialization) and reinforcing when to pass timeout_ms. This adds meaning that the schema alone does not convey.

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 ('Execute custom ExtendScript (JSX) code inside Photoshop') and explicitly frames itself as an 'advanced escape hatch,' which differentiates it from the many atomic photoshop_* and recipe tools. The name sibling list makes clear this is the generic fallback, not a single-purpose operation.

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

Usage Guidelines5/5

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

Gives explicit use criteria: 'Use when: no existing tool covers the operation and you can write safe JSX' and 'Do NOT use when: a recipe or atomic tool exists — prefer photoshop_recipe_* or photoshop_* tools.' This directly tells the agent when to select this tool versus any of the many siblings.

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

photoshop_expand_selectionA

Expand the active pixel selection outward by a pixel amount.

Use when: growing a tight subject selection or adding padding before feather/fill. Do NOT use when: no selection exists — create one first.

Returns: JSON { ok, summary, details: { pixels, bounds?, context } }. Preconditions: active document and active pixel selection. Side effects: modifies selection.

NameRequiredDescriptionDefault
pixelsYesPixels to expand by (minimum 1)
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does so admirably by stating preconditions (active document and active pixel selection), side effects ('modifies selection'), and the return format. It stops short of covering edge behaviors like what happens when expansion exceeds document bounds, but covers the essential safety profile.

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?

Perfectly structured and front-loaded: purpose sentence first, then usage guidance, then return format, then preconditions/side effects. Every sentence earns its place with zero filler or repetition of schema 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 a tool with no output schema, the description compensates by stating the return format. It covers preconditions, side effects, and usage conditions. The return format description is somewhat generic (ok, summary, details) and could specify failure states, but it is complete enough for an agent to call the tool 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 100%, so the schema already fully documents both parameters. The description's 'pixel amount' phrasing reinforces the pixels parameter but adds no meaning beyond the schema. Baseline 3 is appropriate since the schema does the heavy lifting.

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

Purpose5/5

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

The description states a specific verb ('Expand') plus a clearly-scoped resource ('the active pixel selection') and the control parameter (pixel amount). It naturally distinguishes itself from the sibling inverse tool photoshop_contract_selection without needing to name it, since expanding vs contracting are unambiguous opposites.

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

Usage Guidelines5/5

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

Explicit 'Use when' guidance (growing a tight subject selection, adding padding before feather/fill) and an explicit 'Do NOT use when' exclusion (no selection exists, create one first). This is textbook routing guidance that tells an agent exactly when to invoke this tool versus alternatives.

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

photoshop_export_artboardsA

Export every artboard in the active document to a folder (duplicate + crop to artboardRect, then PNG/JPEG/WebP/AVIF).

Users often say: export all artboards, multi-screen PNG, 画板 çıktısı.

Use when: delivering one file per artboard. Long jobs use a 600s script timeout. Do NOT use when: exporting the whole canvas once — use photoshop_export_as.

Returns: JSON { ok, summary, details: { exported[], failed[], folder } }. Preconditions: document with at least one artboard. Side effects: writes files; does not modify the original.

NameRequiredDescriptionDefault
folderYesAbsolute output folder (created if missing)
formatNoExport formatPNG
qualityNoQuality 0-100 (JPEG/WebP/AVIF)
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states side effects ('writes files; does not modify the original'), preconditions ('document with at least one artboard'), the 600s script timeout for long jobs, and the return shape. This is comprehensive for a non-destructive export operation.

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

Conciseness4/5

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

The description is well-structured with labeled sections ('Use when', 'Do NOT use when', 'Returns', 'Preconditions', 'Side effects') and is front-loaded with the core purpose. It is slightly longer than necessary due to the multilingual user-phrase examples, but those aid intent recognition without bloating it.

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

Completeness5/5

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

Given there is no output schema, the description correctly explains the return JSON. It covers the core operation, the sibling alternative, preconditions, side effects, timeout behavior, and parameter-relevant output details, so an agent has what it needs to invoke the tool 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 100%, so per the baseline the schema already documents all four parameters. The description adds slight context by listing the supported formats and mentioning the output folder, but it does not substantially expand on the schema's own parameter descriptions.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Export every artboard in the active document to a folder,' and includes the mechanism (duplicate + crop to artboardRect, then PNG/JPEG/WebP/AVIF). It also distinguishes itself from the sibling photoshop_export_as by explicitly saying that tool is for exporting the whole canvas once.

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

Usage Guidelines5/5

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

The description gives explicit when-to-use guidance: 'delivering one file per artboard.' It also provides a clear exclusion and alternative: 'Do NOT use when: exporting the whole canvas once — use photoshop_export_as.' This leaves little ambiguity for an agent selecting among siblings.

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

photoshop_export_asA

Export a copy of the active document as PNG, JPEG, WebP or AVIF without changing the open document. WebP/AVIF require Photoshop 23.2+/recent builds and return a clear error when unsupported.

Users often say: export for web, save as webp, quick export png.

Use when: web-ready delivery formats are needed (WebP/AVIF/modern pipelines), or one artboard from a multi-screen file. Do NOT use when: saving the working document itself — use photoshop_save_document. For every artboard at once use photoshop_export_artboards.

Returns: JSON { ok, summary, details: { path, format, method, artboard_id? } }. Preconditions: active document. Side effects: writes one file to path. Optional artboard_id exports only that board (duplicate + crop).

NameRequiredDescriptionDefault
pathYesAbsolute output file path (extension should match format)
formatNoExport formatPNG
qualityNoQuality 0-100 (JPEG/WebP/AVIF)
artboard_idNoOptional artboard layer id from photoshop_list_artboards — export that board only instead of the full canvas
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

A4.9/5.0
Behavior5/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 discloses side effects ('writes one file to path'), non-destructive behavior ('without changing the open document'), preconditions ('active document'), version requirements for WebP/AVIF, and the duplicate+crop behavior for artboard_id. This is exceptional transparency for an unannotated tool.

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

Conciseness5/5

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

The description is organized with labeled sections (use when, do not use, returns, preconditions, side effects) and every sentence adds operational value. It is longer than average, but the length is justified by the tool's branching behaviors and the absence of annotations.

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

Completeness5/5

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

Given no output schema and no annotations, the description fully covers the return shape, side effects, preconditions, format constraints, and artboard-specific behavior. The input schema handles parameter details, and the description supplies the operational context an agent needs to call this tool safely and 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 100%, so the schema already documents each parameter. The description adds meaningful context beyond the schema, such as the version requirement tied to format, the 'duplicate + crop' semantics of artboard_id, and the path/extension matching expectation, which helps an agent invoke parameters correctly.

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

Purpose5/5

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

States a specific verb ('Export a copy'), the resource ('active document'), and the supported formats. It explicitly says the open document is unchanged, which distinguishes it from save operations, and names sibling alternatives like photoshop_save_document and photoshop_export_artboards.

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

Usage Guidelines5/5

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

Provides explicit 'Use when' and 'Do NOT use when' guidance, naming photoshop_save_document for saving the working document and photoshop_export_artboards for exporting every artboard. It also includes natural-language user phrasings like 'export for web' and 'save as webp' that help an agent recognize intent.

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

photoshop_feather_selectionA

Feather (soften) the edges of the active pixel selection.

Use when: soft transitions before fill, mask, or delete operations. Do NOT use when: a hard edge is required or no selection exists.

Returns: JSON { ok, summary, details: { pixels, bounds?, context } }. Preconditions: active document and active pixel selection. Side effects: modifies selection edges.

NameRequiredDescriptionDefault
pixelsYesFeather radius in pixels (minimum 1)
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description carries full burden and succeeds: it lists preconditions (active document and active pixel selection), side effects (modifies selection edges), and even the return JSON shape. No contradictions.

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?

Every sentence is purposeful and the description is front-loaded with the definition. The use/when-not/returns/preconditions/side-effects structure packs a lot of actionable information into a compact form.

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 2-parameter tool with no output schema, this description covers the action, usage criteria, return shape, preconditions, and side effects. Nothing an agent needs to decide on or invoke the tool correctly is missing.

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

Parameters3/5

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

Schema coverage is 100% and both parameters already have meaningful descriptions (radius minimum, optional document_id with use-case). The tool description adds no extra parameter semantics, so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description opens with a specific verb-resource pair: 'Feather (soften) the edges of the active pixel selection', which precisely states the action and scope. This differentiates it from siblings like expand/contract selection and image blur operations.

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

Usage Guidelines5/5

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

Explicit 'Use when' and 'Do NOT use when' conditions are given ('soft transitions before fill, mask, or delete operations' vs 'hard edge is required or no selection exists'). This gives the agent concrete decision criteria, even though no alternative sibling is named.

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

photoshop_fill_layerB

Fill the active layer with a color

NameRequiredDescriptionDefault
redYesRed component (0-255)
blueYesBlue component (0-255)
greenYesGreen component (0-255)
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

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 disclosure burden. It does not state whether the fill overwrites the existing layer pixels, respects the current selection, or is reversible via undo. This is a significant gap for a mutating operation.

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

Conciseness5/5

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

The description is a single focused sentence with no filler. The core action and target are stated immediately, making it easy to scan.

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

Completeness2/5

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

For a mutation tool with no annotations and no output schema, the description is incomplete. It omits behavioral details such as whether the fill replaces layer content, how selections are handled, and what the tool returns or reports on success/failure.

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

Parameters3/5

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

Schema description coverage is 100%, with clear documentation for red, green, blue, and document_id. The tool description adds no parameter-level detail beyond what the schema already provides, so the baseline score of 3 applies.

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

Purpose5/5

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

The description clearly states a specific verb ('fill'), a resource ('active layer'), and a value ('a color'). This distinguishes it from sibling fill-like tools such as content_aware_fill and generative_fill, which do not fill with a solid color.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives, no exclusions, and no mention of prerequisites such as having a layer active. The intended context is only implied by the phrase 'active layer'.

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

photoshop_fit_layer_to_documentB

Scale the active layer to fit the document canvas while maintaining aspect ratio

NameRequiredDescriptionDefault
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.
fillDocumentNoIf true, fills entire canvas (may crop). If false, fits within canvas (may have margins). Default: false

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the core scaling behavior and aspect ratio preservation, but omits important details such as the mutating/destructive nature of scaling, effects on layer contents, potential cropping implications, or whether the operation is reversible via undo.

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, focused sentence that front-loads the primary action and constraint. Every word contributes to understanding the tool's purpose, with no redundant or marketing language.

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

Completeness2/5

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

Given that this is a mutating operation with no annotations and no output schema, the description is incomplete for an AI agent. It lacks guidance on when to choose this tool versus related scaling tools, does not disclose side effects or safety considerations, and does not explain what happens when no valid layer is active or when a document is not specified.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The tool description itself adds no parameter-specific meaning, but the schema already documents document_id activation behavior and the fillDocument fit-vs-fill distinction clearly.

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

Purpose5/5

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

The description states a specific operation: scale the active layer to fit the document canvas while maintaining aspect ratio. This clearly distinguishes the tool from generic layer scaling tools like photoshop_scale_layer by specifying the fit-to-canvas behavior, and from image-level operations like photoshop_resize_image.

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

Usage Guidelines2/5

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

The description provides no guidance on when to prefer this tool over alternatives such as photoshop_scale_layer or canvas resizing. It also does not mention prerequisites like having an active layer selected or how document_id activation should influence usage.

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

photoshop_flatten_imageC

Flatten all layers into a single background layer

NameRequiredDescriptionDefault
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. Flattening is implicitly destructive, but the description does not disclose that all layer structure will be discarded, that hidden layers are included, or that the operation may be irreversible. This is a significant gap for a 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?

The description is a single, front-loaded sentence with no filler. Every word is functional, and the action is immediately clear.

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

Completeness2/5

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

For a destructive operation with no annotations and no output schema, the description is too sparse. It does not mention side effects, reversibility, hidden layer behavior, or what happens if no document is active. A more complete description would at least warn about the irreversible loss of layer structure.

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

Parameters3/5

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

Schema description coverage is 100% because the only parameter, document_id, has a detailed description in the schema. The tool description adds no additional parameter meaning, so the baseline of 3 applies.

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

Purpose4/5

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

The description states a specific verb ('flatten') and resource ('all layers') and the outcome ('a single background layer'). It is distinct enough from sibling tools like photoshop_merge_visible_layers, though it does not explicitly name or contrast that alternative.

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 alternatives such as merge_visible_layers or delete_layer. The description does not mention prerequisites, hidden layer handling, or when flattening is appropriate, leaving the agent to infer usage.

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

photoshop_generate_from_datasetsA

Batch-export the active document once per data set: applies each data set, saves a copy, moves on. "Mail merge for images".

Users often say: generate all variants, batch personalize, render every row.

Use when: data sets are already imported (photoshop_import_datasets) and you want one file per row.

Returns: JSON { ok, summary, details: { exported, skipped, output_paths } }. Preconditions: active document with data sets. Side effects: writes files to output_dir.

NameRequiredDescriptionDefault
formatNoOutput formatJPEG
output_dirYesDirectory for generated files (created if missing)
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.
dataset_namesNoSubset of data set names to export (default: all)

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses side effects ('writes files to output_dir'), preconditions, and the return JSON structure. However, it doesn't state whether the active document is left in its original state after each data set is applied, or if the process is destructive to the document state – a minor gap for a mutation-style tool.

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

Conciseness4/5

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

The description is front-loaded with the core purpose, then provides analogies, usage conditions, return info, and side effects in a logical order. It's slightly longer than necessary but every sentence contributes value. The structure aids quick scanning.

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

Completeness4/5

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

Given no annotations and no output schema, the description covers the essential operational contract: what it does, when to use it, what it returns, and side effects. It leaves out details about document state and error handling, but the presence of a clear return format and preconditions makes it fairly complete for an agent to invoke correctly.

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

Parameters3/5

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

The input schema already has 100% description coverage, so the baseline is 3. The description does not add extra meaning to parameters beyond the schema – it mentions output_dir only indirectly in the side effects and doesn't clarify format or dataset_names further. It's acceptable but not additive.

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

Purpose5/5

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

The description opens with a precise verb–resource pair: 'Batch-export the active document once per data set'. It adds the 'Mail merge for images' analogy and user phrasing ('generate all variants'), making the intent unmistakable and distinct from sibling tools like photoshop_export_as which exports a single static file.

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

Usage Guidelines5/5

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

It explicitly states when to use ('data sets are already imported... and you want one file per row') and gives preconditions ('active document with data sets'). It also references the prerequisite tool (photoshop_import_datasets), which is a clear routing signal. No alternative is mentioned, but the condition is specific enough that an agent won't confuse it with other batch operations.

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

photoshop_generate_imageA

Photoshop Generate Image (Firefly ImageGen): create an image from a text prompt.

Use when: the user asks for ImageGen, text-to-image, or a new picture from a description.

Returns: { ok, summary, details }. Preconditions: generative_fill capability; Adobe generative credits.

NameRequiredDescriptionDefault
widthNoWidth if creating new doc (default 1024)
heightNoHeight if creating new doc (default 1024)
promptYesImage description
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

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. It discloses the return shape ('{ ok, summary, details }') and critical preconditions (generative_fill capability, Adobe generative credits). It does not detail side effects like document modification, but the core generative behavior is transparent.

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

Conciseness5/5

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

Four terse, purposeful lines: action, use triggers, returns, and preconditions. The core purpose is front-loaded, and every sentence earns its place with no redundancy or fluff.

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

Completeness4/5

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

The return shape and preconditions are clearly given, compensating for the missing output schema. The use-when triggers cover selection, and the optional document_id parameter is described in the schema so the agent knows about activation behavior. Minor gap: no explicit mention of whether the tool creates a new document or modifies an existing one, but the width/height 'if creating new doc' hints imply both cases.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description adds minimal parameter insight beyond calling prompt a 'text prompt' and does not clarify width/height/document_id semantics, which are left entirely to the schema. No additional value is provided.

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

Purpose5/5

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

The description states a specific action: 'create an image from a text prompt' with the explicit feature name 'ImageGen (Firefly ImageGen)'. This clearly distinguishes it from siblings like photoshop_generative_fillretical and leaves no ambiguity about the tool's function.

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 explicit 'Use when' triggers: user asks for ImageGen, text-to-image, or a new picture from a description. It does not mention alternatives or exclusions, but these conditions are sufficient for an agent to select this tool among the many Photoshop siblings.

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

photoshop_generative_expandA

Extend the canvas beyond its edges using Generative Expand (Firefly): enlarges the canvas by amount_px on the chosen side(s) and fills the new area with Generative Fill (outpainting).

Use when: outpainting, extending background, or expanding composition.

Returns: { ok, summary, details: { direction, prompt, wait } }. Preconditions: active document; generative_fill capability. Side effects: enlarges canvas with generated content.

NameRequiredDescriptionDefault
promptNoDescribe how to extend the imageextend the background naturally
amount_pxNoPixels added on each expanded side (default: 25% of the longer side)
directionNoExpand direction (default all)all
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it lists preconditions (active document, generative_fill capability) and side effects (canvas enlarged with generated content). It doesn't explicitly flag reversibility/undo or rate/cost limits, 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.

Conciseness5/5

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

Front-loaded with the core action, then labeled Use-when, Returns, Preconditions, and Side-effects blocks. Every line carries information with no filler or redundancy.

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?

No output schema exists, but the description documents the return shape (ok, summary, details with direction/prompt/wait) plus preconditions and side effects. An agent has everything needed to call it correctly.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents all four parameters including defaults and the document_id activation rationale. The description restates amount_px and direction semantics rather than adding new meaning, so baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource (extend canvas via Generative Expand) and describes the mechanism (enlarge by amount_px, fill with outpainting Generative Fill). Distinguishes it clearly from siblings like resize_image, crop_document, generative_fill, and generative_upscale.

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

Usage Guidelines4/5

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

'Use when: outpainting, extending background, or expanding composition' gives clear triggering scenarios. It stops short of naming alternatives (resize_image, generative_upscale) or exclusions, so the routing is implied by the scenario rather than by explicit contrast with siblings.

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

photoshop_generative_fillA

Fill the current selection using Adobe Generative Fill (Firefly) with a text prompt.

Use when: adding or replacing content inside a selection with generative AI. Do NOT use when: no selection exists — create one first or use photoshop_select_subject. Do NOT use when: Photoshop version lacks generative_fill — check photoshop_get_capabilities.

Returns: { ok, summary, details: { action_id, prompt, wait } }. Preconditions: PS 24+ with generative credits; active pixel selection. Side effects: modifies pixels in selection; may consume Adobe generative credits.

NameRequiredDescriptionDefault
promptYesDescribe what to generate in the selection
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description carries the full burden of disclosure. It states side effects ('modifies pixels in selection; may consume Adobe generative credits'), preconditions ('PS 24+ with generative credits; active pixel selection'), and provides the return shape. This is exemplary behavioral disclosure for a 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?

The description is compact, uses labeled sections (Use when, Do NOT use when, Returns, Preconditions, Side effects), and front-loads the core purpose in the first sentence. Every line earns its place without redundancy.

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?

Despite having no annotations and no output schema, the description provides all essential operational context: selection prerequisite, version/credit requirement, exclusion conditions, side effects, and exact return format. It routes the agent to relevant sibling tools for missing preconditions, making it fully actionable.

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

Parameters3/5

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

Schema coverage is 100%, and both parameters already have detailed descriptions in the input schema. The tool description adds no meaning beyond noting that a text prompt is used and that the prompt appears in the return object. This meets the baseline for schema-documented parameters but does not exceed it.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Fill the current selection using Adobe Generative Fill (Firefly) with a text prompt.' It clearly distinguishes the operation from sibling tools like generative_remove or generative_expand by scoping to the active selection. The 'Use when' clause reinforces the exact capability (adding/replacing content in a selection).

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

Usage Guidelines5/5

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

Explicit 'Use when' and 'Do NOT use when' instructions are provided, including concrete alternative actions: create a selection first or use photoshop_select_subject, and check photoshop_get_capabilities for version support. This leaves no ambiguity about when the tool is appropriate.

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

photoshop_generative_removeA

Remove content using the AI Remove tool (or generative fill fallback) on the current selection.

Use when: erasing distractions, people, or objects with generative AI. Do NOT use when: generative unavailable — fallback to photoshop_recipe_remove_distraction.

Returns: { ok, summary, details }. Preconditions: selection or auto_select_subject; generative_fill capability. Side effects: inpaints selected region; consumes generative credits when cloud-backed.

NameRequiredDescriptionDefault
feather_pxNoEdge feather before remove (0-20, default 0)
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.
auto_select_subjectNoRun Select Subject when no selection exists (default false)

TDQS

A4.5/5.0
Behavior4/5

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

No annotations provided, so the description carries the full burden. It discloses side effects (inpaints selected region, consumes generative credits), preconditions (selection or auto_select_subject, generative_fill capability), and return format. It could mention reversibility or auth, but for this context it is sufficiently transparent.

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

Conciseness5/5

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

The description is compact and well-structured, with the main purpose front-loaded followed by usage conditions, returns, preconditions, and side effects. Every sentence adds value and no fluff.

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

Completeness5/5

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

Given the tool's complexity (generative AI, selection requirements, side effects) and lack of output schema, the description covers all essential aspects: purpose, when to use, return shape, preconditions, side effects, and fallback. Nothing critical is missing.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents all three parameters (feather_px, document_id, auto_select_subject). The description does not add any extra semantics beyond what the schema provides, so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action (remove content), the tool used (AI Remove tool with generative fill fallback), and the target (current selection). It also distinguishes from the sibling by naming the fallback recipe tool, so an agent can differentiate.

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

Usage Guidelines5/5

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

Explicit 'Use when' and 'Do NOT use when' sections with a specific alternative tool (photoshop_recipe_remove_distraction). This leaves no ambiguity about when to invoke this tool vs. alternatives.

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

photoshop_generative_upscaleA

Upscale the active document using Generative Upscale (PS 27+).

Use when: increasing resolution with AI detail recovery. Do NOT use when: generative_upscale flag is false — use photoshop_resize_image.

Returns: { ok, summary, details } — or generative_timeout while Photoshop renders behind its progress dialog (1–3 min): poll photoshop_get_state; the result opens as a NEW active document named "… Firefly Upscaler Nx". Preconditions: generative_upscale capability; signed-in Adobe account.

NameRequiredDescriptionDefault
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.
target_scaleNoTarget scale factor (2 or 4)

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description carries the full behavioral burden and does so well: it describes the return shape, the generative_timeout case, the 1–3 minute progress-dialog behavior, polling photoshop_get_state, and the fact that the result opens as a new active document with a predictable name. It also discloses capability and authentication preconditions.

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 efficiently structured into purpose, use conditions, exclusion, return behavior, and preconditions. Every sentence contributes actionable information with no filler.

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

Completeness5/5

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

Given no annotations and no output schema, the description supplies the critical missing context: expected return shape, timeout behavior, new-document outcome, and preconditions. Nothing essential for correct invocation appears to be missing.

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

Parameters3/5

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

Schema description coverage is 100%, so document_id and target_scale are already fully documented in the schema. The description adds context about operating on the active document but does not add parameter-specific meaning beyond the schema.

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

Purpose5/5

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

The description states a specific verb and resource: upscale the active document using Generative Upscale. It also names the Photoshop version and distinguishes the operation from the sibling alternative photoshop_resize_image in the do-not-use clause.

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

Usage Guidelines5/5

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

It gives explicit when-to-use and when-not-to-use guidance, including the exact alternative (photoshop_resize_image) for the excluded case. It also states the required capability and Adobe sign-in precondition.

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

photoshop_get_capabilitiesA

Return version-aware feature flags for the installed Photoshop (Select Subject v2, Generative Fill, etc.).

Use when: once per session before suggesting AI-powered features or gated recipes. Do NOT use when: Photoshop version is already known from photoshop_get_version.

Returns: JSON { version, features: { select_subject_v2, generative_fill, ... } }. Preconditions: none. Side effects: none.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

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

Description discloses return format JSON with version and features, states preconditions: none and side effects: none. No annotations are provided, so the description carries the behavioral burden; it adequately covers safety and idempotence, though it could mention network/host overhead or failure modes.

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

Conciseness5/5

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

Well-structured with clear headings for use, non-use, return format, preconditions, and side effects. Each line adds value and the essential context is front-loaded.

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

Completeness4/5

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

Given zero parameters and no output schema, the description provides enough for an agent to call it correctly and interpret the result. Minor gap: what happens if Photoshop is not running or the call fails isn't specified, but for a capability discovery tool this is acceptable.

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?

The tool has zero parameters, so there is no parameter ambiguity. The description explains what is returned, effectively compensating for the absence of schema details.

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

Purpose5/5

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

Description clearly states it returns 'version-aware feature flags for the installed Photoshop' with specific example features. This is a specific verb and resource that distinguishes it from siblings like photoshop_get_version and photoshop_ping.

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

Usage Guidelines5/5

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

Explicitly says 'Use when: once per session before suggesting AI-powered features or gated recipes' and 'Do NOT use when: Photoshop version is already known from photoshop_get_version.' This provides clear when-to-use guidance and names the alternative.

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

photoshop_get_document_infoC

Get information about the active Photoshop document

NameRequiredDescriptionDefault
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description must carry the full behavioral burden. It implies a read-only operation but does not explicitly state that, and it fails to disclose that providing a document_id can switch the active document – a side effect that could impact subsequent operations. The parameter description mentions this, but the tool description itself omits it.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no redundant words. It is appropriately sized for the tool's simplicity.

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

Completeness2/5

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

The description does not explain what information is returned (no output schema exists), and it omits the activation side effect of the optional document_id. For a tool that might be used to gather document metadata, the absence of return details and side-effect disclosure leaves an incomplete picture for an agent.

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

Parameters3/5

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

The schema provides 100% coverage of the single parameter, so the description adds no additional semantic value. Per the baseline, a score of 3 is appropriate when the schema already documents the parameter adequately.

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 clear verb and resource ('Get information about the active Photoshop document'), which is distinct from sibling get-tools like photoshop_get_layers or photoshop_get_version. However, it does not specify what kind of information is returned, leaving some ambiguity about its exact scope.

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 offers no guidance on when to use this tool versus alternatives such as photoshop_get_state or photoshop_get_layers. There is no mention of exclusions or conditions, leaving the agent to infer usage solely from the name.

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

photoshop_get_historyC

Get the history states of the active document

NameRequiredDescriptionDefault
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the operation and scope, omitting side effects (e.g., document activation when document_id is set), whether the operation is read-only, or the return format. The schema mentions activation behavior, but the description itself does not.

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

Conciseness5/5

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

The description is a single concise sentence that directly states the action and resource. There is no unnecessary information or redundancy, making it easy to parse.

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?

Since there is no output schema, the description should clarify what 'history states' are or what the return value looks like, but it does not. It also omits the optional document_id activation behavior from the description itself, although the schema covers it. The tool is simple, but this lack of output and usage context leaves gaps for an agent.

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

Parameters3/5

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

Schema description coverage is 100%, and the schema already documents the document_id parameter, including its activation behavior. The description adds no additional meaning beyond what the schema provides, so the baseline of 3 applies.

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

Purpose4/5

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

The description clearly identifies the action ('get') and the resource ('history states of the active document'), with a specific scope. It does not explicitly differentiate from sibling tools like photoshop_get_state, but the wording is specific enough that an agent can understand the tool's function.

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 alternatives such as photoshop_get_state or photoshop_get_document_info. No conditions, exclusions, or prerequisites are provided, leaving the agent to infer the appropriate context.

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

photoshop_get_layersA

List all layers in the active document with kind, visibility, and opacity.

Use when: choosing a layer to edit, debugging structure, or after organize_layers. Do NOT use when: only session summary is needed — use photoshop_get_state (lighter).

Returns: layerCount, layers array (LayerSets include is_artboard), context. Preconditions: active document. Side effects: none.

NameRequiredDescriptionDefault
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden and handles it well: it declares 'Side effects: none,' states the precondition (active document), and describes the return structure (layerCount, layers array, context) including the LayerSets/is_artboard detail. Minor gap: what 'context' contains is unspecified, but overall disclosure is strong.

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

Conciseness5/5

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

Well-structured with labeled sections (Use when / Do NOT use when / Returns / Preconditions / Side effects). Main purpose is front-loaded in the first sentence, and every subsequent sentence carries distinct informational value. Zero wasted words.

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

Completeness4/5

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

For a read-only listing tool with a single optional parameter, everything an agent needs is present: purpose, usage routing, return format (compensating for the missing output schema), preconditions, and side effects. The only minor omission is the precise contents of the 'context' field and pagination limits for large documents.

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

Parameters3/5

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

Schema coverage is 100% and the single optional parameter document_id is thoroughly documented in the schema itself (source, activation behavior, retargeting rationale). The description references 'active document' but adds no parameter-level meaning beyond the schema, so the baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb (list) with a resource (layers) and clear scope (active document) plus the exact returned fields (kind, visibility, opacity). Distinguishes itself from photoshop_get_state, which is explicitly named as the lighter alternative for session summaries. No ambiguity about what this tool does.

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

Usage Guidelines5/5

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

Provides explicit use-when conditions (choosing a layer to edit, debugging structure, after organize_layers) and an explicit do-not-use-when with a named alternative (photoshop_get_state for session summary). This is exemplary guidance that leaves nothing to inference.

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

photoshop_get_previewA

Export the active document as a base64 JPEG preview for visual verification.

Use when: after visual edits to confirm result before reporting success to the user. Do NOT use when: you only need numeric state — use photoshop_get_state (much cheaper).

Returns: MCP image content block (JPEG) plus metadata text. Preconditions: active document required. Side effects: creates and deletes a temp file; does not modify the document.

NameRequiredDescriptionDefault
qualityNoJPEG quality 1–12 (default 8)
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.
max_dimension_pxNoMaximum long edge in pixels (default 1024)

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses side effects ('creates and deletes a temp file; does not modify the document'), preconditions ('active document required'), and return format ('MCP image content block (JPEG) plus metadata text'). This is strong behavioral disclosure for a read-only preview tool, though it could mention failure behavior if no document 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.

Conciseness5/5

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

The description is compact and well-structured: a one-sentence purpose, a clear 'Use when'/'Do NOT use when' pair, and a concise 'Returns/Preconditions/Side effects' block. Every sentence earns its place, and the most important routing information is front-loaded.

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

Completeness4/5

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

For a preview tool with 3 optional parameters, 100% schema coverage, and no output schema, the description covers purpose, usage, preconditions, side effects, and return format. It is complete enough for an agent to call correctly. The only minor gap is not describing what happens when no document is active (error vs. no-op), but the precondition statement implies the requirement.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters (quality, document_id, max_dimension_px). The description adds context for document_id ('activates that document before running so a UI tab switch cannot retarget the edit'), which is valuable. However, quality and max_dimension_px are fully covered by the schema, so the description doesn't need to add more. Baseline 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb and resource: 'Export the active document as a base64 JPEG preview for visual verification.' This clearly distinguishes it from sibling tools like photoshop_get_state (numeric state) and photoshop_export_as (full export). The purpose is immediately understandable and differentiated.

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

Usage Guidelines5/5

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

The description explicitly provides when-to-use ('after visual edits to confirm result before reporting success') and when-not-to-use ('Do NOT use when: you only need numeric state — use photoshop_get_state (much cheaper)'). It names the alternative tool directly, giving the agent a clear decision rule.

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

photoshop_get_selection_boundsA

Read the active pixel selection bounds in document pixels (read-only).

Use when: verifying selection exists and its size/position before mask, fill, or recipe steps. Do NOT use when: creating or modifying a selection — use photoshop_select_rectangle or photoshop_select_subject.

Returns: JSON { ok, summary, details: { has_selection, bounds?, context } }. Preconditions: active document. Side effects: none.

NameRequiredDescriptionDefault
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations provided, the description carries the full behavioral burden and meets it: it declares read-only status, 'Side effects: none', the precondition (active document), and the return shape. This fully discloses the operational profile an agent needs.

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?

Purpose is front-loaded in the first sentence, followed by structured Use/Do NOT Use blocks and a compact Returns/Preconditions/Side effects section. Every sentence adds distinct value with zero waste or redundancy.

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?

Despite having no output schema and no annotations, the description covers purpose, usage, return format, precondition, and side effects. For a single-optional-parameter read 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.

Parameters3/5

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

Schema coverage is 100% for the single optional parameter, so the baseline is 3. The description does not add semantic detail about document_id beyond what the schema already provides, but the schema itself is thorough, so no compensation is required.

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

Purpose5/5

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

The description states a specific verb (read) with a precise resource (active pixel selection bounds) and unit (document pixels). It distinguishes itself from sibling selection tools like photoshop_select_rectangle and photoshop_select_subject by explicitly framing itself as a read operation on an existing selection.

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

Usage Guidelines5/5

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

Provides explicit 'Use when' (verifying selection existence/size/position before mask, fill, or recipe steps) and 'Do NOT use when' (creating/modifying a selection) guidance, naming the specific sibling alternatives. No ambiguity remains about when to invoke this tool.

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

photoshop_get_stateA

Return a cheap read-only snapshot of Photoshop session state (active document, layer, selection).

Use when: before any tool that needs an active document/layer, or after an error to recover context. Do NOT use when: you only need a visual preview — use photoshop_get_preview instead.

Returns: JSON with hasDocument, openDocumentCount, document.id/name/dimensions/colorMode/artboards, activeLayer, activeArtboard, hasSelection. Capture document.id and pass it as document_id on later mutating calls. Artboard ids come from document.artboards[].id. When openDocumentCount > 1, call photoshop_list_documents before acting across tabs. Preconditions: none (safe on empty session). Side effects: none.

NameRequiredDescriptionDefault
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

A4.9/5.0
Behavior5/5

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

Even with no annotations, the description states it is read-only, has no side effects, is safe on an empty session, and notes when openDocumentCount > 1 the caller should call photoshop_list_documents. It also discloses the return shape, which is critical because there is no output schema.

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

Conciseness5/5

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

The description is organized into scannable sections (use/when-not/returns/preconditions) with zero filler. Each sentence carries operational information, and the most important identifier ('read-only snapshot') is front-loaded.

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 read-only state tool with no output schema, this description fully covers return fields, preconditions, side effects, and multi-document handling. Nothing an agent needs to call it correctly or interpret its result 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?

The input schema already fully documents document_id, so the baseline is 3; the description adds value by telling the agent to capture document.id and pass it as document_id on later mutating calls, and to reference artboard ids from document.artboards[].id.

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

Purpose5/5

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

Description opens with a specific verb and resource: 'Return a cheap read-only snapshot of Photoshop session state (active document, layer, selection).' It enumerates included fields and explicitly contrasts with photoshop_get_preview, making it distinguishable from siblings without needing to inspect schemas.

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

Usage Guidelines5/5

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

Contains explicit 'Use when' and 'Do NOT use when' sections, names photoshop_get_preview as the alternative for visual previews, and gives a concrete recovery scenario (after an error). This fully routes selection among similar tools.

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

photoshop_get_versionA

Return the detected Photoshop version string.

Use when: user asks about compatibility or before version-gated features. Do NOT use when: you need feature flags — prefer photoshop_get_capabilities.

Returns: version string. Preconditions: none. Side effects: none.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It explicitly states 'Preconditions: none' and 'Side effects: none,' which is valuable for a getter. It does not discuss failure modes if Photoshop is not running, but for a simple version query the disclosed information is sufficient.

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

Conciseness5/5

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

The description is compact and well-structured: purpose first, then usage guidance, then return/preconditions/side effects. Every sentence serves a clear function with no redundancy.

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, simple getter with no output schema, the description covers return value, preconditions, side effects, and sibling differentiation. 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.

Parameters4/5

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

The tool has zero parameters, which the schema already reflects completely. Baseline for 0 params is 4; the description adds nothing about parameters, but none is needed.

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 ('Return') and resource ('detected Photoshop version string'), and explicitly names the sibling it is not (photoshop_get_capabilities) for feature flags. An agent can immediately understand what this tool does and how it differs from related tools.

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

Usage Guidelines5/5

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

Provides explicit when-to-use conditions ('user asks about compatibility or before version-gated features') and a clear exclusion ('Do NOT use when: you need feature flags') with a named alternative. No inference is required.

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

photoshop_image_stackA

Load 2+ image files into one document, convert to a smart object and apply a stack mode (mean/median/max/min/...). Classic "remove tourists from N shots" or noise reduction — no generative AI involved.

Users often say: remove tourists, median stack, average these photos, noise stack, turistleri sil.

Use when: the user has multiple aligned shots of the same scene and wants a statistical blend. Do NOT use when: removing a single object from one photo — use photoshop_generative_remove or photoshop_content_aware_fill.

Returns: JSON { ok, summary, details: { file_count, mode, layer_name } }. Preconditions: 2+ existing image files. Side effects: opens the files; the stacked result becomes the active document.

NameRequiredDescriptionDefault
modeNoStack mode — median removes transient objects, mean reduces noisemedian
filesYesAbsolute paths of the images to stack (min 2)
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations present, the description carries the full burden and does well: it discloses side effects (opens files, stacked result becomes active document), preconditions (2+ existing image files), return shape, and the non-generative nature of the operation. It does not detail potential failure modes or constraints like matching image dimensions, but the main behavioral traits are covered.

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 well-structured with clear sections for use cases, exclusions, return value, and side effects. The user-phrase block is slightly redundant but still useful for intent matching; overall every section earns its place.

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

Completeness4/5

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

Given there is no output schema, the description appropriately explains the return format and provides preconditions and side effects. It covers the core context an agent needs to invoke the tool correctly, though it could add a note that the input images should be aligned or similarly sized for meaningful stack results.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters thoroughly. The description reinforces the semantic difference between median and mean and repeats the min-2 file requirement, but adds little beyond what the schema already states.

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

Purpose5/5

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

The description states a specific operation: load 2+ image files, convert to a smart object, and apply a statistical stack mode. It clearly distinguishes itself from generative tools by saying 'no generative AI involved' and by naming the classic use cases like 'remove tourists' and noise reduction.

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

Usage Guidelines5/5

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

Provides explicit 'Use when' and 'Do NOT use when' guidance, naming the alternative tools photoshop_generative_remove and photoshop_content_aware_fill for single-object removal. It also lists common user phrasings, making it easy for an agent to recognize when this tool is requested.

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

photoshop_import_datasetsA

Import a Photoshop variables/data-sets XML file into the active document (the same file Image > Variables > Data Sets > Import accepts).

Users often say: load data sets, import variables XML, data-driven graphics.

Use when: the template PSD already has variable-bound layers and you want to load rows from an XML file. Do NOT use when: generating a batch from a CSV directly — use photoshop_recipe_csv_to_cards.

Returns: JSON { ok, summary, details: { count, datasets } }. Preconditions: active document with variables defined (Image > Variables > Define).

NameRequiredDescriptionDefault
xml_pathYesAbsolute path to the variables/data-sets XML file
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It discloses the target of the operation (active document), the precondition, and the return shape. However, it does not state whether importing replaces/merges existing datasets in the document, whether the operation is reversible via undo, or how the active-document requirement interacts with document_id activation. Some behavioral context is present, but not the full mutation picture.

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?

Well-organized with labeled sections (core statement, user phrasings, when to use, returns, preconditions), front-loaded with the purpose. Every sentence earns its place — the 'Users often say' line supports query matching, and the exclusion clause prevents mis-selection. No wasteful 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?

Given a 2-param tool with 100% schema coverage and no output schema, the description fills the important gaps: it explains the return format (JSON with ok/summary/details), states preconditions, and differentiates among a very large sibling family (100+ tools). Minor gap: it doesn't specify whether existing datasets are overwritten or merged upon import, which an agent would want to know before calling.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters are already well-documented. The schema's document_id explanation is unusually thorough (explains why it activates the document to avoid UI tab-switch issues). The description adds only marginal context about the 'active document' requirement already implied by the schema. Baseline 3 is appropriate when the schema carries the param documentation weight.

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: 'Import a Photoshop variables/data-sets XML file into the active document', and anchors it to the exact UI menu path (Image > Variables > Data Sets > Import) for precision. The synonym list ('load data sets, import variables XML') helps match varied user phrasing, and the CSV/batch alternative is explicitly named as the thing this tool is not.

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

Usage Guidelines5/5

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

Provides explicit 'Use when' (template PSD has variable-bound layers and you want to load XML rows) and 'Do NOT use when' (generating a batch from CSV directly) conditions, naming the alternative photoshop_recipe_csv_to_cards. It also states the precondition (active document with variables defined), leaving no ambiguity about when to select this over its siblings.

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

photoshop_invertA

Invert colors of the active layer

NameRequiredDescriptionDefault
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

A3.8/5.0
Behavior3/5

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

There are no annotations, so the description carries the behavioral disclosure burden. It states the core effect and target layer, but does not mention mutability, reversibility, what happens if no active layer exists, or whether the operation applies to pixel data only.

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

Conciseness5/5

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

The description is a single, clear, front-loaded sentence with no filler. It conveys the essential operation and target efficiently.

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 operation with no output schema, the description is mostly complete: it identifies the action and the target layer. It could add a note about requiring an active document/layer, but the optional document_id schema helps fill that gap.

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

Parameters3/5

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

Schema description coverage is 100%, and the document_id parameter is already well documented in the schema. The tool description adds no additional parameter meaning, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description names a specific verb ('Invert') and a clear resource ('colors of the active layer'). It also distinguishes itself from the sibling photoshop_invert_selection by targeting layer colors rather than a selection.

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: an agent should call this when it needs to invert the colors of the active layer. However, it does not explicitly mention when not to use it or contrast it with alternatives like invert_selection or desaturate.

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

photoshop_invert_selectionB

Invert the current selection

NameRequiredDescriptionDefault
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of explaining behavior beyond the one-line action. It does not disclose that it swaps selected and unselected regions, whether it affects pixels, what happens with no active selection, or that it mutates selection state as opposed to document content.

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

Conciseness4/5

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

The description is very short and contains no filler; every word contributes to the purpose. However, it is arguably under-specified for behavioral and usage guidance, so it earns high marks for brevity without achieving full completeness.

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

Completeness3/5

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

The tool is simple and has only one optional parameter, so the minimal description is close to adequate. Still, for an AI agent it lacks essential context: when the operation is appropriate, how it interacts with the current selection, and whether it is safe/non-destructive to pixel content.

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

Parameters3/5

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

The only parameter, `document_id`, is already fully described in the input schema with its source and purpose. Since schema description coverage is 100%, the description does not need to repeat parameter detail; the baseline of 3 applies.

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

Purpose5/5

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

The description names a specific verb ('invert') and a clear resource ('current selection'), unambiguously identifying the operation. The sibling tool `photoshop_invert` is implicitly distinguished by the 'selection' qualifier, and the action is distinct from other selection-manipulation siblings.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives such as `photoshop_select_all`, `photoshop_deselect`, or `photoshop_invert`. There is no mention of prerequisites like an active selection, nor any explicit or implicit note about when this selection operation is the right choice.

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

photoshop_list_artboardsA

List artboards in the active document with id, name, pixel bounds, and which one contains the active layer.

Users often say: artboards, 画板, multi-screen, iPhone and iPad frames, device layouts.

Use when: the document is an artboard file (UI/multi-screen) and you need artboard_id before export or edits. Do NOT use when: listing open document tabs — use photoshop_list_documents.

Returns: JSON { ok, summary, details: { count, artboards[] } }. Empty list if the document has no artboards. Preconditions: active document. Side effects: none.

NameRequiredDescriptionDefault
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations provided, the description carries full behavioral disclosure. It states preconditions ('active document'), side effects ('none'), empty-list behavior, and the exact JSON return shape. This goes well beyond what the schema alone provides.

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 core function, then uses short labeled sections for user phrasing, usage conditions, return shape, preconditions, and side effects. Every sentence adds useful information without redundancy.

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 simple read-only listing tool with one optional parameter, the description is complete: it covers when to use it, what it returns, empty cases, preconditions, side effects, and the relevant alternative. No critical information is missing.

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

Parameters3/5

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

Schema description coverage is 100%, and the document_id parameter is thoroughly explained in the schema. The tool description itself does not add parameter-specific semantics, so the baseline 3 applies.

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

Purpose5/5

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

The description names a specific verb and resource: 'List artboards in the active document', and details the returned fields (id, name, pixel bounds, active layer). It also explicitly differentiates itself from photoshop_list_documents, so an agent can distinguish it from the closest sibling without opening schemas.

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

Usage Guidelines5/5

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

Provides explicit when-to-use guidance ('when the document is an artboard file... and you need artboard_id before export or edits') and an explicit when-not-to-use with a named alternative ('listing open document tabs — use photoshop_list_documents'). This leaves no ambiguity about selection.

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

photoshop_list_datasetsA

List the data sets defined on the active document (Image > Variables > Data Sets).

Use when: before applying data sets or debugging a data-driven template.

Returns: JSON { ok, summary, details: { datasets, active, count } }. Preconditions: active document with variables/data sets defined.

NameRequiredDescriptionDefault
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries the full disclosure burden. It discloses the return shape as JSON with { ok, summary, details }, and states the precondition that an active document with variables/data sets must exist. This gives an agent a clear model of what the tool does and what it needs, though it does not explicitly declare side-effect-free behavior.

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

Conciseness5/5

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

The description is compact and front-loaded: the core operation comes first, followed by use context, return shape, and preconditions. Every sentence earns its place with no redundant or filler content.

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?

The tool is simple with one optional parameter and no output schema. The description covers what it does, when to use it, what it returns, and what preconditions apply. Nothing essential is missing for an agent to select and invoke it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already fully explains the optional document_id parameter, including its provenance and why it matters. The tool description adds no parameter-specific meaning, but with complete schema coverage the baseline of 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb and resource: 'List the data sets defined on the active document', with a menu path for disambiguation. This clearly differentiates it from related siblings like photoshop_import_datasets and photoshop_generate_from_datasets, which apply or modify data sets rather than list them.

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

Usage Guidelines4/5

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

The description explicitly says 'Use when: before applying data sets or debugging a data-driven template', giving concrete invocation context. It does not enumerate alternatives or exclusions, but the stated use cases are sufficient for an agent to select this tool over apply/import/generation siblings.

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

photoshop_list_documentsA

List every open Photoshop document with id, dimensions, saved flag, artboard_count, and which tab is active.

Use when: multiple documents are open and you need document_id before switching tabs, previewing, or closing a specific file. Do NOT use when: you only need the active document — use photoshop_get_document_info or photoshop_get_state.

Returns: JSON { ok, summary, details: { count, documents[] (id, name, width, height, saved, artboard_count, is_active), active_document_id, context } }. Preconditions: none (safe when zero documents open). Side effects: briefly activates each tab to read artboard_count, then restores the original active document.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations to convey safety or side effects, the description carries the full burden and succeeds admirably. It states preconditions ('safe when zero documents open') and side effects ('briefly activates each tab to read artboard_count, then restores the original active document'), which is exactly the kind of behavioral disclosure an agent needs.

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 information-dense but every sentence earns its place: purpose, conditions, return shape, preconditions, and side effects are all covered in compact sections. No filler or repetition is present.

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, but the description provides a full return shape including the documents array, active_document_id, and context. Combined with explicit usage guidance, alternatives, preconditions, and side effects, nothing an agent needs to call this tool 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?

The tool has zero parameters and the input schema is an empty object, so there is no parameter meaning to clarify. Per the baseline for 0-param tools, this is rated 4; the description appropriately omits parameter details since none exist.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'List every open Photoshop document', and enumerates the exact fields returned. It clearly distinguishes itself from sibling tools by explaining that callers need document_id before switching, previewing, or closing a file.

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

Usage Guidelines5/5

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

The description provides explicit 'Use when' and 'Do NOT use when' guidance, naming alternative tools (photoshop_get_document_info, photoshop_get_state) for the active-document case. This leaves no ambiguity about when this tool is the right choice.

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

photoshop_list_fontsA

List installed fonts available to Photoshop.

Use when: choosing a font for photoshop_create_text_layer or photoshop_set_text_font. TextItem.font requires the PostScript name — use postScriptName from results. It is the same in every Photoshop UI language, while name/family can be localized (e.g. CJK fonts in a Japanese UI); set/create tools also accept a display name as a fallback.

Returns: fonts array ({ name, postScriptName, family, style }), total count, truncated flag. First call may be slow (app.fonts.length can exceed 1000). Side effects: none.

NameRequiredDescriptionDefault
limitNoMaximum fonts to return (default: 200)
queryNoOptional substring filter (matches name, postScriptName, or family)
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

A4.7/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 burden and it delivers: 'Side effects: none' declares read-only behavior, and the latency warning about app.fonts.length exceeding 1000 pre-empts a perceived hang. It stops short of describing failure conditions (no Photoshop connection, no open document), which an agent would also want before calling.

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 statement of what it does, then clearly labeled Use when / Returns / Side effects blocks. Every sentence is load-bearing—no restatement of the name, no filler.

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?

With no output schema, the description correctly supplies the return shape ({ name, postScriptName, family, style }, total, truncated) and the latency caveat. Together with the three fully documented optional parameters, an agent has everything needed to call and consume 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 coverage is 100%, so baseline is 3; the description earns extra by tying the limit parameter to the truncated flag in the return payload and by explaining why postScriptName matters rather than leaving it as a bare field label. It doesn't add syntax or matching rules for query beyond what the schema already states.

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?

Specific verb plus resource ('List installed fonts available to Photoshop'), and it is clearly distinguished from siblings such as photoshop_get_capabilities or photoshop_get_state. An agent can identify this as the enumeration tool for typefaces without inspecting 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 Guidelines5/5

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

The 'Use when' clause names the two consuming tools (photoshop_create_text_layer, photoshop_set_text_font) and the exact decision to make. It goes further by prescribing which field to feed forward (postScriptName) and explaining the localization pitfall that makes name/family a fallback.

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

photoshop_merge_visible_layersB

Merge all visible layers into one

NameRequiredDescriptionDefault
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It states the core behavior (merging visible layers) but doesn't disclose what happens to hidden layers, whether the merge is destructive (e.g., does it discard hidden layers or keep them?), or what the result looks like. For a mutation tool with no annotations, this is a significant gap.

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

Conciseness5/5

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

The description is a single, concise sentence that front-loads the core action. Every word earns its place, and there is no fluff or repetition.

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

Completeness2/5

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

For a destructive mutation tool with no annotations and no output schema, the description is too thin. It doesn't explain the effect on hidden layers, whether the operation is reversible, or what the resulting layer structure looks like. An agent would need to infer these details from the tool name and general Photoshop knowledge.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents the document_id parameter well. The description adds no additional parameter semantics beyond what the schema provides, so the baseline 3 is appropriate.

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

Purpose4/5

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

The description 'Merge all visible layers into one' clearly states the action (merge) and the resource (visible layers), which distinguishes it from siblings like photoshop_flatten_image (which flattens all layers, not just visible ones) and photoshop_delete_layer. However, it doesn't explicitly name the sibling it differs from, so it loses a point for not fully differentiating.

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 (when you want to combine visible layers), but it doesn't explicitly state when not to use it or mention alternatives like photoshop_flatten_image. The document_id parameter description provides some context about activation, but no explicit usage guidance is given.

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

photoshop_move_layerA

Move the active layer by specified offset

NameRequiredDescriptionDefault
deltaXYesHorizontal offset in pixels (can be negative)
deltaYYesVertical offset in pixels (can be negative)
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

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 behavioral disclosure burden. It clearly states the operation: the active layer is moved by a supplied offset. It does not mention that the move is relative to the current layer position, that document_id activates the target document before running, or coordinate-system details; these are partially recoverable from the schema but not fully disclosed in the description.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler. It packs the verb, target, and operand into eight words and is immediately scannable. Every word contributes to understanding the tool's core purpose.

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 mutation tool with fully documented required parameters, the description plus schema is nearly sufficient. The main missing context is the implicit prerequisite that a layer must be active/selected and what the tool returns, but the core semantics required for correct invocation are clear enough.

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

Parameters3/5

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

Schema description coverage is 100%, so deltaX, deltaY, and document_id are already documented with types, defaults, and notes. The tool description adds no parameter-level meaning beyond the schema, which is the baseline situation. It does not enrich semantics like units beyond pixels or the exact activation behavior of document_id.

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

Purpose5/5

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

The description states a specific action ('Move'), a precise target ('the active layer'), and the exact nature of the change ('by specified offset'). This clearly distinguishes it from sibling tools like photoshop_move_layer_to_position, photoshop_scale_layer, and the various z-order movement tools, because it is about translating a layer by pixel offsets rather than reordering or transforming in other ways.

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 context is implied but not explicit: the phrase 'by specified offset' signals a relative pixel movement, which separates it from absolute-position and reorder tools. However, the description does not state when to prefer this tool, that a layer must first be active/selected, or what prerequisites apply. The agent must infer selection criteria from sibling names rather than from clear guidance.

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

photoshop_move_layer_downA

Move the active layer down one position in the layer stack

NameRequiredDescriptionDefault
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

A4/5.0
Behavior4/5

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

With no annotations provided, the description carries the behavioral burden. It clearly states that the operation affects the active layer and moves it one position down in the stack. It does not cover edge cases like what happens when the layer is already at the bottom, but the core behavior is transparent and non-misleading.

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

Conciseness5/5

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

A single sentence that is front-loaded with the action and precisely scopes the effect. No filler or redundant wording; every word contributes to understanding the operation.

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-step reorder tool with one optional parameter and no output schema, the description is largely complete. It identifies the target (active layer), the operation (move down), and the magnitude (one position). Minor gaps such as behavior at the stack boundary are not critical for correct typical use.

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

Parameters3/5

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

The only parameter, document_id, is fully described in the schema with 100% coverage, including its source and purpose. The tool description itself adds no parameter details, but since the schema already does the heavy lifting, the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb ('Move'), a precise resource ('the active layer'), and an exact effect ('down one position in the layer stack'). This clearly distinguishes it from sibling tools such as photoshop_move_layer_up, photoshop_move_layer_to_top, and photoshop_move_layer_to_position.

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

Usage Guidelines3/5

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

The description implies the usage context: when you need to reorder the active layer downward by exactly one position. However, it does not explicitly mention alternatives or exclusion criteria, such as using photoshop_move_layer_to_position for arbitrary reordering or photoshop_move_layer_to_bottom for jumping to the end.

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

photoshop_move_layer_to_bottomA

Move the active layer to the bottom of the layer stack

NameRequiredDescriptionDefault
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

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 is the sole behavioral disclosure. It clearly states the core effect of reordering the active layer, but it does not mention edge behavior such as what happens if the layer is already at the bottom, if no layer is active, or if a background layer exists.

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

Conciseness5/5

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

The description is a single sentence that is front-loaded with the action and target, contains no filler, and every word contributes meaning.

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 reorder operation with one optional and fully documented parameter, the description is mostly complete. It lacks a note about the active-layer prerequisite and possible failure or edge cases, but these are not severe gaps given the tool's simplicity.

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

Parameters3/5

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

The only parameter, document_id, is already fully documented in the schema, including its source and purpose. The tool description adds no additional parameter semantics, and with 100% schema coverage the baseline of 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb ('Move'), a concrete resource ('active layer'), and an exact destination ('bottom of the layer stack'). This clearly differentiates it from sibling tools such as move_layer_to_top, move_layer_up, move_layer_down, and move_layer_to_position.

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 intended use is implied by the description—use this when the active layer should go to the bottom. However, it does not explicitly mention when to choose this over the sibling movement tools, nor does it state exclusions, preconditions, or alternatives.

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

photoshop_move_layer_to_positionC

Move the active layer relative to another layer

NameRequiredDescriptionDefault
positionYesPosition relative to target layer
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.
targetLayerNameYesName of the layer to move relative to

TDQS

C2.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 burden of behavioral disclosure. It only says 'Move', implying a layer-stack reorder, but gives no details about how the active layer is determined, what happens when targetLayerName is not found, or the effect of each enum value. This is insufficient for a mutating operation with no safety annotations.

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

Conciseness4/5

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

The description is one short, front-loaded sentence with no filler. It is concise, though the brevity contributes to the ambiguity around TOP/BOTTOM and sibling differentiation.

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

Completeness2/5

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

Given the lack of annotations and output schema, along with many overlapping sibling tools, this minimal description is not complete enough for consistent correct invocation. Important context around enum semantics, required preconditions, and sibling selection is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The tool description adds no additional meaning beyond restating the relational movement; the position parameter descriptions in the schema still leave TOP/BOTTOM ambiguous, but the description itself does not need to compensate when the schema already documents all parameters.

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

Purpose3/5

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

The description states the verb, resource (active layer), and relational target, so the core action is visible. However, it leaves the meaning of TOP/BOTTOM within 'relative to another layer' ambiguous and does not differentiate the tool from siblings like photoshop_move_layer_to_top, photoshop_move_layer_to_bottom, or photoshop_move_layer.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus the many similar layer-stack tools. The description does not explain when ABOVE/BELOW should be chosen over TOP/BOTTOM, nor when this tool is preferable to move_layer_to_top or move_layer_up.

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

photoshop_move_layer_to_topA

Move the active layer to the top of the layer stack

NameRequiredDescriptionDefault
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

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 behavioral burden. It clearly discloses the core effect (moving the active layer to the top of the layer stack), but it does not mention side effects such as whether the active layer remains active, what happens if it is already at the top, or response behavior.

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

Conciseness5/5

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

The description is a single front-loaded sentence with no filler or repetition. Every word earns its place.

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

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 mutation, the description together with the schema gives the agent what it needs: the object (active layer), the operation (move), and the destination (top). No output schema exists, and the description does not detail return values, but the core invocation context is complete.

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

Parameters3/5

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

The only parameter, document_id, is fully explained in the input schema, including the activation behavior when set. Schema description coverage is 100%, so the description does not need to add parameter detail; the baseline of 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb and resource: 'Move the active layer to the top of the layer stack.' The destination 'top' distinguishes it clearly from sibling tools like photoshop_move_layer_to_bottom, photoshop_move_layer_up, and photoshop_move_layer_down.

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 the sibling reordering tools (e.g., move_layer_to_position, move_layer_up) or any prerequisites such as needing an active layer. The only usage signal is the destination implied by the tool's own name.

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

photoshop_move_layer_upA

Move the active layer up one position in the layer stack

NameRequiredDescriptionDefault
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations present, the description carries the full behavioral disclosure burden. It accurately states what the tool does, but it does not mention edge cases like what happens if the active layer is already at the top of the stack, or whether the operation requires a prior document/layer selection. The core behavior is clear, but some behavioral context 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?

A single, well-formed sentence with no filler. It front-loads the action and precisely scopes the result. Every word contributes 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 simple single-step operation with only one optional parameter and no output schema, the definition is nearly complete. It could mention the no-op scenario at the top of the layer stack, but that is a minor gap given the straightforward nature of the action.

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?

There is only one parameter and the schema description covers it fully, explaining that document_id optionally activates the document before running. The description adds no extra parameter meaning, but none is needed given 100% schema coverage, so the baseline of 3 applies.

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

Purpose5/5

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

The description states a specific verb ('Move'), a specific resource ('active layer'), and an exact behavior ('up one position in the layer stack'). It is unambiguous and naturally distinguishes itself from sibling tools like move_layer_down, move_layer_to_top, and move_layer_to_bottom.

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 context is implied: use this when the agent needs to nudge the active layer up by one position. However, there is no explicit guidance about when to choose this over the related siblings (e.g., move_layer, move_layer_to_position, move_layer_to_top), leaving some routing decisions to inference.

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

photoshop_neural_filterA

Apply a Photoshop Neural Filter via the companion UXP bridge plugin.

Use when: skin smoothing, harmonize composite layers, depth blur, super zoom, or colorizing B&W photos. Do NOT use when: uxp_bridge_reachable is false — install uxp-plugin per docs/development.md.

Returns: { ok, summary, details }. Preconditions: UXP bridge plugin running in Photoshop; PS 22+.

NameRequiredDescriptionDefault
blurNoSkin smoothing blur 0-100 (skin_smoothing only)
filterYesNeural filter to apply
smoothnessNoSkin smoothing smoothness 0-100 (skin_smoothing only)
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.
reference_layer_idNoLayer id for harmonize reference (harmonize only)

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description carries full behavioral burden. It does disclose preconditions (UXP plugin, PS 22+) and the return shape { ok, summary, details }. However, it does not state whether the filter modifies the active layer destructively, whether it requires a selection, or what happens to existing layer stack. This is a clear gap for a mutation tool.

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

Conciseness5/5

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

The description is tightly scoped: a one-line core purpose, a bullet-like 'Use when'/'Do NOT use when' pair, and two compact sentences for return and preconditions. No wasted words, and all critical information is front-loaded.

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

Completeness4/5

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

Given the moderate complexity (5 params, no output schema), the description covers return values, preconditions, and usage boundaries. It doesn't explicitly state which document/layer is affected, but the document_id parameter description fills that gap. Missing explicit failure modes beyond the uxp_bridge_reachable condition, but overall adequate.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description's 'Use when' list maps to the filter enum values but adds no extra meaning beyond the schema's own parameter descriptions. No additional semantic value is provided.

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

Purpose5/5

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

The description clearly states the verb 'Apply' and the resource 'Photoshop Neural Filter', plus enumerates five specific use cases (skin smoothing, harmonize, depth blur, super zoom, colorize). This distinguishes it from sibling filter tools like photoshop_apply_gaussian_blur.

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

Usage Guidelines5/5

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

Explicit 'Use when' and 'Do NOT use when' sections give concrete selection criteria, including a specific condition (uxp_bridge_reachable false) and a remediation pointer (install uxp-plugin). This leaves no ambiguity about when to invoke this tool.

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

photoshop_open_imageA

Open an image file as a new Photoshop document.

Use when: user provides a file path to edit or no document is open yet. Do NOT use when: adding to an existing composite — use photoshop_place_image.

Returns: document id, name, width, height. Preconditions: file must exist on disk. Side effects: opens document as active.

NameRequiredDescriptionDefault
filePathYesFull path to the image file
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description carries the full disclosure burden. It states the precondition that the file must exist on disk, the side effect of opening the document as active, and the returned fields, which are meaningful behavioral details beyond the schema.

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

Conciseness5/5

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

The description is compact and well-structured, with key statements front-loaded and each line earning its place. It uses labeled sections for use cases, returns, preconditions, and side effects without unnecessary prose.

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 tool with no annotations and no output schema, the description provides everything essential: the action, when to use it, when not to, the alternative tool, return values, preconditions, and side effects. The optional document_id parameter is fully covered by the 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 description coverage is 100%, so the schema already documents both filePath and document_id clearly. The description adds no parameter-level meaning beyond the schema, which matches the baseline for fully covered parameters.

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

Purpose5/5

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

The description states a specific verb and resource: 'Open an image file as a new Photoshop document.' It also differentiates from the sibling photoshop_place_image by explicitly noting the new-document scope, so an agent can distinguish it from related tools.

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

Usage Guidelines5/5

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

Provides explicit 'Use when' conditions and a 'Do NOT use when' rule with the named alternative photoshop_place_image. This gives clear routing guidance for when to select this tool versus a sibling.

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

photoshop_pingA

Verify that the Photoshop scripting engine can run a script.

Use when: once at session start, and after extendscript_timeout until this call succeeds. Do NOT use when: on every tool call — after a successful ping, use photoshop_get_state. Do not call get_state or get_layers while this ping is still failing.

Returns: "Successfully connected to Photoshop" only after a short script runs inside Photoshop. While a previous script is still running, returns extendscript_timeout — retry photoshop_ping. If that timeout happens while the OS drive has under 10 GB free, returns scratch_disk_full instead: free space on the scratch disk and restart Photoshop. If Photoshop is not installed or not running, returns a failure string and does not launch the app. Preconditions: none. Side effects: may trigger Photoshop detection. Does not launch Photoshop.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations provided, the description fully carries the behavioral burden. It discloses the success condition, the extendscript_timeout retry case, the scratch_disk_full condition with free-space threshold and remediation, the failure string when Photoshop is absent, preconditions, and side effects including that it does not launch Photoshop.

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 organized into Use when, Do NOT use when, Returns, Preconditions, and Side effects. Despite its detail, every sentence carries operational value for a diagnostic tool with non-trivial failure modes.

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 diagnostic tool with no output schema and no annotations, the description covers the relevant return states, retry behavior, failure cases, preconditions, and side effects. Nothing an agent needs in order 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.

Parameters4/5

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

The tool has zero parameters, so there is no parameter semantics for the description to clarify. It appropriately stays focused on invocation context and return behavior rather than inventing parameter details.

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

Purpose5/5

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

The description states a specific verb+resource: verify that the Photoshop scripting engine can run a script. It clearly distinguishes this diagnostic tool from operational siblings such as photoshop_get_state, photoshop_get_layers, and ps_execute_script.

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

Usage Guidelines5/5

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

It explicitly defines when to use the tool: once at session start and after extendscript_timeout until it succeeds. It also defines when not to use it and names the alternative, photoshop_get_state, after a successful ping, plus warns not to call get_state/get_layers while ping is failing.

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

photoshop_place_imageA

Place an external image file as a new layer in the active document.

x/y are absolute canvas coordinates for the placed layer's top-left bound in pixels (0,0 = document top-left). They are NOT an offset from Photoshop's default centered Place.

Use when: compositing assets into an open document at a known position. Do NOT use when: opening a file as a new document — use photoshop_open_image.

Returns: placed layer name, bounds, and position.semantics = absolute_top_left. Preconditions: active document; file must exist. Side effects: adds a new layer.

NameRequiredDescriptionDefault
xNoAbsolute canvas X of the placed layer top-left, in pixels (default: 0)
yNoAbsolute canvas Y of the placed layer top-left, in pixels (default: 0)
filePathYesFull path to the image file (JPEG, PNG, PSD, etc.)
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

A4.7/5.0
Behavior4/5

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

With no annotations provided, the description carries the full behavioral disclosure burden. It states side effects ('adds a new layer'), preconditions ('active document; file must exist'), and clarifies coordinate semantics (absolute top-left, not offset). It also notes the return value (placed layer name, bounds, position). While it doesn't cover error scenarios or all edge cases, it discloses the essential behavioral traits an agent needs to predict outcomes.

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 efficiently structured with no redundancy. It front-loads the core purpose, then addresses coordinate semantics, usage guidelines, returns, preconditions, and side effects in a clear, bullet-like flow. Every sentence contributes meaningful information without wasted words.

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

Completeness5/5

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

Given the tool's complexity (4 parameters, no output schema, no annotations), the description is remarkably complete. It covers purpose, coordinate semantics, usage conditions, return values, preconditions, and side effects. The parameter meanings are fully captured in the schema, and the description fills in the behavioral and contextual gaps, making it sufficient for an agent to invoke correctly without further investigation.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds valuable semantic context for x/y coordinates, explicitly stating they are absolute canvas coordinates for the top-left bound and NOT an offset from the default centered place. This clarification goes beyond the schema's own descriptions. The document_id parameter is well-described in the schema, so no additional explanation is needed in the description.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Place an external image file as a new layer in the active document.' This clearly distinguishes it from sibling tools like photoshop_open_image (which opens a file as a new document) and other layer operations. The purpose is unambiguous and directly states what the tool accomplishes.

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

Usage Guidelines5/5

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

The description explicitly provides both when to use ('compositing assets into an open document at a known position') and when not to use ('opening a file as a new document — use photoshop_open_image'), naming the alternative tool. This gives the agent precise routing guidance with no ambiguity.

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

photoshop_play_actionA

Play a recorded action from the Actions palette.

Names are the ones the Actions panel shows, in the Photoshop UI language: the built-in set is "Default Actions" only in English Photoshop. When the set or the action does not exist, the error (code invalid_arguments) lists the names this Photoshop has; retry with one of them.

NameRequiredDescriptionDefault
actionNameYesName of the action to play, exactly as the Actions panel shows it
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.
actionSetNameYesName of the action set containing the action, exactly as the Actions panel shows it (localized for the sets Photoshop ships)

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 add real behavioral context: action and set names are localized to the Photoshop UI language, 'Default Actions' is English-only, and a failure returns code invalid_arguments with the available names. It does not say the tool mutates the document, which document it targets, or whether results are undoable.

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

Conciseness5/5

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

Two sentences, both front-loaded with the essential information: what the tool does, then the naming/localization constraint and error recovery. Nothing is padded or restated.

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

Completeness3/5

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

For a mutation tool with no annotations and no output schema, the description covers purpose, naming semantics, and error recovery well. It is still silent on the side effects of playing an action, undo behavior, and how targeting works, which leaves meaningful gaps for an agent invoking it blind.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description still adds meaning beyond the schema by explaining that names are localized and that 'Default Actions' exists only in English Photoshop, plus that a bad name can be corrected from the error payload's name list. That is more than restating the schema's 'exactly as the Actions panel shows it.'

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

Purpose4/5

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

Opens with a specific verb and resource: 'Play a recorded action from the Actions palette.' That tells an agent exactly what capability this exposes. It stops short of stating how it differs from adjacent execution tools like photoshop_execute_script or the recipe tools, so sibling differentiation is left implicit.

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

Usage Guidelines3/5

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

The second sentence describes a recovery path when the set or action doesn't exist: read the invalid_arguments error, pick a listed name, retry. That is useful operational guidance, but the description never says when to choose this tool over alternatives such as photoshop_execute_script or a recipe, so usage selection is only implied.

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

photoshop_rasterize_layerA

Rasterize the active layer (convert text/smart object to normal layer)

NameRequiredDescriptionDefault
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It discloses the core behavior (conversion to a normal layer, implying loss of text/smart-object editability) but does not explicitly state that the operation is irreversible or that it may affect layer styles/filters. The active-layer scope is mentioned, which is helpful, but the potential loss of non-destructive editing capabilities is only implicit.

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 that immediately states the action and its effect. It is concise, with no redundant words or filler, and every word 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, single-action tool with one optional parameter and no output schema, the description is largely sufficient. It clarifies the target (active layer) and the conversion outcome. The only notable gap is the lack of an explicit irreversibility warning, but the nature of rasterization is well-understood and the tool name itself implies the action. Overall, an agent can correctly invoke this tool with the provided information.

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

Parameters3/5

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

The schema describes the single optional parameter document_id fully, giving its purpose and usage. The description adds no extra meaning about the parameter, so with 100% schema coverage, the baseline score of 3 is appropriate; the description does not need to repeat schema details.

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

Purpose5/5

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

The description states a specific verb ('Rasterize') and resource ('the active layer') with a clear outcome ('convert text/smart object to normal layer'). It distinguishes itself from related tools like convert_to_smart_object, which is the inverse operation, and from other layer manipulation tools.

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

Usage Guidelines3/5

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

The description implies the tool is for rasterizing the currently active layer, but it does not explicitly state when to use it versus alternatives (e.g., when you want to preserve editability, use convert_to_smart_object or edit the text directly). There is no mention of prerequisites or exclusions, leaving the agent to infer the use case.

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

photoshop_recipe_apply_color_gradeA

Apply a named color grading preset as a non-destructive layer group (Hue/Saturation adjustment + brightness/contrast tweak).

Users often say: cinematic look, teal and orange, moody grade, color grade.

Use when: the user wants a quick stylistic look applied to the active document. Do NOT use when: the user wants subject-specific color edits (e.g. only the skin) — current recipe applies globally.

Returns: { ok, summary, details: { preset, group_name } }.

Preconditions: active document in RGB mode. CMYK/Grayscale return unsupported_color_mode. Side effects: adds one layer group with adjustment layers; one undo reverts.

NameRequiredDescriptionDefault
presetNoPreset name. One of: cinematic, vintage, teal_orange, bw, warm_film, cool_dusk. Default cinematic.cinematic
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations are absent, so the description carries full behavioral disclosure. It states the operation is non-destructive, adds a layer group with adjustment layers, is reversible with one undo, requires RGB mode, and returns unsupported_color_mode for CMYK/Grayscale. This is thorough and directly actionable.

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 organized into compact labeled sections, with the core behavior front-loaded and every sentence carrying useful information. There is no filler or repetition of schema details.

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 two-parameter recipe with no output schema, the description fully covers what an agent needs: behavior, usage triggers, exclusions, return shape, preconditions, and side effects. No critical operational detail is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline applies. The description reinforces preset intent and global scope but does not add parameter-specific semantics beyond what the input schema already documents for preset and document_id.

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

Purpose5/5

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

The description states a specific verb and resource: apply a named color grading preset as a non-destructive layer group. It also clarifies the implementation (Hue/Saturation + brightness/contrast) and separates this recipe from sibling adjustment tools by framing it as a quick global stylistic look.

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

Usage Guidelines5/5

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

Explicit 'Use when' and 'Do NOT use when' guidance is present, with concrete user phrasings ('cinematic look', 'teal and orange') and a clear exclusion for subject-specific edits. This gives an agent decisive routing criteria without needing to open sibling tool schemas.

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

photoshop_recipe_batch_mockup_replaceA

Iterate a directory of asset images, replace the contents of the named Smart Object in the active mockup PSD for each asset, and export a flattened JPEG per variant. The mockup's perspective/warp on the Smart Object is preserved.

Use when: the user has a mockup PSD and wants to render it once per design asset (logos, screens, product photos). Do NOT use when: the asset is not a single layer (use photoshop_place_image manually) or when the active document has no Smart Object with the requested name.

Returns: { ok, summary, output_paths, details: { variants: [{ source_asset, output_path }] } }.

Preconditions: active document containing a Smart Object layer named exactly as requested; assets_dir must exist and be readable. Side effects: writes one JPEG per asset; the active mockup PSD ends up with the LAST asset placed.

NameRequiredDescriptionDefault
qualityNoJPEG quality on the Photoshop 1-12 scale. Default 10.
assets_dirYesAbsolute path to the directory containing asset files. Subdirectories are NOT recursed. Allowed extensions: jpg/jpeg/png/tif/tiff/psd/psb/webp.
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.
smart_object_layer_nameYesExact name of the Smart Object layer in the active document. Case-sensitive.

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and handles it well: it discloses side effects (writes one JPEG per asset and leaves the last asset placed in the active PSD), preconditions, and return shape. It also notes that the mockup's perspective/warp is preserved, which clarifies an important behavioral guarantee.

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 organized into clear labeled sections: usage conditions, exclusions, returns, preconditions, and side effects. Every sentence contributes information an agent needs, and the key action is front-loaded.

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?

Despite having no output schema, the description specifies the return structure with ok, summary, output_paths, and details. It covers when to use, when not to use, prerequisites, side effects, and the persistence of mockup perspective, making the tool fully callable by an agent.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all four parameters and their constraints. The description reiterates the overall batch role but does not add meaningful parameter-level semantics beyond what the schema provides.

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

Purpose5/5

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

States a specific verb and resource: iterate a directory of assets, replace Smart Object contents in a mockup PSD, and export flattened JPEGs per asset. It clearly distinguishes this from sibling tools by framing it as a batch mockup workflow with the perspective/warp preserved.

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

Usage Guidelines5/5

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

Provides explicit 'Use when' and 'Do NOT use when' guidance, including the exact alternative (photoshop_place_image) for single-layer assets. It also lists preconditions for the active document and assets_dir, so an agent knows the required context before calling.

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

photoshop_recipe_batch_watermarkA

Apply a text or logo watermark to every image in a folder and export watermarked JPEGs. Replaces the clunky record-an-action + File > Automate > Batch workflow.

Use when: the user wants to watermark many photos at once (copyright text, studio logo). Do NOT use when: watermarking a single open document (use photoshop_create_text_layer / photoshop_place_image directly) or removing watermarks (not supported).

Returns: { ok, summary, output_paths, details: { processed, failed: [{ file, error }] } }. Files that fail are skipped, not fatal.

Preconditions: assets_dir exists; either text or logo_path given. No active document required. Side effects: writes one JPEG per source image; source files are never modified.

NameRequiredDescriptionDefault
textNoWatermark text (e.g. "© Jane Doe 2026"). White, semi-transparent. Required unless logo_path is given.
opacityNoWatermark layer opacity 0-100. Default 40.
qualityNoJPEG quality on the Photoshop 1-12 scale. Default 10.
positionNoWatermark placement. Default bottom_right.bottom_right
font_sizeNoText watermark size in pixels. Default 0 = auto (4% of each image height, min 8px).
logo_pathNoAbsolute path to a logo image (transparent PNG recommended). Required unless text is given. If both are given, text wins.
margin_pxNoDistance from the chosen edge(s) in pixels. Default 24 (ignored for center).
scale_pctNoLogo watermark width as a percentage of image width (1-100). Default 15. Logo mode only.
assets_dirYesAbsolute path to the folder of images to watermark. Subdirectories are NOT recursed. Allowed extensions: jpg/jpeg/png/tif/tiff/webp.
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure and delivers: side effects ('writes one JPEG per source image; source files are never modified'), preconditions (assets_dir exists; text or logo_path given; no active document required), error semantics ('Files that fail are skipped, not fatal'), and the return shape. The schema adds the document_id activation behavior. This is comprehensive 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?

Well-structured with labeled sections (Use when, Do NOT use, Returns, Preconditions, Side effects) and front-loaded core purpose. It's longer than minimal, but for a 10-parameter batch tool with no annotations, every sentence carries information. Minor deduction only because a couple of points (e.g., 'text wins' precedence) also appear in the schema — a small redundancy, not waste.

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

Completeness4/5

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

For a complex 10-param tool with no annotations and no output schema, the description covers preconditions, side effects, error handling, return format, and usage boundaries. The only gaps are minor: the exact output filename/naming convention and destination folder are not stated in prose (though output_paths implies them). Otherwise an agent has everything needed 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?

Schema coverage is 100%, so baseline is 3. The description adds genuine value beyond the schema: the 'text wins if both are given' precedence rule, the font_size default 0 = auto sizing at 4% of image height, and the logo/text mutual exclusivity. It does not restate every parameter, which is appropriate given the schema's own rich descriptions. Slight deduction for not clarifying output JPEG path/naming in prose, but that's covered by the return's output_paths.

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: 'Apply a text or logo watermark to every image in a folder and export watermarked JPEGs.' The recipe_ prefix already signals it's a high-level workflow distinct from single-document tools, and the description explicitly differentiates from siblings by naming the alternatives it is not. The distinction from photoshop_create_text_layer and photoshop_place_image 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 Guidelines5/5

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

Explicit 'Use when' and 'Do NOT use when' sections with named alternative tools (photoshop_create_text_layer / photoshop_place_image for single docs) and a clear exclusion (removing watermarks is not supported). This is textbook guidance — nothing is left to inference.

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

photoshop_recipe_csv_to_cardsA

Data-driven graphics batch: convert a CSV file into Photoshop data sets, apply each row to the active template document and export one image per row. "Mail merge for images" — name cards, badges, certificates, personalized banners.

Users often say: csv to images, batch name cards, personalized banners, generate badges from spreadsheet, sertifika bastır.

CSV rules: first row = variable names matching the variables defined in the template PSD (Image > Variables > Define). A cell holding an absolute path to an image file (.png/.jpg/.webp/.tif/.psd) is treated as a pixel-replacement variable.

Use when: the user has a template PSD with variable-bound layers and a CSV of rows. Do NOT use when: the document has no variables defined — define them in Photoshop first (Image > Variables > Define).

Returns: { ok, summary, details: { rows, exported, output_paths, xml_path } }.

Preconditions: active document with variable-bound layers; readable CSV file. Side effects: writes a temp variables XML and one output file per row into output_dir.

NameRequiredDescriptionDefault
formatNoOutput format (default JPEG)JPEG
csv_pathYesAbsolute path to the CSV file (first row = variable names)
output_dirYesDirectory for generated files (created if missing)
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

A4.6/5.0
Behavior4/5

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

Although no annotations are provided, the description clearly discloses side effects: 'writes a temp variables XML and one output file per row into output_dir'. It also states preconditions and the fact that it writes files. It doesn't mention possible failure modes or rate limits, but the side-effect disclosure is strong. Not a contradiction; it's a write operation and that is clearly stated.

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

Conciseness4/5

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

The description is structured with headers ('CSV rules', 'Use when', 'Do NOT use when', 'Returns', 'Preconditions', 'Side effects'), making it highly scannable. It is a bit long but each section adds value. The front-loaded 'mail merge for images' analogy is helpful. Minor redundancy but overall well organized.

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?

Despite no output schema, the description spells out the return object: '{ ok, summary, details: { rows, exported, output_paths, xml_path } }'. It also lists all preconditions and side effects. For a batch operation with 4 parameters, this is complete: an agent knows exactly what to expect and what is required to call it successfully.

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 schema already has 100% coverage, so the baseline is 3. The description adds key semantic context beyond the schema: it explains that the CSV first row defines variable names and that image paths are treated as pixel replacements. The document_id's purpose is well explained in the schema itself, and the description doesn't need to add more. This extra context justifies a 4.

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

Purpose5/5

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

The description clearly states the verb (convert -> export), the resource (CSV to data sets/template), and the specific action: 'apply each row to the active template document and export one image per row'. It also includes common user phrasings, which strongly helps an agent map intent to this tool and distinguishes it from generic export or dataset tools.

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

Usage Guidelines5/5

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

The description explicitly states when to use ('when the user has a template PSD with variable-bound layers and a CSV of rows') and when not to use ('Do NOT use when: the document has no variables defined — define them in Photoshop first'). It also provides prerequisites and clarifies the CSV first-row rule, leaving no ambiguity about the required setup.

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

photoshop_recipe_dodge_burnA

One-shot dodge & burn setup: creates a 50% gray layer in Overlay or Soft Light mode for non-destructive light sculpting. Wrapped in a single undoable history step.

Users often say: dodge and burn, sculpt light, lighten face, darken shadows.

Use when: the user wants a ready-to-paint dodge & burn layer above the subject. Do NOT use when: the user wants automated retouch — this only sets up the paint layer; paint white (dodge) and black (burn) manually at low opacity. Do NOT use when: automated portrait smoothing is enough — use photoshop_recipe_enhance_portrait instead.

Returns: { ok, summary, undo_history_states_consumed, details: { layer_name, blend_mode } }.

Preconditions: active document with a raster-compatible active layer. Side effects: adds one "Dodge & Burn" layer above the active layer; one undo reverts.

NameRequiredDescriptionDefault
blend_modeNoRetouch blend mode: overlay (default, stronger) or soft_light (gentler)overlay
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

A4.7/5.0
Behavior4/5

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

Although there are no annotations to rely on, the description goes beyond the basic action by disclosing side effects (adds one 'Dodge & Burn' layer above the active layer), the undoable nature (single history step, one undo reverts), and preconditions (active document with raster-compatible layer). It also details return values explicitly, which is valuable. The only minor gap is that it doesn't specify error behavior if preconditions are not met, but the provided information is already strong for a tool with no annotations.

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

Conciseness5/5

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

The description is tightly organized, with the core purpose in the first sentence, followed by user phrasing, clear usage conditions, returns, and side effects in a logical flow. Every sentence adds critical information without redundancy. It avoids unnecessary fluff and is appropriately front-loaded with the most important details.

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

Completeness5/5

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

Given the tool's moderate complexity (one layer creation with two modes), the description covers all essential aspects: purpose, usage scope, return format, preconditions, side effects, and alternatives. It also compensates for the lack of output schema by explicitly listing the return structure. An agent can confidently select and invoke this tool correctly based on the description alone.

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

Parameters4/5

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

The input schema already describes both parameters with 100% coverage: blend_mode is an enum with default and the document_id has a clear description. The description adds contextual value by clarifying that blend_mode's 'overlay' is stronger and 'soft_light' is gentler, and it explains why document_id is useful (prevents UI tab switch retargeting). This goes beyond the schema, earning a score above the baseline of 3.

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

Purpose5/5

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

The description clearly states the verb (creates) and the resource (a dodge & burn setup layer), and it specifies the exact technical setup: 50% gray layer in Overlay or Soft Light mode. It explicitly distinguishes itself from the sibling photoshop_recipe_enhance_portrait by noting it is for manual painting, not automated smoothing. This high specificity leaves no ambiguity about what the tool does.

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

Usage Guidelines5/5

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

The description provides explicit 'Use when' and 'Do NOT use when' conditions. It names the alternative tool (photoshop_recipe_enhance_portrait) for automated smoothing, and clarifies that this tool is for manual retouching only. This gives the agent clear routing guidance with minimal inference needed.

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

photoshop_recipe_enhance_portraitA

Set up a non-destructive portrait enhancement: duplicates the active layer, builds a frequency separation pair (low/high) for skin smoothing, and adds an auto-tone curves adjustment on top. Grouped as "Enhance Portrait" and reversible with one undo.

Users often say: smooth skin, retouch portrait, fix blemishes, clean up face.

Use when: the user asks to "enhance", "retouch", "clean up" or "smooth" a portrait photo and is happy with a baseline that they can further tweak interactively. Do NOT use when: the user wants destructive, final edits — recommend manual frequency separation work via photoshop_recipe_frequency_separation instead so they can paint by hand.

Returns: { ok, summary, details: { intensity, radius_px, group_name } }.

Preconditions: active document with a NORMAL or background-converted raster layer. Side effects: appends one layer group of 2-3 layers above the active layer; original layer untouched.

NameRequiredDescriptionDefault
intensityNoRetouch strength: low (subtle), medium (default), high (heavier smoothing).medium
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.
skin_smoothingNoWhether to build the frequency separation pair. When false, only the auto-tone curves are added.
use_neural_skinNoApply Neural Filter skin smoothing via UXP bridge before frequency separation (default false)

TDQS

A4.7/5.0
Behavior5/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. It clearly states the operation is non-destructive, explains that the original layer is untouched, mentions the resulting layer group, notes that it is reversible with one undo, and lists preconditions and side effects. This is unusually thorough for a no-annotation tool.

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

Conciseness5/5

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

The description is structured into a clear main sentence, user intent mapping, usage guidance, return shape, preconditions, and side effects. Every section adds decision-relevant information and there is no filler.

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 complex recipe with no annotations and no output schema, this description is complete: it defines the procedure, its non-destructive nature, when to use it, when not to, what it returns, what it requires, and what side effects it causes. An agent can correctly select and invoke this tool without needing additional context.

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

Parameters3/5

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

Schema description coverage is 100%, so the input schema already documents every parameter and its effect. The description does not add new parameter-level meaning beyond the schema, but it does reference intensity in the return details. Baseline 3 is appropriate here.

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

Purpose5/5

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

The description names a specific verb and resource ('Set up a non-destructive portrait enhancement') and then concretely enumerates the steps: duplicate active layer, build frequency separation pair, add auto-tone curves. It is clearly distinguishable from sibling recipe tools like photoshop_recipe_frequency_separation and photoshop_recipe_remove_background.

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

Usage Guidelines5/5

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

The description provides explicit user phrases ('enhance', 'retouch', 'clean up', 'smooth') that should trigger this tool, and an explicit exclusion: 'Do NOT use when: the user wants destructive, final edits', with a named alternative tool. This is exactly the directiveness an agent needs.

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

photoshop_recipe_export_social_variantsA

Render one JPEG per requested social-media platform from the active document. Each variant is center-cropped/resized to the platform spec and saved to disk.

Use when: the user wants multi-platform deliverables in one shot. Do NOT use when: only one export is needed (use photoshop_recipe_prepare_for_web instead) or when platforms differ by content rather than crop (recipe does not change content, only frame).

Returns: { ok, summary, output_paths, details: { variants } }.

Preconditions: active document. Aspect ratios that differ from the source result in a center-crop (no padding). Side effects: writes one file per platform; source unchanged.

NameRequiredDescriptionDefault
qualityNoJPEG quality on the Photoshop 1-12 scale. Default 9.
platformsNoSlugs of platforms to export. Known: instagram_post, instagram_story, instagram_reel, x_post, x_header, facebook_post, facebook_cover, linkedin_post, linkedin_banner, youtube_thumbnail, tiktok_vertical, pinterest_pin. Default: instagram_post, instagram_story, x_post.
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses side effects (writes one file per platform, source unchanged), preconditions (active document), and the center-crop behavior (no padding). This is strong coverage, though it omits error scenarios or what happens on failure.

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

Conciseness4/5

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

The description is well-structured with a summary sentence, explicit usage guidance, return structure, preconditions, and side effects. Each section serves a purpose; it's longer than the HIGH example but every sentence earns its place without redundancy.

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

Completeness5/5

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

Given the tool's complexity (multi-platform export, crop behavior, return shape) and the absence of an output schema, the description covers return format, preconditions, side effects, and the key cropping rule. An agent has everything needed to decide and invoke 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 100%, and all three parameters have clear descriptions (quality scale, platform slugs with known values, document_id purpose). The description adds no extra param meaning beyond the schema, so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool renders one JPEG per requested social-media platform from the active document, with center-cropping/resizing and saving to disk. It explicitly distinguishes itself from photoshop_recipe_prepare_for_web, so an agent can tell it apart 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 Guidelines5/5

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

Provides explicit 'Use when' and 'Do NOT use when' conditions, naming the alternative tool (photoshop_recipe_prepare_for_web) and the distinguishing criterion (multi-platform vs single, content vs crop). No ambiguity remains.

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

photoshop_recipe_frequency_separationA

Build a frequency separation stack (Low + High) on top of the active layer for hands-on retouching. Does not apply any smoothing itself — the user paints into the layers afterwards.

Users often say: frequency separation, split texture and color, manual retouch setup.

Use when: the user explicitly wants frequency separation setup, typically for portrait or product retouching. Do NOT use when: the user wants a one-shot result without painting — use photoshop_recipe_enhance_portrait instead.

Returns: { ok, summary, details: { radius_px, group_name } }.

Preconditions: active document with a NORMAL raster active layer. Side effects: appends a "Frequency Separation" layer group with 2 prepared layers; one undo reverts everything.

NameRequiredDescriptionDefault
radius_pxNoGaussian blur radius for the low-frequency layer. 4-8 for portraits, 10-20 for products. Default 6. Range 1-50.
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations provided, the description carries the full behavioral burden and succeeds. It discloses the key limitation ('Does not apply any smoothing itself'), the actionable side effect ('appends a Frequency Separation layer group with 2 prepared layers'), undo behavior, and preconditions ('active document with a NORMAL raster active layer'). This is comprehensive behavioral disclosure.

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

Conciseness5/5

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

The description is well-structured and front-loaded: purpose first, then user phrasing, then when-to-use/exclusions, then returns, preconditions, and side effects. Each section earns its place, and the 'Users often say' line adds phrase-matching value for intent detection without bloating the text.

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?

Despite no output schema or annotations, the description provides the return shape, preconditions, side effects, and usage boundaries. An agent has everything needed to invoke this tool correctly and to set user expectations about the non-destructive, manual-retouching workflow.

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

Parameters3/5

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

Schema coverage is 100%, and the schema already provides detailed semantics for radius_px (default, range, suggested values) and document_id (source and purpose). The description adds no parameter-level detail beyond what the schema provides, so the baseline 3 for full coverage is appropriate.

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

Purpose5/5

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

The description states a specific verb and resource: 'Build a frequency separation stack (Low + High) on top of the active layer'. It clarifies the intended workflow ('hands-on retouching') and explicitly notes what it does not do ('Does not apply any smoothing itself'). This distinguishes it from sibling tools like photoshop_recipe_enhance_portrait without ambiguity.

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

Usage Guidelines5/5

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

The description explicitly provides a 'Use when' condition ('user explicitly wants frequency separation setup') and a 'Do NOT use when' exclusion with a named alternative ('use photoshop_recipe_enhance_portrait instead'). This is exactly the guidance an agent needs to select correctly among many recipe siblings.

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

photoshop_recipe_gradient_fadeA

One-shot gradient fade on the active layer mask: creates a reveal-all mask if needed, then paints a linear black-to-white gradient for soft edge blending. Wrapped in a single undoable history step.

Users often say: fade into background, gradient mask, blend subject, soft edge fade, arka planı yumuşat.

This applies a linear gradient on the layer mask channel — not a Gradient Fill layer. Use when: the user wants the active layer to fade into the background or layers below through its mask. Do NOT use when: the subject is not isolated — use photoshop_recipe_remove_background first. Do NOT use when: replacing the sky with an external image — use photoshop_recipe_sky_blend.

Returns: { ok, summary, undo_history_states_consumed, details: { direction, start_pct, end_pct, mask_created, layer_name } }.

Preconditions: active document with an active layer. Side effects: creates or modifies the active layer mask; one undo reverts everything.

NameRequiredDescriptionDefault
end_pctNoGradient end along fade axis (0-100)
angle_degNoOptional gradient angle override in degrees
directionNoGradient fade direction on the mask (default bottom_to_top)bottom_to_top
start_pctNoGradient start along fade axis (0-100)
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations provided, the description carries the full behavioral burden and does so thoroughly. It discloses preconditions, side effects (creates or modifies the active layer mask), undo behavior (single undoable history step), and the return shape. It even clarifies the operation works on the layer mask channel rather than a Gradient Fill layer.

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

Conciseness5/5

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

The description is well-structured and information-dense: a tight opening summary, useful natural-language aliases, explicit exclusions, return format, preconditions, and side effects. Every section earns its place and the most important distinctions are front-loaded.

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 tool with no annotations and no output schema, the description covers everything needed to call it safely: preconditions, what it does, what it does not do, side effects, undo scope, and return value shape. All parameters are optional and well-documented in the schema, so no further context is required.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds context around what the gradient achieves but does not substantially elaborate on parameter meaning beyond the schema's own documentation of direction, start_pct, end_pct, and angle_deg. The return details recap some parameter names, but the schema already handles semantic explanation.

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

Purpose5/5

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

The description states a specific action ('One-shot gradient fade on the active layer mask'), the mechanism (linear black-to-white gradient), and the intended result (soft edge blending). It also explicitly distinguishes itself from a Gradient Fill layer and from sky replacement or background removal recipes, making it easy for an agent to select the right tool.

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

Usage Guidelines5/5

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

The description gives explicit use-when guidance ('use when the user wants the active layer to fade into background'), plus two explicit do-not-use conditions with named alternatives: photoshop_recipe_remove_background for non-isolated subjects and photoshop_recipe_sky_blend for sky replacement. This is exactly the routing clarity an agent needs.

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

photoshop_recipe_organize_layersA

Tidy the active document's layer stack: rename layers using a consistent scheme and optionally auto-group them by kind. Never deletes, merges or rasterizes — visual output stays identical.

Use when: the user complains about layer mess ("layer 1 copy 2", "untitled 7") or asks for organization. Do NOT use when: the user wants smart, semantic naming based on layer content beyond text — recipe only summarizes text layers, not image content.

Returns: { ok, summary, details: { renamed_count, group_count } }.

Preconditions: active document. Side effects: renames top-level layers and (optionally) moves them into kind-grouped folders; one undo reverts everything.

NameRequiredDescriptionDefault
auto_groupNoGroup layers by kind (text / image / shape / adjustment). Default true.
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.
naming_schemeNoHow to rename layers: type_index (default, e.g. text_01), content_summary (text layers get a slug of their content; other kinds get type_index), preserve (do not rename).type_index

TDQS

A4.7/5.0
Behavior5/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 meets it: it guarantees no destructive operations, states side effects precisely ('renames top-level layers and optionally moves them into kind-grouped folders'), and notes that one undo reverts everything. It also declares the active-document precondition.

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: a one-sentence core, clear when/not-when guidance, return shape, preconditions, and side effects. Every section earns its place, and the most important safety behavior is front-loaded ('Never deletes, merges or rasterizes').

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 tool with no annotations and no output schema, the description provides everything an agent needs: return shape, preconditions, side effects, exclusion criteria, and behavior boundaries. It is complete enough to select and invoke correctly without further inference.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds only modest extra meaning for parameters, e.g., 'recipe only summarizes text layers' clarifies content_summary behavior, and 'top-level layers' clarifies scope of grouping, but the schema already documents all three parameters with clear defaults and meanings.

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

Purpose5/5

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

The description starts with a specific verb and resource: 'Tidy the active document's layer stack: rename layers using a consistent scheme and optionally auto-group them by kind.' It clearly distinguishes this recipe tool from single-layer tools like photoshop_rename_layer by stating it operates on the whole stack and never deletes, merges, or rasterizes.

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

Usage Guidelines5/5

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

Explicit 'Use when' and 'Do NOT use when' sections give concrete triggers ('user complains about layer mess') and exclusions ('smart, semantic naming based on layer content beyond text'). This leaves no ambiguity about when to select this tool over alternatives.

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

photoshop_recipe_passport_photoA

Turn the active portrait into a passport/ID photo: removes the background via Select Subject, replaces it with white, crops around the subject with ICAO-style headroom, resizes to the exact official pixel size at 300 DPI, and exports a JPEG. Optionally also builds a 10×15 cm print sheet with multiple copies.

Use when: passport photo, visa photo, ID photo, vesikalık, biyometrik fotoğraf. Do NOT use when: the document has no clear single subject, or official compliance must be guaranteed — head-size rules are approximated from subject bounds (no face detection); official acceptance is NOT guaranteed.

Returns: { ok, summary, output_paths, details: { spec, width, height, sheet } }.

Preconditions: PS ≥ 23 (Select Subject v2); active document with a single-person portrait. Side effects: writes one JPEG (+ one sheet JPEG when make_sheet); source document is unchanged.

NameRequiredDescriptionDefault
specNoTarget size: us_2x2 (600×600 px), eu_35x45 (413×531 px), tr_50x60 (591×709 px). All at 300 DPI. Default us_2x2.us_2x2
qualityNoJPEG quality on the Photoshop 1-12 scale. Default 11.
make_sheetNoAlso export a 10×15 cm (1200×1800 px @300 DPI) print sheet tiled with copies. Default false.
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

A4.5/5.0
Behavior5/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 so thoroughly. It discloses the full multi-step workflow, preconditions (PS ≥ 23, active single-person portrait), side effects (writes JPEG outputs, source unchanged), and limitations (head-size approximated, no face detection, official acceptance not guaranteed).

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 with a front-loaded summary, usage directions, return shape, preconditions, and side effects. Every sentence carries distinct useful information and the formatting makes it easy for an agent to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a complex multi-step recipe with no output schema, yet the description explains the return object shape, what files are written, preconditions, and failure-relevant limitations. An agent has enough context to decide, invoke, and interpret the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and each parameter already has detailed descriptions including enum values, dimensions, defaults, and behavior (e.g. document_id activation semantics). The description adds modest framing like 'official pixel size at 300 DPI' and '10×15 cm print sheet', but does not materially go beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Turn the active portrait into a passport/ID photo', followed by a concrete pipeline of operations (Select Subject, white background, crop, resize, export). This clearly separates it from generic sibling tools like photoshop_crop_document or photoshop_export_as and from other recipes.

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?

Explicit 'Use when' and 'Do NOT use when' sections give concrete triggers (passport/visa/ID photo) and exclusions (no clear subject, official compliance must be guaranteed). The only missing piece is a named alternative tool to use instead in the excluded cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

photoshop_recipe_prepare_for_webA

Export a web-optimized version of the active document: duplicate, convert to sRGB, downscale longest edge, sharpen for screen, save to disk. The source PSD stays untouched.

Use when: the user wants a shareable JPEG/PNG sized for the web from the current artwork. Do NOT use when: the user wants multiple platform-specific exports — use photoshop_recipe_export_social_variants. Do NOT call photoshop_save_document afterwards; this recipe already wrote the file.

Returns: { ok, summary, output_paths, undo_history_states_consumed }.

Preconditions: active document. Format is jpeg (default) or png. Side effects: writes one file to disk; the source document is unchanged.

NameRequiredDescriptionDefault
pathNoOptional output path. Absolute paths used as-is. Relative paths resolve under ~/.photoshop-mcp/exports[/<chat-id>]. Omit to auto-generate.
formatNoOutput format: jpeg (default) or png.jpeg
qualityNoJPEG quality on the Photoshop 1-12 scale. Default 9. Ignored for png.
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.
max_dimension_pxNoLongest-edge pixel cap (default 2048). Min 64, max 8192.

TDQS

A4.9/5.0
Behavior5/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 it fully discloses behavior: it duplicates, converts to sRGB, downscales, sharpens, saves, leaves the source untouched, writes one file, and requires an active document. It also lists the return object, so the agent knows the outcome shape. No behavioral surprises.

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 with clear headings ('Use when', 'Do NOT use when', 'Returns', 'Preconditions', 'Side effects') and front-loads the core action. Each sentence earns its place; no filler or repetition.

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 tool with 5 parameters and no output schema, the description covers preconditions (active document), side effects (one file written, source unchanged), return format, format choices, and parameter semantics. An agent has everything needed to invoke it correctly and predict the outcome.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real value beyond the schema: it explains path resolution (absolute vs relative to ~/.photoshop-mcp/exports), the purpose of document_id (activates the document to prevent retargeting), and that quality is ignored for png. This goes beyond what the schema states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb-resource pair ('Export a web-optimized version of the active document') and enumerates the concrete pipeline steps (duplicate, sRGB, downscale, sharpen, save). It explicitly names the sibling it is not (photoshop_recipe_export_social_variants) and explains the boundary (multiple platform-specific exports), so an agent can distinguish it without inspecting other tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Contains explicit 'Use when' and 'Do NOT use when' sections, naming the alternative tool for the wrong case and explicitly warning against calling photoshop_save_document afterwards because the recipe already writes the file. This leaves no ambiguity about when to invoke it and what not to do.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

photoshop_recipe_remove_backgroundA

THE tool for "remove background" / "arka planı sil" / cut out / isolate subject. Call this once and stop. Unlocks a locked Background layer, then runs Photoshop native Remove Background (Select Subject / Color Range only if native is unavailable). One undo reverts everything.

Use when: the user wants the background gone. Hair, busy interiors, product shots — still this tool. Do NOT rasterize, duplicate, hide layers, select_subject, create_layer_mask, or execute_script instead of this recipe.

Returns: { ok, summary, undo_history_states_consumed, details.method = remove_background | remove_layer_background | select_subject | color_range_fallback }.

Preconditions: an active document. Native Remove Background needs a current Photoshop; Select Subject fallback needs PS ≥ 23. Side effects: may unlock/rename the Background layer; attaches a pixel mask; no pixels destroyed; one undo reverts everything.

NameRequiredDescriptionDefault
feather_pxNoEdge feather in pixels (0-20). 0 = hard edge (default for product shots), 1-3 = soft edge for portraits.
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.
keep_shadowNoReserved for a future iteration; currently recorded in the response but no shadow layer is created yet.
use_generativeNoAfter masking, run generative edge cleanup on inverted background selection (default false)

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full behavioral burden, and it delivers: it discloses unlocking the Background layer, the native Remove Background method with fallbacks, side effects ('may unlock/rename the Background layer; attaches a pixel mask; no pixels destroyed'), and undo behavior. This is far more than a typical tool description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (Use when, Do NOT, Returns, Preconditions, Side effects) and front-loads the purpose. It loses a point for minor redundancy: 'One undo reverts everything' appears twice and 'Call this once and stop' is somewhat repeated by the Do NOT list.

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?

The description covers purpose, alternatives, exclusions, return shape, preconditions, fallback behavior, and side effects. Even without an output schema, it documents the response fields. Nothing essential is missing for an agent to decide whether and how to invoke this tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3 even without parameter info in the prose. The description does not add parameter-level meaning beyond the schema, but it does not need to because each parameter already has a clear description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb-resource pairing: 'THE tool for remove background / arka planı sil / cut out / isolate subject.' It clearly distinguishes itself from siblings by explicitly naming select_subject, create_layer_mask, and execute_script as things NOT to use instead. An agent can unambiguously identify this as the background-removal tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides an explicit 'Use when' condition: 'the user wants the background gone,' including hard cases like hair and busy interiors. It also lists exclusions ('Do NOT rasterize, duplicate, hide layers, select_subject, create_layer_mask, or execute_script instead of this recipe'), which gives clear routing guidance versus alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

photoshop_recipe_remove_distractionA

One-shot distraction removal: generative AI remove when available, else content-aware fill. Wrapped in a single undoable history step.

Users often say: remove that person, erase distraction, content aware remove, clone out object.

Use when: the user has selected the object or region to remove. Do NOT use when: no selection exists — use photoshop_select_rectangle or photoshop_select_subject first.

Returns: { ok, summary, undo_history_states_consumed, details }. Preconditions: active document with an active pixel selection. Side effects: fills/removes selected pixels; clears selection.

NameRequiredDescriptionDefault
feather_pxNoEdge feather in pixels before remove (0-20, default 0)
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.
use_generativeNoPrefer generative remove when Photoshop supports it (default true when capable)

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It covers the fallback mechanism (generative vs content-aware), the undoable step, the side effects (fills/removes selected pixels; clears selection), the return structure ({ ok, summary, undo_history_states_consumed, details }), and preconditions. This is comprehensive and transparent about what the tool does and its consequences.

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 with clear sections: a core summary, example user phrasings, explicit use/when-not guidance, return format, preconditions, and side effects. It front-loads the primary function and organizes supporting details logically. Every sentence adds value, and there is no fluff or redundancy, making it efficient for an agent to parse.

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?

Despite lacking an output schema, the description explicitly lists the return object's fields. It covers preconditions, side effects, fallback behavior, and usage conditions. For a tool with three optional parameters and no complex nested objects, this is fully sufficient for an agent to invoke it correctly. The only missing element might be error cases, but the description is otherwise complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides descriptions for all three parameters (feather_px, document_id, use_generative), so schema coverage is 100%. The description does not add significant meaning beyond the schema—it mentions 'generative AI remove when available' which relates to use_generative, but the schema already explains that parameter. Since the schema carries the heavy lifting, the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a precise statement of what the tool does: 'One-shot distraction removal: generative AI remove when available, else content-aware fill.' It names the specific operation (removing distractions) and the mechanism, clearly distinguishing it from sibling tools like photoshop_generative_remove and photoshop_content_aware_fill, which are lower-level operations. The phrase 'one-shot' and 'wrapped in a single undoable history step' further differentiates it as a recipe tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit use conditions: 'Use when: the user has selected the object or region to remove' and 'Do NOT use when: no selection exists — use photoshop_select_rectangle or photoshop_select_subject first.' This provides clear when-to-use and when-not-to-use guidance, naming the specific alternative tools to use instead. It also states preconditions (active document with active pixel selection), making the call conditions unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

photoshop_recipe_sky_blendA

One-shot sky composite: places an external sky image, adds a layer mask, and applies a horizon gradient fade. Wrapped in a single undoable history step.

Users often say: replace sky, fix blown sky, better clouds, swap sky background.

Use when: the user provides a sky image path and native sky replacement is unavailable or manual blend is preferred. Do NOT use when: no sky_image_path is available — ask the user for an absolute file path first. Do NOT use when: fading the active subject layer only — use photoshop_recipe_gradient_fade.

Returns: { ok, summary, undo_history_states_consumed, details: { sky_image_path, layer_name, horizon_pct, feather_pct, direction } }.

Preconditions: active document; sky image file must exist on disk. Side effects: adds a placed sky layer with gradient mask; one undo reverts everything.

NameRequiredDescriptionDefault
xNoPlacement X offset in pixels (default 0)
yNoPlacement Y offset in pixels (default 0)
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.
feather_pctNoHalf-width of the transition zone around the horizon (0-50, default 15)
horizon_pctNoDocument-height percentage where sky meets landscape (0-100, default 50)
sky_image_pathYesAbsolute path to the sky image file (JPEG, PNG, etc.)
use_native_skyNoTry native Sky Replacement first when supported (default true when capable)

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full behavioral burden. It discloses side effects (adds a placed sky layer with gradient mask), undo behavior (single undoable history step), preconditions (active document, file must exist on disk), and the return value shape. This is comprehensive and goes well beyond what the schema or annotations provide.

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 well-structured with labeled sections and front-loads the core purpose in the first sentence. It is somewhat long, but each section (intents, usage conditions, returns, preconditions, side effects) contributes necessary information, and the formatting makes it easy to scan.

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 7-parameter recipe tool with no annotations and no output schema, the description is remarkably complete. It covers selection conditions, exclusions, preconditions, side effects, return structure, and undo behavior, leaving no critical gap for an agent to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides 100% coverage with descriptions for all seven parameters, so the baseline is 3. The description references horizon_pct, feather_pct, and sky_image_path in context, but it does not add semantic meaning beyond what the schema already documents.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource ('One-shot sky composite') and itemizes the exact steps: places an external sky image, adds a layer mask, and applies a horizon gradient fade. It also lists common user intents and names the alternative photoshop_recipe_gradient_fade, making the tool's purpose unmistakable and distinct from siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'Use when' and 'Do NOT use when' sections provide clear selection criteria, including the condition that a sky_image_path must be provided and the fallback action to ask for an absolute path. It also names the specific sibling tool to use for subject-only fading, giving an agent actionable routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

photoshop_redoA

Redo the previously undone operation(s) - equivalent to Ctrl/Cmd+Shift+Z

NameRequiredDescriptionDefault
stepsNoNumber of steps to redo (default: 1)
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the basic action and shortcut; it does not disclose what happens when there is no redo history or when 'steps' exceeds available history, nor whether the operation silently no-ops or errors. This is a significant gap for a state-changing 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?

A single sentence expresses the core purpose in under 15 words and the keyboard-equivalent hint is useful. There is no filler or repetition of schema content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with only optional parameters and no output schema, so the description need not be long. However, given the lack of annotations, it would be stronger if it mentioned the no-op/error behavior when redo history is empty or if it explicitly constrained the operation to the active document. The provided schema partially compensates by describing document_id, but the main behavioral edge cases are absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and both parameters already have clear descriptions in the schema: 'steps' documents count/default/min and 'document_id' explains activation and retargeting protection. The tool description adds no additional parameter semantics, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Redo') and a clear resource ('previously undone operation(s)') and gives the keyboard shortcut, making the tool's function immediately obvious. It is also implicitly distinct from its sibling photoshop_undo, since redo is the inverse operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'previously undone operation(s)' implies the tool should be used after an undo has occurred, but it never explicitly states this precondition or names the alternative (photoshop_undo) for when no redo is intended. The usage context is implied rather than fully specified.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

photoshop_release_clipping_maskA

Release (remove) the clipping mask from the active layer (or a named layer).

Users often say: unclip, release clipping mask, remove clipping mask.

Use when: a clipped layer should become independent again. Do NOT use when: the layer is not clipped — returns not_clipping error.

Returns: JSON { ok, summary, details: { layer_name, is_clipping: false } }. Preconditions: active document; target layer must currently be a clipping mask (grouped). Side effects: sets layer.grouped = false; one history step.

NameRequiredDescriptionDefault
layer_nameNoOptional exact layer name (recursive search). Default: active layer.
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and it delivers: it discloses side effects ('sets layer.grouped = false; one history step'), preconditions, the error condition ('returns not_clipping error'), and the return format. This is a comprehensive behavioral disclosure for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is tightly structured with clear sections (main action, user phrases, use when, do not use when, returns, preconditions, side effects). Every sentence earns its place, and the primary action is front-loaded. There is zero fluff or repetition.

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 tool with two optional parameters and no output schema, the description fully covers what an agent needs: the action, when to use it, the error path, the exact side effect, the return JSON shape, and the preconditions. Nothing essential 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 100%, so the baseline is 3. The description adds extra nuance beyond the schema: it notes that layer_name uses a 'recursive search' and defaults to the active layer, and it explains that document_id prevents UI tab switches from retargeting the edit. This clarifies intent and usage beyond the raw schema definitions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action: 'Release (remove) the clipping mask from the active layer (or a named layer).' It specifies the exact operation and resource, and is distinct from sibling tools like photoshop_create_clipping_mask, which is the inverse. The verb 'release' and the object 'clipping mask' leave no ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit when-to-use and when-not-to-use guidance: 'Use when: a clipped layer should become independent again. Do NOT use when: the layer is not clipped — returns not_clipping error.' It also lists preconditions (active document, target layer must be a clipping mask). This fully routes the agent to the correct choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

photoshop_rename_layerB

Rename the active layer

NameRequiredDescriptionDefault
nameYesNew name for the layer
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the full burden of behavioral disclosure. It only says 'rename', which implies mutation, but does not state whether it fails without an active layer, whether names are overwritten, or if it requires an open document. The document_id parameter's activation behavior is described in the schema, not the description, so the description adds no extra behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence with no wasted words. It is appropriately concise for a simple rename operation and front-loads the core action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple, and the schema covers parameters. However, the description lacks context about prerequisites (e.g., an active layer must exist) or error handling. Given the large number of sibling tools, it could benefit from a note about selecting a layer first, but it is not critical. It is minimally adequate but not rich.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both parameters have descriptions, so the baseline is 3. The tool description itself does not add any meaning to the parameters; it just states the operation. The document_id parameter's purpose is explained in the schema, not the description, so there is no added value from the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the exact operation: 'Rename the active layer.' It uses a specific verb and resource, and it is clear and distinct from sibling tools like photoshop_delete_layer or photoshop_move_layer. No ambiguity about what it does.

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, prerequisites, or alternatives. It does not mention that the layer must be active, or that one may need to select a layer first using photoshop_select_layer_by_name. No exclusions or comparisons to sibling tools are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

photoshop_replace_smart_object_contentsA

Replace the embedded contents of a Smart Object layer from an image file. Preserves transforms, warps, and Smart Filters on the layer.

Users often say: replace smart object, swap mockup screen, relink embedded file.

Use when: updating a mockup or template Smart Object with a new asset file. Do NOT use when: the target is not a Smart Object — convert first or use photoshop_place_image. Do NOT use for linked Smart Objects that need Relink to File — this replaces embedded contents.

Returns: JSON { ok, summary, details: { layer_name, file_path } }. Preconditions: Smart Object layer active or named; file_path must exist (absolute). Side effects: replaces embedded pixels.

NameRequiredDescriptionDefault
file_pathYesAbsolute path to the replacement image file (JPEG, PNG, PSD, etc.)
layer_nameNoOptional exact Smart Object layer name. Default: active layer.
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full behavioral disclosure burden. It states side effects ('replaces embedded pixels'), preservation behavior ('Preserves transforms, warps, and Smart Filters'), and preconditions ('Smart Object layer active or named; file_path must exist'). It also provides the return shape, giving the agent a clear model of the operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and front-loaded with the core purpose, followed by usage rules, return format, preconditions, and side effects. Even the 'Users often say' line adds search-friendly synonyms without bloating the content.

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?

The description is complete for a tool of this complexity: it explains what happens, what is preserved, when to use it, when not to use it, what the output looks like, and what conditions must hold before invocation. There is no output schema, so the inclusion of the return JSON contract is especially valuable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and each parameter already has a detailed schema description including defaults and provenance for document_id. The description adds a global precondition tying layer and file_path together, but does not significantly enrich individual parameter semantics beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action and resource: 'Replace the embedded contents of a Smart Object layer from an image file.' It immediately distinguishes itself by noting what it preserves (transforms, warps, Smart Filters) and explicitly contrasts it with photoshop_place_image and linked Smart Object relinking.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit 'Use when' and 'Do NOT use when' guidance, naming concrete alternatives such as photoshop_place_image and 'Relink to File' for linked Smart Objects. This leaves no ambiguity about when the tool should be selected versus its siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

photoshop_resize_imageB

Resize the active image to specified dimensions

NameRequiredDescriptionDefault
widthYesNew width in pixels
heightYesNew height in pixels
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses only the primary action ('resize the active image') and the document_id safety mechanism, but doesn't mention whether it changes the canvas vs. the image layer, whether content is scaled or stretched, whether the document is saved, whether it is undoable, or whether the original image is replaced irreversibly. The document_id description does add useful behavioral context about retargeting prevention.

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 main description is a single crisp, front-loaded sentence. The document_id parameter description is slightly verbose ('so a UI tab switch cannot retarget the edit') but it earns its place by explaining the safety mechanism. Overall compact 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?

Adequate for a simple two-required-parameter operation: size inputs are clear and the optional document_id shows awareness of targeting ambiguity. However, with no annotations and no output schema, the description should ideally mention whether this mutates irreversibly, whether the aspect ratio is preserved or forced, and what 'active image' means when multiple documents are open. These gaps keep it at minimum viable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all three parameters. The description adds no new parameter-level semantics beyond calling them 'specified dimensions,' but that's acceptable given full schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('resize') and resource ('active image') with clear outcome ('to specified dimensions'). Differentiates by targeting the active image, distinct from photoshop_crop_document and photoshop_scale_layer, though it doesn't 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?

Implies usage: it acts on the active image, and the document_id parameter suggests one should use photoshop_get_state / photoshop_list_documents when targeting a specific document. It does not explicitly state when to prefer this over photoshop_crop_document or photoshop_scale_layer, which are the most similar siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

photoshop_rotate_layerB

Rotate the active layer

NameRequiredDescriptionDefault
degreesYesRotation angle in degrees (positive = clockwise, negative = counter-clockwise)
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It only states what the tool does ('rotate') but does not disclose whether the operation is permanent, reversible, or has any side effects on the document or other layers. This is a notable gap 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence with no filler. It is efficiently front-loaded with the core action and target, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with a fully documented schema and no output schema, the description is minimally adequate. However, it lacks context about the 'active layer' concept, such as how the active layer is determined or whether the rotation applies only to raster layers. This is a minor gap for an agent that might need to ensure the correct layer is targeted, but the schema's document_id parameter partially covers document context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both 'degrees' and 'document_id' clearly described in the schema. The description adds no extra information about parameters, so the baseline of 3 applies. The schema already covers rotation direction units and document activation behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb, 'rotate', and a clear resource, 'the active layer'. This unambiguously distinguishes it from sibling tools like 'scale_layer', 'move_layer', or 'set_layer_opacity', making the tool's purpose clear without 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?

The description provides no guidance on when to use this tool versus alternatives, no prerequisites (e.g., ensuring a layer is active), no exclusions, and no mention of how to set up the state correctly. An agent is left to infer usage from the name and schema alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

photoshop_save_documentA

Save the active document to disk in PSD, JPEG, or PNG format.

Use when: user requests export/save with a specific path and format. Do NOT use when: web-optimized resize+sharpen pipeline is needed — use photoshop_recipe_prepare_for_web.

Returns: confirmation with saved path and format. Preconditions: active document; path required. Side effects: writes file to disk.

NameRequiredDescriptionDefault
pathYesFull path where to save the document
formatNoFile format (PSD, JPEG, PNG)PSD
qualityNoQuality for JPEG (1-12, default: 8)
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It discloses the key side effect ('writes file to disk'), preconditions ('active document; path required'), and return value ('confirmation with saved path and format'). It does not mention overwrite behavior, but the disclosed side-effect information is still meaningfully transparent.

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 tightly structured with labeled sections for use case, non-use case, returns, preconditions, and side effects. It front-loads the core action and contains no filler or redundant detail.

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 save tool, the description covers purpose, when to use, when not to use, return behavior, preconditions, and side effects. The remaining gap is the lack of explicit differentiation from the closely related sibling photoshop_export_as, which an agent might need to route 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 100%, so the baseline is 3. The description only mentions the format options and required path, both of which are already present in the schema. It adds no additional meaning about quality or document_id, but the schema already documents those parameters adequately.

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, resource, and formats: 'Save the active document to disk in PSD, JPEG, or PNG format.' It also explicitly distances itself from photoshop_recipe_prepare_for_web. However, it does not differentiate from the similarly named sibling photoshop_export_as, which may also handle export-style requests, 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 Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly provides a 'Use when' condition, a 'Do NOT use when' condition, and names the alternative tool photoshop_recipe_prepare_for_web. This gives an agent clear routing guidance without needing to infer when the tool is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

photoshop_save_selectionA

Save the active pixel selection to a new alpha channel.

Use when: preserving a selection for later reload or batch workflows. Do NOT use when: no selection exists — create one first.

Returns: JSON { ok, summary, details: { channel_name, context } }. Preconditions: active document and active pixel selection. Side effects: adds alpha channel.

NameRequiredDescriptionDefault
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.
channel_nameNoOptional name for the new alpha channel (auto-generated if omitted)

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It discloses side effects ('adds alpha channel'), preconditions ('active document and active pixel selection'), and return shape ('JSON { ok, summary, details: { channel_name, context } }'). It could add more about whether the selection is preserved or cleared after saving, but the core behavioral traits are covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: the core action is in the first sentence, followed by usage guidance, return format, and preconditions/side effects. Every sentence earns its place with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 2 optional parameters, no output schema, and no annotations, the description covers the action, preconditions, side effects, and return format. It is slightly incomplete in not specifying whether the selection remains active after saving, but overall 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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters. The description adds context for document_id (activation to prevent UI tab switch retargeting) and channel_name (auto-generated if omitted), but this is largely redundant with the schema descriptions. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Save'), a specific resource ('active pixel selection'), and the target ('new alpha channel'). It clearly distinguishes this from sibling selection tools (e.g., photoshop_select_all, photoshop_deselect) and layer tools by focusing on persisting a selection as an alpha channel.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'Use when: preserving a selection for later reload or batch workflows' and 'Do NOT use when: no selection exists — create one first.' This gives clear when-to-use and when-not-to-use guidance, plus a precondition to check before calling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

photoshop_scale_layerB

Scale the active layer by a percentage

NameRequiredDescriptionDefault
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.
centerAnchorNoScale from center (true) or top-left (false). Default: true
scalePercentYesScale percentage (e.g., 50 for 50%, 200 for 200%)

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of disclosing behavior. It only states the action and does not mention side effects such as the fact that it operates on the active layer (potentially modifying it destructively), that it requires an active layer, or whether the operation is reversible via undo. For a mutation tool, this lack of behavioral disclosure is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that front-loads the core action. It contains no fluff or redundancy, making it efficient and easy to parse. Every word adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description is notably incomplete. It fails to mention when to use it vs alternatives, what constitutes a valid active layer, or the behavioral consequences (e.g., scaling is non-destructive in Photoshop? but not stated). While the schema covers parameters, the overall context needed for correct and safe invocation is lacking.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already documents all three parameters (scalePercent, centerAnchor, document_id) with meanings and defaults. The description adds no additional parameter information, which is acceptable given the high schema coverage. The baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Scale the active layer by a percentage' clearly states the verb (scale), the resource (active layer), and the method (percentage). It distinguishes itself from siblings like rotate or move by focusing on scaling, and from photoshop_resize_image by specifying 'layer' rather than document or image.

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 alternatives like photoshop_resize_image (which resizes the document) or photoshop_fit_layer_to_document. It does not mention prerequisites (e.g., an active layer must exist) or conditions under which it should be preferred over other scaling tools. The description is purely functional with no usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

photoshop_select_allB

Select the entire document

NameRequiredDescriptionDefault
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure, yet 'Select the entire document' essentially restates the tool name. It fails to disclose that the operation replaces any existing selection, that Photoshop's Select All operates on the active layer's pixels within canvas bounds rather than all layer content, or any side effects on subsequent tool calls.

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?

Six words, front-loaded, with zero filler. Every word earns its place and the single sentence fully states the core action without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with one optional, fully documented parameter and no output schema, the description is minimally adequate. However, the ambiguity about what 'entire document' means (active layer vs. all layers) and the absence of notes about selection replacement leave gaps that, given zero annotations, a more complete description should have addressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the document_id parameter already has a thorough schema-level description explaining that it is optional, where to obtain it, and that setting it activates the document first to prevent UI tab-switch retargeting. The description itself adds no parameter detail, but the baseline of 3 applies because the schema does the heavy lifting.

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 ('Select') and a clear resource/scope ('the entire document'), distinguishing it from sibling selection tools like photoshop_select_rectangle, photoshop_select_ellipse, and photoshop_select_subject, which target regions or subjects. Minor ambiguity remains in whether 'entire document' means all layers or the active layer's full canvas, but the basic action is unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no mention of exclusions, and no reference to alternatives. With roughly 100 siblings including a whole family of selection tools (deselect, invert_selection, expand_selection, select_subject, etc.), the description gives the agent zero routing help for choosing this tool over them.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

photoshop_select_ellipseA

Create an elliptical pixel selection from a bounding box (anti-aliased).

Use when: circular or oval masks, vignettes, or radial edits inside a region. Do NOT use when: a rectangular region is enough — use photoshop_select_rectangle.

Returns: JSON { ok, summary, details: { shape, bounds?, context } }. Preconditions: active document; right > left and bottom > top. Side effects: replaces current selection.

NameRequiredDescriptionDefault
topYesTop edge of bounding box in pixels
leftYesLeft edge of bounding box in pixels
rightYesRight edge of bounding box in pixels
bottomYesBottom edge of bounding box in pixels
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

A4.9/5.0
Behavior5/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 discloses side effects ('replaces current selection'), preconditions ('active document; right > left and bottom > top'), and return shape. This is comprehensive for a selection 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?

Tightly structured with scannable sections: purpose, use cases, return format, preconditions, and side effects. Every sentence delivers useful information with no filler.

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?

The tool has a simple parameter set but no output schema or annotations. The description covers the return JSON, preconditions, side effects, and sibling differentiation. Nothing essential is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds meaningful context beyond the schema by defining the bounding-box relationship (right > left, bottom > top) and noting the anti-aliased nature, which helps the agent validate 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?

The description clearly states the tool creates an elliptical pixel selection from a bounding box Sunday anti-aliased. It explicitly differentiates from photoshop_select_rectangle, so an agent can identify the correct tool without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit use cases 'circular or oval masks, vignettes, or radial edits inside a region' and an explicit exclusion 'Do NOT use when: a rectangular region is enough — use photoshop_select_rectangle.' This gives unambiguous routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

photoshop_select_layer_by_nameA

Select the active layer by exact name, including layers inside groups.

Use when: a transform or property tool must target a named layer (photoshop_scale_layer, etc.). Do NOT use when: the layer is already active — check photoshop_get_state first.

Returns: selected, layerName, kind, bounds (best-effort), context. First depth-first name match wins when duplicate names exist in different groups. Preconditions: active document. Side effects: changes active layer.

NameRequiredDescriptionDefault
nameYesExact layer name (case-sensitive)
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It discloses side effects ('changes active layer'), preconditions ('active document'), duplicate-name resolution behavior ('First depth-first name match wins'), and best-effort bounds. It does not mention failure modes (e.g., what happens if the name is not found), which is a minor gap, but the disclosed behaviors are substantial and directly relevant to safe invocation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: the core action and scope appear in the first sentence, followed by use/when-not guidance, return summary, and behavioral notes. Every sentence earns its place; there is no filler or repetition of schema content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a selection tool with 2 parameters, 100% schema coverage, and no output schema, the description covers the essential context: preconditions, side effects, duplicate-name behavior, and return fields. It does not describe error behavior when the name is not found, which is a meaningful gap for an agent deciding whether to retry or fall back. Still, the description is largely complete for the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters. The description adds value by explaining the 'name' parameter's exact-match and case-sensitive semantics (already in schema) and by adding context for document_id: it explains why it exists (to prevent UI tab switch retargeting) and how it relates to sibling tools (photoshop_get_state / photoshop_list_documents). This goes beyond the schema's basic description, so a 4 is warranted.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Select'), a resource ('active layer by exact name'), and a scope ('including layers inside groups'). It also distinguishes itself from sibling tools by naming the use case (targeting a named layer for transform/property tools) and explicitly naming a sibling (photoshop_scale_layer). This is a clear, specific purpose that an agent can act on.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit when-to-use guidance ('Use when: a transform or property tool must target a named layer') and explicit when-not-to-use guidance ('Do NOT use when: the layer is already active — check photoshop_get_state first'). It also names a concrete alternative (photoshop_get_state) for the exclusion case. This is exactly the kind of routing guidance an agent needs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

photoshop_select_rectangleA

Create a rectangular pixel selection from corner coordinates.

Use when: masking, cropping a region, or preparing for layer mask. Do NOT use when: subject isolation is needed — use photoshop_recipe_remove_background.

Returns: selection bounds [left, top, right, bottom]. Preconditions: active document. Side effects: replaces, adds, subtracts, or intersects the current selection. mode intersect/add/subtract uses Action Manager and does not depend on the SelectionType enum.

NameRequiredDescriptionDefault
topYesTop edge in pixels
leftYesLeft edge in pixels
modeNoHow this rectangle combines with the current selection. Default replace. Use intersect when SelectionType.INTERSECT is unavailable.
rightYesRight edge in pixels
bottomYesBottom edge in pixels
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, but the description takes on the burden: it discloses the precondition (active document), the selection-combination side effects, and an implementation nuance about mode handling. Nothing about the tool's mutating behavior is hidden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: purpose, when/when-not, returns, preconditions, and side effects are each one clear line. No filler or redundant restatement of the name or schema.

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?

With no output schema, the description states the return format; with no annotations, it states preconditions and side effects. Combined with 100% schema coverage, an agent has all the information needed to invoke this tool correctly and safely.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema covers 100% of the 6 parameters, so the schema already carries the load. The description adds a small amount of extra context (corners vs edges, mode implementation) but does not substantially enrich parameter meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb and resource: 'Create a rectangular pixel selection from corner coordinates.' This clearly distinguishes it from sibling selection tools (select_ellipse, select_all, select_subject) and from crop_document, and the returns line states the exact output shape.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly gives use cases ('masking, cropping a region, or preparing for layer mask') and names the exact alternative when not to use it ('subject isolation... use photoshop_recipe_remove_background'). An agent can decide between tools without opening schemas.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

photoshop_select_subjectA

Run Select Subject on the active layer (creates a pixel selection only, no mask).

Users often say: cut out, isolate subject, select person, select object.

Use when: you need a subject selection for masking, fill, or further edits. Do NOT use when: full background removal with mask — use photoshop_recipe_remove_background.

Returns: JSON { ok, summary, details: { selected, method } }. Preconditions: PS ≥ 23, active document, non-Background active layer with a recognizable subject. Side effects: replaces current selection.

NameRequiredDescriptionDefault
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.
sample_all_layersNoSample all layers for autoCutout fallback (default false)

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full behavioral burden and does so thoroughly: it states the tool creates only a pixel selection, replaces the current selection, returns a specific JSON structure, and lists preconditions including PS version, active document, and non-Background layer. This is comprehensive and transparent about side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with labeled sections: core behavior, user phrasings, when to use, when not to use, return value, preconditions, and side effects. It is concise but information-dense, with every section earning its place and the most important distinction front-loaded.

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?

Despite having no annotations and no output schema, the description covers return format, preconditions, side effects, exclusions, and usage context. An agent would have all necessary information to select and call this tool 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 100%, with both parameters (document_id and sample_all_layers) already documented in the input schema. The description does not add significant parameter-level details beyond what the schema provides, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Run Select Subject on the active layer' and clarifies it 'creates a pixel selection only, no mask.' This is specific and distinct from related operations like background removal, making the tool's purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit 'Use when' and 'Do NOT use when' guidance, directing agents to the alternative photoshop_recipe_remove_background for full background removal. It also lists common natural-language phrasings ('cut out, isolate subject, select person, select object'), making it easy for an agent to map user intent to this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

photoshop_set_active_artboardA

Select an artboard layer group by artboard_id (preferred) or unique name so subsequent edits and Select All target that board.

Use when: switching between device frames in an artboard document. Do NOT use when: switching document tabs — use photoshop_set_active_document.

Returns: JSON { ok, summary, details: { artboard } }. Preconditions: target artboard exists (photoshop_list_artboards). Side effects: changes the active layer.

NameRequiredDescriptionDefault
nameNoExact artboard name (ambiguous if duplicates — use artboard_id)
artboard_idNoLayer id from photoshop_list_artboards / photoshop_get_state
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

A4.6/5.0
Behavior4/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 well: it discloses the side effect ('changes the active layer'), states the return shape as JSON, and notes the precondition that the target artboard must exist. It could go further by explicitly confirming that no artboard content is modified, but the stated side effect largely covers this.

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 front-loads the core action and then uses compact labeled lines for usage, return, preconditions, and side effects. Every sentence adds useful information with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers usage, exclusions, return format, preconditions, and side effects, which is strong for a tool without an output schema. The main gap is that although all parameters are technically optional in the schema, the description does not explicitly state that at least one of artboard_id or name must be supplied.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and each parameter is already well described in the input schema. The description adds value by marking artboard_id as the preferred identifier and connects selection to downstream behavior, but much of the parameter meaning still relies on the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Select an artboard layer group' by artboard_id or name, and clarifies the purpose ('so subsequent edits and Select All target that board'). It also differentiates from the sibling photoshop_set_active_document, so an agent can distinguish the tool correctly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit when-to-use language: 'Use when: switching between device frames in an artboard document.' It explicitly says when not to use it and names the alternative: 'Do NOT use when: switching document tabs — use photoshop_set_active_document.' It also names the precondition to check photoshop_list_artboards.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

photoshop_set_active_documentA

Switch the active document tab by document_id (preferred), zero-based index, or name.

Use when: working across multiple open files and mutations must target a specific document. Do NOT use when: only one document is open — it is already active. Do NOT use document_name when duplicate names exist — use document_id from photoshop_list_documents.

Returns: JSON { ok, summary, details: { activated: { id, name }, context } }. Preconditions: target document must be open. Provide exactly one of document_id, index, or document_name. Side effects: changes active tab.

NameRequiredDescriptionDefault
indexNoZero-based tab order index (leftmost tab is 0)
document_idNoUnique internal document id from photoshop_list_documents (preferred)
document_nameNoDocument name/title (ambiguous if multiple tabs share the same name)

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full behavioral burden and largely succeeds: it discloses side effects ('changes active tab'), preconditions ('target document must be open'), and the exact return shape. It does not discuss error behavior for invalid or missing identifiers, but the core behavioral traits are clearly stated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and well-structured, with the primary action front-loaded and use conditions, returns, preconditions, and side effects each earning their place. There is no redundant filler.

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?

Despite having no output schema, the description documents the return JSON shape, the precondition that the document must be open, the ambiguity caveat for duplicate names, and the side effect of changing the active tab. This is fully sufficient for an agent to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds value beyond the schema by emphasizing that document_id is preferred, warning against document_name when duplicates exist, and requiring exactly one of the three parameters even though the schema marks none as required.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Switch the active document tab' by document_id, index, or name. It clearly distinguishes this tool from siblings like photoshop_list_documents and photoshop_get_document_info by focusing on changing the active tab rather than inspecting or creating documents.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'Use when' and 'Do NOT use when' conditions are provided, including the case of a single open document and duplicate document names. It also names the recommended source for document_id (photoshop_list_documents), giving clear routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

photoshop_set_layer_blend_modeA

Set the blend mode of the active layer.

COLOR is the Photoshop UI name (Colorize); it is mapped to ExtendScript BlendMode.COLORBLEND.

NameRequiredDescriptionDefault
blendModeYesBlend mode (Photoshop UI name). COLOR maps to BlendMode.COLORBLEND. DARKERCOLOR / LIGHTERCOLOR use Action Manager if the DOM enum is missing.
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It does mention that COLOR maps to BlendMode.COLORBLEND and that DARKERCOLOR/LIGHTERCOLOR use Action Manager if the DOM enum is missing, which is useful. However, it does not disclose side effects (e.g., whether the operation is undoable) or any prerequisites. For a simple setter, this is acceptable but not comprehensive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with zero waste. The primary purpose is front-loaded, and the additional note about mapping is concise and relevant. Every word earns its place, making it highly efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple setter with no output schema, the description covers the essential information: what the tool does, the mapping nuance, and the optional document_id parameter's purpose (though that is in the schema). It does not describe return values, but that is not expected for a mutation tool without an output schema. Overall, it is complete for the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, meaning both parameters are already well-documented. The description adds a little by reiterating the COLOR mapping and the fallback for DARKERCOLOR/LIGHTERCOLOR, but this is largely redundant with the schema. Per the calibration, a baseline of 3 is appropriate when the schema covers the parameters adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action: 'Set the blend mode of the active layer.' It specifies the verb, resource, and target. The tool is distinct from siblings like photoshop_set_layer_opacity or photoshop_set_layer_visibility by focusing specifically on blend modes, making it unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly mention when to use this tool versus alternatives, but the clear naming and the fact that no sibling tool performs the same operation provide implicit guidance. The context of 'active layer' is clear, and there are no exclusions or alternatives mentioned. Since the purpose is self-evident and there is no confusion with other tools, a 4 is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

photoshop_set_layer_lockedC

Lock or unlock the active layer

NameRequiredDescriptionDefault
lockedYesWhether the layer should be locked
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It states the action but does not mention reversibility, side effects on other operations, or any permission requirements. For a mutation tool, this is a notable gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with zero waste. It is appropriately concise, though it sacrifices depth for brevity.

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 boolean toggle, the description covers the core action and identifies the target as the active layer. However, it lacks any context about document prerequisites, error conditions, or interaction with other layer operations, leaving it only minimally adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%: both parameters have clear descriptions ('Whether the layer should be locked' and the document_id explanation). The description adds no additional parameter information, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Lock or unlock the active layer' clearly states the verb (lock/unlock) and resource (active layer), making the tool's purpose unambiguous. It does not explicitly differentiate from sibling tools, but the action is specific enough to stand alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives, nor any prerequisites or exclusions. An agent would not know, for example, that it should select a layer first or that locking affects subsequent edits.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

photoshop_set_layer_opacityB

Set the opacity of the active layer

NameRequiredDescriptionDefault
opacityYesOpacity value (0-100)
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

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 burden of disclosing behavior. It only states the mutation ('set opacity') and the target ('active layer'), but does not mention potential side effects, prerequisites (e.g., an open document), failure conditions, or reversibility. This is a significant gap for a mutating operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-formed sentence with no redundancy. It is front-loaded with the core action and target, making it highly concise and easy to scan.

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 parameter-driven tool with a high-coverage schema and no output schema, the description is minimally sufficient. However, it omits any note about the need for an active document or the optional document_id retargeting behavior (which is only in the schema). The active-layer scope is present, but prerequisites and error behavior are absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters (opacity and document_id) are fully documented. The description adds no additional meaning beyond what the schema provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('set') and resource ('opacity of the active layer'), clearly distinguishing it from sibling tools like photoshop_set_layer_visibility or photoshop_set_layer_blend_mode. The active-layer scope is explicit, and the name reinforces the purpose without 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?

No guidance is given on when to use this tool versus alternatives. There is no mention of contexts (e.g., adjusting transparency for visual effect) or exclusions (e.g., not for locked layers). An agent is left to infer usage purely from the name and sibling list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

photoshop_set_layer_visibilityA

Show or hide the active layer

NameRequiredDescriptionDefault
visibleYesWhether the layer should be visible
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

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 burden of behavioral disclosure, but it only states the primary effect: showing or hiding the active layer. It does not mention whether the operation is non-destructive, what happens if there is no active layer, or whether a confirmation is returned. The minimal description is accurate but leaves basic behavior implicit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no filler. It front-loads the action and target, making the core function immediately 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 setter with a fully described schema, the description is mostly adequate. However, with no annotations and no mention of the active-layer prerequisite or how to target a specific layer, an agent may call it without ensuring the correct layer/document context. The optional document_id is well explained in the schema, so the gap is moderate rather than severe.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds no extra parameter meaning beyond the schema: it doesn't connect 'show/hide' to the 'visible' boolean or explain document_id. Since the schema already covers both parameters well, the description does not need to, but it also adds no value here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a clear verb phrase ('Show or hide') and specifies the target ('the active layer'), making the tool's function immediately understandable. This is clearly distinct from sibling tools like photoshop_set_layer_opacity or photoshop_delete_layer.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No usage guidance is provided. The description does not mention that the layer must be active/selected first, when to use photoshop_select_layer_by_name to target a different layer, or when to include document_id. The schema hints at document_id behavior, but the description itself gives no when-to-use vs alternatives context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

photoshop_set_text_alignmentC

Set text alignment for active text layer

NameRequiredDescriptionDefault
alignmentYesText alignment
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the burden of behavioral disclosure. It states the action but does not disclose side effects (e.g., modifying the document), error conditions (e.g., if no text layer is active), or the fact that it activates the document when document_id is provided. For a mutation tool, this is a significant gap in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence with no wasted words. It is front-loaded with the action and target. While it is minimal, it is appropriately sized for a simple tool, though it could include more guidance without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (2 parameters, no output schema) and no annotations, the description is insufficient for an agent to understand when to invoke it and what the consequences are. It omits prerequisites (active text layer), error behavior, and the document_id option's effect. The description leaves too much to inference.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are documented in the schema. The alignment enum is self-explanatory, and document_id has a detailed description. The tool description adds no additional meaning beyond the schema, so it meets the baseline of 3 for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action: setting text alignment on the active text layer. It specifies the resource (text layer) and the operation, which distinguishes it from other layer operations. However, it does not explicitly differentiate from sibling text tools like set_text_font or set_text_color, though the property name 'alignment' makes it obvious. The verb 'Set' is specific, so it's clear what it does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. It does not mention prerequisites like having a text layer active, nor does it note when a different tool (e.g., update_text_content) would be appropriate. The description only states the function without context or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

photoshop_set_text_colorB

Set color for active text layer

NameRequiredDescriptionDefault
redYesRed component (0-255)
blueYesBlue component (0-255)
greenYesGreen component (0-255)
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It implies a mutating operation but does not explain side effects, error cases (e.g., no text layer active), or whether the change is reversible. It also omits the behavior tied to the optional document_id parameter, which the schema partially covers but the description ignores. This leaves significant behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no redundant wording. It is front-loaded with the essential information and does not include any fluff. Every word contributes to the purpose, making it highly efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with clear parameter schemas, the description is minimally adequate, but it lacks important contextual details such as the requirement for a text layer to be active and how the document_id parameter interacts with the operation. The schema explains document_id's behavior, but the description alone doesn't provide enough context for an agent to anticipate error conditions or edge cases. It is neither complete nor severely deficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameters (red, green, blue, document_id) are already fully described in the schema. The description adds no additional semantic value beyond what the schema provides, which is acceptable given the high coverage. Baseline 3 is appropriate, as the description does not need to repeat schema details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Set color') and the target ('active text layer'), using a specific verb and resource. It is unambiguous and easily distinguishable from sibling tools like photoshop_set_text_font or photoshop_set_text_alignment, though it doesn't explicitly call out these alternatives. The purpose is straightforward and leaves no doubt about what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to use this tool versus other text manipulation tools, nor does it mention prerequisites such as the need for an active text layer or an open document. It only states the core action without any context on conditions, exclusions, or alternative tools. An agent would have to infer usage from the name and description alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

photoshop_set_text_fontA

Set font family and size for active text layer.

Prefer the PostScript name (e.g. "ArialMT"): it is the same in every Photoshop UI language. A display name (e.g. "Arial") also works but can be localized; an exact PostScript match wins. Use photoshop_list_fonts to discover available fonts.

NameRequiredDescriptionDefault
fontNameYesFont PostScript name (preferred, language-independent) or display name (see photoshop_list_fonts)
fontSizeNoFont size in points (optional)
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

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 implies a mutation scoped to the active text layer, but never states that it errors when the active layer isn't text, whether the font change is reversible (undo), or that omitting fontSize leaves size untouched. Useful but incomplete behavioral disclosure for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action and target, then rationale for the naming convention, then the discovery hint. Well organized with no filler, though the PostScript/localization rationale could be tightened into a single 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 3-parameter mutation tool with no annotations and no output schema, the description covers the main usage pattern but leaves gaps: precondition failures, partial-update semantics (fontName only vs both), and confirmation of what changes are applied on the active layer.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already documents PostScript vs display name for fontName, point units and optionality for fontSize, and the retargeting purpose of document_id. The description's only added nuance is the 'exact PostScript match wins' precedence rule, which is minor beyond the schema baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Set font family and size for active text layer'), distinguishing it from sibling text tools like photoshop_set_text_style, photoshop_set_text_ranges, and photoshop_set_text_color, which each target a different property.

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?

Clearly directs the agent to use photoshop_list_fonts for discovery and explains which font identifier form to prefer, which is real routing guidance. It does not cover the failure path (what to do if the active layer is not a text layer) or when to prefer the sibling style/range tools instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

photoshop_set_text_rangesA

Apply mixed fonts, sizes, and colors inside a single text layer (Action Manager textStyleRange).

Users often say: mixed type, two fonts in one line, multicolor text, 混排, 同一文字层.

Use when: one layer must contain more than one font or color. from is inclusive, to is exclusive (JavaScript slice / ExtendScript string indexes). Do NOT use when: the whole layer shares one style — use photoshop_set_text_style. Do NOT split into extra layers for mixed type unless this tool errors.

Returns: JSON { ok, summary, details: { style, ranges } }. Preconditions: active text layer. Unspecified gaps keep the layer default style. Side effects: rewrites character styles; restores tracking/leading/box afterward.

NameRequiredDescriptionDefault
rangesYesNon-overlapping character spans (from inclusive, to exclusive)
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations present, the description carries the full burden and does: it declares the precondition (active text layer), the destructive side effect (rewrites character styles), and the mitigation (tracking/leading/box restored afterward). It also discloses the fallback behavior for unspecified spans and the index convention, which are not derivable from annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action, then cleanly sectioned into use/do-not-use, return shape, preconditions and side effects — every labeled clause earns its place. The 'Users often say' synonym list (including 混排) is slightly padding-like but aids retrieval, so only a minor deduction.

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?

No output schema exists, yet the description supplies the return shape (ok, summary, details.style/ranges), preconditions, side effects, and the error-adjacent guidance about not splitting layers. For a two-parameter mutation tool this is everything an agent needs to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description adds genuine meaning by stating that unspecified gaps keep the layer default style and by restating the inclusive/exclusive index convention that governs every span. It does not discuss the 64-span cap or non-overlap constraint, which live only in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — apply mixed fonts, sizes and colors inside a single text layer — and names the underlying mechanism (Action Manager textStyleRange). It explicitly contrasts itself with the sibling photoshop_set_text_style, so an agent can distinguish the two without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides an explicit 'Use when' condition (one layer must contain more than one font or color) and a 'Do NOT use when' exclusion that routes to photoshop_set_text_style by name. It also pre-empts a likely wrong workaround: do not split into extra layers unless this tool errors.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

photoshop_set_text_styleA

Set layer-wide typography on the active text layer: tracking, leading, point vs paragraph box, alignment, font, size, color.

Users often say: letter spacing, tracking, line height, leading, text box width, paragraph text, 字间距, 行高, 文本框.

Use when: tightening/loosening type, setting line height, converting to a wrapped paragraph box, or batching several text attributes in one undo-friendly call. Do NOT use when: creating a new layer — pass the same fields on photoshop_create_text_layer. Do NOT use when: mixed fonts/colors inside one layer — use photoshop_set_text_ranges. Do NOT use execute_script for tracking/leading/box.

Returns: JSON { ok, summary, details: { style } }. Preconditions: active text layer. Side effects: mutates TextItem attributes.

NameRequiredDescriptionDefault
redNoRed 0–255
blueNoBlue 0–255
kindNopoint or paragraph (wrapped) text
greenNoGreen 0–255
leadingNoLine height in points. Sets auto_leading false.
fontNameNoFont PostScript name (preferred) or display name
fontSizeNoSize in points
trackingNoCharacter spacing in 1/1000 em (−1000 to 10000)
alignmentNoJustification (same enum as photoshop_set_text_alignment)
box_widthNoParagraph box width in pixels (implies kind=paragraph)
box_heightNoParagraph box height in pixels (implies kind=paragraph)
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.
auto_leadingNoUse Photoshop auto leading

TDQS

A4.6/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 names the precondition (active text layer), the side effect (mutates TextItem attributes), and the undo-friendly batching behavior, plus the return envelope. It stops short of stating failure modes, e.g. what happens when no text layer is active or when fontName is unavailable, but the safety-relevant facts are present.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the capability statement, then clearly segmented into invocation phrases, When/Do NOT rules, return shape, and preconditions. Every block is functional; the only minor excess is the multilingual keyword line, which is bulkier than the rest but still serves intent matching.

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 13-parameter, all-optional mutation tool with no annotations and no output schema, the description supplies everything an agent needs: targeting, preconditions, side effects, return shape, sibling routing, and batching semantics. Nothing required to invoke 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 coverage is 100%, so baseline would be 3; the description earns above that by mapping user vocabulary onto parameter names (letter spacing / 字间距 → tracking, line height / 行高 → leading, text box width / 文本框 → box_width/kind). That synonym mapping is real disambiguation value the schema does not provide, though it does not address the color triplet or document_id retargeting behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Set layer-wide typography on the active text layer") and enumerates the exact attributes covered: tracking, leading, box type, alignment, font, size, color. It explicitly carves itself out from photoshop_create_text_layer, photoshop_set_text_ranges, and the granular set_text_font/color/alignment siblings, so an agent can discriminate it 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 Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit positive triggers (tightening type, setting line height, converting to paragraph box, batching attributes in one undo-friendly call) and two explicit negative triggers with named alternatives (create_text_layer for new layers, set_text_ranges for mixed fonts/colors). It also rules out ps_execute_script for these operations, closing the most likely wrong path.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

photoshop_sky_replacementA

Replace the sky using Photoshop native Sky Replacement when available.

Use when: a sky image path is provided and native AI sky replacement is supported. Fallback: photoshop_recipe_sky_blend for manual composite.

Returns: { ok, summary, details }. Preconditions: active document; optional sky_image_path for custom sky.

NameRequiredDescriptionDefault
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.
sky_image_pathNoOptional absolute path to a sky image file

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the behavioral burden. It discloses that native support is conditional ('when available'), lists the active-document precondition, and states the return shape. It could more explicitly describe what happens when native Sky Replacement is unavailable, but the fallback line covers that reasonably.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and well-structured with clear labels: 'Use when', 'Fallback', 'Returns', and 'Preconditions'. Every line adds useful information and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with two optional parameters and no output schema, the description covers the essential operational context: when to use it, fallback behavior, return shape, and preconditions. It does not explain how to detect native availability, but the fallback instruction mitigates that gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already describes both parameters with 100% coverage. The description adds only minor context, such as 'custom sky' for sky_image_path and 'optional' status, but does not materially improve on the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource: replace the sky using Photoshop's native Sky Replacement. It also distinguishes itself from the related sibling photoshop_recipe_sky_blend by calling it a fallback, so an agent can tell which tool does the native AI operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'Use when' guidance is provided: when a sky image path is provided and native AI sky replacement is supported. It also names the fallback tool, photoshop_recipe_sky_blend, for manual composite, giving clear routing between alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

photoshop_undoC

Undo the last operation(s) - equivalent to Ctrl/Cmd+Z

NameRequiredDescriptionDefault
stepsNoNumber of steps to undo (default: 1)
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It only states the obvious 'undo' behavior and does not mention side effects (e.g., modifying document history), reversibility via redo, or how document_id affects retargeting. This is a significant gap for a 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 description is a single, efficient sentence that front-loads the core action. The Ctrl/Cmd+Z analogy adds value without bloat, making it concise and well-structured for the tool's simplicity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with fully described parameters, the description is minimally adequate. It lacks context about the redo counterpart, undo stack limitations, and the role of document_id is only visible in the schema. Overall, it's enough to use the tool, but clear gaps in behavioral context remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides 100% coverage with detailed descriptions for both 'steps' and 'document_id', so the description does not need to add parameter detail. The description adds no parameter-specific meaning, matching the baseline of 3 for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (undo) and the resource (last operation(s)), and the Ctrl/Cmd+Z analogy reinforces the meaning. However, it doesn't explicitly contrast with sibling tools like photoshop_redo, 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 guidance is provided on when to use this tool versus alternatives such as photoshop_redo or photoshop_get_history. The description leaves the agent to infer context, offering no explicit when-to-use or when-not-to-use direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

photoshop_update_text_contentB

Update the text content of active text layer

NameRequiredDescriptionDefault
textYesNew text content
document_idNoOptional Photoshop document id from photoshop_get_state / photoshop_list_documents. When set, the tool activates that document before running so a UI tab switch cannot retarget the edit.

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the full behavioral burden. It only states the action 'Update the text content' without disclosing that existing content will be replaced, that an active text layer is required, whether the operation is undoable, or what happens if the active layer is not a text layer.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler. It is concise, though it omits important usage and behavioral context that would make it more helpful to an agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description is too thin. It does not tell the agent how to ensure a text layer is active, what side effects to expect, or how to recover from common failures, leaving important operational context missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already fully describes both parameters: 'text' as new text content and 'document_id' with its activation behavior. The tool description adds no additional parameter semantics beyond what the schema provides, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear, specific operation: 'Update the text content' of the 'active text layer'. It clearly distinguishes this tool from related text-formatting siblings like photoshop_set_text_font, photoshop_set_text_color, and photoshop_set_text_alignment.

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 identifies the target as the 'active text layer', which implies the prerequisite that a text layer must be active. However, it does not explicitly state when to use this tool versus alternatives or provide any exclusions or failure conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ps_batchB

Run several operations in order. Each op: {operation, args}. Stops at the first error when stopOnError (default true). Returns one result per op.

NameRequiredDescriptionDefault
opsYes
stopOnErrorNo

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations, so the description carries the burden. It usefully discloses sequential execution, stop-at-first-error with default true, and one-result-per-op return shape. But it omits what happens when stopOnError is false (continue? collect errors?), whether partial results are rolled back, and what valid operations exist.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, front-loaded with the core purpose and progressively adding the op shape and error behavior. Little waste, though the sentence fragments are terse at the cost of clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A batch executor with an unconstrained 'operation' string, no annotations, and no output schema. The description should enumerate supported operations or point to a discovery tool, and explain stopOnError=false behavior; neither is present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate: it explains the {operation, args} item shape and the stopOnError default. However it never enumerates valid operation values or the args contract, leaving the most important parameter semantics 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?

States a specific verb and resource: 'Run several operations in order' with the ops structure. Clear what the tool does, but it does not differentiate itself from siblings like ps_do or ps_recipe, which also run operations, so an agent can't tell when to pick this one.

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 ps_do, ps_recipe, or ps_execute_script. The 'operation' string values that are legal are not named, so the agent has no routing signal.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ps_catalogA

List Photoshop operations available through ps_do. Without category: categories with counts and operation names. With category: every operation of that category with its parameters. Call it before using an operation you have not used in this session.

NameRequiredDescriptionDefault
categoryNodocument | layer | text | selection | mask | filter | adjust | color | generative | neural | smart_object | transform | history | action | export | style | data | stack | state | image | recipe

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden, and it does disclose the return shape in both modes: categories with counts and operation names when `category` is omitted, versus full parameter lists for one category. It doesn't explicitly state read-only safety or any limits, but 'List' strongly implies a side-effect-free inspection call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short clauses, front-loaded with the core action, then the two modes, then the usage trigger. Every sentence adds a distinct decision-relevant fact with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description must explain returns, and it does for both modes (counts and names vs. per-operation parameters). For a single optional-parameter listing tool that is nearly complete; only the exact response format/pagination is unspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the enum-like category list is already in the schema, so the baseline is 3. The description adds real meaning the schema does not: what omitting `category` produces versus what supplying it produces, which is the key semantic decision for this parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List Photoshop operations') and explicitly scopes it to operations available through ps_do, which distinguishes it from the executor sibling. An agent can tell immediately that this is the discovery/introspection tool, not an execution tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger condition: 'Call it before using an operation you have not used in this session,' which names both when to use it and the implicit alternative (skip it for already-used operations). The with/without `category` branching further tells the agent which variant to choose based on need.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ps_doA

Run one Photoshop operation by name (see ps_catalog), e.g. {"operation":"create_text_layer","args":{"text":"Hi"}}. Returns the operation result JSON. Prefer this over writing ExtendScript.

NameRequiredDescriptionDefault
argsNooperation parameters
operationYesoperation name from ps_catalog (without the photoshop_ prefix)

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full behavioral burden. It only says it returns the operation result JSON; it does not disclose that the dispatched operations can be destructive to the open document, whether errors are surfaced per operation, or that args must match the catalog signature. For a generic execution surface this is thin.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences: purpose plus example, return value, and the ExtendScript alternative, with the primary action front-loaded. No filler; the example earns its place by disambiguating the nested args.

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 dispatcher with a free-form args object and no output schema, the description supplies the name source, a call example, and the return type. The remaining gap is per-operation argument discovery and failure behavior, which it only partially offloads to ps_catalog.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description exceeds that by giving a concrete call example that shows the nested args shape and its free-form object nature, which the schema leaves as additionalProperties. It still doesn't say where per-operation arg schemas live beyond the catalog reference.

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 Photoshop operation by name', and names the catalog that supplies valid names. It is distinguishable from ps_catalog (which lists) and ps_execute_script (which it says to avoid). It does not, however, distinguish itself from the many typed photoshop_* operation tools that overlap with it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear directive to look up names in ps_catalog and an explicit preference against writing ExtendScript, which is a real alternative-avoidance statement. It omits when to prefer ps_do over the equivalent typed tools such as photoshop_create_text_layer, and any when-not-to-use conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ps_execute_scriptA

Run arbitrary ExtendScript in Photoshop and return its result. Use only when no ps_do operation covers the task. The code runs inside a function: use an explicit return to pass data back (objects are serialized); a bare trailing expression returns undefined.

NameRequiredDescriptionDefault
scriptYesExtendScript (ES3) source; end with `return …`

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does disclose genuinely non-obvious behavior: the code is wrapped in a function, an explicit `return` is required, results are serialized, and a bare trailing expression yields undefined. What it omits is the safety profile of arbitrary code execution — no mention of side effects, document mutation risk, error propagation, or any sandbox/rate constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, zero filler. The core capability is front-loaded, the routing constraint follows, and the return-value mechanics are last — a sensible order for an agent reading top-down.

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 correctly spends effort explaining return/serialization semantics. For a single-parameter, side-effect-capable escape hatch it is nearly sufficient; only failure modes and the distinction from photoshop_execute_script remain 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?

Schema coverage is 100% and the single parameter is documented as ES3 source that must end in `return`. The description adds meaning beyond that schema text by explaining why the return is required (function wrapping) and how objects come back (serialized), which is real value over 'end with return …'.

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 arbitrary ExtendScript in Photoshop and return its result' — and explicitly fences itself against the high-level ps_do router. It does not, however, differentiate itself from the near-identically named sibling photoshop_execute_script, which leaves a real ambiguity an agent cannot resolve from the text alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use only when no ps_do operation covers the task' gives a clear when-to-use plus the named alternative, which is exactly the routing decision an agent needs given the large sibling list. It stops short of naming ps_catalog as the discovery path or clarifying the boundary with photoshop_execute_script.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ps_export_frameB

Export the current view of the active document as a PNG file to path (absolute). Use it for check frames the user will look at; name the file descriptively.

NameRequiredDescriptionDefault
pathYesabsolute .png path
qualityNofor JPEG/WebP only

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 and only partially does so. It discloses format and that `path` must be absolute, but says nothing about overwrite behavior if the file exists, whether the export alters document state or selection, whether an unsaved document matters, or what gets returned on success. These are precisely the details an agent needs before calling an unannotated file-writing 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?

Two front-loaded sentences, the core operation first and the practical advice second, with no filler. Slightly less tight than a 5 because 'name the file descriptively' is soft guidance that competes for attention with the missing behavioral details.

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?

Low complexity (two parameters, one required) means the description does not need to be long, and there is no output schema to compensate for. Still, it omits what the tool returns and how it differs from the export/preview siblings, leaving real gaps for an agent choosing among them.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description's '(absolute)' restates what the schema already says for `path`, and it says nothing about `quality`, which the schema notes is for JPEG/WebP only — clarifying that it is ignored for PNG output would have been genuine added value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (export), a specific resource (current view of the active document), and the output format (PNG file at `path`). An agent understands the operation immediately. However, it does not differentiate itself from close siblings in the list such as photoshop_export_as or photoshop_get_preview, which is the one thing keeping this 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?

'Use it for check frames the user will look at' gives a purpose context, so usage is implied rather than absent. But no alternative is named and no when-not condition exists — an agent cannot tell from this text why it should pick ps_export_frame over photoshop_export_as or photoshop_get_preview.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ps_get_layersB

Layer tree of the active document (names, types, visibility, opacity, blend modes).

NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With zero annotations, the description must carry the behavioral burden; 'tree of the active document' does establish it is a read of the currently open document, implying read-only and scoping. It does not say what happens with no open document, whether the tree is recursive into groups, or whether it is truncated for large documents.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with the resource first and the returned fields in parentheses. Nothing redundant or padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Listing the returned fields partially compensates for the missing output schema, which is the right instinct. But for a zero-param read with no annotations, it should still state the no-active-document behavior and how it differs from photoshop_get_layers.

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 there is nothing to disambiguate and the baseline is 4. The description correctly implies no input is needed — the active document is the implicit target.

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 the specific resource (layer tree of the active document) and enumerates the returned attributes (names, types, visibility, opacity, blend modes), so the agent knows exactly what it gets back. It does not, however, distinguish itself from the near-identically purposed sibling photoshop_get_layers, leaving genuine ambiguity about which to call.

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 guidance, no exclusions, and no mention of alternatives. Usage is only inferable from the fact that it returns layer structure. With a duplicate-looking sibling in the toolset, the absence of routing guidance is a real gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ps_get_stateA

Active document state: name, size, mode, layers summary, selection. Cheap — call it before and after edits instead of previews.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full disclosure burden. It usefully discloses that the call is inexpensive and positioned as a pre/post-edit check, but it does not explicitly state read-only safety, side effects, or behavior when no active document exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the core resource and returned fields, followed by practical usage guidance. Every phrase contributes useful information without waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no parameters, the description lists the key fields an agent should expect. It is nearly complete for a simple state getter, though it could clarify active-document prerequisites and sibling distinctions.

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 are no parameter semantics to explain. The baseline for a zero-parameter tool is 4, and the description does not need to add parameter detail.

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 resource and lists the state fields returned: name, size, mode, layers summary, selection. It contrasts with previews, but does not explicitly distinguish itself from sibling state/info tools such as photoshop_get_state or photoshop_get_document_info.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear usage guidance: call before and after edits instead of previews. This names an alternative category and a workflow context, but does not specify when not to use it or name the exact alternative tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ps_recipeC

Run a multi-step recipe by name (ps_catalog category "recipe"): remove_background, enhance_portrait, apply_color_grade, prepare_for_web, sky_blend, …

NameRequiredDescriptionDefault
argsNo
nameYes

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 burden of behavioral disclosure. It says the operation is 'multi-step' and lists recipe names, but does not state whether it mutates the document, what permissions are needed, whether the result is reversible, or what happens on failure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with no wasted wording. It is efficient, though the trailing example list with an ellipsis is slightly loose.

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 no output schema, no annotations, 0% schema description coverage, and a nested `args` object, so the description needs to do more. It gives the recipe category and examples but leaves the argument structure, return behavior, and sibling relationship undocumented.

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 for both parameters. It clarifies that `name` is a recipe name from the ps_catalog 'recipe' category and gives examples, but it says nothing about the nested `args` object, its accepted keys, or how recipe-specific arguments are 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?

The description states a specific verb and resource: 'Run a multi-step recipe by name', and anchors it to the ps_catalog 'recipe' category with concrete examples. It does not differentiate this generic runner from the many dedicated photoshop_recipe_* siblings, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage 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 ps_recipe versus the dedicated recipe tools like photoshop_recipe_remove_background or photoshop_recipe_sky_blend. The description lists example recipe names but does not say how to choose this tool over its siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ps_save_documentA

Save the active document (optionally to a new path / format). Save a copy before irreversible steps (flatten, merge, overwrite).

NameRequiredDescriptionDefault
pathNoabsolute path; omit to save in place
formatNoPSD | JPEG | PNG

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It usefully flags the destructive context (flatten/merge/overwrite) motivating a copy, but does not state that omitting path overwrites the active document in place, whether a format change alters the document (e.g., merges layers), 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no filler; the core action leads and the cautionary use case follows immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-optional-parameter tool this covers the essentials, but with no annotations and no output schema the description leaves important unknowns: in-place overwrite behavior, whether format conversion is lossy, and the result of the call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so both parameters are already documented, and the description only restates them as 'optionally to a new path / format'. No additional syntax, format-tradeoff, or default behavior is supplied beyond the schema baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (save the active document) plus the optional scope of new path/format. It does not differentiate itself from the near-identical sibling photoshop_save_document, which is a real ambiguity, 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 Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit usage context: use it to save a copy before irreversible steps such as flatten, merge, or overwrite. It does not name alternative tools (photoshop_export_as, ps_export_frame, photoshop_save_document) or state when not to use it, so it falls short of the explicit-alternatives bar.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ps_skillA

The Photoshop agent skill. No doc: the router — tools, order of work, addressing, what scripts cannot do in Photoshop and which reference to read; read it at the start of any Photoshop task beyond a single read or edit. doc: one reference — Photoshop's generative tools (Generative Fill / Expand / Remove, Generate Image, partner models and credits, reference images), retouch (Remove tool, Harmonize, Generative Upscale, Neural Filters), selection and masking, colour and retouch recipes, batch and export, AI Assistant, multi-tool combos, gotchas.

NameRequiredDescriptionDefault
docNoreference: ai-assistant | batch-export | color-retouch | combos | generative | gotchas | retouch | selection-masking

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 burden and does well: it discloses that the no-`doc` call returns a router-level guide, that `doc` returns exactly one reference, and it enumerates the substantive topics each contains (generative tools, retouch, selection/masking, gotchas, script limitations). It does not explicitly state that the tool is read-only with no image mutation, but the 'read it' framing and documentation-only content make that clear enough.

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 dense but front-loaded: the two modes are introduced immediately and the reference topics are enumerated compactly. The single run-on sentence with many comma-separated topics is slightly hard to parse, which keeps it from 5, but every clause carries routing information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-optional-parameter documentation tool with no output schema, the definition is complete enough: it says what each mode returns, when to invoke it, and what topics are available. It could go further by suggesting the sequence (read router first, then a specific doc) or output format, but those are minor for a knowledge-lookup tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100%, so the baseline is 3. The description adds meaning beyond the schema by mapping the `doc` slug values to their subject matter — e.g. 'generative' covers Generative Fill/Expand/Remove and credits, 'gotchas' covers pitfalls — so an agent can pick a reference without guessing from the slug alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description makes clear this is a documentation router for Photoshop: with no `doc` it returns a guide covering tools, order of work, addressing, and script limits; with `doc` it returns one named reference. The two-mode behavior is explicit and an agent can distinguish it from action-oriented siblings like `ps_do` or `photoshop_generative_fill`. It never names a sibling directly, so it stops short of 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit trigger — 'read it at the start of any Photoshop task beyond a single read or edit' — and an explicit exclusion for trivial single operations. That is exactly the routing guidance an agent needs before choosing between this docs tool and the numerous action tools.

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. 135 tool updatesv1.1.2
    • First observedphotoshop_adjust_brightness_contrast
    • First observedphotoshop_adjust_curves
    • First observedphotoshop_adjust_exposure
    • First observedphotoshop_adjust_hue_saturation
    • First observedphotoshop_adjust_vibrance
    • First observedphotoshop_apply_gaussian_blur
    • First observedphotoshop_apply_gradient_map
    • First observedphotoshop_apply_gradient_mask
    • First observedphotoshop_apply_high_pass
    • First observedphotoshop_apply_layer_mask
    • First observedphotoshop_apply_layer_style
    • First observedphotoshop_apply_lut
    • First observedphotoshop_apply_motion_blur
    • First observedphotoshop_apply_noise
    • First observedphotoshop_apply_photo_filter
    • First observedphotoshop_apply_sharpen
    • First observedphotoshop_apply_smart_blur
    • First observedphotoshop_auto_contrast
    • First observedphotoshop_auto_levels
    • First observedphotoshop_close_document
    • First observedphotoshop_content_aware_fill
    • First observedphotoshop_contract_selection
    • First observedphotoshop_convert_to_smart_object
    • First observedphotoshop_create_artboard
    • First observedphotoshop_create_clipping_mask
    • First observedphotoshop_create_document
    • First observedphotoshop_create_layer
    • First observedphotoshop_create_layer_mask
    • First observedphotoshop_create_smart_object_via_copy
    • First observedphotoshop_create_text_layer
    • First observedphotoshop_crop_document
    • First observedphotoshop_delete_layer
    • First observedphotoshop_delete_layer_mask
    • First observedphotoshop_desaturate
    • First observedphotoshop_deselect
    • First observedphotoshop_distort_layer
    • First observedphotoshop_duplicate_layer
    • First observedphotoshop_edit_smart_object_contents
    • First observedphotoshop_execute_script
    • First observedphotoshop_expand_selection
    • First observedphotoshop_export_artboards
    • First observedphotoshop_export_as
    • First observedphotoshop_feather_selection
    • First observedphotoshop_fill_layer
    • First observedphotoshop_fit_layer_to_document
    • First observedphotoshop_flatten_image
    • First observedphotoshop_generate_from_datasets
    • First observedphotoshop_generate_image
    • First observedphotoshop_generative_expand
    • First observedphotoshop_generative_fill
    • First observedphotoshop_generative_remove
    • First observedphotoshop_generative_upscale
    • First observedphotoshop_get_capabilities
    • First observedphotoshop_get_document_info
    • First observedphotoshop_get_history
    • First observedphotoshop_get_layers
    • First observedphotoshop_get_preview
    • First observedphotoshop_get_selection_bounds
    • First observedphotoshop_get_state
    • First observedphotoshop_get_version
    • First observedphotoshop_image_stack
    • First observedphotoshop_import_datasets
    • First observedphotoshop_invert
    • First observedphotoshop_invert_selection
    • First observedphotoshop_list_artboards
    • First observedphotoshop_list_datasets
    • First observedphotoshop_list_documents
    • First observedphotoshop_list_fonts
    • First observedphotoshop_merge_visible_layers
    • First observedphotoshop_move_layer
    • First observedphotoshop_move_layer_down
    • First observedphotoshop_move_layer_to_bottom
    • First observedphotoshop_move_layer_to_position
    • First observedphotoshop_move_layer_to_top
    • First observedphotoshop_move_layer_up
    • First observedphotoshop_neural_filter
    • First observedphotoshop_open_image
    • First observedphotoshop_ping
    • First observedphotoshop_place_image
    • First observedphotoshop_play_action
    • First observedphotoshop_rasterize_layer
    • First observedphotoshop_recipe_apply_color_grade
    • First observedphotoshop_recipe_batch_mockup_replace
    • First observedphotoshop_recipe_batch_watermark
    • First observedphotoshop_recipe_csv_to_cards
    • First observedphotoshop_recipe_dodge_burn
    • First observedphotoshop_recipe_enhance_portrait
    • First observedphotoshop_recipe_export_social_variants
    • First observedphotoshop_recipe_frequency_separation
    • First observedphotoshop_recipe_gradient_fade
    • First observedphotoshop_recipe_organize_layers
    • First observedphotoshop_recipe_passport_photo
    • First observedphotoshop_recipe_prepare_for_web
    • First observedphotoshop_recipe_remove_background
    • First observedphotoshop_recipe_remove_distraction
    • First observedphotoshop_recipe_sky_blend
    • First observedphotoshop_recipe_split_carousel
    • First observedphotoshop_redo
    • First observedphotoshop_release_clipping_mask
    • First observedphotoshop_rename_layer
    • First observedphotoshop_replace_smart_object_contents
    • First observedphotoshop_resize_image
    • First observedphotoshop_rotate_layer
    • First observedphotoshop_save_document
    • First observedphotoshop_save_selection
    • First observedphotoshop_scale_layer
    • First observedphotoshop_select_all
    • First observedphotoshop_select_ellipse
    • First observedphotoshop_select_layer_by_name
    • First observedphotoshop_select_rectangle
    • First observedphotoshop_select_subject
    • First observedphotoshop_set_active_artboard
    • First observedphotoshop_set_active_document
    • First observedphotoshop_set_layer_blend_mode
    • First observedphotoshop_set_layer_locked
    • First observedphotoshop_set_layer_opacity
    • First observedphotoshop_set_layer_visibility
    • First observedphotoshop_set_text_alignment
    • First observedphotoshop_set_text_color
    • First observedphotoshop_set_text_font
    • First observedphotoshop_set_text_ranges
    • First observedphotoshop_set_text_style
    • First observedphotoshop_sky_replacement
    • First observedphotoshop_undo
    • First observedphotoshop_update_text_content
    • First observedps_batch
    • First observedps_catalog
    • First observedps_do
    • First observedps_execute_script
    • First observedps_export_frame
    • First observedps_get_layers
    • First observedps_get_state
    • First observedps_recipe
    • First observedps_save_document
    • First observedps_skill

TDQS

B3.2/5.0

Scored across 135 tools

Disambiguation2/5

There are three parallel, overlapping surfaces: the photoshop_* family, the ps_* family (ps_get_state, ps_get_layers, ps_save_document, ps_export_frame, ps_execute_script) and the recipe/ps_do operation catalog, all covering the same operations. Recipes heavily overlap atomic tools (photoshop_recipe_gradient_fade vs photoshop_apply_gradient_mask vs photoshop_recipe_sky_blend; photoshop_recipe_remove_distraction vs photoshop_content_aware_fill vs photoshop_generative_remove). An agent faces real misselection risk despite detailed per-tool Do-Not-Use notes.

Naming Consistency2/5

Within photoshop_ tools the verb_noun snake_case pattern is mostly held, but the presence of a second ps_* namespace (ps_catalog, ps_do, ps_batch, ps_skill, ps_recipe) alongside duplicate photoshop_ equivalents breaks predictability. Recipe tools use a recipe_ infix while sibling tools do not, and some tools drop the verb or use divergent verbs (photoshop_play_action, photoshop_image_stack, photoshop_sky_replacement).

Tool Count1/5

135 tools is an extreme over-scoping for any single server; even with a broad Photoshop domain this far exceeds what an agent can reason about coherently. The parallel ps_*/photoshop_* namespaces and duplicated recipe/atomic layers compound the overload rather than adding distinct capability.

Completeness5/5

The surface is remarkably complete: documents, layers, selections/masks, text, smart objects, artboards, adjustments, generative AI, batch recipes, data-driven templates, export formats, and history/undo. Lifecycle coverage (create/open/save/close/export) and non-destructive workflows are all present with no obvious dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that lets AI assistants control Adobe Illustrator locally—running ExtendScript, capturing canvas screenshots, exporting artwork, and optionally remembering techniques—all without network activity.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    An MCP server that lets AI assistants drive Adobe Photoshop on Windows through ExtendScript and COM automation, offering ~122 tools for documents, layers, text, filters, color, selections, masks, layout QA, and design systems.
    MIT