Zovo Class Diagram
Server Details
Turns a short text description of classes into a UML class diagram you can print.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Score is being calculated.
Available Tools
2 toolscheck_class_diagramCheck class diagram textARead-onlyIdempotentInspect
Use this when the user wants class diagram text checked without a drawing, for example "check my class diagram for errors" or "are there inheritance cycles in this model". Takes the same text as make_class_diagram. Returns the syntax problems with their line numbers, relations to classes that are not declared, duplicate classes and members, inheritance cycles named class by class, and model warnings (abstract members in a concrete class, a class that inherits from an interface, realization of a class that is not an interface, repeated relations). Draws nothing and makes no files. Does not read source code files.
| Name | Required | Description | Default |
|---|---|---|---|
| source | Yes | The class diagram text in this grammar, up to 100,000 characters. One item per line. Classes: "class Name {", "interface Name {", "abstract class Name {" or "enum Name {", then one member per line, then "}" on its own line ("class Name" alone declares an empty class; a stereotype may follow the name, e.g. "class Name <<entity>> {"). Fields: "+name: Type". Methods: "+name(arg: Type, other: Type): ReturnType". Visibility + public, - private, # protected, ~ package (optional). "{static}" or "{abstract}" before the name marks static or abstract members. Enum constants: one NAME per line. Relations: "Animal <|-- Dog" (inheritance), "Shape <|.. Circle" (realization), "Car *-- Wheel" (composition), "Team o-- Player" (aggregation), "Customer --> Order" (association), "Report ..> Printer" (dependency), "A -- B" (link); arrows may point either way (Dog --|> Animal). Optional multiplicities in quotes next to each class and a label after a colon: Customer "1" --> "0..*" Order : places. "%%" starts a comment line. Example: "class Customer {\n+name: String\n+orders(): List<Order>\n}\nclass Order {\n-total: Decimal\n}\nCustomer \"1\" --> \"*\" Order : places". |
Output Schema
| Name | Required | Description |
|---|---|---|
| ready | Yes | |
| shown | No | |
| counts | Yes | |
| errors | Yes | |
| limits | Yes | |
| relation_lines | Yes | |
| warnings_found | Yes | |
| unknown_classes | Yes | |
| duplicate_members | Yes | |
| relations_by_kind | Yes | |
| inheritance_cycles | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered; the description still adds real behavior the annotations do not carry, namely explicit side-effect guarantees ('Draws nothing and makes no files', no source-file reading). The enumeration of returned problem categories is helpful for judging whether the tool answers a user's question, though it partly pre-empts the output schema.
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 most decision-relevant content (trigger condition, example utterances, sibling equivalence) is front-loaded, and the negative guarantees come next. The long error-category list is information-dense but borders on duplicating the output schema, making it slightly longer than needed.
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 single-input, read-only validator with annotations covering safety and an output schema covering return shape, the description supplies everything else an agent needs: trigger intent, input equivalence, side-effect guarantees, and the scope of what gets checked. Nothing material 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?
With one parameter at 100% schema coverage, the schema already documents the grammar exhaustively, so the baseline is 3. The only semantic addition is 'Takes the same text as make_class_diagram', which usefully tells the agent the accepted input format matches the sibling, but the description adds no syntax detail of its own.
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 ('class diagram text checked') and immediately distinguishes itself from the sibling: 'without a drawing' and 'Takes the same text as make_class_diagram'. An agent can tell which of the two tools to pick without opening either 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 states the triggering user intent plus two concrete example phrasings ('check my class diagram for errors', 'are there inheritance cycles in this model'), and it names the boundary conditions: 'Draws nothing and makes no files. Does not read source code files.' That covers both when to use it and when not to.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
make_class_diagramMake class diagramARead-onlyIdempotentInspect
Use this when the user wants a UML class diagram drawn, for example "draw a class diagram of these classes" or "make a PDF of my domain model with inheritance and composition". Takes the diagram text in a strict grammar, a page size and an optional title. Grammar: One item per line. Classes: "class Name {", "interface Name {", "abstract class Name {" or "enum Name {", then one member per line, then "}" on its own line ("class Name" alone declares an empty class; a stereotype may follow the name, e.g. "class Name <> {"). Fields: "+name: Type". Methods: "+name(arg: Type, other: Type): ReturnType". Visibility + public, - private, # protected, ~ package (optional). "{static}" or "{abstract}" before the name marks static or abstract members. Enum constants: one NAME per line. Relations: "Animal <|-- Dog" (inheritance), "Shape <|.. Circle" (realization), "Car -- Wheel" (composition), "Team o-- Player" (aggregation), "Customer --> Order" (association), "Report ..> Printer" (dependency), "A -- B" (link); arrows may point either way (Dog --|> Animal). Optional multiplicities in quotes next to each class and a label after a colon: Customer "1" --> "0.." Order : places. "%%" starts a comment line. Returns counts, the relations in words, model warnings, a geometry check (overlapping classes, lines crossing a class, end markers by relation kind), the PDF page count and smallest text size, an interactive diagram, and PDF, SVG, CSV and JSON downloads. Refuses text that does not fit the grammar, naming the line; refuses relations to classes that are not declared, duplicate members and inheritance cycles; refuses a class whose relation line ends do not fit across one page (each end has its own place on the box edge; about 50 ends on one edge on Letter, more on Tabloid), naming the class. Up to 60 classes and 200 relations. Does not read source code files. Download links of large diagrams expire after about 1 hour.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Title printed on the diagram and used in file names, up to 80 characters, e.g. "Shop domain model". | |
| source | Yes | The class diagram text in this grammar, up to 100,000 characters. One item per line. Classes: "class Name {", "interface Name {", "abstract class Name {" or "enum Name {", then one member per line, then "}" on its own line ("class Name" alone declares an empty class; a stereotype may follow the name, e.g. "class Name <<entity>> {"). Fields: "+name: Type". Methods: "+name(arg: Type, other: Type): ReturnType". Visibility + public, - private, # protected, ~ package (optional). "{static}" or "{abstract}" before the name marks static or abstract members. Enum constants: one NAME per line. Relations: "Animal <|-- Dog" (inheritance), "Shape <|.. Circle" (realization), "Car *-- Wheel" (composition), "Team o-- Player" (aggregation), "Customer --> Order" (association), "Report ..> Printer" (dependency), "A -- B" (link); arrows may point either way (Dog --|> Animal). Optional multiplicities in quotes next to each class and a label after a colon: Customer "1" --> "0..*" Order : places. "%%" starts a comment line. Example: "class Customer {\n+name: String\n+orders(): List<Order>\n}\nclass Order {\n-total: Decimal\n}\nCustomer \"1\" --> \"*\" Order : places". | |
| page_size | No | PDF page: letter (default), a4 or tabloid (11 x 17 in). Landscape unless portrait needs fewer pages. |
Output Schema
| Name | Required | Description |
|---|---|---|
| Yes | ||
| notes | Yes | |
| shown | No | |
| title | Yes | |
| counts | Yes | |
| classes | Yes | |
| notation | Yes | |
| downloads | Yes | |
| relations | Yes | |
| layout_check | Yes | |
| warnings_found | Yes | |
| relations_by_kind | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), yet the description adds substantial behavior beyond them: hard limits of 60 classes and 200 relations, the ~50 relation-ends-per-edge page constraint, which inputs are refused and that the offending line or class is named, and that large-diagram download links expire in about an hour. That is exactly the context an agent needs to predict failures and set user expectations.
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 intent and constraints are front-loaded, but the middle of the description reproduces the entire relationship and member grammar already documented on the source parameter, roughly doubling the text for zero new information. The valuable parts (limits, refusals, expiry) are buried inside or after that duplication.
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 grammar-driven diagram renderer with an output schema, the definition covers input format, size and page constraints, refusal classes, and expiration behavior of generated artifacts. Nothing an agent needs in order to call it correctly or explain a failure to a user is missing, apart from the sibling comparison noted under usage.
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% and the grammar block in the description is essentially verbatim from the source parameter's schema description, so it adds no meaning beyond what is already structured. The description only glancingly mentions "a page size and an optional title" without enriching page_size semantics (the landscape-unless-portrait rule lives 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?
It states a specific verb and resource ("draw a UML class diagram") and backs it with two concrete user phrasings, so an agent can match intent immediately. It never names the sibling check_class_diagram, so the boundary between drawing and checking has to be inferred.
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 opening sentence is an explicit when-to-use trigger, and "Does not read source code files" plus the grammar-refusal language are useful when-not signals. However, it never tells the agent when to prefer the sibling check_class_diagram (e.g., validate text without rendering), leaving one sibling relationship unresolved.
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
- First observed
check_class_diagram - First observed
make_class_diagram
Related MCP Connectors
Turns a few lines of text into a UML sequence diagram you can print.
1Turns SQL CREATE TABLE statements into an entity relationship diagram you can print.
1Turn a few lines of text into a UML use case diagram document, and check it.
1Turn a flow written as text into a step-through diagram you can share, present or embed.
Related MCP Servers
- AlicenseAqualityBmaintenanceGenerates UML and other diagrams (30+ types) via the Model Context Protocol, supporting multiple output formats and deployment options.7109MIT
- AlicenseNot gradedqualityDmaintenanceGenerates editable Excalidraw diagram files from natural language descriptions of systems and architectures.1MIT
- AlicenseAqualityDmaintenanceEnables AI assistants to generate professional UML diagrams (class, use case, activity, sequence) from natural language descriptions, producing editable .drawio files compatible with diagrams.net.778 npmISC
- AlicenseNot gradedqualityDmaintenanceEnables creating and iterating on animated SVG diagrams from text input, photos of sketches, and YAML specifications, with support for shapes, connections, SMIL animations, and file output.16 PyPI1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.