Adobe XD MCP
Supports XD-to-Figma workflows by exporting Adobe XD artboards, layers, components, images, and design data as clean JSON that AI tools can use alongside Figma's MCP server to recreate XD screens and components in Figma.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Adobe XD MCPList the screens in my XD file and extract all text from the Login screen"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Adobe XD MCP
Let your AI assistant read Adobe XD (.xd) files: artboards, layers, text, colors, fonts, preview images and assets.
It's a small MCP server. It runs on your own computer, only reads your files, and can only see the folders you allow. Nothing is uploaded anywhere.
Ask things like: "List the screens in my XD file", "Extract all the text from the Login screen", "What colors and fonts does this design use?", "Build the Home screen as React + Tailwind."
What it can do
Tool | What it does |
| Lists every screen (artboard) with its name and id |
| Layer tree of one screen: position, size, fills, strokes, radius, text, fonts |
| All text from one screen, or the whole file |
| Colors and fonts used across the file, most-used first |
| Prototype links, if the file has them |
| The preview image saved inside the file |
| Saves embedded images to a folder |
| Full-fidelity export of a screen (or one layer) as clean JSON: frames, shapes, vector paths, text, fills, gradients, images, strokes, shadows, rotation, constraints, components. Built for rebuilding designs in other tools. See XD to Figma |
| List and export reusable components (symbols) |
| Saved color swatches, library colors and text styles |
| The design system actually used in the file: colors (ranked), type styles and size scale, radii, stroke widths, shadows. Output as JSON, CSS variables or a Tailwind theme |
| Design QA: text contrast (WCAG), tiny text, small tap targets, placeholder text, near-duplicate colors, too many fonts, default layer names |
| Search the whole file by text, layer name, type or color |
| All the text as JSON or CSV (a copy deck for translation or review) |
| Prototype flow map: taps, hovers, transitions, destinations, plus a Mermaid diagram |
| Summarize every |
| Advanced: look inside the raw |
Related MCP server: AI-Canvas MCP Server
What can I do with it?
Design to code: "Build the Home screen as React + Tailwind, using the file's real colors and fonts."
XD to Figma: "Recreate the Login screen in Figma." (details)
Design system in minutes: "Give me this file's colors, type scale and shadows as Tailwind config / CSS variables."
Design QA: "Audit this file for contrast, tiny text and small tap targets."
Copy and translation: "Export all the text as CSV." Find placeholder text, or every use of a word.
Docs: "Draw the prototype flow as a diagram and write a screen inventory."
Search: "Which screens use the color
#0033a0?"Many files: "Summarize every XD file in this folder."
Some MCP apps also show three ready-made prompts (xd-to-figma, xd-to-code, xd-design-review).
Quick start (3 steps)
You need: Node.js version 18 or newer (download the "LTS" one), and Git.
Step 1: Pick the folder with your .xd files
Example: C:/Designs (Windows) or /Users/you/Designs (Mac/Linux). The server will only be able to read inside this folder. This is a safety feature.
Step 2: Add the server to your AI tool
Find your tool below and copy the setting. Replace the folder path with yours.
Step 3: Restart the tool and ask it about your design
Try: "Use the adobe-xd tool to list the artboards in C:/Designs/app.xd."
Setup for each tool
The server command is always the same:
npx -y github:srayan-uxd/adobe-xd-mcpand the one setting you change is XD_MCP_ROOTS (your designs folder). To allow more than one folder, separate them with ; on Windows or : on Mac/Linux.
Claude Desktop
Open Settings → Developer → Edit Config. This opens
claude_desktop_config.json.Add this, save, and restart Claude:
{
"mcpServers": {
"adobe-xd": {
"command": "npx",
"args": ["-y", "github:srayan-uxd/adobe-xd-mcp"],
"env": { "XD_MCP_ROOTS": "C:/Designs" }
}
}
}Windows tip: if it says
npxisn't found, use"command": "cmd"and"args": ["/c", "npx", "-y", "github:srayan-uxd/adobe-xd-mcp"].
Claude Code
One command:
claude mcp add adobe-xd -e XD_MCP_ROOTS=/path/to/Designs -- npx -y github:srayan-uxd/adobe-xd-mcpCursor
Open Settings → MCP → Add new MCP server (or edit
~/.cursor/mcp.json).Paste the same JSON as Claude Desktop above.
VS Code (GitHub Copilot)
Create .vscode/mcp.json in your project:
{
"servers": {
"adobe-xd": {
"command": "npx",
"args": ["-y", "github:srayan-uxd/adobe-xd-mcp"],
"env": { "XD_MCP_ROOTS": "C:/Designs" }
}
}
}Windsurf
Open Settings → Cascade → MCP Servers → View raw config (~/.codeium/windsurf/mcp_config.json) and paste the Claude Desktop JSON.
OpenAI Codex (CLI)
Edit ~/.codex/config.toml:
[mcp_servers.adobe-xd]
command = "npx"
args = ["-y", "github:srayan-uxd/adobe-xd-mcp"]
env = { XD_MCP_ROOTS = "C:/Designs" }Gemini CLI
Edit ~/.gemini/settings.json and add the same mcpServers block as Claude Desktop.
Cline, Continue, Zed, and other apps
Almost every MCP-capable app uses the same recipe: command npx, args -y github:srayan-uxd/adobe-xd-mcp, and the environment variable XD_MCP_ROOTS. Look for "MCP servers" in the app's settings.
ChatGPT, Replit, Lovable, and other web/cloud tools
These run in the cloud, so they can't reach files on your computer, and this server is a local one. Your options:
Use a local tool above (Claude, Cursor, Codex, Gemini CLI, ...) to read the XD file, then paste the result (text, colors, layout) into the cloud tool.
Ask the tool whether it supports custom local/stdio MCP servers; if it does, use the recipe above.
Hosted (HTTP) support is not built in yet. Contributions are welcome. Note that exposing a file-reading server to the internet needs real care.
XD to Figma (and other design tools)
You can use this server together with the official Figma MCP server (set it up from Figma's help center) in an AI tool that supports several MCP servers (Claude, Cursor, Codex, ...). This server reads the XD file; the Figma server writes into Figma; the AI connects them.
Try prompts like:
"List the artboards in
C:/Designs/app.xd.""Export the 'Login' artboard with
xd_export_artboard, saving images toC:/Designs/_assets, and recreate it in my Figma file.""First create Figma components from
xd_list_components, then use them in the screens."
Tips for big files:
One screen at a time. A 60-screen file is a lot of work for an AI, so go screen by screen.
Big screen? Export a smaller part with
nodeId(the ids are in the export), or lowerdepth.Images: pass
assetsDirso the exported images are saved as files, and each image fill points to its file byimageRef.
What carries over well: frames, rectangles with corner radius, ellipses, lines, vector paths (SVG path data), text with font, size and mixed styles, solid/gradient/image fills, strokes, shadows, opacity, rotation, constraints, and component/instance info.
Also included: XD stacks (direction and the gap after each child), scroll settings, and prototype interactions attached to the layer they belong to (trigger, destination screen, transition, duration, easing).
What doesn't: padding of stacks, repeat grids are exported as their repeated layers with the grid settings attached, and exact bounds for rotated layers and vector paths (flagged as boundsApprox). Treat this as a strong head start, not a pixel-perfect converter, and check the result against the preview image (xd_get_preview).
Alternative install: from source
If npx gives you trouble:
git clone https://github.com/srayan-uxd/adobe-xd-mcp.git
cd adobe-xd-mcp
npm install
npm run buildThen use node as the command and the full path to dist/index.js as the argument:
{
"mcpServers": {
"adobe-xd": {
"command": "node",
"args": ["/full/path/to/adobe-xd-mcp/dist/index.js"],
"env": { "XD_MCP_ROOTS": "C:/Designs" }
}
}
}Safety
Local only. No network calls, no uploads.
Folder allow-list. Files outside
XD_MCP_ROOTSare refused (symlinks and..tricks included). If you don't set it, only the folder the server starts in is allowed.Only
.xdfiles can be opened. Network paths (\\server\share) are blocked.Zip-bomb limits protect your memory from booby-trapped files.
Be careful with files you don't trust. Text inside a design is passed to your AI, and a malicious file could try to give the AI instructions.
Details and how to report a problem: SECURITY.md.
Known limits
Built from the XD file format as it appears in current files; XD is closed and undocumented, so unusual files may show gaps. Open an issue (without sharing private designs).
Design audit contrast checks estimate the background from the shapes behind the text (and skip text over pictures), so treat them as leads, not verdicts. Positions of rotated layers are approximate.
Components are exported with their ids, and repeat grids as their layers plus grid settings; neither is rebuilt as a "live" object.
Only drop shadows are mapped for effects; other effects are passed through raw. Gradients are passed through with colors converted to hex (not yet verified against many real files).
Read-only. It can't edit or create
.xdfiles.
Develop
npm install
npm test # builds, then runs the smoke + security tests
node test/real.mjs path/to/file.xd # try the server on a real fileLicense
MIT. Not affiliated with or endorsed by Adobe. "Adobe XD" is a trademark of Adobe Inc.
Available Tools
19 toolsxd_audit_designA
Design QA. Checks text contrast (WCAG, background estimated), tiny text, small tap targets on interactive layers, placeholder text, near-duplicate colors, too many fonts/sizes and default layer names. Returns findings with artboard and layer ids plus per-check totals.
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | Absolute path to a .xd file | |
| artboard | No | Artboard id or name; omit for the whole file | |
| maxPerCheck | No | ||
| minFontSize | No | ||
| minTapTarget | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations the description carries the full burden, and it does reasonably well: 'background estimated' honestly flags a heuristic limitation, and it states what the response contains (findings with artboard/layer ids plus per-check totals). It stops short of declaring the operation read-only and says nothing about truncation behavior when maxPerCheck caps results, which an agent would want to know.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with 'Design QA' and then the concrete check list, ending with the return shape. Every clause carries information; the enumeration is the substance of the tool, not padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description's closing sentence about findings, artboard/layer ids and per-check totals usefully fills that gap, and the estimated-background caveat sets expectations. Gaps remain around severity/prioritization of findings and the three undocumented threshold parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 40% — maxPerCheck, minFontSize and minTapTarget have no schema descriptions, only defaults and bounds. The description partially compensates by naming 'tiny text' and 'small tap targets' as checks, hinting at what those thresholds control, but it never says that these parameters tune the checks, and maxPerCheck is left entirely unaddressed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific operation ('Design QA') and then enumerates the exact checks it performs: contrast, tiny text, tap targets, placeholder text, duplicate colors, font/size proliferation, default layer names. That enumeration makes it unmistakable against siblings like xd_get_design_tokens or xd_find_layers, which retrieve rather than audit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to reach for it (you want a QA pass over a file or artboard) but never states it explicitly and offers no exclusions or alternatives. There is no guidance on when to prefer it over xd_get_design_tokens plus manual inspection, or on when a single-artboard audit is more appropriate than a whole-file one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xd_export_artboardA
Full-fidelity export of one artboard (or a sub-layer via nodeId) as clean JSON for rebuilding the design in another tool such as Figma: frames, rectangles (with corner radius), ellipses, lines, vector paths (SVG path data), boolean shapes, text (font, size, styled runs), fills (solid/gradient/image), strokes, shadows/effects, opacity, rotation, constraints, components, repeat grids and layout grids. Positions are relative to the parent. Images are referenced by imageRef; pass assetsDir to save them. For big screens, export a sub-layer with nodeId.
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | Absolute path to a .xd file | |
| depth | No | Max nesting depth. Auto-reduced if the result is too large. | |
| nodeId | No | Export only this layer id (from a previous export) | |
| artboard | Yes | Artboard id or name | |
| assetsDir | No | Optional absolute folder (inside the allowed roots). Referenced images are saved there as <imageRef>.<ext>. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does well: it discloses that positions are parent-relative, that images are only referenced by imageRef unless assetsDir is passed (a real side effect), and that depth may be auto-reduced. It does not explicitly frame the operation as read-only versus file-writing, which is the main residual gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and the key usage rule are front-loaded, and the long element-type enumeration justifies itself by telling the agent what fidelity to expect. It is dense but not padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by enumerating the returned JSON contents and describing image handling and relative positioning. Minor omissions remain, such as default depth behavior or the effect of allowed-root restrictions on assetsDir.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, so a 3 is the floor; the description earns above that by explaining the practical semantics of nodeId (sub-layer export for big screens) and assetsDir (saved as imageRef.ext) beyond the schema's wording.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Full-fidelity export of one artboard ... as clean JSON') and enumerates exactly what the JSON contains, which implicitly separates it from the listing/reading siblings like xd_get_artboard and the component-specific xd_export_component. An agent knows precisely what this tool produces without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a concrete usage rule ('For big screens, export a sub-layer with nodeId') and names the trigger condition. It does not explicitly contrast against siblings such as xd_export_component or xd_extract_assets, so it falls short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xd_export_componentA
Export one component master (see xd_list_components) in the same format as xd_export_artboard.
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | Absolute path to a .xd file | |
| depth | No | Max nesting depth. Auto-reduced if the result is too large. | |
| assetsDir | No | Optional absolute folder (inside the allowed roots). Referenced images are saved there as <imageRef>.<ext>. | |
| component | Yes | symbolId or component name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden and does very little with it. It never says whether the tool only reads the .xd file, that assetsDir causes files to be written to disk, what the size/depth auto-reduction behavior means in practice, or what errors occur for an unknown component name. Only the output-format cross-reference to xd_export_artboard is added context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with zero filler; the resource and its two cross-references are front-loaded and the whole definition scans in one pass. Nothing could be removed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should say what an export returns, and it only delegates that to "same format as xd_export_artboard," which an agent cannot read without already knowing that sibling. Parameter coverage from the schema is strong, so the remaining gap is the return/side-effect story rather than the inputs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so file, depth, assetsDir, and component are all documented in the schema and the baseline of 3 applies. The description adds a small hint that "component" values come from xd_list_components, but nothing about depth, asset folder constraints, or name-vs-symbolId ambiguity for the component parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Export one component master") with a clear scope of exactly one component, and disambiguates from siblings by pointing at xd_list_components for discovery and xd_export_artboard for the output shape. An agent can distinguish this from xd_list_components, xd_extract_assets, and xd_export_artboard 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical "(see xd_list_components)" tells the agent where component identifiers come from, which is the key prerequisite, and "same format as xd_export_artboard" tells it what to expect. There is no explicit when-not or named alternative for exporting something other than a component master, so it falls short of a full routing statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xd_export_copyA
Export all text content (a copy deck) for translation or review, as json or csv. CSV cells are protected against spreadsheet formula injection.
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | Absolute path to a .xd file | |
| format | No | json | |
| artboard | No | Artboard id or name; omit for the whole file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It usefully discloses that CSV cells are protected against spreadsheet formula injection and that output can be json or csv, but it does not state whether the operation is read-only, how output is delivered, or what errors may occur.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two compact clauses with no wasted text. The core purpose and output formats are front-loaded before the CSV safety detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple three-parameter export tool with no annotations or output schema, the description covers the core purpose and output formats. However, it omits the artboard filtering behavior and does not clarify whether the export returns data or writes a file, leaving meaningful gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67%, so the schema already documents the file and artboard parameters. The description adds context for the format choice and CSV safety but does not explain the artboard filter or add syntax beyond the enum.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: 'Export all text content (a copy deck).' It also states the output formats, json or csv. It does not explicitly distinguish itself from the sibling tool xd_extract_text, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for translation or review' implies a use case, but there is no explicit guidance on when to choose this over alternatives such as xd_extract_text. No exclusions or prerequisites are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xd_extract_assetsC
Extract embedded images/resources from the XD file into an output directory.
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | Absolute path to a .xd file | |
| outDir | Yes | Absolute directory to write assets into |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, yet it omits key traits of a file-writing operation: whether existing files in outDir are overwritten, how assets are named, and what happens on collisions or failures. Only the bare fact that files get written is conveyed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It is efficient, though the brevity edges toward under-specification rather than tightness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter tool with fully described params and no output schema, the essentials are present. However, given the tool writes assets to disk in a crowded sibling set, more on output layout and side effects is needed for full confidence.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both `file` and `outDir` are already documented with absolute-path requirements. The description adds nothing beyond what the schema states, which is the expected baseline here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: extract embedded images/resources from an XD file into an output directory. Clear on its own, but does not differentiate from siblings like xd_get_shared_assets or xd_export_component, which an agent could plausibly confuse with it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of when to prefer xd_get_shared_assets or xd_export_component, and no stated prerequisites. The agent must infer selection from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xd_extract_textB
Extract all text content from one artboard, or from every artboard if none is given.
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | Absolute path to a .xd file | |
| artboard | No | Artboard id or name; omit for all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the full burden. It discloses the scope-default behavior, but says nothing about read-only nature, whether hidden/locked layers are included, or what the return value looks like (plain text vs. per-artboard mapping).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the action and immediately followed by the scope rule. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read tool this is close to adequate, but with no output schema the shape of extracted text is unspecified, leaving a real ambiguity about how multi-artboard results are returned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters and the 'omit for all' default are already documented in the schema. The description merely restates that default; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (extract) and resource (text content) plus scope (one artboard vs. all). It is clear against asset/export siblings, but it never names a sibling or distinguishes text extraction from xd_extract_assets or xd_find_layers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: omit artboard to get everything. No guidance on when to prefer this over xd_find_layers or xd_read_raw, nor any prerequisite such as the file needing to be a valid .xd.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xd_find_layersA
Search layers across the file by text content, layer name, type (text, rectangle, ellipse, path, group, ...) or color (#rrggbb, matched with a small tolerance).
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | Absolute path to a .xd file | |
| name | No | ||
| text | No | ||
| type | No | ||
| color | No | #rrggbb | |
| limit | No | ||
| artboard | No | Artboard id or name; omit for the whole file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It does add one genuinely useful behavioral detail — color matching uses 'a small tolerance' — but omits whether filters combine as AND/OR, whether matching is substring or exact, case sensitivity, and that results are capped by the undocumented limit (default 50, max 500).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence, front-loaded with the verb and resource, that enumerates every filter dimension with concrete examples and no filler. Nothing could be removed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-param search tool with no annotations and no output schema, the description leaves two agent-relevant questions open: how multiple filters combine, and what the results look like (layer objects vs ids) or that they are truncated by `limit`. Adequate for a low-risk read, but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 43% across 7 params. The description adds real meaning for color (format plus tolerance) and gives type examples, which the schema leaves as a bare string. It says nothing about the `name`, `text`, or `limit` parameters, so it only partially compensates for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (search) and resource (layers) plus the exact filter dimensions: text content, layer name, type with enumerated examples, and color. An agent can distinguish this from xd_list_artboards or xd_extract_text without opening the schema, though the description never names a sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the word 'search' plus the filter list; there is no statement of when to prefer this over xd_extract_text (text extraction) or xd_list_artboards (scoping by artboard). No exclusions or prerequisites are given, leaving the agent to infer routing from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xd_get_artboardA
Get the layer tree of one artboard (positions, sizes, fills, strokes, text, fonts). Match by id or name (partial ok).
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | Absolute path to a .xd file | |
| depth | No | Max nesting depth to expand | |
| artboard | Yes | Artboard id or name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations and no output schema, the parenthetical field list (positions, sizes, fills, strokes, text, fonts) does real work in describing what comes back. However, it is silent on ambiguous partial matches (what happens if several artboards match), missing-file behavior, and read-only guarantees.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler; the core action and returned data are front-loaded and the matching rule follows immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Without an output schema, the field enumeration partially substitutes for a return-value spec, and depth limits are covered by the schema. The remaining gap is behavior on ambiguous or failed matches, which an agent would need before calling confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all three parameters, and the description still adds genuinely new semantics for `artboard` by noting partial matching is allowed. `depth` and `file` are left entirely to the schema, which is adequate given full coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get the layer tree of one artboard') and enumerates the returned properties, which cleanly separates it from xd_list_artboards. It never names a sibling explicitly, so differentiation is implicit rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Match by id or name (partial ok)' gives lookup guidance, but there is no statement of when to use this instead of xd_export_artboard, xd_find_layers, or xd_read_raw, and no exclusions or prerequisites. Usage is only implied by the tool's scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xd_get_design_systemB
Extract the design system actually used in the file: color palette (ranked, with fill/text/stroke usage), typography styles and size scale, corner radii, stroke widths and shadows. Output as json, css (custom properties) or tailwind (theme.extend).
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | Absolute path to a .xd file | |
| format | No | json |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full behavioral burden. It implies a read-only extraction and does usefully describe the three output shapes (json, css custom properties, tailwind theme.extend), but says nothing about permissions, cost, failure modes, or whether the file must be open — significant gaps for a document-wide extraction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence with zero filler; the extracted artifacts are listed first and the output formats come last, which is the right front-loading order.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does an adequate job of enumerating returned content, and it covers the format parameter. What is missing is the relationship to xd_get_design_tokens and any operational preconditions, which matter for a document-wide extraction tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: 'file' is documented in the schema but 'format' only has an enum and default with no description. The description compensates well by explaining what each format produces ('css (custom properties)', 'tailwind (theme.extend)'), adding real meaning beyond the bare enum values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Extract') and resource ('the design system actually used in the file') and enumerates exactly what is returned: color palette with usage ranking, typography and size scale, radii, stroke widths, shadows. The one gap is that the near-identical sibling xd_get_design_tokens is never mentioned, so an agent cannot tell the two apart from the description alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to choose this over xd_get_design_tokens, xd_get_shared_assets, or xd_audit_design, all of which plausibly overlap. No preconditions are stated either, such as whether the .xd file must be open in Adobe XD or whether this is a costly full-document scan.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xd_get_design_tokensA
Summarize colors and fonts used across the document (by frequency), plus shared styles if present.
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | Absolute path to a .xd file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose what the output contains (frequency-ranked colors/fonts, shared styles conditional on presence), but says nothing about read-only semantics, scope of traversal, or whether shared styles are included only when detected — leaving the agent to infer behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with zero filler, and the primary purpose (color/font summary) is front-loaded ahead of the secondary qualifier about shared styles.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read tool with no output schema, the description adequately conveys what the result contains (frequency summary plus optional shared styles). Minor gap: it doesn't describe the structure of the summary or whether styles are objects vs counts, but that's a small omission for this complexity level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With a single required 'file' parameter at 100% schema coverage, the schema already documents the parameter fully. The description adds no syntax, constraint, or file-format details beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (summarize) and resource (colors and fonts across the document), plus the aggregation method (by frequency) and supplementary shared styles. It is clear what the tool produces, though it doesn't explicitly differentiate itself from siblings like xd_get_design_system or xd_get_shared_assets that sound overlapping.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'by frequency' and 'across the document' phrasing implies when the tool is useful (palette/typography analysis), but there is no explicit when-to-use guidance, no exclusions, and no routing away from the similar-sounding xd_get_design_system or xd_get_shared_assets siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xd_get_flowB
Prototype flow map: every interaction (tap/hover/time triggers, transitions, destinations) with source screen and layer, the home screen, and a Mermaid flowchart of screen-to-screen links.
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | Absolute path to a .xd file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the whole burden. To its credit it discloses the shape of the return value in useful detail (interaction records plus a Mermaid flowchart), which compensates for the missing output schema. It says nothing about read-only semantics, cost/scale for large files, or failure modes such as files without prototypes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One densely packed sentence, front-loaded with the concept and enumerating output contents without filler. It is a noun fragment rather than a verb clause, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with no output schema, the description adequately conveys both what is returned and the structure of the return (interaction records + Mermaid graph). It is only missing the boundary against xd_get_interactions and any note about prototype-less files.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter with 100% schema description coverage ('Absolute path to a .xd file'), so the schema already does the work. The description adds no file-related detail, but none is needed at this parameter count.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies the resource precisely: a prototype flow map covering interactions, triggers, transitions, destinations, source screen/layer, home screen, and a Mermaid diagram of screen links. An agent can infer this is the flow/graph view rather than raw per-artboard data. It does not, however, explicitly contrast itself with the sibling xd_get_interactions, which is the most likely confusion point.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance, no prerequisites (e.g., file must contain a prototype), and no named alternative such as xd_get_interactions or xd_list_artboards. Usage must be inferred entirely from the output inventory.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xd_get_interactionsC
Return prototype interactions / flows (interactions.json) if the file has any.
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | Absolute path to a .xd file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the tool may return nothing when interactions are absent, but it does not describe read-only semantics, error behavior, or the return format beyond naming the source file 'interactions.json'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence that states the resource and the conditional outcome without filler. It is appropriately sized for a simple getter, though the conditional clause is slightly awkward.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-annotation, no-output-schema getter, the description covers what is returned and the empty case. It omits how this differs from 'xd_get_flow' and does not clarify whether the output is raw file content or parsed data, leaving a meaningful gap for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the single 'file' parameter fully documented as an absolute path to a .xd file. The description adds no parameter-specific meaning beyond what the schema already provides, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Return') and resource ('prototype interactions / flows (interactions.json)'), so the agent knows what the tool retrieves. However, it does not distinguish itself from the sibling 'xd_get_flow', which plausibly returns similar prototype flow data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'if the file has any' hints at a conditional outcome but gives no guidance on when to choose this tool over 'xd_get_flow' or other siblings. There are no explicit alternatives, prerequisites, or exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xd_get_previewA
Return the embedded preview image of the XD file (first artboard render).
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | Absolute path to a .xd file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It does disclose meaningful behavior—the image is embedded, not rendered on demand, and it corresponds to the first artboard only—but it says nothing about the return form (base64/path/MIME), what happens if the file has no preview or is not an artboard-first document, or any error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the action and resource, with the parenthetical qualifier placed where it disambiguates. Nothing to trim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read tool this is close to adequate, but the description does not explain what the returned 'preview image' looks like (inline data vs. URL) or the fallback when no embedded preview exists, and there is no output schema to cover that gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter with full schema coverage ('Absolute path to a .xd file'), so the schema already does all the work; the description adds no parameter detail but needs none. Baseline 4 applies for a 1-param tool at 100% coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (return) plus specific resource (embedded preview image of the XD file), and the parenthetical '(first artboard render)' pins down exactly which image. It is distinguishable from xd_export_artboard because it returns an *embedded* preview rather than a fresh export, but the description never names that sibling to make the distinction explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The word 'embedded' and the '(first artboard render)' qualifier imply this is a cheap way to peek at a file without exporting, but there is no explicit when-to-use or when-not-to-use, and no mention of xd_export_artboard as the alternative for arbitrary artboards.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xd_list_artboardsA
List the artboards in an Adobe XD file with their ids and names, plus document name. Set includeGeometry to also get each artboard's canvas position and size (slower on big files).
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | Absolute path to a .xd file | |
| includeGeometry | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It implies a read operation by 'list' and usefully discloses the performance tradeoff of includeGeometry on big files, but it does not state read-only guarantees, permission/auth needs, or failure behavior for a missing or invalid .xd path.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences with zero filler. The core purpose and return fields come first, and the optional-parameter cost note follows, which is the right front-loading.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must enumerate return values, and it does (ids, names, document name, optional geometry). A minor gap remains around error/empty-file behavior, but for a two-parameter read tool the definition is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%: 'file' is documented in the schema while 'includeGeometry' is not. The description fills that gap by explaining includeGeometry requests canvas position and size, but adds nothing about the required 'file' parameter's expectations beyond the schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (list artboards in an Adobe XD file) and enumerates the return fields (ids, names, document name). An agent can distinguish this bulk-listing tool from the singular xd_get_artboard sibling without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the includeGeometry option and flags its cost on large files, which is real guidance. However, it never says when to prefer this tool over alternatives such as xd_get_artboard for a single artboard or xd_list_entries for other entity types, so tool selection is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xd_list_componentsB
List the reusable components (symbols) defined in the file: id, name, size.
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | Absolute path to a .xd file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden; "List" implies a safe read, and it usefully discloses the returned fields (id, name, size) in the absence of an output schema. It does not mention whether the file must be open/local, whether errors occur on invalid paths, or what 'size' means (pixels? bounding box?).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence that names the resource, scopes it, and enumerates the return fields. No filler and nothing an agent must scan past.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only listing tool with no output schema, the description is close to sufficient: it identifies the resource, the file scope, and the response shape. Minor gaps remain around library vs file-local components and error behavior, but the essential calling information is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single `file` parameter is documented at 100% schema coverage ("Absolute path to a .xd file"), so the schema already does the work. The description adds only the implicit relation that components are read from that file, no format or constraint details beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("List the reusable components (symbols)") plus the scope ("defined in the file") and the returned fields. That scope wording distinguishes it from library-wide siblings such as xd_get_shared_assets, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no routing to alternatives among the many xd_* siblings (e.g. xd_get_shared_assets, xd_get_design_system, xd_list_artboards). Usage is only inferable from the one-line purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xd_list_entriesB
List every file inside the XD archive (for debugging / finding raw data).
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | Absolute path to a .xd file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It says nothing about whether the operation is read-only, whether the listing is recursive, whether directories are included alongside files, or what form the entry names take (and thus how they feed into xd_read_raw). Only the low-risk verb 'List' hints at behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with no filler; the purpose lands before the parenthetical hint. Slightly terse for a tool with a file-path requirement, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
It is a single-parameter read tool with no output schema, so the description should at least characterize the return value (flat archive paths vs. nested tree) and how those entries relate to xd_read_raw. It is adequate to identify the tool but not to use its output without experimentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single 'file' parameter is already documented as an absolute path to a .xd file. The phrase 'XD archive' reinforces the mental model of the input but adds no format, path, or validation detail beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: list every file inside the XD archive. That is distinguishable from xd_list_artboards and xd_list_components, which enumerate logical design objects rather than archive entries. It does not name those siblings, but the resource is concrete enough to pick correctly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical '(for debugging / finding raw data)' implies when to reach for it, but gives no explicit exclusions and never names xd_read_raw as the natural follow-up or xd_project_overview as the higher-level alternative. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xd_project_overviewA
Scan a folder (inside the allowed roots) for .xd files and summarize each: name, size, artboard and component counts, whether it has a prototype. Searches up to 3 levels deep, max 60 files.
| Name | Required | Description | Default |
|---|---|---|---|
| folder | Yes | Absolute folder path |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does disclose real behavioral limits: recursion stops at 3 levels and results cap at 60 files, and paths must be inside allowed roots. What it doesn't say is whether hitting those limits truncates silently or is reported, which matters for an agent that might summarize an incomplete set.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence plus a short limits clause. The action and the per-file summary fields come first, with the depth/file caps tacked on at the end where they belong.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must describe returns — and it does, listing name, size, artboard and component counts, and prototype presence. The only gap is the truncation/pagination behavior when the 3-level or 60-file limits are hit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single 'folder' param, so the baseline is 4, and the description earns that by adding the constraint that the path must be inside allowed roots — a semantic the schema does not state. No syntax or format detail is added beyond that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Scan a folder ... for .xd files and summarize each') and enumerates exactly what the summary contains. The folder-level, bulk-scan scope cleanly separates it from the per-file siblings (xd_get_artboard, xd_extract_text, xd_list_components).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies the use case (get a quick inventory of every .xd file in a directory) and flags the 'inside the allowed roots' restriction, but never states when to prefer it over siblings such as xd_list_entries or when to drop to a single-file call. Usage must be inferred from scope rather than read.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
xd_read_rawA
Read a raw JSON entry from the archive (e.g. manifest, an artboard's graphicContent.agc), optionally drilling in with a dotted path like children.0.artboard.children.2. Output is truncated to maxChars.
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | Absolute path to a .xd file | |
| path | No | Optional dotted path into the JSON | |
| entry | Yes | Archive path, e.g. 'manifest' or 'artwork/artboard-xxx/graphics/graphicContent.agc' | |
| maxChars | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses that output is truncated to maxChars, which is non-obvious, but it does not describe error behavior for invalid entry paths, whether truncation is marked, or how path traversal failures are surfaced. For a read-only tool this is adequate but incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences with zero waste. The core purpose is front-loaded, and the path-drilling and truncation details follow in a logical order.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a 4-parameter read tool with 75% schema coverage, no annotations, and no output schema, the description covers what matters: what is read, how to drill in, and truncation behavior. The main gap is that it never points to xd_list_entries as the way to discover valid archive entry paths, which an agent may need for arbitrary files.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 75%, so the baseline is 3. The description adds meaningful syntax for the path parameter (children.0.artboard.children.2) and explains maxChars truncation, partially compensating for the missing maxChars description in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: reading a raw JSON entry from an .xd archive, with concrete examples like manifest and graphicContent.agc. It implicitly distinguishes itself as the low-level escape hatch versus higher-level siblings such as xd_get_artboard or xd_get_design_tokens, but never names an alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through the optional dotted path and examples, so an agent can infer that this tool is for drilling into raw archive JSON. However, it gives no explicit guidance on when to prefer this over xd_get_artboard, xd_list_entries, or other siblings, and no exclusions or prerequisites.
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.
19 tool updates
v0.2.0- First observed
xd_audit_design - First observed
xd_export_artboard - First observed
xd_export_component - First observed
xd_export_copy - First observed
xd_extract_assets - First observed
xd_extract_text - First observed
xd_find_layers - First observed
xd_get_artboard - First observed
xd_get_design_system - First observed
xd_get_design_tokens - First observed
xd_get_flow - First observed
xd_get_interactions - First observed
xd_get_preview - First observed
xd_get_shared_assets - First observed
xd_list_artboards - First observed
xd_list_components - First observed
xd_list_entries - First observed
xd_project_overview - First observed
xd_read_raw
TDQS
Scored across 19 tools
Several clusters overlap: xd_get_design_tokens, xd_get_design_system, and xd_get_shared_assets all report colors/fonts; xd_extract_text and xd_export_copy both dump text; xd_get_interactions and xd_get_flow both expose prototype links. Descriptions clarify intended differences, but an agent could still misselect within these clusters.
All tools use the xd_ prefix and snake_case, mostly following a verb_noun pattern such as xd_list_artboards, xd_export_artboard, xd_find_layers, and xd_audit_design. xd_project_overview is a minor noun-phrase outlier, but the overall convention remains clear and predictable.
At 19 tools the surface is borderline heavy for a read/export/QA server, and the overlapping text, design-system, prototype, and artboard extraction tools suggest some consolidation is possible. The breadth is defensible, but it sits above the ideal 3-15 range.
Coverage is broad: artboards, components, text, assets, design tokens/system, prototype flows, QA, search, raw archive access, and project scanning are all represented. Minor gaps remain, such as batch/multi-artboard export or per-artboard previews, but agents can generally work around them.
Maintenance
Related MCP Connectors
Run accessibility, contrast, and design token audits and file QA issues from your AI coding tool.
Serves your design system and coding standards to coding agents, so they stop guessing.
Turn any live website into brand colors, fonts, design tokens, SVGs, Lottie and paste-ready code.
Turn datasheets into source-backed JSON contracts, pinout matrices, and KiCad CAD for AI agents.
Related MCP Servers
- AlicenseBqualityBmaintenanceEnables AI assistants to read, analyze, and modify Figma designs, manage design tokens, and create prototype connections, all while keeping data local.6386 npm10MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to inspect, modify, export, and validate design documents with 47 tools covering design, code generation, branding, and print/mockup workflows.2 npm2MIT
- AlicenseNot gradedqualityDmaintenanceEnables parsing of PSD files and extraction of layer information, design tokens, and assets to assist LLMs in converting designs to code.18 npm1MIT
- AlicenseNot gradedqualityFmaintenanceEnables Claude to interact with Adobe XD files, extract design information, and generate React components from designs.19 npm21MIT