Photoshop MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Photoshop MCP Servercreate a 1920x1080 canvas with a blue gradient background"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Photoshop MCP
Languages: English · 简体中文 · Español · Deutsch · 日本語 · Türkçe · Website
Chat with Photoshop like a colleague. Describe what you want in plain words — "remove this background", "resize these for Instagram" — and your AI assistant does the clicking for you. Works with Cursor, Claude, or the built-in chat window. No code, no scripts, no IDE required.
Note: This is an unofficial, community-maintained project and is not affiliated with or endorsed by Adobe Inc.
What can it do?
✂️ Remove backgrounds — subject isolated with a clean, editable mask
👤 Retouch portraits — skin smoothing, tone fixes, dodge & burn setup
🌐 Export for web & social — sRGB, sharpened, correctly sized for Instagram, X, and more
🎞️ Make carousels — split one wide design into seamless, numbered slides
💧 Watermark in bulk — a whole folder of photos in one go, originals untouched
🎨 Color grade & more — film looks, sky replacement, generative fill (Adobe account required)
⏪ Stay safe — every multi-step "recipe" is a single undo step in Photoshop
Under the hood: 116 tools (100 atomic + 16 one-step recipes) — full list in
docs/available-tools.md.
Related MCP server: Noun MCP Server
Try saying
Remove the background from this portrait — keep it editable with a mask.Enhance this portrait — smooth the skin and fix the tones, medium intensity.Prepare this design for web, then export Instagram and X post variants.Split this wide banner into a 5-slide seamless Instagram carousel.More recipes (batch watermark, passport photos, CSV-driven cards, mockups, …) and
pre-engineered prompt templates: docs/prompt-layer.md.
Get started
You need Photoshop running (Windows or macOS, any version 2012+) and Node.js 18+.
Option 1 — Easiest: the built-in chat window
npx -p @alisaitteke/photoshop-mcp photoshop-mcp-uiA chat window opens in your browser. Sign in with an AI provider API key — or reuse your existing Claude Code / Gemini CLI account, no key needed.

Details, providers, Action Plan (API key or CLI account), and security notes:
docs/standalone-ui.md.
Option 2 — Inside your AI app (Cursor, Claude, VS Code)
Cursor (shows the Photoshop logo in the MCP list): install the plugin from Customize → Plugins, or search the Cursor Marketplace for photoshop-mcp once it is listed. That package still launches npx -y @alisaitteke/photoshop-mcp; the plugin manifest is what supplies the icon.
Until the Marketplace listing is live, copy .cursor-plugin/, mcp.json, and assets/ into ~/.cursor/plugins/local/photoshop-mcp and reload the window — details in CONTRIBUTING.md. The Install-in-Cursor button and a raw mcp.json entry still work, but they show a generic icon.
Claude Code:
claude mcp add photoshop -- npx -y @alisaitteke/photoshop-mcpOr add this to your MCP client's config (Cursor, Claude Desktop, …):
{
"mcpServers": {
"photoshop": {
"command": "npx",
"args": ["-y", "@alisaitteke/photoshop-mcp"]
}
}
}How it works
You type what you want in plain language.
The AI plans the steps, checking the document state first.
Photoshop executes — each recipe lands as one undoable step.
Something went wrong? The AI reads the structured error and knows what to try
next. Common fixes: docs/troubleshooting.md.
Documentation
Available tools — all 116 tools with parameters
Standalone UI — providers, auth modes, Action Plan, security
Prompt layer — prompt templates and recipes
Architecture — how the bridge works under the hood
Development — build from source, tests
Contributing
Contributions are welcome! Please read CONTRIBUTING.md before opening a PR.
Maintainer
Built by Ali Sait Teke — GitHub · LinkedIn.
License
MIT
Anonymous, aggregated usage analytics are collected by default and can be
disabled anytime — details in docs/anonymous-usage-analytics.md.
Available Tools
118 toolsphotoshop_adjust_brightness_contrastB
Adjust brightness and contrast of the active layer.
Users often say: fix exposure, add contrast, brighten, darken.
| Name | Required | Description | Default |
|---|---|---|---|
| contrast | Yes | Contrast adjustment (-100 to 100) | |
| brightness | Yes | Brightness adjustment (-100 to 100) | |
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| preset | No | auto_tone (S-curve) or neutral (identity curve) | auto_tone |
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| gamma | No | Gamma correction (0.01 to 9.99) | |
| offset | No | Offset (-0.5 to 0.5) | |
| exposure | No | Exposure in stops (-20 to 20) | |
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| hue | Yes | Hue shift (-180 to 180) | |
| lightness | Yes | Lightness adjustment (-100 to 100) | |
| saturation | Yes | Saturation adjustment (-100 to 100) | |
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| vibrance | No | Vibrance (-100 to 100) | |
| saturation | No | Saturation (-100 to 100) | |
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| radius | Yes | Blur radius in pixels (0.1-250) | |
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| reverse | No | Reverse the gradient (white→black) | |
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| end_pct | No | Gradient end along fade axis (0-100) | |
| angle_deg | No | Override gradient angle in degrees (optional) | |
| direction | No | Gradient fade direction on the mask (default bottom_to_top) | bottom_to_top |
| start_pct | No | Gradient start along fade axis (0-100) | |
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| radius | Yes | Edge retention radius in pixels (0.1-250) | |
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| red | No | Effect color red (0-255) | |
| blue | No | Effect color blue (0-255) | |
| size | No | Blur/size in pixels (stroke width for stroke) | |
| angle | No | Light angle in degrees (drop shadow / bevel) | |
| green | No | Effect color green (0-255) | |
| style | No | Which effect to apply | drop_shadow |
| opacity | No | Effect opacity (0-100) | |
| distance | No | Offset distance in pixels (drop shadow only) | |
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| lut | Yes | Built-in LUT file name (e.g. "Crisp_Warm.3dl") or absolute path to a .cube/.3dl/.look file | |
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| angle | Yes | Blur angle in degrees (-360 to 360) | |
| radius | Yes | Blur distance in pixels (1-999) | |
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | Noise amount in percent (0.1-400) | |
| document_id | No | Optional 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. | |
| distribution | No | Noise distribution type | UNIFORM |
| monochromatic | No | Apply monochromatic noise |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| red | No | Filter color red (0-255); warming ≈ 236 | |
| blue | No | Filter color blue (0-255); warming ≈ 0 | |
| green | No | Filter color green (0-255); warming ≈ 138 | |
| density | No | Filter density percent (0-100) | |
| document_id | No | Optional 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_luminosity | No | Preserve luminosity (default true) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | Sharpening amount in percent (1-500) | |
| radius | Yes | Radius in pixels (0.1-250) | |
| threshold | No | Threshold levels (0-255) | |
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Smart blur mode (default: NORMAL) | NORMAL |
| radius | Yes | Blur radius (0.1-100) | |
| quality | No | Blur quality / smoothness (default: MEDIUM) | MEDIUM |
| threshold | Yes | Blur threshold — higher values restrict blur to stronger edges (0.1-100) | |
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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_documentB
Close the active Photoshop document
| Name | Required | Description | Default |
|---|---|---|---|
| save | No | Whether to save changes before closing | |
| document_id | No | Optional 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
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosing behavioral traits. It states that the tool closes the active document but does not warn that closing without saving (save=false, the default) will discard unsaved changes. This is a potentially destructive operation that should be flagged. Additionally, it does not explain the side effect of activating a document when document_id is provided. The description lacks critical 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with zero redundancy. It states the core action immediately and contains no filler. This is an example of appropriate conciseness for a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's destructive potential (closing without saving) and the absence of annotations or an output schema, the description is incomplete. It does not explain the default behavior of the save parameter, the risk of data loss, or the effect of document_id on activation. An agent needs this context to use the tool safely and correctly. The schema provides parameter details, but the description should summarize the behavioral implications, which it fails to do.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides 100% coverage of both parameters (save and document_id) with descriptive text. The description adds no additional meaning beyond what the schema already offers. According to the rubric, when schema coverage is high (>80%), the baseline is 3. The description does not enhance parameter understanding, so a score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Close the active Photoshop document'. It specifies the verb (close) and the resource (active Photoshop document), and it distinguishes this from sibling tools like photoshop_save_document (which saves without closing) and photoshop_set_active_document (which only changes active state). The purpose is unambiguous and specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives. It does not mention that this tool is for closing a document while photoshop_save_document is for saving, or that setting document_id activates a document first. There is no explicit when/when-not guidance, and the only usage hint comes from the parameter schema, which is not part of the description. The agent is left 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_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.
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| pixels | Yes | Pixels to contract by (minimum 1) | |
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| layer_name | No | Optional exact layer name (recursive search). Default: active layer. | |
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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_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).
| Name | Required | Description | Default |
|---|---|---|---|
| layer_name | No | Optional exact layer name (recursive search). Default: active layer. | |
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| width | Yes | Document width in pixels | |
| height | Yes | Document height in pixels | |
| colorMode | No | Color mode (RGB, CMYK, Grayscale) | RGB |
| resolution | No | Document resolution in DPI (default: 72) | |
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Name for the new layer (optional) | |
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| layer_name | No | Optional source Smart Object layer name. Default: active layer. | |
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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 size, and optional font.
Use when: adding labels, titles, or typography to the design. Do NOT use when: editing existing text — use photoshop_update_text_content.
Returns: layer name, text, position, fontSize, font (when fontName set), context. Use photoshop_list_fonts to discover font names; photoshop_set_text_font to change font later. Preconditions: active document. Side effects: adds text layer.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | X position in pixels (default: 100) | |
| y | No | Y position in pixels (default: 100) | |
| text | Yes | Text content | |
| fontName | No | Optional font display or PostScript name (resolved via app.fonts; see photoshop_list_fonts) | |
| fontSize | No | Font size in points (default: 24) | |
| document_id | No | Optional 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
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the burden. It states 'Preconditions: active document' and 'Side effects: adds text layer', and lists return fields. It does not detail every edge case or the document-switching behavior of document_id, but the schema already covers that, and the transparency is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and clearly segmented with scannable labels: Use when, Do NOT use when, Returns, Preconditions, Side effects. Every sentence adds operational value; the repetition of 'adds text layer' is minor and does not hurt readability. It front-loads the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema or annotations, the description covers purpose, usage boundaries, return fields, preconditions, and side effects. It does not define 'context' or enumerate error conditions, but given the already-rich input schema and the referenced sibling tools, the remaining gaps are minor. It is complete enough for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description's mention of 'optional font' and font-related tool references adds a little guidance, but it mostly restates schema information rather than enriching parameter meaning. Therefore baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence names the verb (create), the resource (text layer), and the key inputs (content, position, font size, optional font). The 'Do NOT use when' line distinguishes it from photoshop_update_text_content, so an agent can separate create from edit. This is specific and sibling-aware.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides an explicit 'Use when' scope (adding labels, titles, or typography) and a 'Do NOT use when' condition with the alternative tool (editing existing text -> photoshop_update_text_content). It also routes to photoshop_list_fonts and photoshop_set_text_font for related font operations. This leaves little 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_crop_documentB
Crop the document to specified bounds
| Name | Required | Description | Default |
|---|---|---|---|
| top | Yes | Top edge position in pixels | |
| left | Yes | Left edge position in pixels | |
| right | Yes | Right edge position in pixels | |
| bottom | Yes | Bottom edge position in pixels | |
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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_duplicate_layerA
Duplicate the active layer. The duplicate becomes the active layer; returns its name and, when available, its layer id.
| Name | Required | Description | Default |
|---|---|---|---|
| newName | No | Name for the duplicated layer (optional) | |
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| layer_name | No | Optional exact Smart Object layer name. Default: active layer. | |
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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.
Preconditions: valid ExtendScript; active document if script expects one. Side effects: depends on code.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | ExtendScript code to execute | |
| document_id | No | Optional 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
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral disclosure burden. It explains the IIFE wrapper, the need for explicit `return`, the serialization via toSource(), automated parsing on macOS/Windows, the active-document precondition, and that side effects depend on the code. This is substantial and honest transparency for an arbitrary-code tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is organized into short labeled sections: use, do-not-use, returns, important IIFE note, preconditions, and side effects. Every sentence adds necessary operational information with no filler, and the critical return quirk is prominently highlighted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a high-complexity arbitrary-code tool with no output schema and no annotations, the description covers what an agent needs: return format, execution semantics, serialization behavior, preconditions, and safety 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.
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 extra meaning for the `code` parameter beyond the schema, though it does describe important execution context such as IIFE and return semantics. The `document_id` parameter is adequately documented in the schema itself.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Execute custom ExtendScript (JSX) code inside Photoshop' and frames it as an 'advanced escape hatch'. It clearly differentiates this tool from the many atomic photoshop_* and photoshop_recipe_* siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says '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 is direct routing guidance with named alternatives.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| pixels | Yes | Pixels to expand by (minimum 1) | |
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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_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). Do NOT use when: saving the working document itself — use photoshop_save_document.
Returns: JSON { ok, summary, details: { path, format, method } }. Preconditions: active document. Side effects: writes one file to path.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Absolute output file path (extension should match format) | |
| format | No | Export format | PNG |
| quality | No | Quality 0-100 (JPEG/WebP/AVIF) | |
| document_id | No | Optional 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
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it delivers: it discloses side effects ('writes one file to path'), preconditions ('active document'), version requirements (Photoshop 23.2+ for WebP/AVIF), error behavior ('return a clear error when unsupported'), and the non-destructive guarantee. There is no contradiction with annotations because none exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is line-broken into scannable segments, front-loads the core purpose, and every line earns its place. It is on the longer side, but the user-phrasing mapping, return format, and preconditions/side-effects notes are all non-redundant additions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description compensates fully: it specifies the JSON return shape, preconditions, side effects, version constraints, and usage boundaries. For a 4-parameter export 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.
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 schema already documents path, format, quality, and document_id in detail. The description adds only modest param-adjacent context (WebP/AVIF version requirement tied to format), which does not meaningfully exceed what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise verb+resource statement: 'Export a copy of the active document as PNG, JPEG, WebP or AVIF without changing the open document.' It names concrete formats, clarifies the non-destructive nature, and explicitly differentiates from the sibling photoshop_save_document ('Do NOT use when: saving the working document itself').
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use ('web-ready delivery formats are needed'), explicit when-not-to-use ('saving the working document itself'), and names the alternative tool. It also maps common user phrasings ('export for web', 'save as webp', 'quick export png') to this tool, which helps an agent recognize intente and avoids misrouting.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| pixels | Yes | Feather radius in pixels (minimum 1) | |
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| red | Yes | Red component (0-255) | |
| blue | Yes | Blue component (0-255) | |
| green | Yes | Green component (0-255) | |
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | No | Optional 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. | |
| fillDocument | No | If true, fills entire canvas (may crop). If false, fits within canvas (may have margins). Default: false |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the core 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Output format | JPEG |
| output_dir | Yes | Directory for generated files (created if missing) | |
| document_id | No | Optional 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_names | No | Subset of data set names to export (default: all) |
TDQS
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.
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.
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.
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.
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.
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
Generate image content from a text prompt (text-to-image) on blank or active document.
Use when: creating new imagery from a description.
Returns: { ok, summary, details }. Preconditions: generative_fill capability; Adobe generative credits.
| Name | Required | Description | Default |
|---|---|---|---|
| width | No | Width if creating new doc (default 1024) | |
| height | No | Height if creating new doc (default 1024) | |
| prompt | Yes | Image description | |
| document_id | No | Optional 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
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does disclose preconditions (generative_fill capability and Adobe credits) and the return shape, which is useful. However, it does not clarify side effects on an active document, such as whether a new layer is created or existing content is replaced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: a one-line definition, a use-when clause, return shape, and preconditions. 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description includes the use case, document scope, return format, and preconditions, which covers most operational needs. It lacks explicit guidance on when not to use it or how it differs from alternative sibling tools, but it is still mostly complete for a straightforward text-to-image operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description adds minimal param-level meaning beyond the schema, 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Generate image content from a text prompt (text-to-image)', giving a specific verb, resource, and mode. It also scopes the operation to blank or active documents. It does not explicitly name sibling alternatives, but the text-to-image framing helps distinguish it from related generative tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Use when: creating new imagery from a description' line provides clear context for when the tool should be used. It does not provide explicit exclusions or mention alternative tools, so it falls just short of full guidance.
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).
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.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | No | Describe how to extend the image | extend the background naturally |
| direction | No | Expand direction (default all) | all |
| document_id | No | Optional 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
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 side effects ('enlarges canvas with generated content'), preconditions, and the return shape. It does not mention whether the operation is reversible or whether it consumes Firefly credits, but the disclosed side effect and return contract are meaningful 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.
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 use cases, return shape, preconditions, and 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter tool with no output schema, the description covers the action, use cases, return contract, preconditions, and side effects. It does not explain what 'wait' means in the return or how long generation may take, but the essential information for calling the tool correctly is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters. The description adds no parameter-level detail beyond what the schema provides, which is acceptable per the baseline. The return shape mention ('details: { direction, prompt, wait }') adds some context but does not deepen parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Extend the canvas beyond its edges') and resource ('using Generative Expand (Firefly)'), and distinguishes it from siblings like photoshop_generative_fill and photoshop_crop_document by naming the outpainting use case. An agent can tell exactly what this tool does without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit use cases ('outpainting, extending background, or expanding composition') and lists preconditions ('active document; generative_fill capability'). It does not explicitly name alternative tools to use instead, but the use-case framing plus sibling names makes the intended context clear.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | Describe what to generate in the selection | |
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| feather_px | No | Edge feather before remove (0-20, default 0) | |
| document_id | No | Optional 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_subject | No | Run Select Subject when no selection exists (default false) |
TDQS
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.
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.
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.
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.
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.
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 }. Preconditions: generative_upscale capability; signed-in Adobe account.
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | No | Optional 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_scale | No | Target scale factor (2 or 4) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It discloses the return format and preconditions (capability, account), but does not specify whether the operation is destructive or reversible, or whether it modifies the active document in place. This is a moderate gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely efficient: the main action is front-loaded, followed by use cases, exclusions, return type, and preconditions in a clear structure. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with only two optional parameters and no output schema, the description covers purpose, usage guidance, return shape, and preconditions. An agent has everything needed to decide and invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions for both parameters. The description adds no extra parameter-level detail beyond what the schema already provides, so a baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action (upscale) and the specific method (Generative Upscale), and distinguishes it from the sibling photoshop_resize_image by noting AI detail recovery. The verb and resource are explicit, and it names the alternative directly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use and when-not-to-use conditions, including a specific flag check and the alternative tool to call. This leaves no ambiguity for an agent deciding between upscale and resize.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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, context. Preconditions: active document. Side effects: none.
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | No | Optional 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
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 clearly states 'Side effects: none' and 'Preconditions: active document', and it lists the return structure. It does not go into edge cases (e.g., behavior with no active document) but covers the essential safety and effect profile for a read-only list operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a tight, well-organized block: purpose, usage guidance, return summary, preconditions, and side effects are each given one concise line. It front-loads the core action and avoids fluff. Every sentence contributes to the agent's decision-making.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description explains the return values (layerCount, layers array, context) at a summary level. It also states preconditions and side effects. It could be more explicit about the shape of 'layers' or error conditions, but for a simple list tool with one optional parameter, it provides sufficient context for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The sole parameter, document_id, is fully documented in the input schema (including its purpose and when it activates the document). Schema coverage is 100%, so the description does not need to add parameter details. The description itself adds no parameter-specific information, which is acceptable given the schema's thoroughness.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific action ('List all layers') and a concrete resource ('in the active document'), then enumerates the exact fields returned (kind, visibility, opacity). It also differentiates itself from photoshop_get_state in the usage section, so an agent can tell them apart without inspecting schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'Use when' and 'Do NOT use when' guidance is provided, with a named alternative (photoshop_get_state) and the condition that selects it. This leaves no ambiguity about when to invoke this tool versus lighter or heavier options.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| quality | No | JPEG quality 1–12 (default 8) | |
| document_id | No | Optional 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_px | No | Maximum long edge in pixels (default 1024) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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, document.id/name/dimensions/colorMode, activeLayer kind/name, hasSelection. Capture document.id and pass it as document_id on later mutating calls. Preconditions: none (safe on empty session). Side effects: none.
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | No | Optional 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
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 'read-only', 'cheap', 'Preconditions: none (safe on empty session)', and 'Side effects: none'. It also outlines what the return JSON contains. This is thorough 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is tightly structured with short sections: purpose, use-when, do-not-use, returns, preconditions, side effects. Every sentence earns its place with no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete for the tool's complexity. It covers the return shape, the optional parameter semantics, preconditions, side effects, and routing to an alternative. Nothing an agent needs to invoke it correctly is missing, even without an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds actionable semantics beyond the schema: 'Capture document.id and pass it as document_id on later mutating calls.' It explains why the parameter exists and how to use it, going beyond the schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Return a cheap read-only snapshot of Photoshop session state (active document, layer, selection).' It clearly distinguishes the tool from siblings by scoping it to session state and explicitly excluding visual preview use cases.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Use when' / 'Do NOT use when' structure gives explicit conditions and names a concrete alternative (photoshop_get_preview). This leaves no ambiguity about when to invoke 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_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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Stack mode — median removes transient objects, mean reduces noise | median |
| files | Yes | Absolute paths of the images to stack (min 2) | |
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| xml_path | Yes | Absolute path to the variables/data-sets XML file | |
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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_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.
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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, and which tab is active (read-only).
Use when: multiple documents are open and you need document_id before switching tabs 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[], active_document_id, context } }. Preconditions: none (safe when zero documents open). Side effects: none.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It explicitly states 'read-only', 'Side effects: none', and 'Preconditions: none (safe when zero documents open)', covering safety and side-effect concerns. It also specifies the return JSON shape, which is additional behavioral context beyond what annotations would typically provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact yet comprehensive. It front-loads the core purpose, then provides usage conditions, return format, and safety details in a structured bullet-like layout. 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no parameters, no output schema, and a simple list operation, the description covers all essential aspects: the returned JSON structure, preconditions, side effects, and clear use cases. An agent has everything needed to decide whether and how to invoke it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema description coverage is trivially 100%. The baseline for 0 params is 4, and the description adds no parameter-specific information because there is nothing to document. This is appropriate; no further value could be added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List') with a precise resource ('every open Photoshop document') and explicitly notes the returned fields (id, dimensions, active tab). It also labels the operation as read-only, which clearly distinguishes it from mutation tools. The sibling list includes many similar-sounding tools, but this one is unambiguous about scope and output.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit 'Use when' and 'Do NOT use when' conditions, naming the alternative tools (photoshop_get_document_info and photoshop_get_state) and the exact scenario where they should be used instead. This is textbook 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_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, or pass display name to set/create tools (they resolve automatically).
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum fonts to return (default: 200) | |
| query | No | Optional substring filter (matches name, postScriptName, or family) | |
| document_id | No | Optional 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
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, and it does this well. It explicitly states 'Side effects: none,' which is a clear safety signal. It also discloses that the first call may be slow (app.fonts.length can exceed 1000), and it details the return structure: fonts array with fields, total count, and truncated flag. This is comprehensive for a read-only list operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured. It front-loads the primary action, follows with usage guidance and a key note about PostScript names, then provides return information and side effects. Every sentence earns its place without redundancy, making it easy for an agent to scan and extract the essential information quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a font-listing tool, the description is complete. It explains when to use it, what it returns (including the truncated flag), that it has no side effects, and that the first call may be slow. It also connects to related tools (create_text_layer, set_text_font) and clarifies how the output should be used. The optional document_id behavior is documented in the schema, so no additional description is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: each parameter (limit, query, document_id) has a clear description. The tool description adds no additional parameter semantics beyond what the schema already provides. Since the schema fully documents the parameters, the baseline of 3 is appropriate; the description does not need to compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'List installed fonts available to Photoshop.' It clearly distinguishes this from sibling text-manipulation tools by focusing on font enumeration. It also mentions its role in supporting photoshop_create_text_layer and photoshop_set_text_font, which reinforces its unique purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states 'Use when: choosing a font for photoshop_create_text_layer or photoshop_set_text_font.' This is a clear trigger for when the tool is appropriate. It also gives a note about PostScript names, guiding how the output should be consumed. However, it does not explicitly state when not to use the tool or mention any alternatives, so it falls slightly short of the top tier.
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
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| deltaX | Yes | Horizontal offset in pixels (can be negative) | |
| deltaY | Yes | Vertical offset in pixels (can be negative) | |
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| position | Yes | Position relative to target layer | |
| document_id | No | Optional 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. | |
| targetLayerName | Yes | Name of the layer to move relative to |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says '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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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+.
| Name | Required | Description | Default |
|---|---|---|---|
| blur | No | Skin smoothing blur 0-100 (skin_smoothing only) | |
| filter | Yes | Neural filter to apply | |
| smoothness | No | Skin smoothing smoothness 0-100 (skin_smoothing only) | |
| document_id | No | Optional 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_id | No | Layer id for harmonize reference (harmonize only) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| filePath | Yes | Full path to the image file | |
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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 Photoshop is installed and reachable on this machine.
Use when: once at session start if connection status is unknown. Do NOT use when: on every tool call — call once, then use photoshop_get_state.
Returns: connection success or failure message. Preconditions: none. Side effects: may trigger Photoshop detection.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses preconditions (none), return value (connection success or failure message), and side effects (may trigger Photoshop detection). A slight gap is that 'may trigger detection' is somewhat vague about what that detection entails, but it is still meaningful transparency for a ping-like tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured with a clear first sentence followed by short bullet-like usage, return, precondition, and side-effect notes. Every line adds information and the critical usage distinction is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter connectivity check with no output schema, the description covers the purpose, invocation timing, alternative tool, return content, preconditions, and side effects. Nothing necessary for an agent 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters and the schema documents this fully with 100% coverage, so the baseline of 4 applies. The description correctly adds no unnecessary parameter guidance since none exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: verify Photoshop is installed and reachable. It also distinguishes itself from photoshop_get_state by noting when each should be used, which is essential given the sibling list includes get_state.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use and when-not-to-use guidance is provided: call once at session start if connection status is unknown, and do not call on every tool invocation. It names the preferred alternative, photoshop_get_state, leaving no ambiguity about routing.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | Absolute canvas X of the placed layer top-left, in pixels (default: 0) | |
| y | No | Absolute canvas Y of the placed layer top-left, in pixels (default: 0) | |
| filePath | Yes | Full path to the image file (JPEG, PNG, PSD, etc.) | |
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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_actionC
Play a recorded action from the Actions palette
| Name | Required | Description | Default |
|---|---|---|---|
| actionName | Yes | Name of the action to play | |
| document_id | No | Optional 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. | |
| actionSetName | Yes | Name of the action set containing the action |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the full burden of behavioral disclosure. It merely states that an action is played, without mentioning side effects (e.g., document modification), whether the action is reversible, or if it requires a specific document state. This is a significant gap for a tool that executes a potentially destructive action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with no superfluous words. It is as concise as possible while still conveying the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (playing a recorded action can have significant effects), the description lacks critical context: it does not state that an active document is required, what happens if the action or set doesn't exist, or what the outcome will be. With no output schema and no annotations, this is incomplete for safe and correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers all three parameters with descriptions, so the baseline is 3. The description adds no extra semantics beyond what the schema already documents, and no parameter details are missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the verb 'Play' and the resource 'recorded action from the Actions palette', which is clear and specific. It does not explicitly distinguish from sibling tools, but no sibling directly overlaps with this action-playing capability, so it is sufficiently clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, nor does it mention any preconditions like requiring an active document. An agent would have to infer from the name and schema when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
photoshop_rasterize_layerA
Rasterize the active layer (convert text/smart object to normal layer)
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| preset | No | Preset name. One of: cinematic, vintage, teal_orange, bw, warm_film, cool_dusk. Default cinematic. | cinematic |
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| quality | No | JPEG quality on the Photoshop 1-12 scale. Default 10. | |
| assets_dir | Yes | Absolute path to the directory containing asset files. Subdirectories are NOT recursed. Allowed extensions: jpg/jpeg/png/tif/tiff/psd/psb/webp. | |
| document_id | No | Optional 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_name | Yes | Exact name of the Smart Object layer in the active document. Case-sensitive. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | Watermark text (e.g. "© Jane Doe 2026"). White, semi-transparent. Required unless logo_path is given. | |
| opacity | No | Watermark layer opacity 0-100. Default 40. | |
| quality | No | JPEG quality on the Photoshop 1-12 scale. Default 10. | |
| position | No | Watermark placement. Default bottom_right. | bottom_right |
| font_size | No | Text watermark size in pixels. Default 0 = auto (4% of each image height, min 8px). | |
| logo_path | No | Absolute path to a logo image (transparent PNG recommended). Required unless text is given. If both are given, text wins. | |
| margin_px | No | Distance from the chosen edge(s) in pixels. Default 24 (ignored for center). | |
| scale_pct | No | Logo watermark width as a percentage of image width (1-100). Default 15. Logo mode only. | |
| assets_dir | Yes | Absolute path to the folder of images to watermark. Subdirectories are NOT recursed. Allowed extensions: jpg/jpeg/png/tif/tiff/webp. | |
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Output format (default JPEG) | JPEG |
| csv_path | Yes | Absolute path to the CSV file (first row = variable names) | |
| output_dir | Yes | Directory for generated files (created if missing) | |
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| blend_mode | No | Retouch blend mode: overlay (default, stronger) or soft_light (gentler) | overlay |
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| intensity | No | Retouch strength: low (subtle), medium (default), high (heavier smoothing). | medium |
| document_id | No | Optional 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_smoothing | No | Whether to build the frequency separation pair. When false, only the auto-tone curves are added. | |
| use_neural_skin | No | Apply Neural Filter skin smoothing via UXP bridge before frequency separation (default false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden. 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| quality | No | JPEG quality on the Photoshop 1-12 scale. Default 9. | |
| platforms | No | Slugs 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_id | No | Optional 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| radius_px | No | Gaussian blur radius for the low-frequency layer. 4-8 for portraits, 10-20 for products. Default 6. Range 1-50. | |
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| end_pct | No | Gradient end along fade axis (0-100) | |
| angle_deg | No | Optional gradient angle override in degrees | |
| direction | No | Gradient fade direction on the mask (default bottom_to_top) | bottom_to_top |
| start_pct | No | Gradient start along fade axis (0-100) | |
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| auto_group | No | Group layers by kind (text / image / shape / adjustment). Default true. | |
| document_id | No | Optional 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_scheme | No | How 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| spec | No | Target 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 |
| quality | No | JPEG quality on the Photoshop 1-12 scale. Default 11. | |
| make_sheet | No | Also export a 10×15 cm (1200×1800 px @300 DPI) print sheet tiled with copies. Default false. | |
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Optional output path. Absolute paths used as-is. Relative paths resolve under ~/.photoshop-mcp/exports[/<chat-id>]. Omit to auto-generate. | |
| format | No | Output format: jpeg (default) or png. | jpeg |
| quality | No | JPEG quality on the Photoshop 1-12 scale. Default 9. Ignored for png. | |
| document_id | No | Optional 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_px | No | Longest-edge pixel cap (default 2048). Min 64, max 8192. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| feather_px | No | Edge feather in pixels (0-20). 0 = hard edge (default for product shots), 1-3 = soft edge for portraits. | |
| document_id | No | Optional 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_shadow | No | Reserved for a future iteration; currently recorded in the response but no shadow layer is created yet. | |
| use_generative | No | After masking, run generative edge cleanup on inverted background selection (default false) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| feather_px | No | Edge feather in pixels before remove (0-20, default 0) | |
| document_id | No | Optional 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_generative | No | Prefer generative remove when Photoshop supports it (default true when capable) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | Placement X offset in pixels (default 0) | |
| y | No | Placement Y offset in pixels (default 0) | |
| document_id | No | Optional 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_pct | No | Half-width of the transition zone around the horizon (0-50, default 15) | |
| horizon_pct | No | Document-height percentage where sky meets landscape (0-100, default 50) | |
| sky_image_path | Yes | Absolute path to the sky image file (JPEG, PNG, etc.) | |
| use_native_sky | No | Try native Sky Replacement first when supported (default true when capable) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. 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.
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.
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.
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.
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.
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_recipe_split_carouselA
Split the active wide document into N equal vertical slices and export them as sequentially numbered files for a seamless Instagram/TikTok carousel (panorama swipe effect).
Use when: the user wants a seamless/swipeable carousel, split panorama, or multi-slide export of one wide design. Typical request: "split this into a 5-slide carousel". Do NOT use when: the user wants the same content reframed per platform (use photoshop_recipe_export_social_variants) or a single crop (use photoshop_crop_document).
Returns: { ok, summary, output_paths (in slide order), details: { slides, slice_width } }.
Preconditions: active document whose width is at least slides pixels.
Side effects: writes one file per slide; source document is unchanged.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Output format. Default jpg. | jpg |
| slides | Yes | Number of carousel slides to split into (2-10). | |
| quality | No | JPEG quality on the Photoshop 1-12 scale (jpg only). Default 10. | |
| document_id | No | Optional 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. | |
| slide_width | No | Optional final slide width in px (e.g. 1080). Requires slide_height. Each slice is center-cropped/resized to this size. Omit to keep native slice dimensions. | |
| slide_height | No | Optional final slide height in px (e.g. 1350 for Instagram portrait). Requires slide_width. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral disclosure burden. It states preconditions (active document width at least slides pixels), side effects (writes one file per slide; source document unchanged), and the return shape (ok, summary, output_paths in slide order, details). This gives an agent a clear picture of impact and output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is organized into labeled sections and every sentence earns its place: action, use case, exclusions, returns, preconditions, and side effects. There is no filler or redundancy despite covering substantial ground.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter tool with no output schema and no annotations, the description supplies everything an agent needs to invoke it correctly: what it does, when to use it, when not to, preconditions, side effects, and return structure. No essential information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with every parameter documented including defaults, ranges, and mutual requirements (slide_width requires slide_height). The description adds no parameter-level detail 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence states a concrete action ('Split the active wide document into N equal vertical slices and export...') with a specific resource and output purpose. It clearly names the carousel use case and distinguishes itself from neighboring tools by naming the exact alternatives in the usage guidance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description has explicit 'Use when' and 'Do NOT use when' sections, naming photoshop_recipe_export_social_variants and photoshop_crop_document for cases where this tool should not be used. It also provides a typical request example and preconditions, leaving no ambiguity about 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_redoA
Redo the previously undone operation(s) - equivalent to Ctrl/Cmd+Shift+Z
| Name | Required | Description | Default |
|---|---|---|---|
| steps | No | Number of steps to redo (default: 1) | |
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| layer_name | No | Optional exact layer name (recursive search). Default: active layer. | |
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | New name for the layer | |
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | Absolute path to the replacement image file (JPEG, PNG, PSD, etc.) | |
| layer_name | No | Optional exact Smart Object layer name. Default: active layer. | |
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| width | Yes | New width in pixels | |
| height | Yes | New height in pixels | |
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| degrees | Yes | Rotation angle in degrees (positive = clockwise, negative = counter-clockwise) | |
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Full path where to save the document | |
| format | No | File format (PSD, JPEG, PNG) | PSD |
| quality | No | Quality for JPEG (1-12, default: 8) | |
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | No | Optional 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_name | No | Optional name for the new alpha channel (auto-generated if omitted) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | No | Optional 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. | |
| centerAnchor | No | Scale from center (true) or top-left (false). Default: true | |
| scalePercent | Yes | Scale percentage (e.g., 50 for 50%, 200 for 200%) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of disclosing behavior. It 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| top | Yes | Top edge of bounding box in pixels | |
| left | Yes | Left edge of bounding box in pixels | |
| right | Yes | Right edge of bounding box in pixels | |
| bottom | Yes | Bottom edge of bounding box in pixels | |
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Exact layer name (case-sensitive) | |
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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 current selection.
| Name | Required | Description | Default |
|---|---|---|---|
| top | Yes | Top edge in pixels | |
| left | Yes | Left edge in pixels | |
| right | Yes | Right edge in pixels | |
| bottom | Yes | Bottom edge in pixels | |
| document_id | No | Optional 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
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 side effect ('replaces current selection') and preconditions ('active document'), which are critical for a mutating tool. It also mentions the return format. While it could detail edge cases (e.g., invalid coordinates), the disclosed behavior is sufficient for 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is highly structured and efficient. It front-loads the core purpose, then provides usage guidance, return info, preconditions, and side effects in a bulleted format. Every sentence adds value with zero redundancy, making it easy for an agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's relative simplicity and the comprehensive schema descriptions, the description covers all essential context: when to use, when not to use, preconditions, side effects, and return format. No output schema exists, but the description explicitly states what is returned. An agent has everything needed to call this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter already has a clear definition. The description adds minimal extra meaning beyond the schema, only referencing the return format and the overall purpose. According to the rubric, when schema coverage is high, baseline is 3, and the description does not significantly enhance parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a specific verb+resource: 'Create a rectangular pixel selection from corner coordinates.' It clearly states the tool's function and distinguishes it from selection tools like photoshop_select_ellipse (non-rectangular) and photoshop_select_subject (subject-based). The explicit 'Do NOT use' clause further differentiates it from a recipe sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use scenarios ('masking, cropping a region, or preparing for layer mask') and an explicit when-not-to-use case ('subject isolation is needed — use photoshop_recipe_remove_background'). It also states preconditions ('active document'). This gives an agent clear routing logic without needing to infer.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | No | Optional 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_layers | No | Sample all layers for autoCutout fallback (default false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden and does 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.
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.
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.
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.
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.
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_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.
| Name | Required | Description | Default |
|---|---|---|---|
| index | No | Zero-based tab order index (leftmost tab is 0) | |
| document_id | No | Unique internal document id from photoshop_list_documents (preferred) | |
| document_name | No | Document name/title (ambiguous if multiple tabs share the same name) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden and 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| blendMode | Yes | Blend mode (Photoshop UI name). COLOR maps to BlendMode.COLORBLEND. DARKERCOLOR / LIGHTERCOLOR use Action Manager if the DOM enum is missing. | |
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| locked | Yes | Whether the layer should be locked | |
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| opacity | Yes | Opacity value (0-100) | |
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| visible | Yes | Whether the layer should be visible | |
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| alignment | Yes | Text alignment | |
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| red | Yes | Red component (0-255) | |
| blue | Yes | Blue component (0-255) | |
| green | Yes | Green component (0-255) | |
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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.
Accepts display name (e.g. "Arial") or PostScript name (e.g. "ArialMT") — resolved via app.fonts. Use photoshop_list_fonts to discover available fonts.
| Name | Required | Description | Default |
|---|---|---|---|
| fontName | Yes | Font display or PostScript name (see photoshop_list_fonts) | |
| fontSize | No | Font size in points (optional) | |
| document_id | No | Optional 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
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. It usefully explains that font names are resolved via app.fonts and that either display or PostScript names are accepted. However, it does not mention failure conditions (e.g., no active text layer, invalid font name) or reversibility, leaving minor behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short, purposeful sentences. It front-loads the core action, then covers name-resolution nuances, then points to the discovery tool. There is no filler or redundant content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple setter with no output schema, this is nearly complete: it names the target (active text layer), explains accepted font identifiers, and directs the agent to the discovery tool. It does not cover error behavior or undo options, but these are not essential for a low-risk property change.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description reinforces the fontName display/PostScript distinction and adds 'resolved via app.fonts,' but the schema already documents font names, point size, and document_id behavior. The added semantic value is modest.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Set font family and size for active text layer.' It clearly distinguishes this from sibling text-editing tools (set_text_color, set_text_alignment, update_text_content) by naming exactly which text property it modifies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description conveys clear usage context: it targets the active text layer and tells the agent to use photoshop_list_fonts to discover valid font names. It does not explicitly state when not to use this tool versus other text styling siblings, but the property-specific wording makes the intent clear.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | No | Optional 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_path | No | Optional absolute path to a sky image file |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| steps | No | Number of steps to undo (default: 1) | |
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | New text content | |
| document_id | No | Optional 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
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.
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.
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.
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.
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.
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.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
118 tool updates
v0.1.0- First observed
photoshop_adjust_brightness_contrast - First observed
photoshop_adjust_curves - First observed
photoshop_adjust_exposure - First observed
photoshop_adjust_hue_saturation - First observed
photoshop_adjust_vibrance - First observed
photoshop_apply_gaussian_blur - First observed
photoshop_apply_gradient_map - First observed
photoshop_apply_gradient_mask - First observed
photoshop_apply_high_pass - First observed
photoshop_apply_layer_mask - First observed
photoshop_apply_layer_style - First observed
photoshop_apply_lut - First observed
photoshop_apply_motion_blur - First observed
photoshop_apply_noise - First observed
photoshop_apply_photo_filter - First observed
photoshop_apply_sharpen - First observed
photoshop_apply_smart_blur - First observed
photoshop_auto_contrast - First observed
photoshop_auto_levels - First observed
photoshop_close_document - First observed
photoshop_content_aware_fill - First observed
photoshop_contract_selection - First observed
photoshop_convert_to_smart_object - First observed
photoshop_create_clipping_mask - First observed
photoshop_create_document - First observed
photoshop_create_layer - First observed
photoshop_create_layer_mask - First observed
photoshop_create_smart_object_via_copy - First observed
photoshop_create_text_layer - First observed
photoshop_crop_document - First observed
photoshop_delete_layer - First observed
photoshop_delete_layer_mask - First observed
photoshop_desaturate - First observed
photoshop_deselect - First observed
photoshop_duplicate_layer - First observed
photoshop_edit_smart_object_contents - First observed
photoshop_execute_script - First observed
photoshop_expand_selection - First observed
photoshop_export_as - First observed
photoshop_feather_selection - First observed
photoshop_fill_layer - First observed
photoshop_fit_layer_to_document - First observed
photoshop_flatten_image - First observed
photoshop_generate_from_datasets - First observed
photoshop_generate_image - First observed
photoshop_generative_expand - First observed
photoshop_generative_fill - First observed
photoshop_generative_remove - First observed
photoshop_generative_upscale - First observed
photoshop_get_capabilities - First observed
photoshop_get_document_info - First observed
photoshop_get_history - First observed
photoshop_get_layers - First observed
photoshop_get_preview - First observed
photoshop_get_selection_bounds - First observed
photoshop_get_state - First observed
photoshop_get_version - First observed
photoshop_image_stack - First observed
photoshop_import_datasets - First observed
photoshop_invert - First observed
photoshop_invert_selection - First observed
photoshop_list_datasets - First observed
photoshop_list_documents - First observed
photoshop_list_fonts - First observed
photoshop_merge_visible_layers - First observed
photoshop_move_layer - First observed
photoshop_move_layer_down - First observed
photoshop_move_layer_to_bottom - First observed
photoshop_move_layer_to_position - First observed
photoshop_move_layer_to_top - First observed
photoshop_move_layer_up - First observed
photoshop_neural_filter - First observed
photoshop_open_image - First observed
photoshop_ping - First observed
photoshop_place_image - First observed
photoshop_play_action - First observed
photoshop_rasterize_layer - First observed
photoshop_recipe_apply_color_grade - First observed
photoshop_recipe_batch_mockup_replace - First observed
photoshop_recipe_batch_watermark - First observed
photoshop_recipe_csv_to_cards - First observed
photoshop_recipe_dodge_burn - First observed
photoshop_recipe_enhance_portrait - First observed
photoshop_recipe_export_social_variants - First observed
photoshop_recipe_frequency_separation - First observed
photoshop_recipe_gradient_fade - First observed
photoshop_recipe_organize_layers - First observed
photoshop_recipe_passport_photo - First observed
photoshop_recipe_prepare_for_web - First observed
photoshop_recipe_remove_background - First observed
photoshop_recipe_remove_distraction - First observed
photoshop_recipe_sky_blend - First observed
photoshop_recipe_split_carousel - First observed
photoshop_redo - First observed
photoshop_release_clipping_mask - First observed
photoshop_rename_layer - First observed
photoshop_replace_smart_object_contents - First observed
photoshop_resize_image - First observed
photoshop_rotate_layer - First observed
photoshop_save_document - First observed
photoshop_save_selection - First observed
photoshop_scale_layer - First observed
photoshop_select_all - First observed
photoshop_select_ellipse - First observed
photoshop_select_layer_by_name - First observed
photoshop_select_rectangle - First observed
photoshop_select_subject - First observed
photoshop_set_active_document - First observed
photoshop_set_layer_blend_mode - First observed
photoshop_set_layer_locked - First observed
photoshop_set_layer_opacity - First observed
photoshop_set_layer_visibility - First observed
photoshop_set_text_alignment - First observed
photoshop_set_text_color - First observed
photoshop_set_text_font - First observed
photoshop_sky_replacement - First observed
photoshop_undo - First observed
photoshop_update_text_content
TDQS
Scored across 118 tools
With 118 tools, many have overlapping purposes (e.g., multiple selection tools, multiple filter tools, multiple adjustment layers). While descriptions include 'Do NOT use when' guidance, the sheer number makes misselection likely.
All tools follow the photoshop_verb_noun pattern consistently, with recipes using photoshop_recipe_*. Naming is predictable and clear.
118 tools is extreme for any server, even a complex application like Photoshop. This far exceeds the 50+ threshold for extreme mismatch.
The tool surface covers a vast range of Photoshop operations including layers, selections, filters, adjustments, smart objects, text, export, and high-level recipes. The inclusion of an execute_script escape hatch fills most gaps, making it highly complete.
Maintenance
Related MCP Connectors
Build and run visual creative-production workflows from your AI agent.
- mcp-serverOAuthcom.make
Give your AI agents the tools to build, manage, and run automation workflows.
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
The Canva MCP server connects AI assistants (like Claude, ChatGPT, and Cursor) to Canva's API, enabling them to create and manage designs directly within chat conversations. Key capabilities include generating new designs from prompts, autofilling templates, searching and resizing existing designs, importing files from URLs, exporting designs as PDFs or images, and managing folders and comments without switching between tools.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to programmatically control Adobe Photoshop on Windows to create documents, manipulate layers, and manage image adjustments. It provides a bridge between the Model Context Protocol and the Photoshop Python API for automated graphic design workflows.218 PyPI302MIT
- AlicenseAqualityAmaintenanceEnables AI assistants to search, browse, and download professional icons from The Noun Project directly within MCP-compatible environments. It supports SVG and PNG formats with customizable styles and provides optimized modes for free and paid API tiers.726 npm3MIT
- AlicenseNot gradedqualityCmaintenanceEnables automation of Photoshop tasks such as PSD editing, layer toggling, text insertion, and exporting through MCP clients like Claude or Cursor.MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to control Adobe Photoshop programmatically through natural language, with state awareness, recipe tools, and a standalone UI.3,798 npmMIT