Skip to main content
Glama

See what stays editable

This is not a screenshot pasted into a diagram. Containers, labels, icons, shapes, connector endpoints, ports, and waypoints remain separate native mxCell objects. Assets are embedded inside the .drawio file, so the result remains portable and editable offline.

IMPORTANT

DrawArch does not call another LLM and does not require a second LLM API key. ChatGPT, Claude, Codex, Cursor, or another vision-capable MCP host analyzes the request or image and supplies the scene graph.

Related MCP server: diagram-ai-generator

What DrawArch gives you

Capability

What it means

🧩

Native editability

Move, restyle, relabel, reconnect, or delete individual objects in diagrams.net.

🎯

Reference recreation

Rebuild an attached architecture image with absolute geometry, layers, z-order, ports, and waypoints.

🌐

Real-world assets

Use bundled icons, Iconify-compatible icons, user images, or approved HTTPS image sources.

📦

Portable artifacts

The generated .drawio is returned directly through MCP with all image assets embedded.

🔐

Approval-aware rendering

Immutable plan revisions and revision-bound approval tokens prevent stale or unreviewed renders.

Validation built in

Check Draw.io structure, references, asset safety, and structural coverage before accepting output.

Reference-image recreation

Attach an architecture image to your MCP host and ask:

Recreate this image with DrawArch. Preserve its layout, labels, icons, grouping, and connector routing. Keep every visible object editable and use real icons where appropriate.

The host and DrawArch then follow a reviewable four-step loop:

  1. Prepare — the host vision model calls prepare_reference_recreation with a typed absolute scene graph.

  2. Review and approve — the user or host policy reviews layout and online asset sources; approval is bound to that exact revision.

  3. Createcreate_reference_drawio safely resolves and embeds assets, renders native cells, validates the file, and returns the .drawio resource.

  4. Compare and revisecompare_reference_recreation measures structural coverage; the host adjusts the plan and repeats when needed.

flowchart LR
    A[Prompt or<br/>reference image] --> B[Vision-capable<br/>MCP host]
    B -->|typed scene graph| C{DrawArch MCP}
    C --> D[Plan revision<br/>& approval]
    D --> E[Safe asset<br/>resolver]
    E --> F[Native Draw.io<br/>renderer]
    F --> G[Validation &<br/>comparison]
    G -->|portable resource| H[Editable<br/>.drawio file]
    G -. revise .-> B

In plain terms: your existing AI analyzes the image; DrawArch turns that analysis into a controlled, validated, editable file. The complete contract is demonstrated in examples/reference-recreation.json.

Why not just generate an image?

Requirement

DrawArch

Flat image generation

Edit individual components

Reattach and reroute connectors

Preserve explicit IDs and hierarchy

Work offline after generation

Usually

Validate structure automatically

Recreate with real embedded icons

Inconsistent

Iterate through a reviewable plan

Guarantee pixel-identical output

No — host-guided iteration

No

DrawArch optimizes for high-fidelity, editable reconstruction, not an opaque pixel replica. The host vision model can inspect the result, update geometry or styling, and render another immutable revision.

Quick start

Requires Node.js 20+ or Docker.

Run from npm

npx -y drawarch-mcp@0.2.0

DrawArch uses stdio by default. Diagnostics go to stderr, preserving stdout for MCP messages.

Add it to a local MCP host

{
  "mcpServers": {
    "drawarch": {
      "command": "npx",
      "args": ["-y", "drawarch-mcp@0.2.0"],
      "env": {
        "DRAWARCH_OUTPUT_DIR": "/absolute/path/to/diagrams",
        "DRAWARCH_ONLINE_ASSETS": "false"
      }
    }
  }
}

On Windows hosts that do not resolve npx directly, set command to npx.cmd. You can also use the source checkout and configure an absolute dist/src/index.js path.

Run from source

git clone https://github.com/Ajey95/drawarch-mcp.git
cd drawarch-mcp
npm ci
npm test
npm run build

Then configure your host:

{
  "mcpServers": {
    "drawarch": {
      "command": "node",
      "args": ["/absolute/path/to/drawarch-mcp/dist/src/index.js"],
      "env": {
        "DRAWARCH_OUTPUT_DIR": "/absolute/path/to/diagrams"
      }
    }
  }
}

Run the published container

docker run --rm -p 3000:3000 \
  -e DRAWARCH_API_KEY=replace-with-a-long-random-secret \
  -e DRAWARCH_APPROVAL_SECRET=replace-with-another-random-secret \
  -e DRAWARCH_ALLOWED_HOSTS=localhost,127.0.0.1 \
  -e DRAWARCH_ALLOWED_ORIGINS=localhost,127.0.0.1 \
  -v drawarch-data:/data \
  ghcr.io/ajey95/drawarch-mcp:0.2.0

The container runs Streamable HTTP on http://localhost:3000/mcp. Its public health probe is GET /health; MCP and file downloads require the configured bearer token.

Local and remote hosts

Host type

Recommended transport

Notes

Claude Desktop / Claude Code

stdio or remote HTTP

Local stdio is simplest; remote connectors can use /mcp.

Codex / Cursor / VS Code

stdio or remote HTTP

Use local stdio for per-developer output or a shared authenticated service.

ChatGPT

remote Streamable HTTP

ChatGPT cannot spawn the local stdio process; deploy the container behind HTTPS first.

CI and team services

Streamable HTTP

Set bearer auth, stable approval secret, exact host/origin allowlists, TLS, and a persistent output volume.

DrawArch currently provides the deployable server and public container, not a managed hosted endpoint. Operators supply the HTTPS domain and infrastructure.

MCP tools

Architecture generation

Tool

Purpose

list_themes

List six built-in visual themes.

list_assets

Search the bundled real-world icon catalog.

resolve_asset

Resolve a bundled or opt-in online SVG with provenance.

create_drawio

Generate a deterministic themed architecture diagram.

validate_drawio

Validate a generated architecture file.

Reference recreation

Tool

Purpose

prepare_reference_recreation

Store an absolute editable scene graph and optionally approve its sources.

update_reference_plan

Create an immutable next revision and invalidate earlier approvals.

get_reference_plan

Read the latest scene-graph revision for review.

create_reference_drawio

Render an approved plan and return the portable .drawio artifact.

validate_reference_drawio

Validate native structure, references, and embedded-image safety.

compare_reference_recreation

Score structural coverage and report missing editable elements.

Asset and security model

Reference plans support four asset modes:

Mode

Source

Server opt-in required?

bundled

Original MIT-licensed DrawArch SVG catalog

No

online

Iconify-compatible icon query

Yes

data

User-provided SVG, PNG, JPEG, or WebP data URI

No

remote

Explicit approved HTTPS image URL

Yes

Remote image handling rejects URL credentials, non-HTTPS protocols, custom ports, private or reserved DNS answers, unsafe redirects, excessive byte/pixel sizes, and active SVG content. Raster images are decoded and re-encoded before embedding. Online assets retain provider and license metadata; users remain responsible for verifying third-party license terms.

HTTP deployments additionally support bearer authentication, host validation, origin validation, safe output paths, atomic writes, and revision-bound HMAC approval tokens. See SECURITY.md for deployment guidance and vulnerability reporting.

Variable

Default

Meaning

DRAWARCH_TRANSPORT

stdio

Select stdio or http.

DRAWARCH_OUTPUT_DIR

.drawarch-output

Restricted output and plan-storage directory.

DRAWARCH_ONLINE_ASSETS

false

Enable opt-in online and remote image sources.

DRAWARCH_ICONIFY_BASE_URL

Iconify API

HTTPS Iconify-compatible provider base URL.

HOST

127.0.0.1

HTTP bind host.

PORT

3000

HTTP listener port.

DRAWARCH_API_KEY

unset

Bearer token for /mcp and /files; required for internet exposure.

DRAWARCH_APPROVAL_SECRET

random per process

HMAC secret for approvals; set a stable secret for shared deployments.

DRAWARCH_ALLOWED_HOSTS

local hosts

Comma-separated accepted Host values.

DRAWARCH_ALLOWED_ORIGINS

local origins

Comma-separated accepted Origin hosts.

DRAWARCH_PUBLIC_BASE_URL

listener URL

Public base URL reported by the server.

Development

npm ci
npm test                    # 83 tests at the 0.2.0 release
npm run build
npm run sample
npm audit --audit-level=high
npm pack --dry-run

The CI matrix verifies Node 20 and 22 on Windows and Linux and builds the production Docker image. Read docs/ARCHITECTURE.md for component boundaries and security flow.

Project status

Channel

Status

Source

Public on GitHub

Release

v0.2.0

Container

ghcr.io/ajey95/drawarch-mcp:0.2.0

npm

drawarch-mcp@0.2.0

Official MCP Registry

io.github.Ajey95/drawarch@0.2.0

Managed remote service

Not currently offered

Roadmap

  • Expand the curated architecture asset catalog and provider metadata.

  • Add preview rendering for tighter host-guided visual comparison loops.

  • Add pixel-aware comparison as a complement to structural scoring.

  • Add installation recipes for more MCP hosts and community catalogs.

  • Provide repeatable deployment recipes for common container platforms.

Ideas and focused pull requests are welcome. Please open an issue before starting a large behavior or contract change.

Contributing

Read CONTRIBUTING.md, follow the CODE_OF_CONDUCT.md, and keep generated outputs, credentials, and unlicensed third-party assets out of commits.

For security concerns, follow the private reporting process in SECURITY.md rather than opening a public issue.

License

DrawArch source code and bundled assets are available under the MIT License. Third-party assets keep their original provider licenses and attribution.


Available Tools

11 tools
compare_reference_recreationCompare a Recreation to its Reference PlanA
Read-onlyIdempotent

Measure structural coverage against the approved absolute scene graph and report missing editable elements.

ParametersJSON Schema
NameRequiredDescriptionDefault
planIdYes
fileNameNo
revisionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
matchedElementsYes
structuralScoreYes
expectedElementsYes
missingElementIdsYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds behavioral context by specifying that it measures coverage and reports missing editable elements, which clarifies the operation's output. 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.

Conciseness5/5

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

The description is a single sentence with no unnecessary words, front-loaded with the action verb. It is concise and structurally clear, maximizing information density.

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

Completeness3/5

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

The core purpose is clear, and the presence of an output schema covers return-value expectations. However, the description does not explain what 'structural coverage' means, what input parameters are required, or how they relate to the operation, leaving a significant completeness gap.

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

Parameters2/5

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

Schema description coverage is 0%, meaning the schema provides no property descriptions. The description does not mention or explain any of the three parameters (planId, fileName, revision), failing to compensate for the missing schema details. The user is left without guidance on how to supply these inputs.

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

Purpose5/5

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

The description uses a specific verb ('Measure') and clearly identifies the resource ('structural coverage against the approved absolute scene graph') and outcome ('report missing editable elements'). This distinguishes it from sibling tools like get_reference_plan (retrieval) and validate_drawio (format validation).

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

Usage Guidelines3/5

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

The title and description imply the use case (comparing a recreation to its reference plan), but the description itself provides no explicit guidance on when to use this tool versus alternatives. No exclusions or alternative tool names are mentioned.

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

create_drawioCreate Editable Architecture DiagramC

Generate a self-contained native .drawio architecture with selectable theme, real SVGs, deterministic layout, animated colour-coded datapaths, and editable objects.

ParametersJSON Schema
NameRequiredDescriptionDefault
edgesNo
nodesYes
themeYes
titleYes
groupsNo
layoutYes
overwriteNo
outputFileYes
onlineAssetsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
themeYes
assetsYes
countsYes
layoutYes
warningsYes
outputFileYes
outputPathYes
validationYes

TDQS

C2.7/5.0
Behavior2/5

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

Annotations provide no safety hints (all false), so the description must disclose side effects. It mentions 'self-contained' and 'real SVGs' but omits critical behavior like writing to an output file, handling the 'overwrite' flag, or the distinction between online and local assets. It does not state that this is a non-idempotent file-writing operation.

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

Conciseness4/5

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

The description is a single concise sentence with no filler. It packs several useful features, but the adjective-heavy stack ('real SVGs', 'deterministic layout', 'animated colour-coded datapaths') could be streamlined to mention file output explicitly. Still, it earns its place without redundancy.

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

Completeness2/5

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

For a 9-parameter creation tool with no parameter descriptions and no visible output schema in the provided definition, the description is incomplete. It does not cover file creation, overwrite behavior, asset prerequisites, or how this tool relates to the reference diagram tools. The description is too minimal to be fully actionable.

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

Parameters2/5

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

Schema description coverage is 0%, and the description explains none of the 9 parameters directly. It hints at theme, layout, animation, and editability, but does not clarify required parameters like 'outputFile', 'nodes', or the 'overwrite' flag. The schema provides structural type/enum information but not semantic guidance.

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

Purpose4/5

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

The description uses the specific verb 'Generate' with a clear resource ('self-contained native .drawio architecture') and lists distinctive features such as 'deterministic layout' and 'animated colour-coded datapaths'. However, it does not explicitly differentiate from sibling tools like create_reference_drawio, so it misses full sibling distinction.

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

Usage Guidelines2/5

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 such as create_reference_drawio, validate_drawio, or prepare_reference_recreation. There is no 'when to use' or 'use this rather than' information, leaving the agent to infer usage from the name alone.

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

create_reference_drawioRender an Approved Reference RecreationA

Resolve approved real assets, embed them, and render an exact absolute-coordinate editable .drawio artifact. Rejects stale approvals.

ParametersJSON Schema
NameRequiredDescriptionDefault
planIdYes
revisionYes
approvalTokenYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
planIdYes
revisionYes
comparisonYes
outputFileYes
outputPathYes
validationYes

TDQS

A4/5.0
Behavior4/5

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

The description discloses key behaviors beyond annotations: it resolves and embeds real assets, produces an 'exact absolute-coordinate editable' artifact, and rejects stale approvals. Annotations already signal non-read-only, non-idempotent, non-destructive, and the description adds process detail without contradicting them. It does not mention failure modes or side effects beyond rejection.

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

Conciseness5/5

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

The description is two short sentences, front-loaded with the main action and the output type, and contains no unnecessary words. It is appropriately sized and efficiently structured.

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

Completeness3/5

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

The tool is complex, with multiple steps and sibling tools like prepare_reference_recreation and validate_reference_drawio, but the description does not mention prerequisites, relationship to siblings, or error handling. An output schema exists, so return value details are not required, but the missing workflow context leaves the description only partially complete.

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

Parameters2/5

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

The schema has 0% description coverage, and the description does not explain planId, revision, or approvalToken. The agent must infer from parameter names alone, which may lead to incorrect invocation. The description's mention of 'approved real assets' does not map to these specific parameters.

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

Purpose5/5

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

The description clearly states the tool's function: 'Resolve approved real assets, embed them, and render an exact absolute-coordinate editable .drawio artifact.' The verb 'render' plus the specific resource (approved reference recreation) and the distinguishing behavior 'Rejects stale approvals' make it stand apart from siblings like create_drawio.

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

Usage Guidelines4/5

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

The description provides clear context: it is for rendering approved reference recreations and rejects stale approvals, implying it should be used when current approval exists. However, it does not explicitly name alternative tools or state when not to use it, so it lacks explicit exclusion guidance.

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

get_reference_planGet the Current Reference PlanA
Read-onlyIdempotent

Read the latest immutable scene-graph revision before rendering or approval.

ParametersJSON Schema
NameRequiredDescriptionDefault
planIdYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
pathYes
planYes
planIdYes
revisionYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds valuable context by noting the revision is 'immutable' and that it retrieves the 'latest' scene-graph revision, which is beyond what annotations alone convey. It also implies the operation is safe due to the read-only wording.

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

Conciseness5/5

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

The description is a single, focused sentence that leads with the verb and packs in the resource, immutability, and intended use context. There is no redundant information or filler.

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

Completeness4/5

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

For a simple read operation with one parameter and an output schema present, the description is adequately complete. It conveys the purpose and timing, and the annotations cover safety traits. The only minor gap is the lack of clarity on how planId relates to 'latest', but overall it is sufficient.

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

Parameters2/5

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

The schema has 0% description coverage for planId, and the description does not mention the parameter at all. While the name 'planId' suggests it identifies the plan, the description's phrase 'latest immutable scene-graph revision' introduces ambiguity about whether this is a global latest or per-plan, and no additional semantics are supplied.

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

Purpose5/5

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

The description clearly states the verb 'Read' and the resource 'the latest immutable scene-graph revision' (the reference plan), with a specific use context ('before rendering or approval'). This distinguishes it from sibling tools that create, update, or validate reference drawings/plans.

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

Usage Guidelines4/5

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

The description provides clear context for when to use this tool ('before rendering or approval'), indicating it is the read operation to fetch the current plan state. However, it does not explicitly name alternatives or state when not to use it, so it stops short of full exclusion guidance.

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

list_assetsSearch Bundled SVG AssetsA
Read-onlyIdempotent

Search safe bundled real-world SVG architecture assets by name, alias, tag, category, or provider.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoText such as postgres, smartphone, telemetry, or server
categoryNo
providerNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
assetsYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds meaningful context beyond annotations by specifying 'safe bundled' and 'real-world', indicating the tool returns a curated set rather than arbitrary results. It also hints at flexible search via aliases and tags, enriching behavioral understanding.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no wasted words. It delivers the essential purpose and search dimensions efficiently.

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

Completeness4/5

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

Given the presence of an output schema (which covers return values) and strong annotations, the description is fairly complete for a simple search tool. It adds key search dimensions and safety context. However, it leaves some ambiguity around parameter combination semantics, slightly affecting completeness.

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

Parameters3/5

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

Schema coverage is only 33% (query has a description, category and provider do not). The description partially compensates by listing category and provider as search dimensions, but it does not explain their meaning, allowed values, or how they combine with query. The mapping between 'name, alias, tag' and the query parameter is ambiguous.

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

Purpose5/5

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

The description uses a specific verb ('Search') with a clear resource ('safe bundled real-world SVG architecture assets') and enumerates search dimensions ('by name, alias, tag, category, or provider'). This distinguishes it from siblings like list_themes and resolve_asset, which target different resources.

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

Usage Guidelines3/5

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

The description clearly implies usage for searching bundled SVG assets, but it does not explicitly state when to use this tool instead of alternatives or mention any exclusions. The 'safe bundled' qualifier provides some context, but no direct comparison with sibling tools is offered.

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

list_themesList DrawArch ThemesA
Read-onlyIdempotent

List selectable visual themes for editable animated diagrams.net architecture diagrams.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
themesYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is clear. The description adds context about themes being selectable, which implies they are options for other tools, but it does not contradict annotations and provides useful scope.

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

Conciseness5/5

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

The description is a single, well-structured sentence that is concise and front-loaded with the core action. Every word earns its place without unnecessary detail.

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

Completeness5/5

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

For a simple list operation with no parameters, an output schema, and strong annotations, the description provides sufficient context. It explains what is listed and for what purpose, making it complete for an agent to select and invoke correctly.

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

Parameters4/5

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

The tool has zero parameters, so the schema is fully sufficient. The description does not need to explain parameter semantics, and the baseline for zero-parameter tools is 4.

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

Purpose5/5

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

The description clearly states the tool lists selectable visual themes, with a specific verb 'list' and resource 'selectable visual themes'. It also provides context about the domain (editable animated diagrams.net architecture diagrams), distinguishing it from sibling tools like list_assets.

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

Usage Guidelines3/5

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

The description implies usage when one needs to know available themes, but it does not explicitly state when to use this tool versus alternatives. There is no mention of scenarios where other tools 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.

prepare_reference_recreationPrepare an Exact Reference-Image RecreationB

Persist the host vision model's absolute editable scene graph. DrawArch does not call another LLM. Set approved only after the user or host policy approves all online sources and the plan.

ParametersJSON Schema
NameRequiredDescriptionDefault
planYes
approvedNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
pathYes
planYes
planIdYes
revisionYes
approvalTokenNo

TDQS

B3.3/5.0
Behavior3/5

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

The description adds behavioral context beyond annotations: it persists state, and notably states that DrawArch does not call another LLM. It also discloses the approval condition. It doesn't mention overwriting or side effects, but 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.

Conciseness4/5

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

Three short sentences, each providing distinct information: the action, a pipeline detail, and an approval rule. No unnecessary words, though the second sentence is slightly cryptic.

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

Completeness2/5

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

For a tool with a large nested schema and no annotations, the description does not convey prerequisites, the exact structure needed, or how this step fits into the recreation workflow. It leaves the agent to infer what 'absolute editable scene graph' entails and doesn't mention the plan's required properties.

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

Parameters3/5

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

The schema has 0% description coverage, but the description does address the `approved` flag by specifying when it should be true. It only vaguely refers to the `plan` as a scene graph, leaving the extensive schema to carry the plan's structure.

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

Purpose4/5

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

The description uses a specific action ('Persist') and a definite object ('the host vision model's absolute editable scene graph'), distinguishing it from sibling tools that list, validate, or create DrawIO files. The title reinforces this but the description doesn't explicitly contrast with update_reference_plan.

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

Usage Guidelines3/5

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

The description implies use for persisting the scene graph before generating the recreation, and it gives a clear approval rule ('Set approved only after...'). However, it doesn't state when to use this tool versus update_reference_plan or create_reference_drawio.

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

resolve_assetResolve Architecture SVGA
Read-onlyIdempotent

Resolve one architecture component to a safe embedded SVG using bundled assets first and online Iconify-compatible assets when enabled.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
categoryNo
providerNo
allowOnlineNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
assetYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare the operation safe and idempotent. The description adds the specific behavior of trying bundled assets first and only using online Iconify-compatible assets when enabled (allowOnline). It also asserts 'safe' output, implying sanitization, which is useful beyond the readOnly/idempotent hints.

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

Conciseness5/5

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

The description is a single 18-word sentence that front-loads the core action and adds key behavioral details. No filler or redundant information.

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

Completeness2/5

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

Although annotations and output schema exist, the description lacks explicit parameter semantics and usage guidelines. For a 4-parameter tool with 0% schema coverage, the description leaves ambiguity around query/category/provider, making it incomplete for reliable invocation.

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

Parameters2/5

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

Schema coverage is 0%, so the description carries the burden. It only implicitly references allowOnline via 'when enabled', but does not explain query, category, or provider. The agent must guess that query is the component name and category/provider are filters, which is not explicitly stated.

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

Purpose5/5

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

The description uses a specific verb 'Resolve' and specifies the resource 'architecture component' to an output 'safe embedded SVG', and mentions the resolution order (bundled vs online). This clearly distinguishes it from sibling tools like list_themes or validate_drawio, as none of those perform resolution.

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

Usage Guidelines3/5

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

The description implies usage (when you need an SVG for a component) but does not explicitly state when to use this tool vs alternatives, nor does it mention exclusions or the availability of list_assets for browsing assets. There is no 'instead of' guidance.

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

update_reference_planRevise a Reference Recreation PlanB

Create an immutable next revision of a reference plan using optimistic concurrency. Any earlier approval becomes stale.

ParametersJSON Schema
NameRequiredDescriptionDefault
planYes
planIdYes
approvedNo
expectedRevisionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
pathYes
planYes
planIdYes
revisionYes
approvalTokenNo

TDQS

B3.3/5.0
Behavior4/5

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

Despite annotations already marking the tool as not read-only, not idempotent, and not destructive, the description adds valuable behavioral context: it creates an immutable new revision (no in-place mutation) and invalidates previous approvals ('Any earlier approval becomes stale'). This goes beyond what annotations convey by explaining the concurrency mechanism and the side effect on approvals, which is crucial for an agent to anticipate outcomes.

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

Conciseness5/5

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

The description is two concise sentences with no filler. It front-loads the core behavior (creating an immutable next revision) and follows with the key side effect (approval staleness). Every word contributes meaning, and it avoids restating the schema or annotations.

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

Completeness3/5

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

Given the tool's complexity (large nested plan schema, immutable revisioning, optimistic concurrency), the description covers the most critical behavioral aspects but leaves context gaps. It does not explain what happens on concurrency conflict, how the optional 'approved' parameter interacts with staleness, or the overall update workflow relative to other reference-plan tools. The detailed schema and output schema reduce the need to document return values or field structures, but the description still omits practical usage context.

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

Parameters2/5

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

Schema description coverage is 0% and the description provides almost no parameter-level semantics. It implies expectedRevision relates to optimistic concurrency, but does not explain planId, plan, or approved. Parameter names are somewhat self-explanatory, but the optional 'approved' field's role in the revision/approval lifecycle is ambiguous from the description alone. The verbose schema constraints help validate input but do not convey business meaning.

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

Purpose4/5

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

The description clearly states the tool creates a new revision of a reference plan, which matches the 'update' name via immutable revisioning. It distinguishes this from sibling tools like get_reference_plan or create_reference_drawio by focusing on revision creation rather than retrieval or file generation. However, it does not explicitly mention the optional 'approved' parameter or frame the action as updating an existing plan, which would strengthen clarity.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. The description does not mention that this is the tool to call when modifying an existing reference plan, nor does it reference sibling tools like get_reference_plan for reading or prepare_reference_recreation for pre-update steps. The optimistic concurrency hint implies a precondition (expectedRevision must match current), but this is not elaborated or compared to other tools' workflows.

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

validate_drawioValidate a DrawArch FileA
Read-onlyIdempotent

Validate a .drawio file inside the configured output directory for structural errors, dangling references, duplicate IDs, and unsafe images.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileNameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
fileNameYes
validationYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint, so the safety profile is known. The description adds behavioral context by listing the specific validation categories and scoping to the output directory, which is not present in the annotations. There is 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.

Conciseness5/5

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

The description is a single, focused sentence that front-loads the action and includes only essential information. No filler or redundancy.

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

Completeness5/5

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

For a one-parameter validation tool with comprehensive annotations and an output schema, the description fully captures the tool's scope and behavior. It specifies what the tool validates and where, which is sufficient for an agent to invoke it correctly.

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

Parameters4/5

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

Schema description coverage is 0%, but the description compensates by indicating that the file is a .drawio file and located in the configured output directory, giving context to the fileName parameter. The schema provides the pattern, and the description clarifies the file's expected location and scope.

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

Purpose5/5

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

The description uses the specific verb 'Validate' with the resource '.drawio file inside the configured output directory' and enumerates the exact checks (structural errors, dangling references, duplicate IDs, unsafe images). This clearly distinguishes it from sibling validation tools such as validate_reference_drawio.

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

Usage Guidelines4/5

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

The description provides clear context by specifying the target location (configured output directory) and the types of issues it checks. However, it does not explicitly mention when to prefer this over the similar sibling validate_reference_drawio, so it lacks explicit exclusion or alternative guidance.

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

validate_reference_drawioValidate a Reference Draw.io ArtifactA
Read-onlyIdempotent

Validate a generated reference recreation for native Draw.io structure, IDs, references, and embedded-image safety.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileNameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
fileNameYes
validationYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, so the safe, non-destructive nature is known. The description adds value by specifying exactly what is validated (structure, IDs, references, embedded-image safety), providing behavioral context beyond the annotations.

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

Conciseness5/5

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

The description is a single, tightly written sentence with no filler. It front-loads the verb and resource and lists the validation dimensions efficiently.

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

Completeness4/5

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

For a one-parameter validation tool with annotations covering side effects and an output schema presumably defining returns, the description sufficiently conveys the core function and validation targets. It does not clarify its differentiation from validate_drawio, but that is more a usage-guideline gap than a completeness gap.

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

Parameters2/5

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

The sole parameter, fileName, has no schema description (0% coverage) and is not mentioned in the tool description. The schema pattern gives format constraints, but the description adds no semantic explanation of what fileName represents or how it relates to the validation operation, leaving a gap.

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

Purpose5/5

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

The description clearly states a specific action (Validate) applied to a specific resource (a generated reference recreation) and enumerates the validation focus (native Draw.io structure, IDs, references, and embedded-image safety). This distinguishes it from sibling tools like validate_drawio by targeting reference recreations specifically.

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

Usage Guidelines2/5

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

The description does not provide any guidance on when to use this tool versus alternatives such as validate_drawio or compare_reference_recreation. It lacks workflow context, prerequisites, or any explicit exclusions, leaving the agent to infer usage from the name and description.

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

TDQS

A3.7/5.0
Disambiguation4/5

Each tool has a distinct purpose, but the paired create/validate tools for general drawio vs reference recreations (create_drawio/create_reference_drawio, validate_drawio/validate_reference_drawio) require careful reading of descriptions to avoid confusion. Otherwise, the reference plan lifecycle tools are clearly separated.

Naming Consistency5/5

All tools follow a consistent verb_noun snake_case pattern (list_themes, resolve_asset, create_drawio, get_reference_plan, compare_reference_recreation). The pattern is uniform and predictable.

Tool Count5/5

11 tools is appropriate for a server covering two related workflows (general diagram generation and reference-based recreation). Each tool has a clear role, and the count is within the ideal range.

Completeness4/5

The tool surface covers the full lifecycle for both workflows: asset/theme discovery, diagram creation and validation, and reference plan preparation, revision, rendering, and comparison. Minor gaps like no delete/update for general drawio files are acceptable given the server's purpose.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables users to generate professional AWS architecture diagrams, sequence diagrams, flow charts, and class diagrams using Python code through the diagrams package. Supports customizable styling and secure diagram generation for cloud infrastructure visualization.
    3
    Apache 2.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    Professional AI-powered architecture diagram generator with multi-cloud support and MCP server integration. Generates beautiful, accurate diagrams with provider-specific icons for AWS, Azure, GCP, Kubernetes, and more.
    10
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Ajey95/drawarch-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server