Nova Cast

io.github.r4v3n-artPublished by GitHub account r4v3n-artv0.1.1Updated Oct 25, 2026

Give your AI agent the power to cast to your home TV and control an interactive canvas. By ArdaBot.

VerifiedStreamable HTTPWeb executableProductivity & WorkflowBrowser AutomationMedia & Design

Overview

AI-generated overview

Nova Cast lets an AI assistant build, preview and publish interactive components on a paired home TV canvas, and drive them with typed clicks, fills and scripts

What you can do
Pair and manage a TV screen: claim a canvas with a pairing code, check pairing status, disconnect and revoke access, set an ephemeral building indicator, read workspace revision, focus and display details, and read component console errors and sources. Create, update, delete and navigate components, and push live data into them without regenerating source. Draft privately: prepare, read, update, screenshot and discard a draft, then publish a reviewed version. Render approved TV templates such as weather, clock, countdown, agenda, headlines or transit. Queue component changes for an offline browser and check, cancel or read the outcome of queued operations. Interact with the active component:
When to use it
Use it when you want an assistant to design and iterate on a dashboard or widget shown on a paired TV screen, preview drafts before going live, or push live data and scripted interactions into an already running component.
Requirements
A remote streamable HTTP endpoint; no package or environment variables declared. A paired browser canvas and a pairing code plus recovery claim key to obtain a control token. The original canvas browser must be online for draft operations.
Before you install
The claim key and control token grant durable screen control, and disconnect_canvas revokes owner access and claim recovery. Publishing, creating, updating and deleting components change the live workspace; failed rendering keeps the previous version. execute_script, click, fill and select act on the live component, and a five-second timeout reports an unknown outcome without rolling back effects, so do not retry with a new ID. Draft preview URLs should be kept private, and console entries are

Installation

In SourceWeft

  1. Open Nova Cast in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.r4v3n-art%2Fnova-cast/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "nova-cast": {
      "type": "http",
      "url": "https://nova.ardabot.ai/mcp"
    }
  }
}

README

This repository has no README.

Tools

28

claim_canvas

Claim Canvas

Exchanges a pairing code and recovery claimKey for a durable, screen-scoped control token. Repeating the same pair recovers the original grant.

ParameterscoderequiredclaimKey

pairing_status

Pairing Status

Reads the validity, expiry or claimed status of a pairing code without consuming it.

ParameterscoderequiredcontrolTokenrequired

disconnect_canvas

Disconnect Canvas

Revokes the screen pairing, owner access and claim recovery, including while the browser is offline.

ParameterscontrolTokenrequired

get_canvas

Get Canvas

Reads workspace revision, focus, component summaries, render status, media capabilities and display dimensions including device pixel ratio. Physical DPI is unknown.

ParameterscontrolTokenrequired

get_console

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.

ParametersaftercomponentIDcontrolTokenrequired

read_component

Read Component

Reads a component source, saved state and supplied data.

ParameterscomponentIDrequiredcontrolTokenrequired

list_templates

List Templates

Lists approved TV template slugs, versions and param examples. Prefer render(slug) for these boards instead of generating source.

Takes no parameters.

render

Render

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.

ParametersdataslugrequiredparamscomponentIDoperationIDrequiredcontrolTokenrequiredexpectedRevisionrequired

prepare_draft

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). 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.

ParametersdataslotstatetitlerequiredactionrequiredformatrequiredsourcerequiredcomponentIDoperationIDrequiredcontrolTokenrequiredexpectedRevisionrequired

read_draft

Read Draft

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.

ParametersdraftIDrequiredcontrolTokenrequired

screenshot_draft

Screenshot Draft

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.

ParametersdraftIDrequiredcontrolTokenrequiredexpectedVersionrequired

update_draft

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. Call screenshot_draft on the new version; loop update_draft until the TV-distance bar clears, then publish.

ParametersdatastatetitlerequiredformatrequiredsourcerequireddraftIDrequiredoperationIDrequiredcontrolTokenrequiredexpectedVersionrequiredexpectedRevisionrequired

publish_draft

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.

ParametersreviewrequireddraftIDrequiredversionrequiredoperationIDrequiredcontrolTokenrequiredoverrideReasonexpectedRevisionrequired

discard_draft

Discard Draft

Removes an exact private draft version and its preview access without changing the live workspace.

ParametersdraftIDrequiredversionrequiredoperationIDrequiredcontrolTokenrequiredexpectedRevisionrequired

queue_component

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.

ParametersdatastatetitlerequiredactionrequiredformatrequiredsourcerequiredcomponentIDoperationIDrequiredcontrolTokenrequiredexpectedRevisionrequiredexpiresInSeconds

get_operation

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.

ParametersoperationIDrequiredcontrolTokenrequired

cancel_operation

Cancel Operation

Cancels a queued component update and removes its source. Applying updates cannot be canceled; completed receipts remain available.

ParametersoperationIDrequiredcontrolTokenrequired

set_agent_status

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.

ParametersstatusrequiredoperationIDrequiredcontrolTokenrequiredexpectedRevisionrequired

create_component

Create Component

Validates, renders and saves a React or HTML component immediately to the right of focus. Success requires browser paint acknowledgement.

ParametersdatastatetitlerequiredformatrequiredsourcerequiredoperationIDrequiredcontrolTokenrequiredexpectedRevisionrequired

update_component

Update Component

Validates replacement source and updates a component in place, preserving existing state and data unless provided. Failed rendering retains the previous version.

ParametersdatastatetitlerequiredformatrequiredsourcerequiredcomponentIDrequiredoperationIDrequiredcontrolTokenrequiredexpectedRevisionrequired

delete_component

Delete Component

Deletes a component and selects its nearest remaining neighbor.

ParameterscomponentIDrequiredoperationIDrequiredcontrolTokenrequiredexpectedRevisionrequired

navigate

Navigate

Focuses a component or moves one position. Acknowledges after the selected component renders.

ParametersdirectioncomponentIDoperationIDrequiredcontrolTokenrequiredexpectedRevisionrequired

set_component_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.

ParametersdatarequiredslotmergecomponentIDrequiredoperationIDrequiredcontrolTokenrequiredexpectedRevisionrequired

execute_script

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.

ParametersscriptrequiredcomponentIDrequiredoperationIDrequiredcontrolTokenrequiredexpectedRevisionrequired

inspect

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.

ParametersselectorrequiredcomponentIDrequiredoperationIDrequiredcontrolTokenrequiredexpectedRevisionrequiredexpectedComponentVersionrequired

click

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.

ParametersselectorrequiredtargetIDrequiredcomponentIDrequiredoperationIDrequiredcontrolTokenrequiredexpectedRevisionrequiredexpectedComponentVersionrequired

fill

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.

ParametersvaluerequiredselectorrequiredtargetIDrequiredcomponentIDrequiredoperationIDrequiredcontrolTokenrequiredexpectedRevisionrequiredexpectedComponentVersionrequired

select

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.

ParametersvaluerequiredselectorrequiredtargetIDrequiredcomponentIDrequiredoperationIDrequiredcontrolTokenrequiredexpectedRevisionrequiredexpectedComponentVersionrequired

Version history

1
  1. v0.1.1LatestSep 29, 2026

Score

75% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts

    Declare a GitHub repository with a README, or serve resource_documentation in the OAuth protected-resource metadata.

  • License10 pts

    Declare a license in the repository or the registry entry.