3.9.2npm · semiotic · current release
Observed 2026-09-01T03:55:16.615Z using mcpSecurity-inventory. Status: succeeded. Negotiated protocol: 2025-06-18.
{
"resources": {
"listChanged": true
},
"completions": {},
"prompts": {
"listChanged": true
},
"tools": {
"listChanged": true
}
}| Tool | Category | Annotations | Risk |
|---|---|---|---|
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 | — |
Agent-visible semantic rules for color precedence, required prop combinations, streaming refs, and renderability.
{
"resource_key": "semiotic://behavior-contracts",
"uri": "semiotic://behavior-contracts",
"name": "semiotic-behavior-contracts",
"description": "Agent-visible semantic rules for color precedence, required prop combinations, streaming refs, and renderability.",
"mime_type": "application/json",
"annotations": null,
"metadata_hash": "4842210d2fb172212cab6d6e96c5433ae426bed14a6026c71607725ce25e9a1e"
}Read-only deployment identity for this Semiotic MCP server.
{
"resource_key": "semiotic://build-info",
"uri": "semiotic://build-info",
"name": "semiotic-build-info",
"description": "Read-only deployment identity for this Semiotic MCP server.",
"mime_type": "application/json",
"annotations": null,
"metadata_hash": "a8758732af49c3c86663736bf84a6b81740a9e1742c687c402cd6400535d72f5"
}MCP Apps widget template for interactive Semiotic chart previews inside ChatGPT.
{
"resource_key": "ui://semiotic/chart-widget.html",
"uri": "ui://semiotic/chart-widget.html",
"name": "semiotic-chatgpt-chart-widget",
"description": "MCP Apps widget template for interactive Semiotic chart previews inside ChatGPT.",
"mime_type": "text/html;profile=mcp-app",
"annotations": null,
"metadata_hash": "284e394dd6a82c9b46ae1d70e0cd325f919a8b8b3094c8e5cea965e340e96190"
}Renderable/browser-only component index with MCP categories.
{
"resource_key": "semiotic://components",
"uri": "semiotic://components",
"name": "semiotic-components",
"description": "Renderable/browser-only component index with MCP categories.",
"mime_type": "application/json",
"annotations": null,
"metadata_hash": "f6f03f61adad47922f229736657639fa0f2ae5c6180189946149e22c6b25481d"
}On-demand copy-paste examples for common Semiotic chart data shapes.
{
"resource_key": "semiotic://examples",
"uri": "semiotic://examples",
"name": "semiotic-examples",
"description": "On-demand copy-paste examples for common Semiotic chart data shapes.",
"mime_type": "text/markdown",
"annotations": null,
"metadata_hash": "a9f9ba3cc609f393d0b0b53db69d68e77e910b986646c2e292e442c848ad5448"
}Machine-readable JSON schema for all Semiotic AI chart components.
{
"resource_key": "semiotic://schema",
"uri": "semiotic://schema",
"name": "semiotic-schema",
"description": "Machine-readable JSON schema for all Semiotic AI chart components.",
"mime_type": "application/json",
"annotations": null,
"metadata_hash": "bc74c63ab45eb9cc2113e740c9c90c8b0cbeda1d16fdf697203b281fd1100f4a"
}Compact component catalog with one-resource-per-component schema URIs.
{
"resource_key": "semiotic://schema-index",
"uri": "semiotic://schema-index",
"name": "semiotic-schema-index",
"description": "Compact component catalog with one-resource-per-component schema URIs.",
"mime_type": "application/json",
"annotations": null,
"metadata_hash": "1bf01f23a70404a88b1b79f4675f533702ae913ba582c46405c39ba0da620057"
}Generated inventory of schema components, AI exports, MCP renderability, tools, resources, and prompts.
{
"resource_key": "semiotic://surface-manifest",
"uri": "semiotic://surface-manifest",
"name": "semiotic-surface-manifest",
"description": "Generated inventory of schema components, AI exports, MCP renderability, tools, resources, and prompts.",
"mime_type": "application/json",
"annotations": null,
"metadata_hash": "e40c0ca8802d1f74e232b1d44d2642a36a5d310bc485a0146a31ddfb368f5671"
}Compact implementation guidance for AI assistants building with Semiotic.
{
"resource_key": "semiotic://system-prompt",
"uri": "semiotic://system-prompt",
"name": "semiotic-system-prompt",
"description": "Compact implementation guidance for AI assistants building with Semiotic.",
"mime_type": "text/markdown",
"annotations": null,
"metadata_hash": "251af4cc096ba9e8d6d241479ca64a46a3919c461d7655d52921126a976acaf4"
}One component's prop schema, metadata, accessibility guidance, and behavior contracts.
{
"template_key": "semiotic://schema/{component}",
"uri_template": "semiotic://schema/{component}",
"name": "semiotic-component-schema",
"description": "One component's prop schema, metadata, accessibility guidance, and behavior contracts.",
"mime_type": "application/json",
"annotations": null,
"metadata_hash": "559a4e38b74097704c773fbfbf7cdcb9d62aca64bc74b6183798b01f79595be1"
}Workflow for choosing a chart, validating props, and rendering a preview.
{
"prompt_key": "build-semiotic-chart",
"name": "build-semiotic-chart",
"description": "Workflow for choosing a chart, validating props, and rendering a preview.",
"arguments": [
{
"name": "intent",
"description": "Visualization intent, e.g. trend, comparison, distribution, relationship, composition, network, hierarchy.",
"required": false
},
{
"name": "dataDescription",
"description": "Brief description of the data fields and sample rows.",
"required": false
},
{
"name": "component",
"description": "Optional preferred Semiotic component name.",
"required": false
}
],
"metadata_hash": "c020f88a24b70b0fc9008913d6ba7099a847a6990341d8abd980b4e2f9efed01"
}Workflow for diagnosing bad props, rendering failures, and chart-quality issues.
{
"prompt_key": "debug-semiotic-chart",
"name": "debug-semiotic-chart",
"description": "Workflow for diagnosing bad props, rendering failures, and chart-quality issues.",
"arguments": [
{
"name": "component",
"description": "Semiotic component name, e.g. BarChart.",
"required": false
},
{
"name": "problem",
"description": "Observed failure, warning, or visual issue.",
"required": false
},
{
"name": "props",
"description": "Relevant chart props as JSON or a short summary.",
"required": false
}
],
"metadata_hash": "ed4dc93697a93f5af8d208e498abe65f6a28b43b66c623dff5a90815c8883d46"
}