OODS Foundry is an object-oriented design system that extends the one you already have.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Draw and certify a chart from the input in chart, using matching data, brand and theme. Returns the same result as viz_render: hashes, warnings and the certification verdict, including accessibility equivalence, determinism, contrast and accuracy. Optional chart.output fields add SVG, the accessible table and narrative, or the normalized specification. A verdict can be conformant false; each pillar explains its result.
Include the command and calls for reproducing this result.
Draw and certify a chart from the input in chart, using matching data, brand and theme. Returns the same result as viz_render: hashes, warnings and the certification verdict, including accessibility equivalence, determinism, contrast and accuracy. Optional chart.output fields add SVG, the accessible table and narrative, or the normalized specification. A verdict can be conformant false; each pillar explains its result.
| Argument | Type | Description |
|---|---|---|
| chart* | object | |
| reproduce | boolean | Include the command and calls for reproducing this result. |
{
"type": "object",
"required": [
"chart"
],
"properties": {
"chart": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Optional stable identifier for the produced spec."
},
"geo": {
"type": "object",
"description": "Inline geojson or topojson with topoObjectName, rows, join and valueField; optional point or flow fields. tool_schema gives the full contract."
},
"name": {
"type": "string",
"description": "Optional human-friendly chart title."
},
"rows": {
"type": "array",
"items": {
"type": "object",
"description": "rows item.",
"additionalProperties": true
},
"maxItems": 500,
"minItems": 1,
"description": "Inline flat data rows."
},
"brand": {
"enum": [
"A",
"B"
],
"type": "string",
"default": "A",
"description": "Token brand for drawing and certification."
},
"chord": {
"type": "object",
"description": "Chord input: {nodes:[{name}],links:[{source,target,value}]}; links refer to node names; each directed pair must be unique."
},
"theme": {
"enum": [
"light",
"dark",
"hc"
],
"type": "string",
"default": "light",
"description": "Colour theme for drawing and certification."
},
"intent": {
"type": "object",
"description": "Structured request: goal, measures and dimensions, with optional chartFamily; uses rows instead of explicit chartType and encodings."
},
"output": {
"type": "object",
"required": [],
"properties": {
"svg": {
"type": "boolean",
"default": false,
"description": "Include the SVG drawing, for displaying the chart."
},
"width": {
"type": "integer",
"maximum": 2000,
"minimum": 100,
"description": "Drawing width in pixels."
},
"height": {
"type": "integer",
"maximum": 2000,
"minimum": 100,
"description": "Drawing height in pixels."
},
"includeA11y": {
"type": "boolean",
"default": false,
"description": "Include the accessible data table and narrative."
},
"includeNormalizedSpec": {
"type": "boolean",
"default": false,
"description": "Include the normalized chart specification."
}
},
"description": "Optional outputs; default reply has hashes and certification.",
"additionalProperties": false
},
"sankey": {
"type": "object",
"description": "Sankey input: {nodes:[{name}],links:[{source,target,value}]}; links refer to node names. Use chartType:\"sankey\"."
},
"network": {
"type": "object",
"description": "Force graph: nodes [{id,group}] and links [{source,target,value}], at most 250 nodes."
},
"opacity": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "Constant mark opacity for Cartesian charts only; omission keeps renderer defaults."
},
"pattern": {
"enum": [
"pattern:viz:bubble-distribution",
"pattern:viz:correlation-matrix",
"pattern:viz:correlation-scatter",
"pattern:viz:detail-overview-bar",
"pattern:viz:diverging-bar",
"pattern:viz:drilldown-stacked-bar",
"pattern:viz:facet-small-multiples-line",
"pattern:viz:facet-target-band",
"pattern:viz:focus-context-line",
"pattern:viz:grouped-bar",
"pattern:viz:histogram",
"pattern:viz:layered-line-area",
"pattern:viz:multi-series-line",
"pattern:viz:running-total-area",
"pattern:viz:simple-bar",
"pattern:viz:stacked-100-bar",
"pattern:viz:stacked-area-projection",
"pattern:viz:stacked-bar",
"pattern:viz:target-band-line",
"pattern:viz:time-grid-heatmap",
"pattern:viz:waterfall"
],
"type": "string",
"description": "Exact registered pattern identity; preserves source data and presentation. Cannot combine with chartType, data, intent or identity/presentation overrides."
},
"chartType": {
"enum": [
"bar",
"line",
"area",
"scatter",
"heatmap",
"treemap",
"sunburst",
"sankey",
"force_graph",
"choropleth",
"bubble_map",
"flow_map",
"chord"
],
"type": "string",
"description": "Chart family; Cartesian types need rows and encodings, others their named input. Omit to suggest from rows."
},
"encodings": {
"type": "object",
"properties": {
"x": {
"type": [
"string",
"object"
],
"description": "Field name or binding."
},
"y": {
"type": [
"string",
"object"
],
"description": "Field name or binding."
},
"size": {
"type": [
"string",
"object"
],
"description": "Field name or binding."
},
"color": {
"type": [
"string",
"object"
],
"description": "Field name or binding."
},
"shape": {
"type": [
"string",
"object"
],
"description": "Field name or binding."
},
"detail": {
"type": [
"string",
"object"
],
"description": "Field name or binding."
}
},
"description": "Cartesian bindings: each needs field; optional type, aggregate, title, format (d3-format), currency (ISO 4217).",
"additionalProperties": false
},
"hierarchy": {
"type": "object",
"description": "Treemap/sunburst: {type:\"nested\",data:{name,value,children}} or {type:\"adjacency_list\",data:[{id,parentId,value}]}. See full schema."
},
"description": {
"type": "string",
"description": "Optional override for the synthesized accessibility description. When omitted, a non-empty description is generated from the encodings."
},
"strictFields": {
"type": "boolean",
"default": false,
"description": "Warn about unresolved fields and unmatched map joins (OODS-V131/V134). Default false preserves existing behavior."
},
"a11yEquivalence": {
"type": "boolean",
"default": true,
"description": "Check Vega-Lite accessible equivalents (default true). Errors stop rendering; warnings are returned. ECharts-primary scaffolds are not checked here."
}
},
"additionalProperties": false
},
"reproduce": {
"type": "boolean",
"default": false,
"description": "Include the command and calls for reproducing this result."
}
},
"additionalProperties": false
}Read components a page at a time. category, trait, context and status filter the list; status describes the HTML renderer. detail is brief by default, or full when filtering; summary includes tags, contexts, regions and traits. Brief and summary allow up to 200 entries; full clamps pageSize to 10 and reports the adjustment. totalCount, hasMore and nextPage describe pagination. object_registry reads objects instead.
| Argument | Type | Description |
|---|---|---|
| page | integer | 1-based page index for pagination. |
| trait | string | Filter components by trait (e.g., 'Editable', 'Searchable') |
| detail | string | Defaults to brief unfiltered, full with filters. Both defaults are paged (filtered: 10 entries). summary adds tags, contexts, regions and traits; full includes evidence. Explicit detail without paging preserves the unbounded legacy request. |
| status | string | Filter by legacy static-HTML status only: 'stable' = mapped HTML renderer; 'planned' = HTML fallback. Consult productReality.surfaces for React/Vue, generated-consumer and maturity evidence. |
| context | string | Filter components by context (e.g., 'detail', 'list') |
| category | string | Filter components by category (e.g., 'core', 'lifecycle', 'visual') |
| pageSize |
Look up a recorded screen by object, context and framework. Returns its running screen URL, content hash, brand and theme. No new screen is generated. object_registry reads the definition behind the screen. Set reproduce true when the command and calls used to generate it are requested.
| Argument | Type | Description |
|---|---|---|
| object* | string | An object with recorded screens at this version. |
| context | string | The context the screen was composed for. |
| framework | string | The framework of the generated app. |
| reproduce | boolean | Include the command and calls for reproducing this result. |
{
"type": "object",
"required": [
"object"
],
"properties": {
"object": {
"enum": [
"Article",
"Invoice",
"Media",
"Organization",
"Plan",
"Product",
"Relationship",
"Subscription",
"Transaction",
"Usage",
"User"
],
"type": "string",
"description": "An object with recorded screens at this version."
},
"context": {
"enum": [
"detail",
"list",
"form",
"timeline",
"card",
"inline",
"workflow"
],
"type": "string",
"default": "detail",
"description": "The context the screen was composed for."
},
"framework": {
"enum": [
"react",
"vue"
],
"type": "string",
"default": "react",
"description": "The framework of the generated app."
},
"reproduce": {
"type": "boolean",
"default": false,
"description": "Include the command and calls for reproducing this result."
}
},
"additionalProperties": false
}Read the running service status, pinned version, registry counts, built brands, themes, token scopes and retained proof summaries. Uptime and latency are current process measurements; host paths are omitted. includeChangelog adds the DSL changelog, and sinceVersion keeps entries after that version. catalog_list and object_registry read the definitions behind the counts.
| Argument | Type | Description |
|---|---|---|
| reproduce | boolean | Include the command and calls for reproducing this result. |
| sinceVersion | string | When provided with includeChangelog, only return changelog entries since this version. |
| includeChangelog | boolean | When true, include DSL version changelog in the response. |
{
"type": "object",
"properties": {
"reproduce": {
"type": "boolean",
"default": false,
"description": "Include the command and calls for reproducing this result."
},
"sinceVersion": {
"type": "string",
"description": "When provided with includeChangelog, only return changelog entries since this version."
},
"includeChangelog": {
"type": "boolean",
"default": false,
"description": "When true, include DSL version changelog in the response."
}
},
"additionalProperties": false
}Read objects from the pinned registry. action list returns names, traits and field counts; domain, trait and maturity filter them, and includeInternal adds internal objects. action show requires name and returns its composed definition; context narrows view extensions. registry_snapshot provides an overview; design_preview looks up recorded screens.
| Argument | Type | Description |
|---|---|---|
| name | string | Object name to look up (e.g. 'User', 'Product', 'Invoice') |
| trait | string | Filter to objects composing a given trait (e.g. 'Priceable', 'lifecycle/Stateful') |
| action* | string | List objects or show one composed definition. |
| domain | string | Filter to objects in a specific domain (e.g. 'core.identity', 'saas.billing') |
| context | string | Optional: filter view_extensions to a single context (e.g. 'detail', 'list', 'form', 'timeline', 'card', 'inline') |
| maturity | string | Filter by metadata maturity level |
| reproduce | boolean | Include the command and calls for reproducing this result. |
| includeInternal |
Read the registry summary: active objects and traits, loaded names, loader issues, etag and generatedAt. detail full includes definitions; names narrows them. includeInternal adds internal objects. Replies larger than 100,000 characters are refused with their size. object_registry reads one composed object; catalog_list reads components.
| Argument | Type | Description |
|---|---|---|
| names | array | Exact trait and object names; misses go in notFound. |
| detail | string | summary (default), or full definitions, best with names. |
| reproduce | boolean | Include the command and calls for reproducing this result. |
| includeInternal | boolean | Also list OODS Foundry's internal (non-business) objects, after the business objects. Without it they are left out and registry.hiddenInternal counts them. |
{
"type": "object",
"title": "registry_snapshot input",
"properties": {
"names": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"minItems": 1,
"description": "Exact trait and object names; misses go in notFound.",
"uniqueItems": true
},
"detail": {
"enum": [
"summary",
"full"
],
"type": "string",
"default": "summary",
"description": "summary (default), or full definitions, best with names."
},
"reproduce": {
"type": "boolean",
"default": false,
"description": "Include the command and calls for reproducing this result."
},
"includeInternal": {
"type": "boolean",
"default": false,
"description": "Also list OODS Foundry's internal (non-business) objects, after the business objects. Without it they are left out and registry.hiddenInternal counts them."
}
},
"description": "Bulk-read recorded mappings plus live shipped and registered team traits and objects. Reports definition loader issues, including shadowed names. The default summary leaves out each trait's and object's schema, parameters, view extensions, semantics, tokens and metadata; detail full returns them, optionally only for named traits and objects. Draft preferred_terms, disambiguation_decisions and capabilities are not snapshot outputs.",
"additionalProperties": false
}Read the tokens or manifest dataset. Full data is the default; detail summary returns section counts and the first page call. page reads lossless JSON Pointer entries; pageSize defaults to 10, at most 100, also bounded by size. meta.next continues and meta.full requests full data. includePayload false returns metadata; listVersions lists dates, version selects one, and ifNoneMatch returns matched true without unchanged payload. catalog_list reads components.
| Argument | Type | Description |
|---|---|---|
| page | integer | Dataset only: read a 1-based page of lossless JSON Pointer entries, each reply below 100,000 characters. Omit for full data. |
| detail | string | Dataset only. summary returns section counts and the call for page 1; full (default) preserves the dataset. |
| dataset* | string | Registry dataset to return. |
| version | string | Request a specific date-stamped version (e.g., '2026-02-24'). Omit for latest. Applies to dataset mode only. |
| pageSize | integer | Dataset entries per page, default 10, also bounded by serialized size. Reply meta gives next and full calls. |
| reproduce | boolean | Include the command and calls for reproducing this result. |
Read a shipped tool schema by name and kind (input or output). Returns its JSON Schema, package-relative file, recorded file hash and source URL. tools/list describes this endpoint’s narrower accepted inputs; the full schema may describe operations outside the hosted tools.
| Argument | Type | Description |
|---|---|---|
| kind | string | The tool's input schema or its output schema. |
| name* | string | Any OODS Foundry tool at this version, local-only tools included. |
| reproduce | boolean | Include the command and calls for reproducing this result. |
{
"type": "object",
"required": [
"name"
],
"properties": {
"kind": {
"enum": [
"input",
"output"
],
"type": "string",
"default": "input",
"description": "The tool's input schema or its output schema."
},
"name": {
"enum": [
"tokens_build",
"structured_data_fetch",
"brand_apply",
"brand_create",
"brand_read",
"catalog_list",
"code_generate",
"design_compose",
"design_preview",
"design_versions",
"pipeline_run",
"health_check",
"registry_snapshot",
"viz_render",
"dashboard_render",
"artifact_certify",
"fidelity_preview",
"component_map",
"component_map_read",
"schema_store",
"schema_read",
"object_registry",
"object_register",
"schema_render",
"object_import",
"object_import_read",
"a11y_scan"
],
"type": "string",
"description": "Any OODS Foundry tool at this version, local-only tools included."
},
"reproduce": {
"type": "boolean",
"default": false,
"description": "Include the command and calls for reproducing this result."
}
},
"additionalProperties": false
}Draw and certify a chart from inline data. Provide chartType and encodings with rows, a pattern with its own data, or an intent to recommend a tabular chart. Brand and theme apply to drawing and certification. The compact reply contains hashes, warnings and certification; output.svg adds the SVG drawing, includeA11y adds the table and narrative, and includeNormalizedSpec adds its specification. Request SVG when a displayed chart is needed. Up to 500 rows; optional outputs still share the 100,000-character reply bound. artifact_certify returns the same drawing and checks for an input in chart.
| Argument | Type | Description |
|---|---|---|
| id | string | Optional stable identifier for the produced spec. |
| geo | object | Inline geojson or topojson with topoObjectName, rows, join and valueField; optional point or flow fields. tool_schema gives the full contract. |
| name | string | Optional human-friendly chart title. |
| rows | array | Inline flat data rows. |
| brand | string | Token brand for drawing and certification. |
| chord | object | Chord input: {nodes:[{name}],links:[{source,target,value}]}; links refer to node names; each directed pair must be unique. |
| theme | string |
| integer |
| Components per page. Filtered calls without detail default to 10; nextPage gives the next call. |
| reproduce | boolean | Include the command and calls for reproducing this result. |
| includeInternal | boolean | Also list OODS Foundry's internal (non-business) objects in registry.objects, after the business objects. Without it they are left out and registry.hiddenInternal counts them. |
{
"type": "object",
"properties": {
"page": {
"type": "integer",
"maximum": 10000,
"minimum": 1,
"description": "1-based page index for pagination."
},
"trait": {
"type": "string",
"description": "Filter components by trait (e.g., 'Editable', 'Searchable')"
},
"detail": {
"enum": [
"brief",
"summary",
"full"
],
"type": "string",
"description": "Defaults to brief unfiltered, full with filters. Both defaults are paged (filtered: 10 entries). summary adds tags, contexts, regions and traits; full includes evidence. Explicit detail without paging preserves the unbounded legacy request."
},
"status": {
"enum": [
"stable",
"beta",
"planned"
],
"type": "string",
"description": "Filter by legacy static-HTML status only: 'stable' = mapped HTML renderer; 'planned' = HTML fallback. Consult productReality.surfaces for React/Vue, generated-consumer and maturity evidence."
},
"context": {
"type": "string",
"description": "Filter components by context (e.g., 'detail', 'list')"
},
"category": {
"type": "string",
"description": "Filter components by category (e.g., 'core', 'lifecycle', 'visual')"
},
"pageSize": {
"type": "integer",
"maximum": 200,
"minimum": 1,
"description": "Components per page. Filtered calls without detail default to 10; nextPage gives the next call."
},
"reproduce": {
"type": "boolean",
"default": false,
"description": "Include the command and calls for reproducing this result."
},
"includeInternal": {
"type": "boolean",
"default": false,
"description": "Also list OODS Foundry's internal (non-business) objects in registry.objects, after the business objects. Without it they are left out and registry.hiddenInternal counts them."
}
},
"additionalProperties": false
}| boolean |
| Also list OODS Foundry's internal (non-business) objects, after the business objects. Without it they are left out and hiddenInternal counts them. |
{
"type": "object",
"title": "object_registry input",
"required": [
"action"
],
"properties": {
"name": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9_-]*$",
"description": "Object name to look up (e.g. 'User', 'Product', 'Invoice')"
},
"trait": {
"type": "string",
"description": "Filter to objects composing a given trait (e.g. 'Priceable', 'lifecycle/Stateful')"
},
"action": {
"enum": [
"list",
"show"
],
"type": "string",
"description": "List objects or show one composed definition."
},
"domain": {
"type": "string",
"description": "Filter to objects in a specific domain (e.g. 'core.identity', 'saas.billing')"
},
"context": {
"type": "string",
"description": "Optional: filter view_extensions to a single context (e.g. 'detail', 'list', 'form', 'timeline', 'card', 'inline')"
},
"maturity": {
"enum": [
"draft",
"alpha",
"beta",
"stable"
],
"type": "string",
"description": "Filter by metadata maturity level"
},
"reproduce": {
"type": "boolean",
"default": false,
"description": "Include the command and calls for reproducing this result."
},
"includeInternal": {
"type": "boolean",
"default": false,
"description": "Also list OODS Foundry's internal (non-business) objects, after the business objects. Without it they are left out and hiddenInternal counts them."
}
},
"description": "Read object definitions from the pinned registry.",
"additionalProperties": false
}| ifNoneMatch |
| string |
| Return matched=true without payload when the ETag matches. |
| listVersions | boolean | When true, return available version dates instead of payload. |
| includePayload | boolean | When false, omit payload even if no ETag match occurs. |
{
"type": "object",
"title": "structured_data_fetch input",
"required": [
"dataset"
],
"properties": {
"page": {
"type": "integer",
"minimum": 1,
"description": "Dataset only: read a 1-based page of lossless JSON Pointer entries, each reply below 100,000 characters. Omit for full data."
},
"detail": {
"enum": [
"summary",
"full"
],
"type": "string",
"description": "Dataset only. summary returns section counts and the call for page 1; full (default) preserves the dataset."
},
"dataset": {
"enum": [
"tokens",
"manifest"
],
"type": "string",
"description": "Registry dataset to return."
},
"version": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Request a specific date-stamped version (e.g., '2026-02-24'). Omit for latest. Applies to dataset mode only."
},
"pageSize": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Dataset entries per page, default 10, also bounded by serialized size. Reply meta gives next and full calls."
},
"reproduce": {
"type": "boolean",
"default": false,
"description": "Include the command and calls for reproducing this result."
},
"ifNoneMatch": {
"type": "string",
"minLength": 8,
"description": "Return matched=true without payload when the ETag matches."
},
"listVersions": {
"type": "boolean",
"default": false,
"description": "When true, return available version dates instead of payload."
},
"includePayload": {
"type": "boolean",
"default": true,
"description": "When false, omit payload even if no ETag match occurs."
}
},
"description": "Read a pinned registry dataset or list its available versions.",
"additionalProperties": false
}| Colour theme for drawing and certification. |
| intent | object | Structured request: goal, measures and dimensions, with optional chartFamily; uses rows instead of explicit chartType and encodings. |
| output | object | Optional outputs; default reply has hashes and certification. |
| sankey | object | Sankey input: {nodes:[{name}],links:[{source,target,value}]}; links refer to node names. Use chartType:"sankey". |
| network | object | Force graph: nodes [{id,group}] and links [{source,target,value}], at most 250 nodes. |
| opacity | number | Constant mark opacity for Cartesian charts only; omission keeps renderer defaults. |
| pattern | string | Exact registered pattern identity; preserves source data and presentation. Cannot combine with chartType, data, intent or identity/presentation overrides. |
| chartType | string | Chart family; Cartesian types need rows and encodings, others their named input. Omit to suggest from rows. |
| encodings | object | Cartesian bindings: each needs field; optional type, aggregate, title, format (d3-format), currency (ISO 4217). |
| hierarchy | object | Treemap/sunburst: {type:"nested",data:{name,value,children}} or {type:"adjacency_list",data:[{id,parentId,value}]}. See full schema. |
| reproduce | boolean | Include the command and calls for reproducing this result. |
| description | string | Optional override for the synthesized accessibility description. When omitted, a non-empty description is generated from the encodings. |
| strictFields | boolean | Warn about unresolved fields and unmatched map joins (OODS-V131/V134). Default false preserves existing behavior. |
| a11yEquivalence | boolean | Check Vega-Lite accessible equivalents (default true). Errors stop rendering; warnings are returned. ECharts-primary scaffolds are not checked here. |
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Optional stable identifier for the produced spec."
},
"geo": {
"type": "object",
"description": "Inline geojson or topojson with topoObjectName, rows, join and valueField; optional point or flow fields. tool_schema gives the full contract."
},
"name": {
"type": "string",
"description": "Optional human-friendly chart title."
},
"rows": {
"type": "array",
"items": {
"type": "object",
"description": "rows item.",
"additionalProperties": true
},
"maxItems": 500,
"minItems": 1,
"description": "Inline flat data rows."
},
"brand": {
"enum": [
"A",
"B"
],
"type": "string",
"default": "A",
"description": "Token brand for drawing and certification."
},
"chord": {
"type": "object",
"description": "Chord input: {nodes:[{name}],links:[{source,target,value}]}; links refer to node names; each directed pair must be unique."
},
"theme": {
"enum": [
"light",
"dark",
"hc"
],
"type": "string",
"default": "light",
"description": "Colour theme for drawing and certification."
},
"intent": {
"type": "object",
"description": "Structured request: goal, measures and dimensions, with optional chartFamily; uses rows instead of explicit chartType and encodings."
},
"output": {
"type": "object",
"required": [],
"properties": {
"svg": {
"type": "boolean",
"default": false,
"description": "Include the SVG drawing, for displaying the chart."
},
"width": {
"type": "integer",
"maximum": 2000,
"minimum": 100,
"description": "Drawing width in pixels."
},
"height": {
"type": "integer",
"maximum": 2000,
"minimum": 100,
"description": "Drawing height in pixels."
},
"includeA11y": {
"type": "boolean",
"default": false,
"description": "Include the accessible data table and narrative."
},
"includeNormalizedSpec": {
"type": "boolean",
"default": false,
"description": "Include the normalized chart specification."
}
},
"description": "Optional outputs; default reply has hashes and certification.",
"additionalProperties": false
},
"sankey": {
"type": "object",
"description": "Sankey input: {nodes:[{name}],links:[{source,target,value}]}; links refer to node names. Use chartType:\"sankey\"."
},
"network": {
"type": "object",
"description": "Force graph: nodes [{id,group}] and links [{source,target,value}], at most 250 nodes."
},
"opacity": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "Constant mark opacity for Cartesian charts only; omission keeps renderer defaults."
},
"pattern": {
"enum": [
"pattern:viz:bubble-distribution",
"pattern:viz:correlation-matrix",
"pattern:viz:correlation-scatter",
"pattern:viz:detail-overview-bar",
"pattern:viz:diverging-bar",
"pattern:viz:drilldown-stacked-bar",
"pattern:viz:facet-small-multiples-line",
"pattern:viz:facet-target-band",
"pattern:viz:focus-context-line",
"pattern:viz:grouped-bar",
"pattern:viz:histogram",
"pattern:viz:layered-line-area",
"pattern:viz:multi-series-line",
"pattern:viz:running-total-area",
"pattern:viz:simple-bar",
"pattern:viz:stacked-100-bar",
"pattern:viz:stacked-area-projection",
"pattern:viz:stacked-bar",
"pattern:viz:target-band-line",
"pattern:viz:time-grid-heatmap",
"pattern:viz:waterfall"
],
"type": "string",
"description": "Exact registered pattern identity; preserves source data and presentation. Cannot combine with chartType, data, intent or identity/presentation overrides."
},
"chartType": {
"enum": [
"bar",
"line",
"area",
"scatter",
"heatmap",
"treemap",
"sunburst",
"sankey",
"force_graph",
"choropleth",
"bubble_map",
"flow_map",
"chord"
],
"type": "string",
"description": "Chart family; Cartesian types need rows and encodings, others their named input. Omit to suggest from rows."
},
"encodings": {
"type": "object",
"properties": {
"x": {
"type": [
"string",
"object"
],
"description": "Field name or binding."
},
"y": {
"type": [
"string",
"object"
],
"description": "Field name or binding."
},
"size": {
"type": [
"string",
"object"
],
"description": "Field name or binding."
},
"color": {
"type": [
"string",
"object"
],
"description": "Field name or binding."
},
"shape": {
"type": [
"string",
"object"
],
"description": "Field name or binding."
},
"detail": {
"type": [
"string",
"object"
],
"description": "Field name or binding."
}
},
"description": "Cartesian bindings: each needs field; optional type, aggregate, title, format (d3-format), currency (ISO 4217).",
"additionalProperties": false
},
"hierarchy": {
"type": "object",
"description": "Treemap/sunburst: {type:\"nested\",data:{name,value,children}} or {type:\"adjacency_list\",data:[{id,parentId,value}]}. See full schema."
},
"reproduce": {
"type": "boolean",
"default": false,
"description": "Include the command and calls for reproducing this result."
},
"description": {
"type": "string",
"description": "Optional override for the synthesized accessibility description. When omitted, a non-empty description is generated from the encodings."
},
"strictFields": {
"type": "boolean",
"default": false,
"description": "Warn about unresolved fields and unmatched map joins (OODS-V131/V134). Default false preserves existing behavior."
},
"a11yEquivalence": {
"type": "boolean",
"default": true,
"description": "Check Vega-Lite accessible equivalents (default true). Errors stop rendering; warnings are returned. ECharts-primary scaffolds are not checked here."
}
},
"additionalProperties": false
}