MCP server intelligence profile

nteract/semiotic MCP Server

MCP for Semiotic, a streaming/static data visualization library

Local Onlynteract
Awaiting current scanNpm · 3.9.2

The selected current version does not yet have completed public verification. Unknown does not mean clean or vulnerable.

1Distribution channel
19Independently observed tools
0Linked remote endpoints
AvailableVersion intelligence

Detailed security scan evidence is not public for this MCP yet. Public identity, registry metadata, and independently observed protocol inventory remain available.

Install and connect

Installation and connection instructions are shown only when supported by retained package, repository, or endpoint evidence.

Install semiotic from npm

Install exact version 3.9.2. No verified executable entrypoint is available, so use the package documentation to launch it.

npm install --save-exact semiotic@3.9.2

Identity

Canonical slugnteract-semiotic-e27797aeDeploymentLocal Only
Canonical packagenpm:semioticRepositorynteract/semiotic
First publishedLatest release
Last security verificationClassification confidence90%
PublicationDraftOfficial distributionNot verified

Distributions

ChannelIdentifierCurrent versionVersionsSource
npmsemiotic3.9.2274Repository

Current release

PackageVersionPublished / observedInventorySecurity scan
npmsemiotic3.9.2CurrentSep 5, 202619 toolsSucceeded · 9 resources · 2 promptsEvidence restricted
Enterprise protection

Continuously monitor this MCP for security risk

Independently scan the exact version your agents use, receive alerts when its risk changes, and investigate every finding with retained version evidence.

  • Independent exact-version security scans
  • Continuous release and vulnerability monitoring
  • Risk-change alerts with capability context
  • Historical evidence and API exports
Custom pricingContact salesTailored to your organization, integrations, data needs, and support requirements.

Current version evidence

No public current-version evidence is available yet.

Current protocol inventory

2025-06-18Negotiated protocol
semioticServer-reported name
4Capability groups
Sep 1, 2026Observed

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 onlyNon-destructiveIdempotentClosed world
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 onlyNon-destructiveIdempotentClosed world
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 onlyNon-destructiveIdempotentClosed world
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 onlyNon-destructiveIdempotentClosed world
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 onlyNon-destructiveIdempotentClosed world
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 onlyNon-destructiveIdempotentClosed world
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 onlyNon-destructiveIdempotentClosed world
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 onlyNon-destructiveIdempotentClosed world
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 onlyNon-destructiveIdempotentClosed world
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 onlyNon-destructiveIdempotentClosed world
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 onlyNon-destructiveIdempotentClosed world
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 onlyNon-destructiveIdempotentClosed world
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 onlyNon-destructiveIdempotentClosed world
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 onlyNon-destructiveIdempotentClosed world
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 onlyNon-destructiveIdempotentClosed world
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 onlyNon-destructiveIdempotentClosed world
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 onlyNon-destructiveIdempotentClosed world
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 onlyNon-destructiveIdempotentClosed world
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 onlyNon-destructiveIdempotentClosed world

Resources 9

  • semiotic-behavior-contractssemiotic://behavior-contracts

    Agent-visible semantic rules for color precedence, required prop combinations, streaming refs, and renderability.

  • semiotic-build-infosemiotic://build-info

    Read-only deployment identity for this Semiotic MCP server.

  • semiotic-chatgpt-chart-widgetui://semiotic/chart-widget.html

    MCP Apps widget template for interactive Semiotic chart previews inside ChatGPT.

  • semiotic-componentssemiotic://components

    Renderable/browser-only component index with MCP categories.

  • semiotic-examplessemiotic://examples

    On-demand copy-paste examples for common Semiotic chart data shapes.

  • semiotic-schemasemiotic://schema

    Machine-readable JSON schema for all Semiotic AI chart components.

  • semiotic-schema-indexsemiotic://schema-index

    Compact component catalog with one-resource-per-component schema URIs.

  • semiotic-surface-manifestsemiotic://surface-manifest

    Generated inventory of schema components, AI exports, MCP renderability, tools, resources, and prompts.

  • semiotic-system-promptsemiotic://system-prompt

    Compact implementation guidance for AI assistants building with Semiotic.

Resource templates 1

  • semiotic-component-schemasemiotic://schema/{component}

    One component's prop schema, metadata, accessibility guidance, and behavior contracts.

Prompts 2

  • build-semiotic-chartbuild-semiotic-chart

    Workflow for choosing a chart, validating props, and rendering a preview.

  • debug-semiotic-chartdebug-semiotic-chart

    Workflow for diagnosing bad props, rendering failures, and chart-quality issues.

Remote endpoints

EndpointTransportAuthenticationHealthObserved
No verified remote endpoint is linked.

nteract/semiotic MCP Server questions

How do I install nteract/semiotic MCP Server?

Install the selected package version with: npm install --save-exact semiotic@3.9.2

What tools does nteract/semiotic MCP Server provide?

nteract/semiotic MCP Server exposed 19 tools during independent protocol observation, including applyTheme, auditAccessibility, auditMobileVisualization, diagnoseConfig, evaluateChart, getSchema, groundChart, interrogateChart, and others.

Is nteract/semiotic MCP Server secure?

The selected current version does not yet have completed public verification. Unknown does not mean clean or vulnerable.

Explore related MCP server guides

Curated product and capability guides containing this catalog record.

Official vs Community MCP Servers

Let’s talk about MCP security.

Share your details and our security team will contact you.