Nova Cast
Give your AI agent the power to cast to your home TV and control an interactive canvas. By ArdaBot.
Sollte ich dies verwenden
Qualität und Sicherheit
Befunde (2)
- LOWin claim_canvas
- LOWin disconnect_canvas
Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.
Kontextkosten
Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.
Installieren
Installation mit einem Klick
Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:
{
"mcpServers": {
"nova-cast": {
"url": "https://nova.ardabot.ai/mcp"
}
}
}Remote-Endpunkte
https://nova.ardabot.ai/mcpstreamable-httpWas es kann
Tool-Inventar
Tools (21)
⚪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.
Eingabe-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)
Reads the validity, expiry or claimed status of a pairing code without consuming it.
Eingabe-Schema
{
"type": "object",
"properties": {
"code": {
"type": "string",
"minLength": 1,
"maxLength": 160
}
},
"required": [
"code"
],
"$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.
Eingabe-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.
Eingabe-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.
Eingabe-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.
Eingabe-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
}🟡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. Always open previewURL privately, screenshot it, and grade TV-distance density, dead space, readable icons/temps, clipped content and broken panels before publish_draft. Never put previewURL in chat.
Eingabe-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"
}
},
"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; screenshot and grade this version before publish_draft.
Eingabe-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
}🔴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. Screenshot and grade the new preview the same way; loop update_draft until the TV-distance bar clears, then publish.
Eingabe-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.
Eingabe-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."
},
"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.
Eingabe-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.
Eingabe-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.
Eingabe-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.
Eingabe-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.
Eingabe-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.
Eingabe-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.
Eingabe-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.
Eingabe-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.
Eingabe-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, data, controlToken)
Replaces supplied component data without regenerating source. Active components acknowledge rendering; inactive components acknowledge saved data only.
Eingabe-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
},
"data": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/definitions/__schema0"
}
},
"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.
Eingabe-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
}Aufgezeichnete Aufrufbeispiele
read_draftEingabeparameter
{
"draftID": "example-0",
"controlToken": "example-0"
}Ausgabeergebnis
{
"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": 138
}Community
Nachweis