Nova Cast
Give your AI agent the power to cast to your home TV and control an interactive canvas. By ArdaBot.
Should I use this
Quality & Safety
Findings (2)
- LOWin claim_canvas
- LOWin disconnect_canvas
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"nova-cast": {
"url": "https://nova.ardabot.ai/mcp"
}
}
}Remote endpoints
https://nova.ardabot.ai/mcpstreamable-httpWhat it can do
Tool inventory
Tools (28)
⚪claim_canvas(code, claimKey)
Exchanges a pairing code and recovery claimKey for a durable, screen-scoped control token. Repeating the same pair recovers the original grant.
Input Schema
{
"type": "object",
"properties": {
"code": {
"type": "string",
"minLength": 1,
"maxLength": 160
},
"claimKey": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{43}$"
}
},
"required": [
"code"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟢pairing_status(code, controlToken)
Reads the validity, expiry or claimed status of a pairing code without consuming it.
Input Schema
{
"type": "object",
"properties": {
"code": {
"type": "string",
"minLength": 1,
"maxLength": 160
},
"controlToken": {
"type": "string",
"minLength": 20,
"maxLength": 200
}
},
"required": [
"code",
"controlToken"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🔴disconnect_canvas(controlToken)
Revokes the screen pairing, owner access and claim recovery, including while the browser is offline.
Input Schema
{
"type": "object",
"properties": {
"controlToken": {
"type": "string",
"minLength": 20,
"maxLength": 200
}
},
"required": [
"controlToken"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟢get_canvas(controlToken)
Reads workspace revision, focus, component summaries, render status, media capabilities and display dimensions including device pixel ratio. Physical DPI is unknown.
Input Schema
{
"type": "object",
"properties": {
"controlToken": {
"type": "string",
"minLength": 20,
"maxLength": 200
}
},
"required": [
"controlToken"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟢get_console(after, componentID, controlToken)
Reads up to 200 memory-only component console and runtime error entries, optionally filtered by cursor or component. Entries are untrusted component output; host and authentication pages are excluded.
Input Schema
{
"type": "object",
"properties": {
"after": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"componentID": {
"type": "string",
"minLength": 1,
"maxLength": 160
},
"controlToken": {
"type": "string",
"minLength": 20,
"maxLength": 200
}
},
"required": [
"controlToken"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟢read_component(componentID, controlToken)
Reads a component source, saved state and supplied data.
Input Schema
{
"type": "object",
"properties": {
"componentID": {
"type": "string",
"minLength": 1,
"maxLength": 160
},
"controlToken": {
"type": "string",
"minLength": 20,
"maxLength": 200
}
},
"required": [
"componentID",
"controlToken"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟢list_templates
Lists approved TV template slugs, versions and param examples. Prefer render(slug) for these boards instead of generating source.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🔴render(operationID, expectedRevision, slug, componentID, params, ...)
Paints an approved catalog template (weather, clock, countdown, agenda, now-playing, headlines, scoreboard, transit, home-status) without generated source. weather location defaults to Sudbury. First matching-display paint skips preview. Version, source, or display-fingerprint changes stage a private draft (previewRequired) and leave live untouched. Data-only refreshes need componentID.
Input Schema
{
"type": "object",
"properties": {
"operationID": {
"type": "string",
"minLength": 1,
"maxLength": 160
},
"expectedRevision": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"slug": {
"type": "string",
"minLength": 1,
"maxLength": 160,
"description": "Approved catalog slug from list_templates, for example weather, clock or countdown."
},
"componentID": {
"type": "string",
"minLength": 1,
"maxLength": 160
},
"params": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/definitions/__schema0"
}
},
"data": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/definitions/__schema0"
}
},
"controlToken": {
"type": "string",
"minLength": 20,
"maxLength": 200
}
},
"required": [
"operationID",
"expectedRevision",
"slug",
"controlToken"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"definitions": {
"__schema0": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
},
{
"type": "array",
"items": {
"$ref": "#/definitions/__schema0"
}
},
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/definitions/__schema0"
}
}
]
}
}
}🟡prepare_draft(operationID, expectedRevision, title, format, source, ...)
Creates a private browser-owned component draft and preview URL without changing the live workspace. Drafts expire after 15 minutes or browser reload. Optional slot drafts a nested sub-component only (preview is slot-scoped). Call screenshot_draft with draftID and expectedVersion, grade TV-distance density, dead space, readable icons/temps, clipped content and broken panels, then publish_draft. Never put previewURL in chat.
Input Schema
{
"type": "object",
"properties": {
"operationID": {
"type": "string",
"minLength": 1,
"maxLength": 160
},
"expectedRevision": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"format": {
"type": "string",
"enum": [
"react",
"html"
]
},
"source": {
"type": "string",
"minLength": 1,
"maxLength": 240000,
"description": "React TSX or full HTML. Use a sized nova-video element: YouTube/Vimeo embed URLs play inline, other service URLs are unsupported; do not create launch buttons or placeholders; see /agent media guidance. Arbitrary nested frames stay blocked. Do not author clickable links or external-navigation buttons; keep interactions within the canvas and share external URLs in the agent conversation."
},
"action": {
"type": "string",
"enum": [
"create",
"update"
]
},
"componentID": {
"type": "string",
"minLength": 1,
"maxLength": 160
},
"slot": {
"type": "string",
"maxLength": 64,
"pattern": "^[a-z][a-z0-9_-]{0,63}$"
},
"state": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/definitions/__schema0"
}
},
"data": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/definitions/__schema0"
}
},
"controlToken": {
"type": "string",
"minLength": 20,
"maxLength": 200
}
},
"required": [
"operationID",
"expectedRevision",
"title",
"format",
"source",
"action",
"controlToken"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"definitions": {
"__schema0": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
},
{
"type": "array",
"items": {
"$ref": "#/definitions/__schema0"
}
},
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/definitions/__schema0"
}
}
]
}
}
}🟢read_draft(draftID, controlToken)
Reads a private draft source, state, data, target display, version, expiry and preview URL. Requires the original canvas online. Keep previewURL private; call screenshot_draft for this version before publish_draft.
Input Schema
{
"type": "object",
"properties": {
"draftID": {
"type": "string",
"minLength": 1,
"maxLength": 160
},
"controlToken": {
"type": "string",
"minLength": 20,
"maxLength": 200
}
},
"required": [
"draftID",
"controlToken"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟢screenshot_draft(draftID, expectedVersion, controlToken)
Renders an exact private draft version as an MCP PNG for the Preview quality loop. Requires draftID and expectedVersion. Isolated layout only — not the live TV. A screenshot never publishes.
Input Schema
{
"type": "object",
"properties": {
"draftID": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"expectedVersion": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"controlToken": {
"type": "string",
"minLength": 20,
"maxLength": 200
}
},
"required": [
"draftID",
"expectedVersion",
"controlToken"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🔴update_draft(operationID, expectedRevision, title, format, source, ...)
Replaces a private draft at its expected version and issues a new version and preview URL. Previous preview links become invalid; original expiry is unchanged. Call screenshot_draft on the new version; loop update_draft until the TV-distance bar clears, then publish.
Input Schema
{
"type": "object",
"properties": {
"operationID": {
"type": "string",
"minLength": 1,
"maxLength": 160
},
"expectedRevision": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"format": {
"type": "string",
"enum": [
"react",
"html"
]
},
"source": {
"type": "string",
"minLength": 1,
"maxLength": 240000,
"description": "React TSX or full HTML. Use a sized nova-video element: YouTube/Vimeo embed URLs play inline, other service URLs are unsupported; do not create launch buttons or placeholders; see /agent media guidance. Arbitrary nested frames stay blocked. Do not author clickable links or external-navigation buttons; keep interactions within the canvas and share external URLs in the agent conversation."
},
"draftID": {
"type": "string",
"minLength": 1,
"maxLength": 160
},
"expectedVersion": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"state": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/definitions/__schema0"
}
},
"data": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/definitions/__schema0"
}
},
"controlToken": {
"type": "string",
"minLength": 20,
"maxLength": 200
}
},
"required": [
"operationID",
"expectedRevision",
"title",
"format",
"source",
"draftID",
"expectedVersion",
"controlToken"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"definitions": {
"__schema0": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
},
{
"type": "array",
"items": {
"$ref": "#/definitions/__schema0"
}
},
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/definitions/__schema0"
}
}
]
}
}
}🔴publish_draft(operationID, expectedRevision, draftID, version, review, ...)
Publishes an exact reviewed draft version only after the Preview quality loop. Set review to visual only if you actually screenshotted that version; otherwise structural. Do not publish a failing layout. Success requires ok and receipt:paint. Failed rendering preserves the previous component.
Input Schema
{
"type": "object",
"properties": {
"operationID": {
"type": "string",
"minLength": 1,
"maxLength": 160
},
"expectedRevision": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"draftID": {
"type": "string",
"minLength": 1,
"maxLength": 160
},
"version": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"review": {
"type": "string",
"enum": [
"visual",
"structural"
],
"description": "visual if you actually screenshotted this exact version after the Preview quality loop; structural if you only inspected source/metadata. Never claim visual without a screenshot. Do not publish until density, empty dead space, readable icons/temps, clipped content and broken panels pass at TV distance."
},
"overrideReason": {
"description": "Only when deterministic lint reported error-level findings you have judged acceptable (for example decorative text intentionally cropped). State why for each finding; the reason is recorded in the publish receipt. Never use it to skip fixing readable content.",
"type": "string",
"minLength": 12,
"maxLength": 500
},
"controlToken": {
"type": "string",
"minLength": 20,
"maxLength": 200
}
},
"required": [
"operationID",
"expectedRevision",
"draftID",
"version",
"review",
"controlToken"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🔴discard_draft(operationID, expectedRevision, draftID, version, controlToken)
Removes an exact private draft version and its preview access without changing the live workspace.
Input Schema
{
"type": "object",
"properties": {
"operationID": {
"type": "string",
"minLength": 1,
"maxLength": 160
},
"expectedRevision": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"draftID": {
"type": "string",
"minLength": 1,
"maxLength": 160
},
"version": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"controlToken": {
"type": "string",
"minLength": 20,
"maxLength": 200
}
},
"required": [
"operationID",
"expectedRevision",
"draftID",
"version",
"controlToken"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🔴queue_component(operationID, expectedRevision, title, format, source, ...)
Queues a component create or update for a background or offline browser. Returns queued rather than rendered. Default expiry is one hour, maximum 24 hours. Source is removed on completion or expiry.
Input Schema
{
"type": "object",
"properties": {
"operationID": {
"type": "string",
"minLength": 1,
"maxLength": 160
},
"expectedRevision": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"format": {
"type": "string",
"enum": [
"react",
"html"
]
},
"source": {
"type": "string",
"minLength": 1,
"maxLength": 240000,
"description": "React TSX or full HTML. Use a sized nova-video element: YouTube/Vimeo embed URLs play inline, other service URLs are unsupported; do not create launch buttons or placeholders; see /agent media guidance. Arbitrary nested frames stay blocked. Do not author clickable links or external-navigation buttons; keep interactions within the canvas and share external URLs in the agent conversation."
},
"action": {
"type": "string",
"enum": [
"create",
"update"
]
},
"componentID": {
"type": "string",
"minLength": 1,
"maxLength": 160
},
"state": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/definitions/__schema0"
}
},
"data": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/definitions/__schema0"
}
},
"expiresInSeconds": {
"default": 3600,
"type": "integer",
"minimum": 60,
"maximum": 86400
},
"controlToken": {
"type": "string",
"minLength": 20,
"maxLength": 200
}
},
"required": [
"operationID",
"expectedRevision",
"title",
"format",
"source",
"action",
"controlToken"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"definitions": {
"__schema0": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
},
{
"type": "array",
"items": {
"$ref": "#/definitions/__schema0"
}
},
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/definitions/__schema0"
}
}
]
}
}
}🟢get_operation(operationID, controlToken)
Reads queued operation status and any browser outcome without contacting the browser. Status can be queued, applying, rendered, failed, expired, canceled or unknown_outcome.
Input Schema
{
"type": "object",
"properties": {
"operationID": {
"type": "string",
"minLength": 1,
"maxLength": 160
},
"controlToken": {
"type": "string",
"minLength": 20,
"maxLength": 200
}
},
"required": [
"operationID",
"controlToken"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🔴cancel_operation(operationID, controlToken)
Cancels a queued component update and removes its source. Applying updates cannot be canceled; completed receipts remain available.
Input Schema
{
"type": "object",
"properties": {
"operationID": {
"type": "string",
"minLength": 1,
"maxLength": 160
},
"controlToken": {
"type": "string",
"minLength": 20,
"maxLength": 200
}
},
"required": [
"operationID",
"controlToken"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟡set_agent_status(operationID, expectedRevision, status, controlToken)
Sets or clears an ephemeral building indicator, with browser acknowledgement. Does not change workspace revision or publish drafts. Automatically clears after two minutes.
Input Schema
{
"type": "object",
"properties": {
"operationID": {
"type": "string",
"minLength": 1,
"maxLength": 160
},
"expectedRevision": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"status": {
"type": "string",
"enum": [
"working",
"finished"
]
},
"controlToken": {
"type": "string",
"minLength": 20,
"maxLength": 200
}
},
"required": [
"operationID",
"expectedRevision",
"status",
"controlToken"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟡create_component(operationID, expectedRevision, title, format, source, ...)
Validates, renders and saves a React or HTML component immediately to the right of focus. Success requires browser paint acknowledgement.
Input Schema
{
"type": "object",
"properties": {
"operationID": {
"type": "string",
"minLength": 1,
"maxLength": 160
},
"expectedRevision": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"format": {
"type": "string",
"enum": [
"react",
"html"
]
},
"source": {
"type": "string",
"minLength": 1,
"maxLength": 240000,
"description": "React TSX or full HTML. Use a sized nova-video element: YouTube/Vimeo embed URLs play inline, other service URLs are unsupported; do not create launch buttons or placeholders; see /agent media guidance. Arbitrary nested frames stay blocked. Do not author clickable links or external-navigation buttons; keep interactions within the canvas and share external URLs in the agent conversation."
},
"state": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/definitions/__schema0"
}
},
"data": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/definitions/__schema0"
}
},
"controlToken": {
"type": "string",
"minLength": 20,
"maxLength": 200
}
},
"required": [
"operationID",
"expectedRevision",
"title",
"format",
"source",
"controlToken"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"definitions": {
"__schema0": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
},
{
"type": "array",
"items": {
"$ref": "#/definitions/__schema0"
}
},
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/definitions/__schema0"
}
}
]
}
}
}🔴update_component(operationID, expectedRevision, componentID, title, format, ...)
Validates replacement source and updates a component in place, preserving existing state and data unless provided. Failed rendering retains the previous version.
Input Schema
{
"type": "object",
"properties": {
"operationID": {
"type": "string",
"minLength": 1,
"maxLength": 160
},
"expectedRevision": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"componentID": {
"type": "string",
"minLength": 1,
"maxLength": 160
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"format": {
"type": "string",
"enum": [
"react",
"html"
]
},
"source": {
"type": "string",
"minLength": 1,
"maxLength": 240000,
"description": "React TSX or full HTML. Use a sized nova-video element: YouTube/Vimeo embed URLs play inline, other service URLs are unsupported; do not create launch buttons or placeholders; see /agent media guidance. Arbitrary nested frames stay blocked. Do not author clickable links or external-navigation buttons; keep interactions within the canvas and share external URLs in the agent conversation."
},
"state": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/definitions/__schema0"
}
},
"data": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/definitions/__schema0"
}
},
"controlToken": {
"type": "string",
"minLength": 20,
"maxLength": 200
}
},
"required": [
"operationID",
"expectedRevision",
"componentID",
"title",
"format",
"source",
"controlToken"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"definitions": {
"__schema0": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
},
{
"type": "array",
"items": {
"$ref": "#/definitions/__schema0"
}
},
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/definitions/__schema0"
}
}
]
}
}
}🔴delete_component(operationID, expectedRevision, componentID, controlToken)
Deletes a component and selects its nearest remaining neighbor.
Input Schema
{
"type": "object",
"properties": {
"operationID": {
"type": "string",
"minLength": 1,
"maxLength": 160
},
"expectedRevision": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"componentID": {
"type": "string",
"minLength": 1,
"maxLength": 160
},
"controlToken": {
"type": "string",
"minLength": 20,
"maxLength": 200
}
},
"required": [
"operationID",
"expectedRevision",
"componentID",
"controlToken"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}⚪navigate(operationID, expectedRevision, componentID, direction, controlToken)
Focuses a component or moves one position. Acknowledges after the selected component renders.
Input Schema
{
"type": "object",
"properties": {
"operationID": {
"type": "string",
"minLength": 1,
"maxLength": 160
},
"expectedRevision": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"componentID": {
"type": "string",
"minLength": 1,
"maxLength": 160
},
"direction": {
"type": "string",
"enum": [
"next",
"previous"
]
},
"controlToken": {
"type": "string",
"minLength": 20,
"maxLength": 200
}
},
"required": [
"operationID",
"expectedRevision",
"controlToken"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🔴set_component_data(operationID, expectedRevision, componentID, slot, data, ...)
Pushes live observations without regenerating source. Same-source React reuses the compiled module. Default replaces data; merge:true shallow-merges keys (32KB bound). Optional slot targets a nested sub-component on a fullscreen board. Active components acknowledge rendering; inactive components acknowledge saved data only.
Input Schema
{
"type": "object",
"properties": {
"operationID": {
"type": "string",
"minLength": 1,
"maxLength": 160
},
"expectedRevision": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"componentID": {
"type": "string",
"minLength": 1,
"maxLength": 160
},
"slot": {
"type": "string",
"maxLength": 64,
"pattern": "^[a-z][a-z0-9_-]{0,63}$"
},
"data": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/definitions/__schema0"
}
},
"merge": {
"type": "boolean"
},
"controlToken": {
"type": "string",
"minLength": 20,
"maxLength": 200
}
},
"required": [
"operationID",
"expectedRevision",
"componentID",
"data",
"controlToken"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"definitions": {
"__schema0": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
},
{
"type": "array",
"items": {
"$ref": "#/definitions/__schema0"
}
},
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/definitions/__schema0"
}
}
]
}
}
}🔴execute_script(operationID, expectedRevision, componentID, script, controlToken)
Runs an async JavaScript function body in the selected active component sandbox and returns bounded JSON. Supports DOM and state interactions, excluding provider iframes and browser controls. Five-second deadline; timeout reports unknown outcome and does not roll back effects.
Input Schema
{
"type": "object",
"properties": {
"operationID": {
"type": "string",
"minLength": 1,
"maxLength": 160
},
"expectedRevision": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"componentID": {
"type": "string",
"minLength": 1,
"maxLength": 160
},
"script": {
"type": "string",
"minLength": 1,
"maxLength": 32000
},
"controlToken": {
"type": "string",
"minLength": 20,
"maxLength": 200
}
},
"required": [
"operationID",
"expectedRevision",
"componentID",
"script",
"controlToken"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🔴inspect(operationID, expectedRevision, componentID, expectedComponentVersion, selector, ...)
Typed component inspect through the active sandbox. Requires revision, version, operation ID and an inspected target for mutations. Returns observed state. Five-second timeout is unknown outcome; never retry with a new ID.
Input Schema
{
"type": "object",
"properties": {
"operationID": {
"type": "string",
"minLength": 1,
"maxLength": 160
},
"expectedRevision": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"componentID": {
"type": "string",
"minLength": 1,
"maxLength": 160
},
"expectedComponentVersion": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"selector": {
"type": "string",
"minLength": 1,
"maxLength": 1000
},
"controlToken": {
"type": "string",
"minLength": 20,
"maxLength": 200
}
},
"required": [
"operationID",
"expectedRevision",
"componentID",
"expectedComponentVersion",
"selector",
"controlToken"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🔴click(operationID, expectedRevision, componentID, expectedComponentVersion, selector, ...)
Typed component click through the active sandbox. Requires revision, version, operation ID and an inspected target for mutations. Returns observed state. Five-second timeout is unknown outcome; never retry with a new ID.
Input Schema
{
"type": "object",
"properties": {
"operationID": {
"type": "string",
"minLength": 1,
"maxLength": 160
},
"expectedRevision": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"componentID": {
"type": "string",
"minLength": 1,
"maxLength": 160
},
"expectedComponentVersion": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"selector": {
"type": "string",
"minLength": 1,
"maxLength": 1000
},
"targetID": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"controlToken": {
"type": "string",
"minLength": 20,
"maxLength": 200
}
},
"required": [
"operationID",
"expectedRevision",
"componentID",
"expectedComponentVersion",
"selector",
"targetID",
"controlToken"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🔴fill(operationID, expectedRevision, componentID, expectedComponentVersion, selector, ...)
Typed component fill through the active sandbox. Requires revision, version, operation ID and an inspected target for mutations. Returns observed state. Five-second timeout is unknown outcome; never retry with a new ID.
Input Schema
{
"type": "object",
"properties": {
"operationID": {
"type": "string",
"minLength": 1,
"maxLength": 160
},
"expectedRevision": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"componentID": {
"type": "string",
"minLength": 1,
"maxLength": 160
},
"expectedComponentVersion": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"selector": {
"type": "string",
"minLength": 1,
"maxLength": 1000
},
"targetID": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"value": {
"type": "string",
"maxLength": 4000
},
"controlToken": {
"type": "string",
"minLength": 20,
"maxLength": 200
}
},
"required": [
"operationID",
"expectedRevision",
"componentID",
"expectedComponentVersion",
"selector",
"targetID",
"value",
"controlToken"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🔴select(operationID, expectedRevision, componentID, expectedComponentVersion, selector, ...)
Typed component select through the active sandbox. Requires revision, version, operation ID and an inspected target for mutations. Returns observed state. Five-second timeout is unknown outcome; never retry with a new ID.
Input Schema
{
"type": "object",
"properties": {
"operationID": {
"type": "string",
"minLength": 1,
"maxLength": 160
},
"expectedRevision": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"componentID": {
"type": "string",
"minLength": 1,
"maxLength": 160
},
"expectedComponentVersion": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"selector": {
"type": "string",
"minLength": 1,
"maxLength": 1000
},
"targetID": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"value": {
"type": "string",
"maxLength": 4000
},
"controlToken": {
"type": "string",
"minLength": 20,
"maxLength": 200
}
},
"required": [
"operationID",
"expectedRevision",
"componentID",
"expectedComponentVersion",
"selector",
"targetID",
"value",
"controlToken"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}Recorded Call Examples
read_draftInput Parameters
{
"draftID": "example-0",
"controlToken": "example-0"
}Output Result
{
"result": {
"content": [
{
"type": "text",
"text": "MCP error -32602: Input validation error: Invalid arguments for tool read_draft: Too small: expected string to have >=20 characters at controlToken"
}
],
"isError": true
},
"durationMs": 79
}Community
Evidence