Skip to main content
Glama
harezadmm
by harezadmm

bizagi-mcp

Turn a description of a process into a BPMN 2.0 diagram that opens cleanly in Bizagi Modeler.

An MCP server that generates, reads, audits and previews BPMN 2.0 diagrams — and drives the Bizagi Modeler desktop app on Windows.

An auto-laid-out purchase request process

Generated from a 60-line JSON spec. Every coordinate above was computed, not placed by hand.


Why this exists

Bizagi Modeler has no scripting API. The one integration path it does support is the open BPMN 2.0 XML format, through its Export / Import tab.

But there is a catch that makes naive generation useless: Bizagi imports the coordinates written in the file verbatim. It does not lay out a diagram for you. Emit a structurally perfect BPMN file without geometry and it opens as a pile of boxes stacked on the origin.

So the hard part of this server is not the XML. It is the layout.


Related MCP server: MCP-GLSP

What it does

Tool

What it does

get_spec_reference

The spec format: every node type, field and rule

create_process

Description → a .bpmn file ready to import, coordinates computed

update_process

Edit an existing .bpmn (add/change/remove nodes and flows), re-laid out

read_process

Parse a .bpmn → structured JSON, a readable walk-through, or an editable spec

list_processes

Scan a folder and summarise each BPMN file

validate_process

Audit against BPMN 2.0 rules and modelling conventions, with a fix for each finding

render_preview

Render to SVG — check the result without opening Bizagi

export_documentation

Process documentation as Markdown (outline + audit)

bizagi_status

Whether Bizagi Modeler can be driven from here

bizagi_open

Launch Bizagi Modeler, optionally with a file

bizagi_import_bpmn

Drive Export / Import ▸ BPMN, and verify that it landed

bizagi_export_bpmn

Drive Export ▸ BPMN for the open diagram

The first eight are pure Python and run on any OS, with or without Bizagi installed. Only the four bizagi_* tools need Windows.


The layout engine

A lane-aware layered layout, in the order it runs:

  1. Break cycles so the graph can be layered at all

  2. Longest-path layering → each node's horizontal column

  3. Barycenter ordering per (column, lane) → fewer crossing lines

  4. Adaptive lane heights, sized to the tallest cell each band holds

  5. Reserved strips — a bypass band along the top of any lane carrying a column-skipping branch, and a channel strip at the bottom for loop-backs

  6. Orthogonal routing that goes around obstacles rather than through them

  7. Label separation as a final pass

What it guarantees

These are not aspirations. Each one is a test that fails when the rule is removed:

  • No two shapes overlap

  • No edge is drawn through a shape that is not its own endpoint

  • Every element sits inside its pool

  • Message flows run in the empty corridor between pools, never horizontally through one

  • Each message flow gets its own line in that corridor, and the corridor is sized from how many flows cross it — so their labels do not stack

  • Loop-backs each get their own channel in a strip reserved while lanes are sized

  • A branch that skips columns detours inside its own lane, over the activities it skips

  • A gateway's branches leave from visibly different points, so a two-way split does not read as a single arrow

  • Boundary-event flows leave downwards, never back up through the host activity

  • Annotations and data stores sit beside what they describe — or, when they have no association, inside the pool they declare rather than off the canvas

  • No label is written over another label or over a shape

Design notes

A few decisions that are easy to get wrong:

  • A label is as wide as its text. Reserving a flat box for every label makes collisions between the long ones invisible to anything that measures the reserved box.

  • Reserved space must be held out of centring. Grow a lane to make room for a channel and then centre the shapes in it, and half the new space is handed back as padding above — the channel ends up too thin to use.

  • A detour belongs in the gaps between shapes, not around all of them. Routing over or under everything lands the line outside the pool, and the verticals that reach it then cross every lane on the way.

  • A data store can be associated with many activities but sits beside one. Placing it once per association leaves holes in the lanes where the earlier placements were.


Install

pip install -e .

For the Windows desktop tools:

pip install -e ".[desktop]"

Python ≥ 3.10.

Register with Claude

claude_desktop_config.json (Windows: %APPDATA%\Claude\claude_desktop_config.json):

{
  "mcpServers": {
    "bizagi-modeler": {
      "command": "bizagi-mcp",
      "env": {
        "BIZAGI_MCP_ROOT": "C:\\Users\\you\\Documents\\Bizagi"
      }
    }
  }
}

If bizagi-mcp is not on PATH:

{
  "mcpServers": {
    "bizagi-modeler": {
      "command": "python",
      "args": ["-m", "bizagi_mcp.server"],
      "env": { "BIZAGI_MCP_ROOT": "C:\\Users\\you\\Documents\\Bizagi" }
    }
  }
}

For Claude Code: claude mcp add bizagi-modeler -- bizagi-mcp

Environment variables

Variable

What it does

BIZAGI_MCP_ROOT

Confine every file read and write to this folder. Strongly recommended.

BIZAGI_MODELER_PATH

Full path to BizagiModeler.exe or BizAgiMC.exe when it is not found automatically


Usage

Generate a diagram

"Model a leave request: the employee submits it, the manager approves or rejects it, HR records the outcome. Save it to D:\Processes\leave.bpmn."

Then in Bizagi Modeler: Export / Import ▸ Import ▸ BPMN.

Analyse an existing model

Export from Bizagi first (Export / Import ▸ Export ▸ BPMN), then:

"Read D:\Processes\purchasing.bpmn, walk me through it, and tell me what is wrong with it."

Example

See examples/purchase_request.json (the spec), .bpmn (generated) and .svg (preview).


Validation rules

Structure (BPMN001BPMN020, severity error / warning)

Missing start or end events · unreachable elements · dead ends · sequence flows crossing pools · message flows inside one pool · gateways branching without conditions · event-based gateway targets · implicit split and merge · boundary events on non-activities · duplicate ids · a default flow that also carries a condition · one-in-one-out gateways.

Conventions (BP001BP017, severity warning / info)

Activity naming (verb + object) · gateways not phrased as questions · unlabelled branches · documentation coverage · pools without lanes · empty lanes · diagram size · duplicate names · pools that never exchange messages.

Every finding names the offending element and the concrete step to fix it.


Driving the desktop app

bizagi_open is the dependable path: Modeler takes a file as a command line argument, so no menu has to be driven.

bizagi_import_bpmn drives the ribbon, and is honest about it:

  • It claims the foreground and verifies it got there. Windows refuses SetForegroundWindow to a process that does not own the foreground, and set_focus() returns as if it worked — clicking on regardless sends a real mouse click into whatever the user is working in.

  • It counts diagram tabs before and after, and reports imported: true / false from that evidence rather than from hope.

  • Both counts are taken with the window raised, because a window that is behind can hand back an incomplete accessibility tree.

There is no background mode

Import cannot run while the machine is used for something else. Three routes were tested against Modeler 4.3.0.008 and all three are closed:

Route

Result

UI Automation Invoke pattern

Ribbon tabs expose no patterns at all

PostMessage mouse messages

Ignored, across every candidate window handle

BizAgiMC.exe file.bpmn

Exits 0 without importing anything

The ribbon only responds to real mouse input on a focused window. For unattended runs, give Bizagi its own Windows session or VM. If you want that recorded so nobody retries it: this table is the record.


Security

  • Paths are fully resolved (~, .., symlinks) before being checked, then confined to BIZAGI_MCP_ROOT when it is set

  • XML parsing goes through defusedxml when available (XXE, billion laughs)

  • Files are never overwritten without overwrite=true

  • Bizagi is launched with an argument list and no shell, so a filename can never become a command

  • Every error comes back as data ({"ok": false, ...}), never a traceback


Tests

pip install -e ".[dev]"
pytest -q

72 tests: spec normalisation, XSD element ordering, BPMNDI completeness, every layout guarantee listed above, label collisions, round-trips, each validation rule, path traversal, ribbon button selection, foreground verification, and the error contract of every tool.


Known limitations

  • .bpm is not read. It is Bizagi's proprietary format; export to BPMN first. list_processes still lists .bpm files and flags them.

  • Desktop control is Windows-only and needs pywinauto.

  • Diagrams are generated one level deep. A sub-process appears as a collapsed shape; its contents are not generated.

  • Layout tidiness is guaranteed for the geometry written to the file. Bizagi places node names by its own rules, which the diagram interchange section does not control.

License

MIT — see LICENSE.

Available Tools

12 tools
bizagi_export_bpmnA

Drive File ▸ Export ▸ BPMN for the diagram currently open in Bizagi Modeler, so it can then be read and audited by the other tools.

Best-effort UI automation; confirm the dialog on screen if nothing appears.

Args: output_path: Where Bizagi should write the .bpmn file.

ParametersJSON Schema
NameRequiredDescriptionDefault
output_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral transparency burden. It usefully discloses that this is 'best-effort UI automation' and advises confirming the dialog if nothing appears. However, it does not mention side effects such as file overwriting, what happens if Bizagi is not open, or whether the operation mutates the diagram.

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 short and front-loaded with the main action. The purpose, automation caveat, and parameter explanation are each given in a compact sentence, with no wasted words.

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 tool's single parameter and the presence of an output schema, the description covers the core requirements: exact action, prerequisite, output destination, and a behavioral caveat. It could add more failure-mode detail, but nothing essential is missing for making the call.

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 coverage is 0%, so the description must explain the parameter. It does: 'output_path: Where Bizagi should write the .bpmn file.' This adds meaning beyond the schema title 'Output Path' by indicating the intended destination and file type.

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?

Description states a specific UI command ('Drive File ▸ Export ▸ BPMN') and the resource ('diagram currently open in Bizagi Modeler'), plus the downstream purpose ('read and audited by other tools'). This clearly distinguishes it from sibling tools like bizagi_import_bpmn and export_documentation.

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 gives clear context: it applies to the diagram currently open in Bizagi Modeler and is meant to make the BPMN available for other tools. It does not explicitly name alternatives or say when not to use it, but the intended scenario is clear enough.

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

bizagi_import_bpmnA

Drive Bizagi Modeler's File ▸ Import ▸ BPMN dialog for a .bpmn file.

Best-effort UI automation: ribbon shortcuts differ between Modeler versions. If it does not take, import the file by hand — it is already on disk.

Args: file_path: The .bpmn file to import.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden. It openly states 'Best-effort UI automation', warns that ribbon shortcuts differ between Modeler versions, and instructs manual fallback if it fails. It doesn't describe side effects or expected post-import state, but this is notably honest for a UI-automation tool.

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?

Three short sections with front-loaded purpose; every sentence contributes a distinct fact: purpose, caveat, fallback, and parameter. There is no filler or repetition of schema fields.

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?

For a one-parameter tool, the definition covers the action, parameter, and failure mode, and an output schema exists for return values. However, it omits prerequisites such as Bizagi Modeler already being open or a target process being active, which an agent may need to sequence with sibling tools like bizagi_open or bizagi_status.

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%, so the 'file_path: The .bpmn file to import' line is the only parameter guidance. It adds the .bpmn extension and import purpose to the schema's bare string, though it does not detail path format or existence requirements beyond the earlier 'already on disk' note.

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 opens with an explicit verb ('Drive') and resource ('Bizagi Modeler's File ▸ Import ▸ BPMN dialog for a .bpmn file'). It unambiguously identifies an import operation, which distinguishes it from sibling export/open/read tools by UI route.

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 gives no explicit 'use when ... not when ...' guidance or alternatives among sibling tools. It does provide a manual fallback and a caveat about version differences, which implies best-effort usage, but it doesn't address when to prefer this over siblings like bizagi_export_bpmn or bizagi_open.

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

bizagi_openA

Open Bizagi Modeler, optionally with a .bpm or .bpmn file.

This is the dependable desktop action — the file is passed on the command line rather than through a menu.

Args: file_path: Diagram to open. Leave empty to just start the application.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the behavioral burden, and it does disclose the key behavior: it launches the desktop app, optionally opens a .bpm/.bpmn file, and treats an empty file_path as 'just start the application.' It does not cover failure modes or return behavior, but for a non-destructive open action the disclosed behavior is sufficient.

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 compact and front-loaded: it states the action in the first sentence, adds one clarifying behavioral sentence, and then gives a precise Args section. There is no unnecessary filler or repetition of schema info.

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 desktop launcher, this is complete: it covers the optional file path, accepted extensions, the behavior when empty, and the invocation method. Since an output schema exists and no annotations are present, there is nothing essential missing for an agent to call this tool correctly.

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

Parameters5/5

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

The schema provides no description for file_path, but the description fully compensates: it explains that file_path is the diagram to open, accepts .bpm or .bpmn files, and explains the empty-string behavior. This adds real semantic value beyond the raw schema.

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 opens with a specific verb and resource: 'Open Bizagi Modeler,' and adds the optional file types .bpm or .bpmn. It is unambiguous, but it does not explicitly differentiate this tool from siblings like bizagi_import_bpmn or bizagi_export_bpmn by name.

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 when to use the tool by calling it 'the dependable desktop action' and explaining that the file is passed via the command line, but it does not state explicit when-to-use or when-not-to-use conditions. It also does not name alternative sibling tools that might be better suited for import/export or process-read tasks.

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

bizagi_statusA

Report whether Bizagi Modeler can be controlled from here: platform, whether pywinauto is installed, where BizagiModeler.exe is, whether it is running, and which document is open. Call this before the other bizagi_* tools.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the burden of behavioral disclosure. 'Report whether' makes the read-only nature reasonably clear, and the listed checks describe what the tool does without side effects. It could be more explicit about not modifying anything, but the wording strongly implies a diagnostic operation.

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 one focused sentence that front-loads the purpose ('Report whether Bizagi Modeler can be controlled from here') and then lists the specific facts it reports. The final instruction is a clear directive with no wasted words.

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 zero-parameter status tool with an output schema, the description is complete: it states what is checked, signals read-only behavior, and tells the agent to call it before siblings. Nothing essential is missing for correct invocation.

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 description cannot add parameter-level meaning. Per the rubric, a 0-parameter tool gets a baseline of 4 because parameter semantics are not applicable.

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 verb 'Report' with a specific resource (Bizagi Modeler controllability) and enumerates the exact status items checked: platform, pywinauto availability, exe location, running state, and open document. This clearly differentiates it from the action-oriented sibling tools.

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 gives explicit usage guidance: 'Call this before the other bizagi_* tools.' This tells the agent when to invoke it in a workflow. It does not mention exclusions, but for a status/preflight tool, the sequencing instruction is sufficient.

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

create_processA

Generate a BPMN 2.0 diagram from a process specification and write it as a .bpmn file that Bizagi Modeler can import (File ▸ Import ▸ BPMN).

Shape positions are computed automatically with a lane-aware layered layout, so the imported diagram is readable rather than a heap of overlapping boxes. The result includes an audit of the generated model.

Args: spec: The process definition. Call get_spec_reference() for the format. output_path: Where to write the .bpmn file. Leave empty to only preview. overwrite: Replace output_path if it already exists. return_xml: Include the full XML in the response (large).

ParametersJSON Schema
NameRequiredDescriptionDefault
specYes
overwriteNo
return_xmlNo
output_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and handles it well: file writing, preview-only mode when output_path is empty, overwrite replacement semantics, large return_xml payloads, and formatting/layout behavior are all disclosed.

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 main purpose is front-loaded, followed by compact behavior notes and a terse argument list. Every sentence adds operational value without filler.

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 complex spec-object tool with no annotations, this is unusually complete: input format source, output behavior, preview mode, overwrite safety, response-size tradeoff, and audit result are all covered. The output schema handles the remaining return-shape details.

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

Parameters5/5

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

Schema description coverage is 0%, and the description compensates fully: spec is tied to get_spec_reference(), output_path explains preview behavior, overwrite explains replacement, and return_xml warns about large responses. This adds far more meaning than the bare schema properties.

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 opens with a specific action and artifact: 'Generate a BPMN 2.0 diagram from a process specification and write it as a .bpmn file.' It further differentiates from siblings by naming Bizagi Modeler import, making it distinct from list/update/read/validate/render tools.

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?

It gives clear operational context: call get_spec_reference() for the spec format and leave output_path empty to preview. However, it never explicitly states when to choose this tool over siblings like render_preview, validate_process, or bizagi_import_bpmn, so alternatives are left to inference.

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

export_documentationA

Produce a Markdown process document from a .bpmn file: an outline of every pool and lane, the step-by-step flow, and optionally the audit findings.

Args: file_path: The .bpmn file to document. output_path: Where to write the .md file. Leave empty to return the text only. include_audit: Append the audit report. overwrite: Replace output_path if it exists.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes
overwriteNo
output_pathNo
include_auditNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden and does a good job: it discloses file-writing behavior, the 'return text only' mode when output_path is empty, the effect of overwrite, and the optional audit append. It stops short of covering error cases or side effects, but the main behavior is transparent.

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 compact, front-loaded with the core purpose, and uses a clean Args block. Every sentence adds information; there is no filler or repetition of schema fields.

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 tool with no annotations, the description covers purpose, all parameter semantics, and output behavior. It is slightly less explicit about return details or edge cases, but the presence of an output schema and the detailed parameter notes make it sufficiently complete for correct invocation.

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

Parameters5/5

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

Schema description coverage is 0%, so the description fully compensates by explaining every parameter: file_path, output_path including empty-string behavior, include_audit, and overwrite. Each gets a meaningful semantic beyond its name or type.

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 opens with a specific action and object: 'Produce a Markdown process document from a .bpmn file', and enumerates the document's contents (pool/lane outline, step-by-step flow, optional audit findings). This makes it easy to distinguish from siblings such as validate_process or render_preview without needing to inspect schemas.

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 purpose statement clearly implies the use case: generate Markdown documentation from an existing BPMN file. It does not name alternatives or explicitly state when not to use it, but the context is clear enough that an agent can infer when to invoke it.

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

get_spec_referenceA

Show the specification format that create_process expects, with every node type, field, and modeling rule. Read this before writing a spec for the first time.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description itself must signal behavior. 'Show' clearly indicates a read-only lookup, and 'Read this before...' frames it as a non-mutating prerequisite step without side effects. It doesn't discuss auth or rate limits, but a static reference tool has no such concerns.

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?

Two sentences, with the core purpose front-loaded and the usage directive in a natural second sentence. Every word contributes; no wasted 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 zero-parameter reference tool with an output schema, the description says what it returns, what it concerns (create_process spec format), and when to use it. Nothing needed to invoke it correctly is missing.

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 accepts zero parameters, so the baseline for this dimension is 4. The description explains what the returned reference will cover rather than parameters, which is appropriate for a parameterless call.

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?

Description identifies a specific action ('Show the specification format'), the exact resource (the format create_process expects), and the content scope (node types, fields, modeling rules). This clearly sets it apart from sibling tools like create_process, update_process, and read_process.

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?

Tells the agent precisely when to invoke it: 'Read this before writing a spec for the first time.' It does not list exclusions or alternative reference tools, but none of the siblings fill this exact role, so the guidance is sufficient.

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

list_processesA

Find BPMN and Bizagi files in a folder, with a one-line summary of each .bpmn (pools, activities, gateways).

Args: directory: Folder to scan. recursive: Include sub-folders.

ParametersJSON Schema
NameRequiredDescriptionDefault
directoryYes
recursiveNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden and does disclose that only .bpmn files receive a one-line summary covering pools, activities, and gateways. However, it does not state whether the operation is read-only, how Bizagi files are treated beyond being found, or how empty folders or invalid directories behave.

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, front-loaded sentences followed by compact Args lines. Every sentence adds information, and there is no redundant restatement of the tool name or schema.

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 two-parameter discovery tool with an output schema present, the description covers purpose, scope, summary behavior, and parameter meaning. Minor gaps remain around Bizagi file handling and edge cases, but nothing an agent needs to invoke the tool correctly is missing.

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%, so the description must compensate; the Args block adds meaning by defining directory as 'Folder to scan' and recursive as 'Include sub-folders'. This fully disambiguates both parameters for a simple tool, though it does not explain expected file formats or path encoding.

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 states a specific action ('Find') and resource ('BPMN and Bizagi files in a folder'), and distinguishes the tool from process-editing siblings by emphasizing folder scanning and one-line summaries. It is immediately clear what the tool does and how it differs from read_process or validate_process.

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 purpose implies usage when an agent needs to discover or summarize BPMN/Bizagi files in a directory, but the description never explicitly states when to prefer this over sibling tools or when not to use it. There are no exclusions or alternative routing cues for the agent.

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

read_processA

Read a .bpmn file and return its structure: pools, lanes, activities, gateways, events, and the flows between them.

Note: Bizagi's native .bpm format is proprietary and cannot be read here. Export it first from Bizagi Modeler (File ▸ Export ▸ BPMN).

Args: file_path: Path to a .bpmn or .xml file. detail: "summary" (structured JSON), "outline" (readable walk-through), or "spec" (an editable specification you can pass back to create_process).

ParametersJSON Schema
NameRequiredDescriptionDefault
detailNosummary
file_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden and does well: it discloses supported file types (.bpmn/.xml), an explicit unsupported format (.bpm), and the meaning of each detail mode. It does not explicitly state it is read-only, but the verb 'Read' and the absence of side-effects language make the behavior reasonably clear.

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 compact and well-structured: a one-sentence purpose, a short necessary limitation note, and a clear Args section. No filler or redundant restatement of the tool name.

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 two-parameter read operation with an output schema present, this description covers supported formats, the key unsupported format, parameter semantics, and the relationship to create_process. Nothing essential for an agent to invoke it correctly is missing.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate for both parameters. It does: file_path is explained as 'Path to a .bpmn or .xml file', and detail enumerates all three options with their semantic meaning, including how 'spec' can be passed back to create_process.

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?

States a specific verb ('Read'), a concrete resource (.bpmn file), and the return structure (pools, lanes, activities, gateways, events, flows). It clearly distinguishes read_process from sibling tools that list, create, update, or import processes.

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?

Gives clear context on when to use the tool and an important prerequisite: Bizagi's native .bpm format must be exported to BPMN first. It does not explicitly contrast with sibling tools like validate_process or list_processes, but the included create_process reference in the detail parameter adds useful routing context.

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

render_previewA

Draw the diagram as an SVG so it can be checked without opening Bizagi Modeler — same geometry the .bpmn carries, so what you see is what imports.

Args: file_path: A .bpmn file to preview. Mutually exclusive with spec. spec: A specification to preview before writing it anywhere. output_path: Where to write the .svg. Leave empty to return the markup. overwrite: Replace output_path if it exists.

ParametersJSON Schema
NameRequiredDescriptionDefault
specNo
file_pathNo
overwriteNo
output_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations, the description carries the full behavioral burden. It discloses the write behavior (output_path, overwrite), the alternate return mode (returning markup when output_path is empty), and the promise that geometry matches the .bpmn. This is strong and decision-relevant transparency.

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 compact and front-loaded: a two-sentence purpose statement followed by a clean argument list. Every sentence earns its place and the structure is easy for an agent to scan.

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?

The description covers output modes, overwrite behavior, and all parameters, and an output schema exists. The main gap is that, with zero required parameters and both file_path and spec defaulted, the description never explicitly states that one of them must be supplied.

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

Parameters5/5

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

Schema description coverage is 0%, and the description fully compensates by explaining all four parameters with functional meaning: .bpmn file input, an in-memory spec, output location with fallback behavior, and overwrite semantics. The mutual-exclusivity note adds important semantic value beyond the schema.

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 opens with a specific action ('Draw the diagram as an SVG') and a clear purpose ('checked without opening Bizagi Modeler'). It is specific about the resource and output format, but it does not explicitly differentiate from sibling tools like bizagi_import_bpmn or export_documentation.

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?

It gives a clear use case — verifying a diagram before import via 'what you see is what imports' — and notes that file_path and spec are mutually exclusive. It does not explicitly state when to prefer this tool over related siblings or when not to use it, so it stops short of a top-tier score.

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

update_processA

Edit an existing .bpmn file by merging changes into its specification and regenerating the diagram (with a fresh layout).

changes accepts the same keys as a spec. Lists are handled by key: a node or flow whose id matches an existing one replaces it, anything else is appended. Use "removeNodes": ["id", …] / "removeFlows": ["id", …] to delete.

Args: file_path: The .bpmn file to edit. changes: Partial specification to merge in. output_path: Where to write the result. Defaults to overwriting file_path. overwrite: Required when writing over an existing file.

ParametersJSON Schema
NameRequiredDescriptionDefault
changesYes
file_pathYes
overwriteNo
output_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral disclosure burden. It discloses the merge semantics, id-based replace-vs-append behavior, removal keys, fresh layout regeneration, and overwrite behavior. It does not cover failure modes or explicitly state what happens to omitted spec fields, but overall transparency is strong.

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 well structured and front-loaded: core edit/regenerate behavior comes first, followed by merge rules and a terse args list. Every sentence earns its place, and the overwrite safety note is compact but important.

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 four parameters and the free-form nested changes object, the description is largely complete, and the output schema exists so return values need not be explained. It would be more complete if it defined 'spec' or pointed to get_spec_reference, since 'same keys as a spec' assumes vocabulary the agent may not already have.

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

Parameters5/5

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

Schema description coverage is 0%, yet every parameter is meaningfully documented: file_path identifies the target, changes is explained as a partial spec with merge/deletion semantics, output_path specifies destination and default behavior, and overwrite is clarified as required for existing files. This fully compensates for the bare schema.

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 opens with a concrete verb and resource: 'Edit an existing .bpmn file', and adds the distinctive behavior of merging changes and regenerating the diagram. This clearly separates it from siblings like create_process, read_process, and validate_process even without naming them explicitly.

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 establishes clear context: this is for editing an existing BPMN file, not creating or reading one. It also provides a practical condition, stating that overwrite is required when writing over an existing file. It does not explicitly list alternatives or exclusions, which prevents a 5.

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

validate_processA

Audit a diagram against BPMN 2.0 correctness rules and modeling conventions, and return every finding with a concrete fix.

Checks include: missing start/end events, unreachable elements, dead ends, sequence flows crossing pools, message flows inside one pool, gateways that branch without conditions, event-based gateway targets, implicit splits, boundary events on non-activities, plus naming, documentation, lane and diagram-size conventions.

Args: file_path: A .bpmn file to audit. Mutually exclusive with spec. spec: A specification to audit before generating it. include_best_practice: Include convention findings, not only errors. format: "json" for structured findings, "markdown" for a report.

ParametersJSON Schema
NameRequiredDescriptionDefault
specNo
formatNojson
file_pathNo
include_best_practiceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are present, so the description carries full responsibility. It discloses the audit scope (checks listed), the two input modes and their mutual exclusivity, and the format options. However, it does not explicitly state whether the tool is read-only (though implied) nor mention any permissions or side effects. For a validation tool, this is a moderate gap.

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 starts with a clear one-sentence purpose, then details the checks, and ends with parameter explanations. It is front-loaded and structured well. The list of checks is lengthy but informative, and the Args block is efficient. Some redundancy exists (e.g., the purpose sentence and the check list both mention correctness), but overall it is concise relative to the tool's complexity.

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 complex auditing tool with an output schema, the description covers the main aspects: purpose, checks performed, input modes, and format selection. It does not describe return structure, but the presence of an output schema reduces that need. Missing details like error handling or behavior on invalid input are not critical for this tool type, making the description reasonably complete.

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's 'Args' section explains all four parameters: file_path, spec, include_best_practice, and format. Each has a brief explanation, and the mutual exclusivity of file_path and spec is noted. The spec explanation ('A specification to audit before generating it') is slightly vague, but overall the description compensates well for the missing schema descriptions.

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 audits a diagram against BPMN 2.0 rules and returns findings with fixes. The verb 'Audit' is specific, the resource is a BPMN diagram, and it is distinct from siblings like list_processes, create_process, or render_preview. No sibling performs validation, so purpose is unambiguous.

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 implies usage context—auditing a diagram for correctness—and differentiates from generation tools. However, it never explicitly says 'use this when you need to validate' or contrasts with alternatives like read_process. The purpose is so specific that an agent can infer when to use it, but no exclusions or conditional guidance are given.

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. 12 tool updatesv1.0.0
    • First observedbizagi_export_bpmn
    • First observedbizagi_import_bpmn
    • First observedbizagi_open
    • First observedbizagi_status
    • First observedcreate_process
    • First observedexport_documentation
    • First observedget_spec_reference
    • First observedlist_processes
    • First observedread_process
    • First observedrender_preview
    • First observedupdate_process
    • First observedvalidate_process

TDQS

A4.4/5.0

Scored across 12 tools

Disambiguation5/5

Each tool targets a distinct action: file discovery, spec reference, create, update, read, validate, preview, documentation, and Bizagi desktop automation. The only mild overlap is preview capability between create_process and render_preview, but their outputs and intended use are clearly differentiated.

Naming Consistency4/5

Most tools follow a clear verb_noun pattern, and the desktop automation tools consistently share the bizagi_ prefix. The minor deviation is bizagi_status, which is a noun phrase rather than verb-first, and get_spec_reference uses get while similar operations use read; still, the overall pattern is predictable.

Tool Count5/5

Twelve tools is well-scoped for a BPMN modeling server. Each tool covers a meaningful part of the workflow without unnecessary redundancy, and the count is comfortably within the typical 3-15 range.

Completeness5/5

The toolset covers the full modeling lifecycle: discovery, creation, editing, reading, validation, preview, documentation, and desktop import/export. The only noted limitation—reading proprietary .bpm files—is documented with a practical workaround rather than an untooled dead end.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    B
    quality
    D
    maintenance
    Enables AI agents to create, manipulate, and manage BPMN 2.0 diagrams programmatically, with support for Mermaid conversion, auto-layout, and file persistence.
    24
    9
    -
  • F
    license
    Not graded
    quality
    F
    maintenance
    Enables AI-driven graphical diagram creation and manipulation using natural language, with support for BPMN workflows, analysis, and manual editing via the Model Context Protocol.
    1
    -
  • A
    license
    A
    quality
    D
    maintenance
    Enables automation of AutoCAD LT and headless DXF creation through two backends (File IPC for Windows AutoCAD LT and ezdxf for cross-platform) with tools for drawing, entity, layer, block, annotation, PID, view, and system operations.
    8
    7
    MIT