Skip to main content
Glama

Zovo Class Diagram

Make class diagram

make_class_diagram
Read-onlyIdempotent

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.

Input Schema

NameRequiredDescriptionDefault
titleNoTitle printed on the diagram and used in file names, up to 80 characters, e.g. "Shop domain model".
sourceYesThe 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_sizeNoPDF page: letter (default), a4 or tabloid (11 x 17 in). Landscape unless portrait needs fewer pages.

Output Schema

NameRequiredDescriptionDefault
pdfYes
notesYes
shownNo
titleYes
countsYes
classesYes
notationYes
downloadsYes
relationsYes
layout_checkYes
warnings_foundYes
relations_by_kindYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4/5.0
Behavior5/5

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.

Conciseness2/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources