Skip to main content
Glama

Server Details

Send mobile pings and route human questions, approvals, and handoffs from AI agents.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
99.9% over 43 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A3.9/5.0

Scored across 42 tools

Disambiguation4/5

Most tools map cleanly to a resource+action (rooms, webhooks, attachments, questions, handoffs, approvals). There is real overlap in the human-input family—ask_question, create_handoff (which can itself be a question), and request_approval all solicit input and block—and in the five wait_for_* tools, though detailed descriptions mostly disambiguate them.

Naming Consistency4/5

Overwhelmingly consistent snake_case verb_noun (list_rooms, create_webhook, delete_attachment, wait_for_answer). Minor deviations: verb-only names (broadcast, disconnect), noun names (connection_info, live_status), and the deliberate singular/plural pair update_quick_action vs update_quick_actions.

Tool Count2/5

42 tools is heavy for any single server and exceeds the 25+ 'too many' threshold. Some are redundant (update_quick_action vs update_quick_actions, get_live_status vs live_status), and the surface could be consolidated even though the underlying platform is broad.

Completeness4/5

Strong coverage across rooms, webhooks (full CRUD), attachments, quick actions, questions, approvals, handoffs, live status, and onboarding. Gaps remain at the room lifecycle level—no leave/delete/update-room tool—but core agent workflows are well supported.

Available Tools

41 tools
activate_agent_inboxActivate Agent InboxAInspect

Start or resume the onboarding Question in the private room the human chose during authorization. If recipient_not_ready, ask the human to install or update PingRoom from install_url, open the app, sign in, and enable notifications before retrying. Read question.id, then call wait_for_handoff only while state is pending and within a bounded local deadline. Success is answered with activation_completed true. Any other terminal result is incomplete: stop polling that attempt, then call activate_agent_inbox again for one numbered retry. The stamp requires native phone receipt before the human answer.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYesPurpose-built PingRoom result with credential and account fields removed.

TDQS

A4.7/5.0
Behavior5/5

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

Adds significant behavioral detail beyond annotations: bounded local deadline, terminal result handling, retry policy, and the native phone receipt requirement. No contradiction with readOnlyHint=false or openWorldHint=true; the description enriches these 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?

Every sentence adds necessary information: purpose, conditional handling, polling instruction, success/retry semantics, and final stamp requirement. The description is dense but efficient, front-loaded with the core 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 a complex orchestration tool with no parameters and an output schema, the description fully covers the process, states, external dependencies, timeout behavior, and retry logic. Nothing an agent needs to call it correctly is missing.

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?

Tool has 0 parameters, so baseline is 4. The description references external entities like question.id and install_url but does not need to explain parameters since schema coverage is complete and there are none to define.

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 states a specific action ('Start or resume the onboarding Question'), identifies the resource ('private room the human chose during authorization'), and clarifies its role relative to wait_for_handoff. It clearly distinguishes itself from sibling tools by describing its orchestration purpose.

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 conditional guidance: what to do when recipient_not_ready, when to call wait_for_handoff, and when to retry. It gives clear context on the workflow but does not explicitly state when not to use this tool or name alternative tools for the same scenario.

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

ask_questionAsk QuestionInspect

Ask a person a question with 2-4 tappable options, then block on their answer (pair with wait_for_answer). Delivered as a push they can answer from the lock screen or in-app; the first valid answer wins. Rate-limited.

ParametersJSON Schema
NameRequiredDescriptionDefault
ttlNoSeconds the question stays open before it expires.
dataNoArbitrary structured context (max 25 keys / 8KB). Read surfaces return it after connector privacy filtering; do not put secrets in data. data.location is reserved for a shareable location, and data.checklist for a checklist.
promptYesThe question the person reads.
contextNoOptional secondary line, e.g. a build number.
optionsNoAnswer options in display order. Omit for a default Approve/Deny.
reply_toNoOptional routing pointer, echoed back unchanged.
text_inputNoInvite a typed answer (on its own, or alongside options). max_length is capped at 60.
invite_codeYesRoom invite code.
attachment_idsNoIds of up to 4 uploaded attachments (see upload_attachment) to include. Uploading requires a Pro account.
correlation_idNoYour own id, echoed back unchanged on read.
idempotency_keyNoStable key so a retried call cannot create a second one.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYesPurpose-built PingRoom result with credential and account fields removed.
broadcastBroadcast PingInspect

Send a custom ping to a room the account belongs to. Pass data.checklist.items to send a checklist the room ticks through together; read the ticks back as checklist_state. Rate-limited. Not available in personal rooms (use trigger_quick_action there).

ParametersJSON Schema
NameRequiredDescriptionDefault
dataNoArbitrary structured context (max 25 keys / 8KB). Read surfaces return it after connector privacy filtering; do not put secrets in data. data.location is reserved for a shareable location, data.checklist for a checklist, and data.url + data.button_label are reserved for a tappable link ping.
titleNoOptional headline. Defaults to the room name.
messageYesPing body text (max 120 characters in private rooms, 160 in public rooms).
ack_modeNoWith requires_ack: any (default) resolves on the first confirmation; all waits for every original eligible recipient. Read action_state.confirmed_count and required_count for progress.
reply_toNoId of the ping this one answers (notification id or correlation id).
is_urgentNoDeliver time-sensitive so the ping breaks through Focus / Do Not Disturb and reaches members who muted the room or you (a block still wins). Independent of requires_ack: urgent affects delivery only and asks nothing of the recipient.
action_iconNoOptional emoji shown with the ping.
invite_codeYesRoom invite code.
requires_ackNoKeep this ping open until its confirmation rule is met, and show it as a lock-screen card with an Acknowledge button. Does not raise the interruption level on its own — combine with is_urgent for an ack that also breaks through Focus.
action_numberNoOptional quick-action slot to attribute the ping to.
attachment_idsNoIds of up to 4 uploaded attachments (see upload_attachment) to include. Uploading requires a Pro account.
correlation_idNoYour own id, echoed back unchanged on read.
ack_timeout_secondsNoOptional acknowledgement deadline in seconds.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYesA privacy-minimized, chainable PingRoom notification result.
cancel_questionCancel QuestionA
DestructiveIdempotent
Inspect

Withdraw a still-pending question you asked.

ParametersJSON Schema
NameRequiredDescriptionDefault
question_idYesQuestion id.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYesPurpose-built PingRoom result with credential and account fields removed.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false. The description adds useful context beyond the annotations by specifying the operation is limited to 'still-pending' questions and only ones 'you asked.' No contradiction exists.

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, front-loaded sentence with no filler. Every word adds meaning, and the key constraint ('still-pending'), actor ('you'), and action ('withdraw') are immediately visible.

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 required parameter, rich annotations, and an output schema present, the description is sufficient for an agent to correctly understand and invoke the tool. No critical operational context is missing.

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% and there is a single UUID parameter. The description adds no new parameter-specific guidance, but the schema already carries the necessary meaning, so the baseline score of 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 a specific verb ('withdraw') with a clear resource ('still-pending question') and a scope ('you asked'). This clearly distinguishes the tool from siblings like ask_question, get_question, and wait_for_answer.

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 clearly conveys that the tool applies only to pending questions the caller asked. However, it does not explicitly name alternatives or state when not to use it, so it stops short of full exclusion guidance.

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

connection_infoConnection InfoA
Read-onlyIdempotent
Inspect

Verify the current connection: owner.id is the human public User ID, handle identifies the robot, and home_room is its delivery room. After login or reconnect, match owner.id and handle to the approved account and robot before sending. A mismatch means stop and reload or restart the MCP client. Includes a credential-protected latest-pings feed and token-free install URL; never send credentials to the install URL.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYesThe authenticated robot and its owner public User ID, for account verification.

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already indicate read-only, idempotent, and non-destructive. The description adds valuable behavioral context beyond this: it warns about a credential-protected latest-pings feed and a token-free install URL, and explicitly says 'never send credentials to the install URL.' This is a significant safety behavior not captured by 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 with no filler. The first sentence states the purpose, the second gives usage and mismatch handling, and the third warns about credential safety. Information is front-loaded and each clause earns its place.

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 zero-parameter tool with an output schema present, the description covers the essential invocation context: what the tool verifies, when to call it, what to check, and a critical security caveat. Nothing an agent needs to call it correctly is missing.

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 tool has zero parameters, so the baseline is 4. The description doesn't need to explain parameter meanings; it instead clarifies what the returned fields represent, which is relevant to the output. No parameter documentation gap exists.

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 opens with a specific verb and resource: 'Verify the current connection.' It then explains the meaning of the key fields (owner.id, handle, home_room), making the tool's purpose immediately clear. No sibling tool appears to cover connection verification, so it is naturally distinguishable.

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 guidance: 'After login or reconnect, match owner.id and handle to the approved account and robot before sending.' It also specifies the action to take on mismatch: 'stop and reload or restart the MCP client.' This is concrete, actionable routing information.

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

create_handoffCreate HandoffAInspect

Hand work to exactly one human as either an acknowledgement or a tappable question. The server verifies that one of the recipient's current devices supports the complete Handoff action before creating anything.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataNoStructured context returned on read surfaces after connector privacy filtering. Do not put secrets in data.
kindYesack asks the human to acknowledge; question asks them to choose an option.
promptYesThe work/request shown to the human.
optionsNoRequired for question and forbidden for ack. Each item may be a label string or a structured option.
urgencyNoNotification interruption level. Defaults to active.
audienceYes
reply_toNoOptional routing pointer.
expires_inNoSeconds before the handoff expires; the server clamps this to its safe range.
correlation_idNoYour own stable correlation id.
idempotency_keyNoStable key for at-most-once creation across both Ack and Question kinds.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYesPurpose-built PingRoom result with credential and account fields removed.

TDQS

A4/5.0
Behavior4/5

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

The description adds valuable behavioral detail beyond the annotations by noting that the server verifies device support for the complete Handoff action before creating anything. This implies a precondition and clarifies that no object is created if the verification fails. The annotations already indicate a non-read-only, non-destructive mutation, and the description enriches that context without contradicting it.

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-loads the core purpose, and includes a meaningful behavioral guarantee in the second sentence. Every word earns its place, and it is not padded with redundant information that already exists in the schema or annotations.

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 (10 parameters, nested objects, output schema), the description provides the essential purpose and a key precondition. The output schema covers return values, and the annotations provide safety hints. The main omission is lack of explicit routing guidance among sibling tools, but that is partially covered by the purpose statement.

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 high (90%), so the schema already documents most parameters. The description adds minimal parameter-level meaning beyond rephrasing the kind distinction (acknowledgement vs. question). Per the baseline rule, this is adequate, but the description does not significantly compensate for any parameter ambiguity.

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 and resource: "Hand work to exactly one human" as either an acknowledgement or a tappable question. It also conveys the constraint of exactly one recipient, which helps differentiate it from broadcast and room-based siblings. This is more specific than the title alone and clearly identifies what the tool creates.

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 one-to-one handoffs requiring acknowledgement or a question, but it does not explicitly state when to prefer this tool over siblings like ask_question or broadcast. The phrase "exactly one human" provides a hint, but there is no explicit when/when-not guidance or mention of alternatives.

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

create_public_roomCreate Public RoomAInspect

Create a publicly discoverable room with a unique @handle. Counts toward the free-plan five-room cap.

ParametersJSON Schema
NameRequiredDescriptionDefault
iconYesA v3 room-icon catalog id, e.g. "bell". Call list_room_icons to discover the valid ids.
nameYesRoom display name.
colorYesHex color, e.g. "#e33122".
handleYesGlobally unique @handle (vanity URL): lowercase letters, digits, underscores.
categoryNoDiscovery category.
show_ownerNoWhether the owner is shown publicly. Defaults to true.
descriptionNoShort room description shown in public discovery.
location_nameNoPlace name shown in nearby discovery. Send all three location fields or none.
location_latitudeNoLatitude in decimal degrees. Send all three location fields or none.
location_longitudeNoLongitude in decimal degrees. Send all three location fields or none.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYesPurpose-built PingRoom result with credential and account fields removed.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=false (mutating) and destructiveHint=false (not destructive). The description adds an important business rule: 'Counts toward the free-plan five-room cap', which is not in annotations or schema. It provides practical side-effect information that helps an agent anticipate consequences.

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 exceptionally concise: two sentences, with the most critical information (public, unique handle, quota impact) front-loaded. No extraneous words, every element serves a purpose.

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 (10 parameters, output schema exists, annotations cover safety), the description covers the essential business constraint (quota) and public nature. The output schema likely documents return values, so no further explanation is needed. The only minor gap is not explicitly mentioning the handle uniqueness requirement as a parameter constraint, but the schema's pattern provides that.

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 all 10 parameters are described in the schema. The description adds no new parameter-level semantics, but it does reinforce the handle uniqueness context. Baseline 3 is appropriate since the schema carries the parameter burden.

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 verb ('Create'), resource ('a publicly discoverable room'), and a distinguishing constraint ('unique @handle' and free-plan cap). It differentiates from sibling create_room by emphasis on public discoverability and handle uniqueness.

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 implies when to use this tool (creating a public room, as opposed to create_room which likely handles private rooms). It does not explicitly mention alternatives or when not to use, but the context is clear enough for an agent to infer the distinction.

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

create_roomCreate RoomAInspect

Create a new private room owned by the authenticated account. Free accounts may own up to five rooms. If this agent was granted every room and has no delivery room yet, the new room becomes its delivery room — where its handoffs and direct questions land.

ParametersJSON Schema
NameRequiredDescriptionDefault
iconYesA v3 room-icon catalog id, e.g. "bell". Call list_room_icons to discover the valid ids.
nameYesRoom display name.
colorYesHex color, e.g. "#e33122".

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYesPurpose-built PingRoom result with credential and account fields removed.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations only provide false hints for readOnly, openWorld, idempotent, and destructive, so they do not describe side effects. The description adds meaningful behavioral context: the five-room quota for free accounts and the conditional promotion of the new room to delivery-room status, which affects where handoffs and direct questions land. This goes beyond what annotations convey.

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 uses three sentences, each adding distinct information: the core purpose, the quota limitation, and the delivery-room side effect. It is front-loaded with the main action and contains no redundant or filler phrasing.

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?

The description covers purpose, ownership, quota, and the side-effect condition, and an output schema is present, so return-value details are not needed. The only minor omission is an explicit pointer to create_public_room, but the word 'private' already signals that boundary, making the description complete enough for correct tool selection and invocation.

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 the input schema already documents name, icon, and color with examples and constraints. The description adds no parameter-level detail beyond what the schema provides, so the baseline score of 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 opens with a specific verb and resource: 'Create a new private room owned by the authenticated account.' The 'private' qualifier clearly differentiates it from the sibling create_public_room, so an agent can correctly identify which tool to use.

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 clear context: this is for private rooms owned by the caller, and it explains the delivery-room condition when the agent has every room. It does not explicitly name create_public_room as the alternative for public rooms, but the private/public contrast and the sibling list make the intended use reasonably clear.

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

create_webhookCreate WebhookAInspect

Create an incoming webhook for a room the account owns. The bound account must be Pro. Returns the secret trigger URL — treat it as a credential.

ParametersJSON Schema
NameRequiredDescriptionDefault
iconNoA v3 room-icon catalog id, e.g. "bell". Call list_room_icons to discover the valid ids.
nameYesWebhook name (shown to the owner).
colorNoHex color, e.g. "#e33122".
soundNoCanonical sound id, e.g. "ting". Omit for the room default.
titleNoOptional push title used when the webhook fires.
enabledNoWhether the webhook is active. Defaults to true.
messageNoOptional default push body (max 120 characters in private rooms, 160 in public rooms).
invite_codeYesRoom invite code.
action_numberNoQuick-action slot whose label, sound, and acknowledgement preset fires use. Omit or pass null for an independent webhook with no Quick Ping preset.
cooldown_secondsNoMinimum seconds between fires. Defaults to 5.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYesAn incoming webhook. `webhook_url` embeds the secret — treat it as a credential.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already establish the write profile (readOnlyHint=false, idempotentHint=false, destructiveHint=false), so the description's job is to add context — and it does: the Pro-plan gate, the ownership requirement, and the warning that the returned trigger URL is a credential to be handled as such. It doesn't cover failure modes or rate limits, but the safety-relevant disclosure is present.

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, both load-bearing: the first gives purpose plus scope, the second gives a hard prerequisite and a security caveat. No filler and the credential warning is not buried.

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?

An output schema exists, so the description needn't explain return values, yet it still flags the one return value an agent must handle carefully. Prerequisites and ownership are covered; what's missing is behavior on prerequisite failure (e.g. non-Pro account) for a 10-parameter mutation tool.

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% across all 10 parameters, so the schema already carries the field semantics (including cross-references like list_room_icons for icon ids). The description adds no parameter-level detail, which is acceptable at this coverage level but yields the baseline score.

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?

States a specific verb and resource ('Create an incoming webhook') plus a scoping constraint ('for a room the account owns'). This cleanly separates it from update_webhook, delete_webhook, and list_webhooks, which share the resource but differ in verb.

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?

Gives a clear precondition for use — the room must be owned by the account and the bound account must be Pro — which tells the agent when this tool is applicable. It stops short of naming alternatives or stating what to do instead when the plan requirement isn't met.

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

delete_attachmentDelete AttachmentA
DestructiveIdempotent
Inspect

Delete an attachment this agent uploaded that is not yet claimed by a ping.

ParametersJSON Schema
NameRequiredDescriptionDefault
attachment_idYesAttachment id returned by upload_attachment.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYesPurpose-built PingRoom result with credential and account fields removed.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already convey destructiveness and non-read-only behavior. The description goes beyond them by adding an ownership requirement and a lifecycle condition ('not yet claimed by a ping'), which clarifies when deletion is valid. This is useful context that is not present in the structured 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 a single sentence, front-loads the action ('Delete an attachment'), and then states the two necessary constraints. There is no filler or redundant restating of the title.

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 single-parameter destructive operation with a well-documented schema, an output schema, and informative annotations, the description fully covers the relevant invocation context. Nothing an agent needs to decide whether to call this tool is missing.

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 schema already fully documents attachment_id as a UUID returned by upload_attachment, so schema coverage is 100%. The description adds no additional parameter-level meaning beyond what the schema provides, which matches the 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 names a specific action ('Delete') and a resource ('attachment'), and adds two precise scope constraints: it must be an attachment this agent uploaded and one not yet claimed by a ping. This clearly differentiates it from siblings like upload_attachment and get_attachment.

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 clear conditions for use: only delete attachments the agent uploaded and that are not yet claimed by a ping. It does not explicitly name alternatives or say when not to use the tool, but the constraints strongly imply the appropriate invocation context.

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

delete_webhookDelete WebhookA
DestructiveIdempotent
Inspect

Delete an incoming webhook (by id) from a room the account owns.

ParametersJSON Schema
NameRequiredDescriptionDefault
webhook_idYesWebhook id (from list_webhooks or create_webhook).
invite_codeYesRoom invite code.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYesPurpose-built PingRoom result with credential and account fields removed.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already mark this as destructive and idempotent; the description adds the ownership requirement and clarifies the target ('incoming webhook, by id'). It does not contradict the annotations and provides context beyond them.

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?

One compact sentence with all essential information front-loaded. No filler or 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?

For a two-parameter delete operation with rich annotations and an output schema, the description covers the object, ownership condition, and identifier. Nothing essential to invoking it correctly is missing.

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 parameters are already documented. The description reinforces webhook_id as the identifier and invite_code as the room, but adds no format or syntax detail 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?

States a specific action (delete), resource (incoming webhook), identifier mechanism (by id), and scope constraint (room the account owns). This distinguishes it from sibling create_webhook, update_webhook, and list_webhooks.

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 makes the basic use case clear—deleting a webhook by id—and adds an ownership condition. It does not explicitly mention alternatives or when not to use it, leaving the usage guidance implied.

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

disconnectDisconnectA
DestructiveIdempotent
Inspect

Revoke this authenticated robot connection, including its access and refresh credentials and room memberships. Use only when the human explicitly requests logout, disconnection, or reconnection. Call BEFORE clearing local credentials or running MCP logout/login. It affects only the current connection and accepts no account or robot selector. After login, restart or reload the MCP client, then match connection_info owner.id and handle to the approved account and robot before sending.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYesThe authenticated robot and its owner public User ID, for account verification.

TDQS

A5/5.0
Behavior5/5

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

Beyond the destructiveHint and idempotentHint annotations, it reveals the concrete consequences: revocation of access/refresh credentials and room memberships, current-connection-only scope, and post-login requirements to restart/reload and verify connection_info owner.id and handle. The description is consistent with destructiveHint=true and does not contradict 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 front-loads the core action and consequence, then provides conditions, ordering, scope, and post-login steps in compact sentences. No sentence is filler; each adds decision-relevant or execution-relevant detail.

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 zero-parameter destructive tool, the description covers when, in what order, with what scope, and what to do after login. The presence of an output schema means the description need not explain return values, and the annotations already communicate safety and idempotence.

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?

With zero parameters, the schema already exhaustively documents inputs, giving a baseline of 4. The description goes further by explicitly stating the tool 'accepts no account or robot selector,' preventing an agent from assuming optional selector parameters are allowed.

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 names a specific action ('Revoke') and a specific resource ('this authenticated robot connection'), and details what revocation covers ('access and refresh credentials and room memberships'). It clearly distinguishes the tool from read-oriented siblings like connection_info and from robot/account management by stating it accepts 'no account or robot selector'.

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?

It gives explicit when-to-use conditions ('only when the human explicitly requests logout, disconnection, or reconnection'), ordering constraints ('Call BEFORE clearing local credentials or running MCP logout/login'), and a scope exclusion ('affects only the current connection'). This gives an agent unambiguous decision rules and sequencing without needing to infer from the name.

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

get_approvalGet ApprovalA
Read-onlyIdempotent
Inspect

Fetch the current status of an approval request without blocking.

ParametersJSON Schema
NameRequiredDescriptionDefault
approval_idYesApproval request id.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYesPurpose-built PingRoom result with credential and account fields removed.

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the non-blocking behavior, which is useful, but no additional side-effect or error context is provided.

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?

A single sentence that front-loads the action, resource, and key behavioral nuance with no filler or repetition.

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 single-parameter read-only fetch with an output schema and strong annotations, the description is nearly complete. The only minor gap is not explicitly routing to wait_for_approval when blocking is acceptable.

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 already documents approval_id as a required UUID with the description 'Approval request id.' With 100% schema coverage, the tool description adds no parameter-level meaning, so the baseline 3 applies.

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?

States a specific action (fetch), a specific resource (approval request), and a scoping detail (current status) plus the non-blocking behavior. This clearly distinguishes it from sibling wait_for_approval.

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 phrase 'without blocking' gives clear context for choosing this over a blocking wait variant, and siblings include request_approval and wait_for_approval to make the contrast. It does not explicitly name alternatives or exclusions, but the context is enough for a simple read tool.

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

get_attachmentGet AttachmentA
Read-onlyIdempotent
Inspect

Fetch an attachment visible to this agent as base64 content plus metadata. Results over the connector size limit return attachment_too_large — fetch those via the agent REST API instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
attachment_idYesAttachment id returned by upload_attachment.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYesPurpose-built PingRoom result with credential and account fields removed.

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the readOnlyHint, idempotentHint, and destructiveHint annotations, the description adds meaningful behavioral context: the visibility restriction, the base64 encoding of content, and the specific error/fallback behavior for oversized results. No contradiction with annotations exists.

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 with no filler. The action and key output detail are front-loaded, and the error/fallback guidance is placed second. Every sentence carries useful 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?

For a simple one-parameter, read-only tool with a full output schema and comprehensive annotations, the description covers the essential behavioral details: scope, output encoding, error condition, and fallback path. Nothing needed for correct invocation is missing.

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 the single attachment_id parameter is already fully documented in the schema, including its UUID format and source (upload_attachment). The description doesn't need to add parameter-level detail, so the baseline score of 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 states a specific verb ('Fetch') and resource ('an attachment visible to this agent'), and clarifies the output format ('base64 content plus metadata'). This clearly distinguishes it from sibling tools like upload_attachment and delete_attachment by focusing on the retrieval operation.

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 a when-not-to-use condition: results over the connector size limit return attachment_too_large and should instead be fetched via the agent REST API. This gives the agent a clear routing decision without ambiguity.

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

get_handoffGet HandoffA
Read-onlyIdempotent
Inspect

Fetch the authoritative current state of one Handoff without blocking.

ParametersJSON Schema
NameRequiredDescriptionDefault
handoff_idYesHandoff id.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYesPurpose-built PingRoom result with credential and account fields removed.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, non-destructive behavior. The description adds meaningful context beyond annotations: the operation is non-blocking and returns the authoritative current state, which are useful behavioral traits for tool selection.

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, front-loaded sentence with no filler or redundant content. Every word contributes meaning.

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?

The tool is simple: one required parameter, rich annotations, and an output schema. The description clearly states that it fetches one handoff's state without blocking, which is sufficient for correct invocation.

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% and the single parameter handoff_id is documented as 'Handoff id.' The description does not add additional parameter detail, so it neither helps nor harms 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?

Description uses specific verb 'Fetch' and resource 'one Handoff', and clarifies it returns the authoritative current state. This distinguishes it from siblings like list_handoffs (plural), wait_for_handoff (blocking), and create_handoff (creation).

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 phrase 'without blocking' and 'authoritative current state' clearly position this as the synchronous read tool, contrasting with wait_for_handoff. It does not explicitly name alternatives, but the context is strong enough for an agent to infer appropriate use.

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

get_live_statusGet Live StatusA
Read-onlyIdempotent
Inspect

Read back the current state of a live stream you created, so a restarted producer can reconcile instead of starting a duplicate. Only returns streams started by this credential, within the last 24 hours. Returns notification_id and correlation_id, then the stored display state (state, progress, message, category, template, accent_override, eta_at, deadline_at, duration_seconds, metrics, prompt, options, left, right, center, steps, current_step), action_state, and updated_at. Fields you never set come back as null rather than being omitted, so a matchup/metrics/countdown/question stream can be resumed without re-sending content.

ParametersJSON Schema
NameRequiredDescriptionDefault
invite_codeYesRoom invite code.
correlation_idYesThe stream key used when the stream was started.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYesPurpose-built PingRoom result with credential and account fields removed.

TDQS

A4.1/5.0
Behavior5/5

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

Annotations already cover read-only, idempotent, non-destructive, and closed-world behavior. The description adds important context beyond annotations: credential-scoped results, a 24-hour retention window, null rather than omitted fields, and the ability to resume a stream without re-sending content. These details help an agent understand both result shape and reconciliation behavior.

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

Conciseness3/5

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

The description is front-loaded with purpose and constraints, which is good structure. However, it spends a long sentence enumerating return fields even though an output schema exists, making that portion less concise than necessary. The null-behavior sentence earns its place, but the field list is largely redundant.

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 an output schema and full annotation coverage, the description provides everything an agent needs: purpose, scope limits, retention window, return null semantics, and recovery intent. No critical operational context is missing for a read-only status lookup.

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 invite_code and correlation_id are already documented in the input schema. The description does not add parameter syntax, format, or edge-case meaning beyond what the schema provides. With the schema doing the heavy lifting, a baseline 3 is appropriate.

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?

The description gives a specific verb and resource: read back the current state of a live stream you created. It also defines scope precisely by saying only streams started by this credential within the last 24 hours are returned. It does not explicitly distinguish itself from the similar sibling live_status by name, so it is clear but lacks direct sibling differentiation.

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 clearly states the use case: allowing a restarted producer to reconcile instead of starting a duplicate. The 24-hour and credential constraints implicitly tell the agent when this tool will and will not return useful data. It does not explicitly name alternatives or when not to use it, so it falls short of full when/when-not guidance.

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

get_notificationGet Notification
Read-onlyIdempotent
Inspect

Fetch one visible ping by notification id, including its current action_state and, once anything on its data.checklist is checked, checklist_state.

ParametersJSON Schema
NameRequiredDescriptionDefault
notification_idYesRoom notification id.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYesA privacy-minimized, chainable PingRoom notification result.
get_questionGet QuestionA
Read-onlyIdempotent
Inspect

Fetch the current state of a question without blocking.

ParametersJSON Schema
NameRequiredDescriptionDefault
question_idYesQuestion id.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYesPurpose-built PingRoom result with credential and account fields removed.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already provide readOnly, idempotent, and non-destructive hints, so the description's main added value is the 'without blocking' behavior, which is not conveyed by any annotation. It also implies snapshot semantics via 'current state', offering 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?

A single, well-constructed sentence contains all essential information with no filler. The verb, resource, scope, and behavioral qualifier are all front-loaded, making it immediately scannable for an agent.

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 low complexity (one required parameter, no nested objects), the presence of an output schema, and rich annotations covering safety, the description is sufficient for correct invocation. It clearly communicates the non-blocking nature and the target resource without needing to explain return structures.

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% and the sole parameter 'question_id' is described as 'Question id.', so the schema carries the full semantic burden. The description adds no further parameter-level detail beyond aligning with the question resource, making the baseline 3 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 a specific verb ('Fetch'), a resource ('question'), and the exact scope ('current state') while distinguishing itself from sibling tools like wait_for_answer via 'without blocking'. It is concise and leaves no ambiguity about what operation is performed.

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 phrase 'without blocking' implies the tool is appropriate when a non-blocking fetch is desired, contrasting with wait_for_answer. However, it does not explicitly name alternatives or state when not to use this tool, leaving the agent to infer the usage context from sibling names.

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

get_roomGet RoomA
Read-onlyIdempotent
Inspect

Fetch a single room by its invite code, including members and quick actions.

ParametersJSON Schema
NameRequiredDescriptionDefault
invite_codeYesRoom invite code.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYesPurpose-built PingRoom result with credential and account fields removed.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare this is read-only, idempotent, and non-destructive, so the description's safety burden is low. It adds useful behavioral context by specifying that the response includes members and quick actions, which is beyond what the input schema provides. It does not contradict any annotation.

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, efficient sentence that front-loads the core operation and then adds the relevant scope of returned data. Every word earns its place; there is no redundancy or filler.

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 read-only lookup with one fully documented parameter, an output schema, and safety annotations, the description provides everything an agent needs to invoke the tool correctly. No missing prerequisites, side effects, or return-format details are required for this level of 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?

The single parameter 'invite_code' is already fully documented in the schema as 'Room invite code.' The description echoes that it fetches by invite code but adds no extra semantic detail such as format, length, or example values. Baseline 3 is appropriate because schema coverage is 100%.

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 a specific verb ('Fetch'), names the resource ('a single room'), and identifies the exact lookup key ('invite code'). It also clarifies scope ('single room') and includes expected contents ('including members and quick actions'), making it clearly distinct from sibling tools like list_rooms and create_room.

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 this tool is for retrieving one specific room rather than listing all rooms, but it does not explicitly state when to prefer it over alternatives such as list_rooms or get_live_status. The intended use is reasonably inferable, but no explicit routing guidance is provided.

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

join_roomJoin RoomA
DestructiveIdempotent
Inspect

Join a room using its invite code. Include the password only if the room is protected.

ParametersJSON Schema
NameRequiredDescriptionDefault
passwordNoOnly required for password-protected rooms.
invite_codeYesRoom invite code.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYesPurpose-built PingRoom result with credential and account fields removed.

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already mark the operation as non-read-only and destructive, so the safety profile is covered. The description adds the password condition but no additional behavioral context such as membership side effects or failure modes; still, it does not contradict 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.

Conciseness5/5

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

Two short sentences, front-loaded with the core action and follow-up with the conditional parameter rule. No filler.

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 low-complexity join operation with only two parameters and an output schema, the description plus annotations cover the essential conditions: what to supply, when the password is needed, and the operation's side-effect profile.

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 invite_code and password are already documented. The description reinforces the password rule, but 'only if protected' largely restates the schema's own 'only required for password-protected rooms,' adding only marginal guidance.

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?

States a clear action and target: 'Join a room using its invite code.' It names the mechanism (invite code) and implies an existing room, which separates it from create_room, but it does not explicitly distinguish itself from siblings such as get_room or list_rooms.

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 the central prerequisite (invite code) and an explicit conditional rule for when the password should be included ('only if the room is protected'). It does not name alternatives or state exclusions, but the join-vs-create context is clear enough for an agent to route correctly.

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

list_handoffsList HandoffsA
Read-onlyIdempotent
Inspect

List a bounded page of this agent's Handoffs, newest first. Omit state (or use open) for unresolved work; use all for history and page while has_more is true.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number, newest first.
limitNoHandoffs per page. Defaults to 10; maximum 25.
stateNoFilter to open Handoffs or include all states.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already establish readOnly, idempotent, and non-destructive behavior. The description adds valuable behavioral context beyond the annotations: results are bounded, paginated, newest-first, scoped to this agent, and include a has_more signal for continued pagination. This meaningfully enriches the structured annotation data without contradicting it.

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, front-loaded sentence that states the action, scope, ordering, and pagination behavior without redundancy. Every clause earns its place, and no structured information is needlessly repeated.

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 full schema coverage, rich annotations, and an output schema, the description supplies the remaining practical context: bounded pages, newest-first ordering, this agent's scope, and state-filtering semantics. An agent has enough information to invoke 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 schema already covers 100% of parameters, so baseline is 3. The description adds value beyond the schema by explaining the semantic intent of 'state' (omit/open for unresolved work vs. 'all' for history) and by linking 'page' to the has_more pagination pattern. This helps an agent choose parameter values correctly.

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 action, resource, and scope: it 'List[s] a bounded page of this agent's Handoffs, newest first.' It clearly differentiates from sibling get_handoff by addressing paged listing of all handoffs rather than fetching a single handoff.

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 concrete guidance on when to use different state values: omit state or use 'open' for unresolved work, and use 'all' for history. It also explains pagination with has_more. It does not explicitly name alternative sibling tools or exclusion conditions, but the provided usage context is clear and actionable.

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

list_notificationsList Notifications
Read-onlyIdempotent
Inspect

List a bounded page of recent pings across approved rooms, newest first. Use page to continue while has_more is true.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoOnly pings created on this calendar date, e.g. "2026-08-25".
pageNoPage number, newest first.
typeNoNarrow to pings you received or pings you sent. Omit for both.
limitNoPings per page. Defaults to 10; maximum 25.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes
list_questionsList QuestionsA
Read-onlyIdempotent
Inspect

List a bounded page of questions you asked, newest first. Optionally filter by state; use page while has_more is true.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number, newest first.
limitNoQuestions per page. Defaults to 10; maximum 25.
stateNoFilter by state. Omit for all.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, and the description adds useful context: this lists the caller's own questions, is bounded, and is newest-first. The has_more hint also clarifies pagination behavior.

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?

A single sentence conveys the action, scope, ordering, optional filter, and pagination strategy. Every clause earns its place and is front-loaded.

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 read-only listing tool with full schema coverage, annotations, and an output schema, the description covers the essential usage details: scope, ordering, filtering, and pagination. Nothing critical is missing.

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. The description adds value by connecting page usage to the has_more flag and clarifying the 'you asked' scope, which is not explicit in the input 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?

States a specific verb and resource ('List ... questions you asked') with ordering ('newest first') and the optional state filter. It is clearly distinct from the singular get_question sibling.

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 clear pagination guidance ('use page while has_more is true') and mentions the optional state filter. It does not explicitly contrast with alternatives like get_question, so it stops short of a 5.

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

list_quick_actionsList Quick ActionsA
Read-onlyIdempotent
Inspect

List the quick actions configured for a room.

ParametersJSON Schema
NameRequiredDescriptionDefault
invite_codeYesRoom invite code.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds only the scoping context 'configured for a room' and does not disclose additional behavioral details such as ordering or filtering, though the output schema covers return values.

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?

One clean, front-loaded sentence with no redundancy. It communicates the exact action and scope while leaving parameter details to the schema.

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, read-only, idempotent tool with one fully documented parameter and an output schema, the description is sufficient for an agent to select and invoke it correctly. Nothing essential is missing.

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 single parameter invite_code is fully documented in the schema with 100% coverage. The description adds no new parameter-level meaning beyond reaffirming the room context, so the baseline of 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 states a specific verb ('List') and resource ('quick actions configured for a room'), clearly distinguishing it from sibling tools like trigger_quick_action and update_quick_actions. The scope is unambiguous.

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 a read-only listing use case via the verb and resource, but it does not explicitly state when to prefer this over alternatives such as trigger_quick_action or update_quick_actions. No exclusion or alternative guidance is provided.

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

list_room_iconsList Room IconsA
Read-onlyIdempotent
Inspect

List the room-icon catalog (icon ids, tags, and categories). Call this before create_room / create_public_room / create_webhook to pick a valid icon id, and to interpret icon values returned by reads.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYesPurpose-built PingRoom result with credential and account fields removed.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful context about the catalog's contents and its role in supporting creation tools, which goes 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.

Conciseness5/5

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

Two sentences, front-loaded with the core listing function, followed by precise usage guidance. No filler or redundancy; every sentence provides value.

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 parameters, an output schema, and annotations covering safety and idempotency, the description is complete. It tells the agent what the catalog contains, when to call it, and how to use the results, leaving no important gap.

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 tool has zero parameters and schema coverage is 100%, so there is nothing for the description to explain about parameters. The baseline for zero-parameter tools is 4, and the description appropriately focuses on usage rather than parameter details.

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 starts with a specific verb and resource: 'List the room-icon catalog', and specifies the contents (icon ids, tags, and categories). This clearly distinguishes it from sibling list tools like list_rooms and list_webhooks.

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 says when to call this tool: before create_room, create_public_room, or create_webhook to pick a valid icon id, and also to interpret icon values from reads. It gives clear context, but does not mention alternatives or say when not to use it.

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

list_roomsList RoomsA
Read-onlyIdempotent
Inspect

List the rooms the authenticated account belongs to.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the scoping detail that results are limited to the authenticated account's rooms, which is useful. It does not describe pagination, ordering, or response format, but with an output schema present and annotations covering safety, this is adequate.

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?

A single sentence that is front-loaded with the verb and resource, and includes the key scope qualifier. Every word earns its place; no fluff or repetition.

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 zero-parameter, read-only list operation with an output schema and safety annotations, the description is nearly complete. It could mention whether the list is sorted or paginated, but those are minor gaps given the output schema likely covers return structure.

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 tool has zero parameters, so there is no parameter semantics burden. The description correctly implies no inputs are needed. Baseline 4 is appropriate for a no-parameter tool.

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?

The description states a specific verb ('List') and resource ('rooms'), and clarifies scope ('the authenticated account belongs to'). It is clear, though it doesn't explicitly differentiate from sibling tools like get_room or list_handoffs; the resource name itself provides enough distinction.

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 context: call this to see rooms for the authenticated account. It does not explicitly state when to use this versus alternatives like get_room or create_room, but the scope qualifier gives some guidance. No exclusions or alternative tool mentions are provided.

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

list_webhooksList WebhooksA
Read-onlyIdempotent
Inspect

List the incoming webhooks (with their trigger URLs) for a room the account owns.

ParametersJSON Schema
NameRequiredDescriptionDefault
invite_codeYesRoom invite code.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds useful context beyond that: the operation returns trigger URLs and requires the room to be owned by the account, which is a meaningful behavioral/requirement disclosure.

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?

A single, compact sentence with no wasted words. The verb and primary subject are front-loaded, and the scope qualifier is placed at the end, making the purpose immediately clear.

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 one-parameter read-only tool with annotations and an output schema, the description covers the essential information: what is listed, what detail is included (trigger URLs), and what precondition applies (room ownership). Nothing necessary is missing.

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 adds value by clarifying that the invite_code must reference a room the account owns, which is a semantic constraint not present in the schema's generic 'Room invite code' 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 states a specific verb ('List') and resource ('incoming webhooks with their trigger URLs'), and qualifies the scope ('for a room the account owns'). This clearly distinguishes it from sibling tools like create_webhook, delete_webhook, and update_webhook.

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 clear context: use this tool for a room the account owns, identified by invite_code. It doesn't explicitly name alternatives or exclusions, but the list-versus-create/delete/update framing makes the usage obvious.

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

live_statusPublish Live StatusA
DestructiveIdempotent
Inspect

Start, update, or end a live progress card on the room members' lock screen (an iOS Live Activity / Android live update). Reuse the same correlation_id for every ping of one stream: the first ping starts the card and sends one alert, further "running" pings move it silently, and the first "done"/"failed" sends one completion alert and ends it. Free accounts get a small number of NEW streams per day; updates and the final ping of an open stream are never charged; a first ping that is already "done"/"failed" counts as a new stream.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataNoArbitrary structured context (max 25 keys / 8KB), returned on read surfaces after connector privacy filtering. Do not put secrets in data.
titleNoCard title. Defaults to the selected quick action's label.
actionNoQuick-action slot to attribute the stream to (supplies the icon and sound).
invite_codeYesRoom invite code.
live_statusYesThe live card's state. Only state is required.
requires_ackNoAdd an Acknowledge button; the first eligible member to tap resolves it for everyone. Does not raise the interruption level — set category "alert" for a time-sensitive start.
correlation_idYesThe stream key. Reuse it on every ping of the same stream.
ack_timeout_secondsNoOptional acknowledgement deadline in seconds.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYesPurpose-built PingRoom result with credential and account fields removed.

TDQS

A4.3/5.0
Behavior5/5

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

Annotations only declare the safety profile (idempotent, destructive, open-world); the description goes well beyond by disclosing alert behavior (one alert on start, silent moves, one completion alert), the billing/charge model, and the fact that a first ping already marked done/failed is charged as a new stream. None of this is derivable from annotations or schema.

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?

Front-loads the purpose, then packs lifecycle and charging rules into two dense sentences with little waste. Slightly long, but nearly every clause carries actionable 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?

For a complex tool with nested objects and an output schema, the description covers the stream lifecycle and economic constraints an agent needs. It omits interaction details on secondary params (requires_ack, template/category fixed-at-creation), but those are documented in the 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 the schema already documents all 8 parameters, and the description's correlation_id guidance ('reuse the same correlation_id for every ping') largely restates the schema's own text. Baseline 3 is appropriate; no additional syntax or format meaning is supplied.

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?

States a specific set of verbs (start/update/end) on a specific resource (live progress card on members' lock screen, iOS Live Activity / Android live update), and is immediately distinguishable from the read-side sibling get_live_status.

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?

Explains the lifecycle discipline for correlation_id (first ping starts, running pings move silently, done/failed ends) and gives concrete when-to-use cost rules for free accounts. It stops short of naming alternative tools (e.g. get_live_status, wait_for_ack) or stating exclusions, so it is strong context without full routing guidance.

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

request_approvalRequest ApprovalAInspect

Ask the human to approve or reject an action, then block on their answer (pair with wait_for_approval). Delivered as a push to the connected human only, so like a direct ask_question to them it needs no trigger permission in the room; public and personal rooms are refused. Rate-limited.

ParametersJSON Schema
NameRequiredDescriptionDefault
ttlNoSeconds the request stays open before it expires.
dataNoArbitrary structured context, returned on reads after connector privacy filtering. Do not put secrets in data.
titleNoOptional short title for the request.
optionsNoAnswers to choose between. Defaults to ["approve","deny"].
questionYesWhat you want the human to decide on.
invite_codeYesRoom invite code.
correlation_idNoYour own id, echoed back unchanged on read.
idempotency_keyNoStable key so a retried call cannot create a second one.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYesPurpose-built PingRoom result with credential and account fields removed.

TDQS

A4.1/5.0
Behavior4/5

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

Adds real behavioral context beyond the annotations: delivery as a push to the connected human only, no trigger permission needed, refusal in public/personal rooms, and rate-limiting. These are traits the readOnly/openWorld/idempotent hints do not convey, though the blocking semantics could be stated more explicitly.

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?

Front-loads the core purpose and pairs it with the workflow in the first sentence, with constraints in the second and a terse 'Rate-limited.' closer. Dense but largely earned; the parenthetical and clause stacking make it slightly busy.

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 an output schema present and full annotation coverage, the description need not explain return values. It supplies the delivery, permission, room, and rate-limit context an agent needs to call it correctly, leaving only minor gaps around expiration/blocking behavior.

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 all eight parameters (including ttl, options, data, idempotency_key) are already documented in the schema. The description adds no parameter-level detail beyond what structured fields provide, matching the baseline 3.

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?

States a specific verb (ask) and resource (the human / an approval) plus the asynchronous behavior (block on the answer). It distinguishes itself from siblings by naming wait_for_approval as the pairing tool and comparing itself to ask_question.

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?

Clearly explains the workflow ('pair with wait_for_approval') and the room-context constraint (public and personal rooms are refused), which tells the agent when this call will fail. It stops short of an explicit when-not / alternative comparison against ask_question or get_approval.

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

rotate_handleRotate Agent HandleA
Destructive
Inspect

Rotate this agent's public handle — kill-switch for a leaked handle.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYesPurpose-built PingRoom result with credential and account fields removed.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already indicate destructive, non-idempotent behavior. The description adds useful context by framing the action as a kill-switch, implying the old handle is invalidated and this is a security response. This goes beyond the bare annotations without contradicting them.

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, tight sentence that front-loads the action and immediately gives the practical reason for using it. Every word contributes meaning, with no filler or repetition of the title.

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 that the tool has no parameters, the annotations already flag it as destructive, and an output schema exists, the description provides enough context for an agent to select and invoke the tool appropriately. The kill-switch framing answers the key 'why/when' question.

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 tool has zero parameters, so the schema fully covers input semantics and the description rightly adds no parameter details. The baseline of 4 applies because there is no parameter ambiguity for the agent to resolve.

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 a specific verb ('rotate') and resource ('this agent's public handle'), and immediately clarifies the purpose with 'kill-switch for a leaked handle.' This clearly distinguishes the operation from sibling tools, none of which involve handle rotation.

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 phrase 'kill-switch for a leaked handle' provides a clear trigger condition for when to use this tool. It does not explicitly mention alternatives or when-not-to-use, but no sibling tool performs a similar function, so the guidance is sufficient.

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

set_avatarSet Agent AvatarA
DestructiveIdempotent
Inspect

Set this agent's avatar. Must be one of the PingRoom bot avatars.

ParametersJSON Schema
NameRequiredDescriptionDefault
avatar_idYesBot avatar id, e.g. "bots-3".

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYesPurpose-built PingRoom result with credential and account fields removed.

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=true, so the behavioral safety profile is covered. The description adds a bit of scope ('this agent's avatar') but does not describe side effects beyond what the annotations imply.

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 short sentences deliver the action and the critical constraint with no filler. The verb is front-loaded and every word earns its place.

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 single-parameter tool with full schema coverage, an output schema, and annotations covering destructiveness and idempotency, the description plus schema is sufficient for correct selection and invocation. There is no missing information an agent would need to call this tool effectively.

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% and the parameter includes an example ('bots-3'). The description adds meaningful value by specifying that avatar_id must reference one of the PingRoom bot avatars, narrowing the valid input domain beyond what the schema alone states.

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?

The description uses a specific verb and resource ('Set this agent's avatar') and adds the key constraint that the avatar must be a PingRoom bot avatar. It is clear and unique among the sibling tools, though it doesn't explicitly differentiate itself from any named alternative.

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 intended usage is implied by the imperative: use this tool when you need to change this agent's avatar. However, it does not explicitly state when not to use it or name a more appropriate alternative for related tasks.

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

trigger_quick_actionTrigger Quick ActionInspect

Press a room quick action, notifying its members. Rate-limited. Read the action's input_type first (list_quick_actions): location needs data.location, link needs data.url, file/photo/pdf need attachment_ids — a press without the matching detail is a 422 quick_action_input_required.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataNoThe detail this press carries. data.location satisfies an action whose input_type is location; data.url satisfies link. Only these two keys are accepted on a trigger.
ack_modeNoConfirmation rule for this press: any (default) resolves on the first confirmation; all waits for every original eligible recipient. Applies only when this press requires acknowledgement.
is_urgentNoDeliver this one press time-sensitive so it breaks through Focus / Do Not Disturb and reaches members who muted the room or you (a block still wins). Send-time only — the action's saved configuration is unchanged.
invite_codeYesRoom invite code.
requires_ackNoKeep this one press open until an eligible recipient acknowledges it. Send-time only and elevating only: true adds the acknowledgement to an action that has none, false never disables the action's stored ack policy.
action_numberYesQuick-action slot number (1–16). Slots 5–16 require the room owner to have Pro.
attachment_idsNoIds of up to 4 uploaded attachments (see upload_attachment). Required when the action's input_type is file, photo (jpg/png only) or pdf (pdf only); a mismatched type is a 422 quick_action_input_type.
trigger_sourceNoDefaults to "manual". Only these two are client-settable — "webhook" and "system" are stamped server-side and are rejected here.
quick_action_idNoOptional id of the action as read from list_quick_actions. When the slot has since moved pages the press is refused with 409 quick_action_layout_changed instead of firing the wrong Ping.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYesA privacy-minimized, chainable PingRoom notification result.
update_quick_actionUpdate Quick ActionA
DestructiveIdempotent
Inspect

Configure a numbered quick-action slot for a room the account owns. Sends a background room refresh to room members' devices.

ParametersJSON Schema
NameRequiredDescriptionDefault
iconYesEmoji or icon id.
labelYesButton label. Must be sent, but may be empty ("") — a Ping can be named by its emoji alone, and clients render an untitled one as just the emoji.
soundNoCanonical sound id, e.g. "ting". Omit for the room default.
input_typeNoDetail every press of this action must carry: none (default), location (data.location), link (data.url), file (any attachment), photo (jpg/png attachment) or pdf (pdf attachment). A press without it is a 422 quick_action_input_required.
invite_codeYesRoom invite code.
requires_ackNoWhether pings from this action remain open until one eligible recipient acknowledges them.
action_numberYesQuick-action slot number (1–16). Slots 5–16 require the room owner to have Pro.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYesPurpose-built PingRoom result with credential and account fields removed.

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so the mutation/idempotency profile is covered. The description adds real value beyond that: it discloses a side effect on other users ('sends a background room refresh to room members' devices') and an ownership prerequisite, neither of which is in 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.

Conciseness5/5

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

Two tight sentences, zero waste, with the primary purpose front-loaded ahead of the side-effect note. Nothing needs trimming or reordering.

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 a full output schema and rich annotations, the description need not explain returns or safety. It covers purpose, ownership prerequisite, and the cross-device side effect; the only real gap is sibling differentiation against update_quick_actions.

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 the schema already documents all seven parameters (including the enum, sound defaults, and the 1–16 slot range). The description only alludes to 'numbered' slots and adds no syntax or format detail beyond the schema, so the baseline 3 is appropriate.

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?

States a specific verb (configure) and resource (numbered quick-action slot) and adds an ownership scope ('a room the account owns'). However, it does not distinguish itself from the near-identical sibling 'update_quick_actions' (plural) or from 'trigger_quick_action', so an agent cannot tell which to pick from the text alone.

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

Usage Guidelines2/5

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

No when-to-use guidance and no reference to alternatives. The two nearest siblings (update_quick_actions, trigger_quick_action) are left unmentioned, so nothing tells the agent when this singular tool is preferred over the plural one.

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

update_quick_actionsUpdate Quick ActionsA
DestructiveIdempotent
Inspect

Configure several of a room's quick-action slots in one call. Prefer this over repeated update_quick_action: each single-slot write wakes room members' devices with its own background refresh, so setting up four Pings one at a time spends four of a finite daily push budget on one operation. Slots you do not list are left exactly as they are, so this is also the right tool for editing a single Ping.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionsYesAdd new pages as complete groups of four in order (5–8, 9–12, 13–16); the room owner needs Pro. The slots to write. Each action_number must appear at most once. Slots omitted here keep their current configuration — nothing in this tool deletes an action.
invite_codeYesRoom invite code.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYesPurpose-built PingRoom result with credential and account fields removed.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is partly covered. The description adds genuinely useful context beyond them: omitted slots are left exactly as-is (softening the destructive semantics), and each single write triggers a device-waking background refresh against a finite daily push budget. It does not contradict 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?

Front-loaded with the purpose, then the rationale and the single-Ping case. Three sentences, all serving selection; the middle sentence is somewhat long but the push-budget justification is what makes the preference actionable.

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?

An output schema exists, so return values need not be described, and annotations cover the safety profile. Combined with the routing guidance and the omitted-slot editing semantics, an agent has everything needed to call this correctly.

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% and the schema itself richly documents action_number, input_type, label, and the omitted-slot behavior. The description adds no parameter-level syntax or field detail beyond what the schema already provides, so baseline 3 applies.

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?

States a specific verb (configure) and resource (a room's quick-action slots) with explicit scope (several in one call). It names the sibling update_quick_action and positions itself against it, so an agent can distinguish the batch tool from the single-slot one without opening either schema.

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 to prefer this over repeated update_quick_action and gives the reason (each single-slot write consumes the daily push budget). It also states the non-obvious case where this batch tool is still correct: editing a single Ping. When-to-use is fully specified with the alternative named.

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

update_webhookUpdate WebhookA
Destructive
Inspect

Update an incoming webhook (by id) on a room the account owns — e.g. change its icon, title, message, or sound.

ParametersJSON Schema
NameRequiredDescriptionDefault
iconNoA v3 room-icon catalog id, e.g. "bell". Call list_room_icons to discover the valid ids.
nameNoWebhook name (shown to the owner).
colorNoHex color, e.g. "#e33122".
soundNoCanonical sound id, e.g. "ting".
titleNoPush title used when the webhook fires.
enabledNoWhether the webhook is active.
messageNoDefault push body (max 120 characters in private rooms, 160 in public rooms).
webhook_idYesWebhook id (from list_webhooks or create_webhook).
invite_codeYesRoom invite code.
action_numberNoQuick-action slot whose label, sound, and acknowledgement preset fires use. Pass null to clear the preset and make the webhook independent.
cooldown_secondsNoMinimum seconds between fires.
regenerate_secretNoRotate the secret trigger URL.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYesAn incoming webhook. `webhook_url` embeds the secret — treat it as a credential.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, idempotentHint=false and readOnlyHint=false, so the mutation/safety profile is covered. The description adds the ownership scope, but is silent on notable side effects the schema reveals, e.g. that regenerate_secret rotates the trigger URL or that passing null for action_number clears a preset.

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?

A single sentence with zero waste; the operation is front-loaded and the scope restriction follows immediately. Nothing to trim.

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 12-parameter mutation tool with a fully documented schema, an output schema, and annotations, the description is adequate: purpose, identifier, and ownership scope are covered. It stops short of flagging destructive side effects like secret rotation, but the structured fields largely carry that load.

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 all 12 parameters are fully documented in the schema; baseline is 3. The description only echoes icon/title/message/sound and adds no format or constraint detail beyond what the schema provides.

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?

States a specific verb and resource ('Update an incoming webhook (by id)') and adds scope ('on a room the account owns') plus example fields. 'Update' implicitly distinguishes it from create_webhook/delete_webhook siblings, though no sibling is named explicitly.

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 phrase 'on a room the account owns' hints at a prerequisite, but there is no explicit when-to-use guidance, no exclusion conditions, and no routing to alternatives such as create_webhook or delete_webhook. Usage is only implied from the verb.

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

upload_attachmentUpload AttachmentAInspect

Upload a small file (max ~90 KiB over MCP; Pro account required) and get an attachment id to include in broadcast or ask_question via attachment_ids. Larger files: use the PingRoom CLI or agent REST API.

ParametersJSON Schema
NameRequiredDescriptionDefault
filenameYesFile name including extension, e.g. report.md.
mime_typeNoOptional MIME type, e.g. text/markdown. Defaults from the filename extension.
content_base64YesBase64-encoded file bytes (standard alphabet, padding optional).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYesPurpose-built PingRoom result with credential and account fields removed.

TDQS

A4.5/5.0
Behavior4/5

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

The annotations already indicate this is not read-only. The description adds meaningful behavioral constraints: the ~90 KiB MCP limit, the Pro account requirement, and the fact that the tool returns an attachment id for later use. This goes beyond what annotations provide, though it does not discuss retention or cleanup.

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 the key constraint and purpose. The final sentence routes to alternatives without padding. Every clause earns its place.

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 a fully described input schema and an output schema present, the description covers the essential selection and invocation context: size limit, account requirement, resulting id, and alternative for larger files. Nothing needed to call the tool correctly is missing.

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% parameter descriptions, so the schema already documents filename, mime_type, and content_base64. The description adds minimal parameter-level meaning beyond 'upload a file'; it mostly restates the body content. Baseline 3 is appropriate because the schema carries the load.

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 names a specific verb and resource: 'Upload a small file' and states the outcome: 'get an attachment id to include in broadcast or ask_question via attachment_ids.' This clearly distinguishes the tool from siblings like get_attachment and delete_attachment.

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 says when to use this tool (small files, for use with broadcast/ask_question) and when not to use it: 'Larger files: use the PingRoom CLI or agent REST API.' This is concrete routing guidance, not vague context.

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

wait_for_ackWait for Acknowledgement
Read-onlyIdempotent
Inspect

Long-poll a generic acknowledgement-required ping until its confirmation rule is met (any: first confirmation; all: every original eligible recipient), it expires, or the timeout elapses. Questions use wait_for_answer instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeoutNoSeconds to hold the request open. Use 0 for an immediate authoritative state read.
notification_idYesRoom notification id.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYesA privacy-minimized, chainable PingRoom notification result.
wait_for_answerWait for AnswerA
Read-onlyIdempotent
Inspect

Long-poll a question until it is answered or expires. Returns the state and, once answered, the chosen option value + label and the responder.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeoutNoSeconds to hold the request open (server-capped).
question_idYesQuestion id.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYesPurpose-built PingRoom result with credential and account fields removed.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds useful behavioral context beyond annotations: the long-polling nature, the server-capped timeout, and the specific state/return behavior on answer. This complements the annotations without contradicting them.

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 with no filler. The core action ('Long-poll a question until it is answered or expires') is front-loaded, and the return details are compactly appended. Every clause adds 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 simplicity, the presence of a full output schema, and annotations covering safety/idempotency, the description is complete. It covers the waiting behavior, the termination conditions, and the key return fields. An agent has enough information to invoke this tool correctly.

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%, with both question_id and timeout already documented. The description adds no new parameter-level meaning beyond the schema; it only restates the timeout cap and explains return values, which is not parameter semantics. 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 a specific verb ('Long-poll') and resource ('a question'), clearly stating what the tool does: waits until the question is answered or expires. It also distinguishes itself from sibling wait_* tools by specifying the question context and return payload (state, option value + label, responder).

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 clearly conveys when to use this tool: when an agent needs to block until an answer arrives or the wait times out. It does not explicitly name alternatives like get_question for non-blocking polling or exclude other wait_* tools, but the context is clear and no misleading guidance is present.

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

wait_for_approvalWait for ApprovalA
Read-onlyIdempotent
Inspect

Long-poll an approval request until the human decides or it expires. Returns the status and, once decided, the chosen option.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeoutNoSeconds to hold the request open (server-capped).
approval_idYesApproval request id.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYesPurpose-built PingRoom result with credential and account fields removed.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations cover read-only and idempotent safety; the description adds meaningful behavior by revealing long-polling semantics, the expiry condition, and that the result contains status plus the chosen option once decided. It does not contradict annotations and does not overstate side effects.

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 key behavior and return info, with no redundant filler. Every sentence earns its place.

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 the fully described schema, read-only annotations, and an output schema, the description completes the picture by naming the polling behavior, stopping condition, and returned status/option. No critical operational details are missing.

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 the parameters timeout and approval_id already have descriptions. The tool description adds context about decision/expiry, but it does not enrich the parameter semantics beyond what the schema provides; 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 opens with a specific verb and resource ('Long-poll an approval request') and specifies the termination conditions ('until the human decides or it expires'). It also states the return value, making it easy to distinguish from get_approval and the other wait_for_* siblings.

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?

'Long-poll...until...' clearly frames when to invoke: use this when you want to block until an approval decision or expiry. However, it does not explicitly tell the agent to prefer get_approval for a non-blocking read, so no exclusions are named. This is clear context but lacks explicit alternatives.

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

wait_for_handoffWait for HandoffAInspect

Long-poll a Handoff until the human resolves it, it expires, or the bounded timeout elapses. For the onboarding Question returned by activate_agent_inbox, success requires an answered result with activation_completed true; use a bounded local deadline and treat any terminal answer without that stamp as incomplete.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeoutNoSeconds to hold the request open; use 0 for an immediate state read.
handoff_idYesHandoff id.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYesPurpose-built PingRoom result with credential and account fields removed.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations only state readOnlyHint=false, idempotentHint=false, and destructiveHint=false, so the description carries the burden of explaining behavior. It does so by disclosing blocking semantics, timeout expiration, terminal states, and the precise success condition ('answered result with activation_completed true'). This goes well beyond what annotations alone could convey.

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 deliver the core action, termination conditions, and a tricky success-criterion edge case without wasted words. The primary behavior is front-loaded, and the onboarding-specific nuance is placed exactly where it is needed.

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 two-parameter polling tool with an output schema present, the description covers the main behavior, edge cases, and success criteria thoroughly. It does not explicitly map to sibling tools, but the activate_agent_inbox reference anchors it in the broader flow, so nothing essential is missing for correct invocation.

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 already provides complete descriptions for both handoff_id and timeout, including the use of 0 for an immediate state read. With 100% schema coverage, the baseline is 3, and the description adds only a small behavioral note about using a bounded local deadline rather than new parameter-level semantics.

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 opens with a specific verb phrase, 'Long-poll a Handoff until the human resolves it, it expires, or the bounded timeout elapses,' which precisely defines the action, resource, and termination conditions. It also names a specific integration point ('the onboarding Question returned by activate_agent_inbox'), making the tool's role unmistakable among the wait_for_* siblings.

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 clear context for when this tool is appropriate: waiting on a Handoff, with a special scenario for the activation-completion flow. It does not explicitly state when not to use it or name alternative tools like get_handoff or wait_for_answer, but the bounded-timeout language and the reference to activate_agent_inbox convey the intended usage well enough.

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

wait_for_notificationWait for Notification
Read-onlyIdempotent
Inspect

Long-poll for the next ping. Blocks until one arrives or the timeout elapses — the real-time inbound channel for an agent. The agent's own sends are excluded.

ParametersJSON Schema
NameRequiredDescriptionDefault
afterNoCursor from the previous call; omit to get the current head.
timeoutNoSeconds to hold the request open (server-capped).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updates
    • Changedbroadcast1 field changed
      • addedOutput schema / properties / result / properties / checklist_state
        Added value: +{
        +  "description": "Present once an item of data.checklist is checked: ticks[] of {index, checked_at, checked_by.display_name}. A checked item stays checked.",
        +  "type": "object"
        +}
    • Changedget_notification1 field changed
      • addedOutput schema / properties / result / properties / checklist_state
        Added value: +{
        +  "description": "Present once an item of data.checklist is checked: ticks[] of {index, checked_at, checked_by.display_name}. A checked item stays checked.",
        +  "type": "object"
        +}
    • Changedlist_notifications1 field changed
      • addedOutput schema / properties / result / properties / notifications / items / properties / checklist_state
        Added value: +{
        +  "description": "Present once an item of data.checklist is checked: ticks[] of {index, checked_at, checked_by.display_name}. A checked item stays checked.",
        +  "type": "object"
        +}
    • Changedtrigger_quick_action1 field changed
      • addedOutput schema / properties / result / properties / checklist_state
        Added value: +{
        +  "description": "Present once an item of data.checklist is checked: ticks[] of {index, checked_at, checked_by.display_name}. A checked item stays checked.",
        +  "type": "object"
        +}
    • Changedwait_for_ack1 field changed
      • addedOutput schema / properties / result / properties / checklist_state
        Added value: +{
        +  "description": "Present once an item of data.checklist is checked: ticks[] of {index, checked_at, checked_by.display_name}. A checked item stays checked.",
        +  "type": "object"
        +}
    • Changedwait_for_notification1 field changed
      • addedOutput schema / properties / result / properties / notifications / items / properties / checklist_state
        Added value: +{
        +  "description": "Present once an item of data.checklist is checked: ticks[] of {index, checked_at, checked_by.display_name}. A checked item stays checked.",
        +  "type": "object"
        +}
  2. 2 tool updates
    • Changedask_question1 field changed
      • changedInput schema / properties / data / properties / checklist / description
        Previous value: -"A short checklist the room can tick through, e.g. a shopping list. Ticks are kept on each viewer's device, not shared."New value: +"A short checklist the room can tick through, e.g. a shopping list. The room ticks it together: a checked item is checked for everyone, cannot be unchecked, and alerts the other recipients."
    • Changedbroadcast1 field changed
      • changedInput schema / properties / data / properties / checklist / description
        Previous value: -"A short checklist the room can tick through, e.g. a shopping list. Ticks are kept on each viewer's device, not shared."New value: +"A short checklist the room can tick through, e.g. a shopping list. The room ticks it together: a checked item is checked for everyone, cannot be unchecked, and alerts the other recipients."
  3. 2 tool updates
    • Changedask_question2 fields changed
      • changedInput schema / properties / data / description
        Previous value: -"Arbitrary structured context (max 25 keys / 8KB). Read surfaces return it after connector privacy filtering; do not put secrets in data. data.location is reserved for a shareable location."New value: +"Arbitrary structured context (max 25 keys / 8KB). Read surfaces return it after connector privacy filtering; do not put secrets in data. data.location is reserved for a shareable location, and data.checklist for a checklist."
      • addedInput schema / properties / data / properties / checklist
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "A short checklist the room can tick through, e.g. a shopping list. Ticks are kept on each viewer's device, not shared.",
        +  "properties": {
        +    "items": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "text": {
        +            "description": "One checklist item.",
        +            "maxLength": 80,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "text"
        +        ],
        +        "type": "object"
        +      },
        +      "maxItems": 25,
        +      "minItems": 1,
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "items"
        +  ],
        +  "type": "object"
        +}
    • Changedbroadcast2 fields changed
      • changedInput schema / properties / data / description
        Previous value: -"Arbitrary structured context (max 25 keys / 8KB). Read surfaces return it after connector privacy filtering; do not put secrets in data. data.location is reserved for a shareable location, and data.url + data.button_label are reserved for a tappable link ping."New value: +"Arbitrary structured context (max 25 keys / 8KB). Read surfaces return it after connector privacy filtering; do not put secrets in data. data.location is reserved for a shareable location, data.checklist for a checklist, and data.url + data.button_label are reserved for a tappable link ping."
      • addedInput schema / properties / data / properties / checklist
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "A short checklist the room can tick through, e.g. a shopping list. Ticks are kept on each viewer's device, not shared.",
        +  "properties": {
        +    "items": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "text": {
        +            "description": "One checklist item.",
        +            "maxLength": 80,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "text"
        +        ],
        +        "type": "object"
        +      },
        +      "maxItems": 25,
        +      "minItems": 1,
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "items"
        +  ],
        +  "type": "object"
        +}
  4. 1 tool update
    • Removedredeem_code
  5. 2 tool updates
    • Changedcreate_webhook2 fields changed
      • changedInput schema / properties / action_number / description
        Previous value: -"Quick-action slot to attribute fires to. Auto-assigned if omitted."New value: +"Quick-action slot whose label, sound, and acknowledgement preset fires use. Omit or pass null for an independent webhook with no Quick Ping preset."
      • changedInput schema / properties / action_number / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
    • Changedupdate_webhook2 fields changed
      • changedInput schema / properties / action_number / description
        Previous value: -"Quick-action slot to attribute fires to."New value: +"Quick-action slot whose label, sound, and acknowledgement preset fires use. Pass null to clear the preset and make the webhook independent."
      • changedInput schema / properties / action_number / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
  6. 1 tool update
    • Changedlive_status1 field changed
      • addedInput schema / properties / live_status / properties / duration_seconds
        Added value: +{
        +  "description": "Original countdown duration in seconds. Set on creation; preserved through updates and completion.",
        +  "maximum": 4102444800,
        +  "minimum": 1,
        +  "type": "integer"
        +}
  7. 6 tool updates
    • Changedcreate_public_room3 fields changed
      • addedInput schema / properties / location_latitude
        Added value: +{
        +  "description": "Latitude in decimal degrees. Send all three location fields or none.",
        +  "maximum": 90,
        +  "minimum": -90,
        +  "type": "number"
        +}
      • addedInput schema / properties / location_longitude
        Added value: +{
        +  "description": "Longitude in decimal degrees. Send all three location fields or none.",
        +  "maximum": 180,
        +  "minimum": -180,
        +  "type": "number"
        +}
      • addedInput schema / properties / location_name
        Added value: +{
        +  "description": "Place name shown in nearby discovery. Send all three location fields or none.",
        +  "maxLength": 160,
        +  "type": "string"
        +}
    • Changedlist_quick_actions1 field changed
      • addedOutput schema / properties / result / items / properties / input_type
        Added value: +{
        +  "enum": [
        +    "none",
        +    "location",
        +    "link",
        +    "file",
        +    "photo",
        +    "pdf"
        +  ],
        +  "type": "string"
        +}
    • Changedlist_rooms1 field changed
      • addedOutput schema / properties / result / items / properties / quick_actions / items / properties / input_type
        Added value: +{
        +  "enum": [
        +    "none",
        +    "location",
        +    "link",
        +    "file",
        +    "photo",
        +    "pdf"
        +  ],
        +  "type": "string"
        +}
    • Changedtrigger_quick_action3 fields changed
      • addedInput schema / properties / attachment_ids
        Added value: +{
        +  "description": "Ids of up to 4 uploaded attachments (see upload_attachment). Required when the action's input_type is file, photo (jpg/png only) or pdf (pdf only); a mismatched type is a 422 quick_action_input_type.",
        +  "items": {
        +    "format": "uuid",
        +    "type": "string"
        +  },
        +  "maxItems": 4,
        +  "type": "array"
        +}
      • addedInput schema / properties / data
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "The detail this press carries. data.location satisfies an action whose input_type is location; data.url satisfies link. Only these two keys are accepted on a trigger.",
        +  "properties": {
        +    "location": {
        +      "additionalProperties": false,
        +      "description": "A shareable geographic location.",
        +      "properties": {
        +        "address": {
        +          "description": "Optional formatted street address.",
        +          "maxLength": 255,
        +          "type": "string"
        +        },
        +        "label": {
        +          "description": "Optional place name shown to the recipient.",
        +          "maxLength": 100,
        +          "type": "string"
        +        },
        +        "latitude": {
        +          "description": "Latitude in decimal degrees.",
        +          "maximum": 90,
        +          "minimum": -90,
        +          "type": "number"
        +        },
        +        "longitude": {
        +          "description": "Longitude in decimal degrees.",
        +          "maximum": 180,
        +          "minimum": -180,
        +          "type": "number"
        +        }
        +      },
        +      "required": [
        +        "latitude",
        +        "longitude"
        +      ],
        +      "type": "object"
        +    },
        +    "url": {
        +      "description": "An absolute http:// or https:// URL.",
        +      "format": "uri",
        +      "maxLength": 2048,
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / quick_action_id
        Added value: +{
        +  "description": "Optional id of the action as read from list_quick_actions. When the slot has since moved pages the press is refused with 409 quick_action_layout_changed instead of firing the wrong Ping.",
        +  "format": "uuid",
        +  "type": "string"
        +}
    • Changedupdate_quick_action1 field changed
      • addedInput schema / properties / input_type
        Added value: +{
        +  "description": "Detail every press of this action must carry: none (default), location (data.location), link (data.url), file (any attachment), photo (jpg/png attachment) or pdf (pdf attachment). A press without it is a 422 quick_action_input_required.",
        +  "enum": [
        +    "none",
        +    "location",
        +    "link",
        +    "file",
        +    "photo",
        +    "pdf"
        +  ],
        +  "type": "string"
        +}
    • Changedupdate_quick_actions1 field changed
      • addedInput schema / properties / actions / items / properties / input_type
        Added value: +{
        +  "description": "Detail every press of this action must carry: none (default), location (data.location), link (data.url), file (any attachment), photo (jpg/png attachment) or pdf (pdf attachment). A press without it is a 422 quick_action_input_required.",
        +  "enum": [
        +    "none",
        +    "location",
        +    "link",
        +    "file",
        +    "photo",
        +    "pdf"
        +  ],
        +  "type": "string"
        +}
  8. 2 tool updates
    • Changedbroadcast1 field changed
      • changedInput schema / properties / is_urgent / description
        Previous value: -"Deliver time-sensitive so the ping breaks through Focus / Do Not Disturb. Independent of requires_ack: urgent affects delivery only and asks nothing of the recipient."New value: +"Deliver time-sensitive so the ping breaks through Focus / Do Not Disturb and reaches members who muted the room or you (a block still wins). Independent of requires_ack: urgent affects delivery only and asks nothing of the recipient."
    • Changedtrigger_quick_action1 field changed
      • changedInput schema / properties / is_urgent / description
        Previous value: -"Deliver this one press time-sensitive so it breaks through Focus / Do Not Disturb. Send-time only — the action's saved configuration is unchanged."New value: +"Deliver this one press time-sensitive so it breaks through Focus / Do Not Disturb and reaches members who muted the room or you (a block still wins). Send-time only — the action's saved configuration is unchanged."
  9. 8 tool updates
    • Changedbroadcast1 field changed
      • changedInput schema / properties / action_number / maximum
        Previous value: -4New value: +16
    • Changedcreate_webhook1 field changed
      • changedInput schema / properties / action_number / maximum
        Previous value: -4New value: +16
    • Changedlist_rooms2 fields changed
      • addedOutput schema / properties / result / items / properties / quick_action_count
        Added value: +{
        +  "maximum": 16,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedOutput schema / properties / result / items / properties / quick_action_limit
        Added value: +{
        +  "enum": [
        +    4,
        +    16
        +  ],
        +  "type": "integer"
        +}
    • Changedlive_status1 field changed
      • changedInput schema / properties / action / maximum
        Previous value: -4New value: +16
    • Changedtrigger_quick_action2 fields changed
      • changedInput schema / properties / action_number / description
        Previous value: -"Quick-action slot number (1–4)."New value: +"Quick-action slot number (1–16). Slots 5–16 require the room owner to have Pro."
      • changedInput schema / properties / action_number / maximum
        Previous value: -4New value: +16
    • Changedupdate_quick_action2 fields changed
      • changedInput schema / properties / action_number / description
        Previous value: -"Quick-action slot number (1–4)."New value: +"Quick-action slot number (1–16). Slots 5–16 require the room owner to have Pro."
      • changedInput schema / properties / action_number / maximum
        Previous value: -4New value: +16
    • Changedupdate_quick_actions4 fields changed
      • changedInput schema / properties / actions / description
        Previous value: -"The slots to write. Each action_number must appear at most once. Slots omitted here keep their current configuration — nothing in this tool deletes an action."New value: +"Add new pages as complete groups of four in order (5–8, 9–12, 13–16); the room owner needs Pro. The slots to write. Each action_number must appear at most once. Slots omitted here keep their current configuration — nothing in this tool deletes an action."
      • changedInput schema / properties / actions / items / properties / action_number / description
        Previous value: -"Quick-action slot number (1–4)."New value: +"Quick-action slot number (1–16). Slots 5–16 require the room owner to have Pro."
      • changedInput schema / properties / actions / items / properties / action_number / maximum
        Previous value: -4New value: +16
      • changedInput schema / properties / actions / maxItems
        Previous value: -4New value: +16
    • Changedupdate_webhook1 field changed
      • changedInput schema / properties / action_number / maximum
        Previous value: -4New value: +16
  10. 2 tool updates
    • Changedbroadcast2 fields changed
      • addedInput schema / properties / ack_mode
        Added value: +{
        +  "description": "With requires_ack: any (default) resolves on the first confirmation; all waits for every original eligible recipient. Read action_state.confirmed_count and required_count for progress.",
        +  "enum": [
        +    "any",
        +    "all"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / requires_ack / description
        Previous value: -"Keep this ping open until one eligible recipient acknowledges it, and show it as a lock-screen card with an Acknowledge button. Does not raise the interruption level on its own — combine with is_urgent for an ack that also breaks through Focus."New value: +"Keep this ping open until its confirmation rule is met, and show it as a lock-screen card with an Acknowledge button. Does not raise the interruption level on its own — combine with is_urgent for an ack that also breaks through Focus."
    • Changedtrigger_quick_action1 field changed
      • addedInput schema / properties / ack_mode
        Added value: +{
        +  "description": "Confirmation rule for this press: any (default) resolves on the first confirmation; all waits for every original eligible recipient. Applies only when this press requires acknowledgement.",
        +  "enum": [
        +    "any",
        +    "all"
        +  ],
        +  "type": "string"
        +}
  11. 2 tool updates
    • Changedconnection_info5 fields changed
      • addedOutput schema / properties / result / additionalProperties
        Added value: +true
      • changedOutput schema / properties / result / description
        Previous value: -"Purpose-built PingRoom result with credential and account fields removed."New value: +"The authenticated robot and its owner public User ID, for account verification."
      • addedOutput schema / properties / result / properties
        Added value: +{
        +  "handle": {
        +    "type": "string"
        +  },
        +  "owner": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "id": {
        +        "description": "The human public User ID shown in PingRoom, not an internal database identifier.",
        +        "pattern": "^[A-Z0-9]{12}$",
        +        "type": "string"
        +      },
        +      "name": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "id",
        +      "name"
        +    ],
        +    "type": "object"
        +  },
        +  "status": {
        +    "enum": [
        +      "active",
        +      "revoked"
        +    ],
        +    "type": "string"
        +  }
        +}
      • addedOutput schema / properties / result / required
        Added value: +[
        +  "status",
        +  "handle",
        +  "owner"
        +]
      • addedOutput schema / properties / result / type
        Added value: +"object"
    • Addeddisconnect
  12. 1 tool update
    • Addedredeem_code
  13. 1 tool update
    • Addedupdate_quick_actions
  14. 1 tool update
    • Addedconnection_info

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    B
    maintenance
    Enables AI agents to reach users on their phone through push notifications, and to raise urgent, escalating alarms that fall back to a voice call until someone acknowledges. It also ships hooks that notify users automatically when Claude Code or Codex needs input or finishes a turn.
    3
    166 npm
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Human-in-the-loop approvals and notifications for AI agents via WhatsApp. Enables Cursor, Claude Code, and autonomous AI agents to reach users away from their computers.
    57 npm
    ISC
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to communicate with humans using notify and ask semantics, supporting session management and blocking or non-blocking messages.
    15 npm
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables AI agents to request human decisions and send notifications through chat platforms like Slack and WhatsApp, with ephemeral in-memory pending requests and no central backend.
    2
    21 npm
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources