MCP-BPMN Server
MCP-BPMN 서버
테스트된 BPMN 2.0 작성 하위 집합을 위한 Model Context Protocol(MCP) 서버로, Mermaid 변환, 로컬 영속화, 레이아웃, 검증, XML 또는 SVG 내보내기를 포함합니다.
🎯 개요
MCP-BPMN은 AI 어시스턴트가 한 번에 하나의 비즈니스 프로세스 다이어그램을 작업할 수 있도록 상태 저장 인터페이스를 제공합니다. 아래 나열된 구성 요소에 대해 올바른 형식의 BPMN 2.0 XML을 작성합니다. 완전한 BPMN 2.0 편집기, 실행 엔진 또는 배포 클라이언트는 아닙니다. 휴대용 BPMN 코어가 기본 작성 계약이며, 옵트인 방식의 타입이 지정된 Camunda 7 프로필은 ADR 0001에 문서화되어 있습니다.
주요 기능
집중된 BPMN 작성: 지원되는 이벤트, 활동, 게이트웨이, 데이터 객체, 주석, 풀, 최상위 레인, 시퀀스 흐름 및 연관 관계
Mermaid 변환: 문서화된 순서도 하위 집합에서 다이어그램 부트스트랩
수평 자동 레이아웃: 결정론적 프로세스 및 협업 배치
로컬 영속화: 구성된 디렉터리에 다이어그램을 원자적으로 저장하고 다시 열기
XML 및 SVG 내보내기: XML은 프로세스 내에서 생성되고, SVG는 Puppeteer와
bpmn-js를 통해 렌더링됩니다휴대용 및 Camunda 7 프로필: 기본적으로 공급업체에 종속되지 않는 출력을 제공하며, 명시적으로 선택하면 타입이 지정된 Camunda 7 사용자 작업 필드 세 개를 제공합니다
Related MCP server: MCP-BPMN Server
🚀 빠른 시작
요구 사항
Node.js 22.12.0 이상
lockfile을 지원하는 npm
export({ format: "svg" })용 Chrome 또는 Chromium; 일반적인 Puppeteer 설치 시 호환 브라우저가 다운로드됩니다
XML 작성, 검증, 레이아웃, 영속화 및 XML 내보내기는 브라우저를 실행하지 않습니다. SVG 내보내기는 브라우저를 실행합니다. Puppeteer 브라우저 다운로드를 의도적으로 건너뛴 경우, 서버를 시작하기 전에 PUPPETEER_EXECUTABLE_PATH를 호환되는 Chrome 또는 Chromium 실행 파일로 설정하세요. SVG 렌더링은 헤드리스이며, 서버 인스턴스당 동시 렌더링 하나로 제한되고, 20초의 렌더링 제한 시간이 있습니다.
소스 체크아웃에서 실행
git clone https://github.com/oisee/mcp-bpmn.git
cd mcp-bpmn
npm ci
npm run build
npm startnpm run build는 표준 ESM 실행 파일을 dist/server/index.js에 생성합니다. 서버는 stdio를 사용하므로 터미널에서 시작하면 일반적으로 유휴 상태로 보이며, MCP 클라이언트가 실행하도록 설계되었습니다.
구성
Claude Desktop용
Claude Desktop 구성 파일에 추가하세요:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"mcp-bpmn": {
"command": "node",
"args": ["/absolute/path/to/mcp-bpmn/dist/server/index.js"]
}
}
}다른 MCP 클라이언트용
절대 경로와 함께 동일한 ESM 진입점을 사용하세요:
node /absolute/path/to/mcp-bpmn/dist/server/index.js패키징된 릴리스 아티팩트 설치
이 저장소는 mcp-bpmn-server가 공개 npm 레지스트리에서 사용 가능하다고 가정하지 않고 npm tarball 설치를 문서화합니다. 릴리스 생성자는 소스 체크아웃에서 표준 CLI 전용 아티팩트를 빌드할 수 있습니다:
artifact_dir=$(mktemp -d)
npm pack --pack-destination "$artifact_dir"해당 tarball을 전용 소비자 디렉터리에 설치하고 패키징된 실행 파일을 실행하세요:
consumer_dir=$(mktemp -d)
npm install --prefix "$consumer_dir" "$artifact_dir"/mcp-bpmn-server-*.tgz
"$consumer_dir/node_modules/.bin/mcp-bpmn-server"MCP 클라이언트의 경우 $consumer_dir/node_modules/.bin/mcp-bpmn-server의 절대값을 command로 사용하고 빈 args 배열을 사용하세요. 이 패키지는 가져올 수 있는 JavaScript 라이브러리가 아니라 CLI입니다.
Claude Code 및 Codex용 설치
소스 체크아웃에서 설치 프로그램은 현재 릴리스를 안정적인 사용자 소유 위치에 패키징하고, MCP 서버를 등록하며, PATH에서 발견된 지원되는 모든 클라이언트에 bpmn-modeler 스킬을 설치합니다:
make install
make doctor기본 프로그램 위치는 ~/.local/share/mcp-bpmn이며, 다이어그램은 설치 외부의 ~/mcp-bpmn에 유지됩니다. 스킬은 Codex의 경우 ~/.codex/skills/bpmn-modeler로, Claude Code의 경우 ~/.claude/skills/bpmn-modeler로 복사됩니다. 설치 후 클라이언트를 다시 시작하여 새 스킬과 MCP 서버를 발견하세요.
설치는 멱등적입니다: make install을 다시 실행하면 이 설치 프로그램이 소유한 파일과 등록만 교체됩니다. 기존 타사 등록 또는 스킬 디렉터리는 FORCE=1로 교체를 명시적으로 요청하지 않는 한 보존됩니다. 하나의 클라이언트를 대상으로 하거나, 기존 설치를 업데이트하거나, 다이어그램을 보존하면서 제거하려면 다음을 사용하세요:
make install-codex
make install-claude
make update
make uninstallPREFIX를 설정하여 프로그램 위치를 변경하고, MCP_BPMN_DIAGRAMS_PATH를 사용하여 다른 절대 다이어그램 디렉터리를 사용하세요. 사전 빌드된 릴리스 tarball은 MCP_BPMN_PACKAGE_TARBALL과 필수 MCP_BPMN_PACKAGE_SHA256을 모두 설정하여 재현 가능하게 설치할 수 있습니다. 전체 인터페이스는 ./scripts/install-agent-integrations.sh --help를 실행하세요. 설치 프로그램은 macOS와 Linux를 지원하며, Linux 네이티브 Node.js 및 클라이언트 CLI가 있는 WSL도 포함합니다.
Codex 플러그인 로컬 개발
릴리스 아티팩트는 Codex 플러그인이기도 합니다. 해당 매니페스트는 표준 skills/bpmn-modeler 스킬을 발견하고, 플러그인 캐시에 복사된 런처를 통해 하나의 mcp-bpmn stdio 서버를 시작합니다. 런처는 make install-codex로 설치된 안정적인 비공개 릴리스를 사용합니다. 설치 후 TypeScript를 실행하거나 체크아웃에 의존하지 않습니다.
릴리스 아티팩트를 빌드하고, 이 체크아웃을 임시 저장소 마켓플레이스로 추가하고, 플러그인을 설치하세요:
npm ci
npm run build
make install-codex
codex plugin marketplace add .
codex plugin list --available
codex plugin add mcp-bpmn@mcp-bpmn-local설치 후 새 Codex 대화를 시작하여 스킬과 MCP 도구가 로드되도록 하세요. 번들된 서버는 기본적으로 writes 승인 모드를 사용합니다: 읽기 전용으로 표시된 도구는 자동으로 실행될 수 있는 반면, 다이어그램 변경은 승인을 위해 표시됩니다. 개발 설치를 제거하려면:
codex plugin remove mcp-bpmn@mcp-bpmn-local
codex plugin marketplace remove mcp-bpmn-local실제 Codex 구성을 변경하지 않고 격리된 마켓플레이스, 캐시, 발견, MCP 시작 및 제거 스모크 테스트를 실행하세요:
npm run test:codex-pluginClaude Code 플러그인 로컬 개발
릴리스 아티팩트는 Claude Code 플러그인이기도 합니다. Claude는 표준 skills/bpmn-modeler/SKILL.md를 네임스페이스가 지정된 /mcp-bpmn:bpmn-modeler 스킬로 발견하고, 플러그인 캐시에서 인라인 mcp-bpmn 서버를 시작합니다. 플러그인은 skills/를 사용하며, 레거시 commands/ 복사본을 포함하지 않습니다.
소스 체크아웃에서 한 개발 세션 동안 종속성을 설치하고, 빌드하고, 검증하고, 플러그인을 로드하세요:
npm ci
npm run build
claude plugin validate .
claude --plugin-dir .Claude Code 내에서 /mcp를 사용하여 플러그인 제공 서버를 확인하고, /mcp-bpmn:bpmn-modeler를 호출하여 스킬을 검사하고, 매니페스트 또는 MCP 구성을 변경한 후 /reload-plugins를 실행하세요. 체크아웃에는 저장소 기여자를 위한 루트 CLAUDE.md가 포함되어 있으므로 소스 검증은 이것이 플러그인 컨텍스트가 아니라고 보고합니다. 명령은 여전히 성공합니다. 패키징된 플러그인은 해당 저장소 전용 파일을 제외하고 엄격한 검증을 통과합니다.
전체 로컬 마켓플레이스 스모크 테스트를 실행하세요:
npm run test:claude-plugin이 검사는 임시 Claude 홈과 마켓플레이스를 사용합니다. 복사된 릴리스 아티팩트를 설치하고, Claude의 구성 요소 인벤토리를 확인하고, 캐시된 MCP 서버를 시작하고, 리로드를 실행한 다음 플러그인을 비활성화, 활성화 및 제거합니다. 개발자의 실제 Claude 구성을 변경하지 않습니다.
다이어그램은 ${CLAUDE_PLUGIN_ROOT}에 기록되지 않습니다. MCP_BPMN_DIAGRAMS_PATH가 설정된 경우 해당 위치에, 기본적으로는 ~/mcp-bpmn에 유지되므로 플러그인 리로드, 업데이트, 비활성화 및 제거 시 삭제되지 않습니다. 수동 Claude MCP 등록에서 플러그인으로 전환하기 전에 claude mcp list를 검사하고 명령이 플러그인 엔드포인트와 다른 경우 이전 mcp-bpmn 등록을 제거하세요. Claude는 동일한 명령으로 확인되는 플러그인 및 사용자 서버만 중복 제거합니다.
에이전트 워크플로 평가
표준 머신 판독 가능 말뭉치는 evals/bpmn-modeler/cases.json입니다. 두 클라이언트 어댑터 모두 정확히 동일한 프롬프트와 의미론적 기대치를 사용합니다. 결정론적 검사는 일반 개발 및 CI에 안전합니다: 모델을 호출하지 않고 활성화 경계, 스킬 메타데이터, 도구 이름, 클라이언트 패리티, 생성/변경/검증/레이아웃/검증/내보내기 시퀀스를 확인합니다:
npm run test:evaluations인증된 모델 실행은 옵트인입니다. 먼저 빌드한 다음, 반복하는 동안 하나의 경계 케이스를 선택하세요:
npm run build
npm run eval:codex -- --case direct-process-svg
npm run eval:claude -- --case direct-process-svgCodex 어댑터는 표준 스킬과 프로젝트 범위의 stdio MCP 구성을 포함하는 임시 프로젝트에서 codex exec를 실행합니다. Claude 어댑터는 동일한 케이스를 임시 플러그인 복사본의 네이티브 claude plugin eval 케이스로 구체화합니다. 둘 다 MCP_BPMN_DIAGRAMS_PATH를 임시 디렉터리로 설정하고, 선언된 설정 픽스처만 해당 위치에 복사한 후 디렉터리를 제거합니다. 사용자의 실제 저장소에 있는 다이어그램을 읽거나, 덮어쓰거나, 삭제하지 않습니다. --case를 생략하면 전체 말뭉치를 실행합니다. 이러한 명령은 모델 할당량을 소비할 수 있으며 의도적으로 npm run check 및 CI에서 제외됩니다.
선택적 CommonJS 번들
CommonJS 번들은 별도의 소스 체크아웃 빌드이며 npm run build로 생성되지 않고 표준 npm tarball에 포함되지 않습니다:
npm run build:bundle
npm run start:bundle📚 API 참조
상태 저장 컨텍스트 관리
MCP-BPMN은 한 번에 하나의 다이어그램으로 작업하는 상태 저장 API 설계를 사용합니다. 모든 작업은 현재 다이어그램 컨텍스트에 적용되므로 processId 매개변수가 필요하지 않습니다.
광고된 도구 매트릭스
이 API 참조의 제목은 tools/list가 반환하는 모든 도구를 열거합니다. 실행 가능 패리티 기준은 tests/contracts/engine-contract.test.ts이며, 단위, 통합 및 엔드투엔드 스위트에 집중된 동작이 있습니다.
각 광고된 도구에는 표준 MCP readOnlyHint, destructiveHint, idempotentHint 및 openWorldHint 주석도 포함됩니다. 이러한 주석은 관찰 가능한 서버 동작을 설명합니다: 작성 호출은 자동 저장되고, 교체 및 삭제 호출은 기존 상태를 파괴할 수 있으며, 모든 작업은 구성된 로컬 다이어그램 저장소 내에 유지됩니다. MCP 주석은 권한 부여 경계가 아닌 조언적 힌트입니다. 클라이언트는 여전히 자체 신뢰 및 승인 정책을 적용해야 합니다.
영역 | 광고된 도구 | 테스트된 범위 및 경계 |
컨텍스트 생성/가져오기 |
| 프로세스 또는 협업 루트; 문서화된 Mermaid 하위 집합; 가져오기는 서버의 표준 모델에 맞아야 함 |
컨텍스트 수명 주기 |
| 하나의 활성 다이어그램 및 파일 이름; 로컬 원자적 영속화 |
작성 |
| 아래의 명시적 스키마 열거형 및 타입이 지정된 속성. 임의의 BPMN 요소 또는 확장 속성은 아님 |
관계 |
| 직접 |
쿼리/변경 |
| 페이지네이션된 쿼리 및 문서화된 타입이 지정된 변경 필드 |
내보내기/품질 |
| XML 또는 브라우저 기반 SVG; 계층적 구조 검증; 수평 레이아웃만 |
저장된 파일 |
| 구성된 다이어그램 디렉터리 내부의 샌드박스 액세스 |
생성 도구
new_bpmn
새 BPMN 프로세스 또는 협업 다이어그램을 만들고 현재 컨텍스트로 설정합니다.
{
name: "Order Processing",
type: "process" // or "collaboration" (optional, defaults to "process")
}new_from_mermaid
Mermaid 코드에서 새 BPMN 다이어그램을 생성하고 현재 컨텍스트로 설정합니다.
{
name: "My Process",
mermaidCode: "graph TD\n A[Start] --> B[Task] --> C[End]"
}Mermaid 변환은 의도적으로 제한된 flowchart 하위 집합을 지원합니다:
Mermaid 구성 요소 | BPMN 매핑 | ||
| 태스크 ( | ||
| 토폴로지가 시작/종료로 식별하는 경우 시작/종료 이벤트, 그 외에는 중간 throw 이벤트 | ||
| 배타적(exclusive) 게이트웨이 | ||
| 서브프로세스 | ||
| 백킹 데이터 객체에 연결된 독립형 데이터 객체 참조 | ||
`--> | 레이블 | ` | 시퀀스/메시지 흐름 표시 이름, 레이블은 조건 표현식이 아님 |
| 자체 프로세스를 가진 참여자, 서브그래프 간 엣지는 메시지 흐름이 됨 |
서브그래프가 하나라도 있으면 모든 노드는 정확히 하나의 최상위 서브그래프에 속해야 합니다. 중첩 서브그래프와 데이터 노드에 대한 시퀀스 흐름 연결은 BPMN 내보내기 전에 거부됩니다. 스타일링, 클릭 핸들러, CSS 클래스 및 점선 엣지 모양은 BPMN에 표현되지 않습니다. 허용되는 손실 구문은 변환 경고를 반환합니다. 텍스트 레이블과 서브그래프 이름은 XML 이스케이프 처리되어 BPMN을 통해 변경 없이 왕복합니다.
파일 작업
open_bpmn
기존 BPMN 파일을 열고 현재 컨텍스트로 설정합니다.
{
filename: "my-process.bpmn"
}open_mermaid_file
Mermaid 파일을 열고 BPMN으로 변환하여 현재 컨텍스트로 설정합니다.
{
filename: "my-flowchart.mmd"
}save
현재 다이어그램을 활성 파일에 원자적으로 저장합니다. 새 다이어그램과 열린 다이어그램은 이미 활성 파일 이름을 가지고 있으며, 성공적인 변경은 동일한 파일에 자동 저장됩니다.
{}save_as
현재 다이어그램을 새 파일 이름으로 원자적으로 저장하고 해당 파일 이름을 활성화합니다. 이후 변경 사항은 새 파일에만 반영됩니다. 이전 파일은 변경되지 않은 스냅샷으로 유지됩니다.
{
filename: "my-process.bpmn"
}close
현재 다이어그램을 닫고 컨텍스트를 지웁니다.
{}current
현재 다이어그램에 대한 정보를 가져옵니다.
{}요소 조작 도구
add_event
현재 다이어그램에 이벤트(시작, 종료, 중간, 경계)를 추가합니다.
{
eventType: "start", // start, end, intermediate-throw, intermediate-catch, boundary
name: "Order Received",
eventDefinition: "message", // optional; only BPMN-legal event kind/definition pairs are accepted
eventDefinitionPayload: {
reference: { name: "Order received" } // root ID is generated when omitted
},
position: { x: 100, y: 200 } // optional
}타이머 정의에는 timer: { type: "timeDate" | "timeDuration" | "timeCycle", expression, language? }가 필요합니다. 조건부 정의에는
condition: { expression, language? }가 필요합니다. 오류 및 에스컬레이션 참조에는
code도 포함될 수 있습니다. 보상(compensation) throw에는 activityRef 및
waitForCompletion이 포함될 수 있습니다. 보상 경계 이벤트는 비중단(non-interrupting)입니다.
add_activity
현재 다이어그램에 활동(태스크, 서브프로세스)을 추가합니다.
{
activityType: "userTask", // task, userTask, serviceTask, scriptTask, etc.
name: "Review Order",
position: { x: 250, y: 200 }, // optional
properties: { // optional; Camunda 7 profile only on userTask
assignee: "reviewer",
candidateGroups: ["operations", "approvers"],
dueDate: "${dueDate}"
}
}새 BPMN 및 Mermaid 작성 문서는 extensionProfile: "portable" | "camunda7"를 허용합니다. 기본값은 portable입니다. Portable 모드는 세 가지
벤더 필드를 거부하고 벤더 네임스페이스를 내보내지 않습니다. Camunda 업데이트는
이들 중 하나에 null을 허용하여 해당 XML 속성을 제거합니다. 후보 그룹 항목에는
쉼표를 포함할 수 없습니다. 가져온 BPMN은 실제 Camunda 네임스페이스 사용을 감지하고
다른 경고 없는 확장을 불투명하게 보존합니다.
호출 활동은 bpmn:callActivity로 직렬화됩니다. 선택적
properties.calledElement는 호출 가능한 요소를 식별하는 어휘적 BPMN QName입니다.
현재 다이어그램의 프로세스 ID와 일치할 필요는 없습니다.
활동은 표준 BPMN 다중 인스턴스 루프 특성을 사용할 수 있습니다. 병렬 인스턴스의 경우
isSequential을 false로, 순차 인스턴스의 경우 true로 설정합니다:
{
activityType: "serviceTask",
name: "Process Batch",
properties: {
multiInstance: {
isSequential: false,
loopCardinality: {
body: "requestedInstanceCount",
language: "urn:example:expression-language"
},
completionCondition: {
body: "completedInstanceCount >= requiredInstanceCount",
language: "urn:example:expression-language"
},
loopDataInputRef: "DataObjectReference_Input", // optional ItemAwareElement ID
loopDataOutputRef: "DataObjectReference_Output" // optional ItemAwareElement ID
}
}
}서버는 표현식 본문을 정확히 보존하고 BPMN FormalExpression 값으로
직렬화합니다. 서버는 이를 구문 분석하거나 평가하지 않으므로, 내보낸 다이어그램을
실행할 BPMN 엔진이 지원하는 언어/프로필을 선택하십시오. 루프 데이터 참조는 기존 BPMN
ItemAwareElement 인스턴스를 식별해야 합니다. portable 스키마는
벤더별 collection 속성을 내보내지 않습니다.
벤더별 바인딩 또는 버전 속성은 portable BPMN 방언에서 내보내지지 않습니다.
{
activityType: "callActivity",
name: "Invoke fulfillment",
properties: { calledElement: "FulfillmentProcess" }
}add_gateway
현재 다이어그램에 분기 로직용 게이트웨이를 추가합니다.
{
gatewayType: "exclusive", // exclusive, parallel, inclusive, eventBased, complex
name: "Payment Check",
position: { x: 400, y: 200 } // optional
}add_data_object
표시되는 bpmn:dataObjectReference와 연결된 비렌더링
bpmn:dataObject를 추가합니다. 컬렉션 상태는 백킹 객체에 속합니다. 선택적
itemSubjectRef는 가져온 다이어그램에서 로드된 것과 같은 기존
bpmn:itemDefinition을 식별해야 합니다.
{
name: "Order records",
position: { x: 400, y: 320 }, // optional reference position
isCollection: true, // optional, defaults to false
itemSubjectRef: "ItemDefinition_Order" // optional existing definition ID
}데이터 입력/출력 연결은 활동 소유의 BPMN 구성 요소이며
add_association으로 생성되지 않습니다. add_association은 일반 아티팩트 연결로 유지됩니다.
add_text_annotation
BPMN 텍스트 주석을 추가합니다. 텍스트는 줄 바꿈과 XML 메타 문자를 포함하여
정확히 보존됩니다. textFormat은 BPMN의 text/plain으로 기본 설정됩니다. 위치와
크기는 엔진의 주석 지오메트리로 기본 설정됩니다. associatedElementId를
제공하면 주석에서 해당 요소로의 별도 무방향 BPMN 연결도 생성됩니다.
{
text: "Review the exception path\nbefore approval",
textFormat: "text/markdown", // optional
position: { x: 400, y: 320 }, // optional
size: { width: 220, height: 80 }, // optional
associatedElementId: "UserTask_1" // optional
}connect
현재 다이어그램에서 두 요소를 시퀀스 흐름으로 연결합니다.
{
sourceId: "ExclusiveGateway_1",
targetId: "UserTask_1",
label: "Start Flow", // optional
condition: "amount > 1000", // optional, for conditional sequence flows
conditionLanguage: "FEEL", // optional
conditionType: "bpmn:FormalExpression", // optional
isDefault: false // optional; default flows cannot have conditions
}조건과 기본 흐름은 활동 및 배타적, 포괄적 또는 복합 게이트웨이에서 지원됩니다. 기본 흐름은 조건을 가질 수 없습니다.
add_association
호환되는 프로세스 또는 협업 범위에서 두 BaseElement 사이에 BPMN 연결 아티팩트를
추가합니다. 이는 시퀀스 및 메시지 흐름과 구별됩니다. associationDirection은
BPMN의 None 값으로 기본 설정됩니다.
{
sourceId: "TextAnnotation_1",
targetId: "UserTask_1",
associationDirection: "One" // None, One, or Both
}add_pool
협업 다이어그램에 풀(참여자)을 추가합니다.
{
name: "Customer",
position: { x: 100, y: 100 }, // optional
size: { width: 600, height: 250 }, // optional
blackBox: false // optional; true creates a participant without an owned process
}add_lane
화이트박스 풀에 레인을 추가하고 직접 프로세스 흐름 노드를 할당합니다. 이미 다른 레인에 할당된 노드는 새 레인으로 이동됩니다.
{
poolId: "Participant_1",
name: "Sales Department",
flowNodeIds: ["StartEvent_1", "UserTask_1"],
position: "bottom" // optional
}쿼리 및 조작 도구
list_elements
현재 다이어그램에서 ID 순으로 정렬된 안정적인 요소 및 연결 아티팩트 페이지를
나열합니다. 연결만 나열하려면 elementType: "bpmn:Association"으로 필터링합니다.
{
elementType: "bpmn:Task", // optional filter
limit: 100, // optional, defaults to 100; maximum 500
offset: 0 // optional, defaults to 0
}응답은 { count, returnedCount, offset, limit, hasMore, elements }입니다.
호환성 참고: 페이지네이션 봉투가 이전의 단순 배열 응답을 대체합니다. 해당
계약에 대해 작성된 클라이언트는 이제 elements를 읽어야 합니다. 기존 요소
필드는 의미를 유지하며 추가 메타데이터 필드와 레인 항목이 포함될 수 있습니다.
get_element
특정 요소 또는 연결의 세부 정보를 가져옵니다.
{
elementId: "UserTask_1"
}update_element
요소 속성을 업데이트합니다.
{
elementId: "UserTask_1",
name: "Updated Task Name",
properties: { assignee: "john.doe", candidateGroups: ["reviewers"] },
defaultFlow: "Flow_2" // outgoing flow ID, or null to clear
}delete_element
요소와 그에 연결된 연결을 삭제합니다. 연결 ID를 전달하면 해당 연결만 삭제되고 끝점은 그대로 유지됩니다. 텍스트 주석을 포함한 끝점을 삭제하면 해당 연결로 계단식 삭제됩니다.
{
elementId: "Task_1"
}유틸리티 도구
export
현재 다이어그램을 BPMN 2.0 XML 또는 렌더링된 SVG로 내보냅니다.
{
format: "xml", // "xml" or "svg"; defaults to "xml"
formatted: true // optional; applies to XML and defaults to true
}XML 내보내기는 텍스트를 반환하며 브라우저를 실행하지 않습니다. SVG 내보내기는
Puppeteer를 통해 헤드리스 브라우저를 실행하고 bpmn-js로 렌더링한 후 결과를
살균하고 포함된 image/svg+xml 리소스를 반환합니다. 사용 가능한
Chrome/Chromium 실행 파일이 필요하며 라이선스에 설명된 표시되는 bpmn.io
저작자 표시를 유지합니다.
validate
현재 다이어그램 구조를 검증합니다.
{
level: "full" // "syntax", "semantic", or "full"; defaults to "full"
}검증 수준은 누적됩니다. syntax는 XML을 구문 분석하고 참조를 해석합니다.
semantic은 소유자 인식 이벤트, 흐름, 서브프로세스, 레인 및 협업 규칙을
추가합니다. full은 실행 가능한 프로필 시작/종료/연결성 지침도 추가합니다.
auto_layout
현재 다이어그램의 요소 위치를 자동 레이아웃으로 지정합니다.
{
algorithm: "horizontal" // currently only horizontal is supported
}레이아웃은 기본 5초 예산으로 종료 가능한 하위 프로세스에서 실행됩니다. 벤치마크 기반 사전 검사는 최대 2,000개 요소, 2,000개 연결 및 요소당 10개 연결을 허용합니다. 제한을 초과하는 입력은 레이아웃 전에 거부됩니다. 협업의 경우 각 참여자 프로세스가 독립적으로 순위가 매겨지므로 메시지 흐름이 시퀀스 흐름 순서를 변경하지 않습니다. 자동 레이아웃은 수동 노드 및 컨테이너 좌표를 대체하지만 요청/가져온 참여자 및 레인 치수는 하한으로 유지됩니다. 그런 다음 풀은 겹침 없이 쌓입니다. 레인과 소유 노드는 포함된 상태로 유지되고 메시지 흐름은 최종 풀 배치 후에만 라우팅됩니다. 연결되지 않은 노드는 소유 프로세스 내에서 결정적으로 패킹되고, 중첩 서브프로세스는 의미론적 포함을 유지하며, 블랙박스 참여자는 제작된 프로세스 콘텐츠 없이 요청된 최소 크기를 유지합니다.
파일 관리 도구
list_diagrams
저장된 BPMN 다이어그램의 파일 이름 순으로 정렬된 안정적인 페이지를 나열합니다.
{
limit: 100, // optional, defaults to 100; maximum 500
offset: 0 // optional, defaults to 0
}기존 { count, diagrams, path } 응답 필드는 계속 사용할 수 있습니다.
returnedCount, offset, limit 및 hasMore는 선택된 페이지를 설명합니다.
선택된 페이지의 파일만 포함된 BPMN 메타데이터를 위해 읽히며 집계 메타데이터
읽기는 기본적으로 5 MiB로 제한됩니다.
delete_diagram_file
저장된 다이어그램 파일을 삭제합니다.
{
filename: "old-process.bpmn"
}get_diagrams_path
다이어그램의 저장 경로를 가져옵니다.
{}🔄 컨텍스트 관리
MCP-BPMN 서버는 한 번에 하나의 다이어그램으로 작업하는 상태 저장 설계를 사용합니다:
생성 또는 열기: 새 다이어그램(
new_bpmn,new_from_mermaid)을 생성하거나 기존 다이어그램(open_bpmn,open_mermaid_file)을 엽니다조작: 모든 작업(
add_event,connect등)은 현재 다이어그램에 적용됩니다저장:
save또는save_as로 작업을 저장합니다닫기:
close로 현재 다이어그램을 닫습니다
현재 컨텍스트 없이 작업을 수행하려고 하면 도움이 되는 오류 메시지가 표시됩니다:
No current context. Please create a diagram first with:
- new_bpmn(name) to create a new BPMN diagram
- new_from_mermaid(name, mermaidCode) to convert from Mermaid
- open_bpmn(filename) to open an existing BPMN file
- open_mermaid_file(filename) to convert a Mermaid file💡 예제
예제 1: 승인 프로세스 처음부터 만들기
// Step 1: Create a new process (sets it as current context)
await new_bpmn({ name: "Approval Workflow" });
// Step 2: Add elements (all operations apply to current diagram)
await add_event({ eventType: "start", name: "Request Received" });
await add_activity({ activityType: "userTask", name: "Review Request" });
await add_gateway({ gatewayType: "exclusive", name: "Approved?" });
await add_activity({ activityType: "serviceTask", name: "Process Approval" });
await add_activity({ activityType: "userTask", name: "Handle Rejection" });
await add_event({ eventType: "end", name: "Complete" });
// Step 3: Connect elements
await connect({ sourceId: "StartEvent_1", targetId: "UserTask_1" });
await connect({ sourceId: "UserTask_1", targetId: "ExclusiveGateway_1" });
await connect({ sourceId: "ExclusiveGateway_1", targetId: "ServiceTask_1", label: "Yes" });
await connect({ sourceId: "ExclusiveGateway_1", targetId: "UserTask_2", label: "No" });
await connect({ sourceId: "ServiceTask_1", targetId: "EndEvent_1" });
await connect({ sourceId: "UserTask_2", targetId: "EndEvent_1" });
// Step 4: Apply auto-layout for proper positioning
await auto_layout();
// Step 5: Save and export the diagram
await save_as({ filename: "approval-workflow.bpmn" });
const xml = await export();예제 2: Mermaid에서 부트스트랩 (낮은 토큰 사용에 권장)
// Step 1: Create from Mermaid syntax (much more concise!)
await new_from_mermaid({
name: "Approval Workflow",
extensionProfile: "camunda7",
mermaidCode: `
graph TD
A((Request Received)) --> B[Review Request]
B --> C{Approved?}
C -->|Yes| D[Process Approval]
C -->|No| E[Handle Rejection]
D --> F((Complete))
E --> F
`
});
// Step 2: Apply auto-layout (Mermaid conversion includes basic layout)
await auto_layout();
// Step 3: Make additional edits if needed
await update_element({
elementId: "UserTask_1",
properties: { assignee: "reviewer" }
});
// Step 4: Save and export
await save_as({ filename: "approval-workflow.bpmn" });
const xml = await export();예제 3: 여러 다이어그램 작업
// Create first diagram
await new_bpmn({ name: "Process A" });
await add_event({ eventType: "start" });
await add_activity({ activityType: "task", name: "Task A" });
await save_as({ filename: "process-a.bpmn" });
// Create second diagram (automatically closes the first)
await new_bpmn({ name: "Process B" });
await add_event({ eventType: "start" });
await add_activity({ activityType: "task", name: "Task B" });
await save_as({ filename: "process-b.bpmn" });
// Go back to first diagram
await open_bpmn({ filename: "process-a.bpmn" });
await add_event({ eventType: "end" });
await save();
// Check current diagram info
const info = await current();
console.log(info); // Shows: { name: "Process A", filename: "process-a.bpmn", ... }🗂️ 파일 저장
BPMN 다이어그램은 로컬 파일 시스템에 자동으로 저장됩니다:
Unix/Linux/Mac:
~/mcp-bpmn/Windows:
%USERPROFILE%\mcp-bpmn\
환경 변수를 통한 사용자 지정 경로:
export MCP_BPMN_DIAGRAMS_PATH=/custom/path리소스 제한은 MCP_BPMN_MAX_IMPORT_BYTES,
MCP_BPMN_MAX_MERMAID_BYTES, MCP_BPMN_MAX_LAYOUT_ELEMENTS,
MCP_BPMN_MAX_LAYOUT_CONNECTIONS, MCP_BPMN_MAX_LAYOUT_DENSITY,
MCP_BPMN_MAX_LAYOUT_BYTES, MCP_BPMN_MAX_CONCURRENT_LAYOUTS,
MCP_BPMN_MAX_LISTING_ITEMS, MCP_BPMN_MAX_LISTING_METADATA_BYTES 및
MCP_BPMN_LAYOUT_TIMEOUT_MS로 조정할 수 있습니다. 정상 종료 마감은
MCP_BPMN_SHUTDOWN_TIMEOUT_MS로 재정의할 수 있습니다. 기본값은 가져오기/레이아웃 입력 및
목록 메타데이터 페이지당 5 MiB, 레이아웃 요소/연결 2,000개, 밀도 10, 동시 레이아웃
하위 프로세스 2개, 목록 후보 10,000개, 5,000ms입니다. 레이아웃 기본값은
로컬 희소/밀집 벤치마크에서 비롯됩니다: 2,000/1,999는 약 1.4초,
25/300은 약 4.8초, 26/325는 5초를 초과했습니다.
SIGINT, SIGTERM 또는 stdin EOF 시 서버는 도구 호출 수락을 중지하고 렌더러/레이아웃 하위 프로세스와 stdio 전송을 닫기 전에 수락된 작업과 원자적 영속성이 완료되도록 허용합니다. 정상 종료에는 15초의 하드 마감이 있으며 이를 초과하면 0이 아닌 종료가 강제됩니다.
새 다이어그램은 파일 이름 {ProcessId}_{ProcessName}.bpmn으로 시작합니다. 각 다이어그램은 정확히 하나의 활성 파일 이름을 가집니다. 열기는 열린 파일 이름을 채택하고, save_as는 새 파일이 성공적으로 기록된 후에 파일 이름을 전환합니다. 추가, 업데이트, 삭제, 연결 및 레이아웃 작업은 활성 파일을 직렬화하고 원자적으로 자동 저장합니다. 직렬화 또는 쓰기 실패 시 메모리와 디스크 모두 마지막 성공 상태로 유지됩니다.
🏗️ 아키텍처
기술 스택
TypeScript - 타입 안전 개발
Node.js - 런타임 환경
MCP SDK - Model Context Protocol 구현
Jest - 테스트 프레임워크
핵심 구성 요소
SimpleBpmnEngine- 표준 BPMN 문서 변형, 영속화 및 XML 내보내기BpmnSvgRenderer- 격리된 브라우저 기반bpmn-jsSVG 렌더링DiagramContext- 현재 다이어그램의 상태 저장 컨텍스트 관리BpmnAutoLayoutV2Adapter- BPMN 자동 레이아웃 통합BpmnRequestHandler- MCP 요청 처리MermaidConverter- Mermaid에서 BPMN으로 변환TypeMappings- BPMN 요소 유형 변환IdGenerator- 일관된 ID 생성
프로젝트 구조
mcp-bpmn/
├── src/
│ ├── core/ # Core BPMN engine
│ ├── server/ # MCP server implementation
│ ├── utils/ # Utilities (layout, ID generation)
│ ├── types/ # TypeScript type definitions
│ └── config/ # Configuration
├── tests/
│ ├── unit/ # Unit tests
│ ├── integration/ # Integration tests
│ └── e2e/ # End-to-end tests
├── dist/ # Compiled output
└── docs/ # Documentation🧪 개발
사용 가능한 스크립트
npm run build # Build TypeScript
npm run build:bundle # Build CommonJS bundle
npm run build:watch # Build with watch mode
npm run check # Complete clean contributor/CI quality gate
npm test # Run source-level tests (no build output required)
npm run test:all # Clean, build, and run every test including e2e
npm run test:unit # Run unit tests only
npm run test:integration # Run integration tests only
npm run test:e2e # Run end-to-end tests
npm run lint # Run ESLint
npm run dev # Development mode with hot reload
npm start # Start the MCP server테스트
이 프로젝트는 포괄적인 테스트 범위를 포함합니다. 소스 수준 명령은 dist/를 읽지 않으므로 이전 빌드가 결과에 영향을 미칠 수 없습니다:
단위 테스트: 핵심 기능 테스트
통합 테스트: 핸들러 및 도구 테스트
E2E 테스트: 전체 MCP 프로토콜 테스트
다음으로 테스트를 실행합니다:
npm test # Source-level tests
npm run test:all # Clean build plus all tests
npm run check # Complete clean contributor/CI quality gate
npm run test:coverage # Source-level tests with coverage
npm run test:watch # Source-level tests in watch mode📈 성능
정식 릴리스 아티팩트는 2026-08-22에 Node 25.9.0 및 npm 11.12.1을 사용하여 다음 명령으로 측정되었습니다:
npm pack --dry-run --json해당 명령은 압축 시 약 195 kB, 압축 해제 시 1104270 바이트를 보고했습니다. 이 수치는 npm tarball을 설명하며 설치된 서버가 아닙니다. tarball은 프로덕션 종속성을 포함하지 않는 반면, 설치 시 package.json의 9개 직접 런타임 종속성과 그 전이 종속성을 해결합니다. Puppeteer의 관리형 Chrome 다운로드도 tarball 측정 범위 밖입니다. 이 날짜가 기록된 스냅샷을 영구적인 크기 보장으로 취급하지 말고 현재 아티팩트에 대해 명령을 다시 실행하십시오.
선택적 CommonJS 번들은 릴리스 아티팩트가 아니며 크기 보장이 없습니다. 레이아웃 입력 제한과 기본값 선택에 사용된 날짜가 기록된 벤치마크 관찰은 파일 저장 아래에 문서화되어 있습니다.
🐛 알려진 제한 사항
작성 API는 완전한 BPMN 2.0 범위가 아닌 집중된 BPMN 2.0 하위 집합입니다. 지원되지 않는 가져온 구성은 무손실 편집 대신 거부될 수 있습니다.
connect는 직접 메시지 흐름 작성을 노출하지 않습니다. Mermaid 협업 하위 집합은 하위 그래프 간에 메시지 흐름을 생성할 수 있습니다.add_lane은 화이트박스 풀에서 최상위 레인을 작성합니다. 가져온 중첩 레인 계층을 확장할 수 없습니다.자동 레이아웃은 가로 레이아웃만 지원합니다. 세로 및 방사형 알고리즘은 제공되지 않습니다.
검증은 문서화된 구문, 의미 및 전체 지침 수준을 제공합니다. BPMN XSD 인증 또는 배포 엔진에 대한 검증이 아닙니다.
Camunda 7 작성 프로필은 사용자 태스크의
assignee,candidateGroups및dueDate로 제한됩니다. 일반적인 Camunda 모델러 범위가 아닙니다.SVG 내보내기는 Puppeteer를 통한 Chrome/Chromium이 필요하며 서버 인스턴스당 동시 렌더링을 하나만 허용합니다. XML 워크플로는 브라우저 없이 유지됩니다.
서버는 BPMN 프로세스를 실행, 시뮬레이션 또는 배포하지 않습니다.
🚧 로드맵
계획된 작업과 알려진 격차는 이 릴리스 문서에서 구현된 기능으로 약속되지 않고 Beads 이슈로 추적됩니다.
🤝 기여
기여를 환영합니다! 다음을 수행해 주세요:
저장소를 포크합니다
기능 브랜치를 생성합니다 (
git checkout -b feature/amazing-feature)전체 품질 게이트를 실행합니다 (
npm run check)변경 사항을 커밋합니다 (
git commit -m 'Add amazing feature')브랜치에 푸시합니다 (
git push origin feature/amazing-feature)Pull Request를 엽니다
코드 스타일
엄격 모드의 TypeScript
ESLint 구성 제공
Jest 테스트
기존 커밋 규칙
📝 라이선스
MIT 라이선스 - 자세한 내용은 LICENSE 파일을 참조하세요.
SVG 내보내기는 bpmn-js@17.11.1을 사용합니다. 내보낸 모든 SVG에는 https://bpmn.io에 연결된 보이는 "Powered by bpmn.io" 로고가 포함됩니다. 클라이언트는 해당 표시를 자르거나, 가리거나, 제거해서는 안 됩니다. 종속성의 라이선스 조건은 THIRD_PARTY_NOTICES.md를, 릴리스 결정은 ADR 0002를 참조하세요.
📞 지원
이슈: GitHub Issues
문서: 자세한 가이드는
/docs폴더를 참조하세요
🙏 감사의 말
Model Context Protocol 사양을 기반으로 구축됨
BPMN 표준에 대해 bpmn-js에서 영감을 받음
MCP 개발에 기여한 Anthropic 팀에 감사드립니다
Available Tools
27 toolsadd_activityC
Add an activity to the current diagram
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the activity | |
| ownerId | No | Owning process ID (required when adding to a collaboration) | |
| scopeId | No | Containing process or subprocess ID (defaults to ownerId) | |
| position | No | Position of the activity (optional) | |
| properties | No | Typed activity properties. multiInstance is portable BPMN and its expression bodies are opaque text; assignee, candidateGroups, and dueDate are Camunda 7 user-task fields and require extensionProfile camunda7. Arbitrary qualified names and raw XML are rejected. | |
| activityType | Yes | Type of activity |
Output Schema
| Name | Required | Description |
|---|---|---|
| filename | Yes | Active BPMN filename |
| elementId | Yes | Stable generated or existing BPMN ID |
| elementType | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide no substantive behavior (readOnlyHint=false, destructiveHint=false, etc.). The description does not disclose side effects, return values, or whether the diagram must be open. For a tool that mutates state, this is a major gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one short phrase, but it adds little beyond the tool name. For a tool with six parameters and nested objects, this is under-specification rather than appropriate conciseness. Important context is missing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complex schema (activityType enum, properties, multiInstance, position), the description is woefully incomplete. It explains nothing about activity types, property usage, or how this fits into the diagram editing workflow. An agent gets no contextual help beyond the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%—every parameter has a description in the input schema. The tool description adds nothing about parameters, so the baseline of 3 applies. No additional semantic value is provided beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb-resource pair: 'Add an activity to the current diagram'. It is specific enough to distinguish from siblings like add_event or add_gateway, though it relies partly on the tool name. It is not a tautology.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool instead of alternatives such as add_event or add_gateway. There are no prerequisites, exclusions, or context clues beyond the bare action. An agent must infer usage solely from the name and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_associationC
Add a BPMN association artifact between two compatible BaseElements
| Name | Required | Description | Default |
|---|---|---|---|
| sourceId | Yes | ID of the source BaseElement | |
| targetId | Yes | ID of the target BaseElement | |
| associationDirection | No | Arrow direction for the association; BPMN defaults to None | None |
Output Schema
| Name | Required | Description |
|---|---|---|
| filename | Yes | Active BPMN filename |
| sourceId | Yes | Stable generated or existing BPMN ID |
| targetId | Yes | Stable generated or existing BPMN ID |
| associationId | Yes | Stable generated or existing BPMN ID |
| associationDirection | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide no hints (all false), so the description carries the full burden. It states the action ('Add') but does not disclose side effects, such as whether both elements must exist, what happens if they are incompatible, or whether the association is reversible. The description mentions 'compatible' but never explains what that entails, leaving the agent to guess.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no redundancy. 'Add a BPMN association artifact' immediately conveys the purpose, and the scope is appended succinctly. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's mutation nature (readOnlyHint=false) and lack of annotation support, the description is too sparse. The critical notion of 'compatible' is undefined, and there is no mention of where associations fit in the BPMN model or how they differ from other connections. An agent without deep BPMN domain knowledge would struggle to use this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds no additional parameter context beyond what the schema already provides ('ID of the source BaseElement', etc.). The direction parameter is documented in the schema with its default, so the description does not need to repeat it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Add') and resource ('BPMN association artifact') with a scope ('between two compatible BaseElements'). It distinguishes itself from other add_* tools by naming the association artifact. However, the term 'compatible' is ambiguous and does not specify what types of elements are compatible, slightly diminishing clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives like 'connect' (which likely handles sequence/message flows) or other add_* tools. The description does not mention exclusions, prerequisites, or when an association is appropriate. An agent must infer context from the sibling names, which is insufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_data_objectB
Add a BPMN data object reference and its non-rendered backing data object
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the data object and its visible reference | |
| ownerId | No | Owning process ID (required when adding to a collaboration with multiple pools) | |
| scopeId | No | Containing process or subprocess ID (defaults to ownerId) | |
| position | No | Position of the visible data object reference | |
| isCollection | No | Whether the backing bpmn:DataObject represents a collection | |
| itemSubjectRef | No | ID of an existing bpmn:ItemDefinition referenced by the backing data object |
Output Schema
| Name | Required | Description |
|---|---|---|
| filename | Yes | Active BPMN filename |
| referenceId | Yes | Stable generated or existing BPMN ID |
| dataObjectId | Yes | Stable generated or existing BPMN ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are all false (not read-only, not idempotent, not destructive) but provide no positive behavioral signals. The description adds the key fact that it creates both a visible reference and a non-rendered backing object, which is useful. However, it does not disclose side effects, whether it can overwrite, or any other behavioral traits beyond that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact sentence that front-loads the core action and the dual-artifact nature. It is appropriately sized with no wasted words, though it could add a brief usage note without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 6 parameters, a nested object, and an output schema, the description is adequate but not rich. It explains the core purpose but omits guidance on collaboration edge cases (e.g., when ownerId is needed) or any preconditions. The schema and output schema compensate partly, but the description could do more.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description does not add parameter-level meaning beyond the schema, but the dual-artifact framing helps understand how name/position relate. Since the schema already documents every parameter, no further compensation is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Add') and a specific resource ('BPMN data object reference and its non-rendered backing data object'), clearly identifying what the tool does. It distinguishes this from other add_* tools by focusing on data objects, though it does not explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for adding data objects but does not provide explicit when-to-use or when-not-to-use guidance relative to sibling tools like add_event, add_activity, or add_gateway. The schema hint about ownerId being required in collaborations is useful but lives in the schema, not the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_eventC
Add an event to the current diagram
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Name of the event | |
| ownerId | No | Owning process ID (required when adding to a collaboration) | |
| scopeId | No | Containing process or subprocess ID (defaults to ownerId) | |
| attachTo | No | Required activity ID for boundary events; invalid on other events. Cancel boundaries require a transaction. | |
| position | No | Position of the event (optional) | |
| eventType | Yes | Type of event to add | |
| cancelActivity | No | Whether a boundary event interrupts its attached activity; compensation boundaries must be false | |
| eventDefinition | No | Event definition type. The event kind/type combination must be BPMN-legal. | |
| eventDefinitionPayload | No | Definition details. Timer requires timer; conditional requires condition. Message/signal/error/escalation roots are generated and may be named or assigned a stable ID here. |
Output Schema
| Name | Required | Description |
|---|---|---|
| filename | Yes | Active BPMN filename |
| elementId | Yes | Stable generated or existing BPMN ID |
| elementType | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
All annotations are false, providing no safety or mutation hints, so the description carries the full burden of behavioral disclosure. The description only says 'Add', implying a mutation, but does not disclose side effects, required permissions, or failure modes (e.g., invalid eventType or BPMN constraints). This is inadequate for a complex modeling tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with zero wasted words. It is front-loaded and efficiently states the core purpose. However, given the tool's 9 complex parameters and nested objects, the description could arguably be slightly more informative, but it remains appropriately brief for a schema that is self-documenting.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the presence of an output schema and detailed parameter descriptions, the tool description provides no high-level context about event types (start, end, boundary, etc.), parameter interrelations, or common usage patterns. It fails to synthesize the schema's information into a usable mental model, leaving an agent without guidance on selecting appropriate configurations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with detailed descriptions for each parameter (e.g., `eventType` enum, `attachTo` conditions, `cancelActivity` rules). The description adds no parameter-level information, so it relies entirely on the schema, which is the baseline when coverage is high. No extra value is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool adds an event to the current diagram, specifying the verb (add), resource (event), and context (current diagram). This is distinct from sibling add_* tools because 'event' is a specific BPMN element type, though the description does not explicitly contrast with `add_activity` or `add_gateway`.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives like `add_activity`, `add_gateway`, or `add_pool`. The description simply states the action without mentioning exclusions, contexts, or alternative tools, leaving the agent to infer usage from the name and context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_gatewayC
Add a gateway to the current diagram
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Name of the gateway (optional) | |
| ownerId | No | Owning process ID (required when adding to a collaboration) | |
| scopeId | No | Containing process or subprocess ID (defaults to ownerId) | |
| position | No | Position of the gateway (optional) | |
| gatewayType | Yes | Type of gateway |
Output Schema
| Name | Required | Description |
|---|---|---|
| filename | Yes | Active BPMN filename |
| elementId | Yes | Stable generated or existing BPMN ID |
| elementType | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate this is a mutating operation (readOnlyHint=false) with no idempotency or open-world implications. The description adds minimal behavioral context by specifying it adds to the current diagram, but does not disclose potential side effects, required context (e.g., existing diagram), or behavior when called without a current diagram. Since annotations don't carry detailed behavioral information, the description should have done more.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no wasted words, which is good. However, it is extremely short for a tool with five parameters and a nested object, leaving out any useful structural information. It is appropriately compact but borderline under-specified, so it earns a middle score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (5 parameters, enum gatewayType, nested position object, and no output schema explanation), the description is far too minimal. It doesn't explain the gatewayType choices, the meaning of ownerId and scopeId, or how positioning works. An agent would have to rely entirely on the schema, and even then some context (e.g., relationship to current diagram) is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all parameters are documented in the schema. The description itself adds no parameter semantics; it doesn't mention gatewayType, name, ownerId, scopeId, or position. With high schema coverage, the baseline is 3, and the description provides no extra value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (add) and the resource (gateway) and specifies the target (current diagram). It distinguishes from sibling add_* tools by resource type, though it doesn't mention the gatewayType parameter that differentiates gateway kinds. It is specific enough to identify the tool's purpose but lacks a mention of the required type parameter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 instead of alternatives like add_event, add_activity, or add_pool. There is no mention of prerequisites, context, or conditions for use. The description simply states the action without any usage context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_laneADestructive
Add a lane to a white-box pool and assign flow nodes to it. Existing assignments are moved from their previous lane.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the lane | |
| poolId | Yes | ID of the pool to add lane to | |
| position | No | Position relative to existing lanes | bottom |
| flowNodeIds | Yes | IDs of direct flow nodes in the pool process to assign to this lane |
Output Schema
| Name | Required | Description |
|---|---|---|
| laneId | Yes | Stable generated or existing BPMN ID |
| poolId | Yes | Stable generated or existing BPMN ID |
| filename | Yes | Active BPMN filename |
| assignedFlowNodeCount | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses a key behavioral trait beyond annotations: 'Existing assignments are moved from their previous lane.' This adds specific context about mutation and potential data relocation, complementing the destructiveHint annotation without contradicting it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no fluff. The first sentence front-loads the core action, and the second delivers a critical side-effect. Every word earns its place, making it highly efficient for quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Beyond the schema and annotations, the description covers the essential purpose and the move-behavior. It doesn't mention prerequisites (e.g., pool existence) or error conditions, but with an output schema present and a well-covered input schema, this is adequate for correct invocation in most cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides full descriptions for all parameters (coverage 100%). The description does not add new meaning about params like position or flowNodeIds beyond what the schema states, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Add a lane to a white-box pool and assign flow nodes to it.' It also notes the side-effect of moving existing assignments, which distinguishes it from simple add operations like add_pool. This makes the tool's purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context (adding lanes to a white-box pool) but does not explicitly contrast with siblings like add_pool or add_activity. There is no 'use this when' or 'instead of' guidance, leaving the agent to infer from the resource type.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_poolB
Add a pool to the current collaboration diagram
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the participant/pool | |
| size | No | Size of the pool (optional) | |
| blackBox | No | Create a black-box participant without an owned process | |
| position | No | Position of the pool (optional) |
Output Schema
| Name | Required | Description |
|---|---|---|
| blackBox | Yes | |
| filename | Yes | Active BPMN filename |
| elementId | Yes | Stable generated or existing BPMN ID |
| processId | No | Stable generated or existing BPMN ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are all false (readOnlyHint: false, idempotentHint: false, etc.), so the description carries the full burden of behavioral disclosure. 'Add' implies a state mutation, but the description does not explain side effects, whether the current diagram must be open, or what happens to existing elements. It offers no additional behavioral context beyond the bare action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no filler or redundancy. It is front-loaded with the main action and delivers exactly the necessary information. No unnecessary details or repetition, making it a model of conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema and full parameter documentation, so return values and parameter details are covered. However, the description does not provide usage context such as whether a diagram must be active, or how this relates to 'add_lane' (a common alternative). Given its simplicity and the availability of structural information, a 3 reflects a minimally adequate description with a notable gap in contextual guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% parameter coverage, so each parameter is documented in the schema itself. The description adds no extra meaning to parameters like 'name', 'size', 'blackBox', or 'position'. Given high schema coverage, the baseline is 3, and the description does not raise it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'add', the object 'pool', and the context 'current collaboration diagram'. It distinguishes the tool from siblings like add_association, add_event, and add_lane by naming a specific BPMN element and its scope. A 4 rather than 5 because it lacks any elaboration on what a 'pool' means in this domain, though the sibling set implies a BPMN context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as add_lane or add_participant (if any exist). The description does not mention prerequisites, constraints, or situations where one would choose this over a sibling. Completely absent, earning a 2.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_text_annotationA
Add a BPMN text annotation, optionally associated with an existing element
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | Size of the annotation | |
| text | Yes | Annotation text preserved exactly, including whitespace, line breaks, and metacharacters | |
| position | No | Position of the annotation | |
| textFormat | No | Optional text media type; BPMN defaults to text/plain | |
| associatedElementId | No | Existing element to link from the annotation with a separate undirected BPMN association |
Output Schema
| Name | Required | Description |
|---|---|---|
| filename | Yes | Active BPMN filename |
| annotationId | Yes | Stable generated or existing BPMN ID |
| associationId | No | Stable generated or existing BPMN ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, indicating mutation. The description adds the behavioral fact that an association may be created, which is beyond the annotation's binary mutation flag. However, it does not disclose side effects on the existing element (e.g., whether it modifies the element) or any failure modes. Given annotations carry the core mutation trait, this is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler. It is front-loaded with the core action and resource, and the optional clause adds value without bloat. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 5 parameters (including nested objects) and an output schema. The description covers the fundamental action but omits any mention of context, such as that the annotation is added to the current diagram or any error conditions. However, given the schema fully documents parameters and the output schema exists, the description is minimally sufficient but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, meaning all parameters have descriptive text. The tool description adds no parameter-specific details beyond highlighting the optional association, which is already captured in the associatedElementId description. Thus the description does not meaningfully augment the schema, warranting the baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Add' and the specific resource 'BPMN text annotation', and notes the optional association. This distinguishes it from sibling tools like add_event or add_activity, which target different element types. The 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance on when to use this tool versus alternatives. It mentions 'optionally associated' but does not explain when linking is appropriate or when to use add_association instead. There are no stated prerequisites, exclusions, or conditions for choosing this over other add-* tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
auto_layoutADestructiveIdempotent
Apply deterministic automatic layout. Collaboration processes are ranked independently; requested pool/lane sizes are lower bounds, manual coordinates are replaced, disconnected nodes stay in their owner, and message flows route after non-overlapping pool placement.
| Name | Required | Description | Default |
|---|---|---|---|
| algorithm | No | Layout algorithm to use | horizontal |
Output Schema
| Name | Required | Description |
|---|---|---|
| filename | Yes | Active BPMN filename |
| warnings | Yes | |
| algorithm | Yes | |
| elementCount | Yes | |
| connectionCount | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses specific behavioral traits beyond annotations: it explains that pool/lane sizes act as lower bounds, manual coordinates are replaced, disconnected nodes stay with their owner, and message flows route after pool placement. These details align with the destructiveHint and idempotentHint annotations, adding value by clarifying exact effects. No contradiction exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, information-dense sentence that front-loads the core action ('Apply deterministic automatic layout') before listing behaviors. It is concise, with no filler, though the list of clauses is a bit packed but still readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a layout tool with one optional parameter and an output schema, the description thoroughly covers the essential behaviors and constraints. It explains deterministic behavior, rank ordering, size bounds, coordinate replacement, and routing logic, leaving no ambiguity about what the operation does. The output schema handles return values, so nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema fully documents the single parameter 'algorithm' with an enum and default, achieving 100% coverage. The description adds no additional meaning about the parameter or its values. Since the schema already covers it, a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Apply deterministic automatic layout' with a specific verb and resource. It goes beyond a simple statement to enumerate key behavioral rules (e.g., collaboration processes ranked independently, manual coordinates replaced), making its purpose precise and unambiguous. It is easily distinguishable from siblings, none of which perform layout operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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. It does not mention any conditions, prerequisites, or exclusions. While it implies use for automatic layout, it fails to explicitly state the scenario or contrast with manual layout or other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
closeBIdempotent
Close the current diagram and clear the context
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | |
| filename | Yes | Active BPMN filename |
| processId | Yes | Stable generated or existing BPMN ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true and destructiveHint=false, so the description doesn't need to restate those. It adds the side effect of clearing the context, which is beyond the annotations, but does not clarify whether changes are saved or discarded, or if the action is reversible. Given the annotations, a 3 is appropriate; more detail would be better for a state-changing operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the primary action and includes the secondary effect. No unnecessary words or repetition. It is appropriately concise for a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters and an output schema present, the description covers the essential behavior. However, given the large set of sibling tools, it lacks context about when to use 'close' versus alternatives like 'save' or 'delete'. The description is functional but not rich enough for an agent to confidently choose it in all relevant scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the input schema is empty with 100% coverage. As per the baseline for 0-parameter tools, the description does not need to elaborate on parameters, and it doesn't. This is fully adequate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Close the current diagram and clear the context'), which is specific and unambiguous. It identifies the resource (diagram) and the extra behavior (clearing context). However, it does not explicitly differentiate from sibling tools like 'save' or 'delete', though the action is distinct enough that the purpose is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as 'save', 'new_bpmn', or 'delete_diagram_file'. The description only states what it does, not the context in which it should be chosen. With many sibling tools, an agent is left to infer when closing is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connectC
Connect two elements in the current diagram
| Name | Required | Description | Default |
|---|---|---|---|
| label | No | Label for the connection (optional) | |
| sourceId | Yes | ID of the source element | |
| targetId | Yes | ID of the target element | |
| condition | No | Formal condition expression for a sequence flow; cannot be combined with isDefault | |
| isDefault | No | Make this the source activity/gateway default flow; default flows cannot have conditions | |
| conditionType | No | BPMN expression type; only valid when condition is supplied (defaults to bpmn:FormalExpression) | |
| conditionLanguage | No | Language URI or identifier; only valid when condition is supplied |
Output Schema
| Name | Required | Description |
|---|---|---|
| filename | Yes | Active BPMN filename |
| sourceId | Yes | Stable generated or existing BPMN ID |
| targetId | Yes | Stable generated or existing BPMN ID |
| connectionId | Yes | Stable generated or existing BPMN ID |
| connectionType | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide no positive hints (all false), so the description carries the full burden of behavioral disclosure. It fails to mention that this modifies the diagram, whether it validates element existence or compatibility, or any side effects. The agent has no idea what the operation actually does beyond a generic 'connect'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (one sentence), but it lacks the substance needed to be useful. It doesn't front-load key constraints or provide any structure that helps an agent parse intent quickly. While brevity is good, this is under-specification rather than efficient framing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 7 parameters including condition, isDefault, and language options, the description is grossly incomplete. An agent has no high-level understanding of how to use these together (e.g., when to supply a condition vs setting a default flow), or what the operation returns (despite an output schema, the description doesn't set context). The tool needs far more narrative to be safely invoked.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all parameters are documented in the schema. The description itself adds no extra meaning beyond the generic notion of connecting, which is the baseline expectation for high coverage. It does not explain relationships between parameters (e.g., condition vs isDefault) outside what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb+resource ('Connect two elements in the current diagram') that conveys the basic action. It does not differentiate from sibling tools like add_association, which might represent a similar connection operation, so it lacks explicit distinguishing context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as add_association, or on the prerequisites (e.g., elements must exist). With many sibling tools and complex connection semantics, the complete absence of routing information leaves an agent unable to choose correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
currentBRead-onlyIdempotent
Get information about the current diagram
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| current | Yes | |
| diagram | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is clear. The description adds nothing beyond the name about behavior—it doesn't mention output format, scope, or any side effects. With strong annotations, a 3 is appropriate because it adds minimal context beyond structured data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, concise sentence with no wasted words. The core action and target are front-loaded. Perfectly sized for a zero-parameter read tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema that presumably defines the return structure, so that gap is covered. However, the description doesn't clarify what 'information' means in practice—whether it returns the full diagram model, just properties, or a summary. Given the broad sibling set of read-like tools (list_elements, get_element, export), a slightly more explicit scope would make it self-contained. It's minimally complete but leaves ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has zero parameters, so schema description coverage is trivially 100%. With no parameters to explain, the baseline is 4. The description doesn't need to elaborate on parameters; it correctly avoids redundant parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb ('Get') and a resource ('current diagram'), but 'information' is vague—it doesn't specify whether this returns metadata, elements, or both. It's distinguishable from get_element (which targets a specific element) but not precisely from list_elements or export. The purpose is understandable but under-specified.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives like list_elements, get_element, or export. It does not state what kind of 'information' it returns or when a caller should prefer this over sibling read operations. The usage context must be inferred entirely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_diagram_fileBDestructiveIdempotent
Delete a saved BPMN diagram file
| Name | Required | Description | Default |
|---|---|---|---|
| filename | Yes | Filename of the diagram to delete |
Output Schema
| Name | Required | Description |
|---|---|---|
| filename | Yes | |
| closedCurrent | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description simply says 'delete', which is consistent with the destructiveHint annotation, but adds no extra behavioral context such as irreversibility, error handling for missing files, or side effects. Given the annotations already declare destructiveHint=true and idempotentHint=true, the description contributes no new information about the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that states the action and object without extraneous details. It is front-loaded with the verb, and every word earns its place. There is no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, one-parameter delete operation, the description is mostly sufficient, and the presence of an output schema means return values need not be explained. However, it lacks usage context (when to use vs. alternatives) and practical constraints (e.g., availability of the file), which an agent would benefit from. Given the sibling tool delete_element exists, the absence of any differentiation weakens completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The parameter 'filename' is fully described in the schema ('Filename of the diagram to delete'), and schema coverage is 100%. The description adds no further meaning beyond the schema; it only reiterates that the file is a BPMN diagram, which is already implicit. This meets the baseline but does not enhance understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'delete' and the resource 'a saved BPMN diagram file', which distinguishes it from sibling tools like delete_element that target elements rather than files. It is specific and unambiguous, though it does not elaborate on what 'saved' means in context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 delete_element or close. It does not mention prerequisites (e.g., the file must exist) or situations where deletion is not appropriate, leaving the agent to infer usage solely 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.
delete_elementADestructiveIdempotent
Delete an element (cascading incident connections) or a connection while preserving its endpoints
| Name | Required | Description | Default |
|---|---|---|---|
| elementId | Yes | ID of the element to delete |
Output Schema
| Name | Required | Description |
|---|---|---|
| filename | Yes | Active BPMN filename |
| elementId | Yes | Stable generated or existing BPMN ID |
| deletedKind | Yes | |
| removedConnectionCount | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, so the agent knows it is a destructive, repeatable operation. The description adds value beyond these by specifying that element deletion cascades incident connections while connection deletion preserves endpoints. This is crucial context not present in annotations. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact sentence that front-loads the primary action and packs the two modes and their effects efficiently. Every word earns its place, with no redundancy or filler. It is optimally sized for the complexity of the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter destructive tool with annotations covering safety and an output schema present, the description is largely complete. It explains the two deletion modes and their different implications. Minor omission: it does not explicitly state what happens to the endpoints of incident connections when deleting an element (beyond implying they are cascaded), which could be clarified. Overall, adequate for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema describes elementId as 'ID of the element to delete' with 100% coverage, but the tool description reveals that elementId can also refer to a connection, adding meaning beyond the schema. It clarifies that the ID serves double duty. However, it does not specify how an agent can distinguish an element ID from a connection ID, which is a minor gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Delete') and resource ('an element or a connection'), and concisely differentiates the two modes with their distinct effects. It is clear what the tool does overall, though it does not explain how it determines which mode applies (which is left to the parameter value).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides implicit usage guidance by explaining that it can delete either an element (cascading incident connections) or a connection (preserving endpoints), which helps an agent choose the appropriate action. However, it does not explicitly state when to prefer this tool over alternatives (no other element-deletion tool exists among siblings) or provide conditions for exclusion. The guidance is functional but not explicit about scenarios where deletion should not be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
exportARead-onlyIdempotent
Export the current diagram as BPMN XML text or an embedded image/svg+xml resource rendered by bpmn-js
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Export format | xml |
| formatted | No | Whether to format the output (for XML) |
Output Schema
| Name | Required | Description |
|---|---|---|
| uri | No | |
| format | Yes | |
| filename | Yes | Active BPMN filename |
| mimeType | Yes | |
| processId | Yes | Stable generated or existing BPMN ID |
| byteLength | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds that the output is 'rendered by bpmn-js', which is a behavioral detail beyond the annotations. It does not contradict any annotation; it is consistent. The description doesn't need to repeat safety hints since annotations carry that, and it adds value with the rendering detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that is front-loaded with the action ('Export') and resource ('current diagram'), followed by the output formats and rendering detail. There is zero filler or repetition. Every word contributes to clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that the output schema exists (as indicated by context signals), the description does not need to explain return values. The tool has two optional parameters that are fully documented in the schema, and the description covers purpose and output formats. Annotations cover safety. Nothing needed for an agent to call this tool successfully is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema describes both parameters: 'format' with enum values and a default, and 'formatted' with a description. Schema description coverage is 100%, so the schema already documents parameters thoroughly. The description does not add any extra meaning about parameter syntax, alternatives, or nuances beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific verb 'export' and the resource 'current diagram', and specifies the two possible output formats (BPMN XML or svg+xml). This distinguishes it from sibling tools like save and save_as, which persist files, while export produces a serialized representation. No ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context that this tool is for exporting the current diagram in a specific format, which is implicitly distinct from saving or opening. It does not explicitly mention when not to use it or name alternatives, but the purpose is self-evident given the format and the 'current diagram' scope. A slight gap is the lack of explicit routing to save_as for persistence, but the context is adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_diagrams_pathARead-onlyIdempotent
Get the path where BPMN diagrams are saved
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is clear. However, the description adds no additional behavioral context, such as what the returned path looks like or any side effects, which is minimal over 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
One concise sentence with no filler. The purpose is stated directly and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a trivial getter with no parameters and an existing output schema, the description is adequate. It doesn't provide context on typical use cases, but that's not necessary given its simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the description adds no parameter meaning. According to the rubric, 0 params has a baseline of 4, which is appropriate since there is nothing to explain.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves the path where BPMN diagrams are saved. It is specific and distinguishes from siblings like open_bpmn or list_diagrams, as it returns the location rather than contents or list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives, such as list_diagrams or current. It only states what it does, leaving the agent to infer usage from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_elementBRead-onlyIdempotent
Get details of a specific element or association in the current diagram
| Name | Required | Description | Default |
|---|---|---|---|
| elementId | Yes | ID of the element |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | Stable generated or existing BPMN ID |
| kind | No | |
| name | No | |
| size | No | |
| type | Yes | |
| ownerId | No | Stable generated or existing BPMN ID |
| scopeId | No | Stable generated or existing BPMN ID |
| incoming | No | |
| outgoing | No | |
| position | No | |
| sourceId | No | Stable generated or existing BPMN ID |
| targetId | No | Stable generated or existing BPMN ID |
| waypoints | No | |
| processRef | No | Stable generated or existing BPMN ID |
| properties | No | |
| defaultFlow | No | Stable generated or existing BPMN ID |
| associationDirection | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds the useful context that it operates on 'specific' elements and associations within the 'current diagram', which is not in the annotations. However, it does not disclose behavior on missing IDs or error conditions; the output schema likely covers return format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with zero redundancy. It states the action, scope, and resource type efficiently, making it easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the essential scope ('current diagram', 'element or association') and safety is fully provided by annotations. The presence of an output schema means return values are documented elsewhere. It omits potential error behavior for nonexistent IDs, but that is a minor gap for such a simple retrieval tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides a description for elementId ('ID of the element'), and the description ('Get details of a specific element or association') implies it is the target identifier. No additional semantic detail is added beyond the schema, and with 100% schema coverage the baseline is 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'details of a specific element or association', and scopes it to 'the current diagram'. It distinguishes from list_elements (which lists) and update_element (which updates) by emphasizing specificity, though it does not explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 its siblings, such as list_elements for enumeration or update_element for modification. The word 'specific' implies single-element retrieval, but no explicit selection criteria or alternative routing is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_diagramsARead-onlyIdempotent
List diagrams in stable filename order as { count, returnedCount, offset, limit, hasMore, diagrams, path }; request the next page with offset + returnedCount
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum results to return (default 100, max 500) | |
| offset | No | Zero-based offset in the stable result order |
Output Schema
| Name | Required | Description |
|---|---|---|
| path | Yes | |
| count | Yes | |
| limit | Yes | |
| offset | Yes | |
| hasMore | Yes | |
| diagrams | Yes | |
| returnedCount | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare read-only, idempotent, and non-destructive behavior, so the description's job is lighter. It adds valuable context about stable ordering and pagination mechanics, going beyond what annotations provide. Does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that starts with the core purpose, then compactly provides return structure and pagination instruction. No wasted words; everything is essential and immediately useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list operation, the description covers the result format, pagination logic, and ordering guarantee. The output schema (if present) is not shown, but the description explicitly lists the response fields, making it self-contained. No missing information that an agent would need to call this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for both parameters (limit, offset), but the description enhances understanding by explaining offset in the context of 'stable filename order' and pagination, which is not fully captured by the schema. This adds functional meaning beyond parameter names and defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb ('List') and resource ('diagrams') with the specific ordering definition ('stable filename order'). It also specifies the return shape, making it unambiguous what the tool does and how it differs from other diagram operations like open, save, or export.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit pagination usage ('request the next page with offset + returnedCount') which is key to correct invocation. It doesn't explicitly mention when not to use this tool, but no direct alternative exists among siblings for listing diagrams, so the guidance is sufficient for the use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_elementsARead-onlyIdempotent
List elements and association artifacts in stable ID order as { count, returnedCount, offset, limit, hasMore, elements }; request the next page with offset + returnedCount
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum results to return (default 100, max 500) | |
| offset | No | Zero-based offset in the stable result order | |
| elementType | No | Filter by element type (optional) |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| limit | Yes | |
| offset | Yes | |
| hasMore | Yes | |
| elements | Yes | |
| returnedCount | Yes |
TDQS
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 behavioral traits beyond annotations: it specifies the response envelope, the stable sort order, and the pagination mechanism (offset + returnedCount). This gives the agent expectations about ordering and data volume that structured metadata alone cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact sentence that front-loads the core purpose, then specifies the response format, and closes with pagination guidance. Every clause earns its place; there is no fluff or redundancy. It respects the token budget while delivering high-value details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists (covering return values), the annotations cover read-only/idempotent safety, and the input schema fully documents all three parameters, the description is complete for an agent to call this tool correctly. It adds the crucial non-obvious detail of stable ordering and pagination, making it self-sufficient for both initial listing and subsequent page requests.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and every parameter (limit, offset, elementType) has a description, so the baseline is 3. The description adds contextual semantics for offset by tying it to the stable ID order and the pagination rule (offset + returnedCount), which clarifies how offset behaves beyond the schema's 'Zero-based offset' note. This elevates it above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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: 'List elements and association artifacts'. It further specifies the ordering ('stable ID order') and the exact response shape. This clearly distinguishes list_elements from sibling tools like get_element (targeted retrieval) and delete_element (mutation), so an agent can select it without needing to inspect the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not name alternative tools or give explicit when-not-to-use guidance, but it provides actionable usage context: it explains the pagination contract ('request the next page with offset + returnedCount'), which is the core operational detail. This is clear context, though it stops short of contrasting with siblings like get_element or export.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
new_bpmnA
Create a new BPMN diagram and set it as current context
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the diagram | |
| type | No | Type of diagram to create | process |
| extensionProfile | No | BPMN extension profile; portable emits no vendor attributes | portable |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | |
| type | Yes | |
| filename | Yes | Active BPMN filename |
| processId | Yes | Stable generated or existing BPMN ID |
| extensionProfile | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that it creates a diagram and sets it as the current context, which is a side effect. Annotations are minimal (all false), so the description carries the burden. However, it doesn't mention whether the diagram is persisted, what happens to the previous current diagram, or any error conditions. This is adequate but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the primary action and key side effect. No filler or redundant content. It efficiently conveys the essence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple creation tool with fully documented parameters and an output schema, the description is mostly adequate but lacks usage guidance and detailed behavioral context (e.g., where the diagram is stored, effect on existing state). It covers the minimum but leaves some gaps that an agent might need.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for all three parameters (name, type, extensionProfile), each with clear descriptions and enums. The description adds no extra meaning beyond what the schema provides. Baseline 3 applies since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (create) and resource (BPMN diagram) and an additional effect (set as current context). It distinguishes from siblings like open_bpmn (open existing) and new_from_mermaid (create from mermaid), making the tool's purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance on when to use this tool versus alternatives. It doesn't mention conditions, exclusions, or when to prefer other tools like new_from_mermaid for mermaid-derived diagrams. Usage context is only implied by the tool's name and sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
new_from_mermaidA
Create a new BPMN diagram from Mermaid code and set it as current context
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name for the new diagram | |
| mermaidCode | Yes | Mermaid flowchart code to convert | |
| extensionProfile | No | BPMN extension profile for the authored document | portable |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | |
| type | Yes | |
| filename | Yes | Active BPMN filename |
| warnings | Yes | |
| flowCount | Yes | |
| nodeCount | Yes | |
| processId | Yes | Stable generated or existing BPMN ID |
| extensionProfile | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=false, so safety is covered. The description adds the behavioral trait of setting the new diagram as the current context, which is not in annotations. This is useful context beyond the structured data, though it does not disclose error handling or prerequisites.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that states the action, the input, and the side effect without any redundancy. Every word contributes to the meaning, making it highly concise and structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a straightforward creation operation with a side effect. The description states the core purpose and the current-context behavior. An output schema exists (as indicated), so return values are presumably covered elsewhere. The description is sufficient for an agent to understand how to invoke it correctly, though it does not mention potential failure modes or prerequisites.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema descriptions fully cover all three parameters (name, mermaidCode, extensionProfile) with 100% coverage. The tool description does not add any further meaning beyond what the schema already provides, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Create'), a resource ('a new BPMN diagram from Mermaid code'), and a distinct side effect ('set it as current context'). It differentiates from siblings like new_bpmn (likely empty diagram) and open_mermaid_file (opens existing file) by emphasizing the conversion and context-setting behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you have Mermaid code and want to convert it to BPMN, but it does not explicitly state when to use this tool versus alternatives such as new_bpmn or open_mermaid_file. There is no 'use this when' or 'prefer this over' guidance, leaving the agent to infer context from the purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_bpmnAIdempotent
Open an existing BPMN file and set it as current context
| Name | Required | Description | Default |
|---|---|---|---|
| filename | Yes | Filename of the BPMN diagram to open |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | |
| type | Yes | |
| filename | Yes | Active BPMN filename |
| processId | Yes | Stable generated or existing BPMN ID |
| elementCount | Yes | |
| connectionCount | Yes | |
| extensionProfile | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose idempotency (idempotentHint: true) and non-destructiveness (destructiveHint: false). The description adds the key behavioural trait of switching the current context, which is not captured by annotations. It does not discuss failure modes, but given the annotations and the simple nature of the tool, this 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence states the action and effect with zero filler. Every word adds value, and the structure is optimally compact for a tool with one parameter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter, an output schema, and annotations that cover safety, this description is complete. It explains what the tool does (opens and sets context), and nothing else is needed for an agent to invoke it correctly. The existence of the output schema relieves the description from explaining return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully describes the single parameter ('filename': 'Filename of the BPMN diagram to open') with 100% coverage. The description does not add any extra meaning about the parameter (e.g., path patterns, extensions, or constraints), so it merely echoes the schema. A baseline of 3 is appropriate when the schema carries the semantic load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Open'), a clear resource ('existing BPMN file'), and an explicit effect ('set it as current context'). This distinguishes it from siblings like new_bpmn (create), open_mermaid_file (different format), and save (persist), making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies usage: open an existing BPMN diagram to make it the working context. It does not explicitly name alternatives or conditions for when not to use it, but the resource type ('existing BPMN') implicitly rules out new files or other formats. A named alternative would be stronger, but the core context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_mermaid_fileA
Open a Mermaid file, convert it to BPMN, and set as current context
| Name | Required | Description | Default |
|---|---|---|---|
| filename | Yes | Filename of the Mermaid file to open and convert | |
| extensionProfile | No | BPMN extension profile for the authored document | portable |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | |
| type | Yes | |
| filename | Yes | Active BPMN filename |
| warnings | Yes | |
| flowCount | Yes | |
| nodeCount | Yes | |
| processId | Yes | Stable generated or existing BPMN ID |
| sourceFilename | Yes | |
| extensionProfile | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as non-read-only and non-destructive, and the description adds the key side effect of setting current context. It does not disclose potential impacts on unsaved work or file modifications, but given the annotation coverage, the provided behavioral details are adequate and non-contradictory.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the primary action (open, convert, set context). Every word adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core purpose and the side effect of setting current context, while an output schema exists and all parameters are fully described. It does not explicitly mention the extensionProfile's role, but that is a minor omission given the schema's clarity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters (filename and extensionProfile) have full descriptions in the schema, including the enum for extensionProfile. The tool description itself adds no extra parameter context, which is acceptable because schema coverage is 100%.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb-resource-action: open a Mermaid file, convert it to BPMN, and set it as current context. This distinguishes it from siblings like open_bpmn (which opens BPMN files) and new_from_mermaid (which creates new BPMN from Mermaid).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The context where this tool should be used is implied: when an existing Mermaid file needs to be converted and made the active diagram. However, it does not explicitly mention alternatives or conditions for selection, leaving the agent to infer from tool names and sibling descriptions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
saveADestructiveIdempotent
Save the current diagram to its file (error if no filename set)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | |
| filename | Yes | Active BPMN filename |
| processId | Yes | Stable generated or existing BPMN ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, covering the safety profile. The description adds the error condition (error if no filename set), which is useful behavioral context, but little else about side effects. It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the primary action and immediately notes the key error condition. Every word earns its place, with no filler or repetition of schema information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and an output schema exists, the description adequately covers what the tool does and a critical edge case (missing filename). It does not discuss permissions or asynchronous behavior, but these are minor for a save operation with existing annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
This tool has zero parameters, so the description does not need to explain parameter semantics. The baseline of 4 applies because there is nothing to elaborate on; the description correctly avoids adding irrelevant details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the exact action (save), the resource (current diagram), and the destination (its file), which immediately distinguishes it from save_as. The error condition adds precision. This is a clear, unambiguous purpose for an agent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies that a filename must already be set to avoid an error, which indirectly suggests using save_as when no filename is set, but it does not explicitly name save_as or other alternatives. This leaves usage guidance implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_asAIdempotent
Save the current diagram with a new filename
| Name | Required | Description | Default |
|---|---|---|---|
| filename | Yes | New filename for the diagram |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | |
| filename | Yes | Active BPMN filename |
| processId | Yes | Stable generated or existing BPMN ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false (write operation) and destructiveHint=false. The description adds the key 'new filename' behavior but does not disclose side effects such as whether the current diagram's internal file reference changes to the new filename, or what happens if a file with the same name already exists (overwrite vs. error). The description adds minimal 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, succinct sentence with no extraneous words. It front-loads the verb and directly conveys the essential action and differentiator. There is zero waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (one parameter) and has an output schema, so return values are likely covered. However, the description omits important behavioral nuances: what happens to the current diagram's file association after save_as, and whether existing files are overwritten. Given the presence of a sibling 'save' tool, an explicit clarification of when to use save_as versus save would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (the 'filename' parameter has a clear description: 'New filename for the diagram'). The tool description essentially repeats this information without adding further meaning. The baseline of 3 applies since the schema fully documents the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Save the current diagram with a new filename' clearly states the action (save), the resource (current diagram), and the key differentiator (with a new filename) that distinguishes it from the sibling 'save' tool. An agent can immediately understand what this tool does and how it differs from the alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context (use when you want to save under a different name) but does not explicitly state when to prefer this over 'save' or mention any exclusions. The differentiation is implicit via the phrase 'with a new filename' rather than an explicit 'use this when you want to keep the original file intact'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_elementADestructiveIdempotent
Update properties of an element in the current diagram
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New name for the element | |
| elementId | Yes | ID of the element to update | |
| properties | No | Typed properties to update. isCollection and itemSubjectRef apply only to data object references; null clears itemSubjectRef, assignee, candidateGroups, or dueDate. Unknown and namespace-qualified fields are rejected. | |
| defaultFlow | No | Outgoing sequence-flow ID to make the element default, or null to clear its default flow |
Output Schema
| Name | Required | Description |
|---|---|---|
| filename | Yes | Active BPMN filename |
| elementId | Yes | Stable generated or existing BPMN ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and idempotentHint=true, so the description does not need to restate that it mutates. However, the description adds no additional behavioral context, such as whether updating is partial (only provided properties change), whether null clears fields, or what happens if the element does not exist. Given the sparse description, the agent must rely on the schema for these nuances. The description is consistent with annotations but adds minimal value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It clearly communicates the action and target. This is exemplary conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has a complex schema with nested properties and an output schema, and the description is very brief. While the schema carries detailed parameter semantics and annotations indicate destructive behavior, the description does not explain the partial-update semantics (unchanged properties remain) or that certain fields apply only to specific element types. An agent would need to read the schema carefully. For a mutation tool with this complexity, the description could provide more context, making it adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% – each parameter (elementId, name, defaultFlow, and the properties object) already has a detailed description in the schema, including notes on clearing fields and restrictions. The tool description itself adds no semantic information about parameters, so it does not compensate beyond what the schema provides. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb ('Update') and a specific resource ('properties of an element in the current diagram'). This distinguishes it from sibling tools like get_element, delete_element, and add_* tools. The mention of 'current diagram' adds context. It is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance on when to use this tool versus alternatives, such as save (which persists the whole diagram) or get_element (to read). Usage is implied by the name and description, but there is no directing of the agent to consider alternatives or exclusions. It is acceptable but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validateARead-onlyIdempotent
Validate the current diagram using cumulative BPMN checks: syntax parses XML and resolves references; semantic adds owner-aware event, flow, subprocess, lane, and collaboration rules; full also adds executable-profile start/end/connectivity guidance
| Name | Required | Description | Default |
|---|---|---|---|
| level | No | Cumulative validation level: syntax; syntax + semantic; or syntax + semantic + executable-profile guidance | full |
Output Schema
| Name | Required | Description |
|---|---|---|
| level | Yes | |
| valid | Yes | |
| errors | Yes | |
| issues | Yes | |
| summary | Yes | |
| filename | Yes | Active BPMN filename |
| warnings | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, establishing the safety profile. The description adds valuable behavioral context by detailing what each validation level actually does—syntax parsing and reference resolution, semantic rules for events/flows/subprocesses/lanes/collaborations, and executable-profile guidance for full. This goes beyond the annotations and helps the agent understand what the validation entails, without contradicting 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, but it is well-structured with semicolons to separate the levels, and it front-loads the primary action ('Validate the current diagram'). It avoids unnecessary words while conveying all key information. The length is appropriate for the complexity of the tool's levels, and it doesn't repeat what the schema already states.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one optional parameter, no required params), the description adequately covers the validation levels and what they involve. An output schema exists, so the return value is documented elsewhere. The description is complete for an agent to understand how to invoke the tool and what to expect from each level, with no missing critical details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers the 'level' parameter with enum values and a description, but the tool description provides much richer semantics by explaining exactly what each level checks. For example, 'syntax parses XML and resolves references' adds meaning beyond the schema's simple cumulative statement. Since schema coverage is 100%, a baseline of 3 is appropriate, but the elaboration justifies a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Validate' and the resource 'current diagram', making the tool's purpose unambiguous. It also distinguishes itself by explaining the cumulative levels, which is specific and not redundant with the name. Since sibling tools are all editing/IO operations, this is clearly the validation tool, and the description highlights its unique functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use the tool (to validate the current diagram) and explains the different validation levels, implicitly guiding the agent on choosing the appropriate level. It doesn't mention alternatives because there are none among the siblings that serve a similar purpose, so the absence of explicit exclusion is acceptable. The trigger condition is well-defined.
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.
27 tool updates
v0.2.0- First observed
add_activity - First observed
add_association - First observed
add_data_object - First observed
add_event - First observed
add_gateway - First observed
add_lane - First observed
add_pool - First observed
add_text_annotation - First observed
auto_layout - First observed
close - First observed
connect - First observed
current - First observed
delete_diagram_file - First observed
delete_element - First observed
export - First observed
get_diagrams_path - First observed
get_element - First observed
list_diagrams - First observed
list_elements - First observed
new_bpmn - First observed
new_from_mermaid - First observed
open_bpmn - First observed
open_mermaid_file - First observed
save - First observed
save_as - First observed
update_element - First observed
validate
TDQS
Scored across 27 tools
Each tool targets a clearly distinct action or resource. Element creation tools are separated by type (event, activity, gateway, data object, annotation, pool, lane), and file operations are distinct (new, open, save, save_as, close, list, delete). No two tools appear to overlap in purpose.
The naming pattern is mostly consistent with verb-first, underscore-separated names (e.g., add_event, list_elements, delete_diagram_file). Minor deviations exist, such as 'new_from_mermaid' and 'open_mermaid_file' vs. 'open_bpmn', and the noun 'current' as a standalone tool, but overall the convention is coherent.
27 tools is above the typical 3-15 range, but the complexity of a BPMN editor justifies the breadth. The tools cover file management, element operations, validation, layout, and export without excess overlap, so the count feels justified rather than bloated.
The tool surface is remarkably complete for a BPMN diagramming server. It covers full CRUD for elements and files, connections, associations, validation at multiple levels, layout, and export. There are no glaring gaps that would hinder common workflows, including lifecycle operations for diagrams and elements.
Maintenance
Related MCP Connectors
Create workflow, sequence, architecture, and mind map diagrams via AI assistants.
Generate dynamic Mermaid diagrams and charts with AI assistance. Customize styles and export diagr…
Create and manage Mermaid.js flowcharts and diagrams with AI agents via MCP.
Read, create and edit noddle diagram boards, browse versions and comment as an AI collaborator.
Related MCP Servers
- AlicenseAqualityDmaintenanceAn MCP server that enables AI assistants to programmatically create, modify, and export BPMN 2.0 workflow diagrams. It supports managing various process elements and sequence flows while providing export capabilities to standard XML and SVG formats.714MIT
- FlicenseBqualityDmaintenanceEnables AI agents to create, manipulate, and manage BPMN 2.0 diagrams programmatically, with support for Mermaid conversion, auto-layout, and file persistence.2412-
- FlicenseNot gradedqualityFmaintenanceEnables 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-
- FlicenseCqualityBmaintenanceEnables generating BPMN 2.0 process models from natural language descriptions, YAML, or images via OCR, with templates, validation, and compatibility with tools like Bizagi Modeler and Camunda Modeler.41-