Skip to main content
Glama
sbl-sdsc

MCP GeneLab Server

by sbl-sdsc

clean_mermaid_diagram

Read-onlyIdempotent

Removes note statements, empty braces, and post-newline text from Mermaid class diagrams to prevent unreadable yellow boxes and produce clean diagram code.

Instructions

Clean a Mermaid class diagram by removing unwanted elements.

    This tool removes:
    - All note statements that would render as unreadable yellow boxes
    - Empty curly braces from class definitions (handles both single-line and multi-line)
    - Strings after newline characters (e.g., truncates "ClassName

extra" to "ClassName")

    Args:
        mermaid_content: The raw Mermaid class diagram content
        
    Returns:
        Cleaned Mermaid content with note statements, empty braces, and post-newline strings removed
    

Input Schema

NameRequiredDescriptionDefault
session_idNoSession id returned by `create_session()`. This server serves many users from one process; the session id is what keeps your output directory and generated plots private to you. Pass the SAME value on every tool call. If the server replies that the session is unknown or expired, call `create_session()` again and use the new id.
mermaid_contentYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv1.0.0
    • addedInput schema / properties / session_id
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Session id returned by `create_session()`. This server serves many users from one process; the session id is what keeps your output directory and generated plots private to you. Pass the SAME value on every tool call. If the server replies that the session is unknown or expired, call `create_session()` again and use the new id.",
      +  "title": "Session Id"
      +}
    • changedOutput schema / (root)
      Previous value: -{
      -  "$defs": {
      -    "Annotations": {
      -      "additionalProperties": true,
      -      "properties": {
      -        "audience": {
      -          "anyOf": [
      -            {
      -              "items": {
      -                "enum": [
      -                  "user",
      -                  "assistant"
      -                ],
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "default": null,
      -          "title": "Audience"
      -        },
      -        "priority": {
      -          "anyOf": [
      -            {
      -              "maximum": 1,
      -              "minimum": 0,
      -              "type": "number"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "default": null,
      -          "title": "Priority"
      -        }
      -      },
      -      "title": "Annotations",
      -      "type": "object"
      -    },
      -    "TextContent": {
      -      "additionalProperties": true,
      -      "description": "Text content for a message.",
      -      "properties": {
      -        "_meta": {
      -          "anyOf": [
      -            {
      -              "additionalProperties": true,
      -              "type": "object"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "default": null,
      -          "title": "Meta"
      -        },
      -        "annotations": {
      -          "anyOf": [
      -            {
      -              "$ref": "#/$defs/Annotations"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "default": null
      -        },
      -        "text": {
      -          "title": "Text",
      -          "type": "string"
      -        },
      -        "type": {
      -          "const": "text",
      -          "title": "Type",
      -          "type": "string"
      -        }
      -      },
      -      "required": [
      -        "type",
      -        "text"
      -      ],
      -      "title": "TextContent",
      -      "type": "object"
      -    }
      -  },
      -  "properties": {
      -    "result": {
      -      "items": {
      -        "$ref": "#/$defs/TextContent"
      -      },
      -      "title": "Result",
      -      "type": "array"
      -    }
      -  },
      -  "required": [
      -    "result"
      -  ],
      -  "title": "clean_mermaid_diagramOutput",
      -  "type": "object"
      -}New value: +null
  2. First observedv0.4.0

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=false, so safety and repeatability are covered. The description adds useful transformation detail beyond annotations, including removal of note statements, empty braces, and post-newline strings, plus the exact returned state.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose and uses a scannable bullet list for removals. The Args and Returns sections add slight redundancy, but every part remains useful and the total length is reasonable for the transformation behavior it documents.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only utility with no output schema, the description explains the input content, transformations, and returned content well enough for an agent to invoke it correctly. It does not explain session handling, but that is covered in the schema for session_id.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50%. The undocumented required parameter, mermaid_content, is described in the description as 'the raw Mermaid class diagram content,' which adds meaning beyond the schema's bare string type. The optional session_id has a detailed schema description and does not need repetition here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Clean a Mermaid class diagram by removing unwanted elements.' The bullet list then names exactly which elements are removed, so an agent can distinguish this utility from unrelated sibling tools like plotting or querying tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by listing the unwanted elements it removes, but it does not explicitly say when to call this tool, when not to call it, or name an alternative. In the absence of similar sibling tools, the implied scenario is adequate but not rich.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.