Nova Cast
Give your AI agent the power to cast to your home TV and control an interactive canvas. By ArdaBot.
使うべきか
品質と安全性
検出事項(2)
- LOWclaim_canvas 内
- LOWdisconnect_canvas 内
ツール定義とプロトコルへの準拠に関する自動分析に基づいています。
コンテキストコスト
これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。
インストール
ワンクリックインストール
これを `claude_desktop_config.json` ファイルに追加してください:
{
"mcpServers": {
"nova-cast": {
"url": "https://nova.ardabot.ai/mcp"
}
}
}リモートエンドポイント
https://nova.ardabot.ai/mcpstreamable-httpできること
ツール一覧
ツール(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.
入力スキーマ
{
"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.
入力スキーマ
{
"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.
入力スキーマ
{
"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.
入力スキーマ
{
"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.
入力スキーマ
{
"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.
入力スキーマ
{
"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.
入力スキーマ
{
"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.
入力スキーマ
{
"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.
入力スキーマ
{
"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.
入力スキーマ
{
"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.
入力スキーマ
{
"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.
入力スキーマ
{
"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.
入力スキーマ
{
"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.
入力スキーマ
{
"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.
入力スキーマ
{
"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.
入力スキーマ
{
"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.
入力スキーマ
{
"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.
入力スキーマ
{
"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.
入力スキーマ
{
"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.
入力スキーマ
{
"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.
入力スキーマ
{
"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
}記録された呼び出し例
read_draft入力パラメータ
{
"draftID": "example-0",
"controlToken": "example-0"
}出力結果
{
"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": 83
}コミュニティ
エビデンス