Skip to main content
Glama

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.

MCP client
Glama
MCP server

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.

100% free. Your data is private.
Tool DescriptionsA

Average 4.5/5 across 26 of 26 tools scored.

Server CoherenceA
Disambiguation5/5

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.

Naming Consistency4/5

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.

Tool Count4/5

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.

Completeness5/5

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 tools
agentManage Agent IdentityA
Destructive
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
codeNoThe one-shot claim code (required for claim).
actionYesAgent 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).
Behavior5/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 AttachmentsA
Destructive
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
mimeNoupload: advisory Content-Type (the relay sniffs the bytes regardless).
onceNomint_token: token self-deletes on first GET.
limitNolist page size (1..100).
scopeNoupload scope (default agent).
actionYesBinary 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.
cursorNolist pagination cursor.
pane_idNoRequired when scope=pane.
filenameNoupload: display filename (defaults to the file's basename).
out_pathNodownload: ABSOLUTE path to write the bytes to. If omitted, the bytes are returned base64-encoded in the result.
token_idNorevoke_token: the token id to revoke.
file_pathNoupload: ABSOLUTE path to the local file to upload.
template_idNoRequired when scope=template.
ttl_secondsNomint_token: per-token TTL (clamped by scope default).
attachment_idNoAttachment id. Required for download/show/delete/mint_token/revoke_token/list_tokens.
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 PaneA
Destructive
Inspect

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 }.

ParametersJSON Schema
NameRequiredDescriptionDefault
htmlNoThe 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.
nameNoShort 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).
tagsNoOptional per-pane filter tags (merged with the template's tags). ≤20 tags, ≤50 chars each; 'favorite'/'favorites' are reserved.
titleNoOptional browser tab title for the human (≤80 chars). Defaults to `name`.
callbackNoOptional 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.
metadataNoOptional opaque JSON you can attach to the pane for your own bookkeeping (never shown to the human, queryable via run_query).
preambleNoOptional one/two-line context shown above the UI — 'who is asking, and why'.
icon_emojiNoOptional single-emoji icon override for this pane.
input_dataNoOptional 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_keyNoOptional natural key (e.g. 'pr-42'). Repeated create_pane calls with the same (template, key) return the SAME pane — makes retries idempotent.
template_idNoReuse 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_secondsNoOptional pane lifetime in seconds. The relay clamps to its max; the returned expires_at is authoritative.
event_schemaNoInline 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_schemaNoInline form only. Optional JSON Schema validating input_data. Needed if input_data references uploaded attachment ids the page must download.
participantsNoOptional number of distinct human participant URLs to mint (default 1). Each gets its own URL in the returned `urls` array.
record_schemaNoInline 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_versionNoWith `template_id`: pin this pane to a specific template version. Defaults to the template head's latest version.
icon_attachment_idNoOptional 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).
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 PaneA
DestructiveIdempotent
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
pane_idYesThe pane id to close/delete (idempotent).
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 RecordA
DestructiveIdempotent
Inspect

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 }.

ParametersJSON Schema
NameRequiredDescriptionDefault
pane_idYesThe pane id.
if_matchNoOptional optimistic-lock version.
collectionYesThe record collection name.
record_keyYesThe key of the record to delete.
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 CollectionA
DestructiveIdempotent
Inspect

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 }.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesRequired (true) to drop the whole collection. This removes every row plus the collection row itself and cannot be undone.
pane_idYesThe pane id.
collectionYesThe record collection to drop in its entirety.
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 FeedbackA
Destructive
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoFeedback category (required for create).
limitNolist page size (default 50, max 100).
actionYesFeedback to the relay operator. create: submit a bug|feature|note with a message (optional pane_id). list: the agent's own submissions, newest first.
beforeNolist cursor from a prior page's next_before.
messageNoMessage body (required for create).
pane_idNoOptional pane this feedback relates to (create).
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 EventsA
Read-only
Inspect

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 }.

ParametersJSON Schema
NameRequiredDescriptionDefault
sinceNoOpaque cursor from a previous get_events call's next_cursor. Omit on the first call to read from the beginning.
pane_idYesThe pane id to read events from.
wait_secondsNoOptional 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.
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 StateA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pane_idYesThe pane id returned by create_pane.
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 RecordA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pane_idYesThe pane id.
collectionYesThe record collection name.
record_keyYesThe key of the record to fetch.
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 GuideA
Read-only
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
version_onlyNoIf true, return only the relay's current skill version string instead of the full SKILL.md markdown.
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 KeyA
Destructive
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesThe 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).
confirmNoRequired (true) for revoke.
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 PanesA
Read-only
Inspect

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 }.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoPage size (default 50, max 200).
cursorNoOpaque cursor from a previous page's next_cursor.
statusNoFilter by effective status. Default: open.
template_idNoFilter to panes instantiated from a specific named template (head id, not version id).
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 RecordsA
Read-only
Inspect

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 }.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoOptional page size (max 200).
sinceNoOptional 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_idYesThe pane id.
collectionYesThe record collection name declared in the pane's record schema.
include_tombstonesNoInclude soft-deleted rows (deleted_at set) so you can observe deletions. Default false.
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 ParticipantsA
Destructive
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesManage 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_idYesThe pane id.
participant_idNoThe participant id to revoke (required for revoke).
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 QueryA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
sqlYesRead-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.
formatNoOutput format. Default json (columns+rows+meta). csv/tsv/table render the rows as text.
pane_idNoScope the query to a single pane (resolves a view_conflict when two of your panes share a collection name with different schemas).
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 PaneA
Destructive
Inspect

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 }.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesEvent payload — any JSON value valid against the type's payload schema. Use {} or null for a no-payload event.
typeYesEvent type. Must be declared in the pane's event_schema with 'agent' in its emittedBy list.
pane_idYesThe pane id to push the event into.
idempotency_keyNoOptional dedup key — a repeat send with the same key is a no-op.
Behavior5/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

shareManage Pane SharingA
Destructive
Inspect

Identity sharing on a pane (layered on top of participant tokens). ONE tool with an action enum: list (access_mode + grants) | invite (a human by email, role participant|viewer) | set_access (the /p access mode: invite_only|link|public) | revoke (one grant by id). Token (/s/) links are independent of access_mode and keep working.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleNoGrant role for invite (default participant).
emailNoInvitee email (required for invite).
actionYesIdentity sharing on a pane. list: access_mode + all grants. invite: invite a human by email (role participant|viewer). set_access: set the /p access mode (invite_only|link|public). revoke: remove one grant by id. Token (/s/<token>) links are independent of access_mode.
pane_idYesThe pane id.
grant_idNoGrant id to revoke (required for revoke).
access_modeNoAccess mode for set_access.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations signal destructive hint, and the description adds behavioral context by explaining the token independence ('Token (/s/<token>) links are independent of access_mode and keep working'). However, it does not elaborate on potential destructive outcomes or permission requirements beyond what annotations already indicate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with two sentences that pack essential information. It could be more structured (e.g., bullet points), but it remains clear and front-loads the key purpose. Every part earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 6 parameters, 2 required, no output schema, the description covers the main behaviors of the four actions and the token independence. It lacks explicit details on permissions or error states, but for a tool with an action enum and good annotations, the description is largely complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 value by explaining the token independence and the layering concept, providing context beyond the schema's parameter descriptions. This extra semantic context helps the agent understand the behavior of the tool's parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool as managing identity sharing on a pane, with a clear enumeration of four specific actions (list, invite, set_access, revoke). It distinguishes itself from sibling tools by specifying it's layered on top of participant tokens and that token links are independent, setting it apart from related tools like 'participant' or 'send_to_pane'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies that all sharing actions should be performed via this single tool, but it does not provide explicit guidance on when to use this tool versus alternatives (e.g., the 'participant' sibling tool). No when-not-to-use conditions or exclusions are stated, leaving the agent to infer usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tasteManage UI Taste NotesA
Destructive
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
tasteNoThe full markdown notes (required for set; whole-document replace, not append).
actionYesThe 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.
Behavior5/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 TemplatesA
Destructive
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoTemplate id or slug. Required for version/update/show/get_version/delete/publish/unpublish/set_icon.
htmlNoHTML template body / source (required for create + version).
nameNoTemplate display name (required for create).
slugNoStable agent-chosen handle (create/update).
tagsNoSearch keywords (create/update).
clearNoset_icon: clear both the emoji and image icon.
limitNosearch_public page size (1..50).
queryNoFree-text search (for search / search_public).
actionYesWhich 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).
offsetNosearch_public offset.
scopesNoverb:noun permission scopes for publish (e.g. ['read:agent']). Empty array clears them.
confirmNoRequired (true) for the destructive `delete` action.
versionNoVersion number (required for get_version).
icon_emojiNoset_icon: a single-emoji icon.
descriptionNoProse description (create/update).
event_schemaNoEvent schema (create/version). Omit for a view-only template.
input_schemaNoPer-pane input_data JSON Schema (create/version).
record_schemaNoPer-pane record collections schema (create/version).
template_typeNoSource kind. Default html-inline; html-ref treats html as a URL.
icon_attachment_idNoset_icon: a ready template-scoped raster-image attachment id.
template_record_schemaNoTemplate-level (shared) record collections schema (create/version). Set this before using the template_records tool.
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 RecordsA
Destructive
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
dataNoRecord body. Required for upsert/update.
limitNoList page size.
sinceNoList cursor (and poll handle).
actionYesOperation 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).
confirmNoRequired (true) for delete_collection (drops the whole collection).
if_matchNoOptimistic-lock version for update/delete.
collectionYesThe template-level collection name.
record_keyNoRecord key. Required for get/update/delete; optional for upsert.
template_idYesTemplate id or slug.
include_tombstonesNoInclude soft-deleted rows in list.
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 TrashA
Destructive
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoPane id (restore/purge) or template id|slug (restore_template/purge_template).
actionYesSoft-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).
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 PaneA
DestructiveIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoReplace the per-pane tags.
titleNoNew tab title.
pane_idYesThe pane id to edit.
metadataNoReplace the pane's metadata wholesale.
preambleNoNew preamble (context band above the UI).
expires_atNoSet expires_at to a specific future ISO-8601 timestamp. Mutually exclusive with ttl_seconds.
icon_emojiNoSet the per-pane emoji icon.
input_dataNoReplace the pane's input_data wholesale (revalidated against the pinned template version's input_schema).
ttl_secondsNoReset the pane's lifetime to now + this many seconds. Mutually exclusive with expires_at.
clear_icon_emojiNoClear the emoji override (fall back to the template's icon).
icon_attachment_idNoSet the per-pane icon to a ready raster-image attachment id.
clear_icon_attachment_idNoClear the attachment icon override (fall back to the template's icon).
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 RecordA
DestructiveIdempotent
Inspect

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 }.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesThe new record body (replaces the row's data).
pane_idYesThe pane id.
if_matchNoOptional optimistic-lock version. On mismatch the update is rejected with the current row in details.current.
collectionYesThe record collection name.
record_keyYesThe key of the record to update.
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 PaneA
Destructive
Inspect

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 }.

ParametersJSON Schema
NameRequiredDescriptionDefault
htmlNoINLINE 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`.
forceNoOverride 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_idYesThe pane id to re-pin.
event_schemaNoNew event schema for the `html` version. Omit to inherit.
input_schemaNoNew input schema for the `html` version. Omit to inherit.
record_schemaNoNew record schema for the `html` version. Omit to inherit.
template_typeNoType for the `html` version. Default: html-inline.
template_versionNoTarget version of the SAME template. Defaults to the template head's latest version. Mutually exclusive with `html`.
template_record_schemaNoNew template-level record schema for the `html` version. Omit to inherit.
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 RecordA
DestructiveIdempotent
Inspect

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 }.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesThe record body — any JSON value valid against the collection schema.
pane_idYesThe pane id.
collectionYesThe record collection name.
record_keyNoOptional stable key. Reusing an existing key returns the existing row (deduped:true).
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

Discussions

No comments yet. Be the first to start the discussion!

Try in Browser

Your Connectors

Sign in to create a connector for this server.

Resources