Turn a few lines of text into a UML activity diagram document, and check the flow.
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 activity diagram text checked without a drawing, for example "is my flow valid?" or "which steps are not reachable?". Takes the same diagram text as make_activity_diagram. Returns ready true or false; when a line breaks the grammar or a block is not closed, the line number, the token and the reason; otherwise the counts, the steps with their block path, steps that are not reachable (found by a breadth-first search from the start), and empty branches. Does not draw the diagram or make files.
The activity in this line grammar, one statement per line, up to 40,000 characters, 2,000 lines and 400 characters per line (comments included): start | stop | end | :Action text; | if (condition) then (label) ... elseif (condition) then (label) ... else (label) ... endif | while (condition) is (label) ... endwhile (label) | fork ... fork again ... end fork | note: text | # comment. Labels are optional; conditions and labels must not contain ( or ). Example: "start\n:Receive order;\nif (in stock?) then (yes)\n:Ship it;\nelse (no)\n:Refund;\nendif\nstop".
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http activity-diagram https://activity-diagram.zovo.one/mcp
Use this when the user wants activity diagram text checked without a drawing, for example "is my flow valid?" or "which steps are not reachable?". Takes the same diagram text as make_activity_diagram. Returns ready true or false; when a line breaks the grammar or a block is not closed, the line number, the token and the reason; otherwise the counts, the steps with their block path, steps that are not reachable (found by a breadth-first search from the start), and empty branches. Does not draw the diagram or make files.
| Argument | Type | Description |
|---|---|---|
| diagram* | string | The activity in this line grammar, one statement per line, up to 40,000 characters, 2,000 lines and 400 characters per line (comments included): start | stop | end | :Action text; | if (condition) then (label) ... elseif (condition) then (label) ... else (label) ... endif | while (condition) is (label) ... endwhile (label) | fork ... fork again ... end fork | note: text | # comment. Labels are optional; conditions and labels must not contain ( or ). Example: "start\n:Receive order;\nif (in stock?) then (yes)\n:Ship it;\nelse (no)\n:Refund;\nendif\nstop". |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"diagram"
],
"properties": {
"diagram": {
"type": "string",
"maxLength": 100000,
"description": "The activity in this line grammar, one statement per line, up to 40,000 characters, 2,000 lines and 400 characters per line (comments included): start | stop | end | :Action text; | if (condition) then (label) ... elseif (condition) then (label) ... else (label) ... endif | while (condition) is (label) ... endwhile (label) | fork ... fork again ... end fork | note: text | # comment. Labels are optional; conditions and labels must not contain ( or ). Example: \"start\\n:Receive order;\\nif (in stock?) then (yes)\\n:Ship it;\\nelse (no)\\n:Refund;\\nendif\\nstop\"."
}
}
}Use this when the user wants a UML activity diagram or a process flowchart drawn from steps, for example "draw the checkout flow as an activity diagram" or "make a PDF of this process". Takes the diagram text in a line grammar: start / stop / end; :Action text; ; if (condition) then (label) ... elseif (condition) then (label) ... else (label) ... endif; while (condition) is (label) ... endwhile (label); fork ... fork again ... end fork; note: text (right after the step it belongs to); # comments. Labels are optional; a condition or label must not contain ( or ). When the user describes the process in words, write it in this grammar first. Returns counts, the steps in flow order with their block path, the links between them, the flow check (steps that are not reachable, empty branches), a check on the drawing, the PDF page count, an interactive diagram, and PDF, SVG and CSV downloads. Refuses a line outside the grammar with its line number and token. Up to 200 actions, 60 decisions, 6 fork branches, 6 nesting levels and 400 characters per line. Does not read repeat loops, switch, swimlanes or partitions. 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. "Order checkout". |
| diagram* | string | The activity in this line grammar, one statement per line, up to 40,000 characters, 2,000 lines and 400 characters per line (comments included): start | stop | end | :Action text; | if (condition) then (label) ... elseif (condition) then (label) ... else (label) ... endif | while (condition) is (label) ... endwhile (label) | fork ... fork again ... end fork | note: text | # comment. Labels are optional; conditions and labels must not contain ( or ). Example: "start\n:Receive order;\nif (in stock?) then (yes)\n:Ship it;\nelse (no)\n:Refund;\nendif\nstop". |
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) or a4. A wide diagram turns the page to landscape. 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. \"Order checkout\"."
},
"diagram": {
"type": "string",
"maxLength": 100000,
"description": "The activity in this line grammar, one statement per line, up to 40,000 characters, 2,000 lines and 400 characters per line (comments included): start | stop | end | :Action text; | if (condition) then (label) ... elseif (condition) then (label) ... else (label) ... endif | while (condition) is (label) ... endwhile (label) | fork ... fork again ... end fork | note: text | # comment. Labels are optional; conditions and labels must not contain ( or ). Example: \"start\\n:Receive order;\\nif (in stock?) then (yes)\\n:Ship it;\\nelse (no)\\n:Refund;\\nendif\\nstop\"."
},
"page_size": {
"enum": [
"letter",
"a4"
],
"type": "string",
"description": "PDF paper: letter (default) or a4. A wide diagram turns the page to landscape. Example: a4."
}
}
}