UML Forge
UML Forge is an MCP server that gives AI coding agents 14 specialised tools for producing professional UML diagrams, architecture analysis, security models, and living documentation from codebases, schemas, or plain-English descriptions.
umlforge_suggest — Start here: describes your goal in plain English and returns the right tool with a pre-filled, ready-to-run call.
umlforge_reverse_engineer — Analyse an existing codebase or GitHub URL to produce class, sequence, and state diagrams, plus architectural smell flags and an optional Architectural Intelligence Report.
umlforge_stakeholder_arch — Generate C4 context/container/component diagrams for mixed technical and non-technical audiences (CTOs, investors, boards).
umlforge_api_sequence — Diagram how services call each other for a specific user action or API flow, including failure paths, retries, and an inter-service dependency table.
umlforge_state_machine — Design state machines for entities with lifecycles (orders, subscriptions, approvals), including transitions, guards, and race-condition notes.
umlforge_living_docs — Update existing Mermaid diagrams to reflect sprint or PR changes, with changelog-annotated diffs and architecture evolution notes.
umlforge_erd_schema — Design or review database schemas with ERDs, cardinality, typed attributes, index recommendations, and N+1 risk flags.
umlforge_threat_model — Produce STRIDE threat models, auth-flow sequence diagrams, data-flow sensitivity labels, and compliance-focused security assessments.
umlforge_frontend_components — Map React/Vue/Angular/Svelte component hierarchies, props/callback flows, state management, and accessibility risks.
umlforge_event_driven — Model Kafka/SQS/RabbitMQ-style async architectures: producer→broker→consumer flows, event catalogues, DLQ handling, and failure-mode analysis.
umlforge_onboarding — Generate day-one knowledge-transfer packages: system overview, developer workflow sequence, and gotchas/constraints tables.
umlforge_ai_agent — Design AI agent pipelines and multi-agent orchestration with tool-call flows, memory strategy, human-in-the-loop gates, and risk notes.
umlforge_deployment — Visualise cloud deployment topology and CI/CD pipelines with environment tables, rollback paths, and infrastructure risk flags.
umlforge_legacy_migrate — Visualise legacy code (COBOL, Fortran, ABAP, RPG, etc.), design a modern equivalent, and produce a 6-phase migration roadmap.
report_mode — Nearly every tool accepts
report_mode=Trueto also generate a written analysis report (design scores, security assessments, health scores, etc.).
Enables generating UML diagrams from GitHub repositories by providing a GitHub URL.
UML Forge MCP Connector
Architecture intelligence, security analysis, and living documentation ? inside your coding agent.
UML Forge gives Claude Code, Cursor, Windsurf, and any MCP-compatible coding agent a suite of 14 specialised tools for producing professional UML diagrams from your codebase, schema, or architecture descriptions.
Quick start
Claude Code:
{
"mcpServers": {
"umlforge": {
"command": "uvx",
"args": ["umlforge"],
"env": { "UMLFORGE_API_KEY": "your-api-key" }
}
}
}Cursor / Windsurf ? add the same block to your MCP settings.
Get your API key at umlforge.dev.
Related MCP server: diagrams-mcp
Tools included
Tool | Description |
| Start here. Describe your goal in plain English ? returns the right tool and a ready-to-run call |
| Class, sequence, and state diagrams from a codebase or GitHub URL |
| Sequence diagrams for request flows across services |
| Entity-relationship diagrams from domain descriptions or SQL schemas |
| State diagrams from entity lifecycles and business rules |
| Component hierarchy and interaction diagrams for UI features |
| Infrastructure and CI/CD pipeline diagrams |
| STRIDE threat model + attack surface diagram |
| Event flow and pub/sub architecture diagrams |
| Agent topology and tool-call flow diagrams for LLM pipelines |
| C4 context diagrams for investors, CTOs, and non-technical stakeholders |
| Update existing diagrams to reflect sprint or PR changes |
| Day-one knowledge-transfer package for new team members |
| Legacy structure + modern architecture diagrams and 6-phase migration roadmap from COBOL, Fortran, ABAP, RPG, and other legacy languages |
All tools accept report_mode=True to generate a written analysis report
alongside the diagram.
Requirements
Python 3.11+
An API key from umlforge.dev (free tier available)
License
MIT ? see LICENSE.
Available Tools
14 toolsumlforge_ai_agentARead-only
Design an AI agent pipeline or multi-agent orchestration system.
USE THIS WHEN:
You are building a system where LLMs call tools or hand off to other agents
You want to visualise a multi-agent workflow (planner ? researcher ? writer)
You need to document tool access, memory strategy, and failure behaviour
NOT FOR:
General system architecture ? use umlforge_stakeholder_arch
Standard synchronous API flows ? use umlforge_api_sequence
Event-driven pipelines without LLM agents ? use umlforge_event_driven
Produces:
Agent pipeline sequence: agents as participants with model names, tool calls as self-calls, human-in-the-loop gates, retry/fallback logic
Agent component map: agents, tool deps, memory, external integrations
Agent responsibility matrix: model, role, tools, inputs, outputs, failure behaviour
Risk & observability note: hallucination hotspots, validation gates, logging points
Tool overload flags (??) for agents with more than 5 tools
(report_mode=True) Agent Pipeline Analysis Notes: pipeline risks, coverage gaps, reliability quick wins
Args: pipeline_purpose: What the agent system does (e.g. "Research pipeline that queries the web and drafts a report"). agents: Agents and their roles (e.g. "Planner [claude-opus-4], Researcher [claude-sonnet-4]"). tools_available: Tools agents can call (e.g. "web_search, execute_code") (optional). orchestration_approach: Coordination strategy ? sequential, DAG, hierarchical, parallel fan-out (optional). memory_strategy: Memory approach ? shared context, vector memory, Redis, none (optional). report_mode: True ? also produce Agent Pipeline Analysis Notes. Pro/Team/Enterprise only.
| Name | Required | Description | Default |
|---|---|---|---|
| agents | Yes | ||
| report_mode | No | ||
| memory_strategy | No | ||
| tools_available | No | ||
| pipeline_purpose | Yes | ||
| orchestration_approach | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnlyHint, openWorldHint, destructiveHint), so the bar is lower. The description adds material value beyond that: the Produces list enumerates exactly what artifacts are generated, including the tool-overload flag for >5 tools and the report_mode-gated analysis notes. It does not disclose processing time or any limits, keeping it short of a 5.
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?
Front-loaded summary followed by clearly demarcated USE THIS WHEN / NOT FOR / Produces / Args sections. Each line earns its place; no filler prose.
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?
An output schema exists, so return values need not be explained, and the Produces section nonetheless previews them. Usage scope, parameter examples, sibling routing, and feature gating are all present. Nothing an agent needs to call this correctly 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 0%, so the description must compensate. It does so with example-laden Arg descriptions for all six parameters, showing expected format for pipeline_purpose, agents, tools_available, orchestration_approach, and memory_strategy, and gating report_mode to Pro/Team/Enterprise. It even documents a hidden constraint (tool overload at >5 tools) that no schema field expresses.
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?
States a specific verb+resource ('Design an AI agent pipeline or multi-agent orchestration system') and explicitly distinguishes itself from siblings by naming umlforge_stakeholder_arch, umlforge_api_sequence, and umlforge_event_driven with their conditions. An agent can route without opening any 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?
Explicit USE THIS WHEN section lists three concrete triggers, NOT FOR section names three sibling tools and the scenarios each should handle. This is textbook when/when-not/alternatives routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
umlforge_api_sequenceARead-only
Diagram how services call each other for a specific user action or API flow.
USE THIS WHEN:
You want to trace a request across multiple services (e.g. "user logs in")
You are designing API contracts between microservices
You need to show failure paths, retries, and error handling between services
You are writing QA test cases or doing incident post-mortems
NOT FOR:
Full codebase analysis ? use umlforge_reverse_engineer
Async/event-driven messaging ? use umlforge_event_driven
Frontend component interactions ? use umlforge_frontend_components
Database schema design ? use umlforge_erd_schema
Produces:
Sequence diagram: happy path + at least 2 failure paths, activation boxes, sync vs async arrows, performance boundary annotations
Inter-service dependency table: caller, callee, protocol, failure mode, mitigation
(report_mode=True) Design Score: Resilience, Performance, Contract Clarity (A?F)
Args: services: All participants, e.g. "API Gateway, Auth Service, Order Service, Payment Provider, User DB". user_journey: The action to diagram in plain English, e.g. "User places an order through checkout". report_mode: True ? also produce a Design Score report. Pro/Team/Enterprise only.
| Name | Required | Description | Default |
|---|---|---|---|
| services | Yes | ||
| report_mode | No | ||
| user_journey | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=true, and the description does not contradict them — a pure generation call is consistent with those hints. It adds value beyond the annotations by disclosing the report_mode entitlement constraint (Pro/Team/Enterprise only) and by spelling out the concrete deliverables (happy path plus two failure paths, dependency table, Design Score grading). It stops short of stating rate limits or any auth requirement beyond the tier note.
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?
Front-loads a one-line purpose, then layers USE THIS WHEN / NOT FOR / Produces / Args in scannable blocks with no filler sentences. The Produces list slightly overlaps the output schema, but it usefully sets expectations for a complex generative tool and costs little.
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 multi-param generative tool with an output schema and full annotation coverage, this description supplies purpose, selection criteria, exclusions with alternatives, deliverable expectations, and per-parameter semantics. Nothing an agent needs in order to choose and invoke it correctly 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 0%, so the description carries the full burden — and it does: services is defined as all participants with a worked example string, user_journey as the action in plain English with an example, and report_mode as a boolean that additionally emits a Design Score report, including its availability restriction. All three parameters are unambiguous without 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?
States a specific verb and resource ("Diagram how services call each other") with an explicit scope limit ("for a specific user action or API flow"). The NOT FOR section names the four sibling tools it must not be confused with (reverse_engineer, event_driven, frontend_components, erd_schema), so an agent can differentiate it without opening any 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?
Gives four concrete when-to-use scenarios (cross-service tracing, contract design, failure paths, QA/post-mortems) and four explicit exclusions that each route to a named alternative. There is no ambiguity about which tool to pick for event-driven or frontend work.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
umlforge_deploymentARead-only
Generate a deployment topology and CI/CD pipeline diagram.
USE THIS WHEN:
You want to visualise your cloud infrastructure and how services connect
You need to document your CI/CD pipeline from commit to production
You are planning infrastructure, disaster recovery, or a DevOps handover
NOT FOR:
Application-level architecture (how code is structured) ? use umlforge_reverse_engineer
Security threat modelling ? use umlforge_threat_model
How services call each other at the API level ? use umlforge_api_sequence
Produces:
Deployment diagram: nodes, artefacts, network paths, protocol/port labels, internet-facing vs internal traffic distinction
CI/CD pipeline flow: commit ? build ? test ? staging ? production, automated gates, manual approvals, rollback paths
Deployment environment table: infrastructure, triggers, data classification, monitoring, rollback strategy per environment
Infrastructure risk note: SPOFs, missing redundancy, environment parity gaps
Observability gap flags (??) for services without /health endpoints
(report_mode=True) Infrastructure Health Report: reliability score, observability score, deployment safety score (A?F)
Args: system_name: Name of the system (e.g. "UML Forge API"). cloud_provider: Cloud provider(s) (e.g. "AWS", "Railway + Vercel", "GCP"). environments: Deployment environments (e.g. "development, staging, production"). services: Services and infrastructure (e.g. "FastAPI API, Next.js, PostgreSQL, Redis"). cicd_tool: CI/CD tool (e.g. "GitHub Actions", "GitLab CI") (optional). report_mode: True ? also produce an Infrastructure Health Report. Pro/Team/Enterprise only.
| Name | Required | Description | Default |
|---|---|---|---|
| services | Yes | ||
| cicd_tool | No | ||
| report_mode | No | ||
| system_name | Yes | ||
| environments | Yes | ||
| cloud_provider | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/openWorldHint/destructiveHint=false, and the description does not contradict them. It adds genuine behavioral detail beyond the annotations: the report_mode paywall ('Pro/Team/Enterprise only') and the exact contents produced, including observability gap flags and risk notes. It stops short of disclosing generation latency, rate limits, or cost characteristics.
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?
Heavily front-loaded with purpose first, then usage, exclusions, and outputs; the USE THIS WHEN / NOT FOR / Produces scaffolding makes scanning easy. The Produces bullet list is longer than strictly necessary for tool selection, but each bullet is informative rather than 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?
An output schema exists, yet the description still summarizes the return shape (diagram, pipeline flow, environment table, risk note, health report) and documents all inputs and the plan-gated mode. For a multi-parameter generative tool, nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full parameter burden, and it does so: all six parameters are documented with concrete example values (e.g. cloud_provider: 'Railway + Vercel', services: 'FastAPI API, Next.js, PostgreSQL, Redis'), which also conveys the expected comma-separated string format. It also calls out that cicd_tool is optional and gates report_mode by plan.
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 first line states a specific verb and two concrete resources ('deployment topology and CI/CD pipeline diagram'), and the NOT FOR section explicitly names rival siblings (umlforge_reverse_engineer, umlforge_threat_model, umlforge_api_sequence), so an agent can discriminate it without opening any 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?
It provides an explicit 'USE THIS WHEN' block with three concrete scenarios and a 'NOT FOR' block that routes three adjacent use cases to named alternative tools. Both when-to-use and when-not-to-use are covered with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
umlforge_erd_schemaARead-only
Design a database schema with ERD, integrity rules, and index recommendations.
USE THIS WHEN:
You are designing or reviewing a database schema
You need an ERD with foreign keys, cardinality, and data types
You want index recommendations and N+1 risk flags
NOT FOR:
Full codebase analysis (which may include DB) ? use umlforge_reverse_engineer
API flows between services ? use umlforge_api_sequence
Event-driven data pipelines ? use umlforge_event_driven
Produces:
erDiagram: entities with typed attributes, cardinality, FK labels
Schema narrative: one paragraph per entity ? purpose, index recommendations, denormalisation decisions
Data integrity checklist: uniqueness, FK integrity, null policies, constraints
N+1 query risk flags
(report_mode=True) Design Score: Normalisation, Query Performance, Data Integrity (A?F)
Args: domain_description: What the database stores (e.g. "E-commerce: users, products, orders, payments"). entities: Known entities and key attributes (e.g. "User(id, email, tier), Order(id, user_id, status, total)"). access_patterns: Most frequent read/write queries (optional ? used for index recommendations). db_technology: Database technology (default: PostgreSQL). report_mode: True ? also produce a Design Score report. Pro/Team/Enterprise only.
| Name | Required | Description | Default |
|---|---|---|---|
| entities | Yes | ||
| report_mode | No | ||
| db_technology | No | PostgreSQL | |
| access_patterns | No | ||
| domain_description | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds real context beyond that: report_mode is gated to Pro/Team/Enterprise tiers, and it enumerates exactly what the output contains (erDiagram, schema narrative, integrity checklist, N+1 flags, Design Score). It does not address the idempotentHint=false implication that repeated calls may yield different output, which is the one remaining 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?
Front-loaded with a one-line purpose, then organized under clear headers (USE THIS WHEN, NOT FOR, Produces, Args) with the routing guidance before the output details. It is longer than average, but nearly every line is load-bearing; the Args block is somewhat verbose relative to the compact schema it mirrors.
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 five-parameter generative tool with an output schema present, this is complete: inputs are explained with examples, the report_mode entitlement constraint is disclosed, and the produced artifact list tells the agent what to expect without duplicating the output schema verbatim. Nothing an agent needs to invoke and interpret this tool 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 0%, so the description carries the full burden and does so: each of the five args is documented with meaning, concrete examples ('User(id, email, tier), Order(id, user_id, status, total)'), defaults (PostgreSQL), and inter-parameter relationships (access_patterns is optional and feeds index recommendations; report_mode additionally produces a Design Score report). This fully compensates for the empty schema descriptions.
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: 'Design a database schema with ERD, integrity rules, and index recommendations.' It names the artifacts produced and explicitly differentiates itself from sibling tools via the NOT FOR section. An agent can distinguish this from umlforge_reverse_engineer or umlforge_api_sequence without opening any 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?
Explicit USE THIS WHEN bullets state the triggering conditions (designing/reviewing a schema, needing an ERD, wanting index recommendations) and NOT FOR routes three adjacent scenarios to named alternatives with the reason each applies. This is textbook when/when-not/alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
umlforge_event_drivenARead-only
Design an event-driven or async messaging architecture (Kafka, SQS, RabbitMQ, etc.).
USE THIS WHEN:
Services communicate via events or messages (not direct API calls)
You are designing event sourcing, CQRS, or pub/sub patterns
You want to model producer ? broker ? consumer flows with failure handling
NOT FOR:
Synchronous REST/gRPC calls between services ? use umlforge_api_sequence
Entity lifecycle (Order goes pending ? active) ? use umlforge_state_machine
Full system architecture overview ? use umlforge_stakeholder_arch
Produces:
Event flow sequence: producers ? broker ? consumers with ack, retry loops (max N), dead-letter queue handling
Event catalogue table: name, producer, consumers, payload, idempotency, retention
Choreography vs orchestration assessment with coupling risk flags
Failure mode analysis: scenario, impact, detection, recovery
(report_mode=True) Event System Analysis Notes: reliability risks, idempotency gaps, resilience quick wins
Args: system_context: What this event-driven system does and why it uses messaging. producers: Services that emit events (e.g. "Order Service emits order.placed"). consumers: Services that consume events (e.g. "Notification, Inventory, Analytics"). broker: Message broker (e.g. "Kafka", "RabbitMQ", "AWS SQS/SNS") (optional). events: Named domain events (e.g. "order.placed, payment.failed") (optional). report_mode: True ? also produce Event System Analysis Notes. Pro/Team/Enterprise only.
| Name | Required | Description | Default |
|---|---|---|---|
| broker | No | ||
| events | No | ||
| consumers | Yes | ||
| producers | Yes | ||
| report_mode | No | ||
| system_context | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=false, and destructiveHint=false, so the safety profile is covered. The description adds useful output-shape context (retry loops, DLQ handling, failure mode analysis, report_mode gating) but does not disclose runtime behavior beyond that, such as generation time, determinism, or external calls. Given the annotation coverage, a 3 is appropriate.
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?
Tightly structured with single-line bullets under USE THIS WHEN, NOT FOR, Produces, and Args. Every line is front-loaded and adds distinct information; no filler or repetition of the tool name.
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 design-generation tool with six parameters, required/optional split, an output schema, and rich annotations, the description covers purpose, exclusions, expected artifacts, and parameter intent. Nothing an agent needs to invoke or route this tool 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 0%, so the description must carry the burden. It documents all six parameters with examples for producers, consumers, broker, and events, and explains report_mode with its entitlement constraint. system_context is described as intent rather than format, which is the only 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 opens with a specific verb and resource: 'Design an event-driven or async messaging architecture (Kafka, SQS, RabbitMQ, etc.)'. It also explicitly names which sibling tools to use for adjacent concerns (umlforge_api_sequence, umlforge_state_machine, umlforge_stakeholder_arch), so an agent can disambiguate without inspecting schemas.
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 USE THIS WHEN and NOT FOR sections that name the exact alternative tool for each excluded scenario (synchronous REST/gRPC, entity lifecycle, full system architecture). This goes beyond when-to-use into when-not and how-to-route, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
umlforge_frontend_componentsARead-only
Design a frontend component tree and interaction flow for a UI feature.
USE THIS WHEN:
You are designing or documenting a React, Vue, Angular, or Svelte feature
You want to see component hierarchy, props flow, and state management
You need to identify god components or prop drilling issues
NOT FOR:
Backend service interactions ? use umlforge_api_sequence
Full codebase including frontend ? use umlforge_reverse_engineer
Overall system architecture for stakeholders ? use umlforge_stakeholder_arch
Produces:
Component hierarchy graph: parent-child, props (downward arrows), events/callbacks (upward dashed arrows), state store connections, API origins
Interaction sequence diagram: most complex user flow ? loading, success, error
Component responsibility table: responsibilities, state owned, reusability flag
Accessibility note: ARIA roles needed, keyboard nav, WCAG risks
God component flags (??) for components with too many responsibilities
(report_mode=True) Component Analysis Notes: coupling risks, refactoring quick wins
Args: feature_description: The UI feature or page to diagram. framework: Frontend framework (default: React). Supported: React, Vue, Angular, Svelte, Next.js. state_management: State approach ? Redux, Zustand, Context API, Pinia (optional). interactions: Key user interactions and data flows (e.g. "user submits form, table sorts on header click") (optional). report_mode: True ? also produce Component Analysis Notes. Pro/Team/Enterprise only.
| Name | Required | Description | Default |
|---|---|---|---|
| framework | No | React | |
| report_mode | No | ||
| interactions | No | ||
| state_management | No | ||
| feature_description | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=true). The description adds real context beyond that: the full list of artifacts produced, the god-component flagging behavior, and a tier requirement for report_mode ('Pro/Team/Enterprise only'). It doesn't disclose rate limits or generation latency, so not a 5.
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?
Front-loaded one-line purpose followed by scannable USE THIS WHEN / NOT FOR / Produces / Args sections. Sized appropriately for a generator tool, though the Args block partly restates schema property names.
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?
An output schema exists so return values needn't be spelled out, yet the description still enumerates the deliverables, which helps selection. All five parameters are addressed and the tier gate on report_mode is flagged. Nothing an agent needs to invoke this correctly 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 0%, so the description must compensate, and it largely does: it documents the supported framework values (React, Vue, Angular, Svelte, Next.js), state-management options, an example for interactions, and the meaning of report_mode. Only feature_description lacks added guidance, but it is self-evident.
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?
States a specific verb+resource ('Design a frontend component tree and interaction flow for a UI feature') and immediately distinguishes itself from sibling tools by name in the NOT FOR section. An agent can route to this tool without opening the schemas of the 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?
Explicit USE THIS WHEN conditions and NOT FOR exclusions, each routing to a named sibling (umlforge_api_sequence, umlforge_reverse_engineer, umlforge_stakeholder_arch). This is textbook when/when-not/alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
umlforge_legacy_migrationARead-only
Visualise a legacy codebase and produce a migration roadmap to a modern language.
USE THIS WHEN:
You have COBOL, Fortran, ABAP, RPG, PL/I, Pascal, BASIC, Assembly, Ada, or ALGOL code
You want to understand the structure of a legacy program before migrating it
You need diagrams showing what the system does NOW and what it would look like rebuilt in Python, Go, Rust, Java, TypeScript, C#, or Kotlin
You are planning or pitching a modernisation project and need a migration roadmap
NOT FOR:
Analysing modern codebases ? use umlforge_reverse_engineer
Generating translated source code (Option B ? future feature)
Database schema design ? use umlforge_erd_schema
Produces:
Legacy structure diagram: program divisions, sections, modules, data stores, file I/O, external interfaces (as the system exists today)
Modern equivalent diagram: proposed clean-architecture rebuild in the target language with idiomatic layer names and structure
Migration roadmap: 6-phase plan (Understand ? Extract ? Data ? Logic ? Test Parity ? Cutover) with duration estimates and exit criteria
Complexity & risk flags: global state, file I/O coupling, implicit typing, unstructured control flow, vendor extensions, interface contracts
(report_mode=True) Legacy Migration Assessment: complexity scores, recommended strategy, tooling recommendations, risk assessment (A?F per dimension)
Provide EITHER github_url OR legacy_code ? not both.
Args: legacy_code: Paste the legacy source code directly. github_url: Public GitHub URL containing legacy source files. Accepted formats: github.com/owner/repo, github.com/owner/repo/tree/branch/path, github.com/owner/repo/blob/branch/file.cbl source_language: Language of the legacy code (default: COBOL). Supported: COBOL, Fortran, ABAP, RPG, PL/I, Pascal, BASIC, Assembly, Ada, ALGOL. target_language: Modern language to migrate toward (default: Python). Supported: Python, Go, Rust, Java, TypeScript, C#, Kotlin. system_purpose: Brief description of what the program does in production (e.g. "monthly payroll batch", "order entry OLTP"). Optional but improves diagram labels and migration advice. github_token: GitHub personal access token (repo scope) ? only needed for private repositories. Never stored or logged. report_mode: True ? also produce a Legacy Migration Assessment with complexity scores and tooling recommendations. Pro/Team/Enterprise only.
| Name | Required | Description | Default |
|---|---|---|---|
| github_url | No | ||
| legacy_code | No | ||
| report_mode | No | ||
| github_token | No | ||
| system_purpose | No | ||
| source_language | No | COBOL | |
| target_language | No | Python |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/openWorld/idempotent/destructive, and the description adds meaningful context beyond them: report_mode is gated to Pro/Team/Enterprise, github_token is 'never stored or logged', and inputs are mutually exclusive ('Provide EITHER github_url OR legacy_code — not both'). It also enumerates the concrete artifacts produced (diagrams, 6-phase roadmap, risk flags), which is the kind of behavioral disclosure an agent needs.
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?
Despite its length, the description is front-loaded with a one-sentence purpose and then cleanly sectioned (USE THIS WHEN / NOT FOR / Produces / Args). Every bullet earns its place by disambiguating scope, output, or parameters; there is no filler prose.
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 7-parameter, multi-artifact tool, the definition is complete: inputs, mutual-exclusivity constraint, deliverable list, tier gating, and auth handling are all present. Since an output schema exists, return values needn't be re-explained, and the description's output summary is a useful complement rather than redundant padding.
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 0%, so the description carries the full burden — and it does. Every one of the 7 parameters is documented: accepted github_url URL formats, the full supported list for source_language and target_language (with defaults), system_purpose's effect on labels/advice, github_token's scope requirement, and report_mode's semantics and tier restriction.
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 opening sentence states a specific verb+resource: 'Visualise a legacy codebase and produce a migration roadmap to a modern language.' The NOT FOR section explicitly differentiates from siblings by name (umlforge_reverse_engineer for modern code, umlforge_erd_schema for DB schema), so an agent can select this tool without opening any 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 'USE THIS WHEN' block enumerates concrete triggers (specific legacy languages, pre-migration structural understanding, modernisation pitching) and the 'NOT FOR' block names the alternative tools to route to instead. This is exactly the when/when-not/alternatives pattern, with nothing left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
umlforge_living_docsARead-only
Update diagrams you already have to reflect what changed in a sprint or PR.
USE THIS WHEN:
You ALREADY HAVE Mermaid diagrams (from a previous generation or your own)
Code has changed in a sprint or PR and your diagrams are now out of date
You want a changelog-annotated diff of your diagrams
NOT FOR:
Generating diagrams for the first time ? use umlforge_reverse_engineer (for existing codebases) or umlforge_stakeholder_arch (for new designs)
Analysing a GitHub URL ? use umlforge_reverse_engineer instead
Generating diagrams without existing ones to update ? use any other tool
IMPORTANT: current_diagrams is REQUIRED ? paste your existing Mermaid diagrams (including the ```mermaid fences). This tool cannot generate from scratch.
Produces:
Updated diagrams for affected sections only (with %% changelog headers)
New diagrams for newly introduced patterns
Architecture evolution note for pasting into a wiki
(report_mode=True) Documentation Analysis Notes: change impact, drift risks, coverage quick wins
Args: current_diagrams: Your existing Mermaid diagram(s) ? paste the full content including ```mermaid fences. REQUIRED. sprint_changes: What changed this sprint: new components, removed flows, renamed services, modified behaviour. affected_files: Files or modules touched in this sprint/PR (optional). report_mode: True ? also produce Documentation Analysis Notes. Pro/Team/Enterprise only.
| Name | Required | Description | Default |
|---|---|---|---|
| report_mode | No | ||
| affected_files | No | ||
| sprint_changes | Yes | ||
| current_diagrams | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already supply the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=true), and the description adds non-obvious constraints on top: current_diagrams is REQUIRED and the tool cannot generate from scratch, output is limited to affected sections with %% changelog headers, and report_mode is gated to Pro/Team/Enterprise. It does not discuss how the diff is computed or failure modes on malformed Mermaid input.
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?
Long but deliberately sectioned with headers and front-loaded purpose; nearly every line carries actionable information. The trailing 'Produces' list partially overlaps the output schema, which is the only mild 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?
For a 4-parameter generative tool with an output schema, the definition covers prerequisites, scope, alternatives, artifacts, and gating. Nothing an agent needs in order to call it correctly 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 0%, so the description carries the full burden and does so: all four parameters are documented with meaning, both required params are marked REQUIRED, and it specifies paste format ('including the ```mermaid fences') plus the tier restriction on report_mode.
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?
Opens with a specific verb+resource ('Update diagrams you already have to reflect what changed in a sprint or PR'), and explicitly names the sibling tools it is not (umlforge_reverse_engineer, umlforge_stakeholder_arch). An agent can distinguish it from all 13 siblings without opening a 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 USE THIS WHEN / NOT FOR blocks give explicit triggers and explicit exclusions, and route each excluded case to a named alternative tool. This is about as complete as routing guidance gets.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
umlforge_onboardingARead-only
Create a day-one knowledge-transfer package for a developer joining a team.
USE THIS WHEN:
A developer is joining a new team or project and needs to get up to speed
You are handing off a module or system to another team
You want gotchas, constraints, and workflow diagrams in one package
NOT FOR:
Analysing existing code for architectural problems ? use umlforge_reverse_engineer
Designing a new system ? use umlforge_stakeholder_arch
Documenting a specific API flow ? use umlforge_api_sequence
Produces:
System overview (C4 Container): the lay-of-the-land on day one
Developer workflow sequence: local dev ? test ? CI ? staging ? production
most common debugging path
Gotchas & constraints table: what the code does, why, what breaks if changed
(report_mode=True) Onboarding Analysis Notes: coverage assessment, knowledge gaps, documentation quick wins
Args: system_description: High-level description of the system. tech_stack: Technologies in the stack (e.g. "FastAPI, PostgreSQL, React, Railway"). key_workflows: 2?3 flows a new developer must understand first. pain_points: Known gotchas, non-obvious decisions (optional). report_mode: True ? also produce Onboarding Analysis Notes. Pro/Team/Enterprise only.
| Name | Required | Description | Default |
|---|---|---|---|
| tech_stack | Yes | ||
| pain_points | No | ||
| report_mode | No | ||
| key_workflows | Yes | ||
| system_description | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety profile is covered. The description adds useful output-shape detail (what the package contains) and a tier constraint (Pro/Team/Enterprise only for report_mode) beyond annotations. However, with output schema present and annotations covering safety, this is solid but not rich behavioral disclosure.
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?
Front-loaded with the core purpose, then clearly sectioned USE THIS WHEN / NOT FOR / Produces / Args. Every sentence earns its place; no filler. Bullet structure makes it skimmable.
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?
Output schema exists so return values needn't be explained, yet the Produces section still helpfully previews output artifacts including report_mode extras. Parameter guidance compensates for 0% schema coverage. Minor gap: no note on idempotency or openWorld behavior beyond 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?
Schema description coverage is 0%, so the description must carry parameter meaning. It does document all five parameters with examples (e.g. tech_stack = "FastAPI, PostgreSQL, React, Railway"), notes pain_points is optional, and explains report_mode's effect and tier restriction. Slight gap: key_workflows says "2-3 flows" which is helpful but system_description guidance is thin.
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?
States a specific verb+resource ("Create a day-one knowledge-transfer package for a developer joining a team") and the NOT FOR section explicitly names sibling tools (umlforge_reverse_engineer, umlforge_stakeholder_arch, umlforge_api_sequence) with the disambiguating condition. An agent can route to the correct UMLForge tool without opening schemas.
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?
USE THIS WHEN gives three concrete triggering scenarios and NOT FOR names three alternative tools with the condition that selects each. This exceeds typical when-to-use guidance by covering both inclusion and exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
umlforge_reverse_engineerARead-only
Analyse an existing codebase and produce UML class, sequence, and state diagrams.
USE THIS WHEN:
You have a GitHub URL and want to understand what the code does
You want to audit a codebase for architectural problems
You need diagrams of code that already exists (your own or a public repo)
You want an Architectural Intelligence Report on any codebase
NOT FOR:
Designing a new system from scratch ? use umlforge_stakeholder_arch
Updating diagrams after a sprint ? use umlforge_living_docs
Documenting database schema ? use umlforge_erd_schema
Mapping how services call each other ? use umlforge_api_sequence
Produces:
Class diagram: entities, attributes, relationships, multiplicities
Sequence diagram: primary execution flow or dominant use case
State diagram: entity lifecycle (if stateful entities are detected)
Architectural smell flags: god classes, circular deps, anemic models
(report_mode=True) Architectural Intelligence Report: system overview, key findings, modernisation roadmap, health scores (A?F)
Provide EITHER github_url OR codebase ? not both.
Args: github_url: Public GitHub URL. Accepted formats: github.com/owner/repo github.com/owner/repo/tree/branch/path/to/dir github.com/owner/repo/blob/branch/path/to/file.py codebase: Paste code directly when you have files in context or the repo is private. max_nodes: Max classes/components per diagram (default 20, range 5?50). github_token: GitHub personal access token (repo scope) ? only needed for private repositories. Never stored or logged. report_mode: True ? also produce an Architectural Intelligence Report. Pro/Team/Enterprise only.
| Name | Required | Description | Default |
|---|---|---|---|
| codebase | No | ||
| max_nodes | No | ||
| github_url | No | ||
| report_mode | No | ||
| github_token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint=false, and openWorldHint, so the safety profile is covered. The description adds genuinely non-structured context: the github_token requires repo scope and is 'never stored or logged', report_mode is gated to Pro/Team/Enterprise, and the exact artifact set produced (including optional state diagram and A–F health scores) is spelled out.
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?
Well front-loaded with headed sections (USE THIS WHEN / NOT FOR / Produces / Args) so an agent can scan to the relevant part. Long but every block earns its place; the only blemish is mojibake in the em-dashes and ranges ('A?F', '5?50'), which does not obscure meaning.
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 an output schema existing, the description still fully describes the deliverable set, so an agent understands both invocation and result. Combined with the parameter detail and sibling routing, nothing an agent needs to call this correctly 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 0%, so the description carries the full burden and does so thoroughly: accepted github_url formats, the intended use of codebase for pasted/private code, max_nodes default 20 with range 5–50, token scope, and report_mode semantics. It also states the mutual-exclusion rule ('Provide EITHER github_url OR codebase — not both') that appears nowhere in 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?
States a specific verb+resource ('Analyse an existing codebase and produce UML class, sequence, and state diagrams') and immediately enumerates the concrete outputs. It distinguishes itself from every relevant sibling by naming umlforge_stakeholder_arch, umlforge_living_docs, umlforge_erd_schema, and umlforge_api_sequence as the tools to use instead for adjacent jobs.
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 contains explicit USE THIS WHEN and NOT FOR sections, with each exclusion routed to a named alternative tool and the selecting condition. An agent can decide between this and all four adjacent siblings without opening another schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
umlforge_stakeholder_archARead-only
Generate a C4 architecture diagram for a mixed technical/non-technical audience.
USE THIS WHEN:
You are designing or presenting a system to stakeholders (CTO, investors, board)
You need a high-level picture of a system you are planning or explaining
You want Context + Container + Component diagrams in one call
NOT FOR:
Analysing code that already exists ? use umlforge_reverse_engineer
Tracing a specific API request across services ? use umlforge_api_sequence
Infrastructure and deployment topology ? use umlforge_deployment
Security threat modelling ? use umlforge_threat_model
Produces:
C4 Context: system boundary, external actors, primary integrations
C4 Container: deployable units, tech stack labels, communication protocols
C4 Component: internals of the most complex container
(report_mode=True) Architecture Communication Notes: audience fit, communication gaps, clarity quick wins
Args: system_description: What the system does, who uses it, its major components. audience_description: Who will read this (e.g. "CTO and non-technical board", "backend engineers new to the system"). report_mode: True ? also produce Architecture Communication Notes. Pro/Team/Enterprise only.
| Name | Required | Description | Default |
|---|---|---|---|
| report_mode | No | ||
| system_description | Yes | ||
| audience_description | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=true and openWorld=true, so safety is covered. The description adds real value beyond that: it enumerates the produced artifacts (Context/Container/Component) and discloses a licensing gate (report_mode is Pro/Team/Enterprise only), plus the extra Communication Notes output. It stops short of noting determinism/idempotency behavior, so not a full 5.
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?
Front-loaded one-line purpose followed by clearly labeled USE THIS WHEN / NOT FOR / Produces / Args sections. Every bullet adds routing or behavior value; no filler sentences.
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?
An output schema exists, so the description need not explain return values, yet it still summarizes the diagram outputs. Combined with full parameter documentation and tier gating, an agent has everything needed to invoke this 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 description coverage is 0%, so the description must carry all meaning, and it documents all three parameters with substance: system_description (what/who/components), audience_description (with examples), and report_mode (semantics plus the Pro/Team/Enterprise restriction). It does not specify format/length expectations, so a 4 rather than 5.
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?
States a specific verb (Generate), resource (C4 architecture diagram), and scope (mixed technical/non-technical stakeholder audience). The NOT FOR section names the exact sibling to use for adjacent tasks, so an agent can distinguish it from umlforge_api_sequence, umlforge_deployment, etc. without opening any 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?
Explicit USE THIS WHEN bullets give concrete triggering scenarios (CTO/investor/board presentations, high-level system picture), while NOT FOR routes four alternative tasks to their correct siblings. Nothing about when-to-use vs when-not is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
umlforge_state_machineARead-only
Design a state machine for a domain entity that has a lifecycle.
USE THIS WHEN:
An entity moves through states (Order: pending ? active ? cancelled)
You need to model a workflow, approval chain, or subscription lifecycle
You want to find missing states, invalid transitions, or race conditions
NOT FOR:
Flows between services (requests, responses) ? use umlforge_api_sequence
Async event messaging between services ? use umlforge_event_driven
Full codebase analysis ? use umlforge_reverse_engineer
Produces:
stateDiagram-v2: all states, entry/exit actions, guard conditions, composite states, explicit ERROR and TERMINAL states
State transition table: current state ? event ? guard ? next state ? action
Implementation notes: DB write requirements, domain events, race condition guards
(report_mode=True) Analysis Notes: transition risks, unreachable states, quick wins
Args: entity: The domain entity (e.g. "Order", "Subscription", "JobApplication"). states: Known lifecycle states (e.g. "pending, active, suspended, cancelled"). events: Triggers that cause transitions (e.g. "payment_received, user_cancels"). business_rules: Constraints on transitions (optional). report_mode: True ? also produce State Machine Analysis Notes. Pro/Team/Enterprise only.
| Name | Required | Description | Default |
|---|---|---|---|
| entity | Yes | ||
| events | Yes | ||
| states | Yes | ||
| report_mode | No | ||
| business_rules | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, destructiveHint=false, so the safety profile is covered; the description adds value beyond that by disclosing the artifact set produced (stateDiagram-v2, transition table, implementation notes) and an access restriction — report_mode is Pro/Team/Enterprise only. It does not explain idempotency behavior despite idempotentHint=false, but it does not contradict it either.
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?
Content is front-loaded (one-line purpose, then routing, then outputs, then args) and every section is skimmable. It is on the long side for a five-parameter tool, and the output inventory is somewhat verbose given an output schema already exists, but no sentence is 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 design-generation tool with zero schema descriptions and an available output schema, the description closes every gap an agent needs: what it produces, when to pick it over three named siblings, what each input means, and the tier gate on report_mode. Nothing required for correct invocation 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 0%, so the description carries the full burden and does so: every one of the five parameters is annotated with intent and a concrete example, including the comma-separated format implied by "pending, active, suspended, cancelled". Optionality is marked ("business_rules: ... (optional)") and the gated report_mode is explained with its tier requirement.
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 opening line states a specific verb and artifact ("Design a state machine") scoped to "a domain entity that has a lifecycle," which immediately separates it from diagram generators for APIs, ERDs, or deployments. The separate NOT FOR block names the exact sibling tools to use instead, so the agent can discriminate without opening any 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?
Unusually complete routing guidance: USE THIS WHEN lists three concrete trigger conditions with a worked example (Order: pending → active → cancelled), plus the analytical goal (finding missing states, invalid transitions, race conditions). NOT FOR explicitly redirects three adjacent use cases to umlforge_api_sequence, umlforge_event_driven, and umlforge_reverse_engineer by name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
umlforge_suggestARead-only
*** START HERE if you are unsure which tool to use. ***
Describe what you want to achieve in plain English. This tool will:
Identify the right tool for your goal
Return the EXACT tool call with parameters pre-filled ? ready to execute
Explain why this tool fits and suggest an alternative
USE THIS WHEN:
You are not sure which of the 14 tools to use
You want to describe a goal ("analyse this repo", "model our order lifecycle") and get a ready-to-run recommendation
You want to avoid trial and error with the wrong tool
Example inputs:
"analyse https://github.com/pallets/flask and give me an architecture report"
"show how our Order entity moves through states"
"diagram our Kafka event flow between Order, Inventory, and Notification services"
"I have existing diagrams and my sprint changed the auth service"
The response will include the exact tool name, all parameters pre-filled with values derived from your description, and a one-line explanation.
Args: task_description: Plain-English description of what you want to achieve. Include any relevant details: URLs, entity names, service names, tech stack ? the more context, the better the pre-filled parameters.
| Name | Required | Description | Default |
|---|---|---|---|
| task_description | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds genuinely useful behavior: it returns a recommendation plus a ready-to-run call rather than executing anything, and enumerates the four parts of the response (tool name, parameters, rationale, alternative). It is silent on rate limits, failure modes, or what happens when no tool matches, which keeps it short of a 5.
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?
Front-loaded with 'START HERE if you are unsure which tool to use,' then organized into steps, use cases, examples, and args — easy to scan. Mild redundancy: the Args paragraph restates 'plain-English description' already covered in the opening and in the input examples, and the step list partially repeats the 'USE THIS WHEN' bullets.
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?
An output schema exists, so the description needn't enumerate return values, and it instead explains the shape of the recommendation at the right level. Combined with the annotation-covered safety profile and the explicit routing guidance, an agent has everything needed to call this correctly on the first try.
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 0% for the single free-text parameter, so the description carries the full burden — and it does: 'Plain-English description... Include any relevant details: URLs, entity names, service names, tech stack — the more context, the better the pre-filled parameters.' It also supplies four concrete example inputs that model the expected shape and specificity.
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?
States a specific verb and purpose — route a plain-English goal to the correct UMLForge tool and return a pre-filled call — and explicitly positions itself against the 13 sibling tools ('not sure which of the 14 tools to use'). An agent can distinguish this router from umlforge_erd_schema or umlforge_threat_model without opening any 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?
Contains an explicit 'USE THIS WHEN' block with three concrete trigger conditions, including the meta-condition ('you are not sure which tool to use') and the alternative behavior it replaces ('avoid trial and error with the wrong tool'). Nothing about when to invoke it is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
umlforge_threat_modelARead-only
Generate a full STRIDE security threat model for a system.
USE THIS WHEN:
You want to identify security vulnerabilities before launch
You need to document auth flows, trust boundaries, or sensitive data handling
You are preparing for a penetration test or compliance audit (GDPR, SOC2, PCI-DSS)
NOT FOR:
General architecture review ? use umlforge_reverse_engineer with report_mode=True
Deployment and infrastructure topology ? use umlforge_deployment
API flow design (without security focus) ? use umlforge_api_sequence
Produces:
Auth flow sequence diagram: all failure paths, trust boundary annotations
Data flow diagram: sensitivity labels (PUBLIC / INTERNAL / CONFIDENTIAL / SECRET)
STRIDE threat table: all 6 categories with likelihood, mitigation, status
Critical flags (??) for high-risk gaps
(report_mode=True) Security Assessment Report: threat landscape, critical vulnerability deep-dives, compliance status, remediation roadmap, risk score
Args: system_description: What the system does, how users access it, main components. auth_mechanism: Auth in use (e.g. "JWT Bearer token", "API Key", "OAuth2 + PKCE"). trust_boundaries: Boundary crossings (e.g. ["public internet ? API", "API ? database"]) (optional). sensitive_data: Sensitive data types (e.g. ["user emails", "payment tokens"]) (optional). compliance_framework: Compliance scope (e.g. "GDPR", "NDPA 2023", "PCI-DSS") (optional). report_mode: True ? also produce a Security Assessment Report. Pro/Team/Enterprise only.
| Name | Required | Description | Default |
|---|---|---|---|
| report_mode | No | ||
| auth_mechanism | Yes | ||
| sensitive_data | No | ||
| trust_boundaries | No | ||
| system_description | Yes | ||
| compliance_framework | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds non-obvious behavioral context the annotations cannot convey: report_mode is gated to 'Pro/Team/Enterprise only' and expands the artifact set substantially. It does not mention latency, rate limits, or cost of a full STRIDE pass, so it falls short of a 5.
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?
Well front-loaded with the purpose first, then USE/NOT-FOR, then Produces, then Args. Slightly padded: the 'Produces' block largely restates what the output schema already structures, and the long bullet list of report contents could be tighter.
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?
An output schema exists, yet the definition adds depth by enumerating the artifact types (auth-flow sequence diagram, DFD with sensitivity labels, 6-category STRIDE table, critical flags, optional assessment report). Combined with when/when-not routing and license gating, an agent has everything needed to decide and invoke 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 description coverage is 0%, so the description carries the full parameter burden, and it does: every one of the 6 params gets an explanation with concrete examples ('JWT Bearer token', 'OAuth2 + PKCE', ['public internet ? API', 'API ? database']), and the four optional params are marked as such. This fully compensates for the empty 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 opens with a specific verb+resource+methodology: 'Generate a full STRIDE security threat model for a system.' It also names the sibling tools it is NOT (umlforge_reverse_engineer, umlforge_deployment, umlforge_api_sequence), so an agent can disambiguate without inspecting other schemas.
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?
Explicit 'USE THIS WHEN' triggers (pre-launch vuln identification, auth-flow documentation, pen-test/compliance prep) and an explicit 'NOT FOR' section that routes to the correct alternatives with the discriminating condition (e.g. report_mode=True for general architecture review). Nothing is left to inference.
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.
2 tool updates
v0.2.2- Changed
umlforge_legacy_migration1 field changed- added
Input schema / properties / github_tokenAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Github Token" +}
- Changed
umlforge_reverse_engineer1 field changed- added
Input schema / properties / github_tokenAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Github Token" +}
2 tool updates
v0.2.1- Removed
umlforge_legacy_migrate - Added
umlforge_legacy_migration
6 tool updates
v0.2.0- Added
umlforge_deployment - Added
umlforge_event_driven - Added
umlforge_legacy_migrate - Added
umlforge_onboarding - Added
umlforge_state_machine - Added
umlforge_threat_model
8 tool updates
v0.1.9- First observed
umlforge_ai_agent - First observed
umlforge_api_sequence - First observed
umlforge_erd_schema - First observed
umlforge_frontend_components - First observed
umlforge_living_docs - First observed
umlforge_reverse_engineer - First observed
umlforge_stakeholder_arch - First observed
umlforge_suggest
TDQS
Scored across 14 tools
Each tool targets a clearly distinct modeling domain (reverse engineering, legacy migration, C4, threat modeling, API sequence, state machine, living docs, ERD, frontend, event-driven, onboarding, AI agents, deployment, suggest). The descriptions include explicit NOT FOR sections that disambiguate borderline cases. The suggest tool further reduces risk of misselection.
All 14 tool names follow a consistent snake_case pattern with no mixed conventions. The umlforge_ prefix is applied uniformly. Names are descriptive and adhere to a verb/noun or domain noun style.
14 tools is an ideal count for a comprehensive UML/diagramming server covering many distinct modeling aspects. Each tool has a unique, justified purpose, and the set is well-scoped without excessive overlap or gaps that would suggest missing tools.
The toolset covers a wide range of diagram types and analysis workflows: reverse engineering, design from scratch (stakeholder_arch), state machines, sequence diagrams, ERDs, deployment, threat modeling, event-driven, AI agents, legacy migration, onboarding, living docs updates, and a suggestion helper. This represents near-complete lifecycle coverage for UML and architecture documentation.
Maintenance
Related MCP Connectors
Code intelligence platform for AI agents. 20 tools for architecture, security & impact analysis.
Agent personas for Claude. 16 tools, 13 personas, 3 workflows. Zero extra API cost. Free.
Generate dynamic Mermaid diagrams and charts with AI assistance. Customize styles and export diagr…
Let Claude, Cursor, or ChatGPT author Mermaid diagrams your team can read and share.
Related MCP Servers
- FlicenseNot gradedqualityFmaintenanceNarasimhaponnada/mermaid-mcp - AI-powered Mermaid diagram generation with 22+ diagram types including flowcharts, sequence diagrams, class diagrams, ER diagrams, architecture diagrams, state machines, and more. Features 50+ pre-built templates, advanced layout engines, SVG/PNG/PDF exports.51-
- AlicenseNot gradedqualityDmaintenanceEnables automatic generation of UML class diagrams and entity-relationship diagrams from natural language descriptions or structured JSON data. It integrates with MCP agents to create visual representations of code structures and system designs without manual Mermaid coding.4 npm1MIT
- FlicenseNot gradedqualityDmaintenanceGenerate UML class diagrams, sequence diagrams, flowcharts, and component diagrams from any Java or Spring Boot repository via CLI or directly inside Claude Desktop.1-
- AlicenseAqualityBmaintenanceEnables AI assistants to generate professional UML diagrams (class, use case, activity, sequence) from natural language descriptions, producing editable .drawio files compatible with diagrams.net.753 npmISC