About Pane
Hand a human a rich interactive UI by URL and get structured data back, from any MCP client
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
npx -y @paneui/mcpPANE_API_KEYSecretPane agent API key. If unset, the server auto-registers a fresh agent against the relay on first use and saves the key to the shared CLI store (~/.config/pane/config.json).PANE_URLPane relay base URL. Defaults to the hosted relay https://relay.paneui.com; set this to point at a self-hosted relay.PANE_AGENT_NAMEDisplay name for the auto-registered agent on the relay.PANE_REGISTER_SECRETSecretRegistration secret, required only for relays running REGISTRATION_MODE=secret.Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.
Tools
26Saved tool list · updated 2w ago
| Parameter | Type | Required | Description |
|---|---|---|---|
| html | string | No | The pane's UI as a complete inline HTML document. To send data back to you, the page calls window.pane.emit(eventType, payload) — every emitted eventType MUST be declared in event_schema with 'page' in its emittedBy. Read window.pane.inputData for seed data. Pass EITHER `html` (+`name`) for a one-off, OR `template_id` to reuse a saved template — not both. |
| name | string | No | Short human-readable label for the auto-created template (e.g. 'Deploy approval'). REQUIRED when you pass `html` (inline form); omit when reusing an existing template via `template_id` (it inherits the template's name). |
| tags | array | No | Optional per-pane filter tags (merged with the template's tags). ≤20 tags, ≤50 chars each; 'favorite'/'favorites' are reserved. |
| title | string | No | Optional browser tab title for the human (≤80 chars). Defaults to `name`. |
| callback | object | No | Optional webhook callback config so the relay POSTs new events to your endpoint. Shape per the relay's callback schema (e.g. { url, secret? }). Most MCP agents poll with get_events instead. |
| metadata | object | No | Optional opaque JSON you can attach to the pane for your own bookkeeping (never shown to the human, queryable via run_query). |
| preamble | string | No | Optional one/two-line context shown above the UI — 'who is asking, and why'. |
| icon_emoji | string | No | Optional single-emoji icon override for this pane. |
| input_data | object | No | Optional seed data for this pane instance, readable in the page as window.pane.inputData (e.g. the diff to review, the options to pick from). |
| context_key | string | No | Optional natural key (e.g. 'pr-42'). Repeated create_pane calls with the same (template, key) return the SAME pane — makes retries idempotent. |
| template_id | string | No | Reuse an existing named template (id or slug) instead of inline HTML. The template's pinned version supplies the HTML + event/input/record schemas. Mutually exclusive with `html`/`name`/`event_schema`/`input_schema`. Create templates with the `template` tool. |
| ttl_seconds | integer | No | Optional pane lifetime in seconds. The relay clamps to its max; the returned expires_at is authoritative. |
| event_schema | object | No | Inline form only. Declares which events the page (and you) may emit and validates each payload. Shape: { events: { '<type>': { emittedBy: ['page'|'agent'...], payload: <JSON Schema> } } }. OMIT for a read-only pane. |
| input_schema | object | No | Inline form only. Optional JSON Schema validating input_data. Needed if input_data references uploaded attachment ids the page must download. |
| participants | integer | No | Optional number of distinct human participant URLs to mint (default 1). Each gets its own URL in the returned `urls` array. |
| record_schema | object | No | Inline form only. JSON Schema 2020-12 doc with an `x-pane-collections` extension declaring this pane's mutable record collections (todos, comments…). OMIT for an event-only pane. |
| template_version | integer | No | With `template_id`: pin this pane to a specific template version. Defaults to the template head's latest version. |
| icon_attachment_id | string | No | Optional per-pane icon as a ready raster-image attachment id (png/jpeg/webp/gif). Upload it first via the `attachments` tool (scope: pane or agent). |
Details
The maintainer has not added details yet. Check the README in the repository.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.