pane
MCP serverDev toolsHand a human a rich interactive UI by URL and get structured data back, from any MCP client.
This server has no hosted endpoint yet, so ahel can't serve it. You can still add it. It stays paused until ahel can serve it.
Serve it through your gateway
One link, every agent. Your own credentials, stored once.
Tools it gives your agents (26)
| Tool | What it does |
|---|---|
| create_pane | Hand the human a rich interactive UI by URL and (optionally) get structured data back. Build the UI as inline HTML (pass `name` + `html`) OR reuse a saved template (pass `template_id`). |
| get_pane_state | Fetch a pane's current metadata (status, title, template version, timestamps, expires_at) WITHOUT its event log. Use it to check whether a pane is still open or has expired. |
| get_events | Poll a pane's append-only event log for what the human did (form submissions, approvals, picks). This is how you receive the round-trip result — there is no push/streaming in MCP. |
| send_to_pane | Push an event INTO an open pane — update the live UI the human is looking at (progress, a new message, a status change, fresh data). |
| update_pane | Edit instance-level fields on a LIVE pane in place (PATCH) without minting a new one — the pane keeps its id, URL, event log, and template pin. Settable: ttl_seconds OR expires_at (mutually exclusive) |
| upgrade_pane | Re-pin a LIVE pane to swap its HTML (design) + event/input/record schemas in place — same URL, no new pane. |
| list_panes | Enumerate YOUR agent's panes (newest first). Use it to find a pane_id you lost, audit what's open, or get a cursor for pagination. |
| delete_pane | Close/delete a pane (idempotent — an already-closed pane still succeeds). The human's URL stops working. |
| list_records | List rows in a pane's mutable record collection (todo list, shopping list, kanban board, comment thread). |
| get_record | Fetch a single record row by its key from a pane collection (scans the collection — fine for a one-off lookup, not a hot loop). Returns { record } or an isError record_not_found. |
| upsert_record | Create a row in a pane's record collection, or return the existing row if record_key is already present (deduped:true). Use to add a todo, a line item, a comment, etc. |
| update_record | Update an existing row in a pane's record collection (replaces its data). Pass if_match with the row's current version for an optimistic-locked update — on a version mismatch the relay returns the... |
| delete_record | Soft-delete a row from a pane's record collection. The page sees the deletion live (the row becomes a tombstone in list_records). Pass if_match for an optimistic-locked delete. |
| delete_record_collection | Drop a WHOLE per-pane record collection at once: every row plus the collection row itself. |
| template | Manage reusable, versioned UI templates (author once, instance many times via create_pane's template_id). |
| template_records | CRUD for TEMPLATE-level record collections — owner-curated content anchored to a template head and visible to every pane derived from any of its versions (vs per-pane records, which are the discrete... |
| participant | Manage a pane's participant URLs (recovery + leak-containment). ONE tool with an `action` enum: list | new | revoke. |
| share | Identity sharing on a pane (layered on top of participant tokens). ONE tool with an `action` enum: list (access_mode + grants) | invite (a human by email, role participant|viewer) | set_access (the... |
| attachments | Binary attachments (images, PDFs, audio, video) referenced from event payloads / input_data via `format: pane-attachment-id`. |
| taste | Read / write / clear the agent's freeform UI taste notes (a small markdown document of presentation preferences learned from human feedback — 'denser layout', 'no rounded corners'). |
| key | Inspect or revoke the calling agent's API key. ONE tool with an `action` enum: list (key info — agent_id, key_prefix, timestamps) | revoke (self-destruct the agent's OWN key; it stops working... |
| trash | Manage soft-deleted panes + templates. ONE tool with an `action` enum: list | restore (pane id) | restore_template (template id|slug) | purge (pane id) | purge_template (template id|slug). |
| feedback | Send or list feedback to the relay operator. ONE tool with an `action` enum: create (a bug|feature|note with a message, optional pane_id) | list (the agent's own submissions, newest first, paginated... |
| agent | Agent identity + binding. ONE tool with an `action` enum: whoami (the resolved relay URL, active profile, whether a key is configured — no network, no secrets) | claim (bind this agent to a human... |
| run_query | Run read-only SQL over YOUR scoped data (panes, records, events) — the relay scopes every row to panes you own. Use it to summarise activity, find panes/records by content, or build a report. |
| get_skill | Fetch the relay's auto-updating SKILL.md (the full Pane usage guide) — UNAUTHENTICATED, needs no API key. Call this to self-teach the Pane workflow (events vs records, schema grammars, the poll loop) |
Signals
- Tools captured
- 26