pane

MCP serverDev tools

Hand 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)

ToolWhat it does
create_paneHand 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_stateFetch 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_eventsPoll 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_panePush 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_paneEdit 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_paneRe-pin a LIVE pane to swap its HTML (design) + event/input/record schemas in place — same URL, no new pane.
list_panesEnumerate 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_paneClose/delete a pane (idempotent — an already-closed pane still succeeds). The human's URL stops working.
list_recordsList rows in a pane's mutable record collection (todo list, shopping list, kanban board, comment thread).
get_recordFetch 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_recordCreate 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_recordUpdate 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_recordSoft-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_collectionDrop a WHOLE per-pane record collection at once: every row plus the collection row itself.
templateManage reusable, versioned UI templates (author once, instance many times via create_pane's template_id).
template_recordsCRUD 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...
participantManage a pane's participant URLs (recovery + leak-containment). ONE tool with an `action` enum: list | new | revoke.
shareIdentity 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...
attachmentsBinary attachments (images, PDFs, audio, video) referenced from event payloads / input_data via `format: pane-attachment-id`.
tasteRead / 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').
keyInspect 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...
trashManage 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).
feedbackSend 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...
agentAgent 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_queryRun 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_skillFetch 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