Pane
Server Details
Hosted remote MCP connector for Pane (OAuth 2.1): hand a human a rich interactive UI by URL and get structured data back — forms, approvals, surveys, pickers, editable lists. No install; works from Claude web/desktop/mobile and other remote-MCP clients.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.5/5 across 26 of 26 tools scored.
Each tool targets a distinct capability (agent, attachments, panes, records, events, etc.), and even within action-enum tools the operations are clearly separated. No two tools overlap in purpose; the boundaries are well-defined.
Most tools follow a consistent verb_noun pattern (e.g., create_pane, update_record). However, several tools use a single noun with an action enum (e.g., agent, attachments, feedback), introducing a minor inconsistency in naming style.
26 tools is on the higher side, but each tool serves a distinct and necessary function for a comprehensive UI interaction framework. The count reflects the breadth of the API without being excessive, though a few tools could potentially be consolidated.
The toolset covers all major lifecycle operations for panes, records, events, templates, attachments, identity, sharing, and feedback. The inclusion of get_skill and run_query adds self-teaching and ad-hoc querying capabilities, leaving no obvious gaps for the server's stated purpose.
Available Tools
26 toolsagentManage Agent IdentityADestructiveInspect
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 via a one-shot claim code from their Settings UI; one-way) | logout (clear the locally-saved key/profile; does NOT revoke it on the relay — use the key tool's revoke for that).
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | The one-shot claim code (required for claim). | |
| action | Yes | Agent identity. whoami: show the resolved relay URL, active profile, and whether a key is configured (no network, no secrets). claim: bind this agent to a human via a one-shot claim code the human generated in their Settings UI (one-way). logout: clear the locally-saved key/profile (does NOT revoke it on the relay — use the key tool's revoke for that). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description reveals important behavioral traits beyond annotations: whoami is no-network/no-secrets, claim is one-way, logout clears locally but does not revoke. These details add significant context to the destructiveHint=true annotation, clarifying what is destructive and what is not.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is highly concise, two sentences front-loading the core purpose and then detailing each action. Every sentence is informative, with no redundancy or wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Overall, the description covers the tool's actions, side effects, and cross-references well. However, it does not describe the return value or error conditions, and it mentions that code is required for claim but the schema lists it as optional, leaving a slight ambiguity. Nonetheless, for a tool with no output schema and moderate complexity, it is mostly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, so the parameter descriptions are already present in the schema. The tool description adds little beyond summarizing the action enum, providing no new parameter-level details. Thus, baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool manages agent identity and binding, explicitly listing three distinct actions (whoami, claim, logout) with specific scopes. It distinguishes itself from the sibling 'key' tool by noting that logout does not revoke on the relay, referencing the key tool for that purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance for each action: whoami for identity info without network/secrets, claim for one-way binding with a claim code, and logout for local clearing. It also advises when not to use it (for revocation, use the key tool), giving clear alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
attachmentsManage AttachmentsADestructiveInspect
Binary attachments (images, PDFs, audio, video) referenced from event payloads / input_data via format: pane-attachment-id. ONE tool with an action enum: upload | download | show | list | delete | mint_token | revoke_token | list_tokens. upload reads an ABSOLUTE file_path; download writes to an ABSOLUTE out_path (or returns base64). Scope an upload to agent (default, reusable), pane, or template. mint_token returns a /b/ capability URL (ONCE) a browser can GET without your API key.
| Name | Required | Description | Default |
|---|---|---|---|
| mime | No | upload: advisory Content-Type (the relay sniffs the bytes regardless). | |
| once | No | mint_token: token self-deletes on first GET. | |
| limit | No | list page size (1..100). | |
| scope | No | upload scope (default agent). | |
| action | Yes | Binary attachment operations. upload: read a local file (file_path) and upload it; scope agent|pane|template. download: fetch bytes by attachment_id to out_path (absolute) or return base64. show: metadata only. list: the agent's attachments. delete: soft-delete. mint_token: mint a /b/<token> capability URL (returned ONCE). revoke_token / list_tokens: manage those tokens. | |
| cursor | No | list pagination cursor. | |
| pane_id | No | Required when scope=pane. | |
| filename | No | upload: display filename (defaults to the file's basename). | |
| out_path | No | download: ABSOLUTE path to write the bytes to. If omitted, the bytes are returned base64-encoded in the result. | |
| token_id | No | revoke_token: the token id to revoke. | |
| file_path | No | upload: ABSOLUTE path to the local file to upload. | |
| template_id | No | Required when scope=template. | |
| ttl_seconds | No | mint_token: per-token TTL (clamped by scope default). | |
| attachment_id | No | Attachment id. Required for download/show/delete/mint_token/revoke_token/list_tokens. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses key behavioral traits such as absolute paths for upload/download, scope defaults, soft-delete for delete, one-time minting of tokens, and base64 fallback for download. Annotations ('destructiveHint': true) are consistent, and the description adds context beyond annotations, though it omits details like pagination behavior for list.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense paragraph that efficiently covers purpose, actions, key behaviors, and scoping. Every sentence earns its place with no redundancy, and the critical information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of 14 parameters and 8 actions with no output schema, the description covers most crucial behaviors (upload, download, mint_token, scoping) but omits some details like the return format for list or download without out_path (though hinted). It is fairly complete but not exhaustive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. However, the tool description adds extra meaning by explaining how parameters interact (e.g., scope affects required pane_id/template_id, upload reads absolute file_path, download returns base64 when out_path omitted). This adds value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as managing binary attachments with a specific list of actions. It distinguishes itself from sibling tools by being the only one handling attachments, and provides a clear verb+resource description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for attachment management but does not explicitly state when to use this tool versus alternatives or provide exclusion criteria. The sibling list suggests no other tool does attachments, so usage is implied but not clearly guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_paneCreate PaneADestructiveInspect
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). The relay hosts it and returns a URL. ALWAYS give the returned url to the human — paste it into the conversation and ask them to open it. Reach for this whenever a text reply is the wrong shape: forms, approvals, pickers, surveys, dashboards, diff/doc review, wizards. If the page captures input it emits events back to you (poll them with get_events) or mutates record collections (the record tools). BEFORE authoring: call get_skill for the events-vs-records decision + schema grammar, and the taste tool (action: get) for the human's house style — both shape the HTML you write. Returns { pane_id, url, urls, title, expires_at }.
| Name | Required | Description | Default |
|---|---|---|---|
| html | 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 | 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 | No | Optional per-pane filter tags (merged with the template's tags). ≤20 tags, ≤50 chars each; 'favorite'/'favorites' are reserved. | |
| title | No | Optional browser tab title for the human (≤80 chars). Defaults to `name`. | |
| callback | 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 | No | Optional opaque JSON you can attach to the pane for your own bookkeeping (never shown to the human, queryable via run_query). | |
| preamble | No | Optional one/two-line context shown above the UI — 'who is asking, and why'. | |
| icon_emoji | No | Optional single-emoji icon override for this pane. | |
| input_data | 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 | 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 | 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 | No | Optional pane lifetime in seconds. The relay clamps to its max; the returned expires_at is authoritative. | |
| event_schema | 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 | No | Inline form only. Optional JSON Schema validating input_data. Needed if input_data references uploaded attachment ids the page must download. | |
| participants | No | Optional number of distinct human participant URLs to mint (default 1). Each gets its own URL in the returned `urls` array. | |
| record_schema | 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 | No | With `template_id`: pin this pane to a specific template version. Defaults to the template head's latest version. | |
| icon_attachment_id | 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). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=false, destructiveHint=true, etc. The description adds important behavioral details: the relay hosts and returns a URL, idempotency via context_key, lifetime via ttl_seconds, and event/record mutation. It does not contradict annotations. A high score but not 5 because annotations carry some of the burden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is moderately long but well-structured. It front-loads the core purpose, then provides usage guidance, then detailed parameter notes. Every sentence adds value, though some could be tightened. Overall, it balances completeness with readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with 18 parameters and no required ones, the description is remarkably complete. It covers two usage modes, event/record schemas, return fields, and references sibling tools (get_skill, taste, get_events, template). Without an output schema, it still describes what is returned. The description leaves little ambiguity for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds substantial meaning beyond the schema. It explains when to use html+name vs template_id, how events work (window.pane.emit), and the relationship between parameters. For example, it clarifies that name is required with html but omitted with template_id. This significantly aids parameter selection and correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: creating a rich interactive UI by URL. It specifies the verb ('Hand'), resource ('UI'), and distinguishes between inline HTML and template modes. It also lists use cases (forms, approvals, etc.), making it easy for an agent to understand when to use this tool. No ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance on when to use this tool versus alternatives: 'Reach for this whenever a text reply is the wrong shape' and lists specific scenarios. It advises calling get_skill and taste before authoring, and mentions alternatives like get_events and record tools. This helps the agent decide correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_paneDelete PaneADestructiveIdempotentInspect
Close/delete a pane (idempotent — an already-closed pane still succeeds). The human's URL stops working. To merely edit a pane keep it alive with update_pane; to recover a soft-deleted pane use the trash tool (action: restore).
| Name | Required | Description | Default |
|---|---|---|---|
| pane_id | Yes | The pane id to close/delete (idempotent). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotent and destructive; description adds that the human's URL stops working, providing extra context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences with no wasted words, front-loaded with the main action, then side effects and guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter, the description covers purpose, behavior, side effects, and sibling differentiation; no output schema needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear description of pane_id; the description echoes the idempotent behavior but adds little beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Close/delete a pane') and the resource, and distinguishes from siblings by mentioning alternatives (update_pane, trash).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides when to use (delete) and when not (edit via update_pane, restore via trash), plus notes idempotency.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_recordDelete RecordADestructiveIdempotentInspect
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. Returns { deleted: true }.
| Name | Required | Description | Default |
|---|---|---|---|
| pane_id | Yes | The pane id. | |
| if_match | No | Optional optimistic-lock version. | |
| collection | Yes | The record collection name. | |
| record_key | Yes | The key of the record to delete. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds value beyond annotations by explaining it's a soft-delete with a tombstone in list_records and that the page sees the deletion live. Annotations already indicate destructiveHint=true and readOnlyHint=false, and the description aligns with them without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The first sentence states the core purpose and effect, the second gives an optional usage hint and return value. Efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description includes the return object ({ deleted: true }) and explains the soft-delete behavior. It could mention error scenarios or whether the operation is reversible, but for a delete tool, it covers the essential aspects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage, baseline is 3. The description adds meaningful context for the 'if_match' parameter (optimistic-locking) and implies the purpose of pane_id, collection, and record_key from their names. This lifts it above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'soft-delete' and the resource 'row from a pane's record collection'. It distinguishes from sibling tools like delete_pane and delete_record_collection by specifying soft-deletion behavior and noting the tombstone effect in list_records.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides a conditional guideline by mentioning 'Pass if_match for an optimistic-locked delete'. While it does not explicitly list alternatives or when-not-to-use, the context of soft-deletion versus other delete operations is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_record_collectionDelete Record CollectionADestructiveIdempotentInspect
Drop a WHOLE per-pane record collection at once: every row plus the collection row itself. Use this to reset or remove a collection (todo list, comment thread, board) rather than deleting rows one by one with delete_record. Owner-only and destructive, so it requires confirm:true. Collection names are immutable, so to rename a collection drop the old one and write under the new name. Returns { deleted: true, collection }.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | Yes | Required (true) to drop the whole collection. This removes every row plus the collection row itself and cannot be undone. | |
| pane_id | Yes | The pane id. | |
| collection | Yes | The record collection to drop in its entirety. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and readOnlyHint=false, but description adds 'owner-only', 'requires confirm:true', and 'returns { deleted: true, collection }'. No contradictions with annotations; idempotentHint=true is not addressed but not contradicted either.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each serving a distinct purpose: function definition, usage guidance, and behavioral note. No wasted words, front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, description still mentions return value. Covers destructive nature, ownership, confirm requirement, and alternative tool. Complete for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions for each parameter. The description adds context about collection immutability and confirm requirement, but mostly repeats schema info. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verb 'drop' and resource 'record collection', clearly distinguishes from sibling 'delete_record' by mentioning bulk vs single deletion. The title 'Delete Record Collection' is also clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use ('reset or remove a collection') and when not ('rather than deleting rows one by one with delete_record'). Also specifies requirement of confirm:true and owner-only restriction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
feedbackManage FeedbackADestructiveInspect
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 by before).
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Feedback category (required for create). | |
| limit | No | list page size (default 50, max 100). | |
| action | Yes | Feedback to the relay operator. create: submit a bug|feature|note with a message (optional pane_id). list: the agent's own submissions, newest first. | |
| before | No | list cursor from a prior page's next_before. | |
| message | No | Message body (required for create). | |
| pane_id | No | Optional pane this feedback relates to (create). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true. The description adds behavioral details: list returns newest first, paginated with 'before' cursor, limit defaults to 50 max 100, and optional pane_id for create. It does not mention authentication or side effects beyond mutation, which is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences that front-load the purpose and then detail actions. Every word is necessary; no redundancy. It is a model of efficient tool documentation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (two actions, no output schema, high schema coverage), the description covers the core functionality well. It explains create and list with parameters and pagination. Minor gap: missing return format for list, but acceptable without output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are well-documented. The description adds integration context (e.g., action enum purpose) but does not significantly enhance parameter understanding beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's dual purpose: send (create) or list feedback. It specifies the action enum and the feedback categories (bug, feature, note) with optional pane_id. This differentiates it from sibling tools, none of which handle feedback.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use create (to submit feedback) vs list (to view the agent's own submissions, paginated). It provides context but does not explicitly exclude scenarios or mention alternatives. However, given sibling tools, no alternative exists for feedback.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_eventsGet EventsARead-onlyInspect
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. Poll loop: call with no since first; process the returned events; remember next_cursor; call again passing it as since to get only newer events. To WAIT for a human who hasn't acted yet, pass wait_seconds (~25) so the relay holds the request open until an event arrives or it times out, then call again with the same cursor. Returns { events, next_cursor }.
| Name | Required | Description | Default |
|---|---|---|---|
| since | No | Opaque cursor from a previous get_events call's next_cursor. Omit on the first call to read from the beginning. | |
| pane_id | Yes | The pane id to read events from. | |
| wait_seconds | No | Optional long-poll: how long the relay holds the request open waiting for a new event (0–30s). Use ~25 when waiting for a human to act, then call again with the same cursor. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description reveals critical behavioral traits: the event log is append-only, the polling loop pattern, the return of events and next_cursor, and the long-polling mechanism with wait_seconds. It also warns about the lack of push/streaming. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with two short paragraphs. The first paragraph states the purpose and the polling pattern; the second explains the wait_seconds option and return shape. Every sentence is informative, and the structure is front-loaded with the essential purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (polling with cursor, long-polling), the description is remarkably complete. It explains the initial call, subsequent calls with cursor, the optional wait_seconds, and the return structure. There is no output schema, but the description mentions the return shape. It is sufficient for an agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes all three parameters with 100% coverage. The description adds value by explaining the usage semantics: 'since' is an opaque cursor from a previous call, 'pane_id' identifies the pane, and 'wait_seconds' is for long-polling. It ties parameters to the polling pattern, adding meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool polls a pane's append-only event log for human actions (form submissions, approvals, picks). It specifies the verb 'poll' and resource 'event log', and distinguishes it from other tools by explaining it's the way to receive round-trip results in MCP. The purpose is unambiguous and specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit instructions for usage: poll with no 'since' first, process events, use next_cursor for subsequent calls, and optionally use wait_seconds for long-polling. It mentions there is no push/streaming in MCP, implying this is the alternative. However, it does not explicitly state when not to use this tool or list alternative tools for different scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pane_stateGet Pane StateARead-onlyInspect
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. To read what the human did, use get_events.
| Name | Required | Description | Default |
|---|---|---|---|
| pane_id | Yes | The pane id returned by create_pane. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so safety is known. The description adds useful context about what is returned (metadata fields) and explicitly states what is excluded (event log), which goes beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with the action and resource, followed by usage guidance. Every sentence is necessary and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a single parameter, no output schema, and clear annotations, the description fully covers the tool's purpose, what it returns, and when to use it. No gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is only one parameter (pane_id) and the schema description already provides adequate explanation: 'The pane id returned by create_pane.' With 100% schema coverage, the description adds no additional meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Fetch' and the resource 'pane's current metadata' (status, title, template version, timestamps, expires_at), and distinguishes itself from get_events by specifying it does not include the event log.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use: 'to check whether a pane is still open or has expired', and when not to use: 'to read what the human did, use get_events'. Provides a clear alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_recordGet RecordARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| pane_id | Yes | The pane id. | |
| collection | Yes | The record collection name. | |
| record_key | Yes | The key of the record to fetch. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description adds that the tool 'scans the collection' and describes the return format ({record} or isError). This provides valuable behavioral context without contradicting annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences front-load the action and provide key details about performance and output. No extraneous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple fetch tool with 3 well-documented parameters and annotations, the description covers purpose, usage context, behavior, return format, and limitations. With no output schema, the description adequately explains the return value.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions already cover each parameter (pane_id, collection, record_key) with clear definitions. The description does not add new semantic meaning beyond the schema, so it meets the baseline for 100% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Fetch a single record row by its key from a pane collection', which is a specific verb and resource. It distinguishes from sibling tools like list_records and upsert_record by focusing on a single record fetch, though not explicitly naming alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides usage guidance by stating 'fine for a one-off lookup, not a hot loop' and implies appropriate context. Does not mention alternative tools explicitly, but the performance note helps in decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_skillGet Skill GuideARead-onlyInspect
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) before driving the other tools. Pass version_only:true to get just the relay's skill version string (to check if a cached copy is stale).
| Name | Required | Description | Default |
|---|---|---|---|
| version_only | No | If true, return only the relay's current skill version string instead of the full SKILL.md markdown. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, and description adds critical behavioral details: unauthenticated, no API key needed. Also explains version_only parameter behavior for caching. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is brief (two sentences), front-loaded with core purpose, and every sentence serves a distinct function (purpose, usage context, parameter explanation). No redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one optional parameter and no output schema, description fully covers behavior: returns full SKILL.md or version string. Sufficient for agent to select and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers the version_only parameter with 100% coverage. Description adds value by explaining its purpose: 'to check if a cached copy is stale', which aids agent decision-making beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Fetch the relay's auto-updating SKILL.md' and specifies it's unauthenticated. Distinguishes from siblings by framing it as a self-teaching guide for the Pane workflow before using other tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states 'Call this to self-teach the Pane workflow... before driving the other tools', providing clear when-to-use guidance. No explicit when-not or alternatives, but context implies it's the primary reference tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyManage API KeyADestructiveInspect
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 immediately and is irreversible — pass confirm:true). The relay scopes keys to the caller, so both act only on your own key.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | The calling agent's API key. list: key info (agent_id, key_prefix, timestamps). revoke: self-destruct the agent's OWN key — it stops working immediately and is irreversible (requires confirm:true). | |
| confirm | No | Required (true) for revoke. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true. The description adds further transparency by explaining that revoke is immediate, irreversible, and scoped to the caller's own key. It does not contradict annotations and provides behavioral context beyond the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two sentences. The first sentence states the overall purpose, and the second elaborates on actions. No unnecessary words, making it efficient for an AI agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description covers return values for 'list' (key info fields). For 'revoke', it warns about immediate effect but does not specify the return format (e.g., success message). The tool has only 2 parameters, and the description addresses their usage adequately, with only a minor gap on revoke's output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description enhances parameter understanding by specifying what 'list' returns (agent_id, key_prefix, timestamps) and that 'revoke' requires confirm:true and is irreversible, adding meaning beyond the schema's enum description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool inspects or revokes the calling agent's API key, with specific actions listed. It distinguishes itself from sibling tools by focusing solely on key management, and the verb 'manage' plus resource 'API key' is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit context for when to use each action: 'list' for key info (agent_id, key_prefix, timestamps) and 'revoke' for self-destructing the key. It includes important warnings about irreversibility and the need for confirmation, though it does not explicitly state when NOT to use the tool or mention alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_panesList PanesARead-onlyInspect
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. No secrets in the response (participant tokens are unrecoverable — mint a fresh URL with the participant tool). Filter by status (open|closed|all) or template_id. Returns { items, next_cursor }.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Page size (default 50, max 200). | |
| cursor | No | Opaque cursor from a previous page's next_cursor. | |
| status | No | Filter by effective status. Default: open. | |
| template_id | No | Filter to panes instantiated from a specific named template (head id, not version id). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true; description adds key behavioral context: 'No secrets in the response (participant tokens are unrecoverable — mint a fresh URL with the participant tool)' and returns { items, next_cursor }. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with core purpose, each sentence adds value (use cases, secret disclosure, filtering, return format). No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, usage, return shape, and key behavioral info. No output schema; description mentions items and next_cursor. Small gap: items structure not described, but adequate for listing tool with good annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description adds context about unrecoverable tokens and cursor pagination, but doesn't significantly enhance parameter understanding beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Enumerate YOUR agent's panes (newest first)' with specific use cases (find lost pane_id, audit open panes, get pagination cursor). Distinguishes from sibling tools like get_pane_state, create_pane, delete_pane, update_pane by indicating listing functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit use cases: find pane_id, audit open panes, get pagination cursor. Mentions filtering options. However, lacks explicit when-not-to-use or alternatives among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_recordsList RecordsARead-onlyInspect
List rows in a pane's mutable record collection (todo list, shopping list, kanban board, comment thread). Records are the right primitive when the page shows several mutable items and the CURRENT state matters more than the history. This also doubles as the POLL/watch for records (no streaming in MCP): pass the prior next_since to fetch only newer/changed rows. include_tombstones:true surfaces deletions. Returns { records, next_since, has_more }.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Optional page size (max 200). | |
| since | No | Optional cursor (next_since from a prior call). Also the POLL handle: to watch a collection (no streaming in MCP), call repeatedly passing the previous next_since to fetch only newer/changed rows. | |
| pane_id | Yes | The pane id. | |
| collection | Yes | The record collection name declared in the pane's record schema. | |
| include_tombstones | No | Include soft-deleted rows (deleted_at set) so you can observe deletions. Default false. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true. The description adds value by explaining the polling behavior, the effect of include_tombstones, and the return shape. It does not disclose rate limits or auth requirements, but for a read-only tool, the key behaviors are covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (3 sentences), front-loaded with the main purpose, and each sentence adds value. No redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description specifies the return shape ({ records, next_since, has_more }). It covers polling, filtering, and deletion observation. For a list tool, this provides sufficient context for accurate invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description enriches parameters: it explains 'since' as a cursor and polling handle, 'include_tombstones' for deletions, and 'limit' as page size. This adds significant meaning beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists rows in mutable record collections, provides examples (todo list, shopping list), and distinguishes it from history-focused tools. It also notes it doubles as a poll/watch mechanism, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use this tool ('when CURRENT state matters more than history') and how to poll by passing next_since. However, it does not explicitly contrast with siblings like get_record or update_record, leaving some usage ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
participantManage ParticipantsADestructiveInspect
Manage a pane's participant URLs (recovery + leak-containment). ONE tool with an action enum: list | new | revoke. Use new when you lost the original URL (the plaintext token is returned ONCE — save it). Token URLs are stored hashed and cannot be recovered.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Manage a pane's participant URLs. list: every participant (active + revoked) — use it to find a participant_id. new: mint a FRESH human URL on an existing pane (the plaintext token is returned ONCE — save it before delivering). revoke: invalidate one participant URL. | |
| pane_id | Yes | The pane id. | |
| participant_id | No | The participant id to revoke (required for revoke). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds important behavioral details beyond annotations: token URLs are stored hashed and cannot be recovered, plaintext token is returned only once, and list shows both active and revoked participants. This enriches the agent's understanding of safety and data handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four sentences long, front-loads the core purpose, and contains no redundant or vague statements. Every sentence contributes valuable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description adequately covers important behavioral aspects (token return once, irrecoverability). It explains each action's purpose. Minor gap: no mention of what list returns, but the schema's enum description covers that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds context to the action enum (e.g., 'list: every participant...', 'new: mint a FRESH human URL...') and clarifies that participant_id is required for revoke. This goes beyond the schema's basic descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it manages participant URLs for a pane, listing specific actions (list, new, revoke) and their purposes. It distinguishes itself from sibling tools by focusing on participant URL management.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit guidance for when to use 'new' (when original URL lost) and explains that tokens cannot be recovered. While it doesn't explicitly name alternatives, the tool's focus is clear enough for an agent to infer appropriate usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_queryRun SQL QueryARead-onlyInspect
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. Tables + columns and JSON projection operators are documented on the sql parameter. Default output is { columns, rows, truncated, scope, elapsed_ms } (format:json); csv/tsv/table render the rows as text. Capped at 10,000 rows; 10s timeout.
| Name | Required | Description | Default |
|---|---|---|---|
| sql | Yes | Read-only SQL (SELECT/WITH/SHOW/DESCRIBE/EXPLAIN/PRAGMA) over your scoped data. Tables: panes(id,title,template_id,template_version,status,created_at,expires_at,deleted_at,metadata,input_data), records(id,pane_id,collection,key,data,version,seq,author_kind,author_id,created_at,updated_at,deleted_at), events(id,pane_id,type,ts,author_kind,author_id,data,template_version_id). `data` is JSON — project with ->> / ->. Capped at 10k rows; 10s timeout. | |
| format | No | Output format. Default json (columns+rows+meta). csv/tsv/table render the rows as text. | |
| pane_id | No | Scope the query to a single pane (resolves a view_conflict when two of your panes share a collection name with different schemas). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true. The description adds valuable behavioral details: default output format, row caps (10k rows), timeout (10s), scoping to owned panes, and view conflict resolution via pane_id. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: first sentence states purpose and scoping, second lists use cases and references parameter documentation, third describes output format and caps. No wasted words, front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 3 parameters and no output schema, the description is fairly complete: it covers input (tables, operators), scoping, output format, row cap, timeout, and default output fields. It could mention error handling or that SQL errors are returned, but overall is sufficient for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds meaning beyond schema: it documents available tables and JSON operators for the sql parameter, explains output format behavior, and describes pane_id's role in resolving view conflicts. This provides context not present in the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Run read-only SQL'), identifies the resource ('YOUR scoped data (panes, records, events)'), and provides concrete use cases ('summarise activity, find panes/records by content, or build a report'). It clearly distinguishes from sibling tools by emphasizing the read-only and scoped nature.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit context on when to use: for read-only queries over scoped data. It implies alternatives (modification tools) through the readOnlyHint and sibling list, but does not explicitly name alternatives. The use cases and the scoping explanation help the agent decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_to_paneSend to PaneADestructiveInspect
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). The event type must be declared in the pane's event_schema with 'agent' in its emittedBy. For mutable collections (todos, line items, comment threads) prefer the record tools instead. Returns { event, deduped }.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Event payload — any JSON value valid against the type's payload schema. Use {} or null for a no-payload event. | |
| type | Yes | Event type. Must be declared in the pane's event_schema with 'agent' in its emittedBy list. | |
| pane_id | Yes | The pane id to push the event into. | |
| idempotency_key | No | Optional dedup key — a repeat send with the same key is a no-op. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description adds behavioral context beyond annotations: mentions that it updates live UI, returns { event, deduped }, and explains dedup behavior with idempotency_key. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words, front-loaded with purpose. Highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, description mentions return value. Covers purpose, usage, behavioral, and parameter nuances. Missing some edge cases but sufficient for a 4-param tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, baseline 3. Description adds nuance: for data mentions using {} or null for no-payload event, for type adds context about pane's event_schema requirement, for idempotency_key explains dedup.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states verb ('push an event') and resource ('open pane') and distinguishes from sibling tools like record tools. Also mentions updating live UI, which is specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when not to use (prefer record tools for mutable collections) and gives requirement (event type must be declared in pane's event_schema with 'agent' in emittedBy). Provides clear alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tasteManage UI Taste NotesADestructiveInspect
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'). ONE tool with an action enum: get | set | clear. Call get BEFORE generating a pane so prior feedback shapes the output; set does a whole-document replace (not append). Keep entries about UI/presentation only.
| Name | Required | Description | Default |
|---|---|---|---|
| taste | No | The full markdown notes (required for set; whole-document replace, not append). | |
| action | Yes | The agent's freeform UI taste notes (markdown) — presentation preferences learned from human feedback. get: read them before generating a pane. set: whole-document replace (taste, non-empty). clear: delete them. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that set does whole-document replace (not append) and clear deletes, adding context beyond annotations. Annotations indicate destructiveHint=true, and description aligns with that, no contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with actions and purpose. Every sentence earns its place; no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with 2 params and no output schema, the description covers purpose, actions, usage, and behavior. Minor omission: no mention of return values, but given no output schema, it's acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description adds clarity that taste is required for set (not in schema's required array) and that set is whole-document replace, adding value beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool manages UI taste notes with three actions (read/write/clear). It explicitly differentiates from siblings by being the only tool for this purpose, using a specific verb and resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when to call: 'Call get BEFORE generating a pane'. Warns about set behavior (whole-document replace, not append). Also advises to keep entries about UI/presentation only, guiding appropriate use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
templateManage TemplatesADestructiveInspect
Manage reusable, versioned UI templates (author once, instance many times via create_pane's template_id). ONE tool with an action enum: create | version | update | search | list | show | get_version | delete | publish | unpublish | search_public | set_icon. Required fields per action are documented on the action parameter. A template is HTML + an event schema (+ optional input/record/template-record schemas); a pane is one use of one version of it.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Template id or slug. Required for version/update/show/get_version/delete/publish/unpublish/set_icon. | |
| html | No | HTML template body / source (required for create + version). | |
| name | No | Template display name (required for create). | |
| slug | No | Stable agent-chosen handle (create/update). | |
| tags | No | Search keywords (create/update). | |
| clear | No | set_icon: clear both the emoji and image icon. | |
| limit | No | search_public page size (1..50). | |
| query | No | Free-text search (for search / search_public). | |
| action | Yes | Which template operation to run. create: a new named template (needs name+html). version: append a new immutable version to an existing template (id+html). update: patch head metadata (name/slug/description/tags). search/list: find the agent's templates (search takes an optional query). show: full template + version list (id). get_version: one version's content (id+version). delete: remove the template + all versions (id, requires confirm:true). publish/unpublish: public catalog (id). search_public: the public catalog across all agents (optional query). set_icon: set/clear a template's icon (id + one of emoji / icon_attachment_id / clear). | |
| offset | No | search_public offset. | |
| scopes | No | verb:noun permission scopes for publish (e.g. ['read:agent']). Empty array clears them. | |
| confirm | No | Required (true) for the destructive `delete` action. | |
| version | No | Version number (required for get_version). | |
| icon_emoji | No | set_icon: a single-emoji icon. | |
| description | No | Prose description (create/update). | |
| event_schema | No | Event schema (create/version). Omit for a view-only template. | |
| input_schema | No | Per-pane input_data JSON Schema (create/version). | |
| record_schema | No | Per-pane record collections schema (create/version). | |
| template_type | No | Source kind. Default html-inline; html-ref treats html as a URL. | |
| icon_attachment_id | No | set_icon: a ready template-scoped raster-image attachment id. | |
| template_record_schema | No | Template-level (shared) record collections schema (create/version). Set this before using the template_records tool. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true, and the description elaborates by specifying that delete is destructive and requires confirm:true. It also explains the template lifecycle and relationships, adding value beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with the core concept. It is slightly long but every sentence adds value; no redundancy. It could be slightly shorter but is still efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (21 parameters, 12 actions, nested schemas), the description covers the essential concepts and relationships with sibling tools. It lacks an output schema but the description implies return types for actions. Overall, it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline 3. The description adds substantial meaning by fully explaining the action enum's semantics and required fields per action, and provides context for other parameters like id, confirm, etc.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it manages reusable, versioned UI templates with a specific action enum. It distinguishes itself from sibling tools by mentioning create_pane's template_id and template_records, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides detailed guidance on when to use each action via the action parameter's description, and indirectly references sibling tools. However, it lacks explicit 'when not to use' statements, so it's very good but not perfect.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
template_recordsManage Template RecordsADestructiveInspect
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 record tools). ONE tool with an action enum: list | get | upsert | update | delete | delete_collection. The template version must declare the collection via template_record_schema (set it with the template tool first).
| Name | Required | Description | Default |
|---|---|---|---|
| data | No | Record body. Required for upsert/update. | |
| limit | No | List page size. | |
| since | No | List cursor (and poll handle). | |
| action | Yes | Operation on a TEMPLATE-level (owner-curated, shared across every pane of the template) record collection. Same grammar as the per-pane record tools but scoped to a template head. The template version must declare the collection via template_record_schema (set it with the `template` tool). | |
| confirm | No | Required (true) for delete_collection (drops the whole collection). | |
| if_match | No | Optimistic-lock version for update/delete. | |
| collection | Yes | The template-level collection name. | |
| record_key | No | Record key. Required for get/update/delete; optional for upsert. | |
| template_id | Yes | Template id or slug. | |
| include_tombstones | No | Include soft-deleted rows in list. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description indicates mutability (CRUD) and destructive potential, consistent with annotations (destructiveHint=true). Adds context about scope and prerequisite beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with high information density. Front-loaded with key purpose. Every sentence is necessary, though slightly dense.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers usage context, distinctions, and prerequisites well. No output schema, but CRUD behavior is standard. Slightly lacking in return value description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Parameter descriptions in schema are comprehensive (100% coverage). The tool description adds value by explaining the action pattern and prerequisite, going beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'CRUD for TEMPLATE-level record collections' and distinguishes from per-pane records. Lists action enum and emphasizes scope (owner-curated, shared across panes).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly contrasts with per-pane records and mentions prerequisite (template_record_schema via template tool). No explicit when-not-to-use, but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trashManage TrashADestructiveInspect
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). purge bypasses the retention window and is permanent. Soft-deleted rows live in trash until the sweeper reclaims them.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Pane id (restore/purge) or template id|slug (restore_template/purge_template). | |
| action | Yes | Soft-delete trash. list: trashed panes + templates. restore/purge: un-trash or hard-delete a pane (id). restore_template/purge_template: same for a template (id|slug). purge bypasses the retention window (permanent). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true. The description adds context: soft-deleted rows live in trash until reclaimed, and purge is permanent. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no redundancy. Key information (action enum, effects) is front-loaded. Every sentence adds necessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description adequately covers behavior: all actions and their permanence. Could mention return format (e.g., list returns items) but not essential.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds value by explaining that id can be a pane id or template id/slug depending on action, and that purge bypasses retention. The description elaborates on the enum values beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool manages soft-deleted panes and templates, with specific actions (list, restore, purge, etc.) and parameters. It is distinct from sibling tools like delete_pane or delete_record, which handle immediate deletion, not trash management.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains each action (list, restore, purge) and their effects, including that purge bypasses the retention window. It doesn't explicitly state when not to use the tool, but the action enum structure guides appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_paneUpdate PaneADestructiveIdempotentInspect
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), title, preamble, input_data (replaced wholesale + revalidated), metadata, tags, icon_emoji / icon_attachment_id (or clear_* to drop the override). Pass at least one field. Returns the full new pane state + an updated_fields array. To swap the HTML/schemas, use upgrade_pane instead.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Replace the per-pane tags. | |
| title | No | New tab title. | |
| pane_id | Yes | The pane id to edit. | |
| metadata | No | Replace the pane's metadata wholesale. | |
| preamble | No | New preamble (context band above the UI). | |
| expires_at | No | Set expires_at to a specific future ISO-8601 timestamp. Mutually exclusive with ttl_seconds. | |
| icon_emoji | No | Set the per-pane emoji icon. | |
| input_data | No | Replace the pane's input_data wholesale (revalidated against the pinned template version's input_schema). | |
| ttl_seconds | No | Reset the pane's lifetime to now + this many seconds. Mutually exclusive with expires_at. | |
| clear_icon_emoji | No | Clear the emoji override (fall back to the template's icon). | |
| icon_attachment_id | No | Set the per-pane icon to a ready raster-image attachment id. | |
| clear_icon_attachment_id | No | Clear the attachment icon override (fall back to the template's icon). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description reveals non-minting, retention of id/URL/event log/template pin, wholesale replacement of input_data with revalidation, and mutual exclusivity of ttl_seconds and expires_at. Annotations provide destructiveHint and idempotentHint, and the description adds valuable context beyond them. Could mention authorization or rate limits for a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loading the key behavior in the first sentence and listing settable fields and returns in the second. No redundant information, every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 12 parameters, nested objects, and no output schema, the description explains parameter constraints, behavior, and return shape. It does not mention error cases or prerequisites (e.g., pane existence), but is fairly complete for a complex tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds semantic value by explaining mutual exclusivity of ttl_seconds/expires_at, clearing behavior via clear_* fields, and wholesale replacement of input_data. It also describes the return shape (full new state + updated_fields array).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the verb (Edit/update), resource (a LIVE pane), and the specific behavior (in-place PATCH without minting a new one). It distinguishes from the sibling tool upgrade_pane, which swaps HTML/schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states 'Pass at least one field' and guides the agent to use upgrade_pane for swapping HTML/schemas. However, it does not provide broader guidance on when to use this tool versus other sibling tools like create_pane or delete_pane.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_recordUpdate RecordADestructiveIdempotentInspect
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 current row so you can retry. Returns { record }.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | The new record body (replaces the row's data). | |
| pane_id | Yes | The pane id. | |
| if_match | No | Optional optimistic-lock version. On mismatch the update is rejected with the current row in details.current. | |
| collection | Yes | The record collection name. | |
| record_key | Yes | The key of the record to update. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate mutation, destructiveness, and idempotency. The description adds behavioral context: it replaces entire data, details optimistic locking behavior including version mismatch handling and retry flow, and specifies the return format. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no wasted words. The main action is front-loaded, and critical details (optimistic locking, return value) are included efficiently. Each sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter destructive mutation tool with no output schema, the description covers key behaviors and return value. It lacks explicit error conditions or permission requirements, but with annotations and schema, it is largely sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds extra meaning beyond schema, particularly for if_match by explaining its role in optimistic locking and retry, and for data by emphasizing replacement nature. This improves parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool updates an existing row in a pane's record collection and replaces its data, specifying the verb and resource. It distinguishes from siblings like get_record, delete_record, and upsert_record by focusing on strict update with optimistic locking.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides some guidance on when to use optimistic locking with if_match, but it lacks explicit comparison to similar tools like upsert_record. It does not state when to prefer this tool over alternatives or when not to use it, leaving the agent to infer from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upgrade_paneUpgrade PaneADestructiveInspect
Re-pin a LIVE pane to swap its HTML (design) + event/input/record schemas in place — same URL, no new pane. Two ways: (1) pass html to EDIT AN INLINE PANE'S HTML in one call — the relay appends a fresh version with that HTML and re-pins (schemas you omit are inherited from the current version, so to change only the HTML pass only html); inline panes only. (2) pass template_version to re-pin to a version you already appended with the template tool (action: version) — for named/reusable templates. By default a strict schema-compat gate refuses an upgrade that would narrow the schema (returns schema_incompatible_upgrade + details.breaks); pass force:true to apply anyway. Returns { pane_id, template_version, upgraded, breaks, compat }.
| Name | Required | Description | Default |
|---|---|---|---|
| html | No | INLINE EDIT: the new HTML. The relay appends a fresh template version with this HTML and re-pins the pane to it in one call — editing an INLINE pane's HTML in place (same id/URL), no separate version step needed. Any schema you don't pass below is inherited from the pane's current version, so to change only the HTML pass only `html`. Inline panes only; a named/reusable template must go through the `template` tool (action: version) + `template_version`. Mutually exclusive with `template_version`. | |
| force | No | Override the strict schema-compat gate (compat=force). Without it, an upgrade that would narrow the schema is refused with schema_incompatible_upgrade + details.breaks. | |
| pane_id | Yes | The pane id to re-pin. | |
| event_schema | No | New event schema for the `html` version. Omit to inherit. | |
| input_schema | No | New input schema for the `html` version. Omit to inherit. | |
| record_schema | No | New record schema for the `html` version. Omit to inherit. | |
| template_type | No | Type for the `html` version. Default: html-inline. | |
| template_version | No | Target version of the SAME template. Defaults to the template head's latest version. Mutually exclusive with `html`. | |
| template_record_schema | No | New template-level record schema for the `html` version. Omit to inherit. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the tool's mutating nature (consistent with destructiveHint=true) and details behavioral traits: it appends a fresh version, re-pins in place, and has a strict schema-compat gate that returns schema_incompatible_upgrade errors unless force is used. It also describes the return object structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear opening sentence, numbered usage modes, and logical flow. While every sentence adds value, it is slightly verbose; a bit more conciseness could improve readability without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (9 parameters, nested objects, no output schema), the description sufficiently covers all essential aspects: behavior, mutation, modes, default values, error handling, and return format. It provides complete guidance for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 9 parameters have descriptions in the input schema (100% coverage), and the description adds meaningful context beyond the schema, especially for the html and template_version parameters, explaining mutual exclusivity and inheritance behavior. However, not all parameters are elaborated in the description text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool re-pins a LIVE pane to swap HTML and schemas in place while preserving URL. It distinguishes two modes (inline via html parameter, template via template_version parameter) and differentiates from siblings like update_pane and create_pane.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly provides two usage scenarios with clear guidance on when to use each: inline panes (using html) and named/reusable templates (using template_version). It also explains mutual exclusivity, default behaviors, and the schema-compat gate with force option.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upsert_recordUpsert RecordADestructiveIdempotentInspect
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. The collection must be declared in the pane's record schema with 'agent' allowed to write. If you're still designing the pane, call get_skill first for the records-vs-events decision and the x-pane-collections schema grammar. Returns { record, deduped }.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | The record body — any JSON value valid against the collection schema. | |
| pane_id | Yes | The pane id. | |
| collection | Yes | The record collection name. | |
| record_key | No | Optional stable key. Reusing an existing key returns the existing row (deduped:true). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description details the dedup behavior when record_key is reused (returns existing row), and specifies the return structure '{ record, deduped }'. Annotations already state idempotentHint=true and destructiveHint=true, and the description adds concrete context without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, front-loaded with the main purpose, and each sentence adds essential information. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter tool with no output schema, the description covers purpose, usage, prerequisites, return value, and even guides to sibling tools. It is fully adequate for an AI agent to select and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds value by explaining that record_key enables dedup and that data must be valid against the collection schema, going beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a row or returns an existing one if record_key is present, with 'deduped:true'. It specifies verb 'Create' and resource 'row in a pane's record collection', and distinguishes from siblings like create_record by highlighting dedup behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use examples ('add a todo, a line item, a comment'), prerequisites ('collection must be declared... with agent allowed to write'), and even guides to call get_skill as an alternative for design-phase decisions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!