Turns a few lines of text into a UML sequence diagram you can print.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Use this when the user wants sequence diagram text checked without a drawing, for example "check my sequence diagram for unclosed blocks" or "which participants have no messages". Takes the same diagram text as make_sequence_diagram. Returns ready true or false; when a line breaks the grammar, the line number, the token and the reason; otherwise the participants with outgoing and incoming message counts, message counts by kind, the blocks with their lines, nesting depth and messages, activate lines with no deactivate, and participants that differ only in upper and lower case. Does not draw the diagram or make files, and does not read features of other diagram languages outside this grammar.
The diagram in this line grammar, one statement per line, up to 60,000 characters: participant Name | actor Name | participant "Long Name" as Alias; A -> B: text (sync call), A ->> B: text (async), A --> B: text (reply), A -> A: text (self); note over A: text | note over A,B: text; alt condition / else condition / end, loop condition / end, opt condition / end; activate A | deactivate A; lines starting with # or %% are comments. Example: "actor User\nUser -> Web: Log in\nWeb -> DB: Find user\nDB --> Web: User row\nalt password ok\nWeb --> User: Welcome\nelse wrong password\nWeb --> User: Try again\nend".
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http sequence-diagram https://sequence-diagram.zovo.one/mcp
Use this when the user wants sequence diagram text checked without a drawing, for example "check my sequence diagram for unclosed blocks" or "which participants have no messages". Takes the same diagram text as make_sequence_diagram. Returns ready true or false; when a line breaks the grammar, the line number, the token and the reason; otherwise the participants with outgoing and incoming message counts, message counts by kind, the blocks with their lines, nesting depth and messages, activate lines with no deactivate, and participants that differ only in upper and lower case. Does not draw the diagram or make files, and does not read features of other diagram languages outside this grammar.
| Argument | Type | Description |
|---|---|---|
| diagram* | string | The diagram in this line grammar, one statement per line, up to 60,000 characters: participant Name | actor Name | participant "Long Name" as Alias; A -> B: text (sync call), A ->> B: text (async), A --> B: text (reply), A -> A: text (self); note over A: text | note over A,B: text; alt condition / else condition / end, loop condition / end, opt condition / end; activate A | deactivate A; lines starting with # or %% are comments. Example: "actor User\nUser -> Web: Log in\nWeb -> DB: Find user\nDB --> Web: User row\nalt password ok\nWeb --> User: Welcome\nelse wrong password\nWeb --> User: Try again\nend". |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"diagram"
],
"properties": {
"diagram": {
"type": "string",
"maxLength": 200000,
"description": "The diagram in this line grammar, one statement per line, up to 60,000 characters: participant Name | actor Name | participant \"Long Name\" as Alias; A -> B: text (sync call), A ->> B: text (async), A --> B: text (reply), A -> A: text (self); note over A: text | note over A,B: text; alt condition / else condition / end, loop condition / end, opt condition / end; activate A | deactivate A; lines starting with # or %% are comments. Example: \"actor User\\nUser -> Web: Log in\\nWeb -> DB: Find user\\nDB --> Web: User row\\nalt password ok\\nWeb --> User: Welcome\\nelse wrong password\\nWeb --> User: Try again\\nend\"."
}
}
}Use this when the user wants a UML sequence diagram drawn, for example "draw a sequence diagram of the login flow" or "make a PDF of these API calls". Takes the diagram text in a line grammar: participant Name / actor Name / participant "Long Name" as Alias; A -> B: text (sync), A ->> B: text (async), A --> B: text (reply), A -> A: text (self); note over A: text / note over A,B: text; alt cond / else cond / end, loop cond / end, opt cond / end; activate A / deactivate A; # comment lines. When the user describes the flow in words, write it in this grammar first. Returns counts, the messages in order, the blocks with their messages, a check on the drawing (messages in order, frames holding their messages, overlapping labels), the PDF page count and smallest text size, an interactive diagram, and PDF, SVG and CSV downloads. Refuses a line outside the grammar with its line number and token. Up to 30 participants and 400 messages. Does not read features of other diagram languages outside this grammar. A diagram too wide for the paper with text of at least 7 pt gets no PDF (SVG and CSV only), and the result says so. Download links of large diagrams expire after about 1 hour.
| Argument | Type | Description |
|---|---|---|
| title | string | Title printed on the diagram and used in file names, up to 80 characters, e.g. "Login flow". |
| diagram* | string | The diagram in this line grammar, one statement per line, up to 60,000 characters: participant Name | actor Name | participant "Long Name" as Alias; A -> B: text (sync call), A ->> B: text (async), A --> B: text (reply), A -> A: text (self); note over A: text | note over A,B: text; alt condition / else condition / end, loop condition / end, opt condition / end; activate A | deactivate A; lines starting with # or %% are comments. Example: "actor User\nUser -> Web: Log in\nWeb -> DB: Find user\nDB --> Web: User row\nalt password ok\nWeb --> User: Welcome\nelse wrong password\nWeb --> User: Try again\nend". |
We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 8, 2026.
| page_size | string | PDF paper: letter (default), a4 or tabloid (11 x 17 in). Landscape unless portrait needs fewer pages. Example: a4. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"diagram"
],
"properties": {
"title": {
"type": "string",
"maxLength": 400,
"description": "Title printed on the diagram and used in file names, up to 80 characters, e.g. \"Login flow\"."
},
"diagram": {
"type": "string",
"maxLength": 200000,
"description": "The diagram in this line grammar, one statement per line, up to 60,000 characters: participant Name | actor Name | participant \"Long Name\" as Alias; A -> B: text (sync call), A ->> B: text (async), A --> B: text (reply), A -> A: text (self); note over A: text | note over A,B: text; alt condition / else condition / end, loop condition / end, opt condition / end; activate A | deactivate A; lines starting with # or %% are comments. Example: \"actor User\\nUser -> Web: Log in\\nWeb -> DB: Find user\\nDB --> Web: User row\\nalt password ok\\nWeb --> User: Welcome\\nelse wrong password\\nWeb --> User: Try again\\nend\"."
},
"page_size": {
"enum": [
"letter",
"a4",
"tabloid"
],
"type": "string",
"description": "PDF paper: letter (default), a4 or tabloid (11 x 17 in). Landscape unless portrait needs fewer pages. Example: a4."
}
}
}