Skip to main content
Glama

Render Mermaid as PNG

render_png
Read-onlyIdempotent

Rasterize a Mermaid source string to PNG. Returns { ok, png_base64 }. Hosted rendering uses resvg-wasm with bundled fonts; bytes may differ from the local napi renderer, so hosted PNG is a convenience surface, not part of the byte-determinism contract. For file/URL artifacts use the local stdio server.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "source": "<source>"
    },
    "name": "render_png"
  }
}

Input Schema

NameRequiredDescriptionDefault
fitToNoExactly one output width or height constraint.
scaleNoPositive output scale used when no fitTo constraint is supplied.
sourceYesMermaid source.
optionsNoShared advanced RenderOptions object.
backgroundNoPortable basic color or hex color painted behind the raster artifact.
minLabelPxNoLegibility floor in effective px: the render warns (BELOW_READABLE_SIZE) when fitTo/scale rasterizes the smallest configured text below it. 0 disables.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed12 schema fields changed
    • addedInput schema / properties / minLabelPx
      Added value: +{
      +  "default": 9,
      +  "description": "Legibility floor in effective px: the render warns (BELOW_READABLE_SIZE) when fitTo/scale rasterizes the smallest configured text below it. 0 disables.",
      +  "minimum": 0,
      +  "type": "number",
      +  "x-agentic-mermaid-receipt": "included",
      +  "x-agentic-mermaid-scope": "portable"
      +}
    • changedInput schema / properties / options / properties / architecture / properties / visual / properties / groupHeaderHeight / description
      Previous value: -"Architecture group-header height."New value: +"Requested minimum Architecture group-header height; expands to fit measured title text."
    • addedInput schema / properties / options / properties / graphLayout
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": false,
      +      "description": "ELK graph layout.",
      +      "properties": {
      +        "backend": {
      +          "const": "elk",
      +          "type": "string"
      +        },
      +        "fallback": {
      +          "enum": [
      +            "none"
      +          ],
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "backend"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "additionalProperties": false,
      +      "description": "Owned graph layout with optional ELK fallback.",
      +      "properties": {
      +        "backend": {
      +          "const": "agentic",
      +          "type": "string"
      +        },
      +        "fallback": {
      +          "enum": [
      +            "none",
      +            "elk"
      +          ],
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "backend"
      +      ],
      +      "type": "object"
      +    }
      +  ],
      +  "x-agentic-mermaid-applicable-builtin-families": [
      +    "flowchart",
      +    "state",
      +    "architecture",
      +    "class",
      +    "er",
      +    "requirement"
      +  ],
      +  "x-agentic-mermaid-terminal": "projected",
      +  "x-agentic-mermaid-terminal-note": "selects pixel placement and optional graphical companion evidence, not terminal-cell placement"
      +}
    • addedInput schema / properties / options / properties / kanban
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Kanban layout controls.",
      +  "properties": {
      +    "maxWidth": {
      +      "description": "Best-effort width budget for wrapping whole Kanban columns into rows.",
      +      "exclusiveMinimum": 0,
      +      "type": "number"
      +    }
      +  },
      +  "type": "object",
      +  "x-agentic-mermaid-applicable-builtin-families": [
      +    "kanban"
      +  ],
      +  "x-agentic-mermaid-terminal": "not-applicable",
      +  "x-agentic-mermaid-terminal-note": "terminal layout uses its own targetWidth"
      +}
    • changedInput schema / properties / options / properties / layerSpacing / x-agentic-mermaid-applicable-builtin-families
      Previous value: -[
      -  "flowchart",
      -  "state",
      -  "class",
      -  "er",
      -  "architecture"
      -]New value: +[
      +  "flowchart",
      +  "state",
      +  "class",
      +  "er",
      +  "architecture",
      +  "c4"
      +]
    • addedInput schema / properties / options / properties / layoutHints
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "adjacent": {
      +      "items": {
      +        "items": {
      +          "type": "string"
      +        },
      +        "minItems": 2,
      +        "type": "array"
      +      },
      +      "type": "array"
      +    },
      +    "ranks": {
      +      "additionalProperties": {
      +        "maximum": 10000,
      +        "minimum": 0,
      +        "type": "integer"
      +      },
      +      "type": "object"
      +    },
      +    "shortEdges": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "type": "object",
      +  "x-agentic-mermaid-applicable-builtin-families": [
      +    "flowchart",
      +    "state"
      +  ],
      +  "x-agentic-mermaid-terminal": "not-applicable",
      +  "x-agentic-mermaid-terminal-note": "not used by terminals"
      +}
    • addedInput schema / properties / options / properties / layoutSafety
      Added value: +{
      +  "default": "report",
      +  "description": "Require a passed final native layout certificate.",
      +  "enum": [
      +    "report",
      +    "strict"
      +  ],
      +  "type": "string",
      +  "x-agentic-mermaid-terminal": "consumed"
      +}
    • changedInput schema / properties / options / properties / nodeSpacing / x-agentic-mermaid-applicable-builtin-families
      Previous value: -[
      -  "flowchart",
      -  "state",
      -  "class",
      -  "er",
      -  "architecture"
      -]New value: +[
      +  "flowchart",
      +  "state",
      +  "class",
      +  "er",
      +  "architecture",
      +  "c4"
      +]
    • changedInput schema / properties / options / properties / padding / x-agentic-mermaid-applicable-builtin-families
      Previous value: -[
      -  "flowchart",
      -  "state",
      -  "architecture"
      -]New value: +[
      +  "flowchart",
      +  "state",
      +  "architecture",
      +  "c4"
      +]
    • addedInput schema / properties / options / properties / pie
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Pie layout controls.",
      +  "properties": {
      +    "maxWidth": {
      +      "description": "Best-effort graphical width budget; authored legend placement retains precedence.",
      +      "exclusiveMinimum": 0,
      +      "type": "number"
      +    }
      +  },
      +  "type": "object",
      +  "x-agentic-mermaid-applicable-builtin-families": [
      +    "pie"
      +  ],
      +  "x-agentic-mermaid-terminal": "not-applicable",
      +  "x-agentic-mermaid-terminal-note": "terminal layout uses its own targetWidth"
      +}
    • addedInput schema / properties / options / properties / radar
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Radar layout controls.",
      +  "properties": {
      +    "maxWidth": {
      +      "description": "Best-effort graphical width budget; authored frames retain precedence.",
      +      "exclusiveMinimum": 0,
      +      "type": "number"
      +    }
      +  },
      +  "type": "object",
      +  "x-agentic-mermaid-applicable-builtin-families": [
      +    "radar"
      +  ],
      +  "x-agentic-mermaid-terminal": "not-applicable",
      +  "x-agentic-mermaid-terminal-note": "terminal layout uses its own targetWidth"
      +}
    • changedInput schema / properties / options / properties / shadow / x-agentic-mermaid-applicable-builtin-families
      Previous value: -[
      -  "flowchart",
      -  "state",
      -  "sequence",
      -  "timeline",
      -  "class",
      -  "er",
      -  "journey",
      -  "xychart",
      -  "pie",
      -  "quadrant",
      -  "gantt",
      -  "mindmap",
      -  "gitgraph"
      -]New value: +[
      +  "flowchart",
      +  "state",
      +  "sequence",
      +  "timeline",
      +  "class",
      +  "er",
      +  "journey",
      +  "xychart",
      +  "pie",
      +  "quadrant",
      +  "gantt",
      +  "mindmap",
      +  "gitgraph",
      +  "sankey"
      +]
  2. Changed8 schema fields changed
    • changedInput schema / properties / options / description
      Previous value: -"Shared advanced RenderOptions object; compatibility convenience fields above override matching values."New value: +"Shared advanced RenderOptions object."
    • changedInput schema / properties / options / properties / embedFontImport / default
      Previous value: -trueNew value: +false
    • removedInput schema / properties / options / properties / idPrefix / default
      Removed value: -""
    • changedInput schema / properties / options / properties / idPrefix / description
      Previous value: -"Namespace generated SVG definition IDs and local references."New value: +"Non-empty namespace for generated SVG definition IDs and local references."
    • changedInput schema / properties / options / properties / idPrefix / pattern
      Previous value: -"^[A-Za-z0-9_.:-]*$"New value: +"^[A-Za-z0-9_.:-]+$"
    • changedInput schema / properties / options / properties / style / anyOf
      Previous value: -[
      -  {
      -    "anyOf": [
      -      {
      -        "description": "Registered Style or Palette name.",
      -        "type": "string"
      -      },
      -      {
      -        "additionalProperties": false,
      -        "description": "A partial declarative style record for Agentic Mermaid rendering. All fields, including formatVersion, are optional on input; resolved and registered specs normalize formatVersion to 1.",
      -        "properties": {
      -          "$schema": {
      -            "description": "Optional JSON Schema pointer for file-backed styles; ignored while rendering.",
      -            "type": "string"
      -          },
      -          "backdrop": {
      -            "description": "Flat page furniture drawn behind the diagram.",
      -            "enum": [
      -              "plain",
      -              "paper-ruled",
      -              "grid"
      -            ],
      -            "type": "string"
      -          },
      -          "blurb": {
      -            "description": "Short human-readable description used by discovery surfaces.",
      -            "type": "string"
      -          },
      -          "bowing": {
      -            "description": "Rough.js line bowing.",
      -            "maximum": 10,
      -            "minimum": 0,
      -            "type": "number"
      -          },
      -          "colors": {
      -            "additionalProperties": false,
      -            "description": "Partial palette of safe, non-fetching CSS color tokens. Runtime validation applies the stricter safe-color policy.",
      -            "properties": {
      -              "accent": {
      -                "description": "Accent paint for emphasis and data series. Must be a safe, non-fetching CSS color.",
      -                "type": "string",
      -                "x-agentic-mermaid-runtime-validator": "safeCssColor"
      -              },
      -              "bg": {
      -                "description": "Diagram page background. Must be a safe, non-fetching CSS color.",
      -                "type": "string",
      -                "x-agentic-mermaid-runtime-validator": "safeCssColor"
      -              },
      -              "border": {
      -                "description": "Node and group border paint. Must be a safe, non-fetching CSS color.",
      -                "type": "string",
      -                "x-agentic-mermaid-runtime-validator": "safeCssColor"
      -              },
      -              "fg": {
      -                "description": "Primary text and foreground paint. Must be a safe, non-fetching CSS color.",
      -                "type": "string",
      -                "x-agentic-mermaid-runtime-validator": "safeCssColor"
      -              },
      -              "line": {
      -                "description": "Connector and secondary line paint. Must be a safe, non-fetching CSS color.",
      -                "type": "string",
      -                "x-agentic-mermaid-runtime-validator": "safeCssColor"
      -              },
      -              "muted": {
      -                "description": "Muted text and secondary data paint. Must be a safe, non-fetching CSS color.",
      -                "type": "string",
      -                "x-agentic-mermaid-runtime-validator": "safeCssColor"
      -              },
      -              "surface": {
      -                "description": "Node and group surface fill. Must be a safe, non-fetching CSS color.",
      -                "type": "string",
      -                "x-agentic-mermaid-runtime-validator": "safeCssColor"
      -              }
      -            },
      -            "type": "object"
      -          },
      -          "fill": {
      -            "description": "Fill policy for rough/hybrid rendering; none and solid require a final stack that activates one of those backends.",
      -            "enum": [
      -              "none",
      -              "hachure",
      -              "solid",
      -              "wash"
      -            ],
      -            "type": "string"
      -          },
      -          "fillWeight": {
      -            "description": "Hachure line weight; requires fill hachure in the final stack.",
      -            "exclusiveMinimum": 0,
      -            "maximum": 20,
      -            "type": "number"
      -          },
      -          "font": {
      -            "description": "Safe, non-fetching CSS font family or stack; the rendering environment supplies the font face.",
      -            "type": "string",
      -            "x-agentic-mermaid-runtime-validator": "safeCssFontFamily"
      -          },
      -          "formatVersion": {
      -            "const": 1,
      -            "description": "Persisted wire-format version. Optional on input and normalized to 1 on output."
      -          },
      -          "hachureAngle": {
      -            "description": "Hachure line angle in degrees; requires fill hachure in the final stack.",
      -            "maximum": 360,
      -            "minimum": -360,
      -            "type": "number"
      -          },
      -          "hachureGap": {
      -            "description": "Gap between hachure lines; requires fill hachure in the final stack.",
      -            "exclusiveMinimum": 0,
      -            "maximum": 100,
      -            "type": "number"
      -          },
      -          "intent": {
      -            "description": "Advisory intent metadata for pickers and quality tooling.",
      -            "enum": [
      -              "premium",
      -              "draft",
      -              "lofi"
      -            ],
      -            "type": "string"
      -          },
      -          "mono": {
      -            "description": "Advisory monochrome contract: express tone through shading and weight.",
      -            "type": "boolean"
      -          },
      -          "name": {
      -            "description": "Canonical look:name or palette:name identity; required only when registering a style.",
      -            "type": "string"
      -          },
      -          "passes": {
      -            "description": "Number of sketch strokes; 1 is single-pass and 2 is the usual double stroke.",
      -            "maximum": 8,
      -            "minimum": 1,
      -            "type": "integer"
      -          },
      -          "roughness": {
      -            "description": "Rough.js stroke irregularity.",
      -            "maximum": 10,
      -            "minimum": 0,
      -            "type": "number"
      -          },
      -          "stroke": {
      -            "description": "Stroke treatment; crisp is the default renderer.",
      -            "enum": [
      -              "crisp",
      -              "jittered",
      -              "freehand"
      -            ],
      -            "type": "string"
      -          },
      -          "strokeWidth": {
      -            "description": "Base stroke width in SVG user units.",
      -            "exclusiveMinimum": 0,
      -            "maximum": 20,
      -            "type": "number"
      -          },
      -          "washEdge": {
      -            "description": "Watercolor edge-darkening opacity; requires fill wash in the final stack.",
      -            "maximum": 1,
      -            "minimum": 0,
      -            "type": "number"
      -          },
      -          "washOpacity": {
      -            "description": "Watercolor glaze opacity; requires fill wash in the final stack.",
      -            "maximum": 1,
      -            "minimum": 0,
      -            "type": "number"
      -          }
      -        },
      -        "type": "object"
      -      }
      -    ],
      -    "x-agentic-mermaid-validation-expectation": "a registered Style name or StyleSpec"
      -  },
      -  {
      -    "description": "Style stack merged from left to right.",
      -    "items": {
      -      "anyOf": [
      -        {
      -          "description": "Registered Style or Palette name.",
      -          "type": "string"
      -        },
      -        {
      -          "additionalProperties": false,
      -          "description": "A partial declarative style record for Agentic Mermaid rendering. All fields, including formatVersion, are optional on input; resolved and registered specs normalize formatVersion to 1.",
      -          "properties": {
      -            "$schema": {
      -              "description": "Optional JSON Schema pointer for file-backed styles; ignored while rendering.",
      -              "type": "string"
      -            },
      -            "backdrop": {
      -              "description": "Flat page furniture drawn behind the diagram.",
      -              "enum": [
      -                "plain",
      -                "paper-ruled",
      -                "grid"
      -              ],
      -              "type": "string"
      -            },
      -            "blurb": {
      -              "description": "Short human-readable description used by discovery surfaces.",
      -              "type": "string"
      -            },
      -            "bowing": {
      -              "description": "Rough.js line bowing.",
      -              "maximum": 10,
      -              "minimum": 0,
      -              "type": "number"
      -            },
      -            "colors": {
      -              "additionalProperties": false,
      -              "description": "Partial palette of safe, non-fetching CSS color tokens. Runtime validation applies the stricter safe-color policy.",
      -              "properties": {
      -                "accent": {
      -                  "description": "Accent paint for emphasis and data series. Must be a safe, non-fetching CSS color.",
      -                  "type": "string",
      -                  "x-agentic-mermaid-runtime-validator": "safeCssColor"
      -                },
      -                "bg": {
      -                  "description": "Diagram page background. Must be a safe, non-fetching CSS color.",
      -                  "type": "string",
      -                  "x-agentic-mermaid-runtime-validator": "safeCssColor"
      -                },
      -                "border": {
      -                  "description": "Node and group border paint. Must be a safe, non-fetching CSS color.",
      -                  "type": "string",
      -                  "x-agentic-mermaid-runtime-validator": "safeCssColor"
      -                },
      -                "fg": {
      -                  "description": "Primary text and foreground paint. Must be a safe, non-fetching CSS color.",
      -                  "type": "string",
      -                  "x-agentic-mermaid-runtime-validator": "safeCssColor"
      -                },
      -                "line": {
      -                  "description": "Connector and secondary line paint. Must be a safe, non-fetching CSS color.",
      -                  "type": "string",
      -                  "x-agentic-mermaid-runtime-validator": "safeCssColor"
      -                },
      -                "muted": {
      -                  "description": "Muted text and secondary data paint. Must be a safe, non-fetching CSS color.",
      -                  "type": "string",
      -                  "x-agentic-mermaid-runtime-validator": "safeCssColor"
      -                },
      -                "surface": {
      -                  "description": "Node and group surface fill. Must be a safe, non-fetching CSS color.",
      -                  "type": "string",
      -                  "x-agentic-mermaid-runtime-validator": "safeCssColor"
      -                }
      -              },
      -              "type": "object"
      -            },
      -            "fill": {
      -              "description": "Fill policy for rough/hybrid rendering; none and solid require a final stack that activates one of those backends.",
      -              "enum": [
      -                "none",
      -                "hachure",
      -                "solid",
      -                "wash"
      -              ],
      -              "type": "string"
      -            },
      -            "fillWeight": {
      -              "description": "Hachure line weight; requires fill hachure in the final stack.",
      -              "exclusiveMinimum": 0,
      -              "maximum": 20,
      -              "type": "number"
      -            },
      -            "font": {
      -              "description": "Safe, non-fetching CSS font family or stack; the rendering environment supplies the font face.",
      -              "type": "string",
      -              "x-agentic-mermaid-runtime-validator": "safeCssFontFamily"
      -            },
      -            "formatVersion": {
      -              "const": 1,
      -              "description": "Persisted wire-format version. Optional on input and normalized to 1 on output."
      -            },
      -            "hachureAngle": {
      -              "description": "Hachure line angle in degrees; requires fill hachure in the final stack.",
      -              "maximum": 360,
      -              "minimum": -360,
      -              "type": "number"
      -            },
      -            "hachureGap": {
      -              "description": "Gap between hachure lines; requires fill hachure in the final stack.",
      -              "exclusiveMinimum": 0,
      -              "maximum": 100,
      -              "type": "number"
      -            },
      -            "intent": {
      -              "description": "Advisory intent metadata for pickers and quality tooling.",
      -              "enum": [
      -                "premium",
      -                "draft",
      -                "lofi"
      -              ],
      -              "type": "string"
      -            },
      -            "mono": {
      -              "description": "Advisory monochrome contract: express tone through shading and weight.",
      -              "type": "boolean"
      -            },
      -            "name": {
      -              "description": "Canonical look:name or palette:name identity; required only when registering a style.",
      -              "type": "string"
      -            },
      -            "passes": {
      -              "description": "Number of sketch strokes; 1 is single-pass and 2 is the usual double stroke.",
      -              "maximum": 8,
      -              "minimum": 1,
      -              "type": "integer"
      -            },
      -            "roughness": {
      -              "description": "Rough.js stroke irregularity.",
      -              "maximum": 10,
      -              "minimum": 0,
      -              "type": "number"
      -            },
      -            "stroke": {
      -              "description": "Stroke treatment; crisp is the default renderer.",
      -              "enum": [
      -                "crisp",
      -                "jittered",
      -                "freehand"
      -              ],
      -              "type": "string"
      -            },
      -            "strokeWidth": {
      -              "description": "Base stroke width in SVG user units.",
      -              "exclusiveMinimum": 0,
      -              "maximum": 20,
      -              "type": "number"
      -            },
      -            "washEdge": {
      -              "description": "Watercolor edge-darkening opacity; requires fill wash in the final stack.",
      -              "maximum": 1,
      -              "minimum": 0,
      -              "type": "number"
      -            },
      -            "washOpacity": {
      -              "description": "Watercolor glaze opacity; requires fill wash in the final stack.",
      -              "maximum": 1,
      -              "minimum": 0,
      -              "type": "number"
      -            }
      -          },
      -          "type": "object"
      -        }
      -      ],
      -      "x-agentic-mermaid-validation-expectation": "a registered Style name or StyleSpec"
      -    },
      -    "type": "array"
      -  }
      -]New value: +[
      +  {
      +    "anyOf": [
      +      {
      +        "description": "Registered Style or Palette name.",
      +        "type": "string"
      +      },
      +      {
      +        "additionalProperties": false,
      +        "description": "A partial declarative style record for Agentic Mermaid rendering. All fields, including formatVersion, are optional on input; resolved and registered specs normalize formatVersion to 1.",
      +        "maxProperties": 24,
      +        "properties": {
      +          "$schema": {
      +            "description": "Optional JSON Schema pointer for file-backed styles; ignored while rendering.",
      +            "type": "string"
      +          },
      +          "backdrop": {
      +            "description": "Flat page furniture drawn behind the diagram.",
      +            "enum": [
      +              "plain",
      +              "paper-ruled",
      +              "grid"
      +            ],
      +            "type": "string"
      +          },
      +          "bindings": {
      +            "description": "Ordered equality bindings from authored/domain meaning to semantic slots.",
      +            "items": {
      +              "additionalProperties": false,
      +              "maxProperties": 4,
      +              "properties": {
      +                "channel": {
      +                  "enum": [
      +                    "category"
      +                  ],
      +                  "type": "string"
      +                },
      +                "role": {
      +                  "enum": [
      +                    "group-header",
      +                    "actor",
      +                    "relationship",
      +                    "pie-slice",
      +                    "legend",
      +                    "bar",
      +                    "series",
      +                    "point",
      +                    "task",
      +                    "milestone"
      +                  ],
      +                  "type": "string"
      +                },
      +                "slot": {
      +                  "not": {
      +                    "enum": [
      +                      "__proto__",
      +                      "constructor",
      +                      "prototype"
      +                    ]
      +                  },
      +                  "pattern": "^[A-Za-z][A-Za-z0-9._-]{0,63}$",
      +                  "type": "string"
      +                },
      +                "value": {
      +                  "maxLength": 256,
      +                  "minLength": 1,
      +                  "pattern": "^[^\\r\\n\\u0000]+$",
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "channel",
      +                "value",
      +                "slot"
      +              ],
      +              "type": "object"
      +            },
      +            "maxItems": 4096,
      +            "type": "array"
      +          },
      +          "blurb": {
      +            "description": "Short human-readable description used by discovery surfaces.",
      +            "type": "string"
      +          },
      +          "bowing": {
      +            "description": "Rough.js line bowing.",
      +            "maximum": 10,
      +            "minimum": 0,
      +            "type": "number"
      +          },
      +          "colors": {
      +            "additionalProperties": false,
      +            "description": "Partial palette of safe, non-fetching CSS color tokens. Runtime validation applies the stricter safe-color policy.",
      +            "maxProperties": 7,
      +            "properties": {
      +              "accent": {
      +                "description": "Accent paint for emphasis and data series. Must be a safe, non-fetching CSS color.",
      +                "type": "string",
      +                "x-agentic-mermaid-runtime-validator": "safeCssColor"
      +              },
      +              "bg": {
      +                "description": "Diagram page background. Must be a safe, non-fetching CSS color.",
      +                "type": "string",
      +                "x-agentic-mermaid-runtime-validator": "safeCssColor"
      +              },
      +              "border": {
      +                "description": "Node and group border paint. Must be a safe, non-fetching CSS color.",
      +                "type": "string",
      +                "x-agentic-mermaid-runtime-validator": "safeCssColor"
      +              },
      +              "fg": {
      +                "description": "Primary text and foreground paint. Must be a safe, non-fetching CSS color.",
      +                "type": "string",
      +                "x-agentic-mermaid-runtime-validator": "safeCssColor"
      +              },
      +              "line": {
      +                "description": "Connector and secondary line paint. Must be a safe, non-fetching CSS color.",
      +                "type": "string",
      +                "x-agentic-mermaid-runtime-validator": "safeCssColor"
      +              },
      +              "muted": {
      +                "description": "Muted text and secondary data paint. Must be a safe, non-fetching CSS color.",
      +                "type": "string",
      +                "x-agentic-mermaid-runtime-validator": "safeCssColor"
      +              },
      +              "surface": {
      +                "description": "Node and group surface fill. Must be a safe, non-fetching CSS color.",
      +                "type": "string",
      +                "x-agentic-mermaid-runtime-validator": "safeCssColor"
      +              }
      +            },
      +            "type": "object"
      +          },
      +          "constraints": {
      +            "description": "Closed inspect-only brand constraints with warn or error actions.",
      +            "items": {
      +              "oneOf": [
      +                {
      +                  "additionalProperties": false,
      +                  "properties": {
      +                    "action": {
      +                      "enum": [
      +                        "warn",
      +                        "error"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    "kind": {
      +                      "const": "contrast"
      +                    },
      +                    "minimum": {
      +                      "maximum": 21,
      +                      "minimum": 1,
      +                      "type": "number"
      +                    },
      +                    "role": {
      +                      "enum": [
      +                        "node",
      +                        "edge",
      +                        "edge-label",
      +                        "group",
      +                        "group-header",
      +                        "label",
      +                        "actor",
      +                        "lifeline",
      +                        "activation",
      +                        "message",
      +                        "block",
      +                        "note",
      +                        "class-box",
      +                        "member",
      +                        "entity",
      +                        "attribute",
      +                        "relationship",
      +                        "cardinality",
      +                        "pie-slice",
      +                        "legend",
      +                        "bar",
      +                        "series",
      +                        "point",
      +                        "axis",
      +                        "grid",
      +                        "plate",
      +                        "section",
      +                        "task",
      +                        "milestone",
      +                        "marker-line",
      +                        "rail",
      +                        "period",
      +                        "event",
      +                        "score",
      +                        "actor-pill",
      +                        "service",
      +                        "junction",
      +                        "icon",
      +                        "title",
      +                        "defs",
      +                        "prelude",
      +                        "chrome"
      +                      ],
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "kind",
      +                    "action"
      +                  ],
      +                  "type": "object"
      +                },
      +                {
      +                  "additionalProperties": false,
      +                  "properties": {
      +                    "action": {
      +                      "enum": [
      +                        "warn",
      +                        "error"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    "kind": {
      +                      "const": "accent-area"
      +                    },
      +                    "maxFraction": {
      +                      "maximum": 1,
      +                      "minimum": 0,
      +                      "type": "number"
      +                    }
      +                  },
      +                  "required": [
      +                    "kind",
      +                    "action",
      +                    "maxFraction"
      +                  ],
      +                  "type": "object"
      +                },
      +                {
      +                  "additionalProperties": false,
      +                  "properties": {
      +                    "action": {
      +                      "enum": [
      +                        "warn",
      +                        "error"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    "kind": {
      +                      "const": "mono-role"
      +                    },
      +                    "role": {
      +                      "enum": [
      +                        "node",
      +                        "edge",
      +                        "edge-label",
      +                        "group",
      +                        "group-header",
      +                        "label",
      +                        "actor",
      +                        "lifeline",
      +                        "activation",
      +                        "message",
      +                        "block",
      +                        "note",
      +                        "class-box",
      +                        "member",
      +                        "entity",
      +                        "attribute",
      +                        "relationship",
      +                        "cardinality",
      +                        "pie-slice",
      +                        "legend",
      +                        "bar",
      +                        "series",
      +                        "point",
      +                        "axis",
      +                        "grid",
      +                        "plate",
      +                        "section",
      +                        "task",
      +                        "milestone",
      +                        "marker-line",
      +                        "rail",
      +                        "period",
      +                        "event",
      +                        "score",
      +                        "actor-pill",
      +                        "service",
      +                        "junction",
      +                        "icon",
      +                        "title",
      +                        "defs",
      +                        "prelude",
      +                        "chrome"
      +                      ],
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "kind",
      +                    "action",
      +                    "role"
      +                  ],
      +                  "type": "object"
      +                }
      +              ]
      +            },
      +            "maxItems": 4096,
      +            "type": "array"
      +          },
      +          "fill": {
      +            "description": "Fill policy for rough/hybrid rendering; none and solid require a final stack that activates one of those backends.",
      +            "enum": [
      +              "none",
      +              "hachure",
      +              "solid",
      +              "wash"
      +            ],
      +            "type": "string"
      +          },
      +          "fillWeight": {
      +            "description": "Hachure line weight; requires fill hachure in the final stack.",
      +            "exclusiveMinimum": 0,
      +            "maximum": 20,
      +            "type": "number"
      +          },
      +          "font": {
      +            "description": "Safe, non-fetching CSS font family or stack; the rendering environment supplies the font face.",
      +            "type": "string",
      +            "x-agentic-mermaid-runtime-validator": "safeCssFontFamily"
      +          },
      +          "formatVersion": {
      +            "const": 1,
      +            "description": "Persisted wire-format version. Optional on input and normalized to 1 on output."
      +          },
      +          "hachureAngle": {
      +            "description": "Hachure line angle in degrees; requires fill hachure in the final stack.",
      +            "maximum": 360,
      +            "minimum": -360,
      +            "type": "number"
      +          },
      +          "hachureGap": {
      +            "description": "Gap between hachure lines; requires fill hachure in the final stack.",
      +            "exclusiveMinimum": 0,
      +            "maximum": 100,
      +            "type": "number"
      +          },
      +          "intent": {
      +            "description": "Advisory intent metadata for pickers and quality tooling.",
      +            "enum": [
      +              "premium",
      +              "draft",
      +              "lofi"
      +            ],
      +            "type": "string"
      +          },
      +          "mono": {
      +            "description": "Advisory monochrome contract: express tone through shading and weight.",
      +            "type": "boolean"
      +          },
      +          "name": {
      +            "description": "Canonical look:name or palette:name identity; required only when registering a style.",
      +            "type": "string"
      +          },
      +          "passes": {
      +            "description": "Number of sketch strokes; 1 is single-pass and 2 is the usual double stroke.",
      +            "maximum": 8,
      +            "minimum": 1,
      +            "type": "integer"
      +          },
      +          "roles": {
      +            "additionalProperties": false,
      +            "description": "Partial semantic SceneRole defaults. Family-authored styling remains authoritative.",
      +            "properties": {
      +              "actor": {
      +                "additionalProperties": false,
      +                "maxProperties": 11,
      +                "properties": {
      +                  "borderColor": {
      +                    "description": "Border paint.",
      +                    "type": "string",
      +                    "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                  },
      +                  "cornerRadius": {
      +                    "description": "Applicable corner radius.",
      +                    "maximum": 256,
      +                    "minimum": 0,
      +                    "type": "number"
      +                  },
      +                  "fillColor": {
      +                    "description": "Surface fill paint.",
      +                    "type": "string",
      +                    "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                  },
      +                  "fontSize": {
      +                    "description": "Font size in SVG user units.",
      +                    "maximum": 256,
      +                    "minimum": 1,
      +                    "type": "number"
      +                  },
      +                  "fontWeight": {
      +                    "description": "CSS numeric font weight.",
      +                    "maximum": 1000,
      +                    "minimum": 1,
      +                    "type": "number"
      +                  },
      +                  "letterSpacing": {
      +                    "description": "Letter spacing in SVG user units.",
      +                    "maximum": 4,
      +                    "minimum": -2,
      +                    "type": "number"
      +                  },
      +                  "lineWidth": {
      +                    "description": "Border or connector width.",
      +                    "exclusiveMinimum": 0,
      +                    "maximum": 20,
      +                    "type": "number"
      +                  },
      +                  "paddingX": {
      +                    "description": "Horizontal role padding.",
      +                    "maximum": 256,
      +                    "minimum": 0,
      +                    "type": "number"
      +                  },
      +                  "paddingY": {
      +                    "description": "Vertical role padding.",
      +                    "maximum": 256,
      +                    "minimum": 0,
      +                    "type": "number"
      +                  },
      +                  "textColor": {
      +                    "description": "Text paint.",
      +                    "type": "string",
      +                    "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                  },
      +                  "textTransform": {
      +                    "description": "Text transformation.",
      +                    "enum": [
      +                      "uppercase",
      +                      "lowercase",
      +                      "capitalize"
      +                    ],
      +                    "type": "string"
      +                  }
      +                },
      +                "type": "object"
      +              },
      +              "bar": {
      +                "additionalProperties": false,
      +                "maxProperties": 4,
      +                "properties": {
      +                  "borderColor": {
      +                    "description": "Border paint.",
      +                    "type": "string",
      +                    "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                  },
      +                  "fillColor": {
      +                    "description": "Surface fill paint.",
      +                    "type": "string",
      +                    "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                  },
      +                  "lineWidth": {
      +                    "description": "Border or connector width.",
      +                    "exclusiveMinimum": 0,
      +                    "maximum": 20,
      +                    "type": "number"
      +                  },
      +                  "strokeColor": {
      +                    "description": "Connector stroke paint.",
      +                    "type": "string",
      +                    "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                  }
      +                },
      +                "type": "object"
      +              },
      +              "edge": {
      +                "additionalProperties": false,
      +                "maxProperties": 8,
      +                "properties": {
      +                  "bendRadius": {
      +                    "description": "Applicable connector bend radius.",
      +                    "maximum": 256,
      +                    "minimum": 0,
      +                    "type": "number"
      +                  },
      +                  "fontSize": {
      +                    "description": "Font size in SVG user units.",
      +                    "maximum": 256,
      +                    "minimum": 1,
      +                    "type": "number"
      +                  },
      +                  "fontWeight": {
      +                    "description": "CSS numeric font weight.",
      +                    "maximum": 1000,
      +                    "minimum": 1,
      +                    "type": "number"
      +                  },
      +                  "letterSpacing": {
      +                    "description": "Letter spacing in SVG user units.",
      +                    "maximum": 4,
      +                    "minimum": -2,
      +                    "type": "number"
      +                  },
      +                  "lineWidth": {
      +                    "description": "Border or connector width.",
      +                    "exclusiveMinimum": 0,
      +                    "maximum": 20,
      +                    "type": "number"
      +                  },
      +                  "strokeColor": {
      +                    "description": "Connector stroke paint.",
      +                    "type": "string",
      +                    "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                  },
      +                  "textColor": {
      +                    "description": "Text paint.",
      +                    "type": "string",
      +                    "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                  },
      +                  "textTransform": {
      +                    "description": "Text transformation.",
      +                    "enum": [
      +                      "uppercase",
      +                      "lowercase",
      +                      "capitalize"
      +                    ],
      +                    "type": "string"
      +                  }
      +                },
      +                "type": "object"
      +              },
      +              "group": {
      +                "additionalProperties": false,
      +                "maxProperties": 13,
      +                "properties": {
      +                  "borderColor": {
      +                    "description": "Border paint.",
      +                    "type": "string",
      +                    "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                  },
      +                  "cornerRadius": {
      +                    "description": "Applicable corner radius.",
      +                    "maximum": 256,
      +                    "minimum": 0,
      +                    "type": "number"
      +                  },
      +                  "fillColor": {
      +                    "description": "Surface fill paint.",
      +                    "type": "string",
      +                    "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                  },
      +                  "fontFamily": {
      +                    "description": "Safe font family/stack for roles whose descriptor exposes family-specific typography.",
      +                    "type": "string",
      +                    "x-agentic-mermaid-runtime-validator": "safeCssFontFamily"
      +                  },
      +                  "fontSize": {
      +                    "description": "Font size in SVG user units.",
      +                    "maximum": 256,
      +                    "minimum": 1,
      +                    "type": "number"
      +                  },
      +                  "fontWeight": {
      +                    "description": "CSS numeric font weight.",
      +                    "maximum": 1000,
      +                    "minimum": 1,
      +                    "type": "number"
      +                  },
      +                  "headerFillColor": {
      +                    "description": "Group header surface paint.",
      +                    "type": "string",
      +                    "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                  },
      +                  "letterSpacing": {
      +                    "description": "Letter spacing in SVG user units.",
      +                    "maximum": 4,
      +                    "minimum": -2,
      +                    "type": "number"
      +                  },
      +                  "lineWidth": {
      +                    "description": "Border or connector width.",
      +                    "exclusiveMinimum": 0,
      +                    "maximum": 20,
      +                    "type": "number"
      +                  },
      +                  "paddingX": {
      +                    "description": "Horizontal role padding.",
      +                    "maximum": 256,
      +                    "minimum": 0,
      +                    "type": "number"
      +                  },
      +                  "paddingY": {
      +                    "description": "Vertical role padding.",
      +                    "maximum": 256,
      +                    "minimum": 0,
      +                    "type": "number"
      +                  },
      +                  "textColor": {
      +                    "description": "Text paint.",
      +                    "type": "string",
      +                    "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                  },
      +                  "textTransform": {
      +                    "description": "Text transformation.",
      +                    "enum": [
      +                      "uppercase",
      +                      "lowercase",
      +                      "capitalize"
      +                    ],
      +                    "type": "string"
      +                  }
      +                },
      +                "type": "object"
      +              },
      +              "group-header": {
      +                "additionalProperties": false,
      +                "maxProperties": 11,
      +                "properties": {
      +                  "borderColor": {
      +                    "description": "Border paint.",
      +                    "type": "string",
      +                    "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                  },
      +                  "cue": {
      +                    "description": "Non-color semantic cue on roles whose family renderer exposes a cue projection.",
      +                    "enum": [
      +                      "none",
      +                      "outline",
      +                      "double-line",
      +                      "pattern"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "fillColor": {
      +                    "description": "Surface fill paint.",
      +                    "type": "string",
      +                    "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                  },
      +                  "fontFamily": {
      +                    "description": "Safe font family/stack for roles whose descriptor exposes family-specific typography.",
      +                    "type": "string",
      +                    "x-agentic-mermaid-runtime-validator": "safeCssFontFamily"
      +                  },
      +                  "fontSize": {
      +                    "description": "Font size in SVG user units.",
      +                    "maximum": 256,
      +                    "minimum": 1,
      +                    "type": "number"
      +                  },
      +                  "fontWeight": {
      +                    "description": "CSS numeric font weight.",
      +                    "maximum": 1000,
      +                    "minimum": 1,
      +                    "type": "number"
      +                  },
      +                  "letterSpacing": {
      +                    "description": "Letter spacing in SVG user units.",
      +                    "maximum": 4,
      +                    "minimum": -2,
      +                    "type": "number"
      +                  },
      +                  "lineWidth": {
      +                    "description": "Border or connector width.",
      +                    "exclusiveMinimum": 0,
      +                    "maximum": 20,
      +                    "type": "number"
      +                  },
      +                  "strokeColor": {
      +                    "description": "Connector stroke paint.",
      +                    "type": "string",
      +                    "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                  },
      +                  "textColor": {
      +                    "description": "Text paint.",
      +                    "type": "string",
      +                    "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                  },
      +                  "textTransform": {
      +                    "description": "Text transformation.",
      +                    "enum": [
      +                      "uppercase",
      +                      "lowercase",
      +                      "capitalize"
      +                    ],
      +                    "type": "string"
      +                  }
      +                },
      +                "type": "object"
      +              },
      +              "label": {
      +                "additionalProperties": false,
      +                "maxProperties": 5,
      +                "properties": {
      +                  "fontSize": {
      +                    "description": "Font size in SVG user units.",
      +                    "maximum": 256,
      +                    "minimum": 1,
      +                    "type": "number"
      +                  },
      +                  "fontWeight": {
      +                    "description": "CSS numeric font weight.",
      +                    "maximum": 1000,
      +                    "minimum": 1,
      +                    "type": "number"
      +                  },
      +                  "letterSpacing": {
      +                    "description": "Letter spacing in SVG user units.",
      +                    "maximum": 4,
      +                    "minimum": -2,
      +                    "type": "number"
      +                  },
      +                  "textColor": {
      +                    "description": "Text paint.",
      +                    "type": "string",
      +                    "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                  },
      +                  "textTransform": {
      +                    "description": "Text transformation.",
      +                    "enum": [
      +                      "uppercase",
      +                      "lowercase",
      +                      "capitalize"
      +                    ],
      +                    "type": "string"
      +                  }
      +                },
      +                "type": "object"
      +              },
      +              "legend": {
      +                "additionalProperties": false,
      +                "maxProperties": 5,
      +                "properties": {
      +                  "borderColor": {
      +                    "description": "Border paint.",
      +                    "type": "string",
      +                    "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                  },
      +                  "fillColor": {
      +                    "description": "Surface fill paint.",
      +                    "type": "string",
      +                    "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                  },
      +                  "lineWidth": {
      +                    "description": "Border or connector width.",
      +                    "exclusiveMinimum": 0,
      +                    "maximum": 20,
      +                    "type": "number"
      +                  },
      +                  "strokeColor": {
      +                    "description": "Connector stroke paint.",
      +                    "type": "string",
      +                    "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                  },
      +                  "textColor": {
      +                    "description": "Text paint.",
      +                    "type": "string",
      +                    "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                  }
      +                },
      +                "type": "object"
      +              },
      +              "milestone": {
      +                "additionalProperties": false,
      +                "maxProperties": 5,
      +                "properties": {
      +                  "borderColor": {
      +                    "description": "Border paint.",
      +                    "type": "string",
      +                    "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                  },
      +                  "cue": {
      +                    "description": "Non-color semantic cue on roles whose family renderer exposes a cue projection.",
      +                    "enum": [
      +                      "none",
      +                      "outline",
      +                      "double-line",
      +                      "pattern"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "fillColor": {
      +                    "description": "Surface fill paint.",
      +                    "type": "string",
      +                    "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                  },
      +                  "lineWidth": {
      +                    "description": "Border or connector width.",
      +                    "exclusiveMinimum": 0,
      +                    "maximum": 20,
      +                    "type": "number"
      +                  },
      +                  "strokeColor": {
      +                    "description": "Connector stroke paint.",
      +                    "type": "string",
      +                    "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                  }
      +                },
      +                "type": "object"
      +              },
      +              "node": {
      +                "additionalProperties": false,
      +                "maxProperties": 11,
      +                "properties": {
      +                  "borderColor": {
      +                    "description": "Border paint.",
      +                    "type": "string",
      +                    "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                  },
      +                  "cornerRadius": {
      +                    "description": "Applicable corner radius.",
      +                    "maximum": 256,
      +                    "minimum": 0,
      +                    "type": "number"
      +                  },
      +                  "fillColor": {
      +                    "description": "Surface fill paint.",
      +                    "type": "string",
      +                    "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                  },
      +                  "fontSize": {
      +                    "description": "Font size in SVG user units.",
      +                    "maximum": 256,
      +                    "minimum": 1,
      +                    "type": "number"
      +                  },
      +                  "fontWeight": {
      +                    "description": "CSS numeric font weight.",
      +                    "maximum": 1000,
      +                    "minimum": 1,
      +                    "type": "number"
      +                  },
      +                  "letterSpacing": {
      +                    "description": "Letter spacing in SVG user units.",
      +                    "maximum": 4,
      +                    "minimum": -2,
      +                    "type": "number"
      +                  },
      +                  "lineWidth": {
      +                    "description": "Border or connector width.",
      +                    "exclusiveMinimum": 0,
      +                    "maximum": 20,
      +                    "type": "number"
      +                  },
      +                  "paddingX": {
      +                    "description": "Horizontal role padding.",
      +                    "maximum": 256,
      +                    "minimum": 0,
      +                    "type": "number"
      +                  },
      +                  "paddingY": {
      +                    "description": "Vertical role padding.",
      +                    "maximum": 256,
      +                    "minimum": 0,
      +                    "type": "number"
      +                  },
      +                  "textColor": {
      +                    "description": "Text paint.",
      +                    "type": "string",
      +                    "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                  },
      +                  "textTransform": {
      +                    "description": "Text transformation.",
      +                    "enum": [
      +                      "uppercase",
      +                      "lowercase",
      +                      "capitalize"
      +                    ],
      +                    "type": "string"
      +                  }
      +                },
      +                "type": "object"
      +              },
      +              "pie-slice": {
      +                "additionalProperties": false,
      +                "maxProperties": 5,
      +                "properties": {
      +                  "borderColor": {
      +                    "description": "Border paint.",
      +                    "type": "string",
      +                    "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                  },
      +                  "cue": {
      +                    "description": "Non-color semantic cue on roles whose family renderer exposes a cue projection.",
      +                    "enum": [
      +                      "none",
      +                      "outline",
      +                      "double-line",
      +                      "pattern"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "fillColor": {
      +                    "description": "Surface fill paint.",
      +                    "type": "string",
      +                    "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                  },
      +                  "lineWidth": {
      +                    "description": "Border or connector width.",
      +                    "exclusiveMinimum": 0,
      +                    "maximum": 20,
      +                    "type": "number"
      +                  },
      +                  "strokeColor": {
      +                    "description": "Connector stroke paint.",
      +                    "type": "string",
      +                    "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                  }
      +                },
      +                "type": "object"
      +              },
      +              "point": {
      +                "additionalProperties": false,
      +                "maxProperties": 4,
      +                "properties": {
      +                  "borderColor": {
      +                    "description": "Border paint.",
      +                    "type": "string",
      +                    "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                  },
      +                  "fillColor": {
      +                    "description": "Surface fill paint.",
      +                    "type": "string",
      +                    "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                  },
      +                  "lineWidth": {
      +                    "description": "Border or connector width.",
      +                    "exclusiveMinimum": 0,
      +                    "maximum": 20,
      +                    "type": "number"
      +                  },
      +                  "strokeColor": {
      +                    "description": "Connector stroke paint.",
      +                    "type": "string",
      +                    "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                  }
      +                },
      +                "type": "object"
      +              },
      +              "relationship": {
      +                "additionalProperties": false,
      +                "maxProperties": 8,
      +                "properties": {
      +                  "bendRadius": {
      +                    "description": "Applicable connector bend radius.",
      +                    "maximum": 256,
      +                    "minimum": 0,
      +                    "type": "number"
      +                  },
      +                  "fontSize": {
      +                    "description": "Font size in SVG user units.",
      +                    "maximum": 256,
      +                    "minimum": 1,
      +                    "type": "number"
      +                  },
      +                  "fontWeight": {
      +                    "description": "CSS numeric font weight.",
      +                    "maximum": 1000,
      +                    "minimum": 1,
      +                    "type": "number"
      +                  },
      +                  "letterSpacing": {
      +                    "description": "Letter spacing in SVG user units.",
      +                    "maximum": 4,
      +                    "minimum": -2,
      +                    "type": "number"
      +                  },
      +                  "lineWidth": {
      +                    "description": "Border or connector width.",
      +                    "exclusiveMinimum": 0,
      +                    "maximum": 20,
      +                    "type": "number"
      +                  },
      +                  "strokeColor": {
      +                    "description": "Connector stroke paint.",
      +                    "type": "string",
      +                    "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                  },
      +                  "textColor": {
      +                    "description": "Text paint.",
      +                    "type": "string",
      +                    "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                  },
      +                  "textTransform": {
      +                    "description": "Text transformation.",
      +                    "enum": [
      +                      "uppercase",
      +                      "lowercase",
      +                      "capitalize"
      +                    ],
      +                    "type": "string"
      +                  }
      +                },
      +                "type": "object"
      +              },
      +              "series": {
      +                "additionalProperties": false,
      +                "maxProperties": 3,
      +                "properties": {
      +                  "borderColor": {
      +                    "description": "Border paint.",
      +                    "type": "string",
      +                    "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                  },
      +                  "lineWidth": {
      +                    "description": "Border or connector width.",
      +                    "exclusiveMinimum": 0,
      +                    "maximum": 20,
      +                    "type": "number"
      +                  },
      +                  "strokeColor": {
      +                    "description": "Connector stroke paint.",
      +                    "type": "string",
      +                    "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                  }
      +                },
      +                "type": "object"
      +              },
      +              "task": {
      +                "additionalProperties": false,
      +                "maxProperties": 5,
      +                "properties": {
      +                  "borderColor": {
      +                    "description": "Border paint.",
      +                    "type": "string",
      +                    "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                  },
      +                  "cue": {
      +                    "description": "Non-color semantic cue on roles whose family renderer exposes a cue projection.",
      +                    "enum": [
      +                      "none",
      +                      "outline",
      +                      "double-line",
      +                      "pattern"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "fillColor": {
      +                    "description": "Surface fill paint.",
      +                    "type": "string",
      +                    "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                  },
      +                  "lineWidth": {
      +                    "description": "Border or connector width.",
      +                    "exclusiveMinimum": 0,
      +                    "maximum": 20,
      +                    "type": "number"
      +                  },
      +                  "strokeColor": {
      +                    "description": "Connector stroke paint.",
      +                    "type": "string",
      +                    "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                  }
      +                },
      +                "type": "object"
      +              }
      +            },
      +            "type": "object"
      +          },
      +          "roughness": {
      +            "description": "Rough.js stroke irregularity.",
      +            "maximum": 10,
      +            "minimum": 0,
      +            "type": "number"
      +          },
      +          "semanticSlots": {
      +            "additionalProperties": {
      +              "additionalProperties": false,
      +              "maxProperties": 16,
      +              "properties": {
      +                "bendRadius": {
      +                  "description": "Applicable connector bend radius.",
      +                  "maximum": 256,
      +                  "minimum": 0,
      +                  "type": "number"
      +                },
      +                "borderColor": {
      +                  "description": "Border paint.",
      +                  "type": "string",
      +                  "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                },
      +                "cornerRadius": {
      +                  "description": "Applicable corner radius.",
      +                  "maximum": 256,
      +                  "minimum": 0,
      +                  "type": "number"
      +                },
      +                "cue": {
      +                  "description": "Non-color semantic cue on roles whose family renderer exposes a cue projection.",
      +                  "enum": [
      +                    "none",
      +                    "outline",
      +                    "double-line",
      +                    "pattern"
      +                  ],
      +                  "type": "string"
      +                },
      +                "fillColor": {
      +                  "description": "Surface fill paint.",
      +                  "type": "string",
      +                  "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                },
      +                "fontFamily": {
      +                  "description": "Safe font family/stack for roles whose descriptor exposes family-specific typography.",
      +                  "type": "string",
      +                  "x-agentic-mermaid-runtime-validator": "safeCssFontFamily"
      +                },
      +                "fontSize": {
      +                  "description": "Font size in SVG user units.",
      +                  "maximum": 256,
      +                  "minimum": 1,
      +                  "type": "number"
      +                },
      +                "fontWeight": {
      +                  "description": "CSS numeric font weight.",
      +                  "maximum": 1000,
      +                  "minimum": 1,
      +                  "type": "number"
      +                },
      +                "headerFillColor": {
      +                  "description": "Group header surface paint.",
      +                  "type": "string",
      +                  "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                },
      +                "letterSpacing": {
      +                  "description": "Letter spacing in SVG user units.",
      +                  "maximum": 4,
      +                  "minimum": -2,
      +                  "type": "number"
      +                },
      +                "lineWidth": {
      +                  "description": "Border or connector width.",
      +                  "exclusiveMinimum": 0,
      +                  "maximum": 20,
      +                  "type": "number"
      +                },
      +                "paddingX": {
      +                  "description": "Horizontal role padding.",
      +                  "maximum": 256,
      +                  "minimum": 0,
      +                  "type": "number"
      +                },
      +                "paddingY": {
      +                  "description": "Vertical role padding.",
      +                  "maximum": 256,
      +                  "minimum": 0,
      +                  "type": "number"
      +                },
      +                "strokeColor": {
      +                  "description": "Connector stroke paint.",
      +                  "type": "string",
      +                  "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                },
      +                "textColor": {
      +                  "description": "Text paint.",
      +                  "type": "string",
      +                  "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                },
      +                "textTransform": {
      +                  "description": "Text transformation.",
      +                  "enum": [
      +                    "uppercase",
      +                    "lowercase",
      +                    "capitalize"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "type": "object"
      +            },
      +            "description": "Named brand-neutral role-style slots selected by semantic bindings.",
      +            "maxProperties": 4096,
      +            "propertyNames": {
      +              "not": {
      +                "enum": [
      +                  "__proto__",
      +                  "constructor",
      +                  "prototype"
      +                ]
      +              },
      +              "pattern": "^[A-Za-z][A-Za-z0-9._-]{0,63}$"
      +            },
      +            "type": "object"
      +          },
      +          "stroke": {
      +            "description": "Stroke treatment; crisp is the default renderer.",
      +            "enum": [
      +              "crisp",
      +              "jittered",
      +              "freehand"
      +            ],
      +            "type": "string"
      +          },
      +          "strokeWidth": {
      +            "description": "Base stroke width in SVG user units.",
      +            "exclusiveMinimum": 0,
      +            "maximum": 20,
      +            "type": "number"
      +          },
      +          "washEdge": {
      +            "description": "Watercolor edge-darkening opacity; requires fill wash in the final stack.",
      +            "maximum": 1,
      +            "minimum": 0,
      +            "type": "number"
      +          },
      +          "washOpacity": {
      +            "description": "Watercolor glaze opacity; requires fill wash in the final stack.",
      +            "maximum": 1,
      +            "minimum": 0,
      +            "type": "number"
      +          }
      +        },
      +        "type": "object"
      +      }
      +    ],
      +    "x-agentic-mermaid-validation-expectation": "a registered Style name or StyleSpec"
      +  },
      +  {
      +    "description": "Style stack merged from left to right.",
      +    "items": {
      +      "anyOf": [
      +        {
      +          "description": "Registered Style or Palette name.",
      +          "type": "string"
      +        },
      +        {
      +          "additionalProperties": false,
      +          "description": "A partial declarative style record for Agentic Mermaid rendering. All fields, including formatVersion, are optional on input; resolved and registered specs normalize formatVersion to 1.",
      +          "maxProperties": 24,
      +          "properties": {
      +            "$schema": {
      +              "description": "Optional JSON Schema pointer for file-backed styles; ignored while rendering.",
      +              "type": "string"
      +            },
      +            "backdrop": {
      +              "description": "Flat page furniture drawn behind the diagram.",
      +              "enum": [
      +                "plain",
      +                "paper-ruled",
      +                "grid"
      +              ],
      +              "type": "string"
      +            },
      +            "bindings": {
      +              "description": "Ordered equality bindings from authored/domain meaning to semantic slots.",
      +              "items": {
      +                "additionalProperties": false,
      +                "maxProperties": 4,
      +                "properties": {
      +                  "channel": {
      +                    "enum": [
      +                      "category"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "role": {
      +                    "enum": [
      +                      "group-header",
      +                      "actor",
      +                      "relationship",
      +                      "pie-slice",
      +                      "legend",
      +                      "bar",
      +                      "series",
      +                      "point",
      +                      "task",
      +                      "milestone"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "slot": {
      +                    "not": {
      +                      "enum": [
      +                        "__proto__",
      +                        "constructor",
      +                        "prototype"
      +                      ]
      +                    },
      +                    "pattern": "^[A-Za-z][A-Za-z0-9._-]{0,63}$",
      +                    "type": "string"
      +                  },
      +                  "value": {
      +                    "maxLength": 256,
      +                    "minLength": 1,
      +                    "pattern": "^[^\\r\\n\\u0000]+$",
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "channel",
      +                  "value",
      +                  "slot"
      +                ],
      +                "type": "object"
      +              },
      +              "maxItems": 4096,
      +              "type": "array"
      +            },
      +            "blurb": {
      +              "description": "Short human-readable description used by discovery surfaces.",
      +              "type": "string"
      +            },
      +            "bowing": {
      +              "description": "Rough.js line bowing.",
      +              "maximum": 10,
      +              "minimum": 0,
      +              "type": "number"
      +            },
      +            "colors": {
      +              "additionalProperties": false,
      +              "description": "Partial palette of safe, non-fetching CSS color tokens. Runtime validation applies the stricter safe-color policy.",
      +              "maxProperties": 7,
      +              "properties": {
      +                "accent": {
      +                  "description": "Accent paint for emphasis and data series. Must be a safe, non-fetching CSS color.",
      +                  "type": "string",
      +                  "x-agentic-mermaid-runtime-validator": "safeCssColor"
      +                },
      +                "bg": {
      +                  "description": "Diagram page background. Must be a safe, non-fetching CSS color.",
      +                  "type": "string",
      +                  "x-agentic-mermaid-runtime-validator": "safeCssColor"
      +                },
      +                "border": {
      +                  "description": "Node and group border paint. Must be a safe, non-fetching CSS color.",
      +                  "type": "string",
      +                  "x-agentic-mermaid-runtime-validator": "safeCssColor"
      +                },
      +                "fg": {
      +                  "description": "Primary text and foreground paint. Must be a safe, non-fetching CSS color.",
      +                  "type": "string",
      +                  "x-agentic-mermaid-runtime-validator": "safeCssColor"
      +                },
      +                "line": {
      +                  "description": "Connector and secondary line paint. Must be a safe, non-fetching CSS color.",
      +                  "type": "string",
      +                  "x-agentic-mermaid-runtime-validator": "safeCssColor"
      +                },
      +                "muted": {
      +                  "description": "Muted text and secondary data paint. Must be a safe, non-fetching CSS color.",
      +                  "type": "string",
      +                  "x-agentic-mermaid-runtime-validator": "safeCssColor"
      +                },
      +                "surface": {
      +                  "description": "Node and group surface fill. Must be a safe, non-fetching CSS color.",
      +                  "type": "string",
      +                  "x-agentic-mermaid-runtime-validator": "safeCssColor"
      +                }
      +              },
      +              "type": "object"
      +            },
      +            "constraints": {
      +              "description": "Closed inspect-only brand constraints with warn or error actions.",
      +              "items": {
      +                "oneOf": [
      +                  {
      +                    "additionalProperties": false,
      +                    "properties": {
      +                      "action": {
      +                        "enum": [
      +                          "warn",
      +                          "error"
      +                        ],
      +                        "type": "string"
      +                      },
      +                      "kind": {
      +                        "const": "contrast"
      +                      },
      +                      "minimum": {
      +                        "maximum": 21,
      +                        "minimum": 1,
      +                        "type": "number"
      +                      },
      +                      "role": {
      +                        "enum": [
      +                          "node",
      +                          "edge",
      +                          "edge-label",
      +                          "group",
      +                          "group-header",
      +                          "label",
      +                          "actor",
      +                          "lifeline",
      +                          "activation",
      +                          "message",
      +                          "block",
      +                          "note",
      +                          "class-box",
      +                          "member",
      +                          "entity",
      +                          "attribute",
      +                          "relationship",
      +                          "cardinality",
      +                          "pie-slice",
      +                          "legend",
      +                          "bar",
      +                          "series",
      +                          "point",
      +                          "axis",
      +                          "grid",
      +                          "plate",
      +                          "section",
      +                          "task",
      +                          "milestone",
      +                          "marker-line",
      +                          "rail",
      +                          "period",
      +                          "event",
      +                          "score",
      +                          "actor-pill",
      +                          "service",
      +                          "junction",
      +                          "icon",
      +                          "title",
      +                          "defs",
      +                          "prelude",
      +                          "chrome"
      +                        ],
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "kind",
      +                      "action"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  {
      +                    "additionalProperties": false,
      +                    "properties": {
      +                      "action": {
      +                        "enum": [
      +                          "warn",
      +                          "error"
      +                        ],
      +                        "type": "string"
      +                      },
      +                      "kind": {
      +                        "const": "accent-area"
      +                      },
      +                      "maxFraction": {
      +                        "maximum": 1,
      +                        "minimum": 0,
      +                        "type": "number"
      +                      }
      +                    },
      +                    "required": [
      +                      "kind",
      +                      "action",
      +                      "maxFraction"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  {
      +                    "additionalProperties": false,
      +                    "properties": {
      +                      "action": {
      +                        "enum": [
      +                          "warn",
      +                          "error"
      +                        ],
      +                        "type": "string"
      +                      },
      +                      "kind": {
      +                        "const": "mono-role"
      +                      },
      +                      "role": {
      +                        "enum": [
      +                          "node",
      +                          "edge",
      +                          "edge-label",
      +                          "group",
      +                          "group-header",
      +                          "label",
      +                          "actor",
      +                          "lifeline",
      +                          "activation",
      +                          "message",
      +                          "block",
      +                          "note",
      +                          "class-box",
      +                          "member",
      +                          "entity",
      +                          "attribute",
      +                          "relationship",
      +                          "cardinality",
      +                          "pie-slice",
      +                          "legend",
      +                          "bar",
      +                          "series",
      +                          "point",
      +                          "axis",
      +                          "grid",
      +                          "plate",
      +                          "section",
      +                          "task",
      +                          "milestone",
      +                          "marker-line",
      +                          "rail",
      +                          "period",
      +                          "event",
      +                          "score",
      +                          "actor-pill",
      +                          "service",
      +                          "junction",
      +                          "icon",
      +                          "title",
      +                          "defs",
      +                          "prelude",
      +                          "chrome"
      +                        ],
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "kind",
      +                      "action",
      +                      "role"
      +                    ],
      +                    "type": "object"
      +                  }
      +                ]
      +              },
      +              "maxItems": 4096,
      +              "type": "array"
      +            },
      +            "fill": {
      +              "description": "Fill policy for rough/hybrid rendering; none and solid require a final stack that activates one of those backends.",
      +              "enum": [
      +                "none",
      +                "hachure",
      +                "solid",
      +                "wash"
      +              ],
      +              "type": "string"
      +            },
      +            "fillWeight": {
      +              "description": "Hachure line weight; requires fill hachure in the final stack.",
      +              "exclusiveMinimum": 0,
      +              "maximum": 20,
      +              "type": "number"
      +            },
      +            "font": {
      +              "description": "Safe, non-fetching CSS font family or stack; the rendering environment supplies the font face.",
      +              "type": "string",
      +              "x-agentic-mermaid-runtime-validator": "safeCssFontFamily"
      +            },
      +            "formatVersion": {
      +              "const": 1,
      +              "description": "Persisted wire-format version. Optional on input and normalized to 1 on output."
      +            },
      +            "hachureAngle": {
      +              "description": "Hachure line angle in degrees; requires fill hachure in the final stack.",
      +              "maximum": 360,
      +              "minimum": -360,
      +              "type": "number"
      +            },
      +            "hachureGap": {
      +              "description": "Gap between hachure lines; requires fill hachure in the final stack.",
      +              "exclusiveMinimum": 0,
      +              "maximum": 100,
      +              "type": "number"
      +            },
      +            "intent": {
      +              "description": "Advisory intent metadata for pickers and quality tooling.",
      +              "enum": [
      +                "premium",
      +                "draft",
      +                "lofi"
      +              ],
      +              "type": "string"
      +            },
      +            "mono": {
      +              "description": "Advisory monochrome contract: express tone through shading and weight.",
      +              "type": "boolean"
      +            },
      +            "name": {
      +              "description": "Canonical look:name or palette:name identity; required only when registering a style.",
      +              "type": "string"
      +            },
      +            "passes": {
      +              "description": "Number of sketch strokes; 1 is single-pass and 2 is the usual double stroke.",
      +              "maximum": 8,
      +              "minimum": 1,
      +              "type": "integer"
      +            },
      +            "roles": {
      +              "additionalProperties": false,
      +              "description": "Partial semantic SceneRole defaults. Family-authored styling remains authoritative.",
      +              "properties": {
      +                "actor": {
      +                  "additionalProperties": false,
      +                  "maxProperties": 11,
      +                  "properties": {
      +                    "borderColor": {
      +                      "description": "Border paint.",
      +                      "type": "string",
      +                      "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                    },
      +                    "cornerRadius": {
      +                      "description": "Applicable corner radius.",
      +                      "maximum": 256,
      +                      "minimum": 0,
      +                      "type": "number"
      +                    },
      +                    "fillColor": {
      +                      "description": "Surface fill paint.",
      +                      "type": "string",
      +                      "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                    },
      +                    "fontSize": {
      +                      "description": "Font size in SVG user units.",
      +                      "maximum": 256,
      +                      "minimum": 1,
      +                      "type": "number"
      +                    },
      +                    "fontWeight": {
      +                      "description": "CSS numeric font weight.",
      +                      "maximum": 1000,
      +                      "minimum": 1,
      +                      "type": "number"
      +                    },
      +                    "letterSpacing": {
      +                      "description": "Letter spacing in SVG user units.",
      +                      "maximum": 4,
      +                      "minimum": -2,
      +                      "type": "number"
      +                    },
      +                    "lineWidth": {
      +                      "description": "Border or connector width.",
      +                      "exclusiveMinimum": 0,
      +                      "maximum": 20,
      +                      "type": "number"
      +                    },
      +                    "paddingX": {
      +                      "description": "Horizontal role padding.",
      +                      "maximum": 256,
      +                      "minimum": 0,
      +                      "type": "number"
      +                    },
      +                    "paddingY": {
      +                      "description": "Vertical role padding.",
      +                      "maximum": 256,
      +                      "minimum": 0,
      +                      "type": "number"
      +                    },
      +                    "textColor": {
      +                      "description": "Text paint.",
      +                      "type": "string",
      +                      "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                    },
      +                    "textTransform": {
      +                      "description": "Text transformation.",
      +                      "enum": [
      +                        "uppercase",
      +                        "lowercase",
      +                        "capitalize"
      +                      ],
      +                      "type": "string"
      +                    }
      +                  },
      +                  "type": "object"
      +                },
      +                "bar": {
      +                  "additionalProperties": false,
      +                  "maxProperties": 4,
      +                  "properties": {
      +                    "borderColor": {
      +                      "description": "Border paint.",
      +                      "type": "string",
      +                      "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                    },
      +                    "fillColor": {
      +                      "description": "Surface fill paint.",
      +                      "type": "string",
      +                      "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                    },
      +                    "lineWidth": {
      +                      "description": "Border or connector width.",
      +                      "exclusiveMinimum": 0,
      +                      "maximum": 20,
      +                      "type": "number"
      +                    },
      +                    "strokeColor": {
      +                      "description": "Connector stroke paint.",
      +                      "type": "string",
      +                      "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                    }
      +                  },
      +                  "type": "object"
      +                },
      +                "edge": {
      +                  "additionalProperties": false,
      +                  "maxProperties": 8,
      +                  "properties": {
      +                    "bendRadius": {
      +                      "description": "Applicable connector bend radius.",
      +                      "maximum": 256,
      +                      "minimum": 0,
      +                      "type": "number"
      +                    },
      +                    "fontSize": {
      +                      "description": "Font size in SVG user units.",
      +                      "maximum": 256,
      +                      "minimum": 1,
      +                      "type": "number"
      +                    },
      +                    "fontWeight": {
      +                      "description": "CSS numeric font weight.",
      +                      "maximum": 1000,
      +                      "minimum": 1,
      +                      "type": "number"
      +                    },
      +                    "letterSpacing": {
      +                      "description": "Letter spacing in SVG user units.",
      +                      "maximum": 4,
      +                      "minimum": -2,
      +                      "type": "number"
      +                    },
      +                    "lineWidth": {
      +                      "description": "Border or connector width.",
      +                      "exclusiveMinimum": 0,
      +                      "maximum": 20,
      +                      "type": "number"
      +                    },
      +                    "strokeColor": {
      +                      "description": "Connector stroke paint.",
      +                      "type": "string",
      +                      "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                    },
      +                    "textColor": {
      +                      "description": "Text paint.",
      +                      "type": "string",
      +                      "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                    },
      +                    "textTransform": {
      +                      "description": "Text transformation.",
      +                      "enum": [
      +                        "uppercase",
      +                        "lowercase",
      +                        "capitalize"
      +                      ],
      +                      "type": "string"
      +                    }
      +                  },
      +                  "type": "object"
      +                },
      +                "group": {
      +                  "additionalProperties": false,
      +                  "maxProperties": 13,
      +                  "properties": {
      +                    "borderColor": {
      +                      "description": "Border paint.",
      +                      "type": "string",
      +                      "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                    },
      +                    "cornerRadius": {
      +                      "description": "Applicable corner radius.",
      +                      "maximum": 256,
      +                      "minimum": 0,
      +                      "type": "number"
      +                    },
      +                    "fillColor": {
      +                      "description": "Surface fill paint.",
      +                      "type": "string",
      +                      "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                    },
      +                    "fontFamily": {
      +                      "description": "Safe font family/stack for roles whose descriptor exposes family-specific typography.",
      +                      "type": "string",
      +                      "x-agentic-mermaid-runtime-validator": "safeCssFontFamily"
      +                    },
      +                    "fontSize": {
      +                      "description": "Font size in SVG user units.",
      +                      "maximum": 256,
      +                      "minimum": 1,
      +                      "type": "number"
      +                    },
      +                    "fontWeight": {
      +                      "description": "CSS numeric font weight.",
      +                      "maximum": 1000,
      +                      "minimum": 1,
      +                      "type": "number"
      +                    },
      +                    "headerFillColor": {
      +                      "description": "Group header surface paint.",
      +                      "type": "string",
      +                      "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                    },
      +                    "letterSpacing": {
      +                      "description": "Letter spacing in SVG user units.",
      +                      "maximum": 4,
      +                      "minimum": -2,
      +                      "type": "number"
      +                    },
      +                    "lineWidth": {
      +                      "description": "Border or connector width.",
      +                      "exclusiveMinimum": 0,
      +                      "maximum": 20,
      +                      "type": "number"
      +                    },
      +                    "paddingX": {
      +                      "description": "Horizontal role padding.",
      +                      "maximum": 256,
      +                      "minimum": 0,
      +                      "type": "number"
      +                    },
      +                    "paddingY": {
      +                      "description": "Vertical role padding.",
      +                      "maximum": 256,
      +                      "minimum": 0,
      +                      "type": "number"
      +                    },
      +                    "textColor": {
      +                      "description": "Text paint.",
      +                      "type": "string",
      +                      "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                    },
      +                    "textTransform": {
      +                      "description": "Text transformation.",
      +                      "enum": [
      +                        "uppercase",
      +                        "lowercase",
      +                        "capitalize"
      +                      ],
      +                      "type": "string"
      +                    }
      +                  },
      +                  "type": "object"
      +                },
      +                "group-header": {
      +                  "additionalProperties": false,
      +                  "maxProperties": 11,
      +                  "properties": {
      +                    "borderColor": {
      +                      "description": "Border paint.",
      +                      "type": "string",
      +                      "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                    },
      +                    "cue": {
      +                      "description": "Non-color semantic cue on roles whose family renderer exposes a cue projection.",
      +                      "enum": [
      +                        "none",
      +                        "outline",
      +                        "double-line",
      +                        "pattern"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    "fillColor": {
      +                      "description": "Surface fill paint.",
      +                      "type": "string",
      +                      "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                    },
      +                    "fontFamily": {
      +                      "description": "Safe font family/stack for roles whose descriptor exposes family-specific typography.",
      +                      "type": "string",
      +                      "x-agentic-mermaid-runtime-validator": "safeCssFontFamily"
      +                    },
      +                    "fontSize": {
      +                      "description": "Font size in SVG user units.",
      +                      "maximum": 256,
      +                      "minimum": 1,
      +                      "type": "number"
      +                    },
      +                    "fontWeight": {
      +                      "description": "CSS numeric font weight.",
      +                      "maximum": 1000,
      +                      "minimum": 1,
      +                      "type": "number"
      +                    },
      +                    "letterSpacing": {
      +                      "description": "Letter spacing in SVG user units.",
      +                      "maximum": 4,
      +                      "minimum": -2,
      +                      "type": "number"
      +                    },
      +                    "lineWidth": {
      +                      "description": "Border or connector width.",
      +                      "exclusiveMinimum": 0,
      +                      "maximum": 20,
      +                      "type": "number"
      +                    },
      +                    "strokeColor": {
      +                      "description": "Connector stroke paint.",
      +                      "type": "string",
      +                      "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                    },
      +                    "textColor": {
      +                      "description": "Text paint.",
      +                      "type": "string",
      +                      "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                    },
      +                    "textTransform": {
      +                      "description": "Text transformation.",
      +                      "enum": [
      +                        "uppercase",
      +                        "lowercase",
      +                        "capitalize"
      +                      ],
      +                      "type": "string"
      +                    }
      +                  },
      +                  "type": "object"
      +                },
      +                "label": {
      +                  "additionalProperties": false,
      +                  "maxProperties": 5,
      +                  "properties": {
      +                    "fontSize": {
      +                      "description": "Font size in SVG user units.",
      +                      "maximum": 256,
      +                      "minimum": 1,
      +                      "type": "number"
      +                    },
      +                    "fontWeight": {
      +                      "description": "CSS numeric font weight.",
      +                      "maximum": 1000,
      +                      "minimum": 1,
      +                      "type": "number"
      +                    },
      +                    "letterSpacing": {
      +                      "description": "Letter spacing in SVG user units.",
      +                      "maximum": 4,
      +                      "minimum": -2,
      +                      "type": "number"
      +                    },
      +                    "textColor": {
      +                      "description": "Text paint.",
      +                      "type": "string",
      +                      "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                    },
      +                    "textTransform": {
      +                      "description": "Text transformation.",
      +                      "enum": [
      +                        "uppercase",
      +                        "lowercase",
      +                        "capitalize"
      +                      ],
      +                      "type": "string"
      +                    }
      +                  },
      +                  "type": "object"
      +                },
      +                "legend": {
      +                  "additionalProperties": false,
      +                  "maxProperties": 5,
      +                  "properties": {
      +                    "borderColor": {
      +                      "description": "Border paint.",
      +                      "type": "string",
      +                      "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                    },
      +                    "fillColor": {
      +                      "description": "Surface fill paint.",
      +                      "type": "string",
      +                      "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                    },
      +                    "lineWidth": {
      +                      "description": "Border or connector width.",
      +                      "exclusiveMinimum": 0,
      +                      "maximum": 20,
      +                      "type": "number"
      +                    },
      +                    "strokeColor": {
      +                      "description": "Connector stroke paint.",
      +                      "type": "string",
      +                      "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                    },
      +                    "textColor": {
      +                      "description": "Text paint.",
      +                      "type": "string",
      +                      "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                    }
      +                  },
      +                  "type": "object"
      +                },
      +                "milestone": {
      +                  "additionalProperties": false,
      +                  "maxProperties": 5,
      +                  "properties": {
      +                    "borderColor": {
      +                      "description": "Border paint.",
      +                      "type": "string",
      +                      "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                    },
      +                    "cue": {
      +                      "description": "Non-color semantic cue on roles whose family renderer exposes a cue projection.",
      +                      "enum": [
      +                        "none",
      +                        "outline",
      +                        "double-line",
      +                        "pattern"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    "fillColor": {
      +                      "description": "Surface fill paint.",
      +                      "type": "string",
      +                      "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                    },
      +                    "lineWidth": {
      +                      "description": "Border or connector width.",
      +                      "exclusiveMinimum": 0,
      +                      "maximum": 20,
      +                      "type": "number"
      +                    },
      +                    "strokeColor": {
      +                      "description": "Connector stroke paint.",
      +                      "type": "string",
      +                      "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                    }
      +                  },
      +                  "type": "object"
      +                },
      +                "node": {
      +                  "additionalProperties": false,
      +                  "maxProperties": 11,
      +                  "properties": {
      +                    "borderColor": {
      +                      "description": "Border paint.",
      +                      "type": "string",
      +                      "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                    },
      +                    "cornerRadius": {
      +                      "description": "Applicable corner radius.",
      +                      "maximum": 256,
      +                      "minimum": 0,
      +                      "type": "number"
      +                    },
      +                    "fillColor": {
      +                      "description": "Surface fill paint.",
      +                      "type": "string",
      +                      "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                    },
      +                    "fontSize": {
      +                      "description": "Font size in SVG user units.",
      +                      "maximum": 256,
      +                      "minimum": 1,
      +                      "type": "number"
      +                    },
      +                    "fontWeight": {
      +                      "description": "CSS numeric font weight.",
      +                      "maximum": 1000,
      +                      "minimum": 1,
      +                      "type": "number"
      +                    },
      +                    "letterSpacing": {
      +                      "description": "Letter spacing in SVG user units.",
      +                      "maximum": 4,
      +                      "minimum": -2,
      +                      "type": "number"
      +                    },
      +                    "lineWidth": {
      +                      "description": "Border or connector width.",
      +                      "exclusiveMinimum": 0,
      +                      "maximum": 20,
      +                      "type": "number"
      +                    },
      +                    "paddingX": {
      +                      "description": "Horizontal role padding.",
      +                      "maximum": 256,
      +                      "minimum": 0,
      +                      "type": "number"
      +                    },
      +                    "paddingY": {
      +                      "description": "Vertical role padding.",
      +                      "maximum": 256,
      +                      "minimum": 0,
      +                      "type": "number"
      +                    },
      +                    "textColor": {
      +                      "description": "Text paint.",
      +                      "type": "string",
      +                      "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                    },
      +                    "textTransform": {
      +                      "description": "Text transformation.",
      +                      "enum": [
      +                        "uppercase",
      +                        "lowercase",
      +                        "capitalize"
      +                      ],
      +                      "type": "string"
      +                    }
      +                  },
      +                  "type": "object"
      +                },
      +                "pie-slice": {
      +                  "additionalProperties": false,
      +                  "maxProperties": 5,
      +                  "properties": {
      +                    "borderColor": {
      +                      "description": "Border paint.",
      +                      "type": "string",
      +                      "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                    },
      +                    "cue": {
      +                      "description": "Non-color semantic cue on roles whose family renderer exposes a cue projection.",
      +                      "enum": [
      +                        "none",
      +                        "outline",
      +                        "double-line",
      +                        "pattern"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    "fillColor": {
      +                      "description": "Surface fill paint.",
      +                      "type": "string",
      +                      "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                    },
      +                    "lineWidth": {
      +                      "description": "Border or connector width.",
      +                      "exclusiveMinimum": 0,
      +                      "maximum": 20,
      +                      "type": "number"
      +                    },
      +                    "strokeColor": {
      +                      "description": "Connector stroke paint.",
      +                      "type": "string",
      +                      "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                    }
      +                  },
      +                  "type": "object"
      +                },
      +                "point": {
      +                  "additionalProperties": false,
      +                  "maxProperties": 4,
      +                  "properties": {
      +                    "borderColor": {
      +                      "description": "Border paint.",
      +                      "type": "string",
      +                      "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                    },
      +                    "fillColor": {
      +                      "description": "Surface fill paint.",
      +                      "type": "string",
      +                      "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                    },
      +                    "lineWidth": {
      +                      "description": "Border or connector width.",
      +                      "exclusiveMinimum": 0,
      +                      "maximum": 20,
      +                      "type": "number"
      +                    },
      +                    "strokeColor": {
      +                      "description": "Connector stroke paint.",
      +                      "type": "string",
      +                      "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                    }
      +                  },
      +                  "type": "object"
      +                },
      +                "relationship": {
      +                  "additionalProperties": false,
      +                  "maxProperties": 8,
      +                  "properties": {
      +                    "bendRadius": {
      +                      "description": "Applicable connector bend radius.",
      +                      "maximum": 256,
      +                      "minimum": 0,
      +                      "type": "number"
      +                    },
      +                    "fontSize": {
      +                      "description": "Font size in SVG user units.",
      +                      "maximum": 256,
      +                      "minimum": 1,
      +                      "type": "number"
      +                    },
      +                    "fontWeight": {
      +                      "description": "CSS numeric font weight.",
      +                      "maximum": 1000,
      +                      "minimum": 1,
      +                      "type": "number"
      +                    },
      +                    "letterSpacing": {
      +                      "description": "Letter spacing in SVG user units.",
      +                      "maximum": 4,
      +                      "minimum": -2,
      +                      "type": "number"
      +                    },
      +                    "lineWidth": {
      +                      "description": "Border or connector width.",
      +                      "exclusiveMinimum": 0,
      +                      "maximum": 20,
      +                      "type": "number"
      +                    },
      +                    "strokeColor": {
      +                      "description": "Connector stroke paint.",
      +                      "type": "string",
      +                      "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                    },
      +                    "textColor": {
      +                      "description": "Text paint.",
      +                      "type": "string",
      +                      "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                    },
      +                    "textTransform": {
      +                      "description": "Text transformation.",
      +                      "enum": [
      +                        "uppercase",
      +                        "lowercase",
      +                        "capitalize"
      +                      ],
      +                      "type": "string"
      +                    }
      +                  },
      +                  "type": "object"
      +                },
      +                "series": {
      +                  "additionalProperties": false,
      +                  "maxProperties": 3,
      +                  "properties": {
      +                    "borderColor": {
      +                      "description": "Border paint.",
      +                      "type": "string",
      +                      "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                    },
      +                    "lineWidth": {
      +                      "description": "Border or connector width.",
      +                      "exclusiveMinimum": 0,
      +                      "maximum": 20,
      +                      "type": "number"
      +                    },
      +                    "strokeColor": {
      +                      "description": "Connector stroke paint.",
      +                      "type": "string",
      +                      "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                    }
      +                  },
      +                  "type": "object"
      +                },
      +                "task": {
      +                  "additionalProperties": false,
      +                  "maxProperties": 5,
      +                  "properties": {
      +                    "borderColor": {
      +                      "description": "Border paint.",
      +                      "type": "string",
      +                      "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                    },
      +                    "cue": {
      +                      "description": "Non-color semantic cue on roles whose family renderer exposes a cue projection.",
      +                      "enum": [
      +                        "none",
      +                        "outline",
      +                        "double-line",
      +                        "pattern"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    "fillColor": {
      +                      "description": "Surface fill paint.",
      +                      "type": "string",
      +                      "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                    },
      +                    "lineWidth": {
      +                      "description": "Border or connector width.",
      +                      "exclusiveMinimum": 0,
      +                      "maximum": 20,
      +                      "type": "number"
      +                    },
      +                    "strokeColor": {
      +                      "description": "Connector stroke paint.",
      +                      "type": "string",
      +                      "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                    }
      +                  },
      +                  "type": "object"
      +                }
      +              },
      +              "type": "object"
      +            },
      +            "roughness": {
      +              "description": "Rough.js stroke irregularity.",
      +              "maximum": 10,
      +              "minimum": 0,
      +              "type": "number"
      +            },
      +            "semanticSlots": {
      +              "additionalProperties": {
      +                "additionalProperties": false,
      +                "maxProperties": 16,
      +                "properties": {
      +                  "bendRadius": {
      +                    "description": "Applicable connector bend radius.",
      +                    "maximum": 256,
      +                    "minimum": 0,
      +                    "type": "number"
      +                  },
      +                  "borderColor": {
      +                    "description": "Border paint.",
      +                    "type": "string",
      +                    "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                  },
      +                  "cornerRadius": {
      +                    "description": "Applicable corner radius.",
      +                    "maximum": 256,
      +                    "minimum": 0,
      +                    "type": "number"
      +                  },
      +                  "cue": {
      +                    "description": "Non-color semantic cue on roles whose family renderer exposes a cue projection.",
      +                    "enum": [
      +                      "none",
      +                      "outline",
      +                      "double-line",
      +                      "pattern"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "fillColor": {
      +                    "description": "Surface fill paint.",
      +                    "type": "string",
      +                    "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                  },
      +                  "fontFamily": {
      +                    "description": "Safe font family/stack for roles whose descriptor exposes family-specific typography.",
      +                    "type": "string",
      +                    "x-agentic-mermaid-runtime-validator": "safeCssFontFamily"
      +                  },
      +                  "fontSize": {
      +                    "description": "Font size in SVG user units.",
      +                    "maximum": 256,
      +                    "minimum": 1,
      +                    "type": "number"
      +                  },
      +                  "fontWeight": {
      +                    "description": "CSS numeric font weight.",
      +                    "maximum": 1000,
      +                    "minimum": 1,
      +                    "type": "number"
      +                  },
      +                  "headerFillColor": {
      +                    "description": "Group header surface paint.",
      +                    "type": "string",
      +                    "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                  },
      +                  "letterSpacing": {
      +                    "description": "Letter spacing in SVG user units.",
      +                    "maximum": 4,
      +                    "minimum": -2,
      +                    "type": "number"
      +                  },
      +                  "lineWidth": {
      +                    "description": "Border or connector width.",
      +                    "exclusiveMinimum": 0,
      +                    "maximum": 20,
      +                    "type": "number"
      +                  },
      +                  "paddingX": {
      +                    "description": "Horizontal role padding.",
      +                    "maximum": 256,
      +                    "minimum": 0,
      +                    "type": "number"
      +                  },
      +                  "paddingY": {
      +                    "description": "Vertical role padding.",
      +                    "maximum": 256,
      +                    "minimum": 0,
      +                    "type": "number"
      +                  },
      +                  "strokeColor": {
      +                    "description": "Connector stroke paint.",
      +                    "type": "string",
      +                    "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                  },
      +                  "textColor": {
      +                    "description": "Text paint.",
      +                    "type": "string",
      +                    "x-agentic-mermaid-runtime-validator": "safeStylePaint"
      +                  },
      +                  "textTransform": {
      +                    "description": "Text transformation.",
      +                    "enum": [
      +                      "uppercase",
      +                      "lowercase",
      +                      "capitalize"
      +                    ],
      +                    "type": "string"
      +                  }
      +                },
      +                "type": "object"
      +              },
      +              "description": "Named brand-neutral role-style slots selected by semantic bindings.",
      +              "maxProperties": 4096,
      +              "propertyNames": {
      +                "not": {
      +                  "enum": [
      +                    "__proto__",
      +                    "constructor",
      +                    "prototype"
      +                  ]
      +                },
      +                "pattern": "^[A-Za-z][A-Za-z0-9._-]{0,63}$"
      +              },
      +              "type": "object"
      +            },
      +            "stroke": {
      +              "description": "Stroke treatment; crisp is the default renderer.",
      +              "enum": [
      +                "crisp",
      +                "jittered",
      +                "freehand"
      +              ],
      +              "type": "string"
      +            },
      +            "strokeWidth": {
      +              "description": "Base stroke width in SVG user units.",
      +              "exclusiveMinimum": 0,
      +              "maximum": 20,
      +              "type": "number"
      +            },
      +            "washEdge": {
      +              "description": "Watercolor edge-darkening opacity; requires fill wash in the final stack.",
      +              "maximum": 1,
      +              "minimum": 0,
      +              "type": "number"
      +            },
      +            "washOpacity": {
      +              "description": "Watercolor glaze opacity; requires fill wash in the final stack.",
      +              "maximum": 1,
      +              "minimum": 0,
      +              "type": "number"
      +            }
      +          },
      +          "type": "object"
      +        }
      +      ],
      +      "x-agentic-mermaid-validation-expectation": "a registered Style name or StyleSpec"
      +    },
      +    "type": "array"
      +  }
      +]
    • removedInput schema / properties / seed
      Removed value: -{
      -  "default": 0,
      -  "description": "Deterministic re-roll seed for stochastic Styles.",
      -  "type": "number",
      -  "x-agentic-mermaid-terminal": "not-applicable",
      -  "x-agentic-mermaid-terminal-note": "terminal glyph geometry is deterministic and has no stochastic ink"
      -}
    • removedInput schema / properties / style
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "anyOf": [
      -        {
      -          "description": "Registered Style or Palette name.",
      -          "type": "string"
      -        },
      -        {
      -          "additionalProperties": false,
      -          "description": "A partial declarative style record for Agentic Mermaid rendering. All fields, including formatVersion, are optional on input; resolved and registered specs normalize formatVersion to 1.",
      -          "properties": {
      -            "$schema": {
      -              "description": "Optional JSON Schema pointer for file-backed styles; ignored while rendering.",
      -              "type": "string"
      -            },
      -            "backdrop": {
      -              "description": "Flat page furniture drawn behind the diagram.",
      -              "enum": [
      -                "plain",
      -                "paper-ruled",
      -                "grid"
      -              ],
      -              "type": "string"
      -            },
      -            "blurb": {
      -              "description": "Short human-readable description used by discovery surfaces.",
      -              "type": "string"
      -            },
      -            "bowing": {
      -              "description": "Rough.js line bowing.",
      -              "maximum": 10,
      -              "minimum": 0,
      -              "type": "number"
      -            },
      -            "colors": {
      -              "additionalProperties": false,
      -              "description": "Partial palette of safe, non-fetching CSS color tokens. Runtime validation applies the stricter safe-color policy.",
      -              "properties": {
      -                "accent": {
      -                  "description": "Accent paint for emphasis and data series. Must be a safe, non-fetching CSS color.",
      -                  "type": "string",
      -                  "x-agentic-mermaid-runtime-validator": "safeCssColor"
      -                },
      -                "bg": {
      -                  "description": "Diagram page background. Must be a safe, non-fetching CSS color.",
      -                  "type": "string",
      -                  "x-agentic-mermaid-runtime-validator": "safeCssColor"
      -                },
      -                "border": {
      -                  "description": "Node and group border paint. Must be a safe, non-fetching CSS color.",
      -                  "type": "string",
      -                  "x-agentic-mermaid-runtime-validator": "safeCssColor"
      -                },
      -                "fg": {
      -                  "description": "Primary text and foreground paint. Must be a safe, non-fetching CSS color.",
      -                  "type": "string",
      -                  "x-agentic-mermaid-runtime-validator": "safeCssColor"
      -                },
      -                "line": {
      -                  "description": "Connector and secondary line paint. Must be a safe, non-fetching CSS color.",
      -                  "type": "string",
      -                  "x-agentic-mermaid-runtime-validator": "safeCssColor"
      -                },
      -                "muted": {
      -                  "description": "Muted text and secondary data paint. Must be a safe, non-fetching CSS color.",
      -                  "type": "string",
      -                  "x-agentic-mermaid-runtime-validator": "safeCssColor"
      -                },
      -                "surface": {
      -                  "description": "Node and group surface fill. Must be a safe, non-fetching CSS color.",
      -                  "type": "string",
      -                  "x-agentic-mermaid-runtime-validator": "safeCssColor"
      -                }
      -              },
      -              "type": "object"
      -            },
      -            "fill": {
      -              "description": "Fill policy for rough/hybrid rendering; none and solid require a final stack that activates one of those backends.",
      -              "enum": [
      -                "none",
      -                "hachure",
      -                "solid",
      -                "wash"
      -              ],
      -              "type": "string"
      -            },
      -            "fillWeight": {
      -              "description": "Hachure line weight; requires fill hachure in the final stack.",
      -              "exclusiveMinimum": 0,
      -              "maximum": 20,
      -              "type": "number"
      -            },
      -            "font": {
      -              "description": "Safe, non-fetching CSS font family or stack; the rendering environment supplies the font face.",
      -              "type": "string",
      -              "x-agentic-mermaid-runtime-validator": "safeCssFontFamily"
      -            },
      -            "formatVersion": {
      -              "const": 1,
      -              "description": "Persisted wire-format version. Optional on input and normalized to 1 on output."
      -            },
      -            "hachureAngle": {
      -              "description": "Hachure line angle in degrees; requires fill hachure in the final stack.",
      -              "maximum": 360,
      -              "minimum": -360,
      -              "type": "number"
      -            },
      -            "hachureGap": {
      -              "description": "Gap between hachure lines; requires fill hachure in the final stack.",
      -              "exclusiveMinimum": 0,
      -              "maximum": 100,
      -              "type": "number"
      -            },
      -            "intent": {
      -              "description": "Advisory intent metadata for pickers and quality tooling.",
      -              "enum": [
      -                "premium",
      -                "draft",
      -                "lofi"
      -              ],
      -              "type": "string"
      -            },
      -            "mono": {
      -              "description": "Advisory monochrome contract: express tone through shading and weight.",
      -              "type": "boolean"
      -            },
      -            "name": {
      -              "description": "Canonical look:name or palette:name identity; required only when registering a style.",
      -              "type": "string"
      -            },
      -            "passes": {
      -              "description": "Number of sketch strokes; 1 is single-pass and 2 is the usual double stroke.",
      -              "maximum": 8,
      -              "minimum": 1,
      -              "type": "integer"
      -            },
      -            "roughness": {
      -              "description": "Rough.js stroke irregularity.",
      -              "maximum": 10,
      -              "minimum": 0,
      -              "type": "number"
      -            },
      -            "stroke": {
      -              "description": "Stroke treatment; crisp is the default renderer.",
      -              "enum": [
      -                "crisp",
      -                "jittered",
      -                "freehand"
      -              ],
      -              "type": "string"
      -            },
      -            "strokeWidth": {
      -              "description": "Base stroke width in SVG user units.",
      -              "exclusiveMinimum": 0,
      -              "maximum": 20,
      -              "type": "number"
      -            },
      -            "washEdge": {
      -              "description": "Watercolor edge-darkening opacity; requires fill wash in the final stack.",
      -              "maximum": 1,
      -              "minimum": 0,
      -              "type": "number"
      -            },
      -            "washOpacity": {
      -              "description": "Watercolor glaze opacity; requires fill wash in the final stack.",
      -              "maximum": 1,
      -              "minimum": 0,
      -              "type": "number"
      -            }
      -          },
      -          "type": "object"
      -        }
      -      ],
      -      "x-agentic-mermaid-validation-expectation": "a registered Style name or StyleSpec"
      -    },
      -    {
      -      "description": "Style stack merged from left to right.",
      -      "items": {
      -        "anyOf": [
      -          {
      -            "description": "Registered Style or Palette name.",
      -            "type": "string"
      -          },
      -          {
      -            "additionalProperties": false,
      -            "description": "A partial declarative style record for Agentic Mermaid rendering. All fields, including formatVersion, are optional on input; resolved and registered specs normalize formatVersion to 1.",
      -            "properties": {
      -              "$schema": {
      -                "description": "Optional JSON Schema pointer for file-backed styles; ignored while rendering.",
      -                "type": "string"
      -              },
      -              "backdrop": {
      -                "description": "Flat page furniture drawn behind the diagram.",
      -                "enum": [
      -                  "plain",
      -                  "paper-ruled",
      -                  "grid"
      -                ],
      -                "type": "string"
      -              },
      -              "blurb": {
      -                "description": "Short human-readable description used by discovery surfaces.",
      -                "type": "string"
      -              },
      -              "bowing": {
      -                "description": "Rough.js line bowing.",
      -                "maximum": 10,
      -                "minimum": 0,
      -                "type": "number"
      -              },
      -              "colors": {
      -                "additionalProperties": false,
      -                "description": "Partial palette of safe, non-fetching CSS color tokens. Runtime validation applies the stricter safe-color policy.",
      -                "properties": {
      -                  "accent": {
      -                    "description": "Accent paint for emphasis and data series. Must be a safe, non-fetching CSS color.",
      -                    "type": "string",
      -                    "x-agentic-mermaid-runtime-validator": "safeCssColor"
      -                  },
      -                  "bg": {
      -                    "description": "Diagram page background. Must be a safe, non-fetching CSS color.",
      -                    "type": "string",
      -                    "x-agentic-mermaid-runtime-validator": "safeCssColor"
      -                  },
      -                  "border": {
      -                    "description": "Node and group border paint. Must be a safe, non-fetching CSS color.",
      -                    "type": "string",
      -                    "x-agentic-mermaid-runtime-validator": "safeCssColor"
      -                  },
      -                  "fg": {
      -                    "description": "Primary text and foreground paint. Must be a safe, non-fetching CSS color.",
      -                    "type": "string",
      -                    "x-agentic-mermaid-runtime-validator": "safeCssColor"
      -                  },
      -                  "line": {
      -                    "description": "Connector and secondary line paint. Must be a safe, non-fetching CSS color.",
      -                    "type": "string",
      -                    "x-agentic-mermaid-runtime-validator": "safeCssColor"
      -                  },
      -                  "muted": {
      -                    "description": "Muted text and secondary data paint. Must be a safe, non-fetching CSS color.",
      -                    "type": "string",
      -                    "x-agentic-mermaid-runtime-validator": "safeCssColor"
      -                  },
      -                  "surface": {
      -                    "description": "Node and group surface fill. Must be a safe, non-fetching CSS color.",
      -                    "type": "string",
      -                    "x-agentic-mermaid-runtime-validator": "safeCssColor"
      -                  }
      -                },
      -                "type": "object"
      -              },
      -              "fill": {
      -                "description": "Fill policy for rough/hybrid rendering; none and solid require a final stack that activates one of those backends.",
      -                "enum": [
      -                  "none",
      -                  "hachure",
      -                  "solid",
      -                  "wash"
      -                ],
      -                "type": "string"
      -              },
      -              "fillWeight": {
      -                "description": "Hachure line weight; requires fill hachure in the final stack.",
      -                "exclusiveMinimum": 0,
      -                "maximum": 20,
      -                "type": "number"
      -              },
      -              "font": {
      -                "description": "Safe, non-fetching CSS font family or stack; the rendering environment supplies the font face.",
      -                "type": "string",
      -                "x-agentic-mermaid-runtime-validator": "safeCssFontFamily"
      -              },
      -              "formatVersion": {
      -                "const": 1,
      -                "description": "Persisted wire-format version. Optional on input and normalized to 1 on output."
      -              },
      -              "hachureAngle": {
      -                "description": "Hachure line angle in degrees; requires fill hachure in the final stack.",
      -                "maximum": 360,
      -                "minimum": -360,
      -                "type": "number"
      -              },
      -              "hachureGap": {
      -                "description": "Gap between hachure lines; requires fill hachure in the final stack.",
      -                "exclusiveMinimum": 0,
      -                "maximum": 100,
      -                "type": "number"
      -              },
      -              "intent": {
      -                "description": "Advisory intent metadata for pickers and quality tooling.",
      -                "enum": [
      -                  "premium",
      -                  "draft",
      -                  "lofi"
      -                ],
      -                "type": "string"
      -              },
      -              "mono": {
      -                "description": "Advisory monochrome contract: express tone through shading and weight.",
      -                "type": "boolean"
      -              },
      -              "name": {
      -                "description": "Canonical look:name or palette:name identity; required only when registering a style.",
      -                "type": "string"
      -              },
      -              "passes": {
      -                "description": "Number of sketch strokes; 1 is single-pass and 2 is the usual double stroke.",
      -                "maximum": 8,
      -                "minimum": 1,
      -                "type": "integer"
      -              },
      -              "roughness": {
      -                "description": "Rough.js stroke irregularity.",
      -                "maximum": 10,
      -                "minimum": 0,
      -                "type": "number"
      -              },
      -              "stroke": {
      -                "description": "Stroke treatment; crisp is the default renderer.",
      -                "enum": [
      -                  "crisp",
      -                  "jittered",
      -                  "freehand"
      -                ],
      -                "type": "string"
      -              },
      -              "strokeWidth": {
      -                "description": "Base stroke width in SVG user units.",
      -                "exclusiveMinimum": 0,
      -                "maximum": 20,
      -                "type": "number"
      -              },
      -              "washEdge": {
      -                "description": "Watercolor edge-darkening opacity; requires fill wash in the final stack.",
      -                "maximum": 1,
      -                "minimum": 0,
      -                "type": "number"
      -              },
      -              "washOpacity": {
      -                "description": "Watercolor glaze opacity; requires fill wash in the final stack.",
      -                "maximum": 1,
      -                "minimum": 0,
      -                "type": "number"
      -              }
      -            },
      -            "type": "object"
      -          }
      -        ],
      -        "x-agentic-mermaid-validation-expectation": "a registered Style name or StyleSpec"
      -      },
      -      "type": "array"
      -    }
      -  ],
      -  "description": "A registered name, inline StyleSpec, or left-to-right stack of either.",
      -  "x-agentic-mermaid-runtime-validator": "styleInput",
      -  "x-agentic-mermaid-terminal": "consumed"
      -}
  3. Changed22 schema fields changed
    • addedInput schema / additionalProperties
      Added value: +false
    • changedInput schema / properties / background / description
      Previous value: -"CSS color string (default 'white')."New value: +"Portable basic color or hex color painted behind the raster artifact."
    • addedInput schema / properties / background / minLength
      Added value: +1
    • addedInput schema / properties / background / pattern
      Added value: +"^\\s*(?:#[0-9A-Fa-f]{3,4}|#[0-9A-Fa-f]{6}|#[0-9A-Fa-f]{8}|[tT][rR][aA][nN][sS][pP][aA][rR][eE][nN][tT]|[bB][lL][aA][cC][kK]|[sS][iI][lL][vV][eE][rR]|[gG][rR][aA][yY]|[gG][rR][eE][yY]|[wW][hH][iI][tT][eE]|[mM][aA][rR][oO][oO][nN]|[rR][eE][dD]|[pP][uU][rR][pP][lL][eE]|[fF][uU][cC][hH][sS][iI][aA]|[gG][rR][eE][eE][nN]|[lL][iI][mM][eE]|[oO][lL][iI][vV][eE]|[yY][eE][lL][lL][oO][wW]|[nN][aA][vV][yY]|[bB][lL][uU][eE]|[tT][eE][aA][lL]|[aA][qQ][uU][aA]|[oO][rR][aA][nN][gG][eE])\\s*$"
    • addedInput schema / properties / background / x-agentic-mermaid-receipt
      Added value: +"included"
    • addedInput schema / properties / background / x-agentic-mermaid-runtime-validator
      Added value: +"portablePngBackground"
    • addedInput schema / properties / background / x-agentic-mermaid-scope
      Added value: +"portable"
    • addedInput schema / properties / fitTo
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Exactly one output width or height constraint.",
      +  "oneOf": [
      +    {
      +      "required": [
      +        "width"
      +      ]
      +    },
      +    {
      +      "required": [
      +        "height"
      +      ]
      +    }
      +  ],
      +  "properties": {
      +    "height": {
      +      "description": "Exact output height in integer pixels.",
      +      "minimum": 1,
      +      "type": "integer"
      +    },
      +    "width": {
      +      "description": "Exact output width in integer pixels.",
      +      "minimum": 1,
      +      "type": "integer"
      +    }
      +  },
      +  "type": "object",
      +  "x-agentic-mermaid-receipt": "included",
      +  "x-agentic-mermaid-scope": "portable"
      +}
    • addedInput schema / properties / options
      Added value: +{
      +  "$defs": {
      +    "jsonValue": {
      +      "anyOf": [
      +        {
      +          "type": "null"
      +        },
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "number"
      +        },
      +        {
      +          "type": "boolean"
      +        },
      +        {
      +          "items": {
      +            "$ref": "#/$defs/jsonValue"
      +          },
      +          "type": "array"
      +        },
      +        {
      +          "additionalProperties": {
      +            "$ref": "#/$defs/jsonValue"
      +          },
      +          "type": "object"
      +        }
      +      ],
      +      "description": "A finite, acyclic JSON value without prototype keys.",
      +      "x-agentic-mermaid-validation-expectation": "a finite, acyclic JSON value without prototype keys"
      +    }
      +  },
      +  "$id": "https://agentic-mermaid.dev/schemas/render-options.schema.json",
      +  "$schema": "https://json-schema.org/draft/2020-12/schema",
      +  "additionalProperties": false,
      +  "description": "Shared advanced RenderOptions object; compatibility convenience fields above override matching values.",
      +  "properties": {
      +    "accent": {
      +      "description": "Arrowhead, highlight, and data accent color.",
      +      "type": "string",
      +      "x-agentic-mermaid-runtime-validator": "safeCssPaint",
      +      "x-agentic-mermaid-terminal": "consumed"
      +    },
      +    "architecture": {
      +      "additionalProperties": false,
      +      "description": "Architecture renderer visual metric and paint overrides.",
      +      "properties": {
      +        "visual": {
      +          "additionalProperties": false,
      +          "description": "Sparse architecture visual overrides merged over resolved defaults.",
      +          "properties": {
      +            "edgeBendRadius": {
      +              "description": "Architecture connector bend radius.",
      +              "minimum": 0,
      +              "type": "number"
      +            },
      +            "edgeFontSize": {
      +              "description": "Architecture connector-label font size.",
      +              "exclusiveMinimum": 0,
      +              "type": "number"
      +            },
      +            "edgeFontWeight": {
      +              "description": "Architecture connector-label font weight.",
      +              "maximum": 1000,
      +              "minimum": 1,
      +              "type": "number"
      +            },
      +            "edgeLetterSpacing": {
      +              "description": "Architecture connector-label letter spacing.",
      +              "type": "number"
      +            },
      +            "edgeLineWidth": {
      +              "description": "Architecture connector width.",
      +              "minimum": 0,
      +              "type": "number"
      +            },
      +            "edgeStroke": {
      +              "description": "Architecture connector color.",
      +              "type": "string",
      +              "x-agentic-mermaid-runtime-validator": "safeCssPaint"
      +            },
      +            "edgeText": {
      +              "description": "Architecture connector-label color.",
      +              "type": "string",
      +              "x-agentic-mermaid-runtime-validator": "safeCssPaint"
      +            },
      +            "edgeTextTransform": {
      +              "description": "Architecture connector-label text transform.",
      +              "enum": [
      +                "uppercase",
      +                "lowercase",
      +                "capitalize"
      +              ],
      +              "type": "string"
      +            },
      +            "groupBorder": {
      +              "description": "Architecture group border color.",
      +              "type": "string",
      +              "x-agentic-mermaid-runtime-validator": "safeCssPaint"
      +            },
      +            "groupCornerRadius": {
      +              "description": "Architecture group corner radius.",
      +              "minimum": 0,
      +              "type": "number"
      +            },
      +            "groupFont": {
      +              "description": "Architecture group-label font family.",
      +              "type": "string",
      +              "x-agentic-mermaid-runtime-validator": "safeCssFontFamily"
      +            },
      +            "groupFontSize": {
      +              "description": "Architecture group-label font size.",
      +              "exclusiveMinimum": 0,
      +              "type": "number"
      +            },
      +            "groupFontWeight": {
      +              "description": "Architecture group-label font weight.",
      +              "maximum": 1000,
      +              "minimum": 1,
      +              "type": "number"
      +            },
      +            "groupHeaderHeight": {
      +              "description": "Architecture group-header height.",
      +              "exclusiveMinimum": 0,
      +              "type": "number"
      +            },
      +            "groupHeaderSurface": {
      +              "description": "Architecture group-header surface color.",
      +              "type": "string",
      +              "x-agentic-mermaid-runtime-validator": "safeCssPaint"
      +            },
      +            "groupLabelPaddingX": {
      +              "description": "Horizontal padding around architecture group labels.",
      +              "minimum": 0,
      +              "type": "number"
      +            },
      +            "groupLetterSpacing": {
      +              "description": "Architecture group-label letter spacing.",
      +              "type": "number"
      +            },
      +            "groupLineWidth": {
      +              "description": "Architecture group border width.",
      +              "minimum": 0,
      +              "type": "number"
      +            },
      +            "groupPaddingX": {
      +              "description": "Horizontal padding inside architecture groups.",
      +              "minimum": 0,
      +              "type": "number"
      +            },
      +            "groupPaddingY": {
      +              "description": "Vertical padding inside architecture groups.",
      +              "minimum": 0,
      +              "type": "number"
      +            },
      +            "groupSurface": {
      +              "description": "Architecture group surface color.",
      +              "type": "string",
      +              "x-agentic-mermaid-runtime-validator": "safeCssPaint"
      +            },
      +            "groupText": {
      +              "description": "Architecture group-label color.",
      +              "type": "string",
      +              "x-agentic-mermaid-runtime-validator": "safeCssPaint"
      +            },
      +            "groupTextTransform": {
      +              "description": "Architecture group-label text transform.",
      +              "enum": [
      +                "uppercase",
      +                "lowercase",
      +                "capitalize"
      +              ],
      +              "type": "string"
      +            },
      +            "iconSize": {
      +              "description": "Architecture group icon size.",
      +              "exclusiveMinimum": 0,
      +              "type": "number"
      +            },
      +            "junctionInnerRadius": {
      +              "description": "Architecture junction inner radius.",
      +              "minimum": 0,
      +              "type": "number"
      +            },
      +            "junctionOuterRadius": {
      +              "description": "Architecture junction outer radius.",
      +              "exclusiveMinimum": 0,
      +              "type": "number"
      +            },
      +            "serviceBorder": {
      +              "description": "Architecture service border color.",
      +              "type": "string",
      +              "x-agentic-mermaid-runtime-validator": "safeCssPaint"
      +            },
      +            "serviceCornerRadius": {
      +              "description": "Architecture service corner radius.",
      +              "minimum": 0,
      +              "type": "number"
      +            },
      +            "serviceFontSize": {
      +              "description": "Architecture service-label font size.",
      +              "exclusiveMinimum": 0,
      +              "type": "number"
      +            },
      +            "serviceFontWeight": {
      +              "description": "Architecture service-label font weight.",
      +              "maximum": 1000,
      +              "minimum": 1,
      +              "type": "number"
      +            },
      +            "serviceIconSize": {
      +              "description": "Architecture service icon size.",
      +              "exclusiveMinimum": 0,
      +              "type": "number"
      +            },
      +            "serviceLetterSpacing": {
      +              "description": "Architecture service-label letter spacing.",
      +              "type": "number"
      +            },
      +            "serviceLineWidth": {
      +              "description": "Architecture service border width.",
      +              "minimum": 0,
      +              "type": "number"
      +            },
      +            "servicePaddingX": {
      +              "description": "Horizontal padding inside architecture services.",
      +              "minimum": 0,
      +              "type": "number"
      +            },
      +            "servicePaddingY": {
      +              "description": "Vertical padding inside architecture services.",
      +              "minimum": 0,
      +              "type": "number"
      +            },
      +            "serviceSurface": {
      +              "description": "Architecture service surface color.",
      +              "type": "string",
      +              "x-agentic-mermaid-runtime-validator": "safeCssPaint"
      +            },
      +            "serviceText": {
      +              "description": "Architecture service-label color.",
      +              "type": "string",
      +              "x-agentic-mermaid-runtime-validator": "safeCssPaint"
      +            },
      +            "serviceTextTransform": {
      +              "description": "Architecture service-label text transform.",
      +              "enum": [
      +                "uppercase",
      +                "lowercase",
      +                "capitalize"
      +              ],
      +              "type": "string"
      +            }
      +          },
      +          "type": "object",
      +          "x-agentic-mermaid-runtime-validator": "architectureVisual"
      +        }
      +      },
      +      "type": "object",
      +      "x-agentic-mermaid-applicable-builtin-families": [
      +        "architecture"
      +      ],
      +      "x-agentic-mermaid-terminal": "not-applicable",
      +      "x-agentic-mermaid-terminal-note": "this option configures graphical architecture rendering"
      +    },
      +    "bg": {
      +      "default": "#FFFFFF",
      +      "description": "Background color or CSS variable.",
      +      "type": "string",
      +      "x-agentic-mermaid-runtime-validator": "safeCssPaint",
      +      "x-agentic-mermaid-terminal": "consumed"
      +    },
      +    "border": {
      +      "description": "Node and group border color.",
      +      "type": "string",
      +      "x-agentic-mermaid-runtime-validator": "safeCssPaint",
      +      "x-agentic-mermaid-terminal": "consumed"
      +    },
      +    "class": {
      +      "additionalProperties": false,
      +      "description": "Class-diagram rendering controls.",
      +      "properties": {
      +        "hierarchicalNamespaces": {
      +          "default": true,
      +          "description": "Nest namespace compounds.",
      +          "type": "boolean"
      +        }
      +      },
      +      "type": "object",
      +      "x-agentic-mermaid-applicable-builtin-families": [
      +        "class"
      +      ],
      +      "x-agentic-mermaid-terminal": "not-applicable",
      +      "x-agentic-mermaid-terminal-note": "this option configures graphical class layout"
      +    },
      +    "compact": {
      +      "default": false,
      +      "description": "Compact SVG serialization while preserving agent hooks.",
      +      "type": "boolean",
      +      "x-agentic-mermaid-terminal": "not-applicable",
      +      "x-agentic-mermaid-terminal-note": "compact controls SVG serialization"
      +    },
      +    "componentSpacing": {
      +      "description": "Spacing between disconnected graph components for compatible extension families; no built-in family currently consumes it.",
      +      "minimum": 0,
      +      "type": "number",
      +      "x-agentic-mermaid-applicable-builtin-families": [],
      +      "x-agentic-mermaid-terminal": "not-applicable",
      +      "x-agentic-mermaid-terminal-note": "terminal layout has a cell-grid spacing contract"
      +    },
      +    "embedFontImport": {
      +      "default": true,
      +      "description": "Embed the Google Fonts import in SVG styles; PNG forces this off for offline rasterization.",
      +      "type": "boolean",
      +      "x-agentic-mermaid-terminal": "not-applicable",
      +      "x-agentic-mermaid-terminal-note": "terminal output embeds no web-font import"
      +    },
      +    "fg": {
      +      "default": "#27272A",
      +      "description": "Primary foreground and text color.",
      +      "type": "string",
      +      "x-agentic-mermaid-runtime-validator": "safeCssPaint",
      +      "x-agentic-mermaid-terminal": "consumed"
      +    },
      +    "font": {
      +      "default": "Inter",
      +      "description": "CSS font family or stack.",
      +      "type": "string",
      +      "x-agentic-mermaid-runtime-validator": "safeCssFontFamily",
      +      "x-agentic-mermaid-terminal": "projected",
      +      "x-agentic-mermaid-terminal-note": "the host terminal owns the font face"
      +    },
      +    "gantt": {
      +      "additionalProperties": false,
      +      "description": "Gantt dependency and critical-path overlays.",
      +      "properties": {
      +        "criticalPath": {
      +          "default": false,
      +          "description": "Emphasize critical-path tasks and connectors.",
      +          "type": "boolean"
      +        },
      +        "dependencyArrows": {
      +          "default": false,
      +          "description": "Draw scheduled dependency connectors.",
      +          "type": "boolean"
      +        }
      +      },
      +      "type": "object",
      +      "x-agentic-mermaid-applicable-builtin-families": [
      +        "gantt"
      +      ],
      +      "x-agentic-mermaid-terminal": "not-applicable",
      +      "x-agentic-mermaid-terminal-note": "graphical Gantt connector emphasis is not represented in cells"
      +    },
      +    "ganttToday": {
      +      "description": "Explicit deterministic date for the Gantt today marker.",
      +      "type": "string",
      +      "x-agentic-mermaid-applicable-builtin-families": [
      +        "gantt"
      +      ],
      +      "x-agentic-mermaid-terminal": "consumed"
      +    },
      +    "idPrefix": {
      +      "default": "",
      +      "description": "Namespace generated SVG definition IDs and local references.",
      +      "pattern": "^[A-Za-z0-9_.:-]*$",
      +      "type": "string",
      +      "x-agentic-mermaid-terminal": "not-applicable",
      +      "x-agentic-mermaid-terminal-note": "terminal output has no SVG definition ids"
      +    },
      +    "interactive": {
      +      "default": false,
      +      "description": "Enable hover tooltips for supported chart data points.",
      +      "type": "boolean",
      +      "x-agentic-mermaid-applicable-builtin-families": [
      +        "xychart",
      +        "pie",
      +        "quadrant"
      +      ],
      +      "x-agentic-mermaid-terminal": "projected",
      +      "x-agentic-mermaid-terminal-note": "terminal output is a static semantic projection"
      +    },
      +    "journey": {
      +      "additionalProperties": false,
      +      "description": "User-journey graphical controls.",
      +      "properties": {
      +        "experienceCurve": {
      +          "default": true,
      +          "description": "Connect journey score markers with an experience curve.",
      +          "type": "boolean"
      +        }
      +      },
      +      "type": "object",
      +      "x-agentic-mermaid-applicable-builtin-families": [
      +        "journey"
      +      ],
      +      "x-agentic-mermaid-terminal": "not-applicable",
      +      "x-agentic-mermaid-terminal-note": "experience curves are graphical-only"
      +    },
      +    "layerSpacing": {
      +      "default": 40,
      +      "description": "Vertical spacing between graph layers.",
      +      "minimum": 0,
      +      "type": "number",
      +      "x-agentic-mermaid-applicable-builtin-families": [
      +        "flowchart",
      +        "state",
      +        "class",
      +        "er",
      +        "architecture"
      +      ],
      +      "x-agentic-mermaid-terminal": "not-applicable",
      +      "x-agentic-mermaid-terminal-note": "terminal layout has a cell-grid spacing contract"
      +    },
      +    "line": {
      +      "description": "Connector and secondary-line color.",
      +      "type": "string",
      +      "x-agentic-mermaid-runtime-validator": "safeCssPaint",
      +      "x-agentic-mermaid-terminal": "consumed"
      +    },
      +    "mermaidConfig": {
      +      "additionalProperties": {
      +        "$ref": "#/$defs/jsonValue"
      +      },
      +      "description": "Mermaid-style recursive runtime configuration.",
      +      "type": "object",
      +      "x-agentic-mermaid-terminal": "consumed"
      +    },
      +    "muted": {
      +      "description": "Secondary text and label color.",
      +      "type": "string",
      +      "x-agentic-mermaid-runtime-validator": "safeCssPaint",
      +      "x-agentic-mermaid-terminal": "projected",
      +      "x-agentic-mermaid-terminal-note": "terminal themes have no dedicated muted-text role"
      +    },
      +    "nodeSpacing": {
      +      "default": 24,
      +      "description": "Horizontal spacing between sibling nodes.",
      +      "minimum": 0,
      +      "type": "number",
      +      "x-agentic-mermaid-applicable-builtin-families": [
      +        "flowchart",
      +        "state",
      +        "class",
      +        "er",
      +        "architecture"
      +      ],
      +      "x-agentic-mermaid-terminal": "not-applicable",
      +      "x-agentic-mermaid-terminal-note": "terminal layout has a cell-grid spacing contract"
      +    },
      +    "padding": {
      +      "default": 40,
      +      "description": "Canvas padding in SVG user units.",
      +      "minimum": 0,
      +      "type": "number",
      +      "x-agentic-mermaid-applicable-builtin-families": [
      +        "flowchart",
      +        "state",
      +        "architecture"
      +      ],
      +      "x-agentic-mermaid-terminal": "not-applicable",
      +      "x-agentic-mermaid-terminal-note": "terminal output uses paddingX, paddingY, and boxBorderPadding"
      +    },
      +    "security": {
      +      "default": "default",
      +      "description": "Active SVG content is rejected in every mode; strict additionally rejects every external reference. Raw Mermaid themeCSS is rejected in both modes.",
      +      "enum": [
      +        "default",
      +        "strict"
      +      ],
      +      "type": "string",
      +      "x-agentic-mermaid-terminal": "not-applicable",
      +      "x-agentic-mermaid-terminal-note": "terminal text has its own control-character and HTML-color safety projection"
      +    },
      +    "seed": {
      +      "default": 0,
      +      "description": "Deterministic re-roll seed for stochastic Styles.",
      +      "type": "number",
      +      "x-agentic-mermaid-terminal": "not-applicable",
      +      "x-agentic-mermaid-terminal-note": "terminal glyph geometry is deterministic and has no stochastic ink"
      +    },
      +    "shadow": {
      +      "default": false,
      +      "description": "Paint explicit drop shadows on node shapes.",
      +      "type": "boolean",
      +      "x-agentic-mermaid-applicable-builtin-families": [
      +        "flowchart",
      +        "state",
      +        "sequence",
      +        "timeline",
      +        "class",
      +        "er",
      +        "journey",
      +        "xychart",
      +        "pie",
      +        "quadrant",
      +        "gantt",
      +        "mindmap",
      +        "gitgraph"
      +      ],
      +      "x-agentic-mermaid-terminal": "projected",
      +      "x-agentic-mermaid-terminal-note": "elevation projects to borders and labels"
      +    },
      +    "style": {
      +      "anyOf": [
      +        {
      +          "anyOf": [
      +            {
      +              "description": "Registered Style or Palette name.",
      +              "type": "string"
      +            },
      +            {
      +              "additionalProperties": false,
      +              "description": "A partial declarative style record for Agentic Mermaid rendering. All fields, including formatVersion, are optional on input; resolved and registered specs normalize formatVersion to 1.",
      +              "properties": {
      +                "$schema": {
      +                  "description": "Optional JSON Schema pointer for file-backed styles; ignored while rendering.",
      +                  "type": "string"
      +                },
      +                "backdrop": {
      +                  "description": "Flat page furniture drawn behind the diagram.",
      +                  "enum": [
      +                    "plain",
      +                    "paper-ruled",
      +                    "grid"
      +                  ],
      +                  "type": "string"
      +                },
      +                "blurb": {
      +                  "description": "Short human-readable description used by discovery surfaces.",
      +                  "type": "string"
      +                },
      +                "bowing": {
      +                  "description": "Rough.js line bowing.",
      +                  "maximum": 10,
      +                  "minimum": 0,
      +                  "type": "number"
      +                },
      +                "colors": {
      +                  "additionalProperties": false,
      +                  "description": "Partial palette of safe, non-fetching CSS color tokens. Runtime validation applies the stricter safe-color policy.",
      +                  "properties": {
      +                    "accent": {
      +                      "description": "Accent paint for emphasis and data series. Must be a safe, non-fetching CSS color.",
      +                      "type": "string",
      +                      "x-agentic-mermaid-runtime-validator": "safeCssColor"
      +                    },
      +                    "bg": {
      +                      "description": "Diagram page background. Must be a safe, non-fetching CSS color.",
      +                      "type": "string",
      +                      "x-agentic-mermaid-runtime-validator": "safeCssColor"
      +                    },
      +                    "border": {
      +                      "description": "Node and group border paint. Must be a safe, non-fetching CSS color.",
      +                      "type": "string",
      +                      "x-agentic-mermaid-runtime-validator": "safeCssColor"
      +                    },
      +                    "fg": {
      +                      "description": "Primary text and foreground paint. Must be a safe, non-fetching CSS color.",
      +                      "type": "string",
      +                      "x-agentic-mermaid-runtime-validator": "safeCssColor"
      +                    },
      +                    "line": {
      +                      "description": "Connector and secondary line paint. Must be a safe, non-fetching CSS color.",
      +                      "type": "string",
      +                      "x-agentic-mermaid-runtime-validator": "safeCssColor"
      +                    },
      +                    "muted": {
      +                      "description": "Muted text and secondary data paint. Must be a safe, non-fetching CSS color.",
      +                      "type": "string",
      +                      "x-agentic-mermaid-runtime-validator": "safeCssColor"
      +                    },
      +                    "surface": {
      +                      "description": "Node and group surface fill. Must be a safe, non-fetching CSS color.",
      +                      "type": "string",
      +                      "x-agentic-mermaid-runtime-validator": "safeCssColor"
      +                    }
      +                  },
      +                  "type": "object"
      +                },
      +                "fill": {
      +                  "description": "Fill policy for rough/hybrid rendering; none and solid require a final stack that activates one of those backends.",
      +                  "enum": [
      +                    "none",
      +                    "hachure",
      +                    "solid",
      +                    "wash"
      +                  ],
      +                  "type": "string"
      +                },
      +                "fillWeight": {
      +                  "description": "Hachure line weight; requires fill hachure in the final stack.",
      +                  "exclusiveMinimum": 0,
      +                  "maximum": 20,
      +                  "type": "number"
      +                },
      +                "font": {
      +                  "description": "Safe, non-fetching CSS font family or stack; the rendering environment supplies the font face.",
      +                  "type": "string",
      +                  "x-agentic-mermaid-runtime-validator": "safeCssFontFamily"
      +                },
      +                "formatVersion": {
      +                  "const": 1,
      +                  "description": "Persisted wire-format version. Optional on input and normalized to 1 on output."
      +                },
      +                "hachureAngle": {
      +                  "description": "Hachure line angle in degrees; requires fill hachure in the final stack.",
      +                  "maximum": 360,
      +                  "minimum": -360,
      +                  "type": "number"
      +                },
      +                "hachureGap": {
      +                  "description": "Gap between hachure lines; requires fill hachure in the final stack.",
      +                  "exclusiveMinimum": 0,
      +                  "maximum": 100,
      +                  "type": "number"
      +                },
      +                "intent": {
      +                  "description": "Advisory intent metadata for pickers and quality tooling.",
      +                  "enum": [
      +                    "premium",
      +                    "draft",
      +                    "lofi"
      +                  ],
      +                  "type": "string"
      +                },
      +                "mono": {
      +                  "description": "Advisory monochrome contract: express tone through shading and weight.",
      +                  "type": "boolean"
      +                },
      +                "name": {
      +                  "description": "Canonical look:name or palette:name identity; required only when registering a style.",
      +                  "type": "string"
      +                },
      +                "passes": {
      +                  "description": "Number of sketch strokes; 1 is single-pass and 2 is the usual double stroke.",
      +                  "maximum": 8,
      +                  "minimum": 1,
      +                  "type": "integer"
      +                },
      +                "roughness": {
      +                  "description": "Rough.js stroke irregularity.",
      +                  "maximum": 10,
      +                  "minimum": 0,
      +                  "type": "number"
      +                },
      +                "stroke": {
      +                  "description": "Stroke treatment; crisp is the default renderer.",
      +                  "enum": [
      +                    "crisp",
      +                    "jittered",
      +                    "freehand"
      +                  ],
      +                  "type": "string"
      +                },
      +                "strokeWidth": {
      +                  "description": "Base stroke width in SVG user units.",
      +                  "exclusiveMinimum": 0,
      +                  "maximum": 20,
      +                  "type": "number"
      +                },
      +                "washEdge": {
      +                  "description": "Watercolor edge-darkening opacity; requires fill wash in the final stack.",
      +                  "maximum": 1,
      +                  "minimum": 0,
      +                  "type": "number"
      +                },
      +                "washOpacity": {
      +                  "description": "Watercolor glaze opacity; requires fill wash in the final stack.",
      +                  "maximum": 1,
      +                  "minimum": 0,
      +                  "type": "number"
      +                }
      +              },
      +              "type": "object"
      +            }
      +          ],
      +          "x-agentic-mermaid-validation-expectation": "a registered Style name or StyleSpec"
      +        },
      +        {
      +          "description": "Style stack merged from left to right.",
      +          "items": {
      +            "anyOf": [
      +              {
      +                "description": "Registered Style or Palette name.",
      +                "type": "string"
      +              },
      +              {
      +                "additionalProperties": false,
      +                "description": "A partial declarative style record for Agentic Mermaid rendering. All fields, including formatVersion, are optional on input; resolved and registered specs normalize formatVersion to 1.",
      +                "properties": {
      +                  "$schema": {
      +                    "description": "Optional JSON Schema pointer for file-backed styles; ignored while rendering.",
      +                    "type": "string"
      +                  },
      +                  "backdrop": {
      +                    "description": "Flat page furniture drawn behind the diagram.",
      +                    "enum": [
      +                      "plain",
      +                      "paper-ruled",
      +                      "grid"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "blurb": {
      +                    "description": "Short human-readable description used by discovery surfaces.",
      +                    "type": "string"
      +                  },
      +                  "bowing": {
      +                    "description": "Rough.js line bowing.",
      +                    "maximum": 10,
      +                    "minimum": 0,
      +                    "type": "number"
      +                  },
      +                  "colors": {
      +                    "additionalProperties": false,
      +                    "description": "Partial palette of safe, non-fetching CSS color tokens. Runtime validation applies the stricter safe-color policy.",
      +                    "properties": {
      +                      "accent": {
      +                        "description": "Accent paint for emphasis and data series. Must be a safe, non-fetching CSS color.",
      +                        "type": "string",
      +                        "x-agentic-mermaid-runtime-validator": "safeCssColor"
      +                      },
      +                      "bg": {
      +                        "description": "Diagram page background. Must be a safe, non-fetching CSS color.",
      +                        "type": "string",
      +                        "x-agentic-mermaid-runtime-validator": "safeCssColor"
      +                      },
      +                      "border": {
      +                        "description": "Node and group border paint. Must be a safe, non-fetching CSS color.",
      +                        "type": "string",
      +                        "x-agentic-mermaid-runtime-validator": "safeCssColor"
      +                      },
      +                      "fg": {
      +                        "description": "Primary text and foreground paint. Must be a safe, non-fetching CSS color.",
      +                        "type": "string",
      +                        "x-agentic-mermaid-runtime-validator": "safeCssColor"
      +                      },
      +                      "line": {
      +                        "description": "Connector and secondary line paint. Must be a safe, non-fetching CSS color.",
      +                        "type": "string",
      +                        "x-agentic-mermaid-runtime-validator": "safeCssColor"
      +                      },
      +                      "muted": {
      +                        "description": "Muted text and secondary data paint. Must be a safe, non-fetching CSS color.",
      +                        "type": "string",
      +                        "x-agentic-mermaid-runtime-validator": "safeCssColor"
      +                      },
      +                      "surface": {
      +                        "description": "Node and group surface fill. Must be a safe, non-fetching CSS color.",
      +                        "type": "string",
      +                        "x-agentic-mermaid-runtime-validator": "safeCssColor"
      +                      }
      +                    },
      +                    "type": "object"
      +                  },
      +                  "fill": {
      +                    "description": "Fill policy for rough/hybrid rendering; none and solid require a final stack that activates one of those backends.",
      +                    "enum": [
      +                      "none",
      +                      "hachure",
      +                      "solid",
      +                      "wash"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "fillWeight": {
      +                    "description": "Hachure line weight; requires fill hachure in the final stack.",
      +                    "exclusiveMinimum": 0,
      +                    "maximum": 20,
      +                    "type": "number"
      +                  },
      +                  "font": {
      +                    "description": "Safe, non-fetching CSS font family or stack; the rendering environment supplies the font face.",
      +                    "type": "string",
      +                    "x-agentic-mermaid-runtime-validator": "safeCssFontFamily"
      +                  },
      +                  "formatVersion": {
      +                    "const": 1,
      +                    "description": "Persisted wire-format version. Optional on input and normalized to 1 on output."
      +                  },
      +                  "hachureAngle": {
      +                    "description": "Hachure line angle in degrees; requires fill hachure in the final stack.",
      +                    "maximum": 360,
      +                    "minimum": -360,
      +                    "type": "number"
      +                  },
      +                  "hachureGap": {
      +                    "description": "Gap between hachure lines; requires fill hachure in the final stack.",
      +                    "exclusiveMinimum": 0,
      +                    "maximum": 100,
      +                    "type": "number"
      +                  },
      +                  "intent": {
      +                    "description": "Advisory intent metadata for pickers and quality tooling.",
      +                    "enum": [
      +                      "premium",
      +                      "draft",
      +                      "lofi"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "mono": {
      +                    "description": "Advisory monochrome contract: express tone through shading and weight.",
      +                    "type": "boolean"
      +                  },
      +                  "name": {
      +                    "description": "Canonical look:name or palette:name identity; required only when registering a style.",
      +                    "type": "string"
      +                  },
      +                  "passes": {
      +                    "description": "Number of sketch strokes; 1 is single-pass and 2 is the usual double stroke.",
      +                    "maximum": 8,
      +                    "minimum": 1,
      +                    "type": "integer"
      +                  },
      +                  "roughness": {
      +                    "description": "Rough.js stroke irregularity.",
      +                    "maximum": 10,
      +                    "minimum": 0,
      +                    "type": "number"
      +                  },
      +                  "stroke": {
      +                    "description": "Stroke treatment; crisp is the default renderer.",
      +                    "enum": [
      +                      "crisp",
      +                      "jittered",
      +                      "freehand"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "strokeWidth": {
      +                    "description": "Base stroke width in SVG user units.",
      +                    "exclusiveMinimum": 0,
      +                    "maximum": 20,
      +                    "type": "number"
      +                  },
      +                  "washEdge": {
      +                    "description": "Watercolor edge-darkening opacity; requires fill wash in the final stack.",
      +                    "maximum": 1,
      +                    "minimum": 0,
      +                    "type": "number"
      +                  },
      +                  "washOpacity": {
      +                    "description": "Watercolor glaze opacity; requires fill wash in the final stack.",
      +                    "maximum": 1,
      +                    "minimum": 0,
      +                    "type": "number"
      +                  }
      +                },
      +                "type": "object"
      +              }
      +            ],
      +            "x-agentic-mermaid-validation-expectation": "a registered Style name or StyleSpec"
      +          },
      +          "type": "array"
      +        }
      +      ],
      +      "description": "A registered name, inline StyleSpec, or left-to-right stack of either.",
      +      "x-agentic-mermaid-runtime-validator": "styleInput",
      +      "x-agentic-mermaid-terminal": "consumed"
      +    },
      +    "surface": {
      +      "description": "Node and group surface color.",
      +      "type": "string",
      +      "x-agentic-mermaid-runtime-validator": "safeCssPaint",
      +      "x-agentic-mermaid-terminal": "projected",
      +      "x-agentic-mermaid-terminal-note": "terminal cells do not paint graphical surfaces"
      +    },
      +    "timeline": {
      +      "additionalProperties": false,
      +      "description": "Timeline layout controls.",
      +      "properties": {
      +        "maxWidth": {
      +          "description": "Best-effort width budget for horizontal timelines.",
      +          "exclusiveMinimum": 0,
      +          "type": "number"
      +        }
      +      },
      +      "type": "object",
      +      "x-agentic-mermaid-applicable-builtin-families": [
      +        "timeline"
      +      ],
      +      "x-agentic-mermaid-terminal": "not-applicable",
      +      "x-agentic-mermaid-terminal-note": "terminal output uses maxWidth or targetWidth"
      +    },
      +    "transparent": {
      +      "default": false,
      +      "description": "Omit the painted SVG canvas background.",
      +      "type": "boolean",
      +      "x-agentic-mermaid-terminal": "projected",
      +      "x-agentic-mermaid-terminal-note": "terminal output has no painted canvas background"
      +    },
      +    "wrappingWidth": {
      +      "description": "Flowchart measured-label wrapping budget in pixels.",
      +      "exclusiveMinimum": 0,
      +      "type": "number",
      +      "x-agentic-mermaid-applicable-builtin-families": [
      +        "flowchart"
      +      ],
      +      "x-agentic-mermaid-terminal": "not-applicable",
      +      "x-agentic-mermaid-terminal-note": "terminal output uses maxWidth or targetWidth"
      +    }
      +  },
      +  "type": "object"
      +}
    • addedInput schema / properties / scale / default
      Added value: +2
    • changedInput schema / properties / scale / description
      Previous value: -"Output scale multiplier (default 2 — retina; clamped to 0.1–8)."New value: +"Positive output scale used when no fitTo constraint is supplied."
    • addedInput schema / properties / scale / exclusiveMinimum
      Added value: +0
    • addedInput schema / properties / scale / x-agentic-mermaid-receipt
      Added value: +"included"
    • addedInput schema / properties / scale / x-agentic-mermaid-scope
      Added value: +"portable"
    • addedInput schema / properties / seed / default
      Added value: +0
    • changedInput schema / properties / seed / description
      Previous value: -"Ink seed for styled looks."New value: +"Deterministic re-roll seed for stochastic Styles."
    • addedInput schema / properties / seed / x-agentic-mermaid-terminal
      Added value: +"not-applicable"
    • addedInput schema / properties / seed / x-agentic-mermaid-terminal-note
      Added value: +"terminal glyph geometry is deterministic and has no stochastic ink"
    • addedInput schema / properties / style / anyOf
      Added value: +[
      +  {
      +    "anyOf": [
      +      {
      +        "description": "Registered Style or Palette name.",
      +        "type": "string"
      +      },
      +      {
      +        "additionalProperties": false,
      +        "description": "A partial declarative style record for Agentic Mermaid rendering. All fields, including formatVersion, are optional on input; resolved and registered specs normalize formatVersion to 1.",
      +        "properties": {
      +          "$schema": {
      +            "description": "Optional JSON Schema pointer for file-backed styles; ignored while rendering.",
      +            "type": "string"
      +          },
      +          "backdrop": {
      +            "description": "Flat page furniture drawn behind the diagram.",
      +            "enum": [
      +              "plain",
      +              "paper-ruled",
      +              "grid"
      +            ],
      +            "type": "string"
      +          },
      +          "blurb": {
      +            "description": "Short human-readable description used by discovery surfaces.",
      +            "type": "string"
      +          },
      +          "bowing": {
      +            "description": "Rough.js line bowing.",
      +            "maximum": 10,
      +            "minimum": 0,
      +            "type": "number"
      +          },
      +          "colors": {
      +            "additionalProperties": false,
      +            "description": "Partial palette of safe, non-fetching CSS color tokens. Runtime validation applies the stricter safe-color policy.",
      +            "properties": {
      +              "accent": {
      +                "description": "Accent paint for emphasis and data series. Must be a safe, non-fetching CSS color.",
      +                "type": "string",
      +                "x-agentic-mermaid-runtime-validator": "safeCssColor"
      +              },
      +              "bg": {
      +                "description": "Diagram page background. Must be a safe, non-fetching CSS color.",
      +                "type": "string",
      +                "x-agentic-mermaid-runtime-validator": "safeCssColor"
      +              },
      +              "border": {
      +                "description": "Node and group border paint. Must be a safe, non-fetching CSS color.",
      +                "type": "string",
      +                "x-agentic-mermaid-runtime-validator": "safeCssColor"
      +              },
      +              "fg": {
      +                "description": "Primary text and foreground paint. Must be a safe, non-fetching CSS color.",
      +                "type": "string",
      +                "x-agentic-mermaid-runtime-validator": "safeCssColor"
      +              },
      +              "line": {
      +                "description": "Connector and secondary line paint. Must be a safe, non-fetching CSS color.",
      +                "type": "string",
      +                "x-agentic-mermaid-runtime-validator": "safeCssColor"
      +              },
      +              "muted": {
      +                "description": "Muted text and secondary data paint. Must be a safe, non-fetching CSS color.",
      +                "type": "string",
      +                "x-agentic-mermaid-runtime-validator": "safeCssColor"
      +              },
      +              "surface": {
      +                "description": "Node and group surface fill. Must be a safe, non-fetching CSS color.",
      +                "type": "string",
      +                "x-agentic-mermaid-runtime-validator": "safeCssColor"
      +              }
      +            },
      +            "type": "object"
      +          },
      +          "fill": {
      +            "description": "Fill policy for rough/hybrid rendering; none and solid require a final stack that activates one of those backends.",
      +            "enum": [
      +              "none",
      +              "hachure",
      +              "solid",
      +              "wash"
      +            ],
      +            "type": "string"
      +          },
      +          "fillWeight": {
      +            "description": "Hachure line weight; requires fill hachure in the final stack.",
      +            "exclusiveMinimum": 0,
      +            "maximum": 20,
      +            "type": "number"
      +          },
      +          "font": {
      +            "description": "Safe, non-fetching CSS font family or stack; the rendering environment supplies the font face.",
      +            "type": "string",
      +            "x-agentic-mermaid-runtime-validator": "safeCssFontFamily"
      +          },
      +          "formatVersion": {
      +            "const": 1,
      +            "description": "Persisted wire-format version. Optional on input and normalized to 1 on output."
      +          },
      +          "hachureAngle": {
      +            "description": "Hachure line angle in degrees; requires fill hachure in the final stack.",
      +            "maximum": 360,
      +            "minimum": -360,
      +            "type": "number"
      +          },
      +          "hachureGap": {
      +            "description": "Gap between hachure lines; requires fill hachure in the final stack.",
      +            "exclusiveMinimum": 0,
      +            "maximum": 100,
      +            "type": "number"
      +          },
      +          "intent": {
      +            "description": "Advisory intent metadata for pickers and quality tooling.",
      +            "enum": [
      +              "premium",
      +              "draft",
      +              "lofi"
      +            ],
      +            "type": "string"
      +          },
      +          "mono": {
      +            "description": "Advisory monochrome contract: express tone through shading and weight.",
      +            "type": "boolean"
      +          },
      +          "name": {
      +            "description": "Canonical look:name or palette:name identity; required only when registering a style.",
      +            "type": "string"
      +          },
      +          "passes": {
      +            "description": "Number of sketch strokes; 1 is single-pass and 2 is the usual double stroke.",
      +            "maximum": 8,
      +            "minimum": 1,
      +            "type": "integer"
      +          },
      +          "roughness": {
      +            "description": "Rough.js stroke irregularity.",
      +            "maximum": 10,
      +            "minimum": 0,
      +            "type": "number"
      +          },
      +          "stroke": {
      +            "description": "Stroke treatment; crisp is the default renderer.",
      +            "enum": [
      +              "crisp",
      +              "jittered",
      +              "freehand"
      +            ],
      +            "type": "string"
      +          },
      +          "strokeWidth": {
      +            "description": "Base stroke width in SVG user units.",
      +            "exclusiveMinimum": 0,
      +            "maximum": 20,
      +            "type": "number"
      +          },
      +          "washEdge": {
      +            "description": "Watercolor edge-darkening opacity; requires fill wash in the final stack.",
      +            "maximum": 1,
      +            "minimum": 0,
      +            "type": "number"
      +          },
      +          "washOpacity": {
      +            "description": "Watercolor glaze opacity; requires fill wash in the final stack.",
      +            "maximum": 1,
      +            "minimum": 0,
      +            "type": "number"
      +          }
      +        },
      +        "type": "object"
      +      }
      +    ],
      +    "x-agentic-mermaid-validation-expectation": "a registered Style name or StyleSpec"
      +  },
      +  {
      +    "description": "Style stack merged from left to right.",
      +    "items": {
      +      "anyOf": [
      +        {
      +          "description": "Registered Style or Palette name.",
      +          "type": "string"
      +        },
      +        {
      +          "additionalProperties": false,
      +          "description": "A partial declarative style record for Agentic Mermaid rendering. All fields, including formatVersion, are optional on input; resolved and registered specs normalize formatVersion to 1.",
      +          "properties": {
      +            "$schema": {
      +              "description": "Optional JSON Schema pointer for file-backed styles; ignored while rendering.",
      +              "type": "string"
      +            },
      +            "backdrop": {
      +              "description": "Flat page furniture drawn behind the diagram.",
      +              "enum": [
      +                "plain",
      +                "paper-ruled",
      +                "grid"
      +              ],
      +              "type": "string"
      +            },
      +            "blurb": {
      +              "description": "Short human-readable description used by discovery surfaces.",
      +              "type": "string"
      +            },
      +            "bowing": {
      +              "description": "Rough.js line bowing.",
      +              "maximum": 10,
      +              "minimum": 0,
      +              "type": "number"
      +            },
      +            "colors": {
      +              "additionalProperties": false,
      +              "description": "Partial palette of safe, non-fetching CSS color tokens. Runtime validation applies the stricter safe-color policy.",
      +              "properties": {
      +                "accent": {
      +                  "description": "Accent paint for emphasis and data series. Must be a safe, non-fetching CSS color.",
      +                  "type": "string",
      +                  "x-agentic-mermaid-runtime-validator": "safeCssColor"
      +                },
      +                "bg": {
      +                  "description": "Diagram page background. Must be a safe, non-fetching CSS color.",
      +                  "type": "string",
      +                  "x-agentic-mermaid-runtime-validator": "safeCssColor"
      +                },
      +                "border": {
      +                  "description": "Node and group border paint. Must be a safe, non-fetching CSS color.",
      +                  "type": "string",
      +                  "x-agentic-mermaid-runtime-validator": "safeCssColor"
      +                },
      +                "fg": {
      +                  "description": "Primary text and foreground paint. Must be a safe, non-fetching CSS color.",
      +                  "type": "string",
      +                  "x-agentic-mermaid-runtime-validator": "safeCssColor"
      +                },
      +                "line": {
      +                  "description": "Connector and secondary line paint. Must be a safe, non-fetching CSS color.",
      +                  "type": "string",
      +                  "x-agentic-mermaid-runtime-validator": "safeCssColor"
      +                },
      +                "muted": {
      +                  "description": "Muted text and secondary data paint. Must be a safe, non-fetching CSS color.",
      +                  "type": "string",
      +                  "x-agentic-mermaid-runtime-validator": "safeCssColor"
      +                },
      +                "surface": {
      +                  "description": "Node and group surface fill. Must be a safe, non-fetching CSS color.",
      +                  "type": "string",
      +                  "x-agentic-mermaid-runtime-validator": "safeCssColor"
      +                }
      +              },
      +              "type": "object"
      +            },
      +            "fill": {
      +              "description": "Fill policy for rough/hybrid rendering; none and solid require a final stack that activates one of those backends.",
      +              "enum": [
      +                "none",
      +                "hachure",
      +                "solid",
      +                "wash"
      +              ],
      +              "type": "string"
      +            },
      +            "fillWeight": {
      +              "description": "Hachure line weight; requires fill hachure in the final stack.",
      +              "exclusiveMinimum": 0,
      +              "maximum": 20,
      +              "type": "number"
      +            },
      +            "font": {
      +              "description": "Safe, non-fetching CSS font family or stack; the rendering environment supplies the font face.",
      +              "type": "string",
      +              "x-agentic-mermaid-runtime-validator": "safeCssFontFamily"
      +            },
      +            "formatVersion": {
      +              "const": 1,
      +              "description": "Persisted wire-format version. Optional on input and normalized to 1 on output."
      +            },
      +            "hachureAngle": {
      +              "description": "Hachure line angle in degrees; requires fill hachure in the final stack.",
      +              "maximum": 360,
      +              "minimum": -360,
      +              "type": "number"
      +            },
      +            "hachureGap": {
      +              "description": "Gap between hachure lines; requires fill hachure in the final stack.",
      +              "exclusiveMinimum": 0,
      +              "maximum": 100,
      +              "type": "number"
      +            },
      +            "intent": {
      +              "description": "Advisory intent metadata for pickers and quality tooling.",
      +              "enum": [
      +                "premium",
      +                "draft",
      +                "lofi"
      +              ],
      +              "type": "string"
      +            },
      +            "mono": {
      +              "description": "Advisory monochrome contract: express tone through shading and weight.",
      +              "type": "boolean"
      +            },
      +            "name": {
      +              "description": "Canonical look:name or palette:name identity; required only when registering a style.",
      +              "type": "string"
      +            },
      +            "passes": {
      +              "description": "Number of sketch strokes; 1 is single-pass and 2 is the usual double stroke.",
      +              "maximum": 8,
      +              "minimum": 1,
      +              "type": "integer"
      +            },
      +            "roughness": {
      +              "description": "Rough.js stroke irregularity.",
      +              "maximum": 10,
      +              "minimum": 0,
      +              "type": "number"
      +            },
      +            "stroke": {
      +              "description": "Stroke treatment; crisp is the default renderer.",
      +              "enum": [
      +                "crisp",
      +                "jittered",
      +                "freehand"
      +              ],
      +              "type": "string"
      +            },
      +            "strokeWidth": {
      +              "description": "Base stroke width in SVG user units.",
      +              "exclusiveMinimum": 0,
      +              "maximum": 20,
      +              "type": "number"
      +            },
      +            "washEdge": {
      +              "description": "Watercolor edge-darkening opacity; requires fill wash in the final stack.",
      +              "maximum": 1,
      +              "minimum": 0,
      +              "type": "number"
      +            },
      +            "washOpacity": {
      +              "description": "Watercolor glaze opacity; requires fill wash in the final stack.",
      +              "maximum": 1,
      +              "minimum": 0,
      +              "type": "number"
      +            }
      +          },
      +          "type": "object"
      +        }
      +      ],
      +      "x-agentic-mermaid-validation-expectation": "a registered Style name or StyleSpec"
      +    },
      +    "type": "array"
      +  }
      +]
    • changedInput schema / properties / style / description
      Previous value: -"Style name | record | stack (same as render_svg). Hosted rasterization bundles the built-in style faces; custom unbundled fonts use Inter with DejaVu per-glyph fallback."New value: +"A registered name, inline StyleSpec, or left-to-right stack of either."
    • addedInput schema / properties / style / x-agentic-mermaid-runtime-validator
      Added value: +"styleInput"
    • addedInput schema / properties / style / x-agentic-mermaid-terminal
      Added value: +"consumed"
  4. Changed1 schema field changed
    • changedInput schema / properties / style / description
      Previous value: -"Style name | record | stack (same as render_svg). Hosted rasterization bundles the built-in style faces; custom unbundled fonts fall back to DejaVu."New value: +"Style name | record | stack (same as render_svg). Hosted rasterization bundles the built-in style faces; custom unbundled fonts use Inter with DejaVu per-glyph fallback."
  5. First observed

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the remaining burden is low, and the description adds real value: resvg-wasm with bundled fonts, byte-divergence from the local napi renderer, and the fact that PNG output is outside the byte-determinism contract. It also states the response shape ({ ok, png_base64 }).

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?

Three short sentences, front-loaded with the action and return value, followed by the determinism caveat and the routing hint. No filler, though the determinism warning could be tightened.

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?

With no output schema, the description usefully names the return fields, and the large nested options object is fully documented in the schema. The determinism and hosted-vs-local distinction covers the main risk an agent faces, leaving only minor gaps like error behavior.

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 every option (fitTo, scale, background, minLabelPx) is documented in the schema, so the baseline applies. The description adds no parameter-level meaning beyond the schema, such as how fitTo and scale interact.

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?

States a specific verb and resource ("Rasterize a Mermaid source string to PNG") and names the return payload, so the agent knows exactly what it produces. It implicitly separates itself from render_svg/render_ascii via the output format, but never names those siblings explicitly.

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?

Gives a clear rule for when this hosted surface is appropriate versus the local stdio server for file/URL artifacts. It does not explicitly route the agent to render_svg or render_ascii when a vector or text target is wanted, so one alternative axis is left to inference.

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.