Official MCP RegistryListed
Nova Cast
Give your AI agent the power to cast to your home TV and control an interactive canvas. By ArdaBot.
First seen 2 Oct 2026. Evidence as of 3 Oct 2026.
27
Tools
From an anonymous probe
1
Source listings
Each with its own history
7
Recorded changes
Since first seen
Tools
| Tool | Description | Behaviour |
|---|---|---|
| cancel_operation | Cancels a queued component update and removes its source. Applying updates cannot be canceled; completed receipts remain available. | Destructive |
| claim_canvas | Exchanges a pairing code and recovery claimKey for a durable, screen-scoped control token. Repeating the same pair recovers the original grant. | Changes data |
| click | 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. | Destructive |
| create_component | Validates, renders and saves a React or HTML component immediately to the right of focus. Success requires browser paint acknowledgement. | Changes data |
| delete_component | Deletes a component and selects its nearest remaining neighbor. | Destructive |
| discard_draft | Removes an exact private draft version and its preview access without changing the live workspace. | Destructive |
| disconnect_canvas | Revokes the screen pairing, owner access and claim recovery, including while the browser is offline. | Destructive |
| execute_script | 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. | Destructive |
| fill | 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. | Destructive |
| get_canvas | Reads workspace revision, focus, component summaries, render status, media capabilities and display dimensions including device pixel ratio. Physical DPI is unknown. | Read-only |
| get_console | 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. | Read-only |
| get_operation | Reads queued operation status and any browser outcome without contacting the browser. Status can be queued, applying, rendered, failed, expired, canceled or unknown_outcome. | Read-only |
| inspect | 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. | Destructive |
| list_templates | Lists approved TV template slugs, versions and param examples. Prefer render(slug) for these boards instead of generating source. | Read-only |
| navigate | Focuses a component or moves one position. Acknowledges after the selected component renders. | Changes data |
| pairing_status | Reads the validity, expiry or claimed status of a pairing code without consuming it. | Read-only |
| prepare_draft | 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). 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. | Changes data |
| publish_draft | 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. | Destructive |
| queue_component | 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. | Destructive |
| read_component | Reads a component source, saved state and supplied data. | Read-only |
| read_draft | 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. | Read-only |
| render | Paints an approved catalog template (weather, clock, countdown) 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. | Destructive |
| select | 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. | Destructive |
| set_agent_status | Sets or clears an ephemeral building indicator, with browser acknowledgement. Does not change workspace revision or publish drafts. Automatically clears after two minutes. | Changes data |
| set_component_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. | Destructive |
| update_component | Validates replacement source and updates a component in place, preserving existing state and data unless provided. Failed rendering retains the previous version. | Destructive |
| update_draft | 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. | Destructive |
Change history
- set_component_data: input schema changed (+merge, +slot)
- set_component_data: description changed (+"Pushes live observations" +"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." -"Replaces supplied component data")
- render: tool added
- prepare_draft: input schema changed (+slot)
- prepare_draft: description changed (+"Optional slot drafts a nested sub-component only (preview is slot-scoped).")
- list_templates: tool added
- server instructions changed (+"This hosted MCP is the headed-browser path: the user already has Nova open (tab, phone, or Cast CAF appliance QR). Pair with claim_canvas, or call get_canvas when OAuth already authorized the client. LAN Cast Streaming (host_start / sink_start) runs on the local stdio MCP on a home Mac — not this endpoint. Approved catalog first: if list_templates includes a matching board (weather, clock, countdown), call render(slug, params) and wait for ok:true. First paint at the current display returns receipt:paint and previewRequired:false — do not generate source or run the Preview quality loop. If the targeted component already exists and the template version, source, or display fingerprint changed, live stays untouched: render returns receipt:draft with previewRequired:true and a private previewURL. Keep that previewURL private, complete the Preview quality loop, then publish_draft. Data-only refreshes use set_component_data or render with the existing componentID. Novel UI still uses the" -"Required")
| Source | Listing | First seen | Last seen | Versions |
|---|---|---|---|---|
| Official MCP Registry | io.github.r4v3n-art/nova-cast | 2 Oct 2026 | 3 Oct 2026 | 1 |