此 MCP 可以做什么
Creates polished SVG visualizations such as SWOT analyses, flowcharts, mindmaps, and Gantt diagrams.
工具
输入模式
{'type': 'object', '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'], 'properties': {'type': {'enum': ['flowchart', 'mindmap', 'block-diagram', 'matrix', 'timeline', 'gantt', 'er-diagram', 'sequence', 'process-flow', 'pyramid', 'funnel', 'radar', 'fishbone'], 'type': ['string', 'null'], 'description': 'Diagram type. Required when providing structured nodes/edges, optional with prompt.'}, 'edges': {'type': ['array', 'null'], 'items': {'type': 'object', 'required': ['source', 'target', 'label', 'lineStyle', 'connectorType', 'sourceArrow', 'targetArrow', 'style', 'hidden', 'animate', 'animateSpeed', 'blockArrowSize', 'arrowStyle', 'loop'], 'properties': {'loop': {'enum': ['once', '2', '3', '5', 'infinite'], 'type': ['string', 'null'], '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.'}, 'label': {'type': ['string', 'null']}, 'style': {'type': ['object', 'null'], 'required': ['stroke', 'strokeWidth', 'opacity', 'fill'], 'properties': {'fill': {'type': ['string', 'null']}, 'stroke': {'type': ['string', 'null']}, 'opacity': {'type': ['number', 'null'], 'maximum': 1, 'minimum': 0}, 'strokeWidth': {'type': ['number', 'null']}}, 'additionalProperties': False}, 'hidden': {'type': ['boolean', 'null']}, 'source': {'type': 'string'}, 'target': {'type': 'string'}, 'animate': {'enum': ['none', 'flow', 'pulse', 'glow', 'trace', 'wave', 'lightning', 'beat', 'comet'], 'type': ['string', 'null'], '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.'}, 'lineStyle': {'enum': ['calligraphy', 'block-arrow', 'solid', 'dashed', 'dotted', 'dash-dot', 'long-dash'], 'type': ['string', 'null']}, 'arrowStyle': {'enum': ['calligraphy', 'clean', 'block'], 'type': ['string', 'null'], 'description': 'Per-edge connector aesthetic mode (overrides defaultArrowStyle). Options: "calligraphy" | "clean" | "block". Orthogonal to lineStyle (dash pattern); all 15 combinations are valid.'}, 'sourceArrow': {'type': ['string', 'null'], 'description': 'Arrowhead style at the edge source end. Options: open (default) | triangle | diamond | circle | bar | dot | none.'}, 'targetArrow': {'type': ['string', 'null'], 'description': 'Arrowhead style at the edge target end. Options: open (default) | triangle | diamond | circle | bar | dot | none.'}, 'animateSpeed': {'enum': ['slow', 'medium', 'fast'], 'type': ['string', 'null'], 'description': 'Animation speed. Options: slow (3s cycle) | medium (2s, default) | fast (1s).'}, 'connectorType': {'enum': ['straight', 'curved', 'elbow', 'orthogonal', 'bezier'], 'type': ['string', 'null']}, 'blockArrowSize': {'anyOf': [{'enum': ['small', 'medium', 'large'], 'type': 'string'}, {'type': 'number', 'maximum': 60, 'minimum': 1}], '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.'}}, 'additionalProperties': False}}, 'nodes': {'type': ['array', 'null'], 'items': {'type': 'object', 'required': ['id', 'shape', 'text', 'style', 'width', 'height', 'icon', 'iconKeywords', 'hidden', 'group', 'chart', 'kpi', 'animationLoop'], 'properties': {'id': {'type': 'string'}, 'kpi': {'type': ['object', 'null'], 'required': ['value', 'label', 'delta', 'sparkline'], 'properties': {'delta': {'type': ['object', 'null'], 'required': ['text', 'direction', 'invertColor'], 'properties': {'text': {'type': 'string', 'maxLength': 2000}, 'direction': {'enum': ['up', 'down', 'flat'], 'type': ['string', 'null']}, 'invertColor': {'type': ['boolean', 'null']}}, 'additionalProperties': False}, 'label': {'type': ['string', 'null'], 'maxLength': 2000}, 'value': {'type': 'string', 'maxLength': 2000}, 'sparkline': {'type': ['array', 'null'], 'items': {'type': 'number'}, 'maxItems': 512}}, 'additionalProperties': False}, 'icon': {'type': ['string', 'null']}, 'text': {'type': 'string'}, 'chart': {'type': ['object', 'null'], 'required': ['type', 'data', 'series', 'innerRadiusRatio', 'showLabels', 'showValues', 'area'], 'properties': {'area': {'type': ['boolean', 'null']}, 'data': {'type': ['array', 'null'], 'items': {'type': 'object', 'required': ['label', 'value', 'color'], 'properties': {'color': {'type': ['string', 'null'], 'pattern': '^#[0-9a-fA-F]{3}([0-9a-fA-F]{3})?$'}, 'label': {'type': ['string', 'null'], 'maxLength': 2000}, 'value': {'type': 'number'}}, 'additionalProperties': False}, 'maxItems': 64}, 'type': {'enum': ['pie', 'donut', 'bar', 'sparkline', 'line'], 'type': 'string'}, 'series': {'type': ['array', 'null'], 'items': {'type': 'number'}, 'maxItems': 512}, 'showLabels': {'type': ['boolean', 'null']}, 'showValues': {'type': ['boolean', 'null']}, 'innerRadiusRatio': {'type': ['number', 'null'], 'maximum': 0.85, 'minimum': 0.1}}, 'additionalProperties': False}, 'group': {'type': ['string', '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': {'type': ['object', 'null'], 'required': ['fill', 'stroke', 'strokeWidth', 'opacity', 'cornerRadius', 'shadow', 'shadowLevel', 'fontSize', 'fontColor', 'lineStyle', 'iconColor', 'iconColors'], 'properties': {'fill': {'type': ['string', 'null']}, 'shadow': {'type': ['boolean', 'null']}, 'stroke': {'type': ['string', 'null']}, 'opacity': {'type': ['number', 'null'], 'maximum': 1, 'minimum': 0}, 'fontSize': {'type': ['number', 'null']}, 'fontColor': {'type': ['string', 'null']}, 'iconColor': {'type': ['string', 'null']}, 'lineStyle': {'enum': ['solid', 'dashed', 'dotted', 'dash-dot', 'long-dash'], 'type': ['string', 'null'], 'description': 'Per-node outline line style. Excludes "calligraphy" — that mode is set per-spec via `defaultShapeLineStyle: "calligraphy"`, not per-node.'}, 'iconColors': {'type': ['array', 'null'], 'items': {'type': 'string'}}, 'shadowLevel': {'enum': ['sm', 'md', 'lg'], 'type': ['string', 'null']}, 'strokeWidth': {'type': ['number', 'null']}, 'cornerRadius': {'type': ['number', 'null']}}, 'additionalProperties': False}, 'width': {'type': ['number', 'null'], 'minimum': 0}, 'height': {'type': ['number', 'null'], 'minimum': 0}, 'hidden': {'type': ['boolean', 'null']}, 'iconKeywords': {'type': ['array', 'null'], 'items': {'type': 'string'}}, 'animationLoop': {'enum': ['once', '2', '3', '5', 'infinite'], 'type': ['string', 'null']}}, 'additionalProperties': False}, 'description': 'Structured node definitions. Required when not using prompt mode.'}, 'radar': {'type': ['object', 'null'], 'required': ['axes', 'series', 'maxValue', 'rings'], 'properties': {'axes': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 50, 'minItems': 3}, 'rings': {'type': ['integer', 'null'], 'maximum': 10, 'minimum': 1}, 'series': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'values'], 'properties': {'name': {'type': ['string', 'null']}, 'values': {'type': 'array', 'items': {'type': 'number'}, 'maxItems': 50}}, 'additionalProperties': False}, 'maxItems': 10, 'minItems': 1}, 'maxValue': {'type': ['number', 'null'], 'minimum': 1}}, '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.', 'additionalProperties': False}, 'style': {'enum': ['calligraphy', 'clean'], 'type': ['string', 'null']}, 'theme': {'type': ['object', 'null'], 'required': ['preset', 'palette', 'paletteSeed'], 'properties': {'preset': {'type': ['string', 'null']}, 'palette': {'type': ['object', 'null'], 'required': ['primary', 'secondary', 'accent', 'background', 'text', 'border', 'nodeColors'], 'properties': {'text': {'type': ['string', 'null']}, 'accent': {'type': ['string', 'null']}, 'border': {'type': ['string', 'null']}, 'primary': {'type': ['string', 'null']}, 'secondary': {'type': ['string', 'null']}, 'background': {'type': ['string', 'null']}, 'nodeColors': {'type': ['array', 'null'], 'items': {'type': 'string'}}}, 'additionalProperties': False}, 'paletteSeed': {'type': ['number', 'null']}}, 'additionalProperties': False}, 'title': {'type': ['string', 'null']}, 'funnel': {'type': ['object', 'null'], 'required': ['stageLabels', 'stageValues', 'dropOff', 'bottomRatio'], 'properties': {'dropOff': {'type': ['array', 'null'], 'items': {'type': 'string'}, 'maxItems': 50}, 'bottomRatio': {'type': ['number', 'null'], 'maximum': 0.99, 'minimum': 0.05}, 'stageLabels': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 50, 'minItems': 1}, 'stageValues': {'type': ['array', 'null'], 'items': {'type': 'string'}, 'maxItems': 50}}, '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.', 'additionalProperties': False}, 'layout': {'type': ['object', 'null'], 'required': ['direction', 'nodeSpacing', 'rankSpacing', 'padding'], 'properties': {'padding': {'type': ['number', 'null'], 'minimum': 0}, 'direction': {'enum': ['TB', 'LR', 'BT', 'RL', 'radial', 'assorted'], 'type': ['string', 'null']}, 'nodeSpacing': {'type': ['number', 'null'], 'minimum': 0}, 'rankSpacing': {'type': ['number', 'null'], 'minimum': 0}}, 'additionalProperties': False}, 'prompt': {'type': ['string', 'null'], 'maxLength': 8000, '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"'}, 'pyramid': {'type': ['object', 'null'], 'required': ['tierLabels', 'tierValues', 'inverted', 'tipRatio'], 'properties': {'inverted': {'type': ['boolean', 'null']}, 'tipRatio': {'type': ['number', 'null'], 'maximum': 0.95, 'minimum': 0}, 'tierLabels': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 50, 'minItems': 1}, 'tierValues': {'type': ['array', 'null'], 'items': {'type': 'string'}, 'maxItems': 50}}, '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.', 'additionalProperties': False}, 'metadata': {'type': ['object', 'null'], 'required': ['size', 'bestFit', 'targetAspect'], 'properties': {'size': {'type': ['object', 'null'], 'required': ['preset', 'width', 'height', 'aspect', 'bestFit'], 'properties': {'width': {'type': ['integer', 'null'], 'maximum': 4096, 'minimum': 320, '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.'}, 'aspect': {'type': ['string', 'null'], 'pattern': '^\\d+(\\.\\d+)?:\\d+(\\.\\d+)?$', '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).'}, 'height': {'type': ['integer', 'null'], 'maximum': 4096, 'minimum': 320, 'description': 'Custom export-target height in pixels. 320..4096. Used with `width` for full custom dims, or with `aspect` for aspect-driven sizing.'}, 'preset': {'type': ['string', 'null'], 'maxLength': 64, '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).'}, 'bestFit': {'type': ['boolean', 'null'], '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.'}}, '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.', 'additionalProperties': False}, 'bestFit': {'type': ['boolean', 'null'], '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.'}, 'targetAspect': {'type': ['string', 'null'], 'maxLength': 16, '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.'}}, '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.', 'additionalProperties': False}, 'sections': {'type': ['array', 'null'], 'items': {'type': 'object', 'required': ['id', 'title', 'subtitle', 'items', 'icons', 'itemIds', 'itemShapes', 'itemBackgroundColors', 'itemHeatIntensities', 'sectionBackgroundColor', 'sectionHeatIntensity', 'row', 'col'], 'properties': {'id': {'type': ['string', 'null']}, 'col': {'type': ['integer', 'null'], 'minimum': 0}, 'row': {'type': ['integer', 'null'], 'minimum': 0}, 'icons': {'type': ['array', 'null'], 'items': {'type': 'string'}}, 'items': {'type': 'array', 'items': {'type': 'string'}}, 'title': {'type': 'string'}, 'itemIds': {'type': ['array', 'null'], 'items': {'type': 'string'}}, 'subtitle': {'type': ['string', 'null']}, 'itemShapes': {'type': ['array', 'null'], 'items': {'type': 'string'}}, 'itemHeatIntensities': {'type': ['array', 'null'], 'items': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'itemBackgroundColors': {'type': ['array', 'null'], 'items': {'type': 'string', 'maxLength': 40}}, 'sectionHeatIntensity': {'type': ['number', 'null'], 'maximum': 1, 'minimum': 0}, 'sectionBackgroundColor': {'type': ['string', 'null'], 'maxLength': 40}}, 'additionalProperties': False}, 'description': 'Matrix sections. Each section has a title, optional subtitle, and items. Used with type="matrix".'}, 'subtitle': {'type': ['string', 'null']}, 'iconStyle': {'type': ['string', 'null'], '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.'}, 'fontFamily': {'type': ['string', 'null'], '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).'}, 'matrixRows': {'type': ['array', 'null'], 'items': {'type': 'string'}, 'description': 'Row header labels for 2D matrix grid (e.g., ["High Execution", "Low Execution"]).'}, 'shapeStyle': {'enum': ['calligraphy', 'clean'], 'type': ['string', 'null']}, 'xAxisLabel': {'type': ['string', 'null'], 'description': 'X-axis title for 2D matrix grid (e.g., "Completeness of Vision").'}, 'yAxisLabel': {'type': ['string', 'null'], 'description': 'Y-axis title for 2D matrix grid (e.g., "Ability to Execute").'}, 'defaultShadow': {'enum': ['none', 'sm', 'md', 'lg'], 'type': ['string', 'null'], 'description': 'Default shadow level applied to all nodes.'}, 'ganttHolidays': {'type': ['array', 'null'], 'items': {'type': 'string', 'maxLength': 32}, 'maxItems': 200, '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.'}, 'matrixColumns': {'type': ['array', 'null'], 'items': {'type': 'string'}, 'description': 'Column header labels for 2D matrix grid (e.g., ["High Vision", "Low Vision"]).'}, 'matrixItemStyle': {'enum': ['card', 'dot', 'text', 'badge'], 'type': ['string', 'null'], 'description': 'Item display style for matrix diagrams. "card" (default) = rectangular cards, "dot" = scatter points, "text" = plain text, "badge" = compact pills.'}, 'defaultArrowHead': {'type': ['string', 'null'], 'description': "Default arrowhead style applied to all edges that don't specify their own."}, 'defaultConnector': {'enum': ['straight', 'curved', 'elbow', 'orthogonal', 'bezier'], 'type': ['string', 'null'], 'description': "Default connector type applied to all edges that don't specify their own."}, 'defaultLineStyle': {'enum': ['calligraphy', 'block-arrow', 'solid', 'dashed', 'dotted', 'dash-dot', 'long-dash'], 'type': ['string', 'null'], '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.'}, 'defaultArrowStyle': {'enum': ['calligraphy', 'clean', 'block'], 'type': ['string', 'null'], '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.'}, 'defaultTitleStyle': {'enum': ['plain', 'accent-bar', 'underline', 'boxed'], 'type': ['string', 'null'], '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.'}, 'defaultDividerStyle': {'enum': ['subtle', 'normal', 'bold', 'dashed', 'dotted', 'none'], 'type': ['string', 'null'], '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").'}, 'defaultBlockArrowSize': {'anyOf': [{'enum': ['small', 'medium', 'large'], 'type': 'string'}, {'type': 'number', 'maximum': 60, 'minimum': 1}], '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.'}, 'defaultSceneAnimation': {'enum': ['none', 'fade', 'zoom', 'zoom-pan', 'flow', 'wave-sweep', 'build-up', 'flow-zoom-pan'], 'type': ['string', 'null'], '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.'}, 'defaultShapeLineStyle': {'enum': ['calligraphy', 'block-arrow', 'solid', 'dashed', 'dotted', 'dash-dot', 'long-dash'], 'type': ['string', 'null'], '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.'}, 'defaultConnectorAnimate': {'enum': ['none', 'flow', 'pulse', 'glow', 'trace', 'wave', 'lightning', 'beat', 'comet'], 'type': ['string', 'null'], '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.'}, 'defaultSceneAnimationLoop': {'enum': ['once', '2', '3', '5', 'infinite'], 'type': ['string', 'null'], '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.'}, 'defaultSceneAnimationSpeed': {'enum': ['slow', 'medium', 'fast'], 'type': ['string', 'null'], 'description': 'Scene animation speed. Options: slow (1.5× duration) | medium (default) | fast (0.6× duration).'}, 'defaultConnectorAnimateSpeed': {'enum': ['slow', 'medium', 'fast'], 'type': ['string', 'null'], 'description': 'Animation speed when defaultConnectorAnimate is set. Options: slow (3s cycle) | medium (2s, default) | fast (1s).'}}, 'additionalProperties': False}
输入模式
{'type': 'object', 'required': ['framework_id'], 'properties': {'theme': {'type': 'object', 'required': ['preset'], 'properties': {'preset': {'enum': ['pastel', 'corporate', 'gradient', 'dark', 'blueprint', 'playful', 'vibrant', 'monochrome'], 'type': ['string', 'null']}}, 'description': 'Theme preset for the SVG render. Default: pastel.', 'additionalProperties': False}, 'raw_prompt': {'type': 'string', 'maxLength': 8000, 'description': 'Optional free-text prompt that REPLACES the auto-derived prompt.'}, 'user_inputs': {'type': 'object', 'description': 'Object whose keys match the framework user-input form fields.', 'additionalProperties': {}}, 'framework_id': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'Namespaced framework slug (e.g. "cms_swot-analysis"). Get one from `recommend_framework` -- bare slugs like "swot-analysis" are not valid ids.'}}, 'additionalProperties': False}
输入模式
{'type': 'object', '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'], 'properties': {'type': {'enum': ['flowchart', 'mindmap', 'block-diagram', 'matrix', 'timeline', 'gantt', 'er-diagram', 'sequence', 'process-flow', 'pyramid', 'funnel', 'radar', 'fishbone'], 'type': ['string', 'null'], 'description': 'Diagram type. Required when providing structured nodes/edges, optional with prompt.'}, 'edges': {'type': ['array', 'null'], 'items': {'type': 'object', 'required': ['source', 'target', 'label', 'lineStyle', 'connectorType', 'sourceArrow', 'targetArrow', 'style', 'hidden', 'animate', 'animateSpeed', 'blockArrowSize', 'arrowStyle', 'loop'], 'properties': {'loop': {'enum': ['once', '2', '3', '5', 'infinite'], 'type': ['string', 'null'], '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.'}, 'label': {'type': ['string', 'null']}, 'style': {'type': ['object', 'null'], 'required': ['stroke', 'strokeWidth', 'opacity', 'fill'], 'properties': {'fill': {'type': ['string', 'null']}, 'stroke': {'type': ['string', 'null']}, 'opacity': {'type': ['number', 'null'], 'maximum': 1, 'minimum': 0}, 'strokeWidth': {'type': ['number', 'null']}}, 'additionalProperties': False}, 'hidden': {'type': ['boolean', 'null']}, 'source': {'type': 'string'}, 'target': {'type': 'string'}, 'animate': {'enum': ['none', 'flow', 'pulse', 'glow', 'trace', 'wave', 'lightning', 'beat', 'comet'], 'type': ['string', 'null'], '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.'}, 'lineStyle': {'enum': ['calligraphy', 'block-arrow', 'solid', 'dashed', 'dotted', 'dash-dot', 'long-dash'], 'type': ['string', 'null']}, 'arrowStyle': {'enum': ['calligraphy', 'clean', 'block'], 'type': ['string', 'null'], 'description': 'Per-edge connector aesthetic mode (overrides defaultArrowStyle). Options: "calligraphy" | "clean" | "block". Orthogonal to lineStyle (dash pattern); all 15 combinations are valid.'}, 'sourceArrow': {'type': ['string', 'null'], 'description': 'Arrowhead style at the edge source end. Options: open (default) | triangle | diamond | circle | bar | dot | none.'}, 'targetArrow': {'type': ['string', 'null'], 'description': 'Arrowhead style at the edge target end. Options: open (default) | triangle | diamond | circle | bar | dot | none.'}, 'animateSpeed': {'enum': ['slow', 'medium', 'fast'], 'type': ['string', 'null'], 'description': 'Animation speed. Options: slow (3s cycle) | medium (2s, default) | fast (1s).'}, 'connectorType': {'enum': ['straight', 'curved', 'elbow', 'orthogonal', 'bezier'], 'type': ['string', 'null']}, 'blockArrowSize': {'anyOf': [{'enum': ['small', 'medium', 'large'], 'type': 'string'}, {'type': 'number', 'maximum': 60, 'minimum': 1}], '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.'}}, 'additionalProperties': False}}, 'nodes': {'type': ['array', 'null'], 'items': {'type': 'object', 'required': ['id', 'shape', 'text', 'style', 'width', 'height', 'icon', 'iconKeywords', 'hidden', 'group', 'chart', 'kpi', 'animationLoop'], 'properties': {'id': {'type': 'string'}, 'kpi': {'type': ['object', 'null'], 'required': ['value', 'label', 'delta', 'sparkline'], 'properties': {'delta': {'type': ['object', 'null'], 'required': ['text', 'direction', 'invertColor'], 'properties': {'text': {'type': 'string', 'maxLength': 2000}, 'direction': {'enum': ['up', 'down', 'flat'], 'type': ['string', 'null']}, 'invertColor': {'type': ['boolean', 'null']}}, 'additionalProperties': False}, 'label': {'type': ['string', 'null'], 'maxLength': 2000}, 'value': {'type': 'string', 'maxLength': 2000}, 'sparkline': {'type': ['array', 'null'], 'items': {'type': 'number'}, 'maxItems': 512}}, 'additionalProperties': False}, 'icon': {'type': ['string', 'null']}, 'text': {'type': 'string'}, 'chart': {'type': ['object', 'null'], 'required': ['type', 'data', 'series', 'innerRadiusRatio', 'showLabels', 'showValues', 'area'], 'properties': {'area': {'type': ['boolean', 'null']}, 'data': {'type': ['array', 'null'], 'items': {'type': 'object', 'required': ['label', 'value', 'color'], 'properties': {'color': {'type': ['string', 'null'], 'pattern': '^#[0-9a-fA-F]{3}([0-9a-fA-F]{3})?$'}, 'label': {'type': ['string', 'null'], 'maxLength': 2000}, 'value': {'type': 'number'}}, 'additionalProperties': False}, 'maxItems': 64}, 'type': {'enum': ['pie', 'donut', 'bar', 'sparkline', 'line'], 'type': 'string'}, 'series': {'type': ['array', 'null'], 'items': {'type': 'number'}, 'maxItems': 512}, 'showLabels': {'type': ['boolean', 'null']}, 'showValues': {'type': ['boolean', 'null']}, 'innerRadiusRatio': {'type': ['number', 'null'], 'maximum': 0.85, 'minimum': 0.1}}, 'additionalProperties': False}, 'group': {'type': ['string', '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': {'type': ['object', 'null'], 'required': ['fill', 'stroke', 'strokeWidth', 'opacity', 'cornerRadius', 'shadow', 'shadowLevel', 'fontSize', 'fontColor', 'lineStyle', 'iconColor', 'iconColors'], 'properties': {'fill': {'type': ['string', 'null']}, 'shadow': {'type': ['boolean', 'null']}, 'stroke': {'type': ['string', 'null']}, 'opacity': {'type': ['number', 'null'], 'maximum': 1, 'minimum': 0}, 'fontSize': {'type': ['number', 'null']}, 'fontColor': {'type': ['string', 'null']}, 'iconColor': {'type': ['string', 'null']}, 'lineStyle': {'enum': ['solid', 'dashed', 'dotted', 'dash-dot', 'long-dash'], 'type': ['string', 'null'], 'description': 'Per-node outline line style. Excludes "calligraphy" — that mode is set per-spec via `defaultShapeLineStyle: "calligraphy"`, not per-node.'}, 'iconColors': {'type': ['array', 'null'], 'items': {'type': 'string'}}, 'shadowLevel': {'enum': ['sm', 'md', 'lg'], 'type': ['string', 'null']}, 'strokeWidth': {'type': ['number', 'null']}, 'cornerRadius': {'type': ['number', 'null']}}, 'additionalProperties': False}, 'width': {'type': ['number', 'null'], 'minimum': 0}, 'height': {'type': ['number', 'null'], 'minimum': 0}, 'hidden': {'type': ['boolean', 'null']}, 'iconKeywords': {'type': ['array', 'null'], 'items': {'type': 'string'}}, 'animationLoop': {'enum': ['once', '2', '3', '5', 'infinite'], 'type': ['string', 'null']}}, 'additionalProperties': False}, 'description': 'Structured node definitions. Required when not using prompt mode.'}, 'radar': {'type': ['object', 'null'], 'required': ['axes', 'series', 'maxValue', 'rings'], 'properties': {'axes': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 50, 'minItems': 3}, 'rings': {'type': ['integer', 'null'], 'maximum': 10, 'minimum': 1}, 'series': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'values'], 'properties': {'name': {'type': ['string', 'null']}, 'values': {'type': 'array', 'items': {'type': 'number'}, 'maxItems': 50}}, 'additionalProperties': False}, 'maxItems': 10, 'minItems': 1}, 'maxValue': {'type': ['number', 'null'], 'minimum': 1}}, '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.', 'additionalProperties': False}, 'style': {'enum': ['calligraphy', 'clean'], 'type': ['string', 'null']}, 'theme': {'type': ['object', 'null'], 'required': ['preset', 'palette', 'paletteSeed'], 'properties': {'preset': {'type': ['string', 'null']}, 'palette': {'type': ['object', 'null'], 'required': ['primary', 'secondary', 'accent', 'background', 'text', 'border', 'nodeColors'], 'properties': {'text': {'type': ['string', 'null']}, 'accent': {'type': ['string', 'null']}, 'border': {'type': ['string', 'null']}, 'primary': {'type': ['string', 'null']}, 'secondary': {'type': ['string', 'null']}, 'background': {'type': ['string', 'null']}, 'nodeColors': {'type': ['array', 'null'], 'items': {'type': 'string'}}}, 'additionalProperties': False}, 'paletteSeed': {'type': ['number', 'null']}}, 'additionalProperties': False}, 'title': {'type': ['string', 'null']}, 'funnel': {'type': ['object', 'null'], 'required': ['stageLabels', 'stageValues', 'dropOff', 'bottomRatio'], 'properties': {'dropOff': {'type': ['array', 'null'], 'items': {'type': 'string'}, 'maxItems': 50}, 'bottomRatio': {'type': ['number', 'null'], 'maximum': 0.99, 'minimum': 0.05}, 'stageLabels': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 50, 'minItems': 1}, 'stageValues': {'type': ['array', 'null'], 'items': {'type': 'string'}, 'maxItems': 50}}, '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.', 'additionalProperties': False}, 'layout': {'type': ['object', 'null'], 'required': ['direction', 'nodeSpacing', 'rankSpacing', 'padding'], 'properties': {'padding': {'type': ['number', 'null'], 'minimum': 0}, 'direction': {'enum': ['TB', 'LR', 'BT', 'RL', 'radial', 'assorted'], 'type': ['string', 'null']}, 'nodeSpacing': {'type': ['number', 'null'], 'minimum': 0}, 'rankSpacing': {'type': ['number', 'null'], 'minimum': 0}}, 'additionalProperties': False}, 'prompt': {'type': ['string', 'null'], 'maxLength': 8000, '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"'}, 'pyramid': {'type': ['object', 'null'], 'required': ['tierLabels', 'tierValues', 'inverted', 'tipRatio'], 'properties': {'inverted': {'type': ['boolean', 'null']}, 'tipRatio': {'type': ['number', 'null'], 'maximum': 0.95, 'minimum': 0}, 'tierLabels': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 50, 'minItems': 1}, 'tierValues': {'type': ['array', 'null'], 'items': {'type': 'string'}, 'maxItems': 50}}, '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.', 'additionalProperties': False}, 'metadata': {'type': ['object', 'null'], 'required': ['size', 'bestFit', 'targetAspect'], 'properties': {'size': {'type': ['object', 'null'], 'required': ['preset', 'width', 'height', 'aspect', 'bestFit'], 'properties': {'width': {'type': ['integer', 'null'], 'maximum': 4096, 'minimum': 320, '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.'}, 'aspect': {'type': ['string', 'null'], 'pattern': '^\\d+(\\.\\d+)?:\\d+(\\.\\d+)?$', '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).'}, 'height': {'type': ['integer', 'null'], 'maximum': 4096, 'minimum': 320, 'description': 'Custom export-target height in pixels. 320..4096. Used with `width` for full custom dims, or with `aspect` for aspect-driven sizing.'}, 'preset': {'type': ['string', 'null'], 'maxLength': 64, '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).'}, 'bestFit': {'type': ['boolean', 'null'], '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.'}}, '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.', 'additionalProperties': False}, 'bestFit': {'type': ['boolean', 'null'], '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.'}, 'targetAspect': {'type': ['string', 'null'], 'maxLength': 16, '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.'}}, '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.', 'additionalProperties': False}, 'sections': {'type': ['array', 'null'], 'items': {'type': 'object', 'required': ['id', 'title', 'subtitle', 'items', 'icons', 'itemIds', 'itemShapes', 'itemBackgroundColors', 'itemHeatIntensities', 'sectionBackgroundColor', 'sectionHeatIntensity', 'row', 'col'], 'properties': {'id': {'type': ['string', 'null']}, 'col': {'type': ['integer', 'null'], 'minimum': 0}, 'row': {'type': ['integer', 'null'], 'minimum': 0}, 'icons': {'type': ['array', 'null'], 'items': {'type': 'string'}}, 'items': {'type': 'array', 'items': {'type': 'string'}}, 'title': {'type': 'string'}, 'itemIds': {'type': ['array', 'null'], 'items': {'type': 'string'}}, 'subtitle': {'type': ['string', 'null']}, 'itemShapes': {'type': ['array', 'null'], 'items': {'type': 'string'}}, 'itemHeatIntensities': {'type': ['array', 'null'], 'items': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'itemBackgroundColors': {'type': ['array', 'null'], 'items': {'type': 'string', 'maxLength': 40}}, 'sectionHeatIntensity': {'type': ['number', 'null'], 'maximum': 1, 'minimum': 0}, 'sectionBackgroundColor': {'type': ['string', 'null'], 'maxLength': 40}}, 'additionalProperties': False}, 'description': 'Matrix sections. Each section has a title, optional subtitle, and items. Used with type="matrix".'}, 'subtitle': {'type': ['string', 'null']}, 'iconStyle': {'type': ['string', 'null'], '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.'}, 'fontFamily': {'type': ['string', 'null'], '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).'}, 'matrixRows': {'type': ['array', 'null'], 'items': {'type': 'string'}, 'description': 'Row header labels for 2D matrix grid (e.g., ["High Execution", "Low Execution"]).'}, 'shapeStyle': {'enum': ['calligraphy', 'clean'], 'type': ['string', 'null']}, 'xAxisLabel': {'type': ['string', 'null'], 'description': 'X-axis title for 2D matrix grid (e.g., "Completeness of Vision").'}, 'yAxisLabel': {'type': ['string', 'null'], 'description': 'Y-axis title for 2D matrix grid (e.g., "Ability to Execute").'}, 'defaultShadow': {'enum': ['none', 'sm', 'md', 'lg'], 'type': ['string', 'null'], 'description': 'Default shadow level applied to all nodes.'}, 'ganttHolidays': {'type': ['array', 'null'], 'items': {'type': 'string', 'maxLength': 32}, 'maxItems': 200, '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.'}, 'matrixColumns': {'type': ['array', 'null'], 'items': {'type': 'string'}, 'description': 'Column header labels for 2D matrix grid (e.g., ["High Vision", "Low Vision"]).'}, 'matrixItemStyle': {'enum': ['card', 'dot', 'text', 'badge'], 'type': ['string', 'null'], 'description': 'Item display style for matrix diagrams. "card" (default) = rectangular cards, "dot" = scatter points, "text" = plain text, "badge" = compact pills.'}, 'defaultArrowHead': {'type': ['string', 'null'], 'description': "Default arrowhead style applied to all edges that don't specify their own."}, 'defaultConnector': {'enum': ['straight', 'curved', 'elbow', 'orthogonal', 'bezier'], 'type': ['string', 'null'], 'description': "Default connector type applied to all edges that don't specify their own."}, 'defaultLineStyle': {'enum': ['calligraphy', 'block-arrow', 'solid', 'dashed', 'dotted', 'dash-dot', 'long-dash'], 'type': ['string', 'null'], '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.'}, 'defaultArrowStyle': {'enum': ['calligraphy', 'clean', 'block'], 'type': ['string', 'null'], '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.'}, 'defaultTitleStyle': {'enum': ['plain', 'accent-bar', 'underline', 'boxed'], 'type': ['string', 'null'], '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.'}, 'defaultDividerStyle': {'enum': ['subtle', 'normal', 'bold', 'dashed', 'dotted', 'none'], 'type': ['string', 'null'], '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").'}, 'defaultBlockArrowSize': {'anyOf': [{'enum': ['small', 'medium', 'large'], 'type': 'string'}, {'type': 'number', 'maximum': 60, 'minimum': 1}], '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.'}, 'defaultSceneAnimation': {'enum': ['none', 'fade', 'zoom', 'zoom-pan', 'flow', 'wave-sweep', 'build-up', 'flow-zoom-pan'], 'type': ['string', 'null'], '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.'}, 'defaultShapeLineStyle': {'enum': ['calligraphy', 'block-arrow', 'solid', 'dashed', 'dotted', 'dash-dot', 'long-dash'], 'type': ['string', 'null'], '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.'}, 'defaultConnectorAnimate': {'enum': ['none', 'flow', 'pulse', 'glow', 'trace', 'wave', 'lightning', 'beat', 'comet'], 'type': ['string', 'null'], '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.'}, 'defaultSceneAnimationLoop': {'enum': ['once', '2', '3', '5', 'infinite'], 'type': ['string', 'null'], '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.'}, 'defaultSceneAnimationSpeed': {'enum': ['slow', 'medium', 'fast'], 'type': ['string', 'null'], 'description': 'Scene animation speed. Options: slow (1.5× duration) | medium (default) | fast (0.6× duration).'}, 'defaultConnectorAnimateSpeed': {'enum': ['slow', 'medium', 'fast'], 'type': ['string', 'null'], 'description': 'Animation speed when defaultConnectorAnimate is set. Options: slow (3s cycle) | medium (2s, default) | fast (1s).'}}, 'additionalProperties': False}
输入模式
{'type': 'object', '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'], 'properties': {'type': {'enum': ['flowchart', 'mindmap', 'block-diagram', 'matrix', 'timeline', 'gantt', 'er-diagram', 'sequence', 'process-flow', 'pyramid', 'funnel', 'radar', 'fishbone'], 'type': ['string', 'null'], 'description': 'Diagram type. Required when providing structured nodes/edges, optional with prompt.'}, 'edges': {'type': ['array', 'null'], 'items': {'type': 'object', 'required': ['source', 'target', 'label', 'lineStyle', 'connectorType', 'sourceArrow', 'targetArrow', 'style', 'hidden', 'animate', 'animateSpeed', 'blockArrowSize', 'arrowStyle', 'loop'], 'properties': {'loop': {'enum': ['once', '2', '3', '5', 'infinite'], 'type': ['string', 'null'], '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.'}, 'label': {'type': ['string', 'null']}, 'style': {'type': ['object', 'null'], 'required': ['stroke', 'strokeWidth', 'opacity', 'fill'], 'properties': {'fill': {'type': ['string', 'null']}, 'stroke': {'type': ['string', 'null']}, 'opacity': {'type': ['number', 'null'], 'maximum': 1, 'minimum': 0}, 'strokeWidth': {'type': ['number', 'null']}}, 'additionalProperties': False}, 'hidden': {'type': ['boolean', 'null']}, 'source': {'type': 'string'}, 'target': {'type': 'string'}, 'animate': {'enum': ['none', 'flow', 'pulse', 'glow', 'trace', 'wave', 'lightning', 'beat', 'comet'], 'type': ['string', 'null'], '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.'}, 'lineStyle': {'enum': ['calligraphy', 'block-arrow', 'solid', 'dashed', 'dotted', 'dash-dot', 'long-dash'], 'type': ['string', 'null']}, 'arrowStyle': {'enum': ['calligraphy', 'clean', 'block'], 'type': ['string', 'null'], 'description': 'Per-edge connector aesthetic mode (overrides defaultArrowStyle). Options: "calligraphy" | "clean" | "block". Orthogonal to lineStyle (dash pattern); all 15 combinations are valid.'}, 'sourceArrow': {'type': ['string', 'null'], 'description': 'Arrowhead style at the edge source end. Options: open (default) | triangle | diamond | circle | bar | dot | none.'}, 'targetArrow': {'type': ['string', 'null'], 'description': 'Arrowhead style at the edge target end. Options: open (default) | triangle | diamond | circle | bar | dot | none.'}, 'animateSpeed': {'enum': ['slow', 'medium', 'fast'], 'type': ['string', 'null'], 'description': 'Animation speed. Options: slow (3s cycle) | medium (2s, default) | fast (1s).'}, 'connectorType': {'enum': ['straight', 'curved', 'elbow', 'orthogonal', 'bezier'], 'type': ['string', 'null']}, 'blockArrowSize': {'anyOf': [{'enum': ['small', 'medium', 'large'], 'type': 'string'}, {'type': 'number', 'maximum': 60, 'minimum': 1}], '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.'}}, 'additionalProperties': False}}, 'nodes': {'type': ['array', 'null'], 'items': {'type': 'object', 'required': ['id', 'shape', 'text', 'style', 'width', 'height', 'icon', 'iconKeywords', 'hidden', 'group', 'chart', 'kpi', 'animationLoop'], 'properties': {'id': {'type': 'string'}, 'kpi': {'type': ['object', 'null'], 'required': ['value', 'label', 'delta', 'sparkline'], 'properties': {'delta': {'type': ['object', 'null'], 'required': ['text', 'direction', 'invertColor'], 'properties': {'text': {'type': 'string', 'maxLength': 2000}, 'direction': {'enum': ['up', 'down', 'flat'], 'type': ['string', 'null']}, 'invertColor': {'type': ['boolean', 'null']}}, 'additionalProperties': False}, 'label': {'type': ['string', 'null'], 'maxLength': 2000}, 'value': {'type': 'string', 'maxLength': 2000}, 'sparkline': {'type': ['array', 'null'], 'items': {'type': 'number'}, 'maxItems': 512}}, 'additionalProperties': False}, 'icon': {'type': ['string', 'null']}, 'text': {'type': 'string'}, 'chart': {'type': ['object', 'null'], 'required': ['type', 'data', 'series', 'innerRadiusRatio', 'showLabels', 'showValues', 'area'], 'properties': {'area': {'type': ['boolean', 'null']}, 'data': {'type': ['array', 'null'], 'items': {'type': 'object', 'required': ['label', 'value', 'color'], 'properties': {'color': {'type': ['string', 'null'], 'pattern': '^#[0-9a-fA-F]{3}([0-9a-fA-F]{3})?$'}, 'label': {'type': ['string', 'null'], 'maxLength': 2000}, 'value': {'type': 'number'}}, 'additionalProperties': False}, 'maxItems': 64}, 'type': {'enum': ['pie', 'donut', 'bar', 'sparkline', 'line'], 'type': 'string'}, 'series': {'type': ['array', 'null'], 'items': {'type': 'number'}, 'maxItems': 512}, 'showLabels': {'type': ['boolean', 'null']}, 'showValues': {'type': ['boolean', 'null']}, 'innerRadiusRatio': {'type': ['number', 'null'], 'maximum': 0.85, 'minimum': 0.1}}, 'additionalProperties': False}, 'group': {'type': ['string', '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': {'type': ['object', 'null'], 'required': ['fill', 'stroke', 'strokeWidth', 'opacity', 'cornerRadius', 'shadow', 'shadowLevel', 'fontSize', 'fontColor', 'lineStyle', 'iconColor', 'iconColors'], 'properties': {'fill': {'type': ['string', 'null']}, 'shadow': {'type': ['boolean', 'null']}, 'stroke': {'type': ['string', 'null']}, 'opacity': {'type': ['number', 'null'], 'maximum': 1, 'minimum': 0}, 'fontSize': {'type': ['number', 'null']}, 'fontColor': {'type': ['string', 'null']}, 'iconColor': {'type': ['string', 'null']}, 'lineStyle': {'enum': ['solid', 'dashed', 'dotted', 'dash-dot', 'long-dash'], 'type': ['string', 'null'], 'description': 'Per-node outline line style. Excludes "calligraphy" — that mode is set per-spec via `defaultShapeLineStyle: "calligraphy"`, not per-node.'}, 'iconColors': {'type': ['array', 'null'], 'items': {'type': 'string'}}, 'shadowLevel': {'enum': ['sm', 'md', 'lg'], 'type': ['string', 'null']}, 'strokeWidth': {'type': ['number', 'null']}, 'cornerRadius': {'type': ['number', 'null']}}, 'additionalProperties': False}, 'width': {'type': ['number', 'null'], 'minimum': 0}, 'height': {'type': ['number', 'null'], 'minimum': 0}, 'hidden': {'type': ['boolean', 'null']}, 'iconKeywords': {'type': ['array', 'null'], 'items': {'type': 'string'}}, 'animationLoop': {'enum': ['once', '2', '3', '5', 'infinite'], 'type': ['string', 'null']}}, 'additionalProperties': False}, 'description': 'Structured node definitions. Required when not using prompt mode.'}, 'radar': {'type': ['object', 'null'], 'required': ['axes', 'series', 'maxValue', 'rings'], 'properties': {'axes': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 50, 'minItems': 3}, 'rings': {'type': ['integer', 'null'], 'maximum': 10, 'minimum': 1}, 'series': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'values'], 'properties': {'name': {'type': ['string', 'null']}, 'values': {'type': 'array', 'items': {'type': 'number'}, 'maxItems': 50}}, 'additionalProperties': False}, 'maxItems': 10, 'minItems': 1}, 'maxValue': {'type': ['number', 'null'], 'minimum': 1}}, '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.', 'additionalProperties': False}, 'style': {'enum': ['calligraphy', 'clean'], 'type': ['string', 'null']}, 'theme': {'type': ['object', 'null'], 'required': ['preset', 'palette', 'paletteSeed'], 'properties': {'preset': {'type': ['string', 'null']}, 'palette': {'type': ['object', 'null'], 'required': ['primary', 'secondary', 'accent', 'background', 'text', 'border', 'nodeColors'], 'properties': {'text': {'type': ['string', 'null']}, 'accent': {'type': ['string', 'null']}, 'border': {'type': ['string', 'null']}, 'primary': {'type': ['string', 'null']}, 'secondary': {'type': ['string', 'null']}, 'background': {'type': ['string', 'null']}, 'nodeColors': {'type': ['array', 'null'], 'items': {'type': 'string'}}}, 'additionalProperties': False}, 'paletteSeed': {'type': ['number', 'null']}}, 'additionalProperties': False}, 'title': {'type': ['string', 'null']}, 'funnel': {'type': ['object', 'null'], 'required': ['stageLabels', 'stageValues', 'dropOff', 'bottomRatio'], 'properties': {'dropOff': {'type': ['array', 'null'], 'items': {'type': 'string'}, 'maxItems': 50}, 'bottomRatio': {'type': ['number', 'null'], 'maximum': 0.99, 'minimum': 0.05}, 'stageLabels': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 50, 'minItems': 1}, 'stageValues': {'type': ['array', 'null'], 'items': {'type': 'string'}, 'maxItems': 50}}, '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.', 'additionalProperties': False}, 'layout': {'type': ['object', 'null'], 'required': ['direction', 'nodeSpacing', 'rankSpacing', 'padding'], 'properties': {'padding': {'type': ['number', 'null'], 'minimum': 0}, 'direction': {'enum': ['TB', 'LR', 'BT', 'RL', 'radial', 'assorted'], 'type': ['string', 'null']}, 'nodeSpacing': {'type': ['number', 'null'], 'minimum': 0}, 'rankSpacing': {'type': ['number', 'null'], 'minimum': 0}}, 'additionalProperties': False}, 'prompt': {'type': ['string', 'null'], 'maxLength': 8000, '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"'}, 'pyramid': {'type': ['object', 'null'], 'required': ['tierLabels', 'tierValues', 'inverted', 'tipRatio'], 'properties': {'inverted': {'type': ['boolean', 'null']}, 'tipRatio': {'type': ['number', 'null'], 'maximum': 0.95, 'minimum': 0}, 'tierLabels': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 50, 'minItems': 1}, 'tierValues': {'type': ['array', 'null'], 'items': {'type': 'string'}, 'maxItems': 50}}, '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.', 'additionalProperties': False}, 'metadata': {'type': ['object', 'null'], 'required': ['size', 'bestFit', 'targetAspect'], 'properties': {'size': {'type': ['object', 'null'], 'required': ['preset', 'width', 'height', 'aspect', 'bestFit'], 'properties': {'width': {'type': ['integer', 'null'], 'maximum': 4096, 'minimum': 320, '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.'}, 'aspect': {'type': ['string', 'null'], 'pattern': '^\\d+(\\.\\d+)?:\\d+(\\.\\d+)?$', '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).'}, 'height': {'type': ['integer', 'null'], 'maximum': 4096, 'minimum': 320, 'description': 'Custom export-target height in pixels. 320..4096. Used with `width` for full custom dims, or with `aspect` for aspect-driven sizing.'}, 'preset': {'type': ['string', 'null'], 'maxLength': 64, '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).'}, 'bestFit': {'type': ['boolean', 'null'], '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.'}}, '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.', 'additionalProperties': False}, 'bestFit': {'type': ['boolean', 'null'], '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.'}, 'targetAspect': {'type': ['string', 'null'], 'maxLength': 16, '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.'}}, '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.', 'additionalProperties': False}, 'sections': {'type': ['array', 'null'], 'items': {'type': 'object', 'required': ['id', 'title', 'subtitle', 'items', 'icons', 'itemIds', 'itemShapes', 'itemBackgroundColors', 'itemHeatIntensities', 'sectionBackgroundColor', 'sectionHeatIntensity', 'row', 'col'], 'properties': {'id': {'type': ['string', 'null']}, 'col': {'type': ['integer', 'null'], 'minimum': 0}, 'row': {'type': ['integer', 'null'], 'minimum': 0}, 'icons': {'type': ['array', 'null'], 'items': {'type': 'string'}}, 'items': {'type': 'array', 'items': {'type': 'string'}}, 'title': {'type': 'string'}, 'itemIds': {'type': ['array', 'null'], 'items': {'type': 'string'}}, 'subtitle': {'type': ['string', 'null']}, 'itemShapes': {'type': ['array', 'null'], 'items': {'type': 'string'}}, 'itemHeatIntensities': {'type': ['array', 'null'], 'items': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'itemBackgroundColors': {'type': ['array', 'null'], 'items': {'type': 'string', 'maxLength': 40}}, 'sectionHeatIntensity': {'type': ['number', 'null'], 'maximum': 1, 'minimum': 0}, 'sectionBackgroundColor': {'type': ['string', 'null'], 'maxLength': 40}}, 'additionalProperties': False}, 'description': 'Matrix sections. Each section has a title, optional subtitle, and items. Used with type="matrix".'}, 'subtitle': {'type': ['string', 'null']}, 'iconStyle': {'type': ['string', 'null'], '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.'}, 'fontFamily': {'type': ['string', 'null'], '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).'}, 'matrixRows': {'type': ['array', 'null'], 'items': {'type': 'string'}, 'description': 'Row header labels for 2D matrix grid (e.g., ["High Execution", "Low Execution"]).'}, 'shapeStyle': {'enum': ['calligraphy', 'clean'], 'type': ['string', 'null']}, 'xAxisLabel': {'type': ['string', 'null'], 'description': 'X-axis title for 2D matrix grid (e.g., "Completeness of Vision").'}, 'yAxisLabel': {'type': ['string', 'null'], 'description': 'Y-axis title for 2D matrix grid (e.g., "Ability to Execute").'}, 'defaultShadow': {'enum': ['none', 'sm', 'md', 'lg'], 'type': ['string', 'null'], 'description': 'Default shadow level applied to all nodes.'}, 'ganttHolidays': {'type': ['array', 'null'], 'items': {'type': 'string', 'maxLength': 32}, 'maxItems': 200, '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.'}, 'matrixColumns': {'type': ['array', 'null'], 'items': {'type': 'string'}, 'description': 'Column header labels for 2D matrix grid (e.g., ["High Vision", "Low Vision"]).'}, 'matrixItemStyle': {'enum': ['card', 'dot', 'text', 'badge'], 'type': ['string', 'null'], 'description': 'Item display style for matrix diagrams. "card" (default) = rectangular cards, "dot" = scatter points, "text" = plain text, "badge" = compact pills.'}, 'defaultArrowHead': {'type': ['string', 'null'], 'description': "Default arrowhead style applied to all edges that don't specify their own."}, 'defaultConnector': {'enum': ['straight', 'curved', 'elbow', 'orthogonal', 'bezier'], 'type': ['string', 'null'], 'description': "Default connector type applied to all edges that don't specify their own."}, 'defaultLineStyle': {'enum': ['calligraphy', 'block-arrow', 'solid', 'dashed', 'dotted', 'dash-dot', 'long-dash'], 'type': ['string', 'null'], '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.'}, 'defaultArrowStyle': {'enum': ['calligraphy', 'clean', 'block'], 'type': ['string', 'null'], '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.'}, 'defaultTitleStyle': {'enum': ['plain', 'accent-bar', 'underline', 'boxed'], 'type': ['string', 'null'], '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.'}, 'defaultDividerStyle': {'enum': ['subtle', 'normal', 'bold', 'dashed', 'dotted', 'none'], 'type': ['string', 'null'], '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").'}, 'defaultBlockArrowSize': {'anyOf': [{'enum': ['small', 'medium', 'large'], 'type': 'string'}, {'type': 'number', 'maximum': 60, 'minimum': 1}], '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.'}, 'defaultSceneAnimation': {'enum': ['none', 'fade', 'zoom', 'zoom-pan', 'flow', 'wave-sweep', 'build-up', 'flow-zoom-pan'], 'type': ['string', 'null'], '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.'}, 'defaultShapeLineStyle': {'enum': ['calligraphy', 'block-arrow', 'solid', 'dashed', 'dotted', 'dash-dot', 'long-dash'], 'type': ['string', 'null'], '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.'}, 'defaultConnectorAnimate': {'enum': ['none', 'flow', 'pulse', 'glow', 'trace', 'wave', 'lightning', 'beat', 'comet'], 'type': ['string', 'null'], '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.'}, 'defaultSceneAnimationLoop': {'enum': ['once', '2', '3', '5', 'infinite'], 'type': ['string', 'null'], '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.'}, 'defaultSceneAnimationSpeed': {'enum': ['slow', 'medium', 'fast'], 'type': ['string', 'null'], 'description': 'Scene animation speed. Options: slow (1.5× duration) | medium (default) | fast (0.6× duration).'}, 'defaultConnectorAnimateSpeed': {'enum': ['slow', 'medium', 'fast'], 'type': ['string', 'null'], 'description': 'Animation speed when defaultConnectorAnimate is set. Options: slow (3s cycle) | medium (2s, default) | fast (1s).'}}, 'additionalProperties': False}
输入模式
{'type': 'object', 'required': ['problem_statement'], 'properties': {'limit': {'type': 'integer', 'maximum': 20, 'minimum': 1, 'description': 'Number of frameworks to return. Default 5; cap 20.'}, 'persona': {'type': 'string', 'maxLength': 64, 'description': 'Persona slug (e.g. "ciso", "pm", "cfo").'}, 'regulation': {'type': 'string', 'maxLength': 64, 'description': 'Regulation slug (e.g. "sox", "gdpr", "iso-31000").'}, 'decision_stage': {'enum': ['explore', 'diagnose', 'decide', 'execute', 'review'], 'type': 'string', 'description': 'Decision-lifecycle stage.'}, 'problem_statement': {'type': 'string', 'maxLength': 2000, 'minLength': 10, 'description': 'Plain-English description of the business problem. 10–2000 chars.'}}, 'additionalProperties': False}
近期工具变更
类似的 MCP 服务器
GripForge
Generates, rigs, animates, analyzes, and packages game characters, weapons, armor, effects, environments, and engine-ready assets.
MiOffice — AI-Powered Workspace Studio
Provides browser-based tools for processing PDFs, images, video, and audio, including generation, enhancement, conversion, transc…
BlitzReels Video Editor
Creates and edits short-form videos, including timelines, captions, transitions, AI-generated visuals, music, voiceovers, sound e…
Morpha
Enables creating, animating, and exporting layered short-form video projects.
Colour Memory
Provides historical color archive research, color analysis, accessibility checks, cultural context, and brand palette and asset g…
spriteship
Generates and manages 2D game characters, assets, animations, tilesets, UI packs, maps, and engine-ready exports for multiple gam…
switch
Enables management and exploration of an account-scoped library of AI-generated images and videos.
framesail
Creates long-form YouTube videos through script generation, storyboarding, visual assets, voiceover, music, scene composition, an…