{"name":"io.github.r4v3n-art/nova-cast","slug":"r4v3n-art-nova-cast","title":"Nova Cast","description":"Give your AI agent the power to cast to your home TV and control an interactive canvas. By ArdaBot.","url":"https://mcp.market/server/r4v3n-art-nova-cast","rating":null,"grade":"C","score":57,"certified":false,"status":"active","category":"ai","tags":["ai"],"presence":{"score":5,"stars":null,"forks":null,"downloads_week":null,"last_push_at":null,"license":null},"uptime":{"percent":100,"checks":28,"ok":28,"last_checked_at":"2026-10-13T10:35:43.269Z","last_ok_at":"2026-10-13T10:35:43.269Z","latency_ms":134},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/r4v3n-art/nova","website":null,"version":"0.1.1","remotes":[{"type":"streamable-http","url":"https://nova.ardabot.ai/mcp"}],"packages":[],"tools":[{"name":"cancel_operation","description":"Cancels a queued component update and removes its source. Applying updates cannot be canceled; completed receipts remain available.","write_action":true,"price_micros":0,"input_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}},{"name":"claim_canvas","description":"Exchanges a pairing code and recovery claimKey for a durable, screen-scoped control token. Repeating the same pair recovers the original grant.","write_action":false,"price_micros":0,"input_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}},{"name":"create_component","description":"Validates, renders and saves a React or HTML component immediately to the right of focus. Success requires browser paint acknowledgement.","write_action":true,"price_micros":0,"input_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"}}]}}}},{"name":"delete_component","description":"Deletes a component and selects its nearest remaining neighbor.","write_action":true,"price_micros":0,"input_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}},{"name":"discard_draft","description":"Removes an exact private draft version and its preview access without changing the live workspace.","write_action":true,"price_micros":0,"input_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}},{"name":"disconnect_canvas","description":"Revokes the screen pairing, owner access and claim recovery, including while the browser is offline.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"controlToken":{"type":"string","minLength":20,"maxLength":200}},"required":["controlToken"],"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false}},{"name":"execute_script","description":"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.","write_action":true,"price_micros":0,"input_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}},{"name":"get_canvas","description":"Reads workspace revision, focus, component summaries, render status, media capabilities and display dimensions including device pixel ratio. Physical DPI is unknown.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"controlToken":{"type":"string","minLength":20,"maxLength":200}},"required":["controlToken"],"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false}},{"name":"get_console","description":"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.","write_action":false,"price_micros":0,"input_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}},{"name":"get_operation","description":"Reads queued operation status and any browser outcome without contacting the browser. Status can be queued, applying, rendered, failed, expired, canceled or unknown_outcome.","write_action":false,"price_micros":0,"input_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}},{"name":"navigate","description":"Focuses a component or moves one position. Acknowledges after the selected component renders.","write_action":false,"price_micros":0,"input_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}},{"name":"pairing_status","description":"Reads the validity, expiry or claimed status of a pairing code without consuming it.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":160}},"required":["code"],"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false}},{"name":"prepare_draft","description":"Creates a private browser-owned component draft and preview URL without changing the live workspace. Drafts expire after 15 minutes or browser reload.","write_action":true,"price_micros":0,"input_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"}}]}}}},{"name":"publish_draft","description":"Publishes an exact reviewed draft version after validating workspace revision and target dimensions. Success requires browser paint acknowledgement. Failed rendering preserves the previous component.","write_action":true,"price_micros":0,"input_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"]},"controlToken":{"type":"string","minLength":20,"maxLength":200}},"required":["operationID","expectedRevision","draftID","version","review","controlToken"],"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false}},{"name":"queue_component","description":"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.","write_action":false,"price_micros":0,"input_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"}}]}}}},{"name":"read_component","description":"Reads a component source, saved state and supplied data.","write_action":false,"price_micros":0,"input_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}},{"name":"read_draft","description":"Reads a private draft source, state, data, target display, version, expiry and preview URL. Requires the original canvas online.","write_action":false,"price_micros":0,"input_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}},{"name":"set_agent_status","description":"Sets or clears an ephemeral building indicator, with browser acknowledgement. Does not change workspace revision or publish drafts. Automatically clears after two minutes.","write_action":false,"price_micros":0,"input_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}},{"name":"set_component_data","description":"Replaces supplied component data without regenerating source. Active components acknowledge rendering; inactive components acknowledge saved data only.","write_action":false,"price_micros":0,"input_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"}}]}}}},{"name":"update_component","description":"Validates replacement source and updates a component in place, preserving existing state and data unless provided. Failed rendering retains the previous version.","write_action":true,"price_micros":0,"input_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"}}]}}}},{"name":"update_draft","description":"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.","write_action":true,"price_micros":0,"input_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"}}]}}}}],"scan":{"score":57,"grade":"C","scanned_at":"2026-10-01T06:34:55.228Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-10-01T06:34:55.127Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 802ms"]},"poisoning":{"score":15,"max":15,"notes":["21 tool descriptions checked"]},"auth":{"score":3,"max":15,"notes":["open endpoint exposes 9 write-action tools with no auth"]},"maintenance":{"score":3,"max":15,"notes":["repository not readable: repo not found"]},"identity":{"score":2,"max":10,"notes":["no repository or website to verify"]}},"findings":[{"id":"auth.open-write","severity":"high","component":"auth","title":"Write-action tools reachable without authentication"}],"inputs":{"probes":[{"url":"https://nova.ardabot.ai/mcp","reachable":true,"authRequired":false,"latencyMs":802,"serverInfo":{"name":"nova-canvas","version":"1.0.0"}}],"packages":[],"repo":{"found":false,"owner":"r4v3n-art","repo":"nova","error":"repo not found"},"icon":{"url":"https://nova.ardabot.ai/icon.svg?icon.24vkdahrquxh0.svg","source":"site"},"presence":{"stars":null,"forks":null,"downloadsWeek":null,"license":null,"lastPushAt":null,"score":5}}}},"grade_history":[],"reviews":[]}