Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,537Letters: 14Defects: 1,323counted 4 min ago
teppi

Server definition

Hash
sha256:39a1328444918ee297f101b919bfaa94d80408c9cc4862821208ec630a1fd942
What it is
What a remote MCP server returned when asked what it offers: 5 tools

The blob, as servednamed by its sha256

{ "instructions": null, "tools": [ { "description": "DEPRECATED alias for `generate_visual` (removed no earlier than v1.24.x). Use `generate_visual` going forward — identical behaviour.", "inputSchema": { "additionalProperties": false, "properties": { "defaultArrowHead": { "description": "Default arrowhead style applied to all edges that don't specify their own.", "type": [ "string", "null" ] }, "defaultArrowStyle": { "description": "Connector aesthetic mode applied to all edges that don't set their own `arrowStyle`. Options: \"calligraphy\" (default — hand-drawn ink-ribbon connectors) | \"clean\" (standard stroked-line connectors) | \"block\" (chunky outlined block-arrow connectors with integrated triangular head). Orthogonal to defaultLineStyle (which now controls dash pattern only) — all 15 combinations of arrowStyle × lineStyle are valid.", "enum": [ "calligraphy", "clean", "block" ], "type": [ "string", "null" ] }, "defaultBlockArrowSize": { "anyOf": [ { "enum": [ "small", "medium", "large" ], "type": "string" }, { "maximum": 60, "minimum": 1, "type": "number" } ], "description": "Default Block Arrow size when `defaultArrowStyle` (or per-edge arrowStyle) is \"block\". Options: \"small\" (slim — body ~14 px) | \"medium\" (default — body ~24 px) | \"large\" (chunky — body ~36 px). Or a raw body half-width number in px (1–60); head dimensions scale proportionally. Per-edge `blockArrowSize` overrides this default." }, "defaultConnector": { "description": "Default connector type applied to all edges that don't specify their own.", "enum": [ "straight", "curved", "elbow", "orthogonal", "bezier" ], "type": [ "string", "null" ] }, "defaultConnectorAnimate": { "description": "Animate every connector edge. Options: none (default) | flow (dashes march along the line) | pulse (gentle opacity breathing) | glow (subtle stroke-width pulse) | trace (bright dot traverses each edge) | wave (large stroke-width oscillation). SVG-only — exports to PNG / WebP / OG-image freeze on first frame.", "enum": [ "none", "flow", "pulse", "glow", "trace", "wave", "lightning", "beat", "comet" ], "type": [ "string", "null" ] }, "defaultConnectorAnimateSpeed": { "description": "Animation speed when defaultConnectorAnimate is set. Options: slow (3s cycle) | medium (2s, default) | fast (1s).", "enum": [ "slow", "medium", "fast" ], "type": [ "string", "null" ] }, "defaultDividerStyle": { "description": "Divider / grid-line / table-border style. Governs the structural rule-lines a diagram emits: matrix grid lines, gantt phase column dividers, sequence lifelines, swimlane (process-flow) lane boundaries. Options: \"subtle\" (barely-there hairline), \"normal\" (default — pre-v1.55.0 baseline of 1 px / 25 % opacity), \"bold\" (emphasised grid presence), \"dashed\" (6,4 dasharray editorial feel), \"dotted\" (1,3 dasharray lightweight rhythm), \"none\" (no divider emission — cells separated only by colour banding). Useful for comparison tables (try \"bold\") or minimalist matrices (try \"none\").", "enum": [ "subtle", "normal", "bold", "dashed", "dotted", "none" ], "type": [ "string", "null" ] }, "defaultLineStyle": { "description": "v1.45.2+ — Default DASH PATTERN applied to all edges that don't specify their own. Options: \"solid\" | \"dashed\" | \"dotted\" | \"dash-dot\" | \"long-dash\". Combines orthogonally with `defaultArrowStyle` (calligraphy/clean/block) for 15 total visual combinations. Legacy values \"calligraphy\" and \"block-arrow\" are still accepted for backward compat (the renderer maps them to defaultArrowStyle=\"calligraphy\"/\"block\" with lineStyle=\"solid\"); new callers should use `defaultArrowStyle` for the aesthetic mode.", "enum": [ "calligraphy", "block-arrow", "solid", "dashed", "dotted", "dash-dot", "long-dash" ], "type": [ "string", "null" ] }, "defaultSceneAnimation": { "description": "Whole-visual reveal animation. Plays ONCE when the SVG is displayed, freezes at the final state. Options: none (default) | fade (entire visual fades in) | zoom (scales in from 70% to 100%) | zoom-pan (Ken Burns camera move) | flow (each node + edge appears sequentially in spec order). Orthogonal to defaultConnectorAnimate — both can run together. SVG-only — PNG / WebP exports show the fully-revealed final state (rasteriser ignores SMIL; static attrs hold the final value). Animated GIF / MP4 client-side encoder ticks the scene through.", "enum": [ "none", "fade", "zoom", "zoom-pan", "flow", "wave-sweep", "build-up", "flow-zoom-pan" ], "type": [ "string", "null" ] }, "defaultSceneAnimationLoop": { "description": "Animation loop count. v1.50.9+ — applies to BOTH connector animations (flow / pulse / glow / wave / trace / lightning / beat / comet) AND scene animations (fade / zoom / zoom-pan / flow / wave-sweep / build-up / flow-zoom-pan). Options (all quoted strings): \"once\" (default — plays once and freezes) | \"2\" | \"3\" | \"5\" (repeat that many times then freeze) | \"infinite\" (loop forever; best for live presentations and the historical default for connector animations pre-v1.50.9). Maps to SMIL repeatCount.", "enum": [ "once", "2", "3", "5", "infinite" ], "type": [ "string", "null" ] }, "defaultSceneAnimationSpeed": { "description": "Scene animation speed. Options: slow (1.5× duration) | medium (default) | fast (0.6× duration).", "enum": [ "slow", "medium", "fast" ], "type": [ "string", "null" ] }, "defaultShadow": { "description": "Default shadow level applied to all nodes.", "enum": [ "none", "sm", "md", "lg" ], "type": [ "string", "null" ] }, "defaultShapeLineStyle": { "description": "Default line style for shape outlines (node borders). v1.44.1 — also drives shape rendering mode: \"calligraphy\" gives hand-drawn rough shapes (ink-ribbon outlines); \"solid\" | \"dashed\" | \"dotted\" | \"dash-dot\" | \"long-dash\" give crisp geometric shapes with that outline pattern. Independent of edge/connector line style.", "enum": [ "calligraphy", "block-arrow", "solid", "dashed", "dotted", "dash-dot", "long-dash" ], "type": [ "string", "null" ] }, "defaultTitleStyle": { "description": "Title decoration treatment. Options: \"plain\" (default, just the title text), \"accent-bar\" (small accent-coloured vertical bar to the left of the title), \"underline\" (accent-coloured horizontal stroke below the title), \"boxed\" (title rendered in a subtle bordered + drop-shadowed pill — strongest framing). Affects only the diagram title, not subtitles or section headers.", "enum": [ "plain", "accent-bar", "underline", "boxed" ], "type": [ "string", "null" ] }, "edges": { "items": { "additionalProperties": false, "properties": { "animate": { "description": "Connector animation. Options: none (default) | flow (dashes march) | pulse (opacity breathing) | glow (stroke-width pulse) | trace (bright dot travels along) | wave (large stroke-width oscillation). SVG-only — exports to PNG/WebP capture one frozen frame.", "enum": [ "none", "flow", "pulse", "glow", "trace", "wave", "lightning", "beat", "comet" ], "type": [ "string", "null" ] }, "animateSpeed": { "description": "Animation speed. Options: slow (3s cycle) | medium (2s, default) | fast (1s).", "enum": [ "slow", "medium", "fast" ], "type": [ "string", "null" ] }, "arrowStyle": { "description": "Per-edge connector aesthetic mode (overrides defaultArrowStyle). Options: \"calligraphy\" | \"clean\" | \"block\". Orthogonal to lineStyle (dash pattern); all 15 combinations are valid.", "enum": [ "calligraphy", "clean", "block" ], "type": [ "string", "null" ] }, "blockArrowSize": { "anyOf": [ { "enum": [ "small", "medium", "large" ], "type": "string" }, { "maximum": 60, "minimum": 1, "type": "number" } ], "description": "Block Arrow size for this edge (only when arrowStyle is \"block\"). Preset names: \"small\" (slim) | \"medium\" (default) | \"large\" (chunky). OR a raw body half-width in px (1–60); head dimensions scale proportionally." }, "connectorType": { "enum": [ "straight", "curved", "elbow", "orthogonal", "bezier" ], "type": [ "string", "null" ] }, "hidden": { "type": [ "boolean", "null" ] }, "label": { "type": [ "string", "null" ] }, "lineStyle": { "enum": [ "calligraphy", "block-arrow", "solid", "dashed", "dotted", "dash-dot", "long-dash" ], "type": [ "string", "null" ] }, "loop": { "description": "Per-edge animation loop count override. Wins over the diagram-level `defaultSceneAnimationLoop`. Values are quoted strings: \"once\" | \"2\" | \"3\" | \"5\" | \"infinite\". Maps to SMIL repeatCount.", "enum": [ "once", "2", "3", "5", "infinite" ], "type": [ "string", "null" ] }, "source": { "type": "string" }, "sourceArrow": { "description": "Arrowhead style at the edge source end. Options: open (default) | triangle | diamond | circle | bar | dot | none.", "type": [ "string", "null" ] }, "style": { "additionalProperties": false, "properties": { "fill": { "type": [ "string", "null" ] }, "opacity": { "maximum": 1, "minimum": 0, "type": [ "number", "null" ] }, "stroke": { "type": [ "string", "null" ] }, "strokeWidth": { "type": [ "number", "null" ] } }, "required": [ "stroke", "strokeWidth", "opacity", "fill" ], "type": [ "object", "null" ] }, "target": { "type": "string" }, "targetArrow": { "description": "Arrowhead style at the edge target end. Options: open (default) | triangle | diamond | circle | bar | dot | none.", "type": [ "string", "null" ] } }, "required": [ "source", "target", "label", "lineStyle", "connectorType", "sourceArrow", "targetArrow", "style", "hidden", "animate", "animateSpeed", "blockArrowSize", "arrowStyle", "loop" ], "type": "object" }, "type": [ "array", "null" ] }, "fontFamily": { "description": "Font family for diagram text. Options: inter, poppins (sans-serif); playfair (serif); kalam, handlee (handwritten); fredoka (display); mono (monospace). Omit for style-matched default (Handlee for calligraphy, Inter for clean).", "type": [ "string", "null" ] }, "funnel": { "additionalProperties": false, "description": "Funnel-only payload. Required when type=\"funnel\". Fields: stageLabels (string[], 1..50, ordered top→bottom), stageValues (optional string[]), dropOff (optional string[] of length stageLabels-1), bottomRatio (0.05..0.99, default 0.30). Sales pipeline, AARRR, ToFu/MoFu/BoFu.", "properties": { "bottomRatio": { "maximum": 0.99, "minimum": 0.05, "type": [ "number", "null" ] }, "dropOff": { "items": { "type": "string" }, "maxItems": 50, "type": [ "array", "null" ] }, "stageLabels": { "items": { "type": "string" }, "maxItems": 50, "minItems": 1, "type": "array" }, "stageValues": { "items": { "type": "string" }, "maxItems": 50, "type": [ "array", "null" ] } }, "required": [ "stageLabels", "stageValues", "dropOff", "bottomRatio" ], "type": [ "object", "null" ] }, "ganttHolidays": { "description": "Gantt-only: ISO 8601 holiday dates (e.g. [\"2026-12-25\", \"2026-01-01\"]). Rendered as gray vertical stripes alongside Sat/Sun (always weekend). Only applies in date-driven mode (every node has start/end). Other diagram types ignore this field.", "items": { "maxLength": 32, "type": "string" }, "maxItems": 200, "type": [ "array", "null" ] }, "iconStyle": { "description": "Icon rendering style. \"clean-mono\" = precise strokes + single color, \"clean-colorful\" = precise strokes + vibrant colors, \"calligraphy-mono\" = hand-drawn ink + single color, \"calligraphy-colorful\" = hand-drawn ink + vibrant colors, \"none\" = hide icons.", "type": [ "string", "null" ] }, "layout": { "additionalProperties": false, "properties": { "direction": { "enum": [ "TB", "LR", "BT", "RL", "radial", "assorted" ], "type": [ "string", "null" ] }, "nodeSpacing": { "minimum": 0, "type": [ "number", "null" ] }, "padding": { "minimum": 0, "type": [ "number", "null" ] }, "rankSpacing": { "minimum": 0, "type": [ "number", "null" ] } }, "required": [ "direction", "nodeSpacing", "rankSpacing", "padding" ], "type": [ "object", "null" ] }, "matrixColumns": { "description": "Column header labels for 2D matrix grid (e.g., [\"High Vision\", \"Low Vision\"]).", "items": { "type": "string" }, "type": [ "array", "null" ] }, "matrixItemStyle": { "description": "Item display style for matrix diagrams. \"card\" (default) = rectangular cards, \"dot\" = scatter points, \"text\" = plain text, \"badge\" = compact pills.", "enum": [ "card", "dot", "text", "badge" ], "type": [ "string", "null" ] }, "matrixRows": { "description": "Row header labels for 2D matrix grid (e.g., [\"High Execution\", \"Low Execution\"]).", "items": { "type": "string" }, "type": [ "array", "null" ] }, "metadata": { "additionalProperties": false, "description": "Visual-size + Best-fit metadata bag (v1.65.4 -> v1.67.12). All fields optional; legacy callers without `metadata` are byte-identical to today. The server echoes `metadata.size` back on the response so integrators can confirm the field was honoured.", "properties": { "bestFit": { "description": "v1.65.1+ Phase 3 server-side gate. When `true` + `targetAspect` is set + the server flag `VISUAL_SIZES_PHASE3_ENABLED` is on, the Designer is re-invoked with the target aspect ratio to reflow the layout. Independent of `metadata.size.bestFit`; the frontend mirrors this field when the toggle is on.", "type": [ "boolean", "null" ] }, "size": { "additionalProperties": false, "description": "Visual-size persistence bag (v1.65.4+). Describes the EXPORT TARGET dimensions, NOT a canvas constraint at generation time. Round-trips through the response unchanged.", "properties": { "aspect": { "description": "Canonical \"W:H\" aspect emitted alongside preset / custom dims for fast consumer reads. Accepts integer or decimal ratios. Examples: \"16:9\", \"9:16\", \"1:1\", \"1.91:1\" (OG card).", "pattern": "^\\d+(\\.\\d+)?:\\d+(\\.\\d+)?$", "type": [ "string", "null" ] }, "bestFit": { "description": "v1.65.1+ Phase 3 opt-in flag. When `true` (alongside `metadata.bestFit` AND `metadata.targetAspect`), signals the server orchestrator to re-invoke the Designer with the target aspect ratio so the layout reflows to fit the export shape. Feature-flagged behind `VISUAL_SIZES_PHASE3_ENABLED` server-side; when OFF the field round-trips through the response but the orchestrator follows the legacy Phase 1/2 path. Default: false.", "type": [ "boolean", "null" ] }, "height": { "description": "Custom export-target height in pixels. 320..4096. Used with `width` for full custom dims, or with `aspect` for aspect-driven sizing.", "maximum": 4096, "minimum": 320, "type": [ "integer", "null" ] }, "preset": { "description": "Visual size preset id from shared/visual-sizes.ts catalog (e.g. \"16x9-presentation\", \"ig-square\", \"youtube-thumb\"). Describes the EXPORT TARGET (PNG / PDF / PPTX render dimensions), NOT the canvas constraint at generation time. Mutually exclusive with width + height (preset wins when both are present).", "maxLength": 64, "type": [ "string", "null" ] }, "width": { "description": "Custom export-target width in pixels. 320..4096. Used when no preset matches the desired output dimensions. Pair with `height` for full custom dims; pair with `aspect` for aspect-driven sizing.", "maximum": 4096, "minimum": 320, "type": [ "integer", "null" ] } }, "required": [ "preset", "width", "height", "aspect", "bestFit" ], "type": [ "object", "null" ] }, "targetAspect": { "description": "v1.65.1+ Phase 3 server-side aspect ratio. Accepts \"W:H\" forms (e.g. \"9:16\", \"16:9\", \"1:1\", \"1.91:1\"). Forwarded to the Designer when `bestFit` is on.", "maxLength": 16, "type": [ "string", "null" ] } }, "required": [ "size", "bestFit", "targetAspect" ], "type": [ "object", "null" ] }, "nodes": { "description": "Structured node definitions. Required when not using prompt mode.", "items": { "additionalProperties": false, "properties": { "animationLoop": { "enum": [ "once", "2", "3", "5", "infinite" ], "type": [ "string", "null" ] }, "chart": { "additionalProperties": false, "properties": { "area": { "type": [ "boolean", "null" ] }, "data": { "items": { "additionalProperties": false, "properties": { "color": { "pattern": "^#[0-9a-fA-F]{3}([0-9a-fA-F]{3})?$", "type": [ "string", "null" ] }, "label": { "maxLength": 2000, "type": [ "string", "null" ] }, "value": { "type": "number" } }, "required": [ "label", "value", "color" ], "type": "object" }, "maxItems": 64, "type": [ "array", "null" ] }, "innerRadiusRatio": { "maximum": 0.85, "minimum": 0.1, "type": [ "number", "null" ] }, "series": { "items": { "type": "number" }, "maxItems": 512, "type": [ "array", "null" ] }, "showLabels": { "type": [ "boolean", "null" ] }, "showValues": { "type": [ "boolean", "null" ] }, "type": { "enum": [ "pie", "donut", "bar", "sparkline", "line" ], "type": "string" } }, "required": [ "type", "data", "series", "innerRadiusRatio", "showLabels", "showValues", "area" ], "type": [ "object", "null" ] }, "group": { "type": [ "string", "null" ] }, "height": { "minimum": 0, "type": [ "number", "null" ] }, "hidden": { "type": [ "boolean", "null" ] }, "icon": { "type": [ "string", "null" ] }, "iconKeywords": { "items": { "type": "string" }, "type": [ "array", "null" ] }, "id": { "type": "string" }, "kpi": { "additionalProperties": false, "properties": { "delta": { "additionalProperties": false, "properties": { "direction": { "enum": [ "up", "down", "flat" ], "type": [ "string", "null" ] }, "invertColor": { "type": [ "boolean", "null" ] }, "text": { "maxLength": 2000, "type": "string" } }, "required": [ "text", "direction", "invertColor" ], "type": [ "object", "null" ] }, "label": { "maxLength": 2000, "type": [ "string", "null" ] }, "sparkline": { "items": { "type": "number" }, "maxItems": 512, "type": [ "array", "null" ] }, "value": { "maxLength": 2000, "type": "string" } }, "required": [ "value", "label", "delta", "sparkline" ], "type": [ "object", "null" ] }, "shape": { "enum": [ "rectangle", "rounded-rect", "circle", "ellipse", "diamond", "triangle", "parallelogram", "hexagon", "star", "pentagon", "octagon", "trapezoid", "process", "decision", "terminal", "data-io", "document", "predefined-process", "manual-input", "pill", "cloud", "callout-bubble", "underline-only", "cylinder", "database", "banner", "tag", "shield", "cross", "arrow-shape", "queue" ], "type": [ "string", "null" ] }, "style": { "additionalProperties": false, "properties": { "cornerRadius": { "type": [ "number", "null" ] }, "fill": { "type": [ "string", "null" ] }, "fontColor": { "type": [ "string", "null" ] }, "fontSize": { "type": [ "number", "null" ] }, "iconColor": { "type": [ "string", "null" ] }, "iconColors": { "items": { "type": "string" }, "type": [ "array", "null" ] }, "lineStyle": { "description": "Per-node outline line style. Excludes \"calligraphy\" — that mode is set per-spec via `defaultShapeLineStyle: \"calligraphy\"`, not per-node.", "enum": [ "solid", "dashed", "dotted", "dash-dot", "long-dash" ], "type": [ "string", "null" ] }, "opacity": { "maximum": 1, "minimum": 0, "type": [ "number", "null" ] }, "shadow": { "type": [ "boolean", "null" ] }, "shadowLevel": { "enum": [ "sm", "md", "lg" ], "type": [ "string", "null" ] }, "stroke": { "type": [ "string", "null" ] }, "strokeWidth": { "type": [ "number", "null" ] } }, "required": [ "fill", "stroke", "strokeWidth", "opacity", "cornerRadius", "shadow", "shadowLevel", "fontSize", "fontColor", "lineStyle", "iconColor", "iconColors" ], "type": [ "object", "null" ] }, "text": { "type": "string" }, "width": { "minimum": 0, "type": [ "number", "null" ] } }, "required": [ "id", "shape", "text", "style", "width", "height", "icon", "iconKeywords", "hidden", "group", "chart", "kpi", "animationLoop" ], "type": "object" }, "type": [ "array", "null" ] }, "prompt": { "description": "Natural language description of the diagram to generate. When provided, the server uses AI to convert this into a structured diagram spec. Max 8000 characters. Example: \"flowchart showing user login with validation and error handling\"", "maxLength": 8000, "type": [ "string", "null" ] }, "pyramid": { "additionalProperties": false, "description": "Pyramid-only payload. Required when type=\"pyramid\". Fields: tierLabels (string[], 1..50, ordered base→tip), tierValues (optional string[]), inverted (boolean), tipRatio (0..0.95, default 0.15). Bloom's Taxonomy, Maslow's Hierarchy, Capability Maturity, DIKW.", "properties": { "inverted": { "type": [ "boolean", "null" ] }, "tierLabels": { "items": { "type": "string" }, "maxItems": 50, "minItems": 1, "type": "array" }, "tierValues": { "items": { "type": "string" }, "maxItems": 50, "type": [ "array", "null" ] }, "tipRatio": { "maximum": 0.95, "minimum": 0, "type": [ "number", "null" ] } }, "required": [ "tierLabels", "tierValues", "inverted", "tipRatio" ], "type": [ "object", "null" ] }, "radar": { "additionalProperties": false, "description": "Radar/spider-chart payload. Required when type=\"radar\". Fields: axes (string[], 3..50), series ({name, values: number[]}[], 1..10), maxValue (default 100), rings (default 4). Use multiple series for comparison overlays — first solid, rest dashed at 50% opacity.", "properties": { "axes": { "items": { "type": "string" }, "maxItems": 50, "minItems": 3, "type": "array" }, "maxValue": { "minimum": 1, "type": [ "number", "null" ] }, "rings": { "maximum": 10, "minimum": 1, "type": [ "integer", "null" ] }, "series": { "items": { "additionalProperties": false, "properties": { "name": { "type": [ "string", "null" ] }, "values": { "items": { "type": "number" }, "maxItems": 50, "type": "array" } }, "required": [ "name", "values" ], "type": "object" }, "maxItems": 10, "minItems": 1, "type": "array" } }, "required": [ "axes", "series", "maxValue", "rings" ], "type": [ "object", "null" ] }, "sections": { "description": "Matrix sections. Each section has a title, optional subtitle, and items. Used with type=\"matrix\".", "items": { "additionalProperties": false, "properties": { "col": { "minimum": 0, "type": [ "integer", "null" ] }, "icons": { "items": { "type": "string" }, "type": [ "array", "null" ] }, "id": { "type": [ "string", "null" ] }, "itemBackgroundColors": { "items": { "maxLength": 40, "type": "string" }, "type": [ "array", "null" ] }, "itemHeatIntensities": { "items": { "maximum": 1, "minimum": 0, "type": "number" }, "type": [ "array", "null" ] }, "itemIds": { "items": { "type": "string" }, "type": [ "array", "null" ] }, "itemShapes": { "items": { "type": "string" }, "type": [ "array", "null" ] }, "items": { "items": { "type": "string" }, "type": "array" }, "row": { "minimum": 0, "type": [ "integer", "null" ] }, "sectionBackgroundColor": { "maxLength": 40, "type": [ "string", "null" ] }, "sectionHeatIntensity": { "maximum": 1, "minimum": 0, "type": [ "number", "null" ] }, "subtitle": { "type": [ "string", "null" ] }, "title": { "type": "string" } }, "required": [ "id", "title", "subtitle", "items", "icons", "itemIds", "itemShapes", "itemBackgroundColors", "itemHeatIntensities", "sectionBackgroundColor", "sectionHeatIntensity", "row", "col" ], "type": "object" }, "type": [ "array", "null" ] }, "shapeStyle": { "enum": [ "calligraphy", "clean" ], "type": [ "string", "null" ] }, "style": { "enum": [ "calligraphy", "clean" ], "type": [ "string", "null" ] }, "subtitle": { "type": [ "string", "null" ] }, "theme": { "additionalProperties": false, "properties": { "palette": { "additionalProperties": false, "properties": { "accent": { "type": [ "string", "null" ] }, "background": { "type": [ "string", "null" ] }, "border": { "type": [ "string", "null" ] }, "nodeColors": { "items": { "type": "string" }, "type": [ "array", "null" ] }, "primary": { "type": [ "string", "null" ] }, "secondary": { "type": [ "string", "null" ] }, "text": { "type": [ "string", "null" ] } }, "required": [ "primary", "secondary", "accent", "background", "text", "border", "nodeColors" ], "type": [ "object", "null" ] }, "paletteSeed": { "type": [ "number", "null" ] }, "preset": { "type": [ "string", "null" ] } }, "required": [ "preset", "palette", "paletteSeed" ], "type": [ "object", "null" ] }, "title": { "type": [ "string", "null" ] }, "type": { "description": "Diagram type. Required when providing structured nodes/edges, optional with prompt.", "enum": [ "flowchart", "mindmap", "block-diagram", "matrix", "timeline", "gantt", "er-diagram", "sequence", "process-flow", "pyramid", "funnel", "radar", "fishbone" ], "type": [ "string", "null" ] }, "xAxisLabel": { "description": "X-axis title for 2D matrix grid (e.g., \"Completeness of Vision\").", "type": [ "string", "null" ] }, "yAxisLabel": { "description": "Y-axis title for 2D matrix grid (e.g., \"Ability to Execute\").", "type": [ "string", "null" ] } }, "required": [ "prompt", "type", "sections", "title", "subtitle", "style", "shapeStyle", "nodes", "edges", "layout", "theme", "defaultLineStyle", "defaultArrowHead", "defaultConnector", "defaultShadow", "defaultShapeLineStyle", "defaultConnectorAnimate", "defaultConnectorAnimateSpeed", "defaultSceneAnimation", "defaultSceneAnimationSpeed", "defaultSceneAnimationLoop", "defaultTitleStyle", "defaultDividerStyle", "defaultBlockArrowSize", "defaultArrowStyle", "ganttHolidays", "pyramid", "funnel", "radar", "iconStyle", "fontFamily", "matrixColumns", "matrixRows", "xAxisLabel", "yAxisLabel", "matrixItemStyle", "metadata" ], "type": "object" }, "name": "generate_diagram", "outputSchema": null }, { "description": "Runs a specific framework against a user's inputs and produces a full analysis: prose explanation + structured fields + a self-contained SVG visualisation. Powered by the Jeda.ai · Visual AI framework knowledge graph.\n\nALWAYS call `recommend_framework` FIRST to obtain a valid framework_id -- it returns the exact namespaced slug to pass here. Framework ids are namespaced by category (e.g. SWOT = \"cms_swot-analysis\", Porter's 5 Forces = \"cms_porters-five-forces\"); a bare slug like \"swot-analysis\" will 404.\n\nREQUIRED post-processing on success: the response's first text block contains a `curl -fsSL` save-directive for the SVG. Save the file locally and surface it as a file chip — do NOT summarise the visual in prose.\n\nInput: framework_id (namespaced slug from `recommend_framework`) + user_inputs object (per-framework field set), OR a free-text `raw_prompt` fallback.\n\nExample: { \"framework_id\": \"cms_swot-analysis\", \"user_inputs\": { \"subject\": \"Q3 EU market entry\", \"context\": \"B2B SaaS, $5M ARR, US-headquartered\" } }", "inputSchema": { "additionalProperties": false, "properties": { "framework_id": { "description": "Namespaced framework slug (e.g. \"cms_swot-analysis\"). Get one from `recommend_framework` -- bare slugs like \"swot-analysis\" are not valid ids.", "maxLength": 64, "minLength": 1, "type": "string" }, "raw_prompt": { "description": "Optional free-text prompt that REPLACES the auto-derived prompt.", "maxLength": 8000, "type": "string" }, "theme": { "additionalProperties": false, "description": "Theme preset for the SVG render. Default: pastel.", "properties": { "preset": { "enum": [ "pastel", "corporate", "gradient", "dark", "blueprint", "playful", "vibrant", "monochrome" ], "type": [ "string", "null" ] } }, "required": [ "preset" ], "type": "object" }, "user_inputs": { "additionalProperties": {}, "description": "Object whose keys match the framework user-input form fields.", "type": "object" } }, "required": [ "framework_id" ], "type": "object" }, "name": "generate_framework_analysis", "outputSchema": null }, { "description": "Generates a visual (flowchart, mindmap, matrix, timeline, Gantt, ER, sequence, swimlane, block diagram) as a self-contained SVG. Powered by Jeda.ai · Visual AI.\n\nREQUIRED post-processing on every success: the response's FIRST text block is a \"SAVE THIS NOW\" directive with a `curl -fsSL` one-liner (Step 1) and an inline-SVG fallback (Step 2). Always attempt Step 1 first; only fall back to Step 2 if curl exits non-zero. The user expects an \"Image · SVG\" file chip — not a markdown link or prose summary. The signed URL is safe to fetch (auth is in the query string).\n\nTwo modes: (1) natural-language `prompt` → Data Agent + Design Agent build the visual; (2) structured `nodes` + `edges` for precise control.\n\nVisual types: matrix | mindmap | flowchart | block-diagram | timeline | gantt | er-diagram | sequence | process-flow. Default: auto-detected from prompt. Slash commands work too: `/matrix SWOT`, `/timeline roadmap`, `/process-flow procurement approval with finance and legal lanes`.\n\nFor style options (themes, fonts, arrow styles, animations, per-edge overrides, matrix/process-flow specifics) call `get_style_options` first. Default theme is `pastel` — only override when the user explicitly names another.\n\nExample: { \"prompt\": \"user signup with email verification\", \"theme\": { \"preset\": \"pastel\" } }", "inputSchema": { "additionalProperties": false, "properties": { "defaultArrowHead": { "description": "Default arrowhead style applied to all edges that don't specify their own.", "type": [ "string", "null" ] }, "defaultArrowStyle": { "description": "Connector aesthetic mode applied to all edges that don't set their own `arrowStyle`. Options: \"calligraphy\" (default — hand-drawn ink-ribbon connectors) | \"clean\" (standard stroked-line connectors) | \"block\" (chunky outlined block-arrow connectors with integrated triangular head). Orthogonal to defaultLineStyle (which now controls dash pattern only) — all 15 combinations of arrowStyle × lineStyle are valid.", "enum": [ "calligraphy", "clean", "block" ], "type": [ "string", "null" ] }, "defaultBlockArrowSize": { "anyOf": [ { "enum": [ "small", "medium", "large" ], "type": "string" }, { "maximum": 60, "minimum": 1, "type": "number" } ], "description": "Default Block Arrow size when `defaultArrowStyle` (or per-edge arrowStyle) is \"block\". Options: \"small\" (slim — body ~14 px) | \"medium\" (default — body ~24 px) | \"large\" (chunky — body ~36 px). Or a raw body half-width number in px (1–60); head dimensions scale proportionally. Per-edge `blockArrowSize` overrides this default." }, "defaultConnector": { "description": "Default connector type applied to all edges that don't specify their own.", "enum": [ "straight", "curved", "elbow", "orthogonal", "bezier" ], "type": [ "string", "null" ] }, "defaultConnectorAnimate": { "description": "Animate every connector edge. Options: none (default) | flow (dashes march along the line) | pulse (gentle opacity breathing) | glow (subtle stroke-width pulse) | trace (bright dot traverses each edge) | wave (large stroke-width oscillation). SVG-only — exports to PNG / WebP / OG-image freeze on first frame.", "enum": [ "none", "flow", "pulse", "glow", "trace", "wave", "lightning", "beat", "comet" ], "type": [ "string", "null" ] }, "defaultConnectorAnimateSpeed": { "description": "Animation speed when defaultConnectorAnimate is set. Options: slow (3s cycle) | medium (2s, default) | fast (1s).", "enum": [ "slow", "medium", "fast" ], "type": [ "string", "null" ] }, "defaultDividerStyle": { "description": "Divider / grid-line / table-border style. Governs the structural rule-lines a diagram emits: matrix grid lines, gantt phase column dividers, sequence lifelines, swimlane (process-flow) lane boundaries. Options: \"subtle\" (barely-there hairline), \"normal\" (default — pre-v1.55.0 baseline of 1 px / 25 % opacity), \"bold\" (emphasised grid presence), \"dashed\" (6,4 dasharray editorial feel), \"dotted\" (1,3 dasharray lightweight rhythm), \"none\" (no divider emission — cells separated only by colour banding). Useful for comparison tables (try \"bold\") or minimalist matrices (try \"none\").", "enum": [ "subtle", "normal", "bold", "dashed", "dotted", "none" ], "type": [ "string", "null" ] }, "defaultLineStyle": { "description": "v1.45.2+ — Default DASH PATTERN applied to all edges that don't specify their own. Options: \"solid\" | \"dashed\" | \"dotted\" | \"dash-dot\" | \"long-dash\". Combines orthogonally with `defaultArrowStyle` (calligraphy/clean/block) for 15 total visual combinations. Legacy values \"calligraphy\" and \"block-arrow\" are still accepted for backward compat (the renderer maps them to defaultArrowStyle=\"calligraphy\"/\"block\" with lineStyle=\"solid\"); new callers should use `defaultArrowStyle` for the aesthetic mode.", "enum": [ "calligraphy", "block-arrow", "solid", "dashed", "dotted", "dash-dot", "long-dash" ], "type": [ "string", "null" ] }, "defaultSceneAnimation": { "description": "Whole-visual reveal animation. Plays ONCE when the SVG is displayed, freezes at the final state. Options: none (default) | fade (entire visual fades in) | zoom (scales in from 70% to 100%) | zoom-pan (Ken Burns camera move) | flow (each node + edge appears sequentially in spec order). Orthogonal to defaultConnectorAnimate — both can run together. SVG-only — PNG / WebP exports show the fully-revealed final state (rasteriser ignores SMIL; static attrs hold the final value). Animated GIF / MP4 client-side encoder ticks the scene through.", "enum": [ "none", "fade", "zoom", "zoom-pan", "flow", "wave-sweep", "build-up", "flow-zoom-pan" ], "type": [ "string", "null" ] }, "defaultSceneAnimationLoop": { "description": "Animation loop count. v1.50.9+ — applies to BOTH connector animations (flow / pulse / glow / wave / trace / lightning / beat / comet) AND scene animations (fade / zoom / zoom-pan / flow / wave-sweep / build-up / flow-zoom-pan). Options (all quoted strings): \"once\" (default — plays once and freezes) | \"2\" | \"3\" | \"5\" (repeat that many times then freeze) | \"infinite\" (loop forever; best for live presentations and the historical default for connector animations pre-v1.50.9). Maps to SMIL repeatCount.", "enum": [ "once", "2", "3", "5", "infinite" ], "type": [ "string", "null" ] }, "defaultSceneAnimationSpeed": { "description": "Scene animation speed. Options: slow (1.5× duration) | medium (default) | fast (0.6× duration).", "enum": [ "slow", "medium", "fast" ], "type": [ "string", "null" ] }, "defaultShadow": { "description": "Default shadow level applied to all nodes.", "enum": [ "none", "sm", "md", "lg" ], "type": [ "string", "null" ] }, "defaultShapeLineStyle": { "description": "Default line style for shape outlines (node borders). v1.44.1 — also drives shape rendering mode: \"calligraphy\" gives hand-drawn rough shapes (ink-ribbon outlines); \"solid\" | \"dashed\" | \"dotted\" | \"dash-dot\" | \"long-dash\" give crisp geometric shapes with that outline pattern. Independent of edge/connector line style.", "enum": [ "calligraphy", "block-arrow", "solid", "dashed", "dotted", "dash-dot", "long-dash" ], "type": [ "string", "null" ] }, "defaultTitleStyle": { "description": "Title decoration treatment. Options: \"plain\" (default, just the title text), \"accent-bar\" (small accent-coloured vertical bar to the left of the title), \"underline\" (accent-coloured horizontal stroke below the title), \"boxed\" (title rendered in a subtle bordered + drop-shadowed pill — strongest framing). Affects only the diagram title, not subtitles or section headers.", "enum": [ "plain", "accent-bar", "underline", "boxed" ], "type": [ "string", "null" ] }, "edges": { "items": { "additionalProperties": false, "properties": { "animate": { "description": "Connector animation. Options: none (default) | flow (dashes march) | pulse (opacity breathing) | glow (stroke-width pulse) | trace (bright dot travels along) | wave (large stroke-width oscillation). SVG-only — exports to PNG/WebP capture one frozen frame.", "enum": [ "none", "flow", "pulse", "glow", "trace", "wave", "lightning", "beat", "comet" ], "type": [ "string", "null" ] }, "animateSpeed": { "description": "Animation speed. Options: slow (3s cycle) | medium (2s, default) | fast (1s).", "enum": [ "slow", "medium", "fast" ], "type": [ "string", "null" ] }, "arrowStyle": { "description": "Per-edge connector aesthetic mode (overrides defaultArrowStyle). Options: \"calligraphy\" | \"clean\" | \"block\". Orthogonal to lineStyle (dash pattern); all 15 combinations are valid.", "enum": [ "calligraphy", "clean", "block" ], "type": [ "string", "null" ] }, "blockArrowSize": { "anyOf": [ { "enum": [ "small", "medium", "large" ], "type": "string" }, { "maximum": 60, "minimum": 1, "type": "number" } ], "description": "Block Arrow size for this edge (only when arrowStyle is \"block\"). Preset names: \"small\" (slim) | \"medium\" (default) | \"large\" (chunky). OR a raw body half-width in px (1–60); head dimensions scale proportionally." }, "connectorType": { "enum": [ "straight", "curved", "elbow", "orthogonal", "bezier" ], "type": [ "string", "null" ] }, "hidden": { "type": [ "boolean", "null" ] }, "label": { "type": [ "string", "null" ] }, "lineStyle": { "enum": [ "calligraphy", "block-arrow", "solid", "dashed", "dotted", "dash-dot", "long-dash" ], "type": [ "string", "null" ] }, "loop": { "description": "Per-edge animation loop count override. Wins over the diagram-level `defaultSceneAnimationLoop`. Values are quoted strings: \"once\" | \"2\" | \"3\" | \"5\" | \"infinite\". Maps to SMIL repeatCount.", "enum": [ "once", "2", "3", "5", "infinite" ], "type": [ "string", "null" ] }, "source": { "type": "string" }, "sourceArrow": { "description": "Arrowhead style at the edge source end. Options: open (default) | triangle | diamond | circle | bar | dot | none.", "type": [ "string", "null" ] }, "style": { "additionalProperties": false, "properties": { "fill": { "type": [ "string", "null" ] }, "opacity": { "maximum": 1, "minimum": 0, "type": [ "number", "null" ] }, "stroke": { "type": [ "string", "null" ] }, "strokeWidth": { "type": [ "number", "null" ] } }, "required": [ "stroke", "strokeWidth", "opacity", "fill" ], "type": [ "object", "null" ] }, "target": { "type": "string" }, "targetArrow": { "description": "Arrowhead style at the edge target end. Options: open (default) | triangle | diamond | circle | bar | dot | none.", "type": [ "string", "null" ] } }, "required": [ "source", "target", "label", "lineStyle", "connectorType", "sourceArrow", "targetArrow", "style", "hidden", "animate", "animateSpeed", "blockArrowSize", "arrowStyle", "loop" ], "type": "object" }, "type": [ "array", "null" ] }, "fontFamily": { "description": "Font family for diagram text. Options: inter, poppins (sans-serif); playfair (serif); kalam, handlee (handwritten); fredoka (display); mono (monospace). Omit for style-matched default (Handlee for calligraphy, Inter for clean).", "type": [ "string", "null" ] }, "funnel": { "additionalProperties": false, "description": "Funnel-only payload. Required when type=\"funnel\". Fields: stageLabels (string[], 1..50, ordered top→bottom), stageValues (optional string[]), dropOff (optional string[] of length stageLabels-1), bottomRatio (0.05..0.99, default 0.30). Sales pipeline, AARRR, ToFu/MoFu/BoFu.", "properties": { "bottomRatio": { "maximum": 0.99, "minimum": 0.05, "type": [ "number", "null" ] }, "dropOff": { "items": { "type": "string" }, "maxItems": 50, "type": [ "array", "null" ] }, "stageLabels": { "items": { "type": "string" }, "maxItems": 50, "minItems": 1, "type": "array" }, "stageValues": { "items": { "type": "string" }, "maxItems": 50, "type": [ "array", "null" ] } }, "required": [ "stageLabels", "stageValues", "dropOff", "bottomRatio" ], "type": [ "object", "null" ] }, "ganttHolidays": { "description": "Gantt-only: ISO 8601 holiday dates (e.g. [\"2026-12-25\", \"2026-01-01\"]). Rendered as gray vertical stripes alongside Sat/Sun (always weekend). Only applies in date-driven mode (every node has start/end). Other diagram types ignore this field.", "items": { "maxLength": 32, "type": "string" }, "maxItems": 200, "type": [ "array", "null" ] }, "iconStyle": { "description": "Icon rendering style. \"clean-mono\" = precise strokes + single color, \"clean-colorful\" = precise strokes + vibrant colors, \"calligraphy-mono\" = hand-drawn ink + single color, \"calligraphy-colorful\" = hand-drawn ink + vibrant colors, \"none\" = hide icons.", "type": [ "string", "null" ] }, "layout": { "additionalProperties": false, "properties": { "direction": { "enum": [ "TB", "LR", "BT", "RL", "radial", "assorted" ], "type": [ "string", "null" ] }, "nodeSpacing": { "minimum": 0, "type": [ "number", "null" ] }, "padding": { "minimum": 0, "type": [ "number", "null" ] }, "rankSpacing": { "minimum": 0, "type": [ "number", "null" ] } }, "required": [ "direction", "nodeSpacing", "rankSpacing", "padding" ], "type": [ "object", "null" ] }, "matrixColumns": { "description": "Column header labels for 2D matrix grid (e.g., [\"High Vision\", \"Low Vision\"]).", "items": { "type": "string" }, "type": [ "array", "null" ] }, "matrixItemStyle": { "description": "Item display style for matrix diagrams. \"card\" (default) = rectangular cards, \"dot\" = scatter points, \"text\" = plain text, \"badge\" = compact pills.", "enum": [ "card", "dot", "text", "badge" ], "type": [ "string", "null" ] }, "matrixRows": { "description": "Row header labels for 2D matrix grid (e.g., [\"High Execution\", \"Low Execution\"]).", "items": { "type": "string" }, "type": [ "array", "null" ] }, "metadata": { "additionalProperties": false, "description": "Visual-size + Best-fit metadata bag (v1.65.4 -> v1.67.12). All fields optional; legacy callers without `metadata` are byte-identical to today. The server echoes `metadata.size` back on the response so integrators can confirm the field was honoured.", "properties": { "bestFit": { "description": "v1.65.1+ Phase 3 server-side gate. When `true` + `targetAspect` is set + the server flag `VISUAL_SIZES_PHASE3_ENABLED` is on, the Designer is re-invoked with the target aspect ratio to reflow the layout. Independent of `metadata.size.bestFit`; the frontend mirrors this field when the toggle is on.", "type": [ "boolean", "null" ] }, "size": { "additionalProperties": false, "description": "Visual-size persistence bag (v1.65.4+). Describes the EXPORT TARGET dimensions, NOT a canvas constraint at generation time. Round-trips through the response unchanged.", "properties": { "aspect": { "description": "Canonical \"W:H\" aspect emitted alongside preset / custom dims for fast consumer reads. Accepts integer or decimal ratios. Examples: \"16:9\", \"9:16\", \"1:1\", \"1.91:1\" (OG card).", "pattern": "^\\d+(\\.\\d+)?:\\d+(\\.\\d+)?$", "type": [ "string", "null" ] }, "bestFit": { "description": "v1.65.1+ Phase 3 opt-in flag. When `true` (alongside `metadata.bestFit` AND `metadata.targetAspect`), signals the server orchestrator to re-invoke the Designer with the target aspect ratio so the layout reflows to fit the export shape. Feature-flagged behind `VISUAL_SIZES_PHASE3_ENABLED` server-side; when OFF the field round-trips through the response but the orchestrator follows the legacy Phase 1/2 path. Default: false.", "type": [ "boolean", "null" ] }, "height": { "description": "Custom export-target height in pixels. 320..4096. Used with `width` for full custom dims, or with `aspect` for aspect-driven sizing.", "maximum": 4096, "minimum": 320, "type": [ "integer", "null" ] }, "preset": { "description": "Visual size preset id from shared/visual-sizes.ts catalog (e.g. \"16x9-presentation\", \"ig-square\", \"youtube-thumb\"). Describes the EXPORT TARGET (PNG / PDF / PPTX render dimensions), NOT the canvas constraint at generation time. Mutually exclusive with width + height (preset wins when both are present).", "maxLength": 64, "type": [ "string", "null" ] }, "width": { "description": "Custom export-target width in pixels. 320..4096. Used when no preset matches the desired output dimensions. Pair with `height` for full custom dims; pair with `aspect` for aspect-driven sizing.", "maximum": 4096, "minimum": 320, "type": [ "integer", "null" ] } }, "required": [ "preset", "width", "height", "aspect", "bestFit" ], "type": [ "object", "null" ] }, "targetAspect": { "description": "v1.65.1+ Phase 3 server-side aspect ratio. Accepts \"W:H\" forms (e.g. \"9:16\", \"16:9\", \"1:1\", \"1.91:1\"). Forwarded to the Designer when `bestFit` is on.", "maxLength": 16, "type": [ "string", "null" ] } }, "required": [ "size", "bestFit", "targetAspect" ], "type": [ "object", "null" ] }, "nodes": { "description": "Structured node definitions. Required when not using prompt mode.", "items": { "additionalProperties": false, "properties": { "animationLoop": { "enum": [ "once", "2", "3", "5", "infinite" ], "type": [ "string", "null" ] }, "chart": { "additionalProperties": false, "properties": { "area": { "type": [ "boolean", "null" ] }, "data": { "items": { "additionalProperties": false, "properties": { "color": { "pattern": "^#[0-9a-fA-F]{3}([0-9a-fA-F]{3})?$", "type": [ "string", "null" ] }, "label": { "maxLength": 2000, "type": [ "string", "null" ] }, "value": { "type": "number" } }, "required": [ "label", "value", "color" ], "type": "object" }, "maxItems": 64, "type": [ "array", "null" ] }, "innerRadiusRatio": { "maximum": 0.85, "minimum": 0.1, "type": [ "number", "null" ] }, "series": { "items": { "type": "number" }, "maxItems": 512, "type": [ "array", "null" ] }, "showLabels": { "type": [ "boolean", "null" ] }, "showValues": { "type": [ "boolean", "null" ] }, "type": { "enum": [ "pie", "donut", "bar", "sparkline", "line" ], "type": "string" } }, "required": [ "type", "data", "series", "innerRadiusRatio", "showLabels", "showValues", "area" ], "type": [ "object", "null" ] }, "group": { "type": [ "string", "null" ] }, "height": { "minimum": 0, "type": [ "number", "null" ] }, "hidden": { "type": [ "boolean", "null" ] }, "icon": { "type": [ "string", "null" ] }, "iconKeywords": { "items": { "type": "string" }, "type": [ "array", "null" ] }, "id": { "type": "string" }, "kpi": { "additionalProperties": false, "properties": { "delta": { "additionalProperties": false, "properties": { "direction": { "enum": [ "up", "down", "flat" ], "type": [ "string", "null" ] }, "invertColor": { "type": [ "boolean", "null" ] }, "text": { "maxLength": 2000, "type": "string" } }, "required": [ "text", "direction", "invertColor" ], "type": [ "object", "null" ] }, "label": { "maxLength": 2000, "type": [ "string", "null" ] }, "sparkline": { "items": { "type": "number" }, "maxItems": 512, "type": [ "array", "null" ] }, "value": { "maxLength": 2000, "type": "string" } }, "required": [ "value", "label", "delta", "sparkline" ], "type": [ "object", "null" ] }, "shape": { "enum": [ "rectangle", "rounded-rect", "circle", "ellipse", "diamond", "triangle", "parallelogram", "hexagon", "star", "pentagon", "octagon", "trapezoid", "process", "decision", "terminal", "data-io", "document", "predefined-process", "manual-input", "pill", "cloud", "callout-bubble", "underline-only", "cylinder", "database", "banner", "tag", "shield", "cross", "arrow-shape", "queue" ], "type": [ "string", "null" ] }, "style": { "additionalProperties": false, "properties": { "cornerRadius": { "type": [ "number", "null" ] }, "fill": { "type": [ "string", "null" ] }, "fontColor": { "type": [ "string", "null" ] }, "fontSize": { "type": [ "number", "null" ] }, "iconColor": { "type": [ "string", "null" ] }, "iconColors": { "items": { "type": "string" }, "type": [ "array", "null" ] }, "lineStyle": { "description": "Per-node outline line style. Excludes \"calligraphy\" — that mode is set per-spec via `defaultShapeLineStyle: \"calligraphy\"`, not per-node.", "enum": [ "solid", "dashed", "dotted", "dash-dot", "long-dash" ], "type": [ "string", "null" ] }, "opacity": { "maximum": 1, "minimum": 0, "type": [ "number", "null" ] }, "shadow": { "type": [ "boolean", "null" ] }, "shadowLevel": { "enum": [ "sm", "md", "lg" ], "type": [ "string", "null" ] }, "stroke": { "type": [ "string", "null" ] }, "strokeWidth": { "type": [ "number", "null" ] } }, "required": [ "fill", "stroke", "strokeWidth", "opacity", "cornerRadius", "shadow", "shadowLevel", "fontSize", "fontColor", "lineStyle", "iconColor", "iconColors" ], "type": [ "object", "null" ] }, "text": { "type": "string" }, "width": { "minimum": 0, "type": [ "number", "null" ] } }, "required": [ "id", "shape", "text", "style", "width", "height", "icon", "iconKeywords", "hidden", "group", "chart", "kpi", "animationLoop" ], "type": "object" }, "type": [ "array", "null" ] }, "prompt": { "description": "Natural language description of the diagram to generate. When provided, the server uses AI to convert this into a structured diagram spec. Max 8000 characters. Example: \"flowchart showing user login with validation and error handling\"", "maxLength": 8000, "type": [ "string", "null" ] }, "pyramid": { "additionalProperties": false, "description": "Pyramid-only payload. Required when type=\"pyramid\". Fields: tierLabels (string[], 1..50, ordered base→tip), tierValues (optional string[]), inverted (boolean), tipRatio (0..0.95, default 0.15). Bloom's Taxonomy, Maslow's Hierarchy, Capability Maturity, DIKW.", "properties": { "inverted": { "type": [ "boolean", "null" ] }, "tierLabels": { "items": { "type": "string" }, "maxItems": 50, "minItems": 1, "type": "array" }, "tierValues": { "items": { "type": "string" }, "maxItems": 50, "type": [ "array", "null" ] }, "tipRatio": { "maximum": 0.95, "minimum": 0, "type": [ "number", "null" ] } }, "required": [ "tierLabels", "tierValues", "inverted", "tipRatio" ], "type": [ "object", "null" ] }, "radar": { "additionalProperties": false, "description": "Radar/spider-chart payload. Required when type=\"radar\". Fields: axes (string[], 3..50), series ({name, values: number[]}[], 1..10), maxValue (default 100), rings (default 4). Use multiple series for comparison overlays — first solid, rest dashed at 50% opacity.", "properties": { "axes": { "items": { "type": "string" }, "maxItems": 50, "minItems": 3, "type": "array" }, "maxValue": { "minimum": 1, "type": [ "number", "null" ] }, "rings": { "maximum": 10, "minimum": 1, "type": [ "integer", "null" ] }, "series": { "items": { "additionalProperties": false, "properties": { "name": { "type": [ "string", "null" ] }, "values": { "items": { "type": "number" }, "maxItems": 50, "type": "array" } }, "required": [ "name", "values" ], "type": "object" }, "maxItems": 10, "minItems": 1, "type": "array" } }, "required": [ "axes", "series", "maxValue", "rings" ], "type": [ "object", "null" ] }, "sections": { "description": "Matrix sections. Each section has a title, optional subtitle, and items. Used with type=\"matrix\".", "items": { "additionalProperties": false, "properties": { "col": { "minimum": 0, "type": [ "integer", "null" ] }, "icons": { "items": { "type": "string" }, "type": [ "array", "null" ] }, "id": { "type": [ "string", "null" ] }, "itemBackgroundColors": { "items": { "maxLength": 40, "type": "string" }, "type": [ "array", "null" ] }, "itemHeatIntensities": { "items": { "maximum": 1, "minimum": 0, "type": "number" }, "type": [ "array", "null" ] }, "itemIds": { "items": { "type": "string" }, "type": [ "array", "null" ] }, "itemShapes": { "items": { "type": "string" }, "type": [ "array", "null" ] }, "items": { "items": { "type": "string" }, "type": "array" }, "row": { "minimum": 0, "type": [ "integer", "null" ] }, "sectionBackgroundColor": { "maxLength": 40, "type": [ "string", "null" ] }, "sectionHeatIntensity": { "maximum": 1, "minimum": 0, "type": [ "number", "null" ] }, "subtitle": { "type": [ "string", "null" ] }, "title": { "type": "string" } }, "required": [ "id", "title", "subtitle", "items", "icons", "itemIds", "itemShapes", "itemBackgroundColors", "itemHeatIntensities", "sectionBackgroundColor", "sectionHeatIntensity", "row", "col" ], "type": "object" }, "type": [ "array", "null" ] }, "shapeStyle": { "enum": [ "calligraphy", "clean" ], "type": [ "string", "null" ] }, "style": { "enum": [ "calligraphy", "clean" ], "type": [ "string", "null" ] }, "subtitle": { "type": [ "string", "null" ] }, "theme": { "additionalProperties": false, "properties": { "palette": { "additionalProperties": false, "properties": { "accent": { "type": [ "string", "null" ] }, "background": { "type": [ "string", "null" ] }, "border": { "type": [ "string", "null" ] }, "nodeColors": { "items": { "type": "string" }, "type": [ "array", "null" ] }, "primary": { "type": [ "string", "null" ] }, "secondary": { "type": [ "string", "null" ] }, "text": { "type": [ "string", "null" ] } }, "required": [ "primary", "secondary", "accent", "background", "text", "border", "nodeColors" ], "type": [ "object", "null" ] }, "paletteSeed": { "type": [ "number", "null" ] }, "preset": { "type": [ "string", "null" ] } }, "required": [ "preset", "palette", "paletteSeed" ], "type": [ "object", "null" ] }, "title": { "type": [ "string", "null" ] }, "type": { "description": "Diagram type. Required when providing structured nodes/edges, optional with prompt.", "enum": [ "flowchart", "mindmap", "block-diagram", "matrix", "timeline", "gantt", "er-diagram", "sequence", "process-flow", "pyramid", "funnel", "radar", "fishbone" ], "type": [ "string", "null" ] }, "xAxisLabel": { "description": "X-axis title for 2D matrix grid (e.g., \"Completeness of Vision\").", "type": [ "string", "null" ] }, "yAxisLabel": { "description": "Y-axis title for 2D matrix grid (e.g., \"Ability to Execute\").", "type": [ "string", "null" ] } }, "required": [ "prompt", "type", "sections", "title", "subtitle", "style", "shapeStyle", "nodes", "edges", "layout", "theme", "defaultLineStyle", "defaultArrowHead", "defaultConnector", "defaultShadow", "defaultShapeLineStyle", "defaultConnectorAnimate", "defaultConnectorAnimateSpeed", "defaultSceneAnimation", "defaultSceneAnimationSpeed", "defaultSceneAnimationLoop", "defaultTitleStyle", "defaultDividerStyle", "defaultBlockArrowSize", "defaultArrowStyle", "ganttHolidays", "pyramid", "funnel", "radar", "iconStyle", "fontFamily", "matrixColumns", "matrixRows", "xAxisLabel", "yAxisLabel", "matrixItemStyle", "metadata" ], "type": "object" }, "name": "generate_visual", "outputSchema": null }, { "description": "Returns the full style-options catalog for `generate_visual` — theme presets, fonts, arrow styles, line styles, arrowheads, scene/connector animations, layout directions, per-edge overrides, and matrix/process-flow specifics. Call this once when you need to expose specific style choices to the user (e.g. \"what themes are available?\") or before composing a `generate_visual` call that needs non-default styling. Output is plain text, ~4 KB.", "inputSchema": { "additionalProperties": false, "properties": { "defaultArrowHead": { "description": "Default arrowhead style applied to all edges that don't specify their own.", "type": [ "string", "null" ] }, "defaultArrowStyle": { "description": "Connector aesthetic mode applied to all edges that don't set their own `arrowStyle`. Options: \"calligraphy\" (default — hand-drawn ink-ribbon connectors) | \"clean\" (standard stroked-line connectors) | \"block\" (chunky outlined block-arrow connectors with integrated triangular head). Orthogonal to defaultLineStyle (which now controls dash pattern only) — all 15 combinations of arrowStyle × lineStyle are valid.", "enum": [ "calligraphy", "clean", "block" ], "type": [ "string", "null" ] }, "defaultBlockArrowSize": { "anyOf": [ { "enum": [ "small", "medium", "large" ], "type": "string" }, { "maximum": 60, "minimum": 1, "type": "number" } ], "description": "Default Block Arrow size when `defaultArrowStyle` (or per-edge arrowStyle) is \"block\". Options: \"small\" (slim — body ~14 px) | \"medium\" (default — body ~24 px) | \"large\" (chunky — body ~36 px). Or a raw body half-width number in px (1–60); head dimensions scale proportionally. Per-edge `blockArrowSize` overrides this default." }, "defaultConnector": { "description": "Default connector type applied to all edges that don't specify their own.", "enum": [ "straight", "curved", "elbow", "orthogonal", "bezier" ], "type": [ "string", "null" ] }, "defaultConnectorAnimate": { "description": "Animate every connector edge. Options: none (default) | flow (dashes march along the line) | pulse (gentle opacity breathing) | glow (subtle stroke-width pulse) | trace (bright dot traverses each edge) | wave (large stroke-width oscillation). SVG-only — exports to PNG / WebP / OG-image freeze on first frame.", "enum": [ "none", "flow", "pulse", "glow", "trace", "wave", "lightning", "beat", "comet" ], "type": [ "string", "null" ] }, "defaultConnectorAnimateSpeed": { "description": "Animation speed when defaultConnectorAnimate is set. Options: slow (3s cycle) | medium (2s, default) | fast (1s).", "enum": [ "slow", "medium", "fast" ], "type": [ "string", "null" ] }, "defaultDividerStyle": { "description": "Divider / grid-line / table-border style. Governs the structural rule-lines a diagram emits: matrix grid lines, gantt phase column dividers, sequence lifelines, swimlane (process-flow) lane boundaries. Options: \"subtle\" (barely-there hairline), \"normal\" (default — pre-v1.55.0 baseline of 1 px / 25 % opacity), \"bold\" (emphasised grid presence), \"dashed\" (6,4 dasharray editorial feel), \"dotted\" (1,3 dasharray lightweight rhythm), \"none\" (no divider emission — cells separated only by colour banding). Useful for comparison tables (try \"bold\") or minimalist matrices (try \"none\").", "enum": [ "subtle", "normal", "bold", "dashed", "dotted", "none" ], "type": [ "string", "null" ] }, "defaultLineStyle": { "description": "v1.45.2+ — Default DASH PATTERN applied to all edges that don't specify their own. Options: \"solid\" | \"dashed\" | \"dotted\" | \"dash-dot\" | \"long-dash\". Combines orthogonally with `defaultArrowStyle` (calligraphy/clean/block) for 15 total visual combinations. Legacy values \"calligraphy\" and \"block-arrow\" are still accepted for backward compat (the renderer maps them to defaultArrowStyle=\"calligraphy\"/\"block\" with lineStyle=\"solid\"); new callers should use `defaultArrowStyle` for the aesthetic mode.", "enum": [ "calligraphy", "block-arrow", "solid", "dashed", "dotted", "dash-dot", "long-dash" ], "type": [ "string", "null" ] }, "defaultSceneAnimation": { "description": "Whole-visual reveal animation. Plays ONCE when the SVG is displayed, freezes at the final state. Options: none (default) | fade (entire visual fades in) | zoom (scales in from 70% to 100%) | zoom-pan (Ken Burns camera move) | flow (each node + edge appears sequentially in spec order). Orthogonal to defaultConnectorAnimate — both can run together. SVG-only — PNG / WebP exports show the fully-revealed final state (rasteriser ignores SMIL; static attrs hold the final value). Animated GIF / MP4 client-side encoder ticks the scene through.", "enum": [ "none", "fade", "zoom", "zoom-pan", "flow", "wave-sweep", "build-up", "flow-zoom-pan" ], "type": [ "string", "null" ] }, "defaultSceneAnimationLoop": { "description": "Animation loop count. v1.50.9+ — applies to BOTH connector animations (flow / pulse / glow / wave / trace / lightning / beat / comet) AND scene animations (fade / zoom / zoom-pan / flow / wave-sweep / build-up / flow-zoom-pan). Options (all quoted strings): \"once\" (default — plays once and freezes) | \"2\" | \"3\" | \"5\" (repeat that many times then freeze) | \"infinite\" (loop forever; best for live presentations and the historical default for connector animations pre-v1.50.9). Maps to SMIL repeatCount.", "enum": [ "once", "2", "3", "5", "infinite" ], "type": [ "string", "null" ] }, "defaultSceneAnimationSpeed": { "description": "Scene animation speed. Options: slow (1.5× duration) | medium (default) | fast (0.6× duration).", "enum": [ "slow", "medium", "fast" ], "type": [ "string", "null" ] }, "defaultShadow": { "description": "Default shadow level applied to all nodes.", "enum": [ "none", "sm", "md", "lg" ], "type": [ "string", "null" ] }, "defaultShapeLineStyle": { "description": "Default line style for shape outlines (node borders). v1.44.1 — also drives shape rendering mode: \"calligraphy\" gives hand-drawn rough shapes (ink-ribbon outlines); \"solid\" | \"dashed\" | \"dotted\" | \"dash-dot\" | \"long-dash\" give crisp geometric shapes with that outline pattern. Independent of edge/connector line style.", "enum": [ "calligraphy", "block-arrow", "solid", "dashed", "dotted", "dash-dot", "long-dash" ], "type": [ "string", "null" ] }, "defaultTitleStyle": { "description": "Title decoration treatment. Options: \"plain\" (default, just the title text), \"accent-bar\" (small accent-coloured vertical bar to the left of the title), \"underline\" (accent-coloured horizontal stroke below the title), \"boxed\" (title rendered in a subtle bordered + drop-shadowed pill — strongest framing). Affects only the diagram title, not subtitles or section headers.", "enum": [ "plain", "accent-bar", "underline", "boxed" ], "type": [ "string", "null" ] }, "edges": { "items": { "additionalProperties": false, "properties": { "animate": { "description": "Connector animation. Options: none (default) | flow (dashes march) | pulse (opacity breathing) | glow (stroke-width pulse) | trace (bright dot travels along) | wave (large stroke-width oscillation). SVG-only — exports to PNG/WebP capture one frozen frame.", "enum": [ "none", "flow", "pulse", "glow", "trace", "wave", "lightning", "beat", "comet" ], "type": [ "string", "null" ] }, "animateSpeed": { "description": "Animation speed. Options: slow (3s cycle) | medium (2s, default) | fast (1s).", "enum": [ "slow", "medium", "fast" ], "type": [ "string", "null" ] }, "arrowStyle": { "description": "Per-edge connector aesthetic mode (overrides defaultArrowStyle). Options: \"calligraphy\" | \"clean\" | \"block\". Orthogonal to lineStyle (dash pattern); all 15 combinations are valid.", "enum": [ "calligraphy", "clean", "block" ], "type": [ "string", "null" ] }, "blockArrowSize": { "anyOf": [ { "enum": [ "small", "medium", "large" ], "type": "string" }, { "maximum": 60, "minimum": 1, "type": "number" } ], "description": "Block Arrow size for this edge (only when arrowStyle is \"block\"). Preset names: \"small\" (slim) | \"medium\" (default) | \"large\" (chunky). OR a raw body half-width in px (1–60); head dimensions scale proportionally." }, "connectorType": { "enum": [ "straight", "curved", "elbow", "orthogonal", "bezier" ], "type": [ "string", "null" ] }, "hidden": { "type": [ "boolean", "null" ] }, "label": { "type": [ "string", "null" ] }, "lineStyle": { "enum": [ "calligraphy", "block-arrow", "solid", "dashed", "dotted", "dash-dot", "long-dash" ], "type": [ "string", "null" ] }, "loop": { "description": "Per-edge animation loop count override. Wins over the diagram-level `defaultSceneAnimationLoop`. Values are quoted strings: \"once\" | \"2\" | \"3\" | \"5\" | \"infinite\". Maps to SMIL repeatCount.", "enum": [ "once", "2", "3", "5", "infinite" ], "type": [ "string", "null" ] }, "source": { "type": "string" }, "sourceArrow": { "description": "Arrowhead style at the edge source end. Options: open (default) | triangle | diamond | circle | bar | dot | none.", "type": [ "string", "null" ] }, "style": { "additionalProperties": false, "properties": { "fill": { "type": [ "string", "null" ] }, "opacity": { "maximum": 1, "minimum": 0, "type": [ "number", "null" ] }, "stroke": { "type": [ "string", "null" ] }, "strokeWidth": { "type": [ "number", "null" ] } }, "required": [ "stroke", "strokeWidth", "opacity", "fill" ], "type": [ "object", "null" ] }, "target": { "type": "string" }, "targetArrow": { "description": "Arrowhead style at the edge target end. Options: open (default) | triangle | diamond | circle | bar | dot | none.", "type": [ "string", "null" ] } }, "required": [ "source", "target", "label", "lineStyle", "connectorType", "sourceArrow", "targetArrow", "style", "hidden", "animate", "animateSpeed", "blockArrowSize", "arrowStyle", "loop" ], "type": "object" }, "type": [ "array", "null" ] }, "fontFamily": { "description": "Font family for diagram text. Options: inter, poppins (sans-serif); playfair (serif); kalam, handlee (handwritten); fredoka (display); mono (monospace). Omit for style-matched default (Handlee for calligraphy, Inter for clean).", "type": [ "string", "null" ] }, "funnel": { "additionalProperties": false, "description": "Funnel-only payload. Required when type=\"funnel\". Fields: stageLabels (string[], 1..50, ordered top→bottom), stageValues (optional string[]), dropOff (optional string[] of length stageLabels-1), bottomRatio (0.05..0.99, default 0.30). Sales pipeline, AARRR, ToFu/MoFu/BoFu.", "properties": { "bottomRatio": { "maximum": 0.99, "minimum": 0.05, "type": [ "number", "null" ] }, "dropOff": { "items": { "type": "string" }, "maxItems": 50, "type": [ "array", "null" ] }, "stageLabels": { "items": { "type": "string" }, "maxItems": 50, "minItems": 1, "type": "array" }, "stageValues": { "items": { "type": "string" }, "maxItems": 50, "type": [ "array", "null" ] } }, "required": [ "stageLabels", "stageValues", "dropOff", "bottomRatio" ], "type": [ "object", "null" ] }, "ganttHolidays": { "description": "Gantt-only: ISO 8601 holiday dates (e.g. [\"2026-12-25\", \"2026-01-01\"]). Rendered as gray vertical stripes alongside Sat/Sun (always weekend). Only applies in date-driven mode (every node has start/end). Other diagram types ignore this field.", "items": { "maxLength": 32, "type": "string" }, "maxItems": 200, "type": [ "array", "null" ] }, "iconStyle": { "description": "Icon rendering style. \"clean-mono\" = precise strokes + single color, \"clean-colorful\" = precise strokes + vibrant colors, \"calligraphy-mono\" = hand-drawn ink + single color, \"calligraphy-colorful\" = hand-drawn ink + vibrant colors, \"none\" = hide icons.", "type": [ "string", "null" ] }, "layout": { "additionalProperties": false, "properties": { "direction": { "enum": [ "TB", "LR", "BT", "RL", "radial", "assorted" ], "type": [ "string", "null" ] }, "nodeSpacing": { "minimum": 0, "type": [ "number", "null" ] }, "padding": { "minimum": 0, "type": [ "number", "null" ] }, "rankSpacing": { "minimum": 0, "type": [ "number", "null" ] } }, "required": [ "direction", "nodeSpacing", "rankSpacing", "padding" ], "type": [ "object", "null" ] }, "matrixColumns": { "description": "Column header labels for 2D matrix grid (e.g., [\"High Vision\", \"Low Vision\"]).", "items": { "type": "string" }, "type": [ "array", "null" ] }, "matrixItemStyle": { "description": "Item display style for matrix diagrams. \"card\" (default) = rectangular cards, \"dot\" = scatter points, \"text\" = plain text, \"badge\" = compact pills.", "enum": [ "card", "dot", "text", "badge" ], "type": [ "string", "null" ] }, "matrixRows": { "description": "Row header labels for 2D matrix grid (e.g., [\"High Execution\", \"Low Execution\"]).", "items": { "type": "string" }, "type": [ "array", "null" ] }, "metadata": { "additionalProperties": false, "description": "Visual-size + Best-fit metadata bag (v1.65.4 -> v1.67.12). All fields optional; legacy callers without `metadata` are byte-identical to today. The server echoes `metadata.size` back on the response so integrators can confirm the field was honoured.", "properties": { "bestFit": { "description": "v1.65.1+ Phase 3 server-side gate. When `true` + `targetAspect` is set + the server flag `VISUAL_SIZES_PHASE3_ENABLED` is on, the Designer is re-invoked with the target aspect ratio to reflow the layout. Independent of `metadata.size.bestFit`; the frontend mirrors this field when the toggle is on.", "type": [ "boolean", "null" ] }, "size": { "additionalProperties": false, "description": "Visual-size persistence bag (v1.65.4+). Describes the EXPORT TARGET dimensions, NOT a canvas constraint at generation time. Round-trips through the response unchanged.", "properties": { "aspect": { "description": "Canonical \"W:H\" aspect emitted alongside preset / custom dims for fast consumer reads. Accepts integer or decimal ratios. Examples: \"16:9\", \"9:16\", \"1:1\", \"1.91:1\" (OG card).", "pattern": "^\\d+(\\.\\d+)?:\\d+(\\.\\d+)?$", "type": [ "string", "null" ] }, "bestFit": { "description": "v1.65.1+ Phase 3 opt-in flag. When `true` (alongside `metadata.bestFit` AND `metadata.targetAspect`), signals the server orchestrator to re-invoke the Designer with the target aspect ratio so the layout reflows to fit the export shape. Feature-flagged behind `VISUAL_SIZES_PHASE3_ENABLED` server-side; when OFF the field round-trips through the response but the orchestrator follows the legacy Phase 1/2 path. Default: false.", "type": [ "boolean", "null" ] }, "height": { "description": "Custom export-target height in pixels. 320..4096. Used with `width` for full custom dims, or with `aspect` for aspect-driven sizing.", "maximum": 4096, "minimum": 320, "type": [ "integer", "null" ] }, "preset": { "description": "Visual size preset id from shared/visual-sizes.ts catalog (e.g. \"16x9-presentation\", \"ig-square\", \"youtube-thumb\"). Describes the EXPORT TARGET (PNG / PDF / PPTX render dimensions), NOT the canvas constraint at generation time. Mutually exclusive with width + height (preset wins when both are present).", "maxLength": 64, "type": [ "string", "null" ] }, "width": { "description": "Custom export-target width in pixels. 320..4096. Used when no preset matches the desired output dimensions. Pair with `height` for full custom dims; pair with `aspect` for aspect-driven sizing.", "maximum": 4096, "minimum": 320, "type": [ "integer", "null" ] } }, "required": [ "preset", "width", "height", "aspect", "bestFit" ], "type": [ "object", "null" ] }, "targetAspect": { "description": "v1.65.1+ Phase 3 server-side aspect ratio. Accepts \"W:H\" forms (e.g. \"9:16\", \"16:9\", \"1:1\", \"1.91:1\"). Forwarded to the Designer when `bestFit` is on.", "maxLength": 16, "type": [ "string", "null" ] } }, "required": [ "size", "bestFit", "targetAspect" ], "type": [ "object", "null" ] }, "nodes": { "description": "Structured node definitions. Required when not using prompt mode.", "items": { "additionalProperties": false, "properties": { "animationLoop": { "enum": [ "once", "2", "3", "5", "infinite" ], "type": [ "string", "null" ] }, "chart": { "additionalProperties": false, "properties": { "area": { "type": [ "boolean", "null" ] }, "data": { "items": { "additionalProperties": false, "properties": { "color": { "pattern": "^#[0-9a-fA-F]{3}([0-9a-fA-F]{3})?$", "type": [ "string", "null" ] }, "label": { "maxLength": 2000, "type": [ "string", "null" ] }, "value": { "type": "number" } }, "required": [ "label", "value", "color" ], "type": "object" }, "maxItems": 64, "type": [ "array", "null" ] }, "innerRadiusRatio": { "maximum": 0.85, "minimum": 0.1, "type": [ "number", "null" ] }, "series": { "items": { "type": "number" }, "maxItems": 512, "type": [ "array", "null" ] }, "showLabels": { "type": [ "boolean", "null" ] }, "showValues": { "type": [ "boolean", "null" ] }, "type": { "enum": [ "pie", "donut", "bar", "sparkline", "line" ], "type": "string" } }, "required": [ "type", "data", "series", "innerRadiusRatio", "showLabels", "showValues", "area" ], "type": [ "object", "null" ] }, "group": { "type": [ "string", "null" ] }, "height": { "minimum": 0, "type": [ "number", "null" ] }, "hidden": { "type": [ "boolean", "null" ] }, "icon": { "type": [ "string", "null" ] }, "iconKeywords": { "items": { "type": "string" }, "type": [ "array", "null" ] }, "id": { "type": "string" }, "kpi": { "additionalProperties": false, "properties": { "delta": { "additionalProperties": false, "properties": { "direction": { "enum": [ "up", "down", "flat" ], "type": [ "string", "null" ] }, "invertColor": { "type": [ "boolean", "null" ] }, "text": { "maxLength": 2000, "type": "string" } }, "required": [ "text", "direction", "invertColor" ], "type": [ "object", "null" ] }, "label": { "maxLength": 2000, "type": [ "string", "null" ] }, "sparkline": { "items": { "type": "number" }, "maxItems": 512, "type": [ "array", "null" ] }, "value": { "maxLength": 2000, "type": "string" } }, "required": [ "value", "label", "delta", "sparkline" ], "type": [ "object", "null" ] }, "shape": { "enum": [ "rectangle", "rounded-rect", "circle", "ellipse", "diamond", "triangle", "parallelogram", "hexagon", "star", "pentagon", "octagon", "trapezoid", "process", "decision", "terminal", "data-io", "document", "predefined-process", "manual-input", "pill", "cloud", "callout-bubble", "underline-only", "cylinder", "database", "banner", "tag", "shield", "cross", "arrow-shape", "queue" ], "type": [ "string", "null" ] }, "style": { "additionalProperties": false, "properties": { "cornerRadius": { "type": [ "number", "null" ] }, "fill": { "type": [ "string", "null" ] }, "fontColor": { "type": [ "string", "null" ] }, "fontSize": { "type": [ "number", "null" ] }, "iconColor": { "type": [ "string", "null" ] }, "iconColors": { "items": { "type": "string" }, "type": [ "array", "null" ] }, "lineStyle": { "description": "Per-node outline line style. Excludes \"calligraphy\" — that mode is set per-spec via `defaultShapeLineStyle: \"calligraphy\"`, not per-node.", "enum": [ "solid", "dashed", "dotted", "dash-dot", "long-dash" ], "type": [ "string", "null" ] }, "opacity": { "maximum": 1, "minimum": 0, "type": [ "number", "null" ] }, "shadow": { "type": [ "boolean", "null" ] }, "shadowLevel": { "enum": [ "sm", "md", "lg" ], "type": [ "string", "null" ] }, "stroke": { "type": [ "string", "null" ] }, "strokeWidth": { "type": [ "number", "null" ] } }, "required": [ "fill", "stroke", "strokeWidth", "opacity", "cornerRadius", "shadow", "shadowLevel", "fontSize", "fontColor", "lineStyle", "iconColor", "iconColors" ], "type": [ "object", "null" ] }, "text": { "type": "string" }, "width": { "minimum": 0, "type": [ "number", "null" ] } }, "required": [ "id", "shape", "text", "style", "width", "height", "icon", "iconKeywords", "hidden", "group", "chart", "kpi", "animationLoop" ], "type": "object" }, "type": [ "array", "null" ] }, "prompt": { "description": "Natural language description of the diagram to generate. When provided, the server uses AI to convert this into a structured diagram spec. Max 8000 characters. Example: \"flowchart showing user login with validation and error handling\"", "maxLength": 8000, "type": [ "string", "null" ] }, "pyramid": { "additionalProperties": false, "description": "Pyramid-only payload. Required when type=\"pyramid\". Fields: tierLabels (string[], 1..50, ordered base→tip), tierValues (optional string[]), inverted (boolean), tipRatio (0..0.95, default 0.15). Bloom's Taxonomy, Maslow's Hierarchy, Capability Maturity, DIKW.", "properties": { "inverted": { "type": [ "boolean", "null" ] }, "tierLabels": { "items": { "type": "string" }, "maxItems": 50, "minItems": 1, "type": "array" }, "tierValues": { "items": { "type": "string" }, "maxItems": 50, "type": [ "array", "null" ] }, "tipRatio": { "maximum": 0.95, "minimum": 0, "type": [ "number", "null" ] } }, "required": [ "tierLabels", "tierValues", "inverted", "tipRatio" ], "type": [ "object", "null" ] }, "radar": { "additionalProperties": false, "description": "Radar/spider-chart payload. Required when type=\"radar\". Fields: axes (string[], 3..50), series ({name, values: number[]}[], 1..10), maxValue (default 100), rings (default 4). Use multiple series for comparison overlays — first solid, rest dashed at 50% opacity.", "properties": { "axes": { "items": { "type": "string" }, "maxItems": 50, "minItems": 3, "type": "array" }, "maxValue": { "minimum": 1, "type": [ "number", "null" ] }, "rings": { "maximum": 10, "minimum": 1, "type": [ "integer", "null" ] }, "series": { "items": { "additionalProperties": false, "properties": { "name": { "type": [ "string", "null" ] }, "values": { "items": { "type": "number" }, "maxItems": 50, "type": "array" } }, "required": [ "name", "values" ], "type": "object" }, "maxItems": 10, "minItems": 1, "type": "array" } }, "required": [ "axes", "series", "maxValue", "rings" ], "type": [ "object", "null" ] }, "sections": { "description": "Matrix sections. Each section has a title, optional subtitle, and items. Used with type=\"matrix\".", "items": { "additionalProperties": false, "properties": { "col": { "minimum": 0, "type": [ "integer", "null" ] }, "icons": { "items": { "type": "string" }, "type": [ "array", "null" ] }, "id": { "type": [ "string", "null" ] }, "itemBackgroundColors": { "items": { "maxLength": 40, "type": "string" }, "type": [ "array", "null" ] }, "itemHeatIntensities": { "items": { "maximum": 1, "minimum": 0, "type": "number" }, "type": [ "array", "null" ] }, "itemIds": { "items": { "type": "string" }, "type": [ "array", "null" ] }, "itemShapes": { "items": { "type": "string" }, "type": [ "array", "null" ] }, "items": { "items": { "type": "string" }, "type": "array" }, "row": { "minimum": 0, "type": [ "integer", "null" ] }, "sectionBackgroundColor": { "maxLength": 40, "type": [ "string", "null" ] }, "sectionHeatIntensity": { "maximum": 1, "minimum": 0, "type": [ "number", "null" ] }, "subtitle": { "type": [ "string", "null" ] }, "title": { "type": "string" } }, "required": [ "id", "title", "subtitle", "items", "icons", "itemIds", "itemShapes", "itemBackgroundColors", "itemHeatIntensities", "sectionBackgroundColor", "sectionHeatIntensity", "row", "col" ], "type": "object" }, "type": [ "array", "null" ] }, "shapeStyle": { "enum": [ "calligraphy", "clean" ], "type": [ "string", "null" ] }, "style": { "enum": [ "calligraphy", "clean" ], "type": [ "string", "null" ] }, "subtitle": { "type": [ "string", "null" ] }, "theme": { "additionalProperties": false, "properties": { "palette": { "additionalProperties": false, "properties": { "accent": { "type": [ "string", "null" ] }, "background": { "type": [ "string", "null" ] }, "border": { "type": [ "string", "null" ] }, "nodeColors": { "items": { "type": "string" }, "type": [ "array", "null" ] }, "primary": { "type": [ "string", "null" ] }, "secondary": { "type": [ "string", "null" ] }, "text": { "type": [ "string", "null" ] } }, "required": [ "primary", "secondary", "accent", "background", "text", "border", "nodeColors" ], "type": [ "object", "null" ] }, "paletteSeed": { "type": [ "number", "null" ] }, "preset": { "type": [ "string", "null" ] } }, "required": [ "preset", "palette", "paletteSeed" ], "type": [ "object", "null" ] }, "title": { "type": [ "string", "null" ] }, "type": { "description": "Diagram type. Required when providing structured nodes/edges, optional with prompt.", "enum": [ "flowchart", "mindmap", "block-diagram", "matrix", "timeline", "gantt", "er-diagram", "sequence", "process-flow", "pyramid", "funnel", "radar", "fishbone" ], "type": [ "string", "null" ] }, "xAxisLabel": { "description": "X-axis title for 2D matrix grid (e.g., \"Completeness of Vision\").", "type": [ "string", "null" ] }, "yAxisLabel": { "description": "Y-axis title for 2D matrix grid (e.g., \"Ability to Execute\").", "type": [ "string", "null" ] } }, "required": [ "prompt", "type", "sections", "title", "subtitle", "style", "shapeStyle", "nodes", "edges", "layout", "theme", "defaultLineStyle", "defaultArrowHead", "defaultConnector", "defaultShadow", "defaultShapeLineStyle", "defaultConnectorAnimate", "defaultConnectorAnimateSpeed", "defaultSceneAnimation", "defaultSceneAnimationSpeed", "defaultSceneAnimationLoop", "defaultTitleStyle", "defaultDividerStyle", "defaultBlockArrowSize", "defaultArrowStyle", "ganttHolidays", "pyramid", "funnel", "radar", "iconStyle", "fontFamily", "matrixColumns", "matrixRows", "xAxisLabel", "yAxisLabel", "matrixItemStyle", "metadata" ], "type": "object" }, "name": "get_style_options", "outputSchema": null }, { "description": "Recommends business / strategy / risk frameworks for a stated problem. Powered by the Jeda.ai · Visual AI framework knowledge graph (~2,100 frameworks across 19 categories, edge-curated).\n\nUse when the user describes a business problem (\"customer churn rising\", \"evaluating market entry\", \"need to assess vendor risk\") rather than naming a specific framework. Returns top-N frameworks ranked by fit, each with a concrete reason citing the specific problem signals matched.\n\nInput: just the problem statement is enough. Optional faceted filters (`persona`, `regulation`, `decision_stage`) narrow the candidate set. Set `limit` between 3 and 10 for picker UIs.\n\nPair with `generate_framework_analysis` to actually run a recommended framework against the user's inputs.\n\nExample: { \"problem_statement\": \"We need to decide whether to enter the EU SMB market in Q3\", \"decision_stage\": \"decide\", \"limit\": 5 }", "inputSchema": { "additionalProperties": false, "properties": { "decision_stage": { "description": "Decision-lifecycle stage.", "enum": [ "explore", "diagnose", "decide", "execute", "review" ], "type": "string" }, "limit": { "description": "Number of frameworks to return. Default 5; cap 20.", "maximum": 20, "minimum": 1, "type": "integer" }, "persona": { "description": "Persona slug (e.g. \"ciso\", \"pm\", \"cfo\").", "maxLength": 64, "type": "string" }, "problem_statement": { "description": "Plain-English description of the business problem. 10–2000 chars.", "maxLength": 2000, "minLength": 10, "type": "string" }, "regulation": { "description": "Regulation slug (e.g. \"sox\", \"gdpr\", \"iso-31000\").", "maxLength": 64, "type": "string" } }, "required": [ "problem_statement" ], "type": "object" }, "name": "recommend_framework", "outputSchema": null } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:39a1328444918ee297f101b919bfaa94d80408c9cc4862821208ec630a1fd942 | sha256sum