{
  "serverInfo": {
    "name": "UML Diagram Generator",
    "version": "1.3.0"
  },
  "tools": [
    {
      "name": "list_diagram_types",
      "description": "List supported diagram types with Kroki backend, description, and formats (same data as uml://types resource). Use when the client cannot read resources.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "required": []
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "generate_uml_batch",
      "description": "Generate multiple diagrams in one call. Each item is like generate_uml (diagram_type, code, output_format?, theme?, scale?). Optional shared output_dir for all items. Returns a list of per-index results or errors.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "items": {
            "type": "string",
            "description": "Items"
          },
          "output_dir": {
            "type": "string",
            "description": "Output Dir"
          }
        },
        "required": [
          "items"
        ]
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "generate_uml",
      "description": "Generate any UML or diagram by type (class, sequence, mermaid, d2, etc.)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "diagram_type": {
            "type": "string",
            "description": "Type of diagram (e.g. class, sequence, activity, mermaid, d2). See uml://types."
          },
          "code": {
            "type": "string",
            "description": "Diagram code in the format for the chosen type"
          },
          "output_dir": {
            "type": "string",
            "description": "Directory to save the image; omit for URL/base64 only (no file write)"
          },
          "output_format": {
            "type": "string",
            "description": "Output format: svg, png, pdf, jpeg, txt, or base64 (per diagram type; see uml://formats)"
          },
          "theme": {
            "type": "string",
            "description": "PlantUML theme (only for PlantUML diagram types)"
          },
          "scale": {
            "type": "string",
            "description": "Scale factor for SVG output (e.g. 2.0 doubles size). Only applied when output_format is svg."
          }
        },
        "required": [
          "diagram_type",
          "code"
        ]
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "validate_uml",
      "description": "Validate diagram type, format, code length, and basic syntax locally before render (no Kroki call). Returns errors and suggestions.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "diagram_type": {
            "type": "string",
            "description": "Type of diagram (e.g. class, sequence, mermaid, d2). See uml://types."
          },
          "code": {
            "type": "string",
            "description": "Diagram code in the format for the chosen type"
          },
          "output_format": {
            "type": "string",
            "description": "Output format: svg, png, pdf, jpeg, txt, or base64 (per diagram type; see uml://formats)"
          },
          "strict": {
            "type": "boolean",
            "description": "Strict"
          }
        },
        "required": [
          "diagram_type",
          "code"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    }
  ],
  "resources": [
    {
      "uri": "uml://types",
      "name": "uml://types",
      "description": "Returns available diagram types with backend, description, and supported formats (e.g. class, sequence, mermaid, d2). Use before generating to verify diagram_type."
    },
    {
      "uri": "uml://templates",
      "name": "uml://templates",
      "description": "Returns starter templates (PlantUML, Mermaid, D2, etc.) for each diagram type. Use to get minimal valid code to customize."
    },
    {
      "uri": "uml://examples",
      "name": "uml://examples",
      "description": "Returns example diagrams for each type (class, sequence, activity, etc.). Use as reference for syntax and structure."
    },
    {
      "uri": "uml://formats",
      "name": "uml://formats",
      "description": "Returns supported output formats (svg, png, pdf) per diagram type. Use to choose valid output_format for generate_uml."
    },
    {
      "uri": "uml://capabilities",
      "name": "uml://capabilities",
      "description": "Matrix of diagram_type -> backend engine and supported output_format values. Same data the server uses for validation before render."
    },
    {
      "uri": "uml://server-info",
      "name": "uml://server-info",
      "description": "Returns server metadata: name, version, tools, prompts, Kroki URL. Use for discovery and health checks."
    },
    {
      "uri": "uml://mermaid-examples",
      "name": "uml://mermaid-examples",
      "description": "Returns named Mermaid examples (sequence_api, gantt) for API-call flows and Gantt charts. Reference for mermaid_sequence_api and mermaid_gantt prompts."
    },
    {
      "uri": "uml://bpmn-guide",
      "name": "uml://bpmn-guide",
      "description": "Structured reference for BPMN 2.0.2: start/end events, tasks, gateways, sequence flow, lanes, pools. Use with generate_uml (diagram_type 'bpmn') or bpmn_process_guide prompt."
    },
    {
      "uri": "uml://workflow",
      "name": "uml://workflow",
      "description": "Recommended workflow: plan first (diagram type, elements, relationships), then call generate_uml with the final code. Use uml_diagram or uml_diagram_with_thinking prompt."
    }
  ],
  "prompts": [
    {
      "name": "uml_diagram",
      "description": "Base prompt for UML diagram generation. Guides the model to produce diagram code (PlantUML, Mermaid, D2) for any diagram type including class, sequence, activity, use case, and more."
    },
    {
      "name": "uml_diagram_with_thinking",
      "description": "Generate UML diagram with an explicit plan-then-generate workflow. Plan first, then output code and call generate_uml (omit output_dir unless saving a file)."
    },
    {
      "name": "class_diagram",
      "description": "Generate UML class diagram from a natural language description. Produces PlantUML code with classes, attributes, methods, visibility, inheritance, composition, and associations."
    },
    {
      "name": "sequence_diagram",
      "description": "Generate UML sequence diagram from a description. Produces PlantUML code with participants, lifelines, messages, activations, and optional return messages."
    },
    {
      "name": "activity_diagram",
      "description": "Generate UML activity diagram from a description. Produces PlantUML code with start/end, activities, decisions, forks, joins, and swimlanes."
    },
    {
      "name": "usecase_diagram",
      "description": "Generate UML use case diagram from a description. Produces PlantUML code with actors, use cases, system boundary, include/extend relationships, and associations."
    },
    {
      "name": "mermaid_sequence_api",
      "description": "Produce a Mermaid sequence diagram for an API call flow: client, API, optional Auth/DB, request/response, and optional alt blocks for success vs error."
    },
    {
      "name": "mermaid_gantt",
      "description": "Generate a Mermaid Gantt chart with title, dateFormat, sections, and tasks including dependencies (after) and durations."
    },
    {
      "name": "bpmn_process_guide",
      "description": "Explain how to draw a BPMN process model. Covers start/end events, tasks, gateways (XOR, AND, OR), sequence flow, lanes, pools, aligned with BPMN 2.0.2."
    },
    {
      "name": "c4_model",
      "description": "Produce C4 model diagrams using PlantUML C4 includes: context or container views, Person/System/Container/Component macros, relationships. Uses diagram_type c4plantuml."
    },
    {
      "name": "wireviz_harness",
      "description": "Produce WireViz YAML for cable/connector harnesses: connectors, cables, colors, pins. Uses diagram_type wireviz."
    },
    {
      "name": "bpmn_executable_process",
      "description": "Build a minimal executable BPMN 2.0 XML process: start, tasks, gateways, end, sequenceFlow. Uses diagram_type bpmn."
    },
    {
      "name": "convert_class_to_mermaid",
      "description": "Convert a class diagram (PlantUML code or prose description) into Mermaid classDiagram syntax, mapping visibility, relationships, and inheritance."
    }
  ],
  "configSchemaUrl": "config-schema.json"
}
