diagrams-so
OfficialDiagram Creation & Modification:
Generate diagrams from natural language prompts (supports AWS, Azure, GCP, OCI, Kubernetes; diagram types: architecture, flowchart, sequence, data pipeline, etc.)
Edit diagrams with plain English descriptions (creates new versions)
Fix specific Well-Architected warnings without altering the rest of the diagram
Re-layout diagrams via AI for readability (async job)
Import existing draw.io XML to create new diagrams
Update diagram metadata: rename, set visibility (public/private), replace underlying XML
Revert to any earlier version
Soft-delete diagrams (requires confirmation)
Fork public gallery/library templates into your account
Inspection & Export:
Get diagram details (title, draw.io XML, Well-Architected score)
List your diagrams (cursor-paginated, newest first)
Retrieve Well-Architected warnings for a diagram (findings with type, component, message)
Export diagrams: .drawio (fully editable) or .svg (free, watermarked on free plan)
List and get version history of a diagram
Poll async re-layout job status and results
Search public gallery for community and curated templates
Prompt Assistance:
Enhance a rough prompt into a detailed generation prompt
Clarify vague prompts with 1-3 clarifying questions before generating
Account & Usage:
Check usage, remaining credits, and per-action cost estimates
View itemized credit consumption history (filter by action, date range, diagram, surface)
Identify account/plan (whoami)
List supported capabilities (diagram types, cloud providers, export formats)
Allows exporting cloud architecture diagrams in draw.io format that can be opened and edited in diagrams.net.
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., "@diagrams-soGenerate an AWS 3-tier web app diagram"
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.
@diagrams-so/mcp
The Diagrams.so MCP server — generate, edit, and manage cloud architecture diagrams from any MCP client (Claude Desktop, Claude Code, Cursor). It's a thin stdio client over the public Diagrams.so API (/api/v2); every tool is one REST call.
Quick start
Needs Node ≥ 18. No API key to copy: you connect by approving in a browser.
# 1. add the server to Claude Code
claude mcp add diagrams-so -- npx -y @diagrams-so/mcp
# 2. connect this machine (a browser opens, press Approve)
npx @diagrams-so/mcp loginRestart your client, then ask: "Generate an AWS 3-tier web app diagram and show me the warnings."
Run /mcp if you want to confirm all 23 tools registered first.
Using it a lot? Install once and the command gets shorter:
npm i -g @diagrams-so/mcp
diagrams-so loginThe server talks to production (
https://api.diagrams.so/api/v2) by default. Point it at a local or self-hosted API withDIAGRAMS_API_BASE.
Using Claude Desktop or Cursor instead of the CLI? See Add it to your MCP client. Prefer a one-click, no-terminal install? See One-click install (MCPB).
Add the server to your client config (below) with DIAGRAMS_LOGIN_EMAIL set to your email,
then just ask for a diagram. Because the machine isn't connected yet, the first tool call
emails you a one-time sign-in code and replies with a link. Open it, enter the code, press
Approve, and ask again. Nothing to install or type.
Related MCP server: fcp-drawio
Generating a diagram from Claude
login only connects the machine. It never generates anything itself, so there is no
generate command to type in a terminal. You write the prompt in your assistant's normal
chat box and it calls the tools for you.
Client | Where you type the prompt |
Claude Code | the terminal chat, same place you ask anything else |
Claude Desktop | the normal message box |
Cursor | the chat or composer panel |
MCP servers load at startup, so restart your client after adding it. Then run /mcp and
confirm diagrams-so shows 23 tools.
Now just ask, in plain English:
Generate an AWS three-tier web app with an ALB, EC2 Auto Scaling and RDS Multi-AZ. Show me the design warnings, then export it as draw.io.
Behind that one sentence the assistant calls generate_diagram, then get_warnings, then
export_diagram. You never name a tool or write JSON.
More things worth asking, once you have a diagram:
The warnings mention no encryption in transit. Fix that one and show me the new score.
Add a CloudFront distribution in front of the ALB.
Re-export it as SVG so I can drop it in the README.
Each reply carries the credit cost and your remaining balance. Generating, editing, fixing and re-laying-out spend credits; reading, warnings and every export are free.
The .drawio file the assistant saves opens at app.diagrams.net or
in the desktop app, fully editable — it is real draw.io XML, not a picture.
Prefer not to use an assistant at all? diagrams.so/create has
the same thing as a web page: type the prompt in the box. No install, no login, no MCP.
Tools (23)
Create & change (mutating)
Tool | What it does | Cost |
| Create a diagram from a prompt → id + draw.io XML + warnings + score | credits |
| Apply a natural-language change (new version) | credits |
| Resolve one Well-Architected warning | credits |
| AI re-arrange the layout (async; first 2/diagram free, then confirm) | credits* |
| Import existing draw.io XML as a new diagram | free |
| Rename / change visibility / replace XML | free |
| Revert to an earlier version | free |
| Soft-delete a diagram (destructive) | free |
| Copy a public/library diagram into your account (private) | free |
Read (free)
Tool | What it does |
| Fetch a diagram's XML + score |
| List your diagrams (cursor-paginated) |
| Well-Architected findings for a diagram |
| Raw |
| Version history (with |
| A specific version's XML + score |
| Poll an async re-layout job |
| Search public community + curated library diagrams |
| Turn a rough idea into a detailed prompt |
| Get clarifying questions for a vague prompt |
| Plan + credits + cost estimates |
| Itemized credit ledger per task (action, credits, diagram, surface) with filters + a live session tally |
| Account, plan, scopes, live/test mode |
| Valid diagram types / providers / export formats |
Reads and exports are free; generate / edit / fix / relayout cost credits, and delete is destructive. relayout asks for confirm=true before it charges.
CLI
Commands
Installing the package puts diagrams-so on your PATH. The longer
diagrams-so-mcp name still works, and npx @diagrams-so/mcp <command> works
without installing anything.
npm i -g @diagrams-so/mcp
diagrams-so login # connect this machine (a browser opens, press Approve)
diagrams-so whoami # which account is this machine connected as
diagrams-so logout # remove the local credential
diagrams-so install # print client config to pasteEnvironment
Var | Required | Default |
| ❌ | — (CI and headless only; |
| ❌ |
|
| ❌ |
|
| ❌ | — ( |
| ❌ | — (set to any value to stop |
| ❌ | — (set to any value to disable in-tool connect; unauthenticated tools then just say to run |
| ❌ | — (address for in-tool connect: the one-time sign-in code is emailed there; without it, unauthenticated tools say to run |
Add it to your MCP client
The published package runs straight from npm, so there is no path to fill in and no key in the
config. Run npx @diagrams-so/mcp install to print these blocks for your client.
Claude Code (CLI)
claude mcp add diagrams-so -- npx -y @diagrams-so/mcp
npx @diagrams-so/mcp loginClaude Desktop / Cursor (claude_desktop_config.json / mcp.json)
{
"mcpServers": {
"diagrams-so": {
"command": "npx",
"args": ["-y", "@diagrams-so/mcp"]
// optional: "env": { "DIAGRAMS_API_BASE": "http://localhost:8000/api/v2" } for a local API
}
}
}Connect either by running npx @diagrams-so/mcp login once, or, with DIAGRAMS_LOGIN_EMAIL
set, by asking for a diagram and following the link the first tool call gives you (the sign-in
code arrives by email). Set DIAGRAMS_API_KEY instead only for CI and headless machines,
where no browser can open.
Restart the client, then ask: "Generate an AWS 3-tier web app diagram and show me the warnings."
One-click install (MCPB)
Download diagrams-so.mcpb from the
latest release and drag it into
Claude Desktop. No terminal, and it no longer asks for an API key: install it, then connect on first
use by clicking the link the first tool call gives you.
Building the bundle yourself is a contributor step, see Developing locally.
Smithery
The server is listed at smithery.ai/servers/diagrams-so/mcp, which installs it for you and lists all 23 tools with their parameters:
npx -y smithery mcp add diagrams-so/mcpSame package, same login step. It's the MCPB bundle Smithery installs, not the npm package, so the
version shown there follows releases rather than npm dist-tags.
Verify it works
DIAGRAMS_API_KEY=dgz_live_your_key node test-smoke.mjsRuns the full flow (connect → list tools → whoami → generate → warnings → fix → export → error handling).
Continuous integration & releases
Workflow | Trigger | What it does |
CI ( | every push / PR |
|
Live smoke ( | nightly + manual | the full end-to-end flow ( |
Release ( | tag | build → |
Cut a release:
# bump "version" in package.json + manifest.json to match, commit, then:
git tag v1.2.0 && git push origin v1.2.0The tag must match package.json's version (the workflow enforces this). The
.mcpb bundle appears on the GitHub Release; manual workflow_dispatch produces
it as a downloadable artifact without publishing (handy for testing a bundle).
Repo secrets/variables (optional): DIAGRAMS_API_KEY (live smoke),
NPM_TOKEN (npm publish), DIAGRAMS_API_BASE variable (non-prod live-smoke target).
Notes
stdout is the MCP channel — the server logs only to stderr.
Errors come back as clean MCP tool errors carrying the API's
code, HTTP status, andrequest_id.The server never talks to internal services or the database — only the public
/api/v2.Long-running tools stay alive past client timeouts.
generate/edit/fix/relayout/enhance_prompt/clarify_promptemit anotifications/progressevery 10s while running, so MCP clients that reset their request timeout on progress (resetTimeoutOnProgress) won't abort a slow generation at the SDK's 60s default. If your client doesn't reset on progress, raise its per-call timeout for these tools.
Developing locally
Only needed if you are changing the server itself. Users should install from npm, see Quick start.
git clone https://github.com/RedHold/diagrams-mcp-app-core.git
cd diagrams-mcp-app-core
npm install # installs deps and builds dist/ via the prepare hook
node scripts/ci-smoke.mjs # all 23 tools register; no API calls, no credits
# point a client at your working copy
claude mcp add diagrams-so-dev -- node "$(pwd)/dist/index.js"
# build the MCPB bundle
npm run build && npx @anthropic-ai/mcpb packLicense and legal
Code: Apache-2.0. See NOTICE.
Service: this server is a client for the Diagrams.so API. Use of the API is governed by the Terms of Service and Acceptable Use Policy; the code license grants no rights to the API itself.
Privacy: the server runs locally, connects only to
api.diagrams.so, and contains no telemetry. Credentials fromloginare stored at~/.diagrams-so/credentials.jsonwith owner-only permissions. See the Privacy Policy.Billing: generate, edit, fix, re-layout, and fork operations cost credits; reads and exports are free. Test-mode keys bill your real credit balance.
Trademarks: Diagrams.so and the Diagrams.so logo are trademarks of RedHold LLC. This license does not grant permission to use them, except to accurately describe the package's origin. See the Trademark Policy.
Security: report vulnerabilities to security@diagrams.so per SECURITY.md.
Available Tools
23 toolsclarify_promptClarify a vague promptARead-only
Get 1–3 clarifying questions (and a suggested diagram type) for a vague prompt, before generating. Free.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | Your prompt |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description adds useful behavioral context: it returns 1–3 clarifying questions plus a diagram type, is intended to be called before generation, and is free. No contradiction with annotations; the description supplements them with output and sequencing details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with the key output details front-loaded. The added 'Free' is a useful behavioral note, and there is no wasted wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read-only tool with no output schema, the description adequately explains the return content (1–3 questions plus a diagram type), the count, and the intended timing. It is complete enough for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one required parameter with 100% description coverage, so the baseline is 3. The description only adds that the prompt is expected to be vague, which is marginal additional meaning beyond the schema's 'Your prompt'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and clearly identifies the resource: 1–3 clarifying questions and a suggested diagram type for a vague prompt. It also states the timing ('before generating'), which distinguishes it from generation-focused sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly indicates when to use the tool: for a vague prompt, before generating. It does not explicitly name alternatives or exclusions, but the 'before generating' context provides situational guidance relative to sibling tools like generate_diagram.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_diagramDelete a diagramADestructive
Delete (soft-delete) a diagram you own. It stops appearing in list_diagrams and can no longer be fetched. Confirm with the user before calling — this is destructive.
| Name | Required | Description | Default |
|---|---|---|---|
| diagram_id | Yes | The diagram id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, destructiveHint=true), the description explains the concrete consequences: soft-delete, removal from list_diagrams, and inability to fetch. It also emphasizes user confirmation, adding significant behavioral context that annotations alone do not provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action, and no redundant wording. The 'soft-delete' clarification and the destructive warning each add value without bloat.
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 delete operation with no output schema, the description covers the action, ownership prerequisite, behavioral effects, and safety warning. It does not specify return values, but the consequence is clearly stated, making it complete for typical usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 100% of the single parameter (diagram_id) with a clear description ('The diagram id'). The tool description adds no additional parameter semantics, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Delete'), resource ('diagram'), and adds the specific 'soft-delete' behavior and ownership constraint ('a diagram you own'). It does not explicitly differentiate from sibling tools like update_diagram or revert_diagram, which prevents a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says 'Confirm with the user before calling — this is destructive' and implies use only for owned diagrams, but it does not explicitly mention when NOT to use this tool or provide alternatives among the many siblings. Usage guidance is present but only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_diagramEdit a diagramA
Apply a natural-language change to an existing diagram (e.g. 'add a Redis cache'). Creates a new version and returns the updated XML. Costs credits. Confirm with the user before calling — it mutates the diagram.
| Name | Required | Description | Default |
|---|---|---|---|
| diagram_id | Yes | The id returned by generate_diagram / list_diagrams | |
| edit_prompt | Yes | The change to make, in plain language |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description adds key behavioral details: it creates a new version, returns updated XML, and costs credits. These are not inferable from readOnlyHint=false or destructiveHint=false alone. The description also clarifies that the tool mutates the diagram, which is consistent with the annotations (no contradiction).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and information-dense: a single opening sentence states the action and example, followed by two short sentences conveying versioning, XML return, credits, and user confirmation. Every sentence earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only 2 parameters and no output schema, the description covers the main expectations: it returns updated XML, creates a new version, and costs credits. It does not discuss failure modes or prerequisites, but for a straightforward edit tool the description is largely complete. The lack of differentiation from update_diagram is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% coverage for both parameters, including clear descriptions. The example 'add a Redis cache' in the tool description gives a hint about edit_prompt format, but does not add substantial meaning beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Apply a natural-language change to an existing diagram' with a concrete example. This makes the purpose specific and unambiguous. However, it does not explicitly differentiate from the sibling tool 'update_diagram', which likely serves a similar editing purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: natural-language edits, costs credits, and confirms with the user before calling. It also warns that it mutates the diagram. It does not explicitly mention alternatives or exclusions, but the 'confirm with user' instruction is an important guideline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
enhance_promptEnhance a promptCRead-only
Turn a rough idea into a detailed generation prompt. Free.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | Your rough prompt | |
| cloud_provider | No | aws | azure | gcp | kubernetes | oci | general — biases the enhanced prompt toward that provider's services |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, which the description does not contradict. However, the description adds no behavioral context beyond the purpose and the claim 'Free'; it does not disclose limitations, rate limits, or how the input is handled. With annotations covering safety, the description contributes minimal additional transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no redundant phrasing. The word 'Free' is somewhat unnecessary but does not detract. It is front-loaded with the core function, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with good schema coverage and a read-only annotation, but no output schema exists. The description does not explicitly state what the response contains, nor does it differentiate from the sibling 'clarify_prompt'. The implied return of an enhanced prompt is understandable but lacks detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with clear descriptions for both 'prompt' and 'cloud_provider', including allowed values. The description does not elaborate on parameter usage, but the schema already provides sufficient meaning, so a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Turn') and clearly identifies the resource ('rough idea' into 'detailed generation prompt'). It effectively conveys the tool's function, though it does not explicitly distinguish from the sibling tool 'clarify_prompt'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'clarify_prompt'. It does not state prerequisites, exclusions, or recommended contexts beyond the implied purpose of enhancing a rough prompt.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_diagramExport a diagramARead-only
Export a diagram as a raw file: drawio (open at app.diagrams.net) or svg. Returns the file content directly. Exports are free on every plan. Free-plan SVG exports carry a watermark.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | drawio or svg | drawio |
| diagram_id | Yes | The diagram id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description adds valuable behavioral details: it returns file content directly and warns that free-plan SVG exports carry a watermark. This goes beyond the schema and annotations, though it does not mention potential rate limits or authentication requirements, which are less critical for a read-only export tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences, front-loaded with the core purpose ('Export a diagram as a raw file'). Every sentence adds useful information: formats, return behavior, pricing, and watermark caveat. There is no fluff or redundancy, making it highly efficient for an agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with two well-documented parameters and no output schema, the description covers all essential aspects: what formats are supported, what the response contains, cost implications, and a critical watermark limitation. It is complete enough for an agent to select and invoke this tool without confusion.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already has 100% description coverage for both parameters, so the baseline is 3. The description enriches the `format` parameter by noting that `drawio` files are openable at app.diagrams.net and that SVG exports may have a watermark, adding value beyond the enum. The `diagram_id` parameter is not further elaborated, but the schema already describes it adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'export' with the resource 'a diagram' and specifies the output formats `drawio` and `svg`, distinguishing it from sibling tools like `get_diagram` or `generate_diagram`. It also clarifies the output type ('raw file') and return behavior, making the tool's purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: use this tool when you need a raw file export in drawio or svg format. It also notes that exports are free and free-plan SVG exports carry a watermark, which informs usage decisions. However, it does not explicitly state when not to use it or name alternatives such as `get_diagram` for structured content, so it falls 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.
fix_warningFix one warningA
Resolve a single Well-Architected warning (from get_warnings), leaving the rest of the diagram untouched. Creates a new version. Costs credits.
| Name | Required | Description | Default |
|---|---|---|---|
| message | Yes | The warning's `message` (as returned by get_warnings) | |
| component | No | The warning's `component`, if any | |
| diagram_id | Yes | The diagram id | |
| warning_type | No | The warning's `type`, e.g. no_encryption_transit |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, destructiveHint=false), the description discloses that the tool 'Creates a new version' and 'Costs credits', which are significant behavioral side effects critical for an agent to know before invoking it. This adds substantial value.
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?
Three short, focused sentences: the main action, the side effect on versions, and the cost. No unnecessary words, and the key information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the essential aspects: targeted scope, version creation, and cost, which are sufficient for a mutation tool. It could mention the return value or failure modes, but given the tool's simplicity and annotations, it is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes all four parameters with 100% coverage, including the mapping to get_warnings fields. The description does not add additional parameter meaning, so it stays at the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Resolve' targeting a 'Well-Architected warning' and adds the constraint 'single' and 'leaving the rest of the diagram untouched', which clearly distinguishes it from broader diagram-editing tools like edit_diagram or update_diagram.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context for use: fixing a single warning from get_warnings, implying it is the targeted alternative to broader diagram edits. However, it does not explicitly name alternatives or state when not to use it, so it falls 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.
fork_templateFork a public diagramA
Copy a PUBLIC gallery diagram or curated library template into your own account (private) so you can edit it. Returns the new diagram id.
| Name | Required | Description | Default |
|---|---|---|---|
| diagram_id | Yes | A public/library diagram id from search_gallery |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate the tool is mutating (readOnlyHint false) but not destructive (destructiveHint false). The description adds meaningful context beyond annotations: it specifies the operation creates a private copy, returns the new diagram id, and the source type (public gallery/curated template). This clarifies the non-destructive mutation behavior without contradicting annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, perfectly front-loaded with the action ('Copy a PUBLIC gallery diagram or curated library template'), followed by destination, purpose, and return value. Every clause adds value with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with no output schema, the description covers the essential operation, source, destination, and return value. It does not mention edge cases like invalid IDs or permissions, but these are not critical for basic usage. The presence of annotations and a clear schema make this sufficiently complete, though a 5 would require more detail on failure modes or usage prerequisites.
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 for the single parameter is 100% (diagram_id is described as 'A public/library diagram id from search_gallery'), so baseline is 3. The description does not add much beyond the schema—it merely reiterates the source type. No additional semantic richness is provided, so a 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb 'Copy' and resource 'public gallery diagram or curated library template', with the destination ('into your own account (private)') and purpose ('so you can edit it'). This distinguishes it from sibling tools like generate_diagram (create new), edit_diagram (modify existing), and import_diagram (likely external import), making the purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: it's for copying a public/library diagram into a private account for editing. It implies usage after search_gallery (as stated in the schema) but does not explicitly name alternatives or state when not to use it. The context is strong enough to guide selection, but lacks explicit exclusions compared to a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_diagramGenerate a diagramA
Create a new cloud architecture diagram from a natural-language prompt. Returns the diagram id, its draw.io XML, Well-Architected warnings, score, and credits used. Costs credits.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | What to draw, e.g. 'AWS 3-tier web app with ALB, EC2 Auto Scaling and RDS Multi-AZ' | |
| opinionated | No | Apply best-practice hardening suggestions during generation (paid plans only). | |
| diagram_type | No | architecture | flowchart | sequence | data_pipeline | ... (default: architecture) | |
| cloud_provider | No | aws | azure | gcp | kubernetes | oci | general (default: general) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already clarify readOnlyHint=false and destructiveHint=false. The description adds valuable non-obvious context: 'Costs credits' and the exact return payload (id, XML, warnings, score, credits used). It does not elaborate on persistence or side effects beyond generation, but this is sufficient given annotations cover the mutation/destruction profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, immediately front-loaded with the core action, and every phrase earns its place: what it creates, the input type, the returned data, and the cost. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 4 parameters (1 required) and no output schema, the description does a good job explaining the return format and cost. It does not explicitly state whether the diagram is saved/persisted (relevant for later retrieval via get/list tools), which is a minor gap. Overall, it conveys enough for an agent to invoke the tool and interpret the response.
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 all four parameters have meaningful descriptions within the schema itself. The tool description adds no additional parameter-level information beyond what the schema provides; it only frames the prompt as natural-language, which is already present. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Create a new cloud architecture diagram from a natural-language prompt') and identifies the resource and method. It distinguishes itself from sibling tools like edit_diagram, update_diagram, and delete_diagram by emphasizing creation from a prompt, and it lists concrete outputs (diagram id, XML, warnings, score, credits used).
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 'Create a new' provides clear context that this tool is for initial generation, not modification or deletion. However, it does not explicitly name alternatives (e.g., 'use edit_diagram to modify'), so it lacks explicit exclusions. This fits a 'clear context, no exclusions' level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_diagramGet a diagramARead-only
Fetch a diagram by id — returns its title, draw.io XML, and Well-Architected score.
| Name | Required | Description | Default |
|---|---|---|---|
| diagram_id | Yes | The diagram id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already signals a safe read operation. The description adds the specific return fields but doesn't disclose additional behaviors like error handling or not-found cases. Given annotation coverage, a score of 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, information-dense sentence that front-loads the action and resource. Every word contributes to understanding the tool's purpose and return value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple fetch operation, the description covers the essentials: what is fetched and what is returned. No output schema exists, so explaining return values is necessary and done well. It could mention error behavior but that's not critical for this basic get 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 100% and the schema already describes diagram_id as 'The diagram id'. The description's 'by id' adds no further semantic detail, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Fetch'), the resource ('a diagram by id'), and the specific return contents ('title, draw.io XML, and Well-Architected score'). This distinguishes it from sibling tools like get_warnings or get_version, which target different 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 description clearly implies using this tool to retrieve a diagram's full content by its ID. It doesn't explicitly exclude alternatives or mention when not to use it, but the straightforward purpose and sibling differentiation provide clear context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_relayout_statusPoll a re-layout jobARead-only
Check the status of an async re-layout job started by relayout_diagram. Returns pending/done/failed; when done+applied it includes the re-laid XML + fresh warnings/score. Free.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | The job_id returned by relayout_diagram | |
| diagram_id | Yes | The diagram id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description discloses the possible statuses (pending/done/failed), the conditions for including re-laid XML and warnings/score, and that it is free. This adds meaningful behavioral context though it doesn't mention error handling or polling intervals.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose, and every phrase adds value. It efficiently covers what the tool does, outcomes, and a billing note without padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple polling tool with read-only annotations and no output schema, the description sufficiently covers the typical statuses and data returned when complete. It does not mention potential errors or caveats, but the scope is small and the essentials are 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 input schema already documents both parameters (job_id and diagram_id) with clear descriptions, and schema coverage is 100%. The tool description adds little beyond referencing job_id as returned by relayout_diagram, so the schema carries the burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: checking the status of an async re-layout job started by relayout_diagram. It specifies the resource (re-layout job) and the action (check status), distinguishing it from sibling tools like get_diagram or relayout_diagram.
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 clear usage: use this tool after starting a re-layout with relayout_diagram, passing the returned job_id. It does not explicitly list when not to use it, but the context is unmistakable and adequate for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_usageGet usage & creditsARead-only
Show your current plan, credits remaining, and per-action cost estimates. Free.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint already communicates that this is a safe read operation. The description adds 'Free' and specifies the output areas (plan, credits, cost estimates), but it does not disclose deeper behavior such as response format or rate limits. This is acceptable for a simple read-only tool, but it does not go beyond annotations significantly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the action and delivers all necessary information with no wasted words. 'Free' is an extra useful trait that justifies its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only tool without an output schema, the description covers the core information: what the tool returns (plan, credits, per-action cost estimates). It does not explain the return format, but that is less critical here. A minor gap is the lack of differentiation from get_usage_history, but the tool's simplicity keeps it complete enough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema covers 100% of the parameter space (an empty object). The description adds no parameter-level detail, but none is needed. The baseline for zero parameters is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Show') and clearly identifies the resource: current plan, credits remaining, and per-action cost estimates. It also implicitly distinguishes itself from the sibling get_usage_history by focusing on current usage rather than historical 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 description provides clear context for when to use this tool (checking current usage and credits), but it does not explicitly mention alternatives or exclusions. Since the sibling get_usage_history exists, a brief 'for history, see get_usage_history' would have earned a 5, but the current wording is still clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_usage_historyCredit consumption historyARead-only
List how much credit each past task (generate/edit/fix/relayout) charged — newest first, with the diagram it touched and the surface (api/sdk/mcp) that ran it. Use this to answer 'how much did each task cost?'. Also shows a running tally of tasks performed in THIS session. Free (read-only).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max rows to return (default 20). | |
| since | No | ISO-8601 lower bound (inclusive). | |
| until | No | ISO-8601 upper bound (exclusive). | |
| action | No | Filter to one task type. | |
| cursor | No | Pagination cursor from a previous call's next_cursor. | |
| source | No | Filter to one surface. | |
| diagram_id | No | Only tasks that touched this diagram. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description adds behavioral details: newest-first ordering, inclusion of diagram and surface, and the session-scoped running tally. It also states 'Free (read-only)', reinforcing safety without contradicting annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences with no filler. It front-loads the primary function, provides a direct use case, and adds a key additional detail about the session tally, all in a compact structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main purpose, returned fields (credit, diagram, surface, session tally), and ordering. With no output schema, it compensates well, though it could mention pagination or the specific return shape. The schema covers parameters, so the description is sufficiently complete for invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all 7 parameters. The description adds context for action, source, and diagram_id by mentioning task types and surfaces, but doesn't explain limit, since, until, or cursor beyond the schema. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'List how much credit each past task charged' with ordering, diagram, and surface details. It distinguishes itself from siblings like get_usage by emphasizing per-task history, not total usage.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a concrete use case: 'Use this to answer "how much did each task cost?"' and mentions the session tally. However, it doesn't explicitly mention when not to use it or direct users to alternative tools such as get_usage for overall consumption.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_versionGet a diagram versionARead-only
Fetch a specific version's XML + Well-Architected score (e.g. to inspect before reverting). Free.
| Name | Required | Description | Default |
|---|---|---|---|
| diagram_id | Yes | The diagram id | |
| version_id | Yes | The version id (from list_versions) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already covers safety, and the description adds that it returns XML + score and is 'Free', which are useful behavioral traits. It does not describe the exact return format or error behavior, but the additions go beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with an optional parenthetical example and a separate one-word sentence 'Free.' Every word adds value and there is no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with two parameters and no output schema, the description fully covers what the tool returns, why to use it, and the cost (Free). The sibling context and schema round out the needed information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for both parameters, so the baseline is 3. The description does not add extra parameter-level detail beyond the schema, but the schema itself already describes each parameter adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fetches a specific version's XML and Well-Architected score, using the verb 'fetch' with a specific resource. It distinguishes from siblings like list_versions and revert_diagram by specifying the exact output and use case.
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 'e.g. to inspect before reverting' provides a concrete usage scenario, implicitly guiding the agent to use this tool for pre-revert inspection. It doesn't explicitly exclude alternatives, but the example is clear enough for simple read-only context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_warningsGet Well-Architected warningsARead-only
List the Well-Architected findings for a diagram (each has type, component, message). Free.
| Name | Required | Description | Default |
|---|---|---|---|
| diagram_id | Yes | The diagram id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already declares this as a safe read operation, lowering the burden. The description adds useful context by noting the return structure (type, component, message) and the word 'Free,' which may indicate no cost or no restriction. It does not contradict the annotation and provides a bit more behavioral context beyond the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one concise sentence that gets straight to the point. The extra 'Free' is a minor addition but does not detract. There is no unnecessary verbosity, and the key information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter, no output schema, and a read-only annotation, the description fully covers the essential aspects: what it lists and what each item contains. It does not need to explain return values in more detail since the fields are listed. The description is sufficient for an agent to know what to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema fully documents the only parameter (diagram_id) with a description ('The diagram id'), achieving 100% coverage. The description does not add any parameter-specific meaning beyond the schema, which is the baseline for full schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('List') and resource ('Well-Architected findings for a diagram'), and it specifies what each finding contains (type, component, message). This makes it distinct from siblings like fix_warning, which modifies warnings, and get_diagram, which retrieves the diagram itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: to retrieve warnings for a diagram. However, it does not explicitly mention when to use this tool versus alternatives, such as fix_warning for addressing warnings, nor does it state any prerequisites or exclusions. This is acceptable but lacks explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_diagramImport a diagramA
Import an existing draw.io (mxGraphModel/mxfile) XML document as a new diagram in your account. Validated and sanitized. Free (no AI).
| Name | Required | Description | Default |
|---|---|---|---|
| xml | Yes | draw.io mxGraphModel/mxfile XML | |
| title | No | Optional title (derived if omitted) | |
| diagram_type | No | architecture | flowchart | ... (default: architecture) | |
| cloud_provider | No | aws | azure | gcp | ... (default: general) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=false, so the agent knows it's a write that is not destructive. The description adds 'Validated and sanitized' which is useful behavioral context about input processing, and 'Free (no AI)' clarifies cost/processing traits. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the main purpose, and each sentence provides distinct value: the first explains what the tool does, the second adds validation and cost details. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a moderately simple import tool with 4 parameters fully described in schema and no output schema, the description covers the core behavior and safety profile. It does not mention error handling or file size limits, but these are not essential for an agent to correctly invoke the tool given the schema. The context signals and siblings help further, and the description adequately positions this tool relative to them.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters with clear descriptions (xml, title, diagram_type, cloud_provider). The description's mention of 'draw.io mxGraphModel/mxfile XML' reinforces the xml parameter but adds no new meaning beyond the schema. Baseline of 3 is appropriate given high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Import'), a specific resource ('draw.io (mxGraphModel/mxfile) XML document'), and the outcome ('as a new diagram in your account'). This clearly distinguishes it from siblings like generate_diagram or edit_diagram, which focus on creation or modification rather than importing existing XML.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool: when a user has an existing draw.io XML document to bring into the account. It also notes 'Free (no AI)' which hints at a non-AI alternative to generate_diagram. However, it does not explicitly name alternatives or list when-not-to-use conditions, so there is room for a more explicit exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_capabilitiesList capabilitiesARead-only
Discover the valid diagram types, cloud providers, and export formats the API supports — so you pass valid values to generate_diagram / export_diagram. Free.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description adds 'Free' and the specific informational content returned. While it doesn't disclose rate limits or other edge behaviors, the combination of annotations and description covers the safety profile adequately for a simple discovery endpoint.
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 that states purpose, content, and usage context without any unnecessary words. Every part earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simple read-only nature, zero parameters, and no output schema, the description fully covers what an agent needs: what the tool returns and why to call it. Nothing important is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema fully covers parameter semantics. The description adds no parameter detail, but none is needed. Baseline for 0 params is 4, which is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Discover' and clearly defines the resource: 'valid diagram types, cloud providers, and export formats'. It also distinguishes itself from siblings by explicitly naming generate_diagram and export_diagram as tools that depend on this capability.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool: 'so you pass valid values to generate_diagram / export_diagram'. This gives clear context for invocation. It doesn't mention when not to use it, but the tool's unique purpose makes alternatives unlikely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_diagramsList my diagramsARead-only
List your diagrams (newest first, cursor-paginated). Returns id, title, cloud, type.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Page size (default 20) | |
| cursor | No | next_cursor from a previous call |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=true in annotations, the description adds value by disclosing pagination behavior (newest first, cursor-paginated) and the return shape (id, title, cloud, type). It does not contradict the annotation and provides useful behavioral context beyond what the annotation already conveys.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the action and includes essential details (ordering, pagination, returned fields) without any filler. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple listing tool with two optional parameters and no output schema, the description is complete: it explains the scope ('your diagrams'), ordering, pagination, and return fields. The readOnlyHint annotation covers safety, and the schema covers parameter details, so nothing important is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides full coverage (100%) with clear descriptions for both parameters (limit as page size with default, cursor as next_cursor from previous call). The description only mentions 'cursor-paginated', which adds no new semantics beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('List') and resource ('your diagrams'), and distinguishes it from sibling tools like get_diagram by indicating it returns multiple diagrams. It also specifies ordering and returned fields, leaving no ambiguity about the tool's function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by saying 'List your diagrams', but does not explicitly state when to use this tool versus alternatives such as get_diagram or list_versions. There is no mention of exclusions or specific contexts where a different tool would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_versionsList diagram versionsARead-only
List a diagram's version history (ascending; is_current marks the live one). Use with revert_diagram / get_version.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Page size (default 20) | |
| cursor | No | next_cursor from a previous call | |
| diagram_id | Yes | The diagram id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already declares this as a safe read operation. The description adds value by disclosing the ascending order and the `is_current` field, but does not discuss pagination behavior (like defaults or cursor usage) which could be relevant for large histories. This is sufficient for a read-only list tool with schema coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, immediately states the core purpose, and includes only essential extra information (order, is_current, related tools). Every word contributes meaning, with no fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with a fully documented schema and a readOnlyHint annotation, the description adequately covers the return characteristics (ascending, is_current) and intended companion tools. It would be incomplete if output schema were absent, but the description still conveys the key return field (`is_current`) and ordering, which is sufficient for this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all three parameters (diagram_id, limit, cursor). The description does not add additional parameter-level semantics beyond the schema, such as examples or edge cases, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'List a diagram's version history'. It also distinguishes itself from siblings by noting the ascending order and `is_current` marker, which makes it clear this is about the full history rather than a single version (get_version) or mutation (revert_diagram).
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 'Use with revert_diagram / get_version' provides clear context on how this tool fits into a workflow, implying it is for inspecting history before reverting or fetching a specific version. It does not explicitly state when NOT to use it or name alternatives for other scenarios, but the pairing gives strong usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
relayout_diagramRe-arrange layout with AIA
Automatically re-arrange a diagram's layout for readability (async). Starts the job and waits for it to finish, returning the re-laid XML + fresh warnings/score. Every re-layout costs credits based on the tokens it uses (like edit/fix) and requires confirm=true. If the job is still running when the wait elapses, returns a job_id you can poll with get_relayout_status.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Consent to the token-based charge (required to start). | |
| diagram_id | Yes | The diagram id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes far beyond the readOnlyHint/destructiveHint annotations by disclosing the async nature, token-based credit cost, confirm=true requirement, return payload (XML + warnings/score), and fallback to a job_id for polling. This substantially enriches the agent's understanding of the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences with no fluff, starting with the core purpose, then covering async behavior, cost, confirmation, and polling. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (async job, credit cost, polling), the description fully covers the operational flow, return contract, and points to the relevant sibling tool for status. With no output schema, the description appropriately explains what the agent should expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with both parameters already described (diagram_id and confirm). The description reiterates the confirm requirement but adds no new parameter-level details beyond what the schema's property descriptions already provide, so the schema carries the semantic load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool re-arranges a diagram's layout for readability, using a specific verb and resource. It distinguishes itself from editing or updating content by focusing on layout and mentions the async job behavior and return values.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context for use: improving layout, async execution, credit cost, and confirmation requirement. It also refers to get_relayout_status for polling when jobs are still running, but it does not explicitly state when not to use this tool versus other diagram tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revert_diagramRevert to a versionA
Revert a diagram to an earlier version (from list_versions). Pass either version_id or version_number. Free (no AI).
| Name | Required | Description | Default |
|---|---|---|---|
| diagram_id | Yes | The diagram id | |
| version_id | No | The version's id (from list_versions) | |
| version_number | No | Or the version number, e.g. 2 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=false; description adds the 'Free (no AI)' cost note and clarifies the version source, but does not describe post-revert behavior like whether a new version is created or if the current version is overwritten. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences that are front-loaded with the action; includes only essential usage and cost information with no redundant elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple mutation tool with two optional parameters and an explicit either/or rule, the description provides enough context to select and invoke it correctly; however, it does not mention expected return value or post-revert state, but no output schema is present so this is not strictly required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers all parameters with descriptions (100% coverage); description adds the exclusive 'either version_id or version_number' constraint which is not encoded in schema, clarifying that exactly one of these should be provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Uses specific verb 'revert' with resource 'diagram' and references list_versions as source; clearly distinguishes from sibling tools like get_version and list_versions by its mutating action.
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?
States 'from list_versions' guiding the prerequisite step and 'Pass either version_id or version_number' specifying parameter usage; doesn't explicitly mention when not to use it or name alternatives, but the context implies it is for undo/restore operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_gallerySearch the galleryARead-only
Search public community diagrams and curated library templates to reuse as a starting point. Returns id, title, and source (community/library). Fork one with fork_template.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Search text (matches title/description) | |
| limit | No | Page size (default 20) | |
| cursor | No | next_cursor from a previous call (community feed is paginated) | |
| source | No | all (default) · community · library | |
| diagram_type | No | Filter by diagram type | |
| cloud_provider | No | Filter by provider |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already covers safety, so the description's main contribution is specifying the scope (public community and library templates) and the result shape (id, title, source). This adds useful behavioral context beyond the annotation without contradicting it. No rate limits or auth details, but for a read-only search tool, that is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the verb and resource, and every word earns its place. It covers purpose, return values, and a follow-up action with zero filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the six optional parameters and no output schema, the description provides a clear summary of the return value (id, title, source), which is helpful. It could improve by hinting at pagination or filter options, but the schema covers those details. The mention of fork_template adds context for how the result should be used. Slightly incomplete but sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains all six parameters. The description adds a small amount of semantic value by indicating that results are categorized by 'community/library', which aligns with the 'source' parameter, and by mentioning the returned fields. It does not elaborate on filters or pagination, but that is already in the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the action ('Search') and the resource ('public community diagrams and curated library templates'), and distinguishes it from sibling tools by stating its purpose: finding reusable starting points. It also mentions the key returned fields (id, title, source) and connects to fork_template, leaving no ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'to reuse as a starting point' gives clear context for when to use this tool. The mention of 'Fork one with fork_template' explicitly directs the user to a follow-up tool, implying this is the search step before forking. However, it does not explicitly state when not to use this tool or name alternatives for community vs library sources, so it falls slightly 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.
update_diagramUpdate a diagramA
Update a diagram's metadata or XML: rename it, change visibility (public/private — paid plans for private), or replace its XML. Pass only the fields you want to change. Free (no AI).
| Name | Required | Description | Default |
|---|---|---|---|
| xml | No | Replace the diagram XML (validated + sanitized) | |
| title | No | New title | |
| is_public | No | true = public in the gallery, false = private (paid) | |
| diagram_id | Yes | The diagram id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond annotations by noting private visibility requires a paid plan and the tool is free (no AI). Annotations only indicate readOnly=false and destructive=false, so the description enriches understanding of prerequisites and side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short sentences, each providing distinct value: capabilities, usage instruction, and cost/restriction. It is front-loaded with the main purpose and contains no redundant text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers key aspects: update types, partial update semantics, paid restriction for private, and no-AI caveat. It does not mention return values, but with no output schema, this is acceptable. Sufficiently complete for a simple update 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?
The description maps semantic actions (rename, change visibility, replace XML) to specific parameters and clarifies partial updates. Although schema descriptions cover all parameters, the description reinforces optionality and usage intent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool updates a diagram's metadata or XML, enumerating rename, visibility change, and XML replacement. It uses a specific verb 'update' with resource 'diagram', but does not explicitly distinguish from sibling tools like edit_diagram.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context on supported actions and instructs to 'Pass only the fields you want to change,' implying partial updates. It does not explicitly mention when to use this tool instead of alternatives, but does not mislead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
whoamiWho am IARead-only
Show the account, plan, scopes, and live/test mode of the configured API key. Free.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description discloses the specific data returned (account, plan, scopes, live/test mode) and adds a cost-related trait ('Free'). This provides meaningful context about behavior and output, exceeding minimal annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one concise sentence plus 'Free.'—no fluff. The core action and output are front-loaded, making it highly scannable and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no params, no output schema, readOnly annotation), the description fully explains what the tool does and what it returns. It lists all key output fields and the cost aspect, making it complete for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. There is no parameter information to add, and the description appropriately focuses on the tool's output rather than any input semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Show the account, plan, scopes, and live/test mode of the configured API key.' It uses a specific verb ('Show') and resource, and it distinguishes itself from sibling tools, none of which focus on identity/configuration.
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 as a diagnostic tool for checking API key configuration, and the 'Free' note hints at no cost. However, it does not explicitly state when to use this tool versus alternatives or provide exclusions. For a simple zero-parameter tool, the context is clear but not explicitly guided.
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 tool update
v1.4.5- Changed
enhance_prompt1 field changed- added
Input schema / properties / cloud_provider / descriptionAdded value: +"aws | azure | gcp | kubernetes | oci | general — biases the enhanced prompt toward that provider's services"
23 tool updates
v1.4.1- First observed
clarify_prompt - First observed
delete_diagram - First observed
edit_diagram - First observed
enhance_prompt - First observed
export_diagram - First observed
fix_warning - First observed
fork_template - First observed
generate_diagram - First observed
get_diagram - First observed
get_relayout_status - First observed
get_usage - First observed
get_usage_history - First observed
get_version - First observed
get_warnings - First observed
import_diagram - First observed
list_capabilities - First observed
list_diagrams - First observed
list_versions - First observed
relayout_diagram - First observed
revert_diagram - First observed
search_gallery - First observed
update_diagram - First observed
whoami
TDQS
Scored across 23 tools
Each tool targets a distinct object/action: diagram CRUD vs versioning vs warnings vs relayout vs gallery vs usage/prompt helpers. Although update_diagram and edit_diagram are near-synonyms, their descriptions distinguish direct metadata/XML changes from AI natural-language edits, so an agent should not confuse them.
Almost all names are snake_case verb_noun pairs (list_diagrams, get_version, fork_template, list_capabilities), with whoami as the only notable deviation from the object-bearing pattern. This is a minor exception to an otherwise consistent convention.
At 23 tools this sits in the 16-25 range that feels heavy; the API covers many subdomains (diagram lifecycle, AI generation, warnings, relayout, gallery, usage) but several helper tools (whoami, get_usage, get_usage_history, clarify_prompt, enhance_prompt) could arguably be consolidated. Still, most tools map to a distinct operation.
The set covers the full diagram lifecycle: create (generate/import/fork), read (get/list), update (update/edit), delete, revert, version history, export, and warnings. There are no obvious dead ends; prompt helpers and usage tracking round out the workflow.
Maintenance
Related MCP Connectors
Render, verify, describe, and safely edit Mermaid diagrams through MCP.
Collaborative whiteboard MCP server — create objects, connectors, C4 diagrams, and manage boards
An MCP server that provides an API to LLMs to manage their JumpCloud resources.
An MCP server that provides read access to your cloud storage providers, bank accounts and more.
Related MCP Servers
- AlicenseAqualityDmaintenanceAn MCP server that generates professional infrastructure diagrams using the Python diagrams DSL, with first-class Azure support and GitHub Copilot integration for natural language diagram generation.4MIT
- AlicenseBqualityBmaintenanceMCP server that enables LLMs to create and edit draw.io diagrams using high-level intent commands, with automatic layout and styling.46 npm4MIT
- AlicenseAqualityAmaintenanceMCP server for creating and editing diagrams using draw.io. Allows generating diagrams from Mermaid or XML, searching shapes, and opening them in draw.io for export.20Apache 2.0
- AlicenseNot gradedqualityAmaintenanceMCP server for generating architecture diagrams with official vendor icons from natural language descriptions. Provides tools to validate specs, render diagrams, search icon catalog, and list available services.3MIT