We count page visits with Google Analytics to see which pages are read. Nothing is stored until you accept, and we never store search queries. Privacy.
Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
⟨14 unchanged words⟩ provide exactly one.
**Choose the format first.** Use `mermaid``xml` for everydiagramstypeofitboxeshasandalinesheaderupforto about 30 shapes: flowchart/graphflowcharts, sequenceDiagrampipelines, classDiagramdecision trees, stateDiagram-v2org charts, erDiagramER schemas, ganttUML class, piestate and use case diagrams, journeymind maps, timelines, architecture, cloud and network diagrams, swimlanes, UI mockups, floor plans and anything with stencils. You place every shape yourself, laid out for the chat view (see the XML reference). Use `mermaid` for sequenceDiagram, gantt, gitGraph, mindmappie, timelinejourney, quadrantChart, xychart-beta, sankey-beta, requirementDiagram, C4Context/C4Container/C4Component, block-beta, architecture-beta, packet-beta, kanban, radar-beta, treemap-beta, treeView-beta, venn-beta, ishikawa-beta, zenuml, wardley-beta, eventmodeling. Don't write flowcharts as XML. Useeventmodeling,`xml`and for everything else (UI mockupsflowcharts, floorclassplans,andcloud/network/P&ID/electricalstate diagrams with stencils,ofswimlanes,moreUMLthanwithaboutdeliberate30placement,shapesexact(flowchartspositionswithorpostLayoutcolorselk) and.wheneverWhenever the user asks for draw.io XML or no Mermaid; then keepMermaid,usinguse XML for the rest of the conversation.
**Call ⟨115 unchanged words⟩ & "). No XML comments. Don't add waypoints:waypoints.setPlace`postLayout:the"elk"`shapesforyourselfflowchart-like(noXML,postLayout)and set `routing: "libavoid"` foronlyawhenhand-placedanlayout.edge would otherwise cross a shape.
193 words differ · removed · added
inputSchema
⟨145 unchanged words⟩ only your edge topology survives. Set it for directional/hierarchicallargediagrams:Mermaid flowcharts,process(seediagrams,below)stateanddiagrams,fordecisiondirectionalXML flows,pipelines,ofER/classmorediagramsthanwithaboutclear30parent→child
Tool surface changed
Added "get_drawio_reference"; changed the definition of "create_diagram" (2 tools before, 3 now)
create_diagramchanged
description
Creates and displays an interactive draw.io diagram. Acceptsdiagrameitherfromdraw.ioMermaid.jsXMLsyntax or Mermaid.jsdraw.iosyntaxXML — provide exactly one.
**Format decision — this is the first thing to settle before you write anything:** if the diagram type appears on**Choose the Mermaid list below, use `mermaid`. Onlyformatuse
TLS
Certificate changed, valid to 2027-01-04
Tool surface changed
Changed the definition of "search_shapes"
search_shapeschanged
outputSchema
before
—
after
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"shapes":{"description":"Matching shapes, best match first — empty when nothing matched the query.","items":{"additionalProperties":false,"properties":{"h":{"description":"Default height in pixels","type":"number"},"style":{"description":"mxCell style string, usable verbatim in a style attribute","type":"string"},"title":{"description":"Shape name","type":"string"},"w":{"description":"Default width in pixels","type":"number"}},"required":["style","w","h","title"],"type":"object"},"type":"array"}},"required":["shapes"],"type":"object"}
⟨976 unchanged words⟩ labels they carry, what lane/container groups them. draw.io'sThe edge router and the optional layout pass (when`postLayout:available)"elk"`,aseepost-layout**Edgepassrouting& layout passes**) handle routing and placement; you do **not** need ⟨241 unchanged words⟩ elements directly.
**Do** in your reasoning:
- Identify the diagram type + actors/stages (1I
TLS
Certificate recorded, valid to 2026-11-06
Authorization
Authorization not required
Tool surface
First tool surface recorded: 2 tools (server version 1.0.0)
you don't lay out yourself; XML you place on the grid (see the XML reference) omits it.
Flow direction (top-down vs left-to-right): for **Mermaid**
⟨207 unchanged words⟩
it keeps your hand-placed coordinates and only recomputes
the path of
each
edge's
right-angle
path
edge
(`edgeStyle=orthogonalEdgeStyle` or `entityRelationEdgeStyle`)
so wires run in clean right-angle segments that route *around* the boxes instead of cutting through
them.
them;
straight and curved lines stay as drawn.
Set it for XML diagrams where you have placed nodes deliberately (architecture,
network topology,
deployment, swimlanes, UML
class
, floor plans) and want tidy connectors without
⟨178 unchanged words⟩
81 words differ · removed · added
first.**
`xml`
Use
when
`mermaid`
the
for
diagram
every
type
isn't on that list (UI mockups, floorplans, cloud/network/electrical architecture with stencils, hand-placed UML, etc.) or when the user
it
has
explicitly asked for draw.io XML.
**Use
a
Mermaid**
header
for
the following diagram types (all rendered natively, no upstream mermaid runtime)
:
-
flowchart / graph (TD, LR
flowchart/graph
,
…)
-
sequenceDiagram
-
,
classDiagram
- stateDiagram /
,
stateDiagram-v2
-
,
erDiagram
-
,
gantt
-
,
pie
-
,
journey
(user-journey)
-
,
gitGraph
-
,
mindmap
-
,
timeline
-
,
quadrantChart
-
,
xychart-beta
-
,
sankey-beta
-
,
requirementDiagram
- C4Context / C4Container /
,
C4Component
-
C4Context/C4Container/C4Component,
block-beta
-
,
architecture-beta
-
,
packet-beta
-
,
kanban
-
,
radar-beta
-
,
treemap-beta
- treeview-beta (draw.io-specific)
- venn (draw.io-specific) — syntax: `venn` then `set A ["Label"]` for each set
,
`union A
treeView-beta
,
B`
for declared overlaps (informational)
venn-beta
,
and `text A` / `text A
ishikawa-beta
,
B`
followed by `["Region label"]` for text inside a region. Do NOT use `A AND B[...]` or `A["..."]` shorthand — those lines are ignored.
- ishikawa (draw.io-specific)
-
zenuml
**Strong default: use Mermaid for every diagram type on that list above.** Mermaid is simpler
,
more reliable
wardley-beta
,
and the
eventmodeling.
native
Don't
Mermaid
write
layout
flowcharts
handles
as
positioning
XML.
and
Use
routing
`xml`
for
you.
everything
For
else
a
(UI
flowchart
mockups
,
state diagram,
floor
sequence
plans
,
ER,
cloud/network/P&ID/electrical
class,
diagrams
gantt,
with
gitGraph
stencils
,
mindmap
swimlanes
,
etc. — reach for
UML
the
with
`mermaid`
deliberate
parameter
placement
,
not `xml`. Do not default to XML for flowcharts.
**Use XML** when the diagram type isn't on the
- **Swimlanes / pools** with custom colors and hand-placed contents
- **UML class / component / deployment diagrams** where positioning carries meaning
- **Venn diagrams
,
quadrant charts, concept maps** with custom regions — anything where hand-placed geometry is
'shopping cart') to find the correct `style` string for each shape.
---
**XML reasoning discipline (applies ONLY when you chose XML — skip this whole section if you're using Mermaid):** Your job in XML is declaring logical structure — nodes
Cisco
,
edges
Kubernetes
,
labels
P&ID
,
groupings. Follow these steps in order: (1
electrical
)
**Decide `postLayout` and `routing` FIRST, before writing any XML.** If the XML diagram is a flowchart, state diagram, decision tree,
or
any directional/hierarchical process diagram (which you should rarely be writing as
logos.
XML
— prefer Mermaid), you MUST pass `postLayout
essentials
:
<mxGraphModel adaptiveColors=
"
elk
auto
"
` (add `direction:
><root><mxCell
id=
"
horizontal
0
"
` when the flow is drawn left-to-right; it defaults to vertical). Omit `postLayout` only when the layout carries hand-crafted meaning (swimlanes, containers, architecture, UML) — the typical reason you chose XML in the first place. When `postLayout` is set, your x/y coordinates only need to express rough direction; ELK re-lays out the vertices. For those hand-placed diagrams where you omit `postLayout`, consider `routing:
/><mxCell
id=
"
libavoid
1
"
`
— it leaves your positions untouched and only routes the edges around the boxes in clean right angles (set it whenever connectors would otherwise overlap or cut through shapes). Treat `postLayout` and `routing` as alternatives: ELK already routes its own edges, so if you set `postLayout:
parent=
"
elk
0
"
` do NOT also set `routing` (redundant); use
/>…</root></mxGraphModel>.
`routing`
Every
only
cell
on
has
a
hand-placed layout where you
unique
are
id.
NOT
Vertices:
re-laying-out
vertex="1"
with
ELK. (2) Pick ONE concrete scenario on your first impulse and commit — do not pitch alternatives, do not flip-flop between approaches. (3) Use the rigid grid in the XML reference (`x = col*180 + 40`, `y = row*120 + 40`) without computing spacings, canvas dimensions, or overlap checks.
<mxGeometry
(4)
x
Never
y
add
width
`<Array
height
as="
points
geometry
"
>` waypoints or `exitX/exitY/entryX/entryY` — when postLayout or routing runs it sets them; otherwise drawio's edge router handles it. (5) Do NOT narrate in your
/>.
reasoning
Edges
:
no
edge=
"
building the diagram
1
"
,
no column enumeration, no coordinate
with
math
source
in
and
prose
target
,
no coordinate re-verification after placement. Go straight to XML.
**User preference override — XML only.** If the user
always
expresses
with
a
preference for draw.io XML over Mermaid in any phrasing (examples: "no mermaid", "skip mermaid", "use xml", "I want drawio format", "stop using
child
mermaid",
<mxGeometry
relative=
"
give me the xml
1
"
,
as=
"
native drawio only
geometry
"
, etc.), from that
/>.
point
Put
onward
html=1
in
the conversation you MUST use the `xml` parameter
every
exclusively
style
and
MUST NOT use the `mermaid` parameter, even for diagram types where Mermaid would normally be preferable. This preference persists for the remainder of the conversation unless the user
XML-escape
clearly
HTML
reverses
in
it
values
(
e.g. "mermaid
<
is
>
fine
&
again"
"
).
When the preference is active, translate any diagram request — including flowcharts, sequence diagrams, ER diagrams, etc. — directly to well-formed mxGraphModel XML.
When using XML: IMPORTANT — the XML must be well-formed. Do NOT include ANY XML comments (<!-- -->) in the output.
# draw.io XML Reference
Detailed reference for styles, edge routing, containers, layers, tags, metadata, and dark mode. Consult this when generating draw.io
No
XML
diagrams.
## Reasoning budget (read this first)
Your job is to declare the **logical structure** of the diagram — what nodes exist, what edges connect them, what labels they carry, what lane/container groups them. The edge router and
comments.
the
Don't
optional
add
layout
waypoints:
pass
set
(
`postLayout: "elk"`
,
see **Edge routing & layout passes**) handle routing and placement; you do **not** need to do layout math.
**Do NOT** in your reasoning:
- Do NOT debate the topic. The user asked
for
a flowchart / architecture / sequence / etc. — pick one concrete scenario on your first impulse and commit. Never write "Actually, let me think of something else…" or pitch alternatives.
- Do NOT debate flat-lanes vs nested-pools, horizontal vs vertical
flowchart-like
orientation
XML
,
one vs multiple variations. Pick the first reasonable option (almost always
`routing
:
flat swimlanes, top-down or left-right based on what fits the content). Do not flip-flop.
- Do NOT compute x/y coordinates in prose. No
"
column spacings of 160px totaling 1840px width — that's too wide, let me tighten to 1700…" loops. Use the rigid grid below; do the arithmetic in your head and write the XML.
- Do NOT re-derive drawio mechanics (`horizontal=0`, `startSize=110`, nested-lane coordinates). Use the templates below as-is.
- Do NOT enumerate columns ("customer lane columns 0-10, web app 1-7"). Place a node, move on.
- Do NOT add `<Array as="points
libavoid
"
>` waypoints. Edges are routed automatically.
- Do NOT set `exitX` / `exitY` / `entryX` / `entryY` connection-point overrides unless you have specific geometric intent.
- Do NOT verify, re-check, or adjust coordinates after
`
placing
for
a
node.
- Do NOT narrate "building the diagram / finalizing the XML / now let me…". Just emit XML.
- Do NOT write out lists of node positions as planning text. Emit them as `<mxCell>` elements directly.
**Do** in your reasoning:
-
hand-placed
I
layout.
1586 words differ · removed · added
inputSchema
⟨64 unchanged words⟩ definition (e.g. 'graph TD\\n A-->B'). Supports 2628 diagram types — see the tool description for ⟨533 unchanged words⟩
2 words differ · removed · added
get_drawio_referenceadded
Get draw.io Reference — Returns the draw.io diagram generation reference as Markdown. Format "xml": styles, the layout grid, edges, containers, swimlanes, layers, tags, metadata, dark mode, the layout and routing passes, and the well-formedness rules for create_diagram's xml. Format "mermaid": the header keyword and syntax hints for every Mermaid type draw.io supports, flowchart styling and the ELK layout. Call it once per format and conversation, before the first diagram in that format; the reference stays valid for the rest of the conversation.