Search / io.github.r4v3n-art/nova-cast
Nova Cast
R0· no sign-inGive your AI agent the power to cast to your home TV and control an interactive canvas. By ArdaBot.
v0.1.1 · active · repository · descriptor JSON · versions
Search / io.github.r4v3n-art/nova-cast
R0· no sign-inGive your AI agent the power to cast to your home TV and control an interactive canvas. By ArdaBot.
v0.1.1 · active · repository · descriptor JSON · versions
{
"mcpServers": {
"nova-cast": {
"type": "http",
"url": "https://nova.ardabot.ai/mcp"
}
}
}claude mcp add --transport http nova-cast https://nova.ardabot.ai/mcp[mcp_servers.nova-cast]
url = "https://nova.ardabot.ai/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"nova-cast": {
"type": "remote",
"url": "https://nova.ardabot.ai/mcp",
"enabled": true
}
}
}{
"mcpServers": {
"nova-cast": {
"type": "http",
"url": "https://nova.ardabot.ai/mcp"
}
},
"deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=nova-cast&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vbm92YS5hcmRhYm90LmFpL21jcCJ9"
}{
"servers": {
"nova-cast": {
"type": "http",
"url": "https://nova.ardabot.ai/mcp"
}
}
}{
"mcpServers": {
"nova-cast": {
"httpUrl": "https://nova.ardabot.ai/mcp"
}
}
}extensions:
"nova-cast":
enabled: true
name: "nova-cast"
type: streamable_http
uri: "https://nova.ardabot.ai/mcp"
timeout: 300
protocol.modernnewest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28protocol.statelessonly applies to 2026-07-28 serversprotocol.transportstreamable HTTPprotocol.list_ttlonly applies to 2026-07-28 serversauth.prm, auth.as_metadata, auth.cimdno remote uses OAuthauth.secret_in_urlno templated URLtools.descriptionsevery tool has a descriptiontools.description_lengthdescriptions are concisetools.schemasevery tool has an object input schematools.annotations28 of 28 tools declare readOnlyHint or destructiveHinttools.directory_hintsno tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: get_console (idempotentHint); read_component (idempotentHint); screenshot_draft (idempotentHint); …tools.token_costabout 6,971 tokens to load every tooltools.api_dumptools are not a one-to-one API dumpstability.changes44 tool changes in 30 daysstability.rug_pull17 tools kept their name but changed most of their description in 30 days; review before trusting themdeps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI packagelist_templateschangedinput schemapairing_statuschangedinput schemapublish_draftchangedinput schemarenderchangeddescriptionPaints 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.
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.
update_draftchangeddescriptionReplaces 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.
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.
screenshot_draftaddedRenders 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.
read_draftchangeddescriptionReads 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.
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.
prepare_draftchangeddescriptionCreates 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.
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.
set_component_datachangeddescription, input schemaPushes live observations without regenerating source. Same-source React reuses the compiled module. Default replaces data; merge:true shallow-merges keys (32KB bound). Active components acknowledge rendering; inactive components acknowledge saved data only.
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.
prepare_draftchangeddescription, input schemaCreates 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.
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.
Showing the latest 10. Full history: list_changes · trend: quality JSON.
Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.
+repository +namespace-matches-repo +reachable +uptime-100% +updated-20d-ago
Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.
| remote | auth | reachable | uptime 30d | p50 | protocol | last ok |
|---|---|---|---|---|---|---|
https://nova.ardabot.ai/mcp streamable-http | none | yes | 100% | 218 ms | 2025-11-25 | 2026-10-19 |
cancel_operationdestructive | Cancels a queued component update and removes its source. Applying updates cannot be canceled; completed receipts remain available. |
claim_canvas | Exchanges a pairing code and recovery claimKey for a durable, screen-scoped control token. Repeating the same pair recovers the original grant. |
clickdestructive | 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. |
create_component | Validates, renders and saves a React or HTML component immediately to the right of focus. Success requires browser paint acknowledgement. |
delete_componentdestructive | Deletes a component and selects its nearest remaining neighbor. |
discard_draftdestructive | Removes an exact private draft version and its preview access without changing the live workspace. |
disconnect_canvasdestructive | Revokes the screen pairing, owner access and claim recovery, including while the browser is offline. |
execute_scriptdestructive | 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. |
filldestructive | 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. |
get_canvasread-only | Reads workspace revision, focus, component summaries, render status, media capabilities and display dimensions including device pixel ratio. Physical DPI is unknown. |
get_consoleread-only | 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. |
get_operationread-only | Reads queued operation status and any browser outcome without contacting the browser. Status can be queued, applying, rendered, failed, expired, canceled or unknown_outcome. |
inspectdestructive | 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. |
list_templatesread-only | Lists approved TV template slugs, versions and param examples. Prefer render(slug) for these boards instead of generating source. |
navigate | Focuses a component or moves one position. Acknowledges after the selected component renders. |
pairing_statusread-only | Reads the validity, expiry or claimed status of a pairing code without consuming it. |
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. |
publish_draftdestructive | 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. |
queue_componentdestructive | 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. |
read_componentread-only | Reads a component source, saved state and supplied data. |
read_draftread-only | 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. |
renderdestructive | 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. |
screenshot_draftread-only | 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. |
selectdestructive | 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. |
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. |
set_component_datadestructive | 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. |
update_componentdestructive | Validates replacement source and updates a component in place, preserving existing state and data unless provided. Failed rendering retains the previous version. |
update_draftdestructive | 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. |
Schemas: list_tools.
{
"name": "io.github.r4v3n-art/nova-cast",
"title": "Nova Cast",
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"remotes": [
{
"url": "https://nova.ardabot.ai/mcp",
"type": "streamable-http"
}
],
"version": "0.1.1",
"repository": {
"url": "https://github.com/r4v3n-art/nova",
"source": "github"
},
"description": "Give your AI agent the power to cast to your home TV and control an interactive canvas. By ArdaBot."
}