{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_6kwatu2qdp5f","handle":"nova-cast","url":"https://wellknown.network/agents/nova-cast","links":{"self":"https://wellknown.network/agents/nova-cast/record.json","html":"https://wellknown.network/agents/nova-cast","markdown":"https://wellknown.network/agents/nova-cast/record.md","api":"https://wellknown.network/api/v1/agents/nova-cast","status":"https://wellknown.network/api/v1/agents/nova-cast/status","claim":"https://wellknown.network/agents/nova-cast/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/nova-cast/claim.json","badge":"https://wellknown.network/agents/nova-cast/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/nova-cast/history","tools":"https://wellknown.network/api/v1/agents/nova-cast/tools"},"ard":{"identifier":"urn:air:nova.ardabot.ai:server:nova-cast","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"Nova Cast","summary":"Give your AI agent the power to cast to your home TV and control an interactive canvas. By ArdaBot.","description":"Give your AI agent the power to cast to your home TV and control an interactive canvas. By ArdaBot.","publisher":{"name":"r4v3n-art","url":null},"homepage":null,"repository":"https://github.com/r4v3n-art/nova","version":"0.1.1","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://nova.ardabot.ai/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-09-29T18:23:47.47468Z","publishedAt":"2026-09-29T18:23:47.47468Z","registryName":"io.github.r4v3n-art/nova-cast"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","repoUrl":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"documents.invoice-processing","name":"Invoice Processing","confidence":0.525,"provenance":"derived"},{"slug":"finance.markets","name":"Markets & Trading","confidence":0.525,"provenance":"derived"},{"slug":"ai.prompting","name":"Prompt Management","confidence":0.525,"provenance":"derived"},{"slug":"code.execution","name":"Code Execution","confidence":0.51,"provenance":"derived"},{"slug":"data.weather","name":"Weather","confidence":0.51,"provenance":"derived"},{"slug":"commerce.ecommerce","name":"E-commerce Operations","confidence":0.51,"provenance":"derived"},{"slug":"infra.browser-automation","name":"Browser Automation","confidence":0.51,"provenance":"derived"}],"categories":["ai","code","commerce","data","documents","finance","infra"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 3h ago.","lastOkAt":"2026-10-09T22:27:48.311Z","lastProbedAt":"2026-10-09T22:27:48.311Z","statusComputedAt":"2026-10-09T22:29:01.810Z","reliability30d":{"probes":29,"successRate":1,"p50Ms":101,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":29,"ok":29,"authBoundaryOk":0,"serviceOk":29,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-09T22:27:48.311Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":97,"error":null,"detail":{"tools":[{"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."},{"name":"pairing_status","description":"Reads the validity, expiry or claimed status of a pairing code without consuming it."},{"name":"disconnect_canvas","description":"Revokes the screen pairing, owner access and claim recovery, including while the browser is offline."},{"name":"get_canvas","description":"Reads workspace revision, focus, component summaries, render status, media capabilities and display dimensions including device pixel ratio. Physical DPI is unk"},{"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; hos"},{"name":"read_component","description":"Reads a component source, saved state and supplied data."},{"name":"list_templates","description":"Lists approved TV template slugs, versions and param examples. Prefer render(slug) for these boards instead of generating source."},{"name":"render","description":"Paints an approved catalog template (weather, clock, countdown) without generated source. weather location defaults to Sudbury. First matching-display paint ski"},{"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. Optional "},{"name":"read_draft","description":"Reads a private draft source, state, data, target display, version, expiry and preview URL. Requires the original canvas online. Keep previewURL private; call s"},{"name":"screenshot_draft","description":"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."},{"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. "},{"name":"publish_draft","description":"Publishes an exact reviewed draft version only after the Preview quality loop. Set review to visual only if you actually screenshotted that version; otherwise s"},{"name":"discard_draft","description":"Removes an exact private draft version and its preview access without changing the live workspace."},{"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. Sour"},{"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 unk"},{"name":"cancel_operation","description":"Cancels a queued component update and removes its source. Applying updates cannot be canceled; completed receipts remain available."},{"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 t"},{"name":"create_component","description":"Validates, renders and saves a React or HTML component immediately to the right of focus. Success requires browser paint acknowledgement."},{"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"},{"name":"delete_component","description":"Deletes a component and selects its nearest remaining neighbor."},{"name":"navigate","description":"Focuses a component or moves one position. Acknowledges after the selected component renders."},{"name":"set_component_data","description":"Pushes live observations without regenerating source. Same-source React reuses the compiled module. Default replaces data; merge:true shallow-merges keys (32KB "},{"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 provide"},{"name":"inspect","description":"Typed component inspect through the active sandbox. Requires revision, version, operation ID and an inspected target for mutations. Returns observed state. Five"},{"name":"click","description":"Typed component click through the active sandbox. Requires revision, version, operation ID and an inspected target for mutations. Returns observed state. Five-s"},{"name":"fill","description":"Typed component fill through the active sandbox. Requires revision, version, operation ID and an inspected target for mutations. Returns observed state. Five-se"},{"name":"select","description":"Typed component select through the active sandbox. Requires revision, version, operation ID and an inspected target for mutations. Returns observed state. Five-"}],"toolCount":28,"toolsHash":"3fddd2dc36c9dea756d5a698418e27bf6e287e9246e0a88fea52c76d01ebb216","serverName":"nova-canvas","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T15:31:20.179Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":105,"error":null,"detail":{"tools":[{"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."},{"name":"pairing_status","description":"Reads the validity, expiry or claimed status of a pairing code without consuming it."},{"name":"disconnect_canvas","description":"Revokes the screen pairing, owner access and claim recovery, including while the browser is offline."},{"name":"get_canvas","description":"Reads workspace revision, focus, component summaries, render status, media capabilities and display dimensions including device pixel ratio. Physical DPI is unk"},{"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; hos"},{"name":"read_component","description":"Reads a component source, saved state and supplied data."},{"name":"list_templates","description":"Lists approved TV template slugs, versions and param examples. Prefer render(slug) for these boards instead of generating source."},{"name":"render","description":"Paints an approved catalog template (weather, clock, countdown) without generated source. weather location defaults to Sudbury. First matching-display paint ski"},{"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. Optional "},{"name":"read_draft","description":"Reads a private draft source, state, data, target display, version, expiry and preview URL. Requires the original canvas online. Keep previewURL private; call s"},{"name":"screenshot_draft","description":"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."},{"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. "},{"name":"publish_draft","description":"Publishes an exact reviewed draft version only after the Preview quality loop. Set review to visual only if you actually screenshotted that version; otherwise s"},{"name":"discard_draft","description":"Removes an exact private draft version and its preview access without changing the live workspace."},{"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. Sour"},{"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 unk"},{"name":"cancel_operation","description":"Cancels a queued component update and removes its source. Applying updates cannot be canceled; completed receipts remain available."},{"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 t"},{"name":"create_component","description":"Validates, renders and saves a React or HTML component immediately to the right of focus. Success requires browser paint acknowledgement."},{"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"},{"name":"delete_component","description":"Deletes a component and selects its nearest remaining neighbor."},{"name":"navigate","description":"Focuses a component or moves one position. Acknowledges after the selected component renders."},{"name":"set_component_data","description":"Pushes live observations without regenerating source. Same-source React reuses the compiled module. Default replaces data; merge:true shallow-merges keys (32KB "},{"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 provide"},{"name":"inspect","description":"Typed component inspect through the active sandbox. Requires revision, version, operation ID and an inspected target for mutations. Returns observed state. Five"},{"name":"click","description":"Typed component click through the active sandbox. Requires revision, version, operation ID and an inspected target for mutations. Returns observed state. Five-s"},{"name":"fill","description":"Typed component fill through the active sandbox. Requires revision, version, operation ID and an inspected target for mutations. Returns observed state. Five-se"},{"name":"select","description":"Typed component select through the active sandbox. Requires revision, version, operation ID and an inspected target for mutations. Returns observed state. Five-"}],"toolCount":28,"toolsHash":"3fddd2dc36c9dea756d5a698418e27bf6e287e9246e0a88fea52c76d01ebb216","serverName":"nova-canvas","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T08:28:53.623Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":92,"error":null,"detail":{"tools":[{"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."},{"name":"pairing_status","description":"Reads the validity, expiry or claimed status of a pairing code without consuming it."},{"name":"disconnect_canvas","description":"Revokes the screen pairing, owner access and claim recovery, including while the browser is offline."},{"name":"get_canvas","description":"Reads workspace revision, focus, component summaries, render status, media capabilities and display dimensions including device pixel ratio. Physical DPI is unk"},{"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; hos"},{"name":"read_component","description":"Reads a component source, saved state and supplied data."},{"name":"list_templates","description":"Lists approved TV template slugs, versions and param examples. Prefer render(slug) for these boards instead of generating source."},{"name":"render","description":"Paints an approved catalog template (weather, clock, countdown) without generated source. weather location defaults to Sudbury. First matching-display paint ski"},{"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. Optional "},{"name":"read_draft","description":"Reads a private draft source, state, data, target display, version, expiry and preview URL. Requires the original canvas online. Keep previewURL private; call s"},{"name":"screenshot_draft","description":"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."},{"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. "},{"name":"publish_draft","description":"Publishes an exact reviewed draft version only after the Preview quality loop. Set review to visual only if you actually screenshotted that version; otherwise s"},{"name":"discard_draft","description":"Removes an exact private draft version and its preview access without changing the live workspace."},{"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. Sour"},{"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 unk"},{"name":"cancel_operation","description":"Cancels a queued component update and removes its source. Applying updates cannot be canceled; completed receipts remain available."},{"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 t"},{"name":"create_component","description":"Validates, renders and saves a React or HTML component immediately to the right of focus. Success requires browser paint acknowledgement."},{"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"},{"name":"delete_component","description":"Deletes a component and selects its nearest remaining neighbor."},{"name":"navigate","description":"Focuses a component or moves one position. Acknowledges after the selected component renders."},{"name":"set_component_data","description":"Pushes live observations without regenerating source. Same-source React reuses the compiled module. Default replaces data; merge:true shallow-merges keys (32KB "},{"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 provide"},{"name":"inspect","description":"Typed component inspect through the active sandbox. Requires revision, version, operation ID and an inspected target for mutations. Returns observed state. Five"},{"name":"click","description":"Typed component click through the active sandbox. Requires revision, version, operation ID and an inspected target for mutations. Returns observed state. Five-s"},{"name":"fill","description":"Typed component fill through the active sandbox. Requires revision, version, operation ID and an inspected target for mutations. Returns observed state. Five-se"},{"name":"select","description":"Typed component select through the active sandbox. Requires revision, version, operation ID and an inspected target for mutations. Returns observed state. Five-"}],"toolCount":28,"toolsHash":"3fddd2dc36c9dea756d5a698418e27bf6e287e9246e0a88fea52c76d01ebb216","serverName":"nova-canvas","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T02:27:24.610Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":98,"error":null,"detail":{"tools":[{"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."},{"name":"pairing_status","description":"Reads the validity, expiry or claimed status of a pairing code without consuming it."},{"name":"disconnect_canvas","description":"Revokes the screen pairing, owner access and claim recovery, including while the browser is offline."},{"name":"get_canvas","description":"Reads workspace revision, focus, component summaries, render status, media capabilities and display dimensions including device pixel ratio. Physical DPI is unk"},{"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; hos"},{"name":"read_component","description":"Reads a component source, saved state and supplied data."},{"name":"list_templates","description":"Lists approved TV template slugs, versions and param examples. Prefer render(slug) for these boards instead of generating source."},{"name":"render","description":"Paints an approved catalog template (weather, clock, countdown) without generated source. weather location defaults to Sudbury. First matching-display paint ski"},{"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. Optional "},{"name":"read_draft","description":"Reads a private draft source, state, data, target display, version, expiry and preview URL. Requires the original canvas online. Keep previewURL private; call s"},{"name":"screenshot_draft","description":"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."},{"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. "},{"name":"publish_draft","description":"Publishes an exact reviewed draft version only after the Preview quality loop. Set review to visual only if you actually screenshotted that version; otherwise s"},{"name":"discard_draft","description":"Removes an exact private draft version and its preview access without changing the live workspace."},{"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. Sour"},{"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 unk"},{"name":"cancel_operation","description":"Cancels a queued component update and removes its source. Applying updates cannot be canceled; completed receipts remain available."},{"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 t"},{"name":"create_component","description":"Validates, renders and saves a React or HTML component immediately to the right of focus. Success requires browser paint acknowledgement."},{"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"},{"name":"delete_component","description":"Deletes a component and selects its nearest remaining neighbor."},{"name":"navigate","description":"Focuses a component or moves one position. Acknowledges after the selected component renders."},{"name":"set_component_data","description":"Pushes live observations without regenerating source. Same-source React reuses the compiled module. Default replaces data; merge:true shallow-merges keys (32KB "},{"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 provide"},{"name":"inspect","description":"Typed component inspect through the active sandbox. Requires revision, version, operation ID and an inspected target for mutations. Returns observed state. Five"},{"name":"click","description":"Typed component click through the active sandbox. Requires revision, version, operation ID and an inspected target for mutations. Returns observed state. Five-s"},{"name":"fill","description":"Typed component fill through the active sandbox. Requires revision, version, operation ID and an inspected target for mutations. Returns observed state. Five-se"},{"name":"select","description":"Typed component select through the active sandbox. Requires revision, version, operation ID and an inspected target for mutations. Returns observed state. Five-"}],"toolCount":28,"toolsHash":"3fddd2dc36c9dea756d5a698418e27bf6e287e9246e0a88fea52c76d01ebb216","serverName":"nova-canvas","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T20:23:58.985Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":106,"error":null,"detail":{"tools":[{"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."},{"name":"pairing_status","description":"Reads the validity, expiry or claimed status of a pairing code without consuming it."},{"name":"disconnect_canvas","description":"Revokes the screen pairing, owner access and claim recovery, including while the browser is offline."},{"name":"get_canvas","description":"Reads workspace revision, focus, component summaries, render status, media capabilities and display dimensions including device pixel ratio. Physical DPI is unk"},{"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; hos"},{"name":"read_component","description":"Reads a component source, saved state and supplied data."},{"name":"list_templates","description":"Lists approved TV template slugs, versions and param examples. Prefer render(slug) for these boards instead of generating source."},{"name":"render","description":"Paints an approved catalog template (weather, clock, countdown) without generated source. weather location defaults to Sudbury. First matching-display paint ski"},{"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. Optional "},{"name":"read_draft","description":"Reads a private draft source, state, data, target display, version, expiry and preview URL. Requires the original canvas online. Keep previewURL private; call s"},{"name":"screenshot_draft","description":"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."},{"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. "},{"name":"publish_draft","description":"Publishes an exact reviewed draft version only after the Preview quality loop. Set review to visual only if you actually screenshotted that version; otherwise s"},{"name":"discard_draft","description":"Removes an exact private draft version and its preview access without changing the live workspace."},{"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. Sour"},{"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 unk"},{"name":"cancel_operation","description":"Cancels a queued component update and removes its source. Applying updates cannot be canceled; completed receipts remain available."},{"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 t"},{"name":"create_component","description":"Validates, renders and saves a React or HTML component immediately to the right of focus. Success requires browser paint acknowledgement."},{"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"},{"name":"delete_component","description":"Deletes a component and selects its nearest remaining neighbor."},{"name":"navigate","description":"Focuses a component or moves one position. Acknowledges after the selected component renders."},{"name":"set_component_data","description":"Pushes live observations without regenerating source. Same-source React reuses the compiled module. Default replaces data; merge:true shallow-merges keys (32KB "},{"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 provide"},{"name":"inspect","description":"Typed component inspect through the active sandbox. Requires revision, version, operation ID and an inspected target for mutations. Returns observed state. Five"},{"name":"click","description":"Typed component click through the active sandbox. Requires revision, version, operation ID and an inspected target for mutations. Returns observed state. Five-s"},{"name":"fill","description":"Typed component fill through the active sandbox. Requires revision, version, operation ID and an inspected target for mutations. Returns observed state. Five-se"},{"name":"select","description":"Typed component select through the active sandbox. Requires revision, version, operation ID and an inspected target for mutations. Returns observed state. Five-"}],"toolCount":28,"toolsHash":"3fddd2dc36c9dea756d5a698418e27bf6e287e9246e0a88fea52c76d01ebb216","serverName":"nova-canvas","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T13:22:56.430Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":90,"error":null,"detail":{"tools":[{"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."},{"name":"pairing_status","description":"Reads the validity, expiry or claimed status of a pairing code without consuming it."},{"name":"disconnect_canvas","description":"Revokes the screen pairing, owner access and claim recovery, including while the browser is offline."},{"name":"get_canvas","description":"Reads workspace revision, focus, component summaries, render status, media capabilities and display dimensions including device pixel ratio. Physical DPI is unk"},{"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; hos"},{"name":"read_component","description":"Reads a component source, saved state and supplied data."},{"name":"list_templates","description":"Lists approved TV template slugs, versions and param examples. Prefer render(slug) for these boards instead of generating source."},{"name":"render","description":"Paints an approved catalog template (weather, clock, countdown) without generated source. weather location defaults to Sudbury. First matching-display paint ski"},{"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. Optional "},{"name":"read_draft","description":"Reads a private draft source, state, data, target display, version, expiry and preview URL. Requires the original canvas online. Keep previewURL private; call s"},{"name":"screenshot_draft","description":"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."},{"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. "},{"name":"publish_draft","description":"Publishes an exact reviewed draft version only after the Preview quality loop. Set review to visual only if you actually screenshotted that version; otherwise s"},{"name":"discard_draft","description":"Removes an exact private draft version and its preview access without changing the live workspace."},{"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. Sour"},{"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 unk"},{"name":"cancel_operation","description":"Cancels a queued component update and removes its source. Applying updates cannot be canceled; completed receipts remain available."},{"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 t"},{"name":"create_component","description":"Validates, renders and saves a React or HTML component immediately to the right of focus. Success requires browser paint acknowledgement."},{"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"},{"name":"delete_component","description":"Deletes a component and selects its nearest remaining neighbor."},{"name":"navigate","description":"Focuses a component or moves one position. Acknowledges after the selected component renders."},{"name":"set_component_data","description":"Pushes live observations without regenerating source. Same-source React reuses the compiled module. Default replaces data; merge:true shallow-merges keys (32KB "},{"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 provide"},{"name":"inspect","description":"Typed component inspect through the active sandbox. Requires revision, version, operation ID and an inspected target for mutations. Returns observed state. Five"},{"name":"click","description":"Typed component click through the active sandbox. Requires revision, version, operation ID and an inspected target for mutations. Returns observed state. Five-s"},{"name":"fill","description":"Typed component fill through the active sandbox. Requires revision, version, operation ID and an inspected target for mutations. Returns observed state. Five-se"},{"name":"select","description":"Typed component select through the active sandbox. Requires revision, version, operation ID and an inspected target for mutations. Returns observed state. Five-"}],"toolCount":28,"toolsHash":"3fddd2dc36c9dea756d5a698418e27bf6e287e9246e0a88fea52c76d01ebb216","serverName":"nova-canvas","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T06:23:19.687Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":93,"error":null,"detail":{"tools":[{"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."},{"name":"pairing_status","description":"Reads the validity, expiry or claimed status of a pairing code without consuming it."},{"name":"disconnect_canvas","description":"Revokes the screen pairing, owner access and claim recovery, including while the browser is offline."},{"name":"get_canvas","description":"Reads workspace revision, focus, component summaries, render status, media capabilities and display dimensions including device pixel ratio. Physical DPI is unk"},{"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; hos"},{"name":"read_component","description":"Reads a component source, saved state and supplied data."},{"name":"list_templates","description":"Lists approved TV template slugs, versions and param examples. Prefer render(slug) for these boards instead of generating source."},{"name":"render","description":"Paints an approved catalog template (weather, clock, countdown) without generated source. weather location defaults to Sudbury. First matching-display paint ski"},{"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. Optional "},{"name":"read_draft","description":"Reads a private draft source, state, data, target display, version, expiry and preview URL. Requires the original canvas online. Keep previewURL private; call s"},{"name":"screenshot_draft","description":"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."},{"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. "},{"name":"publish_draft","description":"Publishes an exact reviewed draft version only after the Preview quality loop. Set review to visual only if you actually screenshotted that version; otherwise s"},{"name":"discard_draft","description":"Removes an exact private draft version and its preview access without changing the live workspace."},{"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. Sour"},{"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 unk"},{"name":"cancel_operation","description":"Cancels a queued component update and removes its source. Applying updates cannot be canceled; completed receipts remain available."},{"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 t"},{"name":"create_component","description":"Validates, renders and saves a React or HTML component immediately to the right of focus. Success requires browser paint acknowledgement."},{"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"},{"name":"delete_component","description":"Deletes a component and selects its nearest remaining neighbor."},{"name":"navigate","description":"Focuses a component or moves one position. Acknowledges after the selected component renders."},{"name":"set_component_data","description":"Pushes live observations without regenerating source. Same-source React reuses the compiled module. Default replaces data; merge:true shallow-merges keys (32KB "},{"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 provide"},{"name":"inspect","description":"Typed component inspect through the active sandbox. Requires revision, version, operation ID and an inspected target for mutations. Returns observed state. Five"},{"name":"click","description":"Typed component click through the active sandbox. Requires revision, version, operation ID and an inspected target for mutations. Returns observed state. Five-s"},{"name":"fill","description":"Typed component fill through the active sandbox. Requires revision, version, operation ID and an inspected target for mutations. Returns observed state. Five-se"},{"name":"select","description":"Typed component select through the active sandbox. Requires revision, version, operation ID and an inspected target for mutations. Returns observed state. Five-"}],"toolCount":28,"toolsHash":"3fddd2dc36c9dea756d5a698418e27bf6e287e9246e0a88fea52c76d01ebb216","serverName":"nova-canvas","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T00:27:00.855Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":165,"error":null,"detail":{"tools":[{"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."},{"name":"pairing_status","description":"Reads the validity, expiry or claimed status of a pairing code without consuming it."},{"name":"disconnect_canvas","description":"Revokes the screen pairing, owner access and claim recovery, including while the browser is offline."},{"name":"get_canvas","description":"Reads workspace revision, focus, component summaries, render status, media capabilities and display dimensions including device pixel ratio. Physical DPI is unk"},{"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; hos"},{"name":"read_component","description":"Reads a component source, saved state and supplied data."},{"name":"list_templates","description":"Lists approved TV template slugs, versions and param examples. Prefer render(slug) for these boards instead of generating source."},{"name":"render","description":"Paints an approved catalog template (weather, clock, countdown) without generated source. weather location defaults to Sudbury. First matching-display paint ski"},{"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. Optional "},{"name":"read_draft","description":"Reads a private draft source, state, data, target display, version, expiry and preview URL. Requires the original canvas online. Keep previewURL private; call s"},{"name":"screenshot_draft","description":"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."},{"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. "},{"name":"publish_draft","description":"Publishes an exact reviewed draft version only after the Preview quality loop. Set review to visual only if you actually screenshotted that version; otherwise s"},{"name":"discard_draft","description":"Removes an exact private draft version and its preview access without changing the live workspace."},{"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. Sour"},{"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 unk"},{"name":"cancel_operation","description":"Cancels a queued component update and removes its source. Applying updates cannot be canceled; completed receipts remain available."},{"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 t"},{"name":"create_component","description":"Validates, renders and saves a React or HTML component immediately to the right of focus. Success requires browser paint acknowledgement."},{"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"},{"name":"delete_component","description":"Deletes a component and selects its nearest remaining neighbor."},{"name":"navigate","description":"Focuses a component or moves one position. Acknowledges after the selected component renders."},{"name":"set_component_data","description":"Pushes live observations without regenerating source. Same-source React reuses the compiled module. Default replaces data; merge:true shallow-merges keys (32KB "},{"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 provide"},{"name":"inspect","description":"Typed component inspect through the active sandbox. Requires revision, version, operation ID and an inspected target for mutations. Returns observed state. Five"},{"name":"click","description":"Typed component click through the active sandbox. Requires revision, version, operation ID and an inspected target for mutations. Returns observed state. Five-s"},{"name":"fill","description":"Typed component fill through the active sandbox. Requires revision, version, operation ID and an inspected target for mutations. Returns observed state. Five-se"},{"name":"select","description":"Typed component select through the active sandbox. Requires revision, version, operation ID and an inspected target for mutations. Returns observed state. Five-"}],"toolCount":28,"toolsHash":"3fddd2dc36c9dea756d5a698418e27bf6e287e9246e0a88fea52c76d01ebb216","serverName":"nova-canvas","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-07T18:26:01.573Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":127,"error":null,"detail":{"tools":[{"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."},{"name":"pairing_status","description":"Reads the validity, expiry or claimed status of a pairing code without consuming it."},{"name":"disconnect_canvas","description":"Revokes the screen pairing, owner access and claim recovery, including while the browser is offline."},{"name":"get_canvas","description":"Reads workspace revision, focus, component summaries, render status, media capabilities and display dimensions including device pixel ratio. Physical DPI is unk"},{"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; hos"},{"name":"read_component","description":"Reads a component source, saved state and supplied data."},{"name":"list_templates","description":"Lists approved TV template slugs, versions and param examples. Prefer render(slug) for these boards instead of generating source."},{"name":"render","description":"Paints an approved catalog template (weather, clock, countdown) without generated source. weather location defaults to Sudbury. First matching-display paint ski"},{"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. Optional "},{"name":"read_draft","description":"Reads a private draft source, state, data, target display, version, expiry and preview URL. Requires the original canvas online. Keep previewURL private; call s"},{"name":"screenshot_draft","description":"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."},{"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. "},{"name":"publish_draft","description":"Publishes an exact reviewed draft version only after the Preview quality loop. Set review to visual only if you actually screenshotted that version; otherwise s"},{"name":"discard_draft","description":"Removes an exact private draft version and its preview access without changing the live workspace."},{"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. Sour"},{"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 unk"},{"name":"cancel_operation","description":"Cancels a queued component update and removes its source. Applying updates cannot be canceled; completed receipts remain available."},{"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 t"},{"name":"create_component","description":"Validates, renders and saves a React or HTML component immediately to the right of focus. Success requires browser paint acknowledgement."},{"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"},{"name":"delete_component","description":"Deletes a component and selects its nearest remaining neighbor."},{"name":"navigate","description":"Focuses a component or moves one position. Acknowledges after the selected component renders."},{"name":"set_component_data","description":"Pushes live observations without regenerating source. Same-source React reuses the compiled module. Default replaces data; merge:true shallow-merges keys (32KB "},{"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 provide"},{"name":"inspect","description":"Typed component inspect through the active sandbox. Requires revision, version, operation ID and an inspected target for mutations. Returns observed state. Five"},{"name":"click","description":"Typed component click through the active sandbox. Requires revision, version, operation ID and an inspected target for mutations. Returns observed state. Five-s"},{"name":"fill","description":"Typed component fill through the active sandbox. Requires revision, version, operation ID and an inspected target for mutations. Returns observed state. Five-se"},{"name":"select","description":"Typed component select through the active sandbox. Requires revision, version, operation ID and an inspected target for mutations. Returns observed state. Five-"}],"toolCount":28,"toolsHash":"3fddd2dc36c9dea756d5a698418e27bf6e287e9246e0a88fea52c76d01ebb216","serverName":"nova-canvas","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-07T11:25:10.273Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":98,"error":null,"detail":{"tools":[{"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."},{"name":"pairing_status","description":"Reads the validity, expiry or claimed status of a pairing code without consuming it."},{"name":"disconnect_canvas","description":"Revokes the screen pairing, owner access and claim recovery, including while the browser is offline."},{"name":"get_canvas","description":"Reads workspace revision, focus, component summaries, render status, media capabilities and display dimensions including device pixel ratio. Physical DPI is unk"},{"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; hos"},{"name":"read_component","description":"Reads a component source, saved state and supplied data."},{"name":"list_templates","description":"Lists approved TV template slugs, versions and param examples. Prefer render(slug) for these boards instead of generating source."},{"name":"render","description":"Paints an approved catalog template (weather, clock, countdown) without generated source. weather location defaults to Sudbury. First matching-display paint ski"},{"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. Optional "},{"name":"read_draft","description":"Reads a private draft source, state, data, target display, version, expiry and preview URL. Requires the original canvas online. Keep previewURL private; call s"},{"name":"screenshot_draft","description":"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."},{"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. "},{"name":"publish_draft","description":"Publishes an exact reviewed draft version only after the Preview quality loop. Set review to visual only if you actually screenshotted that version; otherwise s"},{"name":"discard_draft","description":"Removes an exact private draft version and its preview access without changing the live workspace."},{"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. Sour"},{"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 unk"},{"name":"cancel_operation","description":"Cancels a queued component update and removes its source. Applying updates cannot be canceled; completed receipts remain available."},{"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 t"},{"name":"create_component","description":"Validates, renders and saves a React or HTML component immediately to the right of focus. Success requires browser paint acknowledgement."},{"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"},{"name":"delete_component","description":"Deletes a component and selects its nearest remaining neighbor."},{"name":"navigate","description":"Focuses a component or moves one position. Acknowledges after the selected component renders."},{"name":"set_component_data","description":"Pushes live observations without regenerating source. Same-source React reuses the compiled module. Default replaces data; merge:true shallow-merges keys (32KB "},{"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 provide"},{"name":"inspect","description":"Typed component inspect through the active sandbox. Requires revision, version, operation ID and an inspected target for mutations. Returns observed state. Five"},{"name":"click","description":"Typed component click through the active sandbox. Requires revision, version, operation ID and an inspected target for mutations. Returns observed state. Five-s"},{"name":"fill","description":"Typed component fill through the active sandbox. Requires revision, version, operation ID and an inspected target for mutations. Returns observed state. Five-se"},{"name":"select","description":"Typed component select through the active sandbox. Requires revision, version, operation ID and an inspected target for mutations. Returns observed state. Five-"}],"toolCount":28,"toolsHash":"3fddd2dc36c9dea756d5a698418e27bf6e287e9246e0a88fea52c76d01ebb216","serverName":"nova-canvas","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}}],"tools":[{"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."},{"name":"pairing_status","description":"Reads the validity, expiry or claimed status of a pairing code without consuming it."},{"name":"disconnect_canvas","description":"Revokes the screen pairing, owner access and claim recovery, including while the browser is offline."},{"name":"get_canvas","description":"Reads workspace revision, focus, component summaries, render status, media capabilities and display dimensions including device pixel ratio. Physical DPI is unk"},{"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; hos"},{"name":"read_component","description":"Reads a component source, saved state and supplied data."},{"name":"list_templates","description":"Lists approved TV template slugs, versions and param examples. Prefer render(slug) for these boards instead of generating source."},{"name":"render","description":"Paints an approved catalog template (weather, clock, countdown) without generated source. weather location defaults to Sudbury. First matching-display paint ski"},{"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. Optional "},{"name":"read_draft","description":"Reads a private draft source, state, data, target display, version, expiry and preview URL. Requires the original canvas online. Keep previewURL private; call s"},{"name":"screenshot_draft","description":"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."},{"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. "},{"name":"publish_draft","description":"Publishes an exact reviewed draft version only after the Preview quality loop. Set review to visual only if you actually screenshotted that version; otherwise s"},{"name":"discard_draft","description":"Removes an exact private draft version and its preview access without changing the live workspace."},{"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. Sour"},{"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 unk"},{"name":"cancel_operation","description":"Cancels a queued component update and removes its source. Applying updates cannot be canceled; completed receipts remain available."},{"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 t"},{"name":"create_component","description":"Validates, renders and saves a React or HTML component immediately to the right of focus. Success requires browser paint acknowledgement."},{"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"},{"name":"delete_component","description":"Deletes a component and selects its nearest remaining neighbor."},{"name":"navigate","description":"Focuses a component or moves one position. Acknowledges after the selected component renders."},{"name":"set_component_data","description":"Pushes live observations without regenerating source. Same-source React reuses the compiled module. Default replaces data; merge:true shallow-merges keys (32KB "},{"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 provide"},{"name":"inspect","description":"Typed component inspect through the active sandbox. Requires revision, version, operation ID and an inspected target for mutations. Returns observed state. Five"},{"name":"click","description":"Typed component click through the active sandbox. Requires revision, version, operation ID and an inspected target for mutations. Returns observed state. Five-s"},{"name":"fill","description":"Typed component fill through the active sandbox. Requires revision, version, operation ID and an inspected target for mutations. Returns observed state. Five-se"},{"name":"select","description":"Typed component select through the active sandbox. Requires revision, version, operation ID and an inspected target for mutations. Returns observed state. Five-"}],"package":null,"toolSurface":{"id":"ts_3r7vkvscyuqr","endpointId":"ep_z4e2keqsr2es","hash":"3fddd2dc36c9dea756d5a698418e27bf6e287e9246e0a88fea52c76d01ebb216","toolCount":28,"serverName":"nova-canvas","serverVersion":"1.0.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-10-04T20:29:02.404Z","lastSeenAt":"2026-10-09T22:27:48.332Z","observations":20,"toolNames":["claim_canvas","pairing_status","disconnect_canvas","get_canvas","get_console","read_component","list_templates","render","prepare_draft","read_draft","screenshot_draft","update_draft","publish_draft","discard_draft","queue_component","get_operation","cancel_operation","set_agent_status","create_component","update_component","delete_component","navigate","set_component_data","execute_script","inspect","click","fill","select"],"distinctSurfaces":4},"endpointFacts":[{"id":"ep_z4e2keqsr2es","url":"https://nova.ardabot.ai/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-08T20:23:58.999Z","auth":{"observedAt":"2026-10-08T20:23:59.099Z","authRequired":false,"scheme":null,"resourceMetadata":null,"authorizationServer":null,"conformance":{"dpop":false,"rfc8414":false,"rfc9728":false,"pkceS256":false,"clientIdMetadataDocument":false,"dynamicClientRegistration":false}},"tls":{"observedAt":"2026-10-08T20:23:59.258Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"nova.ardabot.ai","issuer":{"commonName":"YE2","organization":"Let's Encrypt"},"validFrom":"2026-09-26T09:42:43.000Z","validTo":"2026-12-25T09:42:42.000Z","daysToExpiry":76,"sanCount":1,"fingerprint256":"8A:22:37:9C:E5:17:55:30:17:7F:EE:89:87:6D:62:CC:8B:EA:1F:55:E0:16:91:A6:8C:6F:B8:A0:74:4B:56:B9"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"io.github.r4v3n-art/nova-cast","url":"https://registry.modelcontextprotocol.io/v0/servers/io.github.r4v3n-art%2Fnova-cast","firstSeenAt":"2026-10-02T12:22:18.904Z","fetchedAt":"2026-10-08T03:20:20.178Z","normalizedAt":"2026-10-08T03:20:20.178Z"}]},"firstSeenAt":"2026-10-02T12:22:18.904Z","updatedAt":"2026-10-09T22:30:00.776Z"}