Facts that hold across Apps hosts
- All three Apps hosts we probed — basic-host, claude.ai and VS Code Copilot Chat — honour
ui/message, but only claude.ai advertises it. The frame therefore never gates prompt actions on the advertised flag; a host that answers with a JSON-RPC error gets an inline alert inside the frame while the widget stays intact. hostCapabilities.serverToolsin the initialize result is the reliable gate for http actions. Without it the frame renders http descriptors disabled with an explanatorytitle, and prompt actions stay enabled. All three probed hosts advertise it and proxy the frame’stools/callto the server.- App-side
tools/listis unsupported everywhere (-32601), so the frame never enumerates tools; it callsexecute_actionby name. - Hosts cache
ui://resources per conversation. After a server change, retest the template in a fresh chat. - Partial tool input (
tool-input-partial) is size-gated by the host, so do not count on the streaming preview appearing for every payload; the tool result is always authoritative. - The sandbox CSP blocks external images. The server inlines them as
data:URIs on iframe surfaces; see Inline rendering. - claude.ai mounts a fresh iframe per render, so each render is a new widget instance; a
loadbinding fires once per instance.
Connecting to the hosted server
The hosted server answers athttps://mcp.widgentic.dev/mcp. Hosts that send headers (VS Code Copilot Chat) pass the key as x-api-key; hosts that accept only a URL (claude.ai and Claude Desktop connectors) take it as ?key=. A request without a resolvable key still works over the built-in catalog, as described in Per-principal catalogs.
Registration is never an MCP tool. Whatever host you connect, saving a widget happens in the authenticated app; the key only reads. See the Trust model.
Hosts without Apps support
Any client that does not advertise the Apps capability receives the default result — the HTML fragment text block plus the widgentic payload block — with the template unmounted. Hosts that understand theapplication/vnd.widgentic+json block can mount it natively with @widgentic/core; see Render in your host. Everyone else reads the HTML, or asks for format: "page".