Skip to main content
Glama
jinkeda

Illustrator MCP

by jinkeda

Illustrator MCP

An MCP server that lets AI assistants control Adobe Illustrator through a CEP panel. Version 3.0.0 supports structured artwork edits, ExtendScript, document management, visual previews, PNG/JPG export, and SVG path import.

Requirements

  • Python 3.10 or newer.

  • Adobe Illustrator on Windows or macOS. The panel manifest permits Illustrator 25.0+; this is an installation range, not a verified compatibility guarantee. Compatibility across that range and both platforms has not yet been validated.

  • Node.js and npm compatible with Vite 6 to build the panel.

  • An MCP client supporting stdio.

Related MCP server: Illustrator AI MCP Server

Installation

Download or clone this repository, then open a terminal in its root directory.

python -m venv .venv

Activate the environment with .venv\Scripts\activate on Windows or source .venv/bin/activate on macOS, then install:

python -m pip install -e ".[geometry]"
cd cep-extension
npm ci
npm run typecheck
npm run build
node validate-panel.mjs
cd ..

The optional geometry extra enables boolean path operations. Use python -m pip install -e . if you do not need it.

On Windows, run install-cep.bat from an Administrator terminal. On macOS, run bash install-cep.sh. The installers link the panel into Adobe's CEP extensions directory and enable CEP debug mode. Keep the checkout at its installed location.

Restart Illustrator and open Window > Extensions > MCP Control.

MCP client configuration

Add the following server definition to your client's MCP configuration, replacing the interpreter path with the absolute path to your installed virtual environment:

{
  "mcpServers": {
    "illustrator": {
      "command": "C:/path/to/Illustrator_MCP/.venv/Scripts/python.exe",
      "args": ["-B", "-m", "illustrator_mcp.server"],
      "env": {
        "WS_HOST": "127.0.0.1",
        "WS_PORT": "8081",
        "TIMEOUT": "30"
      }
    }
  }
}

On macOS use /absolute/path/to/Illustrator_MCP/.venv/bin/python. Restart the client's integration and connect the panel. The Python server owns the WebSocket bridge; only one client should start it at a time. The bundled panel uses the fixed endpoint ws://127.0.0.1:8081. Keep WS_HOST and WS_PORT at these values. To change the port, also edit MCP_ENDPOINT in cep-extension/src/connection/ConnectionController.ts, rebuild, and reload the panel. Changing only the server configuration will prevent the panel from connecting.

Distribution and versions

This source release pairs server 3.0.0 with CEP panel 1.0.2. Their version numbers are independent. The source archive includes panel sources and installers; build the panel before installing it. A Python wheel contains the server and its runtime resources only; obtain the matching CEP panel separately from this source release.

Usage

Start with illustrator_connection_status using {"params":{"probe":true}}. Open or create a document, then ask your assistant to inspect it before editing.

  • illustrator_document: create, open, list, activate, save, or close documents.

  • illustrator_observe: inspect previews and artwork context.

  • illustrator_get_document and illustrator_query_items: inspect structure and targets.

  • illustrator_execute_task: execute structured batches of artwork operations.

  • illustrator_execute_script: execute ExtendScript with reusable libraries.

  • illustrator_place_file and illustrator_set_reference: place assets and references.

  • illustrator_path_boolean and illustrator_path_import_svg: work with vector paths.

  • illustrator_preflight_check: check artwork before delivery.

  • illustrator_export_document: export PNG or JPG.

  • illustrator_history: undo, redo, and manage checkpoints.

  • illustrator_job_status: inspect or reconcile an uncertain job.

The server exposes operation descriptions through illustrator://ops, scripting guidance through illustrator://reference/extendscript, and library help through illustrator://reference/libraries and illustrator://libraries/{name}. Files under illustrator_mcp/resources/docs/ supply these runtime references.

Limitations and troubleshooting

This is alpha software. Native SVG/PDF export is currently unavailable; PNG/JPG export and SVG path import are supported. Save your work before automated edits.

A timeout does not mean Illustrator stopped executing. Inspect and reconcile the job before retrying an uncertain edit. Export supports overwrite="fail" and overwrite="version" when replacement is unwanted.

If the panel does not connect, check that the client started the server and that its WebSocket port matches the panel. Stop the previous client integration before switching clients. For panel updates, rebuild the extension, reload the panel, and restart the MCP server. Server diagnostics are written to stderr.

License

MIT; see LICENSE. Bundled third-party files retain their own notices.

Available Tools

12 tools
illustrator_documentA
Destructive

Create, open, save, or close an Illustrator document.

CONTRACT: readOnly=False, destructive=True, idempotent=False, openWorld=True

WHEN TO USE:

  • Starting a new illustration (action='create')

  • Opening an existing .ai file (action='open', file_path required)

  • Saving current work (action='save', file_path for save-as)

  • Closing the active document (action='close')

EXAMPLES: illustrator_document(action="create", width=800, height=600, color_mode="RGB") illustrator_document(action="open", file_path="C:/art/figure.ai") illustrator_document(action="save", file_path="C:/art/figure_v2.ai") illustrator_document(action="close", save_before_close=True)

NOTES:

  • close without save_before_close=True discards unsaved changes

  • open/save interact with the filesystem (openWorld)

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnly=false, destructive=true, openWorld=true, and idempotent=false, so the CONTRACT line largely restates structured data. However, the NOTES add genuinely new behavioral context: closing without save_before_close=True discards unsaved changes, and filesystem interaction is called out for open/save. That is real value beyond the annotations, though no auth or error/return behavior is described.

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

Conciseness4/5

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

Front-loaded summary followed by clearly labeled CONTRACT, WHEN TO USE, EXAMPLES, and NOTES sections — very scannable. Slight redundancy: the CONTRACT line duplicates the annotations verbatim, which costs a little space but adds little information.

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

Completeness5/5

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

For a four-action document lifecycle tool, the definition covers preconditions, destructive side effects, and worked examples for every action; an output schema is present so return values need not be explained. 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.

Parameters4/5

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

Top-level schema description coverage is nominally 0%, but the nested DocumentInput properties carry their own descriptions (name/create, width/create, file_path/open+save, save_before_close/close). The description reinforces this by tying parameters to actions in the examples (width/height/color_mode for create, file_path for open/save, save_before_close for close), so an agent knows which params apply to which action without opening the schema.

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

Purpose5/5

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

The description names a specific verb family (create/open/save/close) and the exact resource (Illustrator document), and enumerates each action so the agent can distinguish this from siblings like illustrator_export_document or illustrator_get_document. The one-line summary plus the per-action WHEN TO USE block makes the tool's identity unambiguous.

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

Usage Guidelines5/5

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

It explicitly states when to use each action, including the precondition that file_path is required for 'open' and is only optional (save-as) for 'save', and flags the close-without-save behavior. Alternatives are implicit but the action-level routing is explicit and complete.

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

illustrator_execute_scriptA
Destructive

Execute raw JavaScript/ExtendScript code in Adobe Illustrator.

CONTRACT: readOnly=False, destructive=True, idempotent=False, openWorld=True

WHEN TO USE:

  • Single one-off items, quick prototypes, or operations not covered by higher-level tools

  • Full DOM access when structured tools are insufficient

  • Reading document state with custom logic

ABSTRACTION LADDER — prefer higher levels before using raw script: Level 5 — illustrator_path_boolean: boolean sculpt (unite/subtract/intersect/xor) Level 4 — illustrator_execute_task + element_create_batch: batch-create identical shapes Level 3 — illustrator_path_import_svg: import SVG d-string paths Level 2 — illustrator_execute_task + element_create: smooth curves, handles, mirror Level 1 — illustrator_execute_script (THIS tool): raw ExtendScript

DECISION RULES:

  • Subtract/unite shapes — MUST use illustrator_path_boolean

  • Creating >=3 identical shapes — MUST use illustrator_execute_task + element_create_batch

  • setEntirePath with >12 coord pairs — STOP and use smooth:true or illustrator_path_import_svg

COORDINATE SYSTEM:

  • API coordinates use top-left origin with y increasing downward (screen space)

  • ExtendScript expects Y-up internally; use -y when calling Illustrator DOM methods

  • Units: points (1 pt = 1/72 inch)

  • Example: to place at visual position (100, 200), use position = [100, -200]

EXAMPLES: Rectangle: doc.pathItems.rectangle(top, left, width, height) ⚠ width & height must be POSITIVE. Negative height → shape above artboard (invisible). Ellipse: doc.pathItems.ellipse(top, left, width, height) Line: var p = doc.pathItems.add(); p.setEntirePath([[x1,-y1], [x2,-y2]]) Color: var c = new RGBColor(); c.red=255; c.green=0; c.blue=0; shape.fillColor = c; Text: var tf = doc.textFrames.add(); tf.contents = "text"; tf.position = [x, -y]; Grid helpers: artboardGrid(cols, rows), itemsInCell(cell, mode)

ELEMENT DISCOVERY:

  • Use artboardGrid(cols, rows) to partition the artboard into a labeled grid

  • Use itemsInCell(cell, mode) to find items in a specific grid cell

  • Modes: 'containsCenter' (default) or 'intersects'

  • Cell labels follow A1 scheme (letter row + number col, e.g. A1, B3)

MUTATION SAFETY:

  • Each call increments a mutation counter for VLM QA cadence tracking

  • Failed executions auto-decrement the counter to avoid cadence drift

  • Use final_step=true on the last mutation to force a visual checkpoint

NOTES:

  • Every call increments a mutation counter; annotated preview auto-injected at VLM cadence

  • Set final_step=true on the last mutation to force a VLM checkpoint

  • setEntirePath() creates corner points only; set handles after creation

  • ExtendScript can access File/Folder and OS — treat as open-world

SAFETY:

  • __mcp_check() watchdog: call as FIRST line inside every for/while body

  • Never iterate live Illustrator collections if adding/removing items

  • Use __mcp_forEachSnapshot(collection, fn) or __mcp_snapshot(collection) instead

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnly=false, destructive=true, idempotent=false, openWorld=true, and the description's CONTRACT line is consistent with them. Beyond that it discloses non-obvious behavior: coordinate-system inversion (Y-down API vs Y-up ExtendScript), the mutation-counter/VLM cadence mechanism, auto-decrement on failure, and that ExtendScript can touch File/Folder/OS. This is substantial added context rather than restating annotations.

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

Conciseness4/5

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

Headed sections and front-loaded verb make it scannable, and every block is actionable. It loses a point for redundancy: the mutation counter is explained in MUTATION SAFETY and again in NOTES, and final_step appears twice.

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

Completeness5/5

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

For a powerful, destructive, open-world scripting tool the description covers usage, safety patterns for iterating live collections, coordinate conversion, and worked examples. An output schema exists, so return-value explanation is correctly omitted, and the preview/validation parameters are documented in the schema itself.

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

Parameters4/5

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

The visible schema nests a single 'params' object, and the description adds meaning that the schema cannot convey: the y -> -y coordinate convention, units (points), positive width/height requirement for rectangle, and corner-point-only behavior of setEntirePath. It does not walk through fields like max_ms, max_ops, or includes, but the field-level schema descriptions already cover those, so the description usefully compensates for the outermost-layer coverage gap.

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

Purpose5/5

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

Opens with a specific verb+resource: 'Execute raw JavaScript/ExtendScript code in Adobe Illustrator.' The abstraction ladder and DECISION RULES explicitly name sibling tools (illustrator_path_boolean, illustrator_execute_task, element_create_batch, illustrator_path_import_svg) and state which one wins in each situation, so an agent can distinguish this tool from its neighbors without opening a schema.

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

Usage Guidelines5/5

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

WHEN TO USE lists three concrete scenarios (one-offs, full DOM access, custom read logic) and the DECISION RULES give hard 'MUST use X instead' constraints for boolean ops and batch creation. Exclusions and alternatives are explicit rather than implied.

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

illustrator_execute_taskA
Destructive

Execute a structured task using the Task Protocol v2.1.

CONTRACT: readOnly=False, destructive=True, idempotent=False, openWorld=False

WHEN TO USE:

  • Creating/modifying elements with declarative ops (element_create, style_set, etc.)

  • Batch element creation (element_create_batch)

  • Any operation that benefits from structured error reports and target selectors

EXAMPLES: Smooth curve: illustrator_execute_task(payload={task: "element_create", params: { type: "path", points: [[0,50],[50,0],[100,50],[150,0]], smooth: true, tension: 0.5, fill: {r: 0, g: 150, b: 136}}}) Batch shapes: illustrator_execute_task(payload={task: "element_create_batch", params: { template: {type: "ellipse", rx: 4, ry: 3}, array: {count: 47, startX: 180, spacingX: 15}}}) Grid layout: illustrator_execute_task(payload={task: "element_create_batch", params: { template: {type: "rect", w: 8, h: 8}, array: {count: 50, cols: 10, spacingX: 15, spacingY: 15}}})

TARGET SELECTORS: {type: "selection"} — current selection (default) {type: "layer", layer: "Layer 1"} — all items on layer {type: "query", itemType: "PathItem", pattern: "axis_*"} — pattern match {type: "all", recursive: true} — all items in document {type: "id", ids: ["A1", "A2"]} — stable MCP ID targeting

OPTIONS: dryRun: true — compute actions without applying trace: true — include execution trace in report assignIds: true — write unique IDs to item.note (opt-in)

NOTES:

  • All task+params must be wrapped in a 'payload' field

  • For boolean ops use illustrator_path_boolean, not execute_task

  • For raw SVG path data use illustrator_path_import_svg

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare destructive=True, readOnly=False, idempotent=False, and the CONTRACT line merely restates them (no added credit). Beyond that the description adds real behavioral context: dryRun computes without applying, trace adds an execution trace, assignIds is opt-in, and results come with structured error reports — useful for a mutating tool.

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

Conciseness4/5

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

Clearly front-loaded and sectioned (purpose, contract, when-to-use, examples, selectors, options, notes), and the length is defensible for a tool this complex. The CONTRACT line wastes space by duplicating the annotations, and the examples are generous, but overall it is well organized rather than bloated.

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

Completeness4/5

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

An output schema exists, so return-value documentation is not required, and the description covers the declarative entry points, target selection, and safety options. It does not surface the apply_fn/compute_fn JSX escape hatch or preview modes, which an agent only discovers in the schema, but the core call path is adequately described.

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

Parameters4/5

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

At the top level the schema exposes only a single undocumented `params` field (0% coverage per signals), so the description must compensate — and it does, showing the payload wrapping rule, the task/params shape, worked payload examples, target-selector syntax, and the dryRun/trace options. It still omits apply_fn/compute_fn/collect_fn, includes, and preview_mode, which are passed through to the rich nested schema.

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

Purpose4/5

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

The opening line ("Execute a structured task using the Task Protocol v2.1") is somewhat abstract on its own, but WHEN TO USE immediately specifies the concrete job: creating/modifying elements with declarative ops and batch element creation. The NOTES section further distinguishes it from siblings by routing boolean ops to illustrator_path_boolean and raw SVG paths to illustrator_path_import_svg.

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

Usage Guidelines5/5

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

Explicit when-to-use bullets (declarative element ops, batch creation, operations needing structured error reports/target selectors) combined with two explicit when-not-to-use redirections to named sibling tools. Nothing is left to inference about which tool to pick.

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

illustrator_export_documentA
Destructive

Export the active document to PNG, JPG, SVG, or PDF.

CONTRACT: readOnly=False, destructive=True, idempotent=False, openWorld=True

WHEN TO USE:

  • Generating raster output (PNG, JPG) with optional scale factor

  • Exporting vector formats (SVG, PDF)

  • Getting visual feedback by setting return_image=True (PNG/JPG only)

EXAMPLES: illustrator_export_document(file_path="C:/out/fig.png", format="png", scale=2.0) illustrator_export_document(file_path="C:/out/fig.pdf", format="pdf") illustrator_export_document(file_path="C:/out/fig.png", return_image=True, artboard_only=True)

NOTES:

  • artboard_only=True clips export to artboard; a pre-check warns if nothing is on it

  • PDF export uses saveAs (longer timeout)

  • return_image returns base64 image bytes as ImageContent for visual verification

  • Overwrites existing file at file_path (destructive to filesystem)

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the annotations (which it restates faithfully), it adds real operational context: the file at file_path is overwritten (destructive to filesystem), artboard_only runs a pre-check, PDF goes through saveAs with a longer timeout, and return_image yields base64 ImageContent. This is exactly the kind of behavior an agent needs and annotations do not carry.

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

Conciseness4/5

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

Well front-loaded: purpose first, then contract, usage, examples, notes. Each section carries information, though the CONTRACT line largely duplicates the annotations and could be trimmed without losing meaning.

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

Completeness5/5

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

An output schema exists, so return-value explanation is unnecessary, and the description fills the remaining gaps (destructive overwrite, format-specific timeouts, pre-check behavior, image return path). An agent has everything needed to invoke this correctly on the first attempt.

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

Parameters4/5

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

The description pairs parameters with semantics that the schema alone leaves thin: scale is tied to raster output, return_image is constrained to PNG/JPG, and artboard_only is explained as clipping with a pre-check. artboard_index is left to its schema description, and no example uses it, so coverage is strong but not exhaustive.

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

Purpose5/5

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

The first line states a specific verb (export), resource (the active document), and the exact output formats (PNG, JPG, SVG, PDF). No sibling tool performs document export, so it is cleanly distinguishable from get_document, preflight_check, and place_file.

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

Usage Guidelines4/5

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

The WHEN TO USE block names concrete scenarios (raster export with scale, vector formats, visual feedback via return_image). It clearly routes the agent by intent, but never states when NOT to use it or names an alternative tool, so it stops short of full routing guidance.

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

illustrator_get_documentA
Read-onlyIdempotent

Get complete document information and structure as a JSON tree.

CONTRACT: readOnly=True, destructive=False, idempotent=True, openWorld=False

WHEN TO USE:

  • Understanding canvas state before writing modification scripts

  • Inspecting layers, items, positions, and properties

  • Getting Illustrator application info (scope='app')

OPTIONS: scope: 'document' (default), 'app', or 'both' max_items: items per layer, 1-5000 (default 200) max_layers: layers to return, 1-200 (default 50) offset: skip first N items per layer (for paging) layer_name / layer_index: filter to single layer

EXAMPLES: illustrator_get_document() illustrator_get_document(scope="app") illustrator_get_document(layer_name="Layer 1", offset=200, max_items=200)

NOTES:

  • If a layer is truncated, response includes truncated=true and nextOffset

  • scope='both' returns {document: {...}, app: {...}}

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly/destructive/idempotent/openWorld, so the CONTRACT line is largely redundant. The description does add value beyond them: truncation semantics ('truncated=true and nextOffset'), offset-based paging per layer, and the shape of scope='both' responses. Those are real behavioral traits the annotations cannot express.

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

Conciseness4/5

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

Well front-loaded: the one-line purpose is followed by clearly labeled CONTRACT, WHEN TO USE, OPTIONS, EXAMPLES and NOTES blocks, and the examples are genuinely useful. The CONTRACT line merely restates the annotations, which is the one piece of low-value content.

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

Completeness5/5

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

An output schema exists, so return values need not be spelled out, yet the NOTES still flag the truncation/nextOffset signals an agent must handle when paging. With scope, pagination, filtering and the app-vs-document distinction all covered, nothing needed to call this correctly is missing.

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

Parameters5/5

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

Schema description coverage registers as 0%, so the description carries the full burden, and it does: every parameter is covered with defaults and valid ranges (max_items 1-5000, max_layers 1-200), plus the paging interaction between offset/max_items and layer_name/layer_index. The EXAMPLES block further disambiguates how the parameters combine.

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

Purpose4/5

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

The opening line states a specific verb and resource ('Get complete document information and structure as a JSON tree') and the WHEN TO USE bullets clarify the three inspectable scopes (canvas/layers/items, app info). It stops short of naming siblings such as illustrator_query_items, which is the obvious alternative for filtered searching, so an agent must infer the boundary itself.

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

Usage Guidelines4/5

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

The WHEN TO USE section gives three concrete contexts ('before writing modification scripts', 'inspecting layers, items, positions', 'scope=app'), which is genuine when-to-use guidance. It never states when NOT to use it or points to the sibling that should be used instead (e.g., illustrator_query_items for targeted queries), so routing is still partly inferred.

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

illustrator_historyA
Destructive

Undo or redo actions in Illustrator.

CONTRACT: readOnly=False, destructive=True, idempotent=False, openWorld=False

WHEN TO USE:

  • Reverting mistakes (action='undo', count=N)

  • Restoring undone changes (action='redo')

  • Saving/restoring named checkpoints for recovery

EXAMPLES: illustrator_history(action="undo", count=3) illustrator_history(action="checkpoint_save", name="before_boolean") illustrator_history(action="checkpoint_restore", name="before_boolean") illustrator_history(action="checkpoint_list")

NOTES:

  • Checkpoints capture MCP-managed items only (those with @mcp:id)

  • checkpoint_restore is mutate-in-place; may require multiple undo to revert

  • undo/redo change document state (destructive)

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

Beyond the annotations (which already declare destructive=true, idempotent=false), the description adds genuinely useful traits: checkpoints only capture MCP-managed items carrying @mcp:id, and checkpoint_restore is mutate-in-place, potentially needing multiple undos to revert. The CONTRACT line merely restates the annotations verbatim, so it earns no additional credit, but the NOTES section does add real 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.

Conciseness4/5

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

Front-loaded core sentence followed by clearly labeled CONTRACT/WHEN TO USE/EXAMPLES/NOTES sections; examples are compact and directly runnable. The CONTRACT line duplicates the annotations word-for-word, which is the one line that does not earn its place.

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

Completeness5/5

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

An output schema exists, so return values need no explanation, and the description covers every action in the enum, the constraint on what checkpoints capture, the reversibility caveat for restore, and the destructive nature of undo/redo. An agent has everything needed to select the right action and call it correctly.

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

Parameters4/5

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

Top-level schema coverage reads 0% because params is a bare $ref, so the description has to carry semantic weight — and it does, via worked examples that demonstrate count for undo, and name for checkpoint_save/restore. It conveys which arguments matter for which action more concretely than the enum list alone, though the nested $defs already document name/count/action individually.

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

Purpose5/5

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

Opens with a specific verb+resource ("Undo or redo actions in Illustrator") and then extends it to the named checkpoint operations, which no sibling tool covers. An agent can distinguish it from illustrator_document, illustrator_query_items, or illustrator_execute_script without opening any schema.

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

Usage Guidelines4/5

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

The WHEN TO USE block gives three concrete scenarios mapped to specific action values (undo/redo for mistakes, checkpoint_save/restore for recovery), and the EXAMPLES section shows the exact call shape for each. It stops short of naming exclusions or alternatives (e.g. when to prefer document-level repair or execute_script over a checkpoint restore), so it is clear context without routing rules.

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

illustrator_path_booleanA
Destructive

Perform boolean operations (subtract, unite, intersect, xor) on paths.

CONTRACT: readOnly=False, destructive=True, idempotent=False, openWorld=False

WHEN TO USE:

  • Combining shapes (unite), cutting holes (subtract), finding overlaps (intersect)

  • Any shape sculpting that needs boolean geometry

PIPELINE:

  1. Extract geometry from Illustrator paths (ExtendScript)

  2. Flatten Bezier curves if present (Python)

  3. Run boolean operation via Clipper (Python)

  4. Reconstruct result as PathItem or CompoundPathItem (ExtendScript)

  5. Delete originals on success (if delete_originals=True)

EXAMPLES: illustrator_path_boolean(operation="unite", subject="body_id", clip=["wing_id"]) illustrator_path_boolean(operation="subtract", subject="plate_id", clip=["hole_id"])

NOTES:

  • Operates on fill geometry only — strokes are ignored (warning emitted)

  • Simple results produce PathItem; shapes with holes produce CompoundPathItem

  • Subject and clip identified by MCP ID (@mcp:id in item.note)

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior5/5

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

Beyond the annotations (which already declare destructive=true and idempotent=false), the description discloses that originals are deleted on success only when delete_originals=True, that only fill geometry is processed while strokes are ignored with a warning, and that output type varies (PathItem vs CompoundPathItem). It also exposes the internal pipeline stages, so the agent knows the operation is a multi-stage ExtendScript/Python round-trip rather than an atomic edit.

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

Conciseness4/5

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

Front-loaded with the purpose, then cleanly sectioned into CONTRACT, WHEN TO USE, PIPELINE, EXAMPLES and NOTES, which makes scanning fast. The five-step pipeline is the most verbose element and is more implementation detail than an agent strictly needs, but nothing is filler.

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

Completeness5/5

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

For a destructive, multi-step geometry tool this covers the essentials: mutation semantics, the originals-deletion behavior, geometry limitations (strokes ignored), the MCP ID convention (@mcp:id in item.note), and result shape. An output schema exists, so return-value documentation is not required, yet the description still usefully explains when each result type is produced.

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

Parameters3/5

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

The reported schema description coverage is 0%, so the description is expected to compensate, and it does so only partially: it clarifies the kept-vs-cutting roles of subject and clip via examples, and the destructive consequence of delete_originals. It says nothing about name, layer, style, max_segments, or flatten_tolerance, leaving half the parameters to be inferred from titles alone.

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

Purpose5/5

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

States a specific verb+resource ('Perform boolean operations ... on paths') and enumerates the four operations, which strongly differentiates it from every sibling (script execution, querying, SVG import, export). An agent can identify this tool's role without opening the schema.

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

Usage Guidelines4/5

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

A dedicated WHEN TO USE block maps each operation to a concrete scenario ('Combining shapes (unite), cutting holes (subtract), finding overlaps (intersect)') and adds the general case 'any shape sculpting that needs boolean geometry'. It lacks explicit negative guidance or a named alternative sibling to prefer in other cases, so it stops short of a 5.

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

illustrator_path_import_svgA

Import an SVG path d attribute into the active document.

CONTRACT: readOnly=False, destructive=False, idempotent=False, openWorld=False

WHEN TO USE:

  • Importing existing SVG path data (d strings) into Illustrator

  • Complex outlines, organic shapes, arcs described in SVG syntax

EXAMPLES: illustrator_path_import_svg(d="M 10 50 C 20 20, 80 20, 90 50 Z") illustrator_path_import_svg(d="M 0 0 L 100 0 L 100 100 Z", fill={r: 255, g: 0, b: 0})

NOTES:

  • Parses SVG d string server-side, converts arcs to cubic Beziers

  • Safety limits: 50,000 chars, 5,000 segments, 100 subpaths, +/-100,000 coords

  • Returned bounds are [left, top, right, bottom] in Illustrator's native Y-up space

  • For new shapes prefer illustrator_execute_task + element_create with smooth:true

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnly=false, destructive=false, idempotent=false, openWorld=false. The description adds behavioral context beyond annotations: server-side parsing, arc-to-cubic conversion, safety limits (50,000 chars, 5,000 segments, etc.), and return format (bounds in Y-up space). This is rich context. Missing: what happens if limits are exceeded, or whether partial imports are possible.

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

Conciseness5/5

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

Well-structured with clear sections: CONTRACT, WHEN TO USE, EXAMPLES, NOTES. Front-loaded with the core purpose. Every sentence adds value. No redundancy.

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

Completeness4/5

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

Given complexity (SVG parsing, conversion, safety limits, output bounds), the description covers key behavioral aspects and provides examples. Output schema exists, so return value details are not needed. Missing: parameter semantics for tag, name, layer; and the fill parameter in the example is not in the schema (minor). Overall quite complete for the core use case.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It provides an example showing the d parameter format and mentions the fill parameter (though fill is not in the schema – possible inconsistency). The description does not explain the tag, name, or layer parameters at all, leaving them fully to the schema (which also lacks descriptions). However, the example demonstrates the core d parameter syntax well.

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

Purpose5/5

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

States a specific verb (import) and resource (SVG path d attribute) with a clear scope (into the active document). It distinguishes from siblings by naming illustrator_execute_task + element_create as the preferred alternative for new shapes. An agent can immediately tell what this tool does.

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

Usage Guidelines5/5

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

Provides explicit WHEN TO USE criteria (importing existing SVG path data, complex outlines/arcs) and points to an alternative for new shapes. The guidance is specific and actionable, leaving no ambiguity about when to select 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.

illustrator_place_fileA
Destructive

Place an external file (EPS, AI, PDF, image) into the document.

CONTRACT: readOnly=False, destructive=True, idempotent=False, openWorld=True

WHEN TO USE:

  • Importing raster images (PNG, JPG) into Illustrator

  • Placing vector files (EPS, AI, PDF, SVG)

  • Vectorizing raster images via Image Trace (trace=True)

KEY CONCEPTS: linked=True (drafting) — file updates automatically when source changes linked=False (final) — file is embedded and fully editable embed_editable=True — opens PDF, copies content as editable vectors (slower) trace=True — place raster, then run Image Trace to vectorize

EXAMPLES: illustrator_place_file(file_path="C:/img/photo.png", x=100, y=50, linked=True) illustrator_place_file(file_path="C:/img/photo.png", trace=True, trace_preset="6 Colors")

NOTES:

  • trace + expand=True: editable paths, higher DOM complexity

  • trace + expand=False: live trace PluginItem, lighter but limited editability

  • High-complexity images may produce >2000 paths (warning emitted)

  • Reads external files from filesystem (openWorld)

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

The CONTRACT line merely restates the annotations (readOnly/destructive/openWorld/idempotent), which earns no credit, but the description goes well beyond them: linked files auto-update from source, embed_editable opens and pastes PDF vectors, trace+expand tradeoffs for DOM complexity, and a warning above 2000 paths. It never states what document state is modified or what destruction occurs, which is a meaningful gap for a destructive tool.

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

Conciseness4/5

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

Headers (WHEN TO USE, KEY CONCEPTS, EXAMPLES, NOTES) front-load the critical routing information, and the two examples show realistic call shapes. The CONTRACT line is pure duplication of annotation data and could be dropped, but the rest is dense and earns its space.

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

Completeness4/5

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

With an output schema present, return values need no explanation, and the description thoroughly covers placement modes, trace behavior, and complexity warnings. It leaves x/y positioning semantics (origin, units, artboard vs document space) undefined, which is the one operational detail an agent would need to place a file accurately.

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

Parameters4/5

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

The nested schema already describes every parameter, but the description adds operational meaning the schema lacks: linked=True is a drafting choice vs linked=False for final deliverables, embed_editable is slower but fully editable, and expand controls editability vs DOM weight. It does not clarify coordinate origin or units for x/y, so it falls short of full coverage.

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

Purpose5/5

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

The opening sentence states a specific verb (place) and resource (external file), and enumerates the supported formats (EPS, AI, PDF, image). Combined with the WHEN TO USE scenarios, an agent can distinguish this from siblings like illustrator_path_import_svg without opening either schema.

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

Usage Guidelines5/5

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

The WHEN TO USE block explicitly enumerates the triggering scenarios (raster import, vector placement, vectorization via trace) and the KEY CONCEPTS block routes between the linked/embed_editable/trace modes based on drafting vs final output. This is explicit when-to-use guidance with clear mode selection criteria.

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

illustrator_preflight_checkA
Read-onlyIdempotent

Perform observational validation on the active document.

CONTRACT: readOnly=True, destructive=False, idempotent=True, openWorld=False

WHEN TO USE:

  • Before export to catch common issues

  • Validating document state after a series of modifications

KEY CONCEPTS: Checks for: items outside artboard bounds, zero-size items, empty text frames, locked layers/items. Does NOT modify the document.

NOTES:

  • Returns ok=true if all checks pass, with warnings for issues found

  • Bounds policy: 'warn' (default) emits warnings; 'error' sets ok=false

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnly/destructive/idempotent/openWorld, and the description adds genuinely useful behavioral detail beyond them: the specific issue classes checked, the guarantee that the document is not modified, and return semantics (ok=true when clean, warnings otherwise). The CONTRACT line merely restates the annotations, but the NOTES add real value.

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

Conciseness4/5

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

Well-structured and front-loaded: purpose first, then contract, when-to-use, concepts, and notes. The CONTRACT line is redundant with the annotations and could be dropped, which is the only real waste in an otherwise tight layout.

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

Completeness4/5

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

For a read-only validation tool with annotations covering the safety profile and an output schema handling return values, the description supplies the needed context (what is checked, when to run it, and how results signal problems). The one gap is the inaccurate parameter guidance, which is minor against the rest of the coverage.

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

Parameters2/5

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

With schema description coverage reported at 0% for the parameter, the description carries the burden, yet its only parameter detail is misleading: it describes a 'bounds policy' with values 'warn'/'error', which matches no parameter in the schema and conflicts with the actual 'policy' parameter whose values are 'fully-contained'/'intersects'. This actively risks misconfiguring the call rather than clarifying it.

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

Purpose4/5

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

States a specific verb and resource ('observational validation on the active document') and enumerates the exact checks performed (bounds, zero-size, empty text, locked items), which makes the intent unambiguous. It does not, however, explicitly differentiate itself from siblings like illustrator_query_items or illustrator_get_document, so it falls short of a 5.

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

Usage Guidelines4/5

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

A dedicated WHEN TO USE block gives two concrete scenarios (before export; after a series of modifications), which is clear context. It stops short of naming when NOT to use it or pointing to an alternative tool, so it does not reach the explicit-alternatives bar of a 5.

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

illustrator_query_itemsA
Read-onlyIdempotent

Query items using the Task Protocol with declarative target selection.

CONTRACT: readOnly=True, destructive=False, idempotent=True, openWorld=False

WHEN TO USE:

  • Finding items by type, name pattern, or location before modification

  • Inspecting current selection

  • Listing all items on a layer or in the document

TARGET SELECTORS: {type: "selection"} — current selection (default) {type: "layer", layer: "Layer 1"} — all items on layer {type: "all", recursive: true} — all items in document {type: "query", itemType: "PathItem", pattern: "axis_*"} — filter by type/name

NOTES:

  • Returns ItemRef for each matched item, enabling stable references

  • Set include_trace=True for debugging

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

The CONTRACT line merely restates the annotations (readOnly, destructive, idempotent, openWorld), so it earns no credit. The description does add genuine behavioral context beyond the annotations: it returns an ItemRef per matched item for stable referencing, and include_trace enables debugging. With an output schema present and annotations covering the safety profile, this is adequate but not rich.

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

Conciseness4/5

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

Front-loads purpose, then contract, usage, selectors, and notes in scannable sections. Efficient overall, though the CONTRACT block duplicates annotation data and consumes space without adding information.

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

Completeness4/5

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

An agent gets purpose, when to use, selector syntax, and return-value semantics; the output schema covers the response shape. Minor gap: the description shows {type: "all", recursive: true} while the schema example shows {type: "all"}, leaving the recursive flag's effect unexplained.

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

Parameters4/5

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

Schema description coverage is reported at 0% (descriptions are buried under the $ref), so the description carries the burden and does so by enumerating four selector shapes with concrete payloads. It adds one detail the schema omits, the recursive flag on {type: "all"}, but otherwise largely mirrors the schema's own selector examples.

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

Purpose5/5

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

States a specific verb (query), resource (items), and mechanism (Task Protocol declarative target selection). The WHEN TO USE list makes it distinguishable from siblings like illustrator_execute_task and illustrator_execute_script, which run work rather than inspect it.

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

Usage Guidelines4/5

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

Gives three concrete scenarios: finding items before modification, inspecting the current selection, and listing items on a layer or in the document. This is clear context, but it never names an alternative tool or states when this tool is the wrong choice versus illustrator_execute_task.

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

illustrator_set_referenceA
DestructiveIdempotent

Set or clear a reference image on a locked background layer for tracing.

CONTRACT: readOnly=False, destructive=True, idempotent=True, openWorld=True

WHEN TO USE:

  • Preparing a reference image overlay before manual or automated tracing

  • Clearing a previous reference (omit file_path)

KEY CONCEPTS: Places image on a dedicated 'reference' layer at the bottom of the stack. Layer is locked, dimmed, and non-printable to prevent accidental edits. Calling again with the same file replaces the previous reference (idempotent).

EXAMPLES: illustrator_set_reference(file_path="C:/ref/sketch.png", opacity=50) illustrator_set_reference() -- clears the reference layer

NOTES:

  • Removal mode (no file_path) is destructive — deletes the reference layer

  • Uses the active artboard for fit/center calculations

  • Extracts dominant colors from reference image if Pillow is available

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare destructive/idempotent, but the description goes well beyond them: it specifies the layer is locked, dimmed, and non-printable, that repeat calls replace the prior reference, that removal mode deletes the layer outright, that the active artboard drives fit/center, and that dominant color extraction is conditional on Pillow. That is the kind of side-effect detail annotations cannot carry.

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

Conciseness4/5

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

Front-loaded one-line purpose followed by clearly labeled CONTRACT/WHEN TO USE/KEY CONCEPTS/EXAMPLES/NOTES sections, each carrying non-redundant content. It is longer than strictly necessary, but no section is filler.

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

Completeness5/5

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

For a single-parameter mutation with a declared output schema, the description covers the destructive clear path, idempotency, persistence semantics, and environment dependencies. Nothing an agent needs to invoke or avoid this tool correctly is missing.

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

Parameters4/5

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

Schema text describes each field, but the description adds meaning beyond it: file_path omission is the clear signal ('omit file_path'), opacity is motivated ('dim tracing' via the 50 example), and fits are tied to the active artboard. The one gap is the boolean 'fit' flag, whose semantics come only from the schema.

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

Purpose5/5

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

States a specific verb+resource ('set or clear a reference image on a locked background layer') and immediately distinguishes itself from the closest sibling (illustrator_place_file) by naming the dedicated '__reference__' layer and tracing use case. An agent can tell what this does without opening the schema.

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

Usage Guidelines4/5

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

A dedicated WHEN TO USE block gives both the set case (preparing a reference overlay before tracing) and the clear case (omit file_path). It does not name alternative tools for when a reference overlay is the wrong choice, so it falls short of a full 5, but the when/when-not conditions are explicit.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 12 tool updatesv0.1.0
    • First observedillustrator_document
    • First observedillustrator_execute_script
    • First observedillustrator_execute_task
    • First observedillustrator_export_document
    • First observedillustrator_get_document
    • First observedillustrator_history
    • First observedillustrator_path_boolean
    • First observedillustrator_path_import_svg
    • First observedillustrator_place_file
    • First observedillustrator_preflight_check
    • First observedillustrator_query_items
    • First observedillustrator_set_reference

TDQS

A4.2/5.0

Scored across 12 tools

Disambiguation5/5

The tools have clearly distinct purposes, with explicit decision rules and an abstraction ladder separating raw script execution from structured task execution. Overlaps such as execute_script vs. execute_task and get_document vs. query_items are well resolved by documented use cases and contracts.

Naming Consistency4/5

All names use a consistent illustrator_ snake_case prefix and are highly readable. A few names are noun-based rather than strict verb_noun (illustrator_document, illustrator_history, illustrator_path_boolean), but the overall convention is predictable.

Tool Count5/5

With 12 tools, the server covers a well-scoped Illustrator automation surface without feeling bloated. Each tool appears to earn its place by addressing document control, creation, inspection, export, history, or specialized path/image operations.

Completeness4/5

The surface covers document lifecycle, reading, querying, modification via structured tasks or raw script, boolean geometry, SVG import, placement, references, history, export, and preflight checks. Minor gaps exist for explicit element deletion or advanced layer/text management, but the raw script fallback prevents hard dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    C
    maintenance
    An MCP server that lets AI assistants control Adobe Illustrator locally—running ExtendScript, capturing canvas screenshots, exporting artwork, and optionally remembering techniques—all without network activity.
    -