uml.singsk.com PlantUML
Server Details
Render, validate, encode/decode PlantUML diagram-as-code; 22 diagram types. Free, no auth.
Glama couldn't complete the latest health check. If this server requires authentication, missing or expired test credentials may be the cause. A test profile lets Glama authenticate for health checks and discover tools; it is separate from your personal connections.
If you are the author, claim ownership, then add or update a test profile under Admin → Test Profile.
- Status
- Unhealthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
TDQS
Scored across 6 tools
Each tool has a clearly distinct responsibility: encoding/decoding tokens, rendering/validating diagrams, and retrieving syntax/reference information. The descriptions explicitly call out potential confusion points (e.g., token alphabet vs base64) and separate render from validate.
All tool names follow a consistent lowercase snake_case verb_noun pattern: decode_token, encode_source, get_syntax_reference, list_diagram_types, render_diagram, validate_diagram. This makes the tool set predictable and easy to navigate.
Six tools is well-scoped for a PlantUML-focused server: two token operations, two diagram lifecycle operations, and two reference/type lookup operations. There is no redundancy and no missing core capability that would require more tools.
The tool set covers the full diagram workflow: picking a type, getting syntax guidance, validating source, rendering output, and encoding/decoding shareable tokens. Agents can complete both common and advanced PlantUML tasks without dead ends.
Available Tools
6 toolsdecode_tokenAInspect
Recover the PlantUML source from a token or from any PlantUML render URL (the token is extracted automatically). Tokens use PlantUML's own 64-character alphabet ("0-9 A-Z a-z - _") over raw DEFLATE. This is NOT base64 - never encode or decode tokens with a base64 codec; use encode_source / decode_token.
| Name | Required | Description | Default |
|---|---|---|---|
| encoded | Yes | Token or full render URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It discloses the custom 64-character alphabet, raw DEFLATE encoding, automatic URL token extraction, and the base64 incompatibility. It does not explicitly describe return formatting or error behavior, but the core behavior is well covered.
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?
Three sentences, each earning its place: the first states purpose and input forms, the second explains technical encoding, and the third gives a critical warning. Information is front-loaded and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with no annotations and no output schema, the description is quite complete: it covers input forms, algorithm details, and the correct sibling for encoding. The only minor gap is that the exact return representation is implied rather than explicitly stated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already states 'Token or full render URL', so the baseline is 3. The description adds meaning by explaining that tokens are extracted automatically from URLs and by detailing the underlying encoding format, which helps an agent understand valid inputs beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Recover') and a clear resource ('the PlantUML source') from explicit input forms: a token or a render URL. It distinguishes itself from the sibling encode_source by describing the inverse operation and naming encode_source directly.
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 exactly when to use the tool ('from a token or from any PlantUML render URL'), names the alternative encode_source for the inverse operation, and gives an explicit when-not: never use a base64 codec. This is clear routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
encode_sourceAInspect
Encode PlantUML source into a URL token and ready-to-use share/render URLs (svg + png). The result carries url_ok: GET URLs only work while the token is at most 16000 characters; when url_ok is false do not share the URLs - render with render_diagram instead (it uses the POST API, no size limit up to 5 MB). Tokens use PlantUML's own 64-character alphabet ("0-9 A-Z a-z - _") over raw DEFLATE. This is NOT base64 - never encode or decode tokens with a base64 codec; use encode_source / decode_token.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral disclosure burden and does so thoroughly. It reveals the URL length limit of 16000 characters, the url_ok flag, the DEFLATE-based algorithm, the custom 64-character alphabet, and the POST-vs-GET API distinction with size limits. This is rich, non-obvious behavioral context that an agent needs to avoid misuse.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded: the first sentence states the core purpose, followed by critical usage constraints, the alternative tool, and a caveat against base64 confusion. Every sentence carries necessary operational information, with no filler or redundant restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete for the tool's complexity: it covers the operation, output type, size limits, fallback behavior, and encoding specifics, all without an output schema. An agent can determine whether and how to invoke encode_source correctly, and knows exactly when to route to render_diagram instead.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage and only declares 'text' as a string, so the description must compensate by explaining what text means. The description clarifies that text is PlantUML source, which is essential semantic context not present in the schema. It does not fully elaborate edge-case format requirements, but for a single-parameter tool this is adequate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb and resource: encoding PlantUML source into a URL token and ready-to-use SVG/PNG share/render URLs. It also distinguishes itself from related siblings like render_diagram and decode_token by explaining what it is not and which sibling handles the alternative operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use and when-not-to-use guidance: when url_ok is false, do not share the URLs and instead use render_diagram, which uses the POST API with no size limit up to 5 MB. It also explicitly warns against using base64 codecs and directs users to encode_source/decode_token instead, naming alternatives and conditions clearly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_syntax_referenceAInspect
Get the syntax reference entry for one diagram type: description, a render-verified example, and the help page URL. Use it to ground diagram generation.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Type id or label, e.g. "sequence", "class", "mindmap", "gantt", "json" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description must convey behavior. It communicates that this is a read-only lookup returning a reference entry, which is adequate. It does not disclose edge cases, error behavior, or what happens for unknown types, but for a simple retrieval tool this is a minimum viable 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?
The description is two short sentences with no filler. The primary function and return payload are front-loaded, and the usage directive earns its place by connecting to diagram generation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter lookup tool with no output schema, the description is complete: it names the resource scope, what the result contains, and the intended use. No critical operational detail is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the single parameter 'type' is already documented with examples. The description adds no new parameter semantics beyond reinforcing that the lookup is for one diagram type, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Get') and resource ('syntax reference entry for one diagram type'), and enumerates exactly what is returned: a description, render-verified example, and help page URL. This clearly distinguishes it from siblings like render_diagram, validate_diagram, and list_diagram_types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear use case: 'Use it to ground diagram generation.' It does not explicitly name alternatives or state when not to use this tool, but the stated context is sufficient for an agent to understand its primary purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_diagram_typesAInspect
List the 22 supported diagram/reference types with a one-line description and the local syntax reference URL for each. Use it to pick the right @start directive.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly indicates this is a listing operation that returns a description and URL for each of the 22 types, and implies no mutation or side effects. That is adequate transparency for a zero-parameter read-only enumeration tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only two sentences, with the core action and output details front-loaded. The second sentence adds the practical purpose without unnecessary elaboration. Every word contributes 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?
For a zero-parameter tool with no annotations and no output schema, the description tells the agent exactly what will be returned and why to use it. Nothing needed to invoke or interpret the call is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema is empty, so there are no parameter semantics to document. The baseline of 4 applies. The description adds useful context about what the result will contain, which is sufficient for a no-input tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List'), a precise resource (the 22 supported diagram/reference types), and the exact output contents (one-line description and local syntax reference URL). It also connects the tool to its downstream use ('pick the right @start directive'), which clearly distinguishes it from sibling tools like render_diagram or validate_diagram.
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 explicitly says when to use the tool: 'Use it to pick the right @start directive.' This is a clear usage context. It does not explicitly contrast it with get_syntax_reference or other siblings, but the directive-picking purpose makes the intended scenario obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render_diagramAInspect
Render PlantUML source text to a diagram image. Returns a PNG image block (format "png") or the SVG markup as text (format "svg", default), plus the shareable render URL. The source is validated first: on a syntax error the result is an error object with line, column, hint and a help link so you can fix the diagram and retry.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | PlantUML source including @startuml ... @enduml (or the matching @start/@end pair) | |
| format | No | svg |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral disclosure. It explains return types for both formats, the default, the shareable URL, and the error contract with line, column, hint, and help link. It does not cover network failures, rate limits, or side effects of creating a shareable URL, but it is substantially transparent.
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?
Three sentences, no filler, and the core action is front-loaded. Each sentence adds a distinct piece of information: output types, the format/default behavior, and error handling.
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 two-parameter tool with no output schema, the description covers the main return behavior, error shape, and format options well enough for an agent to call and interpret results. It could be slightly stronger by explicitly routing validation-only needs to validate_diagram, but it is close to complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%, but the description compensates by explaining what format values produce ('PNG image block' vs 'SVG markup as text') and confirming the default. The text parameter's PlantUML requirements are already in the schema, so the description adds the important missing semantics for format.
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 ('Render PlantUML source text to a diagram image') and distinguishes itself from sibling tools like validate_diagram and list_diagram_types by focusing on actual rendering. The description also clearly delimits the output formats.
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 makes the tool's purpose and behavior clear, but it never explicitly addresses when to choose this tool over validate_diagram or get_syntax_reference. The integrated validation behavior implies a use case, but no exclusions or alternative routing are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_diagramAInspect
Check PlantUML source without rendering. Returns {ok:true, diagram_type} or {ok:false, error:{code, message, line, column, source_line, hint, diagram_type_detected, help}}. Cheap - call it in a generate -> validate -> fix loop before rendering.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden, and it delivers substantial behavioral detail: it is non-rendering, cheap, and it documents both success and error return shapes including nested fields like line, column, source_line, and hint. This gives the agent a clear model of what will happen and what the output will look like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: the primary action appears first, followed by a precise return contract, then a practical usage tip. Every sentence contributes unique value and there is no redundant or filler content.
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-parameter validation tool with no output schema and no annotations, this description is complete. It provides the return contract on success and failure, explains the error structure, signals performance characteristics, and recommends a workflow. An agent has enough information to invoke it correctly and interpret its results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has one parameter, text, with 0% description coverage in the schema itself, so the description must compensate. The phrase 'Check PlantUML source' implies the text parameter is the PlantUML source, which is helpful but minimal. It does not clarify expected formatting, whether the full @startuml block is required, or any constraints on input size or encoding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Check PlantUML source without rendering.' It clearly distinguishes validate_diagram from render_diagram by emphasizing validation versus rendering, and from list_diagram_types by focusing on checking source rather than enumerating types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage guidance: 'Cheap - call it in a generate -> validate -> fix loop before rendering.' This clearly indicates when to use it and its intended position in a workflow. It doesn't explicitly name what tool to use instead for rendering, but 'without rendering' and 'before rendering' make the alternative obvious.
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.
6 tool updates
- First observed
decode_token - First observed
encode_source - First observed
get_syntax_reference - First observed
list_diagram_types - First observed
render_diagram - First observed
validate_diagram
Related MCP Connectors
Diagrams, badges, charts and QR codes as plain image URLs you can paste into Markdown.
Generate cloud architecture diagrams, flowcharts, and sequence diagrams.
Decode, render, validate barcodes: QR, DataMatrix, EAN, UPC, PDF417. All tools free, no auth.
Generate dynamic Mermaid diagrams and charts with AI assistance. Customize styles and export diagr…
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to generate UML diagrams through natural language by rendering PlantUML code into PNG or SVG images. Supports sequence diagrams, class diagrams, use case diagrams, and other UML chart types with Base64-encoded output.7-
- AlicenseAqualityDmaintenanceEnables generation of PlantUML diagrams (sequence, class, C4, architecture) with embeddable SVG/PNG URLs, encoding/decoding capabilities, and automatic syntax error detection and fixing.3217 npm53MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to generate UML diagrams from text descriptions using PlantUML, supporting multiple output formats (PNG, SVG, PDF), syntax validation, and diagram source extraction.4 npmMIT
- AlicenseNot gradedqualityCmaintenanceValidates Mermaid diagrams with comprehensive grammar parsing supporting 28+ diagram types. Processes markdown files, ZIP archives, and direct input with detailed error reporting and enterprise-grade performance capabilities.27 npm2Apache 2.0
Glama MCP Gateway
Add one secure layer between your agents and this server.