← nteract/semiotic

nteract/semiotic 3.9.2

npm · semiotic · current release

19
Tools
9
Resources
1
Templates
2
Prompts

Observation

Observed 2026-09-01T03:55:16.615Z using mcpSecurity-inventory. Status: succeeded. Negotiated protocol: 2025-06-18.

Server capabilities
{
  "resources": {
    "listChanged": true
  },
  "completions": {},
  "prompts": {
    "listChanged": true
  },
  "tools": {
    "listChanged": true
  }
}

Tools 19

ToolCategoryAnnotationsRisk
applyThemeGet usage instructions for a named Semiotic theme preset. Returns ThemeProvider examples, CSS custom properties, and design token export patterns. Available themes: light, dark, high-contrast, pastels, pastels-dark, bi-tool, bi-tool-dark, italian, italian-dark, tufte, tufte-dark, journalist, journalist-dark, playful, playful-dark, carbon, carbon-dark.
Input schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "name": {
      "description": "Theme preset name, e.g. 'tufte', 'pastels-dark', 'bi-tool'. Omit to list all available themes.",
      "type": "string"
    }
  }
}
Annotations
{
  "readOnlyHint": true,
  "destructiveHint": false,
  "idempotentHint": true,
  "openWorldHint": false
}
Read only · Non-destructive
auditAccessibilityAudit a Semiotic chart configuration against the Chartability (POUR-CAF) accessibility framework — Perceivable, Operable, Understandable, Robust, Compromising, Assistive, Flexible. Statically grades the config (no DOM/AT): credits the built-ins every HOC ships (keyboard nav, focus ring, skip link, screen-reader data table, reduced-motion + forced-colors, shareable state), flags author-actionable gaps (missing title/description/summary, low contrast, small text, color-only encoding, undescribed trends, data density), and routes everything that needs real assistive-technology testing to a 'manual' item. Returns a per-principle report with the 14 critical heuristics marked. Pass inChartContainer=true to credit data-download/share affordances. Pair with manual NVDA/JAWS/VoiceOver testing — Chartability is not a pass/fail certification.
Input schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "component": {
      "type": "string",
      "description": "Chart component name, e.g. 'LineChart'"
    },
    "props": {
      "description": "Chart props object, e.g. { data: [...], xAccessor: 'x', title: '...' }.",
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "inChartContainer": {
      "description": "True if the chart is (or will be) wrapped in a ChartContainer exposing data-download/copy-config actions.",
      "type": "boolean"
    },
    "describe": {
      "description": "True if ChartContainer's describe option (auto-generated L1–L3 description via describeChart) is enabled — passes the 'features described' heuristic.",
      "type": "boolean"
    },
    "navigable": {
      "description": "True if ChartContainer's navigable option (structured navigation tree via buildNavigationTree) is enabled — passes the 'navigable structure' heuristic.",
      "type": "boolean"
    }
  },
  "required": [
    "component"
  ]
}
Annotations
{
  "readOnlyHint": true,
  "destructiveHint": false,
  "idempotentHint": true,
  "openWorldHint": false
}
Read only · Non-destructive
auditMobileVisualizationAudit a Semiotic chart configuration for mobile visualization risks. Use before generating phone-sized charts or when adapting a desktop chart to mobile. Flags fixed desktop widths, rough mark-density overload, hover-only detail, small touch targets, complex gestures without controls, legend dependence, annotation overload, and missing mobile transformation hints. Static analysis only: still verify rendered charts at phone widths.
Input schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "component": {
      "type": "string",
      "description": "Chart component name, e.g. 'LineChart', 'Scatterplot', or 'BarChart'."
    },
    "props": {
      "description": "Chart props/config to audit.",
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "viewportWidth": {
      "description": "Mobile viewport width in CSS pixels. Defaults to 390.",
      "type": "integer",
      "minimum": 240,
      "maximum": 1600
    },
    "targetSize": {
      "description": "Desired comfortable touch target size in CSS pixels. Defaults to 44.",
      "type": "integer",
      "minimum": 24,
      "maximum": 80
    },
    "inChartContainer": {
      "description": "Whether the chart is wrapped in ChartContainer or an equivalent summary/control surface.",
      "type": "boolean"
    }
  },
  "required": [
    "component"
  ]
}
Annotations
{
  "readOnlyHint": true,
  "destructiveHint": false,
  "idempotentHint": true,
  "openWorldHint": false
}
Read only · Non-destructive
diagnoseConfigDiagnose a Semiotic chart configuration for common problems (empty data, bad dimensions, missing accessors, wrong data shape, color contrast issues, etc). Pass usageMode='push' for ref-based React HOCs that intentionally omit data; omit usageMode or pass 'static' for renderChart/MCP/server configs where data is required. Checks WCAG color contrast ratios and suggests COLOR_BLIND_SAFE_CATEGORICAL for accessibility. Returns a human-readable diagnostic report with actionable fixes.
Input schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "component": {
      "type": "string",
      "description": "Chart component name, e.g. 'LineChart'"
    },
    "props": {
      "description": "Chart props object, e.g. { data: [...], xAccessor: 'x' }.",
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "usageMode": {
      "description": "Validation mode. Use 'push' for ref-based React HOCs that omit data; use 'static' or omit for renderChart/MCP/static data configs.",
      "type": "string",
      "enum": [
        "static",
        "push",
        "renderChart",
        "server"
      ]
    }
  },
  "required": [
    "component"
  ]
}
Annotations
{
  "readOnlyHint": true,
  "destructiveHint": false,
  "idempotentHint": true,
  "openWorldHint": false
}
Read only · Non-destructive
evaluateChartEvaluate a Semiotic chart through one deterministic quality pass: numeric data contracts, configuration and representation/deception checks, and static Chartability accessibility heuristics. Returns the independent audit reports plus a severity-ranked findings list and notification feed. Pass data separately when it should override props.data; use inChartContainer, describe, or navigable to describe the intended accessibility wrapper. This is static analysis and does not replace manual assistive-technology testing or render evidence.
Input schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "component": {
      "type": "string",
      "description": "Chart component name, e.g. 'LineChart'."
    },
    "props": {
      "description": "Chart props/config, including accessors and optional data.",
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "data": {
      "description": "Optional explicit dataset. When supplied, this is used as the effective props.data for evaluation.",
      "type": "array",
      "items": {
        "type": "object",
        "propertyNames": {
          "type": "string"
        },
        "additionalProperties": {}
      }
    },
    "inChartContainer": {
      "description": "Whether the chart will be wrapped in ChartContainer or an equivalent control surface.",
      "type": "boolean"
    },
    "describe": {
      "description": "Whether ChartContainer's generated description is enabled.",
      "type": "boolean"
    },
    "navigable": {
      "description": "Whether ChartContainer's structured navigation tree is enabled.",
      "type": "boolean"
    }
  },
  "required": [
    "component"
  ]
}
Annotations
{
  "readOnlyHint": true,
  "destructiveHint": false,
  "idempotentHint": true,
  "openWorldHint": false
}
Read only · Non-destructive
getSchemaReturn the prop schema for a Semiotic chart component. Pass { component: '<name>' } to get its props, or omit component to list all available components. Components marked [renderable] can be passed to renderChart for static SVG output.
Input schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "component": {
      "description": "Component name, e.g. 'LineChart'. Omit to list all.",
      "type": "string"
    }
  }
}
Annotations
{
  "readOnlyHint": true,
  "destructiveHint": false,
  "idempotentHint": true,
  "openWorldHint": false
}
Read only · Non-destructive
groundChartBuild the agent-reader grounding payload for a Semiotic chart: the layered L1–L3 natural-language description, the L4 communicative-act sentence (what the chart is asking the reader to do), and a structured navigation tree (chart → axes/series → datum). Use this to interpret a chart faithfully without pixels.
Input schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "component": {
      "type": "string",
      "description": "Chart component name, e.g. 'LineChart'"
    },
    "props": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "The full chart props including data"
    }
  },
  "required": [
    "component",
    "props"
  ]
}
Output schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "component": {
      "type": "string"
    },
    "description": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "intent": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "structure": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "physics": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "text": {
      "type": "string"
    }
  },
  "required": [
    "component",
    "description",
    "text"
  ],
  "additionalProperties": false
}
Annotations
{
  "readOnlyHint": true,
  "destructiveHint": false,
  "idempotentHint": true,
  "openWorldHint": false
}
Read only · Non-destructive
interrogateChartConversational interrogation of a Semiotic chart. Extract a statistical summary and answer natural language questions about the data, trends, and outliers. Returns a summary and guidance for an AI to generate a textual answer and visual annotations.
Input schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "component": {
      "type": "string",
      "description": "Chart component name, e.g. 'LineChart'"
    },
    "props": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "The full chart props including data"
    },
    "query": {
      "description": "A natural language question about the chart data",
      "type": "string"
    }
  },
  "required": [
    "component",
    "props"
  ]
}
Annotations
{
  "readOnlyHint": true,
  "destructiveHint": false,
  "idempotentHint": true,
  "openWorldHint": false
}
Read only · Non-destructive
proposeChartVariantsPropose and score chart variants for a selected Semiotic component. Uses the capability registry plus heuristic variant discovery: registered variants, conservative transforms, and same-intent cross-family alternatives. Returns ranked proposals with fit/novelty/risk scores, rationale, and ready-to-use props. Use after suggestCharts when an agent wants to actively explore variants rather than stop at the first chart recommendation.
Input schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "component": {
      "type": "string",
      "description": "Base chart component to vary, e.g. 'LineChart', 'BarChart', or 'BoxPlot'."
    },
    "props": {
      "description": "Existing chart props. If props.data is present it is profiled; network/hierarchy/geo object data can be passed here as raw input.",
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "data": {
      "description": "Row data to profile. Overrides props.data when present.",
      "type": "array",
      "items": {
        "type": "object",
        "propertyNames": {
          "type": "string"
        },
        "additionalProperties": {}
      }
    },
    "intent": {
      "description": "Ranking intent(s), e.g. trend, distribution, rank, compare-categories, composition-over-time.",
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      ]
    },
    "maxResults": {
      "description": "Cap on proposals returned (default 8).",
      "type": "integer",
      "minimum": 1,
      "maximum": 20
    },
    "audience": {
      "description": "Audience profile — familiarity, adoption targets, exposure level, and reception modality.",
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "familiarity": {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {
            "type": "number"
          }
        },
        "targets": {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {
            "type": "object",
            "properties": {
              "direction": {
                "type": "string",
                "enum": [
                  "increase",
                  "decrease"
                ]
              },
              "weight": {
                "type": "integer",
                "minimum": 1,
                "maximum": 3
              },
              "reason": {
                "type": "string"
              }
            },
            "required": [
              "direction"
            ]
          }
        },
        "exposureLevel": {
          "anyOf": [
            {
              "type": "number",
              "const": 0
            },
            {
              "type": "number",
              "const": 1
            },
            {
              "type": "number",
              "const": 2
            }
          ]
        },
        "receptionModality": {
          "description": "Reception channel — see suggestCharts.",
          "type": "string",
          "enum": [
            "visual",
            "screen-reader",
            "sonified",
            "agent"
          ]
        }
      }
    },
    "identifiers": {
      "description": "Fields that identify records and must not be used as visual encodings or measures.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "fieldRoles": {
      "description": "Per-field semantic or exact encoding-role hints used before chart ranking.",
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {
        "anyOf": [
          {
            "type": "string",
            "enum": [
              "identifier",
              "measure",
              "dimension",
              "temporal",
              "x",
              "y",
              "size",
              "category",
              "series",
              "time",
              "ignore"
            ]
          },
          {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "identifier",
                "measure",
                "dimension",
                "temporal",
                "x",
                "y",
                "size",
                "category",
                "series",
                "time",
                "ignore"
              ]
            }
          }
        ]
      }
    }
  },
  "required": [
    "component"
  ]
}
Annotations
{
  "readOnlyHint": true,
  "destructiveHint": false,
  "idempotentHint": true,
  "openWorldHint": false
}
Read only · Non-destructive
renderChartRender a Semiotic chart to static SVG or PNG. This is a static snapshot path: props must include data immediately, and ref/push-mode charts cannot be rendered through this tool. Returns SVG text by default or an image/png artifact when format='png', plus a "Render evidence" JSON block (mark counts by type, resolved axis domains, empty flag, annotation count, accessible name) — read the evidence instead of parsing the SVG to verify the chart actually rendered data marks. Optionally pass theme CSS custom properties (--semiotic-bg, --semiotic-text, etc.) to style the output. PNG requires the 'sharp' package to be installed. Available components: AreaChart, BarChart, BigNumber, BoxPlot, BubbleChart, BumpChart, CalendarHeatmapRecipe, CandlestickChart, ChainReactionChart, ChordDiagram, ChoroplethMap, CirclePack, CollisionSwarmChart, ConnectedScatterplot, CrucibleChart, DifferenceChart, DistanceCartogram, DonutChart, DotPlot, EventDropChart, FlowMap, ForceDirectedGraph, FunnelChart, GaltonBoardChart, GaugeChart, GauntletChart, GroupedBarChart, Heatmap, Histogram, LikertChart, LineChart, MinimapChart, MultiAxisLineChart, OrbitDiagram, PacketFlowChart, ParallelCoordinatesRecipe, PieChart, ProcessFlowChart, ProcessSankey, ProportionalSymbolMap, QuadrantChart, RadarChart, RidgelinePlot, SankeyDiagram, Scatterplot, ScatterplotMatrix, StackedAreaChart, StackedBarChart, SwarmPlot, SwimlaneChart, TemporalHistogram, TreeDiagram, Treemap, UnitPileChart, ViolinPlot, WaterfallChart.
Input schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "component": {
      "type": "string",
      "description": "Chart component name, e.g. 'LineChart', 'BarChart'"
    },
    "props": {
      "description": "Chart props object, e.g. { data: [...], xAccessor: 'x' }.",
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "theme": {
      "description": "CSS custom properties for theming, e.g. { '--semiotic-bg': '#1a1a2e', '--semiotic-text': '#ededed' }. Only --semiotic-* variables are applied.",
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {
        "type": "string"
      }
    },
    "format": {
      "description": "Output format: 'svg' (default) returns SVG markup, 'png' returns image/png artifact data. PNG requires the 'sharp' package.",
      "type": "string",
      "enum": [
        "svg",
        "png"
      ]
    }
  },
  "required": [
    "component"
  ]
}
Annotations
{
  "readOnlyHint": true,
  "destructiveHint": false,
  "idempotentHint": true,
  "openWorldHint": false
}
Read only · Non-destructive
renderInteractiveChartRender a static-data Semiotic chart as a ChatGPT Apps widget. Use this after suggestCharts/getSchema/diagnoseConfig when the user wants to see an interactive chart inside ChatGPT. The server renders Semiotic to SVG and the widget adds fit, zoom, data, hover, and render-evidence controls. Available components: AreaChart, BarChart, BigNumber, BoxPlot, BubbleChart, BumpChart, CalendarHeatmapRecipe, CandlestickChart, ChainReactionChart, ChordDiagram, ChoroplethMap, CirclePack, CollisionSwarmChart, ConnectedScatterplot, CrucibleChart, DifferenceChart, DistanceCartogram, DonutChart, DotPlot, EventDropChart, FlowMap, ForceDirectedGraph, FunnelChart, GaltonBoardChart, GaugeChart, GauntletChart, GroupedBarChart, Heatmap, Histogram, LikertChart, LineChart, MinimapChart, MultiAxisLineChart, OrbitDiagram, PacketFlowChart, ParallelCoordinatesRecipe, PieChart, ProcessFlowChart, ProcessSankey, ProportionalSymbolMap, QuadrantChart, RadarChart, RidgelinePlot, SankeyDiagram, Scatterplot, ScatterplotMatrix, StackedAreaChart, StackedBarChart, SwarmPlot, SwimlaneChart, TemporalHistogram, TreeDiagram, Treemap, UnitPileChart, ViolinPlot, WaterfallChart.
Input schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "component": {
      "type": "string",
      "description": "Renderable chart component name, e.g. 'LineChart', 'BarChart', 'GaugeChart'."
    },
    "props": {
      "description": "Static Semiotic chart props, including data/accessors where required.",
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "theme": {
      "description": "CSS custom properties such as { '--semiotic-bg': '#fff', '--semiotic-text': '#111' }. Only --semiotic-* variables are applied.",
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {
        "type": "string"
      }
    }
  },
  "required": [
    "component"
  ]
}
Output schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "component": {
      "type": "string"
    },
    "title": {
      "type": "string"
    },
    "summary": {
      "type": "string"
    },
    "datumCount": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ]
    },
    "evidence": {
      "anyOf": [
        {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {}
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "component",
    "title",
    "summary",
    "datumCount",
    "evidence"
  ],
  "additionalProperties": false
}
Annotations
{
  "readOnlyHint": true,
  "destructiveHint": false,
  "idempotentHint": true,
  "openWorldHint": false
}
Read only · Non-destructive
repairChartConfigValidate that a chart component is a sensible choice for a dataset, and if not, propose ranked alternatives that fit. Returns a structured status of ok, alternative, or unknown.
Input schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "component": {
      "type": "string",
      "description": "Chart component name to validate, e.g. 'PieChart'"
    },
    "data": {
      "type": "array",
      "items": {
        "type": "object",
        "propertyNames": {
          "type": "string"
        },
        "additionalProperties": {}
      },
      "description": "Row data — array of objects."
    },
    "intent": {
      "description": "User intent — informs ranking of alternatives when the chart doesn't fit.",
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      ]
    },
    "maxAlternatives": {
      "description": "Cap on alternatives returned (default 3).",
      "type": "integer",
      "minimum": 1,
      "maximum": 10
    },
    "identifiers": {
      "description": "Fields that identify records and must not be used as visual encodings or measures.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "fieldRoles": {
      "description": "Per-field semantic or exact encoding-role hints used before chart ranking.",
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {
        "anyOf": [
          {
            "type": "string",
            "enum": [
              "identifier",
              "measure",
              "dimension",
              "temporal",
              "x",
              "y",
              "size",
              "category",
              "series",
              "time",
              "ignore"
            ]
          },
          {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "identifier",
                "measure",
                "dimension",
                "temporal",
                "x",
                "y",
                "size",
                "category",
                "series",
                "time",
                "ignore"
              ]
            }
          }
        ]
      }
    }
  },
  "required": [
    "component",
    "data"
  ]
}
Output schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "ok",
        "alternative",
        "unknown"
      ]
    },
    "component": {
      "type": "string"
    },
    "reason": {
      "type": "string"
    },
    "alternatives": {
      "type": "array",
      "items": {}
    },
    "profile": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "repairs": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "required": [
    "status",
    "component",
    "profile"
  ],
  "additionalProperties": false
}
Annotations
{
  "readOnlyHint": true,
  "destructiveHint": false,
  "idempotentHint": true,
  "openWorldHint": false
}
Read only · Non-destructive
reportIssueGenerate a GitHub issue URL for Semiotic bug reports or feature requests. Returns a URL the user can open to submit. For rendering bugs, include the component name, props summary, and any diagnoseConfig output in the body.
Input schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "title": {
      "type": "string",
      "description": "Issue title, e.g. 'Bug: BarChart tooltip shows undefined'"
    },
    "body": {
      "description": "Issue body with details, reproduction steps, diagnoseConfig output",
      "type": "string"
    },
    "labels": {
      "description": "GitHub labels, e.g. ['bug'] or 'bug'",
      "anyOf": [
        {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        {
          "type": "string"
        }
      ]
    }
  },
  "required": [
    "title"
  ]
}
Annotations
{
  "readOnlyHint": true,
  "destructiveHint": false,
  "idempotentHint": true,
  "openWorldHint": false
}
Read only · Non-destructive
suggestChartLightweight heuristic chart recommender for a small data sample (1-5 rows) with capability filtering (push API, linked hover, SSR, selection, legend). Returns ranked recommendations with example props. For richer capability-descriptor ranking (scores, reasons, caveats) and the full 13-intent taxonomy, prefer `suggestCharts` (plural).
Input schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "data": {
      "minItems": 1,
      "maxItems": 5,
      "type": "array",
      "items": {
        "type": "object",
        "propertyNames": {
          "type": "string"
        },
        "additionalProperties": {}
      },
      "description": "1-5 sample data objects"
    },
    "intent": {
      "description": "Visualization intent. Accepts this engine's intents (comparison, trend, distribution, relationship, composition, geographic, network, hierarchy) AND the richer suggestCharts taxonomy (compare-categories, part-to-whole, correlation, flow, geo, rank, …), which is translated automatically; an unrecognized intent is ignored rather than rejected.",
      "type": "string"
    },
    "capabilities": {
      "description": "Capability constraints — set a key to true to require, false to forbid. Unset keys are ignored.",
      "type": "object",
      "properties": {
        "push": {
          "description": "Require ref-based push API (live streaming via ref.current.push())",
          "type": "boolean"
        },
        "linkedHover": {
          "description": "Require cross-chart linked hover support",
          "type": "boolean"
        },
        "ssr": {
          "description": "Require server-side rendering via renderChart()",
          "type": "boolean"
        },
        "selection": {
          "description": "Require named selection / cross-filter support",
          "type": "boolean"
        },
        "legend": {
          "description": "Require a top-level legend",
          "type": "boolean"
        }
      },
      "additionalProperties": false
    }
  },
  "required": [
    "data"
  ]
}
Annotations
{
  "readOnlyHint": true,
  "destructiveHint": false,
  "idempotentHint": true,
  "openWorldHint": false
}
Read only · Non-destructive
suggestChartsRecommend Semiotic charts for a dataset using heuristic capability descriptors. Returns ranked, structured suggestions with scores, reasons, caveats, and ready-to-use props; no LLM call is made.
Input schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "data": {
      "type": "array",
      "items": {
        "type": "object",
        "propertyNames": {
          "type": "string"
        },
        "additionalProperties": {}
      },
      "description": "Row data — array of objects."
    },
    "intent": {
      "description": "Ranking intent. One of: trend, compare-series, compare-categories, rank, part-to-whole, distribution, correlation, flow, hierarchy, geo, outlier-detection, composition-over-time, change-detection. Custom intents accepted.",
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      ]
    },
    "maxResults": {
      "description": "Cap on suggestions returned (default 8).",
      "type": "integer",
      "minimum": 1,
      "maximum": 40
    },
    "allow": {
      "description": "Restrict to these component names.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "deny": {
      "description": "Exclude these component names.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "identifiers": {
      "description": "Fields that identify records and must not be used as visual encodings or measures.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "fieldRoles": {
      "description": "Per-field semantic or exact encoding-role hints used before chart ranking.",
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {
        "anyOf": [
          {
            "type": "string",
            "enum": [
              "identifier",
              "measure",
              "dimension",
              "temporal",
              "x",
              "y",
              "size",
              "category",
              "series",
              "time",
              "ignore"
            ]
          },
          {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "identifier",
                "measure",
                "dimension",
                "temporal",
                "x",
                "y",
                "size",
                "category",
                "series",
                "time",
                "ignore"
              ]
            }
          }
        ]
      }
    },
    "audience": {
      "description": "Audience profile — familiarity, adoption targets, exposure level, and reception modality.",
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "familiarity": {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {
            "type": "number"
          }
        },
        "targets": {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {
            "type": "object",
            "properties": {
              "direction": {
                "type": "string",
                "enum": [
                  "increase",
                  "decrease"
                ]
              },
              "weight": {
                "type": "integer",
                "minimum": 1,
                "maximum": 3
              },
              "reason": {
                "type": "string"
              }
            },
            "required": [
              "direction"
            ]
          }
        },
        "exposureLevel": {
          "anyOf": [
            {
              "type": "number",
              "const": 0
            },
            {
              "type": "number",
              "const": 1
            },
            {
              "type": "number",
              "const": 2
            }
          ]
        },
        "receptionModality": {
          "description": "Reception channel. A non-visual value down-ranks charts the audience can't receive in that channel and adds receivability caveats.",
          "type": "string",
          "enum": [
            "visual",
            "screen-reader",
            "sonified",
            "agent"
          ]
        }
      }
    }
  },
  "required": [
    "data"
  ]
}
Output schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "suggestions": {
      "type": "array",
      "items": {}
    }
  },
  "required": [
    "suggestions"
  ],
  "additionalProperties": false
}
Annotations
{
  "readOnlyHint": true,
  "destructiveHint": false,
  "idempotentHint": true,
  "openWorldHint": false
}
Read only · Non-destructive
suggestDashboardGenerate a dashboard of complementary chart panels for a dataset — each panel answers a distinct analytical intent (trend, rank, distribution, correlation, etc.) and the engine diversifies by chart family by default. Heuristic only; no LLM call. Use when the user asks 'show me this data' or 'build me a dashboard' rather than picking one chart.
Input schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "data": {
      "type": "array",
      "items": {
        "type": "object",
        "propertyNames": {
          "type": "string"
        },
        "additionalProperties": {}
      },
      "description": "Row data — array of objects."
    },
    "intents": {
      "description": "Intents to cover. Omit to let the engine pick based on the data shape.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "maxPanels": {
      "description": "Maximum panels (default 6).",
      "type": "integer",
      "minimum": 1,
      "maximum": 12
    },
    "diversifyByFamily": {
      "description": "Prefer not to repeat chart families across panels (default true).",
      "type": "boolean"
    },
    "identifiers": {
      "description": "Fields that identify records and must not be used as visual encodings or measures.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "fieldRoles": {
      "description": "Per-field semantic or exact encoding-role hints used before chart ranking.",
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {
        "anyOf": [
          {
            "type": "string",
            "enum": [
              "identifier",
              "measure",
              "dimension",
              "temporal",
              "x",
              "y",
              "size",
              "category",
              "series",
              "time",
              "ignore"
            ]
          },
          {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "identifier",
                "measure",
                "dimension",
                "temporal",
                "x",
                "y",
                "size",
                "category",
                "series",
                "time",
                "ignore"
              ]
            }
          }
        ]
      }
    },
    "audience": {
      "description": "Audience profile — familiarity, adoption targets, exposure level, and reception modality.",
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "familiarity": {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {
            "type": "number"
          }
        },
        "targets": {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {
            "type": "object",
            "properties": {
              "direction": {
                "type": "string",
                "enum": [
                  "increase",
                  "decrease"
                ]
              },
              "weight": {
                "type": "integer",
                "minimum": 1,
                "maximum": 3
              },
              "reason": {
                "type": "string"
              }
            },
            "required": [
              "direction"
            ]
          }
        },
        "exposureLevel": {
          "anyOf": [
            {
              "type": "number",
              "const": 0
            },
            {
              "type": "number",
              "const": 1
            },
            {
              "type": "number",
              "const": 2
            }
          ]
        },
        "receptionModality": {
          "type": "string",
          "enum": [
            "visual",
            "screen-reader",
            "sonified",
            "agent"
          ]
        }
      }
    }
  },
  "required": [
    "data"
  ]
}
Annotations
{
  "readOnlyHint": true,
  "destructiveHint": false,
  "idempotentHint": true,
  "openWorldHint": false
}
Read only · Non-destructive
suggestStreamChartsRecommend realtime/streaming Semiotic charts for a schema (not row data). Pass a schema describing field types plus optional throughput ('low'|'medium'|'high') and retention ('windowed'|'cumulative') hints; the engine ranks realtime charts (RealtimeLineChart, RealtimeHistogram, RealtimeHeatmap, RealtimeWaterfallChart, RealtimeSwarmChart, TemporalHistogram) by their fit. Use when the user is wiring up a live dashboard or monitoring view rather than visualizing a bounded dataset.
Input schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "schema": {
      "type": "object",
      "properties": {
        "fields": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string"
              },
              "kind": {
                "type": "string",
                "enum": [
                  "numeric",
                  "categorical",
                  "date",
                  "boolean"
                ]
              },
              "role": {
                "type": "string",
                "enum": [
                  "x",
                  "y",
                  "value",
                  "category",
                  "series",
                  "size"
                ]
              }
            },
            "required": [
              "name",
              "kind"
            ]
          }
        },
        "throughput": {
          "type": "string",
          "enum": [
            "low",
            "medium",
            "high"
          ]
        },
        "retention": {
          "type": "string",
          "enum": [
            "windowed",
            "cumulative"
          ]
        }
      },
      "required": [
        "fields"
      ],
      "description": "Stream schema — fields plus throughput/retention hints. No row data."
    },
    "intent": {
      "description": "Ranking intent.",
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      ]
    },
    "maxResults": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
    }
  },
  "required": [
    "schema"
  ]
}
Annotations
{
  "readOnlyHint": true,
  "destructiveHint": false,
  "idempotentHint": true,
  "openWorldHint": false
}
Read only · Non-destructive
suggestStretchChartsRecommend literacy-growth chart picks for a dataset given an AudienceProfile. Returns charts the data supports but the audience is unfamiliar with (familiarity ≤ 3, or ≤ 4 at exposureLevel 2), each paired with the familiar chart it could substitute for and a rationale. Use when the consumer wants to gently expose users to less familiar but more analytically appropriate visualizations.
Input schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "data": {
      "type": "array",
      "items": {
        "type": "object",
        "propertyNames": {
          "type": "string"
        },
        "additionalProperties": {}
      },
      "description": "Row data."
    },
    "audience": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "familiarity": {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {
            "type": "number"
          }
        },
        "targets": {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {
            "type": "object",
            "properties": {
              "direction": {
                "type": "string",
                "enum": [
                  "increase",
                  "decrease"
                ]
              },
              "weight": {
                "type": "integer",
                "minimum": 1,
                "maximum": 3
              },
              "reason": {
                "type": "string"
              }
            },
            "required": [
              "direction"
            ]
          }
        },
        "exposureLevel": {
          "anyOf": [
            {
              "type": "number",
              "const": 0
            },
            {
              "type": "number",
              "const": 1
            },
            {
              "type": "number",
              "const": 2
            }
          ]
        },
        "receptionModality": {
          "description": "Reception channel — see suggestCharts.",
          "type": "string",
          "enum": [
            "visual",
            "screen-reader",
            "sonified",
            "agent"
          ]
        }
      },
      "description": "Audience profile — familiarity, targets, exposure level, reception modality."
    },
    "intent": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      ]
    },
    "maxResults": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
    },
    "identifiers": {
      "description": "Fields that identify records and must not be used as visual encodings or measures.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "fieldRoles": {
      "description": "Per-field semantic or exact encoding-role hints used before chart ranking.",
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {
        "anyOf": [
          {
            "type": "string",
            "enum": [
              "identifier",
              "measure",
              "dimension",
              "temporal",
              "x",
              "y",
              "size",
              "category",
              "series",
              "time",
              "ignore"
            ]
          },
          {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "identifier",
                "measure",
                "dimension",
                "temporal",
                "x",
                "y",
                "size",
                "category",
                "series",
                "time",
                "ignore"
              ]
            }
          }
        ]
      }
    }
  },
  "required": [
    "data",
    "audience"
  ]
}
Annotations
{
  "readOnlyHint": true,
  "destructiveHint": false,
  "idempotentHint": true,
  "openWorldHint": false
}
Read only · Non-destructive
suggestTokenEncodingRecommend a semantic token / ISOTYPE encoding for a reader task. Use before drawing repeated dots, icons, glyphs, natural-frequency grids, quantile dotplots, or hybrid bar-token views. Returns the recommended tokenEncoding, warnings, alternatives, and matching suggestCharts capability intents. Accepts canonical token intents (precise-comparison, probability-estimation, risk-communication, memory, support-decision, etc.) and friendly aliases (measure, estimate probability, understand risk, remember, decide).
Input schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "taskIntent": {
      "type": "string",
      "description": "Reader task intent, e.g. 'estimate probability', 'understand risk', 'remember', 'measure', 'decide', or canonical token intents like 'probability-estimation'."
    },
    "dataType": {
      "description": "Data shape or meaning behind the tokenized view.",
      "type": "string",
      "enum": [
        "count",
        "measure",
        "distribution",
        "probability",
        "risk",
        "category"
      ]
    },
    "audience": {
      "description": "Audience for the recommendation.",
      "type": "string",
      "enum": [
        "expert",
        "general-public",
        "internal"
      ]
    },
    "precisionNeed": {
      "description": "How much exact magnitude reading matters.",
      "type": "string",
      "enum": [
        "low",
        "medium",
        "high"
      ]
    },
    "availableSpace": {
      "description": "Space budget for visible tokens.",
      "type": "string",
      "enum": [
        "small",
        "medium",
        "large"
      ]
    },
    "concreteEntity": {
      "description": "Concrete icon/glyph concept, e.g. person, bus, server. Becomes tokenEncoding.icon when useful.",
      "type": "string"
    }
  },
  "required": [
    "taskIntent"
  ]
}
Annotations
{
  "readOnlyHint": true,
  "destructiveHint": false,
  "idempotentHint": true,
  "openWorldHint": false
}
Read only · Non-destructive

Resources 9

Resource templates 1

Prompts 2

Let’s talk about MCP security.

Share your details and our security team will contact you.