The MCP Apps standard covers rendering, theming, tool calls, and messages. Allternit adds a small set of optional methods for things the standard does not cover. They follow the usual pattern for host extensions: a View that uses only the standard runs everywhere, and a View that wants more feature-detects and degrades when the extension is absent.
  • Transport. The standard View to host JSON-RPC bridge, with methods prefixed x-allternit/.
  • Confirmation. Methods that save data or start work show a prompt drawn by the host over the View. The View cannot draw, skip, or answer it.
  • Unknown methods. Any x-allternit/* method (or other method) the host does not implement is rejected with JSON-RPC error -32601.

Feature detection

At ui/initialize, the host advertises the extension under the x-allternit key, in both hostCapabilities (on the result) and hostContext:
A View that missed the advertisement can call x-allternit/capabilities (no parameters) and gets the same object back. If the key is absent, the host does not support the extension: do not call the methods.

The shim

allternit-ext.js is a small dependency-free script (about 2 KB) that defines window.allternit. Its source is mcp-sandbox-proxy/allternit-ext.js in the Allternit host repository. A public download location is Planned. Inline its contents in your View’s HTML. A relative <script src> will not resolve inside the View’s opaque origin, and the View’s CSP allows inline scripts. The shim does nothing when it is not inside an iframe, and it leaves an existing window.allternit alone.
Every method returns a promise. On failure the promise rejects with an Error whose code is the JSON-RPC error code. Without the shim, send the request yourself with the bridge:

Methods

x-allternit/saveArtifact

Saves content to the user’s Artifacts Library. Returns artifactId and address, of the form a://artifact/<id>. The user sees a prompt of the form: “APP wants to save “TITLE” (MIME TYPE) to your Artifacts Library.”

x-allternit/openInAci

Opens content in the Allternit workspace, in a mini-app view. One of the two is required. openInAci is navigation only and does not ask for confirmation.

x-allternit/dispatchAgent

Creates a task for an agent to run. Returns { taskId }. This method always asks the user first, and the prompt shows the full prompt text. It creates the task in the user’s default workspace.

x-allternit/handoffToComputer

Asks Allternit’s computer-use agent to take over a task. Returns { accepted: true } after the user confirms. It opens Allternit’s browser view with the URL and instructions; the browser view does not act on them automatically yet.

x-allternit/requestCheckout

Reserved for selling in your MCP App, which is a preview. The host draws the payment sheet outside your View; your View never renders payment UI. When commerce is off the method returns { "error": "unavailable" }. Treat that as “not supported here.”

Confirmation behavior

  • The prompt is rendered by the host, outside your View. It states which app is asking and what it will do.
  • Only one prompt is open at a time. A request that arrives while a prompt is open is declined.
  • A declined or dismissed prompt returns error -32000 with the message “The user declined this request”. The same code is returned when the backing Allternit API call fails.
  • If the View is removed while a prompt is open, the prompt is declined.
Do not call a confirming method on load. Call it in response to a user action, and handle the rejection.

Errors

Degrading gracefully