Verified conversions across 205 color spaces: CSS strings, gamut checks, .cube LUTs
Photoshop-MCP-IMT + SKILLS — Photoshop for AI agents is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
What it does
Let an AI agent (Claude Desktop, Cursor, ChatGPT or any MCP client) drive a running Adobe Photoshop: documents, layers, text, masks, selections, filters, adjustments, Smart Objects, artboards, generative tools, export — from natural language.
Every Adobe UI language · checks its work by sight · a large skills library · built for generative features. Photoshop-MCP-IMT works with every UI language Adobe ships, and the agent checks its work by sight: after each step it looks at an image of the document — also while Photoshop is held by a dialog — and places selections, Generative Fill areas and corner pins by coordinates it reads from that image. It is built for Adobe's generative features — Generative Fill, Generative Expand, Generative Upscale, text to image, Firefly and partner models, generative credits.
Two parts: the MCP server — 135 tools behind a 10-tool facade, a second transport inside Photoshop for the moments a dialog blocks scripting, honest errors, no telemetry; and the skill — how to drive Photoshop safely, where scripting ends, and how to use Photoshop's own AI tools, with retouch, colour, selection and batch recipes.
Runs locally next to Photoshop on macOS and Windows: install it as described in the GitHub README (npm package @immersive-media-technologies/photoshop-mcp-imt). By Immersive Media Technologies · Apache-2.0.
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user ps-mcp-imt-photoshop-for-ai-agents '--' npx -y @immersive-media-technologies/photoshop-mcp-imt
# 2 — ask your agent for something these tools do
# photoshop_play_action, photoshop_execute_script, photoshop_adjust_brightness_contrast and 106 more
Photoshop-MCP-IMT + SKILLS — Photoshop for AI agents costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. This one runs on your machine: your client starts Photoshop-MCP-IMT + SKILLS — Photoshop for AI agents as a process under your own user, with your files and your network, so the tool surface below is what it can do to your computer rather than to a server somewhere else. Its scan result is on the Security tab — read the surface before you approve it.
This is a public server: you run it yourself and this marketplace is not in the path. You need Node.js — the current LTS (24) is the safe choice; npx comes with it. Claude Code registers it in one command; --scope user makes it available in every project. The '--' is in quotes so that PowerShell passes it on.
claude mcp add --scope user ps-mcp-imt-photoshop-for-ai-agents '--' npx -y @immersive-media-technologies/photoshop-mcp-imtReconnect, or start a new session, and the tools appear in the model’s tool list.
Nothing is required, but it can take PS_MCP_FACADE, PS_MCP_UXP, LOG_LEVEL if you want to set them.
One config entry your client uses to start the process locally. A local server runs with your file system and your network, which is why it is priced without metering.
109 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
Read from its source code. A server that builds its tool list when it starts can list more tools than this.
Play a recorded action from the Actions palette. Names are the ones the Actions panel shows, in the Photoshop UI language: the built-in set is "Default Actions" only in English Photoshop. When the set or the action does not exist, the error (code invalid_arguments) lists the names this Photoshop…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| actionName | string | yes | Name of the action to play, exactly as the Actions panel shows it |
| actionSetName | string | yes | Name of the action set containing the action, exactly as the Actions panel shows it (localized for the sets Photoshop ships) |
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…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| code | string | yes | ExtendScript code to execute |
| timeout_ms | number | no | Script timeout in milliseconds (default 30000, max 600000). Override with env PHOTOSHOP_SCRIPT_TIMEOUT. Use for long loops, batch jobs, or large documents. |
Adjust brightness and contrast of the active layer. Users often say: fix exposure, add contrast, brighten, darken.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| brightness | number | yes | Brightness adjustment (-100 to 100) |
| contrast | number | yes | Contrast adjustment (-100 to 100) |
Adjust hue, saturation, and lightness of the active layer
| Parameter | Type | Required | Notes |
|---|---|---|---|
| hue | number | yes | Hue shift (-180 to 180) |
| saturation | number | yes | Saturation adjustment (-100 to 100) |
| lightness | number | yes | Lightness adjustment (-100 to 100) |
Apply auto levels adjustment to the active layer. Users often say: fix flat image, auto tone, make it pop (mild).
No parameter schema on file.
Apply auto contrast adjustment to the active layer
No parameter schema on file.
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…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| preset | string | no | auto_tone (S-curve) or neutral (identity curve) |
Desaturate the active layer (convert to grayscale)
No parameter schema on file.
Invert colors of the active layer
No parameter schema on file.
List artboards in the active document with id, name, pixel bounds, and which one contains the active layer. Users often say: artboards, 画板, multi-screen, iPhone and iPad frames, device layouts. Use when: the document is an artboard file (UI/multi-screen) and you need artboard_id before export or…
No parameter schema on file.
Create a Photoshop artboard (AM artboardSection) at an explicit origin or placed to the right of existing artboards. Users often say: add iPhone frame, new artboard, multi-screen layout, 画板 ekle. Use when: building a multi-device / multi-screen document. First artboard converts a regular canvas…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | no | Artboard name (default Artboard) |
| width | number | yes | Artboard width in pixels |
| height | number | yes | Artboard height in pixels |
| left | number | no | Left origin in pixels (default: 32px to the right of existing artboards, or 0) |
| top | number | no | Top origin in pixels (default: aligned with existing artboards, or 0) |
Select an artboard layer group by artboard_id (preferred) or unique name so subsequent edits and Select All target that board. Use when: switching between device frames in an artboard document. Do NOT use when: switching document tabs — use photoshop_set_active_document. Returns: JSON { ok,…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| artboard_id | number | no | Layer id from photoshop_list_artboards / photoshop_get_state |
| name | string | no | Exact artboard name (ambiguous if duplicates — use artboard_id) |
Export every artboard in the active document to a folder (duplicate + crop to artboardRect, then PNG/JPEG/WebP/AVIF). Users often say: export all artboards, multi-screen PNG, 画板 çıktısı. Use when: delivering one file per artboard. Long jobs use a 600s script timeout. Do NOT use when: exporting…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| folder | string | yes | Absolute output folder (created if missing) |
| format | string | no | Export format |
| quality | number | no | Quality 0-100 (JPEG/WebP/AVIF) |
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,…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| lut | string | yes | Built-in LUT file name (e.g. "Crisp_Warm.3dl") or absolute path to a .cube/.3dl/.look file |
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…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| vibrance | number | no | Vibrance (-100 to 100) |
| saturation | number | no | Saturation (-100 to 100) |
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…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| exposure | number | no | Exposure in stops (-20 to 20) |
| offset | number | no | Offset (-0.5 to 0.5) |
| gamma | number | no | Gamma correction (0.01 to 9.99) |
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…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| red | number | no | Filter color red (0-255); warming ≈ 236 |
| green | number | no | Filter color green (0-255); warming ≈ 138 |
| blue | number | no | Filter color blue (0-255); warming ≈ 0 |
| density | number | no | Filter density percent (0-100) |
| preserve_luminosity | boolean | no | Preserve luminosity (default true) |
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…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| reverse | boolean | no | Reverse the gradient (white→black) |
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.
No parameter schema on file.
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…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| xml_path | string | yes | Absolute path to the variables/data-sets XML file |
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…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| output_dir | string | yes | Directory for generated files (created if missing) |
| format | string | no | Output format |
| dataset_names | array | no | Subset of data set names to export (default: all) |
Corner-pin / perspective distort of a layer: map its bounding box to four target corners (absolute document pixels, clockwise from top-left). Headless replacement for Free Transform → Distort / Perspective Warp (which are modal and cannot be scripted). Implemented as a custom warp mesh fitted to…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| corners | yes | Target corners in absolute document px: {"tl":[x,y],"tr":[x,y],"br":[x,y],"bl":[x,y]} or a flat array [x1,y1,x2,y2,x3,y3,x4,y4] (tl,tr,br,bl) | |
| layer | string | no | layer name (searched recursively); default — active layer |
| mode | string | no | perspective — true projective mapping (parallel lines converge); bilinear — straight edges, no convergence |
| rasterize | boolean | no | rasterize a Smart Object layer before warping (destructive; required for Smart Objects) |
| interpolation | string | no | — |
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…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| width | number | yes | Document width in pixels |
| height | number | yes | Document height in pixels |
| resolution | number | no | Document resolution in DPI (default: 72) |
| colorMode | string | no | Color mode (RGB, CMYK, Grayscale) |
Get information about the active Photoshop document
No parameter schema on file.
List every open Photoshop document with id, dimensions, saved flag, artboard_count, and which tab is active. Use when: multiple documents are open and you need document_id before switching tabs, previewing, or closing a specific file. Do NOT use when: you only need the active document — use…
No parameter schema on file.
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…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| document_id | number | no | Unique internal document id from photoshop_list_documents (preferred) |
| index | number | no | Zero-based tab order index (leftmost tab is 0) |
| document_name | string | no | Document name/title (ambiguous if multiple tabs share the same name) |
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.…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | string | yes | Full path where to save the document |
| format | string | no | File format (PSD, JPEG, PNG) |
| quality | number | no | Quality for JPEG (1-12, default: 8) |
Close a Photoshop document tab. Defaults to the active document; pass document_id to close a specific open file. Use when: the user is done with a file, or when cleaning up extra open tabs after photoshop_list_documents. Do NOT use when: you only need to switch tabs — use…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| save | boolean | no | Whether to save changes before closing |
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…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | string | yes | Absolute output file path (extension should match format) |
| format | string | no | Export format |
| quality | number | no | Quality 0-100 (JPEG/WebP/AVIF) |
| artboard_id | number | no | Optional artboard layer id from photoshop_list_artboards — export that board only instead of the full canvas |
Apply Gaussian Blur filter to the active layer
| Parameter | Type | Required | Notes |
|---|---|---|---|
| radius | number | yes | Blur radius in pixels (0.1-250) |
Apply Unsharp Mask (sharpen) filter to the active layer
| Parameter | Type | Required | Notes |
|---|---|---|---|
| amount | number | yes | Sharpening amount in percent (1-500) |
| radius | number | yes | Radius in pixels (0.1-250) |
| threshold | number | no | Threshold levels (0-255) |
Apply Add Noise filter to the active layer
| Parameter | Type | Required | Notes |
|---|---|---|---|
| amount | number | yes | Noise amount in percent (0.1-400) |
| distribution | string | no | Noise distribution type |
| monochromatic | boolean | no | Apply monochromatic noise |
Apply Motion Blur filter to the active layer
| Parameter | Type | Required | Notes |
|---|---|---|---|
| angle | number | yes | Blur angle in degrees (-360 to 360) |
| radius | number | yes | Blur distance in pixels (1-999) |
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…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| radius | number | yes | Edge retention radius in pixels (0.1-250) |
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…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| radius | number | yes | Blur radius (0.1-100) |
| threshold | number | yes | Blur threshold — higher values restrict blur to stronger edges (0.1-100) |
| mode | string | no | Smart blur mode (default: NORMAL) |
| quality | string | no | Blur quality / smoothness (default: MEDIUM) |
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…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| prompt | string | yes | Describe what to generate in the selection |
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 }.…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| feather_px | number | no | Edge feather before remove (0-20, default 0) |
| auto_select_subject | boolean | no | Run Select Subject when no selection exists (default false) |
Extend the canvas beyond its edges using Generative Expand (Firefly): enlarges the canvas by amount_px on the chosen side(s) and fills the new area with Generative Fill (outpainting). Use when: outpainting, extending background, or expanding composition. Returns: { ok, summary, details: {…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| prompt | string | no | Describe how to extend the image |
| direction | string | no | Expand direction (default all) |
| amount_px | number | no | Pixels added on each expanded side (default: 25% of the longer side) |
Upscale the active document using Generative Upscale (PS 27+). Use when: increasing resolution with AI detail recovery. Do NOT use when: generative_upscale flag is false — use photoshop_resize_image. Returns: { ok, summary, details } — or generative_timeout while Photoshop renders behind its…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| target_scale | number | no | Target scale factor (2 or 4) |
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…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| sky_image_path | string | no | Optional absolute path to a sky image file |
Photoshop Generate Image (Firefly ImageGen): create an image from a text prompt. Use when: the user asks for ImageGen, text-to-image, or a new picture from a description. Returns: { ok, summary, details }. Preconditions: generative_fill capability; Adobe generative credits.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| prompt | string | yes | Image description |
| width | number | no | Width if creating new doc (default 1024) |
| height | number | no | Height if creating new doc (default 1024) |
Undo the last operation(s) - equivalent to Ctrl/Cmd+Z
| Parameter | Type | Required | Notes |
|---|---|---|---|
| steps | number | no | Number of steps to undo (default: 1) |
Redo the previously undone operation(s) - equivalent to Ctrl/Cmd+Shift+Z
| Parameter | Type | Required | Notes |
|---|---|---|---|
| steps | number | no | Number of steps to redo (default: 1) |
Get the history states of the active document
No parameter schema on file.
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…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| filePath | string | yes | Full path to the image file (JPEG, PNG, PSD, etc.) |
| x | number | no | Absolute canvas X of the placed layer top-left, in pixels (default: 0) |
| y | number | no | Absolute canvas Y of the placed layer top-left, in pixels (default: 0) |
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:…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| filePath | string | yes | Full path to the image file |
Resize the active image to specified dimensions
| Parameter | Type | Required | Notes |
|---|---|---|---|
| width | number | yes | New width in pixels |
| height | number | yes | New height in pixels |
Crop the document to specified bounds
| Parameter | Type | Required | Notes |
|---|---|---|---|
| left | number | yes | Left edge position in pixels |
| top | number | yes | Top edge position in pixels |
| right | number | yes | Right edge position in pixels |
| bottom | number | yes | Bottom edge position in pixels |
Move the active layer relative to another layer
| Parameter | Type | Required | Notes |
|---|---|---|---|
| targetLayerName | string | yes | Name of the layer to move relative to |
| position | string | yes | Position relative to target layer |
Move the active layer to the top of the layer stack
No parameter schema on file.
Move the active layer to the bottom of the layer stack
No parameter schema on file.
Move the active layer up one position in the layer stack
No parameter schema on file.
Move the active layer down one position in the layer stack
No parameter schema on file.
Rasterize the active layer (convert text/smart object to normal layer)
No parameter schema on file.
Set the opacity of the active layer
| Parameter | Type | Required | Notes |
|---|---|---|---|
| opacity | number | yes | Opacity value (0-100) |
Set the blend mode of the active layer. COLOR is the Photoshop UI name (Colorize); it is mapped to ExtendScript BlendMode.COLORBLEND.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| blendMode | string | yes | Blend mode (Photoshop UI name). COLOR maps to BlendMode.COLORBLEND. DARKERCOLOR / LIGHTERCOLOR use Action Manager if the DOM enum is missing. |
Show or hide the active layer
| Parameter | Type | Required | Notes |
|---|---|---|---|
| visible | boolean | yes | Whether the layer should be visible |
Lock or unlock the active layer
| Parameter | Type | Required | Notes |
|---|---|---|---|
| locked | boolean | yes | Whether the layer should be locked |
Rename the active layer
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | New name for the layer |
Duplicate the active layer. The duplicate becomes the active layer; returns its name and, when available, its layer id.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| newName | string | no | Name for the duplicated layer (optional) |
Merge all visible layers into one
No parameter schema on file.
Flatten all layers into a single background layer
No parameter schema on file.
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…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | no | Name for the new layer (optional) |
Delete the active layer
No parameter schema on file.
Create a text layer with content, position, font, and optional typography (tracking, leading, paragraph box, alignment, color). Users often say: add title, letter spacing, line height, text box, 字间距, 行高, 排版. Use when: adding labels, titles, or typography to the design. Do NOT use when: editing…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| text | string | yes | Text content |
| x | number | no | X position in pixels (default: 100) |
| y | number | no | Y position in pixels (default: 100) |
| fontSize | number | no | Font size in points (default: 24) |
| fontName | string | no | Optional font PostScript name (preferred, the same in every Photoshop UI language) or display name (resolved via app.fonts; see photoshop_list_fonts) |
| tracking | number | no | Character spacing in 1/1000 em (−1000 to 10000). Photoshop tracking. |
| leading | number | no | Line height in points. Sets auto_leading false. |
| auto_leading | boolean | no | Use Photoshop auto leading (ignores leading when true) |
| kind | string | no | point = single-line; paragraph = wrapped text box (default point unless box_width/height set) |
| box_width | number | no | Paragraph text box width in pixels (implies kind=paragraph) |
| box_height | number | no | Paragraph text box height in pixels (implies kind=paragraph) |
| alignment | string | no | Paragraph/point justification |
| red | number | no | Text color red 0–255 |
| green | number | no | Text color green 0–255 |
| blue | number | no | Text color blue 0–255 |
Fill the active layer with a color
| Parameter | Type | Required | Notes |
|---|---|---|---|
| red | number | yes | Red component (0-255) |
| green | number | yes | Green component (0-255) |
| blue | number | yes | Blue component (0-255) |
List all layers in the active document with kind, visibility, and opacity. Use when: choosing a layer to edit, debugging structure, or after organize_layers. Do NOT use when: only session summary is needed — use photoshop_get_state (lighter). Returns: layerCount, layers array (LayerSets include…
No parameter schema on file.
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…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | Exact layer name (case-sensitive) |
Scale the active layer to fit the document canvas while maintaining aspect ratio
| Parameter | Type | Required | Notes |
|---|---|---|---|
| fillDocument | boolean | no | If true, fills entire canvas (may crop). If false, fits within canvas (may have margins). Default: false |
Scale the active layer by a percentage
| Parameter | Type | Required | Notes |
|---|---|---|---|
| scalePercent | number | yes | Scale percentage (e.g., 50 for 50%, 200 for 200%) |
| centerAnchor | boolean | no | Scale from center (true) or top-left (false). Default: true |
Move the active layer by specified offset
| Parameter | Type | Required | Notes |
|---|---|---|---|
| deltaX | number | yes | Horizontal offset in pixels (can be negative) |
| deltaY | number | yes | Vertical offset in pixels (can be negative) |
Rotate the active layer
| Parameter | Type | Required | Notes |
|---|---|---|---|
| degrees | number | yes | Rotation angle in degrees (positive = clockwise, negative = counter-clockwise) |
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…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| direction | string | no | Gradient fade direction on the mask (default bottom_to_top) |
| start_pct | number | no | Gradient start along fade axis (0-100) |
| end_pct | number | no | Gradient end along fade axis (0-100) |
| angle_deg | number | no | Override gradient angle in degrees (optional) |
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…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| layer_name | string | no | Optional exact layer name (recursive search). Default: active layer. |
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 {…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| layer_name | string | no | Optional exact layer name (recursive search). Default: active layer. |
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,…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| filter | string | yes | Neural filter to apply |
| smoothness | number | no | Skin smoothing smoothness 0-100 (skin_smoothing only) |
| blur | number | no | Skin smoothing blur 0-100 (skin_smoothing only) |
| reference_layer_id | number | no | Layer id for harmonize reference (harmonize only) |
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 {…
No parameter schema on file.
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…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| left | number | yes | Left edge of bounding box in pixels |
| top | number | yes | Top edge of bounding box in pixels |
| right | number | yes | Right edge of bounding box in pixels |
| bottom | number | yes | Bottom edge of bounding box in pixels |
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…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| pixels | number | yes | Pixels to expand by (minimum 1) |
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…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| pixels | number | yes | Pixels to contract by (minimum 1) |
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…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| pixels | number | yes | Feather radius in pixels (minimum 1) |
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…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| channel_name | string | no | Optional name for the new alpha channel (auto-generated if omitted) |
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…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| left | number | yes | Left edge in pixels |
| top | number | yes | Top edge in pixels |
| right | number | yes | Right edge in pixels |
| bottom | number | yes | Bottom edge in pixels |
| mode | string | no | How this rectangle combines with the current selection. Default replace. Use intersect when SelectionType.INTERSECT is unavailable. |
Select the entire document
No parameter schema on file.
Deselect all selections
No parameter schema on file.
Invert the current selection
No parameter schema on file.
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…
No parameter schema on file.
Delete the layer mask from active layer
No parameter schema on file.
Apply (merge) the layer mask to the layer
No parameter schema on file.
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…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| sample_all_layers | boolean | no | Sample all layers for autoCutout fallback (default false) |
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…
No parameter schema on file.
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…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| layer_name | string | no | Optional exact layer name (recursive search). Default: active layer. |
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…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| file_path | string | yes | Absolute path to the replacement image file (JPEG, PNG, PSD, etc.) |
| layer_name | string | no | Optional exact Smart Object layer name. Default: active layer. |
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…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| layer_name | string | no | Optional exact Smart Object layer name. Default: active layer. |
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…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| layer_name | string | no | Optional source Smart Object layer name. Default: active layer. |
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…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| files | array | yes | Absolute paths of the images to stack (min 2) |
| mode | string | no | Stack mode — median removes transient objects, mean reduces noise |
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:…
No parameter schema on file.
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…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| max_dimension_px | number | no | Maximum long edge in pixels (default 1024) |
| quality | number | no | JPEG quality 1–12 (default 8) |
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,…
No parameter schema on file.
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…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| style | string | no | Which effect to apply |
| red | number | no | Effect color red (0-255) |
| green | number | no | Effect color green (0-255) |
| blue | number | no | Effect color blue (0-255) |
| opacity | number | no | Effect opacity (0-100) |
| size | number | no | Blur/size in pixels (stroke width for stroke) |
| distance | number | no | Offset distance in pixels (drop shadow only) |
| angle | number | no | Light angle in degrees (drop shadow / bevel) |
List installed fonts available to Photoshop. Use when: choosing a font for photoshop_create_text_layer or photoshop_set_text_font. TextItem.font requires the PostScript name — use postScriptName from results. It is the same in every Photoshop UI language, while name/family can be localized (e.g.…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | no | Optional substring filter (matches name, postScriptName, or family) |
| limit | number | no | Maximum fonts to return (default: 200) |
Set font family and size for active text layer. Prefer the PostScript name (e.g. "ArialMT"): it is the same in every Photoshop UI language. A display name (e.g. "Arial") also works but can be localized; an exact PostScript match wins. Use photoshop_list_fonts to discover available fonts.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| fontName | string | yes | Font PostScript name (preferred, language-independent) or display name (see photoshop_list_fonts) |
| fontSize | number | no | Font size in points (optional) |
Set color for active text layer
| Parameter | Type | Required | Notes |
|---|---|---|---|
| red | number | yes | Red component (0-255) |
| green | number | yes | Green component (0-255) |
| blue | number | yes | Blue component (0-255) |
Set text alignment for active text layer
| Parameter | Type | Required | Notes |
|---|---|---|---|
| alignment | string | yes | Text alignment |
Update the text content of active text layer
| Parameter | Type | Required | Notes |
|---|---|---|---|
| text | string | yes | New text content |
Set layer-wide typography on the active text layer: tracking, leading, point vs paragraph box, alignment, font, size, color. Users often say: letter spacing, tracking, line height, leading, text box width, paragraph text, 字间距, 行高, 文本框. Use when: tightening/loosening type, setting line height,…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| tracking | number | no | Character spacing in 1/1000 em (−1000 to 10000) |
| leading | number | no | Line height in points. Sets auto_leading false. |
| auto_leading | boolean | no | Use Photoshop auto leading |
| kind | string | no | point or paragraph (wrapped) text |
| box_width | number | no | Paragraph box width in pixels (implies kind=paragraph) |
| box_height | number | no | Paragraph box height in pixels (implies kind=paragraph) |
| alignment | string | no | Justification (same enum as photoshop_set_text_alignment) |
| fontName | string | no | Font PostScript name (preferred) or display name |
| fontSize | number | no | Size in points |
| red | number | no | Red 0–255 |
| green | number | no | Green 0–255 |
| blue | number | no | Blue 0–255 |
Apply mixed fonts, sizes, and colors inside a single text layer (Action Manager textStyleRange). Users often say: mixed type, two fonts in one line, multicolor text, 混排, 同一文字层. Use when: one layer must contain more than one font or color. from is inclusive, to is exclusive (JavaScript slice /…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| ranges | array | yes | Non-overlapping character spans (from inclusive, to exclusive) |
Verify that the Photoshop scripting engine can run a script.
No parameter schema on file.
Return the detected Photoshop version string.
No parameter schema on file.
- Every tool, no call limit
- No card, and mcprush charges nothing for it
- Source published under Apache-2.0
- Runs on your machine — nothing of it reaches our gateway
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install Photoshop-MCP-IMT + SKILLS — Photoshop for AI agents or to call it, at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
| Term | Level | What it prices | Points |
|---|---|---|---|
| capability-exposure | high | capability blast radius (high) — client exposure if the model is manipulated | −6 |
| verification-discount | repo | publisher verification (public source) — no provenance, but the source is public and inspectable | −1 |
| coverage-honesty | source | inspection depth (source) — how much of the target the scan could see | −0 |
What the scan could actually read
A grade is only as meaningful as its coverage, so the scanner publishes its own depth before it publishes its result.
Tools were statically extracted from the published source (2 recovered), not enumerated from a running server. Tool-poisoning, Unicode-smuggling, capability and toxic-flow analysis ran on this inferred surface, but a mis-parsed registration could be missed or mis-attributed, so tool-derived findings are capped below “confirmed”. To grade the real runtime surface, scan the running server: --command "npx -y <package>".
Capability — what it could do if the model were manipulated
Tags derived from each tool’s schema and the implementation, not from what the tool calls itself. high is the level these add up to.
| Tool | Capability tags | Why the tag was assigned |
|---|---|---|
| photoshop_ping | no tags | |
| photoshop_get_version | no tags |
Toxic-flow graph
The lethal trifecta, checked as a graph rather than as a checklist: untrusted input, a sensitive source and an external sink have to meet before there is a path worth worrying about.
The public result for this release does not print the flow graph, so there is nothing to show here. That is not the same as "no paths were found": what the scan did read is above, under coverage.
Supply chain and provenance
This is the first scan of this surface here, so there is nothing yet to compare it against.
Every result on this tab comes from one deterministic pass over the published package — offline, rule by rule, and auditable line by line above. Same methodology version, same bytes, same score.
Release history
Always latest — the install command names no version, so it installs the newest release when it runs; the current release on file is 1.1.4. Pin a release below and the command asks for exactly that one.
No release note was published with this version.
No release note was published with this version.
No release note was published with this version.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish Photoshop-MCP-IMT + SKILLS — Photoshop for AI agents can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.