withHuman
Server Details
Set up human approval for your AI agents' tool calls.
- Status
- Healthy
- Uptime
- 94.1% over 21 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- withHumanAI/withHuman
- GitHub Stars
- 2
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 84 tools
Tools are organized into a clear, learnable pattern where each resource family has get_X (active revision), get_X_revision (any revision), list_X, update_X, activate_X_revision and archive_X, and the descriptions explicitly state when to use which. The main residual risk is a set this large: an agent must repeatedly choose between near-parallel tools like get_pipeline vs get_pipeline_revision vs list_pipeline_revisions, or update_pipeline (which also activates) vs activate_pipeline_revision, and a handful of archive/deactivate pairs (archive_gateway_server vs deactivate_gateway_server) only separate cleanly if the description is read closely.
The surface is uniformly snake_case with a verb_noun shape (create_agent, list_gateway_servers, activate_pipeline_revision, revoke_provisioner_token), and revision verbs are applied consistently across all five revisioned resource families. Minor deviations: save_webhook_endpoint does create-or-update work that elsewhere is split into create_/update_, update_agent conflates rename and enable/disable, and a few oddballs (read_reference, preview_pipeline, remove_member vs revoke_* vs archive_*) slightly break the pattern.
84 tools is far beyond what an agent can navigate comfortably, and much of the bulk comes from multiplying each of five resources by five or six revision-lifecycle tools plus separate *_uses and *_references helpers. The underlying domain (agents, pipelines, gateway servers, escalation, teams, webhooks, audit) is genuinely broad, but a flatter create/update/archive surface with revision handling folded into those calls would cut the count substantially without losing capability.
Coverage is unusually thorough: full lifecycle (create/get/list/update/activate/archive/restore) for every resource, dependency introspection (list_pipeline_uses, get_pipeline_revision_references), audit search, permission/role discovery, a pipeline preview, and read_reference for grammar. The notable gap is the request side of the approval domain: there is get_request_timeline but no tool to list pending approval requests or to approve/deny one, so an agent can design and inspect routing but cannot see or act on the queue.
Available Tools
84 toolsactivate_escalation_path_revisionActivate escalation path revisionADestructiveIdempotentInspect
Make an existing escalation path revision the active one (a rollback, or activating a draft).
| Name | Required | Description | Default |
|---|---|---|---|
| path_key | Yes | The escalation path's key. | |
| revision | Yes | The revision number, from list_escalation_path_revisions. |
TDQS
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 covered. The description adds useful context that this activates an existing revision and can represent a rollback or draft activation, but it does not explain what happens to the previously active revision or any prerequisites.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with the core action first and a useful parenthetical example. Every part earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool with full schema coverage and annotations, the description covers the basic action and scenarios. However, for a destructive activation operation, it should clarify the effect on the currently active revision and any prerequisites to be fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented. The description reinforces that the revision must already exist, but adds no syntax, format, or provenance details beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: making an existing escalation path revision active. It distinguishes activation from sibling operations like create/update/archive, but does not explicitly differentiate itself from the other activate_*_revision tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives two clear usage contexts: performing a rollback or activating a draft. It does not explicitly state when not to use it or name alternative sibling tools, but the intended scenario is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
activate_gateway_server_revisionActivate gateway server revisionADestructiveIdempotentInspect
Make an existing gateway server revision the active one (a rollback, activating a draft, or serving a deactivated server again). The gateway serves it from its next configuration poll; scopes the revision leaves out are retired and their credentials dropped.
| Name | Required | Description | Default |
|---|---|---|---|
| revision | Yes | The revision number, from list_gateway_server_revisions. | |
| server_slug | Yes | The server's slug, from list_gateway_servers. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, but the description goes well beyond them: it states the effect is deferred until the gateway's next configuration poll, and it spells out the destructive consequence (scopes the revision omits are retired and their credentials dropped). That credential-loss detail is exactly the context an agent needs before invoking a destructive mutation and is not available in structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler. The purpose and its variants come first, then the timing and side-effect detail — a correct front-loading order for a destructive tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter mutation with no output schema, the description covers purpose, timing, and destruction. It does not describe what a successful call returns (e.g. the resulting revision state) or whether the operation can fail if the revision is already active, but nothing critical to correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters already document their source (`list_gateway_server_revisions`, `list_gateway_servers`). The description adds no semantics about revision numbering, ordering, or what happens if the revision equals the current active one. Baseline 3 applies where the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource ('Make an existing gateway server revision the active one') and immediately disambiguates it from siblings by naming the three real-world scenarios (rollback, draft activation, re-serving a deactivated server). An agent can distinguish this from `deactivate_gateway_server` and the other `activate_*_revision` tools without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical enumerates concrete situations that call for this tool, which is stronger than most definitions. It stops short of explicit exclusions (e.g. 'to undo without changing anything served, use get_gateway_server_revision first' or when to prefer `deactivate_gateway_server`), so no true when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
activate_pipeline_revisionActivate pipeline revisionADestructiveIdempotentInspect
Make an existing pipeline revision the active one (a rollback, or activating a draft). New requests use it immediately; requests already in flight keep the revision they started on.
| Name | Required | Description | Default |
|---|---|---|---|
| revision | Yes | The revision number, from list_pipeline_revisions. | |
| pipeline_key | Yes | The pipeline's key ('entry' for the entry pipeline). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and idempotentHint=true, so the safety profile is covered. The description adds genuinely non-obvious runtime context – new requests pick up the revision immediately while in-flight requests stay on their original revision – which is the key behavioral fact an agent needs. It doesn't say whether the previous active revision can be restored or what the response contains, so a 4 rather than a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, with the action stated first and the blast-radius caveat immediately after. Every clause carries information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter activation with safety already declared in annotations, the description covers purpose, effect, and in-flight impact. It omits any indication of what the call returns or how failures (e.g. missing revision) surface, but with no output schema present that omission is minor rather than disqualifying.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema even points to list_pipeline_revisions for the revision number and explains the 'entry' key convention, so parameter meaning is fully carried by structured data. The description adds only the implicit constraint that the revision must already exist, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource ('make an existing pipeline revision the active one') and distinguishes itself from read/list siblings by its activation semantics. The parenthetical ('a rollback, or activating a draft') pins down the two concrete scenarios the tool serves.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The two parenthetical use cases tell an agent exactly when this tool applies, and the impact statement clarifies the effect of activating. It doesn't name an alternative tool or an explicit when-not, which keeps it 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.
activate_team_escalation_policy_revisionActivate team escalation policy revisionADestructiveIdempotentInspect
Make an existing team escalation policy revision the active one (a rollback, or activating a draft). Refused when it names someone who has since left the team. Requests already routed keep the revision they pinned.
| Name | Required | Description | Default |
|---|---|---|---|
| team_id | Yes | The team's id, from list_teams. | |
| revision | Yes | The policy revision number, from list_team_escalation_policy_revisions. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive=true, idempotent=true, openWorld=false, so the safety profile is covered. The description adds two non-obvious behaviors not in annotations: the member-departure refusal and the fact that already-routed requests keep their pinned revision. It leaves implicit why the operation is destructive (that the currently active revision is superseded), which is the one notable gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, zero filler, with the core action front-loaded and the failure mode and side-effect following in priority order.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter mutation with annotations and no output schema, the description covers the failure path and in-flight-request semantics that an agent could not infer. Only the effect on the previously active revision is unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters document their source fields (list_teams, list_team_escalation_policy_revisions). The description adds no syntax, format, or constraint detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (make active) and a specific resource (team escalation policy revision), and the parenthetical enumerates the two real scenarios: rollback or activating a draft. The resource is unambiguous against the many sibling activate_* tools, which target different resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives when-to-use context ('a rollback, or activating a draft') and a concrete precondition/failure mode (refused when the revision names someone who has left the team). It does not point to an alternative when activation is refused (e.g., update the policy first), so it stops short of explicit alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
activate_webhook_endpoint_revisionActivate webhook endpoint revisionADestructiveIdempotentInspect
Make an existing webhook endpoint revision the active one (a rollback, activating a draft, or bringing an archived endpoint back). Webhook blocks post to the active revision's URL from their next delivery on.
| Name | Required | Description | Default |
|---|---|---|---|
| revision | Yes | The revision number, from list_webhook_endpoint_revisions. | |
| endpoint_key | Yes | The webhook endpoint's key. |
TDQS
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 covered. The description adds real value beyond them by describing the downstream effect: webhook blocks start posting to the newly active revision's URL from their next delivery on. It does not state what happens to the previously active revision or whether activation can be undone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences with zero redundancy; the action and its scenarios come first and the behavioral consequence follows.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter mutation whose annotations already carry the destructive and idempotent hints, the description supplies purpose, scenarios, and the downstream effect on deliveries. Nothing critical to calling it correctly is missing, and no output schema is expected.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters are self-explanatory, with 'revision' explicitly sourced from list_webhook_endpoint_revisions. The description adds no meaning beyond what the schema already provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the specific verb and resource ('Make an existing webhook endpoint revision the active one') and enumerates concrete scenarios (rollback, draft activation, archived revival), which lets an agent separate it from the many sibling activate_*_revision tools without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Three explicit use cases establish when to call it, and the schema points to list_webhook_endpoint_revisions for obtaining the revision number. It stops short of naming an alternative or stating when not to call it (e.g., when the revision is already active), so it is clear context but not full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
archive_agentArchive agentADestructiveIdempotentInspect
Archive an agent: every live credential and provisioner token is revoked for good, no instance can be enrolled under it, and its name is freed while its slug stays taken. Instances and history stay readable. restore_agent brings the agent back, but revoked credentials stay revoked.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_slug | Yes | The agent's slug, from list_agents. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive=true and idempotent=true, and the description adds substantial detail beyond them: credentials and provisioner tokens are permanently revoked, no new instances can enroll, the name is freed while the slug remains reserved, and instances/history remain readable. It also discloses the irreversibility boundary via restore_agent, which is exactly the context an agent needs before a destructive call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action and its consequences, with zero filler. Every clause (revocation, enrollment block, name/slug handling, readable history, restore caveat) conveys distinct behavioral information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter destructive tool with no output schema, the description covers effects, irreversibility, collateral state (instances/history), and the recovery path. Nothing an agent needs in order to decide whether to call it is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter already documents itself as 'the agent's slug, from list_agents.' The description adds no further semantics about the parameter, so baseline 3 is appropriate — the schema carries the load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Archive an agent') plus the scope of what archiving means, which clearly separates it from sibling mutations like deactivate_gateway_server or revoke_agent_credential. An agent can distinguish it from restore_agent and the other archive_* tools without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear operational context: revokes credentials permanently, blocks enrollment, frees the name but keeps the slug. It also names restore_agent as the recovery path and flags its limit ('revoked credentials stay revoked'), which is a useful when-to-use/when-not signal, though it doesn't explicitly contrast with alternatives like revoke_agent_credential or update_agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
archive_escalation_pathArchive escalation pathADestructiveIdempotentInspect
Archive an escalation path for good: it stops being active, refuses new revisions, and keeps its key and history. Refused while any active pipeline revision names it (list_escalation_path_uses names them); update those pipelines first.
| Name | Required | Description | Default |
|---|---|---|---|
| path_key | Yes | The escalation path's key. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description explains the behavioral consequences: the path stops being active, refuses new revisions, and keeps its key and history. It also discloses the exact precondition that causes refusal, which is essential for safe invocation of a destructive tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences are front-loaded with the effect and refusal condition. Every clause adds useful information, with no repetition or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter destructive archive tool with annotations and no output schema, the description covers consequences, idempotency-adjacent behavior, and the blocking precondition. An agent has everything needed to call it correctly and avoid a predictable failure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is one parameter with 100% schema description coverage. The description refers to archiving an escalation path but adds no format or identity semantics for path_key beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: archive an escalation path. It immediately clarifies the scope and effect with 'for good', and the destructive nature distinguishes it from update or activation siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when the tool is refused and points to list_escalation_path_uses to find blocking pipeline revisions. It also tells the agent what to do instead: update those pipelines first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
archive_gateway_serverArchive gateway serverADestructiveIdempotentInspect
Archive a gateway server for good: it is never served again, takes no new revisions and its slug cannot be reused, and every stored credential (the organization's and every member's) is dropped. Its history stays readable. To pause a server instead, use deactivate_gateway_server.
| Name | Required | Description | Default |
|---|---|---|---|
| server_slug | Yes | The server's slug, from list_gateway_servers. It prefixes the server's tools as <slug>__<tool> for agents. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and idempotentHint=true, but the description adds the concrete consequences the agent needs: the server stops being served, revisions are blocked, the slug is permanently reserved, and all organization and member credentials are dropped while history remains readable. That is substantive beyond-annotation disclosure of what gets destroyed and what survives.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense sentence covering permanence, the two consequences (no serving, no revisions), slug lockout, credential loss, and history retention, followed by a short routing sentence. Front-loaded and waste-free.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-param destructive mutation with no output schema, everything an agent needs is present: reversibility (none), blast radius (all credentials), post-state (history readable), and the non-destructive alternative.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema's server_slug description already explains the slug format and that it comes from list_gateway_servers. The description adds nothing further about the single parameter, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Archive a gateway server') and immediately pins down the permanent semantics: never served again, no new revisions, slug unusable, credentials dropped, history retained. This is clearly distinct from the sibling deactivate_gateway_server, which is named.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent: use this for permanent archival; 'To pause a server instead, use deactivate_gateway_server.' That is an explicit when-to-use / when-to-use-alternative pair, not implied guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
archive_pipelineArchive pipelineADestructiveIdempotentInspect
Archive a pipeline: its revisions stay readable but none is active, its key is taken for good, and no request can reach it. Refused for the entry pipeline and while any active revision still delegates to it (list_pipeline_uses names them; remove those delegate blocks first).
| Name | Required | Description | Default |
|---|---|---|---|
| pipeline_key | Yes | The pipeline's key. 'entry' is the entry pipeline every request starts in; any other key is a pipeline a delegate block hands requests to. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already flag the operation as destructive and idempotent, but the description adds semantics those annotations cannot express: revisions remain readable, the key is permanently consumed, no requests can reach the pipeline afterward, and the operation is refused in two specific cases. That is the exact post-condition and failure-mode detail a destructive tool needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the main action and its effects, and every clause carries weight. The refusal conditions appear in a parenthetical aside, which is readable but slightly dense; a short split into two sentences would make the constraints easier to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema or nested structure to explain, and the description covers the effect, the irreversibility of the key, the blocked-request consequence, and both refusal conditions. An agent has everything it needs to call this correctly or know why it should not.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is only one parameter, and the schema description covers 100% of it, so the schema already documents both the key value and the special 'entry' value. The description reinforces the entry-pipeline constraint but adds no new format or syntax details for pipeline_key, so a baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('Archive') plus resource ('a pipeline') and enumerates the concrete consequences: revisions stay readable but inactive, the key is permanently consumed, and no request can reach it. This clearly separates it from sibling 'archive_*' tools, which target agents, teams, gateways, and webhooks instead of pipelines.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states two explicit blocking conditions — the 'entry' pipeline and any active revision that still delegates to the pipeline — and names the exact prerequisite action (call list_pipeline_uses, then remove those delegate blocks). It tells the agent both when the operation will be refused and which sibling tool to call first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
archive_teamArchive teamADestructiveIdempotentInspect
Archive a team: it leaves routing, its own and team-scoped grants are revoked and its escalation policy is deactivated; its roster and history stay readable and its name can be reused. Refused while an active escalation path or a pending request targets it, and for a team your directory manages. Requires a personal API key.
| Name | Required | Description | Default |
|---|---|---|---|
| team_id | Yes | The team's id, from list_teams. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the destructiveHint/idempotentHint annotations: it discloses precisely what is destroyed (routing, own and team-scoped grants, escalation policy), what survives (roster, history, name reusable), and two blocking conditions. The personal-API-key requirement is an auth constraint no annotation conveys.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action, then the effect chain and the refusal conditions. The semicolon-dense second half packs several distinct facts into one sentence, which is efficient though slightly harder to scan than separate clauses.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter destructive mutation with no output schema, the description covers effects, retention, preconditions, and auth. The only gap is return behavior on success (confirmation vs. the archived team object), which an agent might want given there is no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Single parameter with 100% schema coverage ('the team's id, from list_teams'), so the schema already carries the semantics. The description adds nothing specific about team_id, which is acceptable at full coverage but earns only the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (archive) and resource (team) and then spells out the exact consequences: leaves routing, revokes grants, deactivates escalation policy. This distinguishes it clearly from the many sibling archive_* tools, notably archive_team_escalation_policy, since it names escalation policy deactivation as one of its side effects rather than its subject.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete preconditions for refusal (active escalation path or pending request targeting the team, directory-managed team) and an auth requirement (personal API key). It does not explicitly route to an alternative — e.g. 'to reverse, no restore_team exists' or 'use archive_team_escalation_policy first to clear the blocker' — so the agent must infer the remediation path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
archive_team_escalation_policyArchive team escalation policyADestructiveIdempotentInspect
Deactivate a team's escalation policy, so a path level targeting the team reaches every member at once again. Its revisions stay and can be activated later.
| Name | Required | Description | Default |
|---|---|---|---|
| team_id | Yes | The team's id, from list_teams. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive and idempotent, but the description adds the crucial reversal semantics: the policy is deactivated rather than deleted, revisions persist, and the fallback behavior (path-level targeting reaches every member at once) is disclosed. Missing only permission/scope requirements, which keeps it off a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the primary effect front-loaded and the reversibility note following. Every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter mutation with no output schema and annotations covering safety, the description covers purpose, effect, and reversibility. Only prerequisites such as required role or scope, and confirmation of what state the archived policy ends in for the caller, are absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single team_id parameter is documented with a discovery hint ('from list_teams'), so the description adds no parameter value. Baseline 3 applies when the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Deactivate a team's escalation policy') and immediately describes the resulting routing behavior, which distinguishes it from the neighboring archive_escalation_path tool. An agent can tell exactly what is being archived and at which level.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the effect and points forward to the alternative ('Its revisions stay and can be activated later'), implicitly routing to activate_team_escalation_policy_revision. It does not explicitly frame when-not-to-use this vs. editing the policy via update_team_escalation_policy, so guidance is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
archive_webhook_endpointArchive webhook endpointADestructiveIdempotentInspect
Archive a webhook endpoint by deactivating its active revision. Its history and signing secret are kept, and activate_webhook_endpoint_revision brings it back. Refused while an active pipeline revision posts to it (list_webhook_endpoint_uses names them).
| Name | Required | Description | Default |
|---|---|---|---|
| endpoint_key | Yes | The webhook endpoint's key. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, but the description adds the crucial nuance that this is a soft archive — history and signing secret are retained and it is reversible. It also discloses the refusal precondition, which is not captured by any structured field.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences: what it does, what survives, how to undo, and the blocking condition — front-loaded and free of filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter destructive tool with no output schema, the description supplies everything an agent needs: reversibility, retained data, undo path, and the prerequisite check that can cause failure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter with 100% schema description coverage, so the schema already carries the semantics. The description adds no format details about endpoint_key, which is acceptable at baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (archive) + resource (webhook endpoint) + mechanism (deactivating its active revision). It is clearly distinguishable from activate_webhook_endpoint_revision and from sibling archive_* tools operating on other resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names the alternative for undo (activate_webhook_endpoint_revision) and an explicit when-not condition: refused while an active pipeline revision posts to it, with list_webhook_endpoint_uses as the diagnostic tool. Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_agentCreate agentAInspect
Create an agent. Nothing reaches it until a runtime is connected: with the withhuman CLI on the machine the agent runs on, or with create_agent_instance or create_provisioner_token for a service you run. Every request it makes starts in the entry pipeline; give it rules with a branch on /agent/slug there, or a delegate to a pipeline of its own.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | service (the default): an agent the organization runs, whose instances belong to nobody. personal: one people run for themselves, such as a coding assistant; each instance belongs to the member who enrolled it. Fixed for good. | |
| name | Yes | Display name, unique among live agents. | |
| slug | Yes | Permanent identifier: lowercase letters, digits, dots, underscores or dashes, unique for good (for example support-assistant). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, so the write profile is covered; the description adds genuinely non-obvious behavior: the created agent is inert (receives no requests) until a runtime connects, all its traffic flows through the entry pipeline, and routing is configured via a branch on /agent/slug or a delegate pipeline. That is substantive beyond the annotations, though it says nothing about what the create response contains or how to identify the new agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, verb front-loaded in sentence one, and no filler. The density of domain terms (entry pipeline, branch, delegate) makes the tail slightly opaque, but each sentence carries operational information rather than restating the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should say what comes back (agent id/slug, initial inactive state) so the agent can chain into create_agent_instance or configure the entry pipeline. It covers the post-create wiring conceptually but omits the response shape, leaving a real gap for a 3-param creation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents slug, name and kind including the 'fixed for good' immutability of kind. The description adds only an indirect gloss on slug semantics via the '/agent/slug' branch reference. Baseline 3 applies when the schema carries the parameter burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource ('Create an agent') and immediately scopes it against the runtime-connection siblings (withhuman CLI, create_agent_instance, create_provisioner_token), so an agent can tell this is the bare agent-entity creation step rather than the runtime wiring step. It stops short of a full one-line differentiation sentence, but the boundary with siblings is recoverable from the text.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear sequencing context ('nothing reaches it until a runtime is connected') and routes the agent to the correct follow-up tools depending on deployment model — the CLI when self-hosting on the machine, create_agent_instance/create_provisioner_token for a service you run. No explicit when-not-to-use or prerequisites like org permissions are stated, 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.
create_agent_instanceCreate agent instanceAInspect
Register an instance of a service agent and mint its credential, for a runtime the withhuman CLI does not install (a service of yours speaking the Agent Approval Protocol). The answer carries the credential exactly once: hand it to whoever configures that runtime, because it cannot be read back. Personal agents' instances belong to the member who enrolls them through the CLI.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | A name for the instance, unique within the agent. Reviewers see it next to the agent's name. | |
| metadata | No | Any JSON object to store with the instance, such as a region or pod name. | |
| agent_slug | Yes | The agent's slug, from list_agents. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare that this writes and is neither idempotent nor destructive. The description adds the critical operational trait that the credential is returned exactly once and cannot be read back, plus who must receive it. That is exactly the kind of context a schema cannot convey and it prevents an irreversible misstep.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, no filler, and the one-time credential caveat is front-loaded in sentence two where an agent will actually act on it. The middle clause 'for a runtime the withhuman CLI does not install (a service of yours speaking the Agent Approval Protocol)' is slightly dense but still earns its place as the scoping condition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description compensates by stating precisely what the response contains (the credential, once). It leaves unstated what happens on a repeated call for the same instance and how the credential is later revoked, both relevant given revoke_agent_credential sits among the siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and every parameter (name, metadata, agent_slug) is documented inline, so the schema carries the semantics. The description reinforces agent_slug only indirectly via the 'service agent' wording and adds no new meaning about metadata or naming rules. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise verb+resource pair: 'Register an instance of a service agent and mint its credential.' It also scopes the operation to runtimes the CLI doesn't install, which separates it from create_agent and update_agent_instance without the agent needing to inspect schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It names both the target case (a runtime you operate yourself that speaks the Agent Approval Protocol) and the exclusion ('Personal agents' instances belong to the member who enrolls them through the CLI'). The agent knows immediately when this route applies and when to steer elsewhere.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_escalation_pathCreate escalation pathAInspect
Create an escalation path with its first revision and activate it (unless activate is false). A path says who reviews a request the pipeline hands to a person: level nodes page targets (user targets by membership id, team targets by team id) and wait escalate_after before the next level; if_else nodes branch on urgency, working hours or the request itself; defer nodes hold the request until working hours. Call read_reference (escalation_paths) first. The key is permanent: pipelines name it, and it stays taken even after archiving.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Display name people see, for example Payments review. | |
| nodes | Yes | The path's nodes in order: level nodes name targets and how long to wait (escalate_after) before the next level, if_else nodes branch on conditions, defer nodes wait for working hours. Every node needs a UUID id. See read_reference topic escalation_paths. | |
| repeat | No | What to do when every level has been paged and nobody answered: {times: 1..9, after: '15m'} walks the levels again. | |
| activate | No | Activate the new revision right away. Defaults to true. A path with no active revision cannot be named by an active pipeline. | |
| path_key | Yes | Stable key, lowercase letters, digits, dots, underscores or dashes (for example payments-review). It names the path from pipeline blocks and is never reused, even after archiving. | |
| working_hours | No | Named working-hours sets that defer nodes and working_hours conditions refer to by id: {id, timezone (IANA), intervals: [{weekdays: [mon, ...], start: '09:00', end: '17:30'}]}. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a non-readonly, non-idempotent creation tool. The description adds useful behavioral context: activation defaults to true, the path key is permanent and cannot be reused after archiving, and node types have distinct runtime semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action and default behavior. It is dense but every sentence adds operational context, and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex creation tool with nested node structures, the description covers creation, activation defaults, node types, prerequisites, and key permanence. It does not describe the return value, which is a minor gap given there is no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains all six parameters. The description adds some cross-field and semantic context, especially around node behavior and permanent path keys, but most parameter meaning is redundantly covered by the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: creating an escalation path with its first revision and activating it. It clearly distinguishes creation from sibling operations like update_escalation_path or activate_escalation_path_revision.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit prerequisite: call read_reference with the escalation_paths topic first. It also clarifies the default activation behavior. It does not explicitly compare when to use this versus update_escalation_path, 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.
create_gateway_serverCreate gateway serverAInspect
Register an MCP server on the gateway with its first revision and activate it unless activate is false. Agents reach its tools as __, but only the tools set_agent_tool_access grants them, and every call still goes through the approval pipelines. Store an organization-held scope's credential afterwards with set_gateway_scope_headers; an OAuth scope is connected by a person in the app, and a member-held scope by each member on their Connections page.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | The downstream server's Streamable HTTP endpoint. Give exactly one of url and tunnel_id. | |
| name | Yes | Display name. | |
| scopes | Yes | The server's scopes (named credentials), 1 to 20, in the order agents see them. The whole list again on every revision: a scope left out is retired when the revision is activated and its stored credentials are dropped. | |
| activate | No | Activate the new revision right away so the gateway serves it from its next configuration poll. Defaults to true. | |
| tunnel_id | No | The id of the tunnel the downstream server is reached through (from list_gateway_tunnels), for a server inside your own network. Give exactly one of url and tunnel_id. | |
| server_slug | Yes | The server's slug: lowercase letters, digits and dashes. Agents see its tools as <slug>__<tool>. A new slug registers the server and is taken for good, archived servers included. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses that the first revision is activated unless activate is false, that agents only receive tools granted through set_agent_tool_access, and that every call passes through approval pipelines. It also explains the credential-handling consequences for organization-held, OAuth, and member-held scopes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three tightly packed sentences with the core creation behavior front-loaded. The remaining sentences add relevant access-control and credential follow-up context without wasting space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex create tool, the description plus schema covers activation, access control, approval behavior, and credential follow-up well. Since there is no output schema, the description is slightly incomplete about what the create call returns, but it provides enough context to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all six parameters in detail. The description reinforces some parameter behavior, especially activation and scope credential modes, but mostly repeats schema-level semantics rather than adding new parameter syntax or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: register an MCP server on the gateway with its first revision and activate it by default. It also distinguishes this creation flow from later revision activation by describing the first-revision behavior and the activation default.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear post-creation guidance for credential setup, naming set_gateway_scope_headers for organization-held scopes and explaining how OAuth and member-held scopes are connected. It does not explicitly say when to use this tool versus update_gateway_server or activate_gateway_server_revision, so it stops short of full alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_pipelineCreate pipelineAInspect
Create a pipeline that a delegate block in another pipeline can hand matching requests to, with its first revision active at once. Use it to give one team its own part of the approval flow: the entry pipeline decides which requests reach it, the new pipeline decides what happens to them. A person then grants the team pipeline.read, pipeline.write and pipeline.activate at pipeline: in the app so they can edit it and nothing else.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The pipeline's display name, for example Payments. | |
| blocks | No | The first revision's blocks, in the shape update_pipeline takes. Omit or pass an empty list for a pipeline that passes every request that enters it to human review until it is edited. | |
| pipeline_key | Yes | The new pipeline's key: lowercase letters, digits, dots, underscores and hyphens, up to 63 characters. It is taken for good, archived pipelines included, and can never be 'entry'. | |
| default_escalation_path | No | Escalation path key for requests this pipeline hands to a person without a block naming a path, including requests that run out of it. Omit to inherit the defaults of the pipelines that delegate into it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false and destructiveHint=false, so the description's job is to add context beyond that. It does: the first revision goes live at once, the pipeline key is permanent (archived pipelines included, never 'entry'), and a human must grant pipeline.read/write/activate at pipeline:<key> for the team to edit it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the creation action and its immediate-activation consequence, followed by the use case and the permission follow-up. Dense but every sentence carries information; the middle sentence is slightly narrative but not redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create tool with no output schema and fully described parameters, the description covers the meaningful unknowns: immediate revision activation, key immutability, delegation wiring and post-creation permissions. It does not say what the call returns (e.g. the created key/object), which would be the last missing piece.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter already carries a detailed description (key format and permanence, blocks shape, default_escalation_path inheritance). The description only reinforces the blocks/activation behavior and adds no new parameter meaning, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a pipeline') and then explains its distinctive semantics: it is the target of a delegate block in another pipeline and its first revision is active immediately. That is enough to tell it apart from update_pipeline, create_escalation_path and the other create_* siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence gives an explicit use case ('give one team its own part of the approval flow') and describes the entry-pipeline/delegate-pipeline split of responsibility. It stops short of naming alternatives such as update_pipeline or preview_pipeline, so the 'when not to use' half is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_provisioner_tokenCreate provisioner tokenAInspect
Create a provisioner token for a service agent, which lets a fleet or platform create instances of the agent on its own, each with a credential of its own, through the Agent Approval Protocol. It cannot make approval requests itself. The answer carries the token exactly once: hand it to whoever runs the platform, because it cannot be read back.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_slug | Yes | The agent's slug, from list_agents. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as a non-read-only, non-idempotent create operation. The description adds critical behavior beyond annotations: the token is returned exactly once, cannot be read back, and cannot make approval requests itself, which strongly informs how the agent should handle the result.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loaded with the action, and uses the remaining space only for high-value constraints: what the token can do, what it cannot do, and the one-time visibility of the returned token.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description usefully explains the return behavior: the answer carries the token exactly once and it cannot be read back. Combined with annotations and the fully documented single parameter, an agent has enough information to call and handle this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the only parameter is already documented in the schema as the agent slug from list_agents. The description does not add any parameter-level meaning 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: creating a provisioner token for a service agent. It also explains what the token enables (a fleet or platform creating agent instances with their own credentials), distinguishing it from nearby actions like creating an agent instance directly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context for when this tool is appropriate: when a fleet or platform needs to create instances of the agent on its own through the Agent Approval Protocol. It also states a key limitation (the token cannot make approval requests itself), though it does not explicitly name alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_teamCreate teamAInspect
Create a team, optionally with its first members. Teams are escalation targets: a level that names a team reaches every current member, or runs the team's escalation policy when it has one. Requires a personal API key; organization keys cannot manage teams.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The team's name, unique among live teams. | |
| membership_ids | No | Membership ids (from list_members) to place on the team right away. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover mutability and non-idempotency, so the description's value is the auth constraint (personal key only) and the domain consequence of teams as escalation targets that reach every current member. It does not say what happens on duplicate names despite the schema warning about uniqueness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, mutation intent front-loaded, with auth requirement and semantics following. Each sentence carries information; nothing redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a non-destructive, non-idempotent create with a fully described two-parameter schema and no output schema, the definition covers the key risk (key type) and the meaning of the created entity. It leaves the identifier of the returned team unstated, which the agent would need for follow-up calls.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are already documented, including the list_members dependency for membership_ids. The description only restates that members are optional at creation, adding no format or edge-case detail beyond the schema baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a team') and adds scope ('optionally with its first members'), which distinguishes it from create-plus-set_team_members flows among the siblings. It stops short of naming a sibling, so it lands just under the top band.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete precondition for use: a personal API key is required and organization keys cannot manage teams. It does not spell out when to prefer this over create_agent or how team creation relates to escalation-policy setup, so a clear context but no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deactivate_gateway_serverDeactivate gateway serverADestructiveIdempotentInspect
Stop serving a gateway server by deactivating its active revision. Its history and stored credentials are kept; activate_gateway_server_revision serves it again.
| Name | Required | Description | Default |
|---|---|---|---|
| server_slug | Yes | The server's slug, from list_gateway_servers. It prefixes the server's tools as <slug>__<tool> for agents. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false; the description adds the crucial nuance that data and credentials are preserved, softening the 'destructive' label and telling the agent the change is reversible. It stops short of describing the returned state after deactivation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler, with the action stated first and the recovery path and data-retention guarantee following immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, but for a single-parameter state-change tool the annotations plus the preservation/recovery notes cover what an agent needs to act safely. Minor gap: no mention of what happens if the server has no active revision.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter (server_slug) is fully documented in the schema, including where to obtain it, so baseline 3 applies. The description adds nothing parameter-specific beyond the concept of the 'active revision'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Stop serving a gateway server by deactivating its active revision') and implicitly distinguishes from archive_gateway_server (which would remove it) and activate_gateway_server_revision. An agent can tell exactly what state change results.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names the alternative explicitly: use activate_gateway_server_revision to serve it again, and clarifies that history and credentials survive, which is the key decision factor versus archiving. It doesn't explicitly contrast with archive_gateway_server, so not a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
disconnect_gateway_scopeDisconnect gateway scopeADestructiveIdempotentInspect
Remove every credential the organization stores for one organization-held scope (its headers, or its OAuth token and client registration). Calls with the scope fail until it is connected again; the server and its revisions stay.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | Yes | The scope's name. | |
| server_slug | Yes | The server's slug, from list_gateway_servers. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructiveHint=true annotation, it discloses exactly what is destroyed (all stored credentials for one scope), what is preserved (the server and its revisions), and the operational consequence (calls with that scope fail until reconnected). That is the precise context an agent needs before a destructive, idempotent call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, front-loaded with the action and the object of destruction, followed by the consequence and what survives. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description covers outcome, side effects, and reversibility condition, which is enough to call it safely. It stops short of pointing at how to reconnect the scope (set_gateway_scope_headers / set_gateway_scope_oauth_client), which would have closed the loop on recovery.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented, including the pointer to list_gateway_servers for server_slug. The description adds only the notion that the scope is organization-held; it says nothing extra about how to identify server_slug or the scope name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: "Remove every credential the organization stores for one organization-held scope." It further scopes what counts as a credential (headers, or OAuth token and client registration), which clearly separates it from server-level siblings like archive_gateway_server or deactivate_gateway_server.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The consequence clause ("Calls with the scope fail until it is connected again; the server and its revisions stay") implicitly tells the agent when this is the right tool versus deactivating/archiving the whole server. It never names an alternative tool explicitly, so the routing is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_agentGet agentARead-onlyInspect
Read one agent: its kind and status, a page of its instances (id, name, owner, status, liveness, credentials) and a page of its provisioner tokens. Instance and token ids are what update_agent_instance, revoke_agent_credential and revoke_provisioner_token take.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_slug | Yes | The agent's slug, from list_agents. | |
| instance_q | No | Only instances whose name contains this text. | |
| instance_offset | No | How many matching instances to skip; instances come 25 to a page. | |
| instance_status | No | Only instances that are active or disabled. | |
| provisioner_offset | No | How many matching provisioner tokens to skip; tokens come 25 to a page, newest first. | |
| provisioner_status | No | Only provisioner tokens that are active, expired or revoked. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, so safety is covered; the description still adds real value by disclosing the shape of the response (instance fields id/name/owner/status/liveness/credentials, plus a token page and pagination). It does not mention auth/permission requirements or error behavior, which keeps it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence opening with the verb and resource, then the return payload, then the cross-tool payoff. No filler clauses; every segment carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and six parameters, the description carries the return-value burden and does so by listing instance fields and the token page. Token fields themselves are only summarized ("provisioner tokens"), a minor gap in an otherwise complete definition.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so each parameter (slug, instance_q, offsets, statuses) is already documented with page-size context. The description reinforces the paging model ("a page of its instances") and explains the downstream significance of the returned ids, but adds no syntax or semantics the schema lacks — baseline 3 fits.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Read one agent") and enumerates exactly what it returns: kind, status, a page of instances with named fields, and a page of provisioner tokens. The singular "one agent" cleanly separates it from the sibling list_agents without either schema being opened.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly links the returned instance and token ids to the follow-up tools update_agent_instance, revoke_agent_credential and revoke_provisioner_token, which tells an agent why it would call this before those. It gives no explicit exclusion (e.g. "use list_agents when you don't have a slug"), though the required slug parameter plus its "from list_agents" note covers that path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_audit_eventGet audit eventARead-onlyInspect
Read one audit event by id with its full data.
| Name | Required | Description | Default |
|---|---|---|---|
| event_id | Yes | The audit event's id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds that the full event data is returned rather than a summary, but says nothing about error behavior for missing ids or access restrictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence, front-loaded with the verb and resource, with no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with full annotation coverage and complete schema documentation, the description plus structured fields give an agent enough to call it correctly. Only the 'full data' return hint compensates for the missing output schema, which is adequate but not generous.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with a single required parameter already documented as 'The audit event's id.' The description's 'by id' adds nothing beyond the schema, which is the expected baseline when the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read one audit event by id'), and the word 'one' implicitly distinguishes it from the sibling list_audit_events. It never names that sibling explicitly, so differentiation requires the agent to infer it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: 'by id' signals the prerequisite of already holding an event id, and the list tool is left as the assumed path for discovery. No explicit when-to-use or when-not-to-use guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_escalation_pathGet escalation pathARead-onlyInspect
Read an escalation path's active revision: its nodes, working hours, repeat setting and warnings. Not found when the path has no active revision; use list_escalation_path_revisions then.
| Name | Required | Description | Default |
|---|---|---|---|
| path_key | Yes | The escalation path's key. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive, closed-world), and the description adds genuine behavior: what payload fields come back and that a missing active revision yields a not-found rather than an empty result. The odd idempotentHint=false on a read is not explained, but nothing contradicts the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, both load-bearing: the first defines the payload, the second defines the error path and remedy. No repetition of the title or schema, and the returned-fields list is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description takes responsibility for describing the return shape and does so. For a one-parameter read tool with full annotation coverage, 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single path_key parameter, so the schema already documents it fully. The description adds no format, source, or lookup guidance for path_key, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (read) and resource (an escalation path's active revision), then enumerates exactly what is returned: nodes, working hours, repeat setting and warnings. The 'active revision' qualifier distinguishes it from get_escalation_path_revision without needing the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the failure condition (path has no active revision) and the fallback tool (list_escalation_path_revisions), which is real routing guidance rather than a generic hint. It does not address when to prefer get_escalation_path_revision for a specific non-active revision, leaving that one alternative to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_escalation_path_revisionGet escalation path revisionARead-onlyInspect
Read one escalation path revision, active or not, with its nodes and warnings.
| Name | Required | Description | Default |
|---|---|---|---|
| path_key | Yes | The escalation path's key. | |
| revision | Yes | The revision number, from list_escalation_path_revisions. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry the safety profile (readOnlyHint true, destructiveHint false, openWorldHint false). The description adds real behavioral detail beyond them: that inactive/non-live revisions are retrievable, and that the response includes nodes and warnings.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; every clause (one, active or not, nodes and warnings) contributes information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read with no output schema, the description covers both input discovery (via the schema) and the shape of the return (nodes, warnings). It stops short of describing pagination or error behavior, but little is missing for such a simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and both parameters are documented in-schema, so the baseline is 3. The description's 'active or not' adds a small amount of context about what revision values mean but no formatting or selection detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Read) and resource (one escalation path revision) and scopes it to a single record rather than a list, which implicitly separates it from list_escalation_path_revisions. It also names the payload (nodes and warnings), though no sibling is called out by name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Read one ... revision, active or not' implies you fetch a specific revision when you already have its number, and the revision param points at list_escalation_path_revisions for discovery. There is no explicit when-not guidance or comparison against get_escalation_path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_gateway_serverGet gateway serverARead-onlyInspect
Read a gateway server's active revision: the configuration the gateway serves. Not found when no revision is active; use list_gateway_server_revisions then.
| Name | Required | Description | Default |
|---|---|---|---|
| server_slug | Yes | The server's slug, from list_gateway_servers. It prefixes the server's tools as <slug>__<tool> for agents. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds meaningful behavioral context: the not-found behavior when no revision is active, which is 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with what is read, then the failure condition. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but the description explains the return ('the configuration the gateway serves') and the error case, which is adequate for a single-param read tool. Minor gap: no mention of revision identity/format returned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter with 100% schema coverage; the schema fully documents server_slug including the <slug>__<tool> prefix convention. The description adds nothing beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb 'read' plus precise resource: the gateway server's *active revision*, further clarified as 'the configuration the gateway serves'. This distinguishes it from the sibling get_gateway_server_revision (a specific revision) and get_gateway_server.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States the not-found condition and explicitly routes the agent to list_gateway_server_revisions as the alternative when no active revision exists. Lacks broader when-to-use framing but the key fallback path is named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_gateway_server_revisionGet gateway server revisionARead-onlyInspect
Read one gateway server revision, active or not.
| Name | Required | Description | Default |
|---|---|---|---|
| revision | Yes | The revision number, from list_gateway_server_revisions. | |
| server_slug | Yes | The server's slug, from list_gateway_servers. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds only one behavioral fact — that inactive revisions are also returned — with no mention of error behavior when a revision number does not exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the key state caveat is not buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read with full schema coverage, no output schema, and complete annotations, this is nearly sufficient. The minor remaining gap is nothing about the returned revision record's shape or behavior for missing revisions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: both server_slug and revision already document their source (list_gateway_servers, list_gateway_server_revisions). The description adds no format, range, or constraint detail beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Read'), a specific resource ('gateway server revision'), and a scope ('one'). The clause 'active or not' further distinguishes it from activation siblings and from the list tool, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: you need a single revision, and the schema parameter descriptions point to list_gateway_server_revisions / list_gateway_servers for discovery. There is no explicit statement of when to prefer this over get_gateway_server or the list tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pipelineGet pipelineARead-onlyInspect
Read a pipeline's active revision with its blocks in order and its default escalation path. Blocks come back in the shape update_pipeline accepts, so you can edit and resubmit them.
| Name | Required | Description | Default |
|---|---|---|---|
| pipeline_key | Yes | The pipeline's key. 'entry' is the entry pipeline every request starts in; any other key is a pipeline a delegate block hands requests to. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=true and destructive=false, so the safety profile is covered. The description adds real context beyond them: ordering of blocks, inclusion of the default escalation path, and that block shape is round-trippable into update_pipeline. It says nothing about behavior for an unknown pipeline_key or about revision metadata, keeping it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, both load-bearing: the first defines the return content, the second explains the downstream use. Nothing is redundant and the main scope statement is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must carry the return shape, and it does cover blocks-in-order and the default escalation path. It omits error/not-found behavior and whether revision identifiers are included, which would make it fully complete for an agent planning a follow-up update.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter is well documented in the schema, including the special 'entry' key, so the baseline of 3 applies. The description adds no parameter-level detail beyond what the schema already says.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read a pipeline's active revision') plus scope (blocks in order, default escalation path). The word 'active' implicitly separates it from get_pipeline_revision and list_pipeline_revisions, but no sibling is named explicitly, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence gives a concrete workflow context: the returned blocks are in the shape update_pipeline accepts, so this read feeds an edit-and-resubmit cycle. It does not state when to prefer get_pipeline_revision or list_pipelines instead, so there is no exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pipeline_revisionGet pipeline revisionARead-onlyInspect
Read one pipeline revision, active or not, with its blocks.
| Name | Required | Description | Default |
|---|---|---|---|
| revision | Yes | The revision number, from list_pipeline_revisions. | |
| pipeline_key | Yes | The pipeline's key ('entry' for the entry pipeline). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and idempotentHint=false, so the safety profile is covered. The description adds that the returned revision includes its blocks, which is genuine value. It does not mention error behavior for nonexistent revisions or the structure of the returned blocks; no output schema compensates.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence with no filler, and the key information (single revision, any state, includes blocks) is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read tool with full annotation coverage and no output schema, the description covers what it does and what it returns ('with its blocks'). Minor gap: no mention of how revisions relate to references or what happens if the revision number is invalid.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters are documented in-schema, including that revision numbers come from list_pipeline_revisions and that 'entry' is a valid key. The description adds nothing beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Read) and resource (one pipeline revision) with an explicit scope qualifier ('active or not') and the payload ('with its blocks'). It distinguishes 'one' from the sibling list_pipeline_revisions by implication, though it doesn't name any sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Active or not' implies you don't need to activate a revision first, which is useful context. But there is no explicit guidance on when to use this versus list_pipeline_revisions, get_pipeline, or get_pipeline_revision_references — the agent must infer from tool names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pipeline_revision_referencesGet pipeline revision referencesARead-onlyInspect
List everything a pipeline revision names (escalation paths, webhook endpoints, delegated pipelines, an edition's block dependencies) with each one's state: what stands in the way of activating it.
| Name | Required | Description | Default |
|---|---|---|---|
| revision | Yes | The revision number, from list_pipeline_revisions. | |
| pipeline_key | Yes | The pipeline's key ('entry' for the entry pipeline). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, non-destructive, closed-world behavior, so the safety profile is covered. The description adds genuine context beyond that – each reference comes with a state and a blocking reason – but says nothing about auth requirements, pagination, or how states are represented.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the parenthetical enumeration is dense but each item earns its place by defining scope. Slightly harder to parse than a plain list, but not padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only listing tool with no output schema and fully described parameters, the description conveys enough: the kinds of references returned and the fact that each carries a state and blocker. The shape of the returned state field remains undefined, but that is a minor gap given annotation coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both the revision number and pipeline key (including the 'entry' special case) are already documented in the schema, and one parameter even points to the sibling list_pipeline_revisions. The description adds no parameter-level meaning beyond this, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (list) and resource (everything a pipeline revision names) and enumerates the reference kinds covered: escalation paths, webhook endpoints, delegated pipelines, and edition block dependencies. An agent can tell this apart from get_pipeline_revision because it returns the referenced entities rather than the revision itself, though the sibling relationship is never stated explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: the phrase 'what stands in the way of activating it' suggests calling this before activate_pipeline_revision to diagnose blockers, but no explicit when-to-use, prerequisites, or named alternative (e.g. list_pipeline_uses, read_reference) is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_request_timelineGet request timelineARead-onlyInspect
Tell one approval request's story from its audit events: the pipeline's conclusion and the block that asked for a person, every AI judge assessment, the escalation steps and the claim history. Needs only request.read on the request, not audit.read.
| Name | Required | Description | Default |
|---|---|---|---|
| request_id | Yes | The approval request's id, for example an audit event's subject_id when subject_type is approval_request. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, non-destructive, closed-world, so safety is covered; the description adds genuinely new behavioral context by stating the exact authorization scope required (request.read vs audit.read). It also enumerates the kinds of records returned, giving an implicit sense of output shape without an output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler: contents first, then the permission caveat. The 'story' framing is slightly colorful but does not obscure the purpose, and nothing in the text is redundant with the schema or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of describing return content, and it does so by listing the constituent records (conclusion, human block, AI judge assessments, escalation steps, claims) plus the auth requirement. Minor gaps remain around ordering, time window, and whether pagination applies.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema itself explains request_id with an example (audit event subject_id when subject_type is approval_request), so the description adds nothing about the parameter. Baseline 3 applies when the schema does all the work for a single required parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource ('Tell one approval request's story from its audit events') and enumerates what the timeline aggregates: pipeline conclusion, human block, AI judge assessments, escalation steps, claim history. This implicitly separates it from raw audit-event tools like get_audit_event/list_audit_events, though it never names them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The permission note ('Needs only request.read on the request, not audit.read') effectively routes an agent here instead of to audit-event tools when it lacks audit.read, and the 'one approval request' framing limits scope. It stops short of an explicit when-not or a named alternative tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_teamGet teamBRead-onlyInspect
Read one team and its members.
| Name | Required | Description | Default |
|---|---|---|---|
| team_id | Yes | The team's id, from list_teams. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds one genuinely useful behavioral fact beyond annotations — that members are returned alongside the team — but says nothing about member payload shape or whether the member list is truncated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single seven-word sentence with the resource and included sub-resource front-loaded; nothing is redundant. It is perhaps too compressed to be maximally useful, but no sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of describing returns and only notes that members are included, without saying what fields a team has or how members are represented. For a simple single-parameter read this is adequate but leaves real gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single required parameter at 100% schema description coverage, and the schema already states it comes from list_teams. The description adds no syntax, format, or example detail beyond that, so the schema does the work and baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Read one team and its members"), and the singular "one team" implicitly distinguishes it from list_teams. It does not name any sibling explicitly, so differentiation is left partly to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase "one team" implies the single-record use case versus list_teams, and the schema points to list_teams as the id source, but the description never says when to choose this tool over list_teams or list_members. Usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_team_escalation_policyGet team escalation policyARead-onlyInspect
Read a team's active escalation policy: how a level targeting the team pages its members, with warnings for targets who have left. Not found when no policy is active; such a level then reaches every member at once.
| Name | Required | Description | Default |
|---|---|---|---|
| team_id | Yes | The team's id, from list_teams. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, non-destructive, closed-world behavior, so the bar is lower. The description adds real value beyond them: it discloses the not-found outcome when no policy is active and the consequent fallback that such a level reaches every member at once — a genuinely non-obvious behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences with the primary purpose front-loaded and the edge-case behavior following. Phrasing like 'how a level targeting the team pages its members' is slightly roundabout but every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read with no output schema, the description conveys purpose, the shape of the returned concept, and error/fallback semantics. It could note pagination or exact return fields, but the important calling behavior is covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter exists and the schema documents it fully ('The team's id, from list_teams'), so baseline 3 applies. The description adds no further detail about the identifier beyond what the schema text provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Read') and a scoped resource ('a team's active escalation policy') and elaborates on the payload ('how a level targeting the team pages its members'). The word 'active' implicitly sets it apart from the revision-oriented siblings, though it never explicitly names them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: it is clearly a lookup of the currently active policy, and 'Not found when no policy is active' gives a useful condition, but it never tells the agent when to prefer get_team_escalation_policy_revision or list_team_escalation_policy_revisions instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_team_escalation_policy_revisionGet team escalation policy revisionARead-onlyInspect
Read one team escalation policy revision, active or not, with warnings for targets who have since left the team.
| Name | Required | Description | Default |
|---|---|---|---|
| team_id | Yes | The team's id, from list_teams. | |
| revision | Yes | The policy revision number, from list_team_escalation_policy_revisions. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/non-destructive, so the description's contribution is genuinely additive: it discloses that inactive revisions can be fetched and that results include warnings for targets who have left the team. That is real behavioral/output context not present in the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the scope qualifier and the warning behavior packed in; no filler, every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read tool with full schema coverage, no output schema, and annotations carrying the safety profile, this is nearly complete — the only omission is a hint about what the response object looks like beyond the departed-target warnings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters are documented with their sources (list_teams, list_team_escalation_policy_revisions). The description adds no format or constraint detail beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource: 'Read one team escalation policy revision' — the 'one' contrasts with the sibling list_team_escalation_policy_revisions and the 'revision' scope contrasts with get_team_escalation_policy. It doesn't name any sibling explicitly, so it stops short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'active or not' (no need to check status first) and the schema points to list_team_escalation_policy_revisions for revision numbers. There is no explicit when-to-use vs get_team_escalation_policy or activate_team_escalation_policy_revision statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tool_catalog_entryGet tool catalog entryARead-onlyInspect
Read one tool catalogue entry with its full input schema and description.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The catalogue entry's id, from list_tool_catalog. | |
| agent_slug | No | Read the entry as this agent sees it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so the safety profile is covered. The description adds useful context by stating the response includes the entry's full input schema and description, but says nothing about the agent_slug view semantics or why idempotentHint=false on a read.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the verb and resource first and zero filler. Every word carries weight and nothing is buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read-only lookup with fully described parameters and no output schema, the description is nearly complete; it even signals what the return contains. The only real gap is not routing the agent to list_tool_catalog as the source of ids, and that is stated in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (id, agent_slug) are documented in the schema itself. The description adds nothing about parameter meaning, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Read one tool catalogue entry" states a specific verb (read) and resource (tool catalogue entry) with singular scope, which implicitly contrasts with the plural sibling list_tool_catalog. It does not name that sibling explicitly, so the differentiation is inferable rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the description never says when to use this instead of list_tool_catalog, nor does it mention that the id must first come from list_tool_catalog (that hint lives in the schema, not the description). No prerequisites, rate limits, or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_webhook_endpointGet webhook endpointARead-onlyInspect
Read a webhook endpoint's active revision: name and URL. The signing secret is never returned here; it is shown once when the endpoint is created or its secret rotated.
| Name | Required | Description | Default |
|---|---|---|---|
| endpoint_key | Yes | The webhook endpoint's key. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, so the safety profile is covered, yet the description still adds real value the schema can't: the signing secret is never returned and is only shown once at creation or rotation. This prevents an agent from hunting for credentials through this call. Oddly, idempotentHint=false on a read is left unexplained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the read scope and then the security caveat. No filler, no restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-param read with no output schema, the description covers the main return surface (name and URL) and the notable absence (secret). The 'name and URL' list reads as illustrative rather than exhaustive, leaving slight ambiguity about other returned fields, but nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
One required parameter with 100% schema description coverage, so the schema already does the work. The description adds no format or sourcing detail for endpoint_key beyond what the schema states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (read) and resource (webhook endpoint), with extra precision: 'active revision: name and URL'. That scoping implicitly separates it from get_webhook_endpoint_revision, but the sibling is never named, so an agent must infer the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by 'active revision' — the description never says when to prefer this over get_webhook_endpoint_revision, list_webhook_endpoints, or test_webhook_endpoint. No exclusions or alternatives are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_webhook_endpoint_revisionGet webhook endpoint revisionARead-onlyInspect
Read one webhook endpoint revision, active or not.
| Name | Required | Description | Default |
|---|---|---|---|
| revision | Yes | The revision number, from list_webhook_endpoint_revisions. | |
| endpoint_key | Yes | The webhook endpoint's key. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds the useful detail that inactive revisions are also retrievable, which is context beyond the annotations. It does not explain the unusual idempotentHint=false for a read operation or what a revision object contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short, front-loaded sentence with zero waste. The key qualifier ('active or not') appears immediately after the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read tool with fully documented schema and read-only annotations, the description covers what an agent needs to invoke it correctly. Only the return shape is unspecified, which is minor given it is a straightforward entity fetch with no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters carry descriptions, including a cross-reference for the revision number, so the schema does the heavy lifting. The description adds no additional meaning about endpoint_key or revision format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Read') and resource ('one webhook endpoint revision'), and 'one' distinguishes it from the sibling list_webhook_endpoint_revisions. It does not explicitly name siblings or contrast with get_webhook_endpoint, but 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: 'active or not' signals it works on any revision state, and the revision parameter description points to list_webhook_endpoint_revisions for obtaining the revision number. There is no explicit when-to-use/when-not or named alternative in the description itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_agentsList agentsBRead-onlyInspect
List the organization's agents: slug (what pipelines and conditions refer to), name, kind, status, and recent request counts.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Which to list: live (the default), archived, or all. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, covering the safety profile. The description adds useful context by disclosing what the payload contains (slug, name, kind, status, recent request counts) and clarifying that slug is the identifier pipelines and conditions reference, which is real value beyond the annotations. It says nothing about pagination or result volume, though.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One tight sentence with zero filler, and the returned-field list is front-loaded after the verb+resource. The parenthetical about slug is justified because it explains why the field matters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the field enumeration is exactly the kind of information the description should supply, and it does. The main omission is any mention of the archived/all filter or result size, but for a one-parameter read-only list tool this is close to complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'status' parameter already documents the live/archived/all values with its default, so the schema carries param semantics. The description never mentions filtering, so it adds nothing here, but it does not need to given full coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List the organization's agents') and enumerates the fields returned, so the agent knows this is a roster/enumeration tool rather than a detail fetch. It does not explicitly contrast with the sibling get_agent, but 'List' vs. 'get' is conventionally unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this over get_agent, create_agent, or list_agent_tool_access, and no mention that it supports an archived/all filter. The only selection-relevant detail (status defaults to live) lives entirely in the schema, not the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_agent_tool_accessList agent tool accessARead-onlyInspect
List an agent's grants on gateway servers: per server, the mode (none, selected or all), the tools and scopes granted, and the revision set_agent_tool_access needs. Every instance of the agent inherits them.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_slug | Yes | The agent's slug, from list_agents. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds real value beyond that: the exact per-server shape of the result (mode enum values, tools, scopes, revision) and the inheritance rule that every agent instance shares these grants.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence, front-loaded with the core action and then the result shape via a compact colon list. Dense but no wasted clauses; slight cost in readability from packing four distinct facts into one sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly compensates by describing the returned fields and the revision token. Safety is covered by annotations. It stops short of stating whether results cover all gateway servers or only those the agent touches, which leaves a small gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter and schema coverage is 100%, with the schema already pointing at list_agents as the source of agent_slug. The description adds no syntax, format, or lookup detail beyond that, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (list) plus a precise resource (an agent's tool grants on gateway servers), and it enumerates what comes back: per-server mode (none/selected/all), granted tools and scopes, and the revision token. It is distinguishable from server-scoped siblings like list_gateway_server_tools, though the agent-scoped contrast is left implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The clause 'the revision set_agent_tool_access needs' implies the read-before-write workflow, which is useful routing signal, but there is no explicit 'use this when…' or exclusion naming list_gateway_server_tools / get_agent as alternatives. Usage must be inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_audit_eventsList audit eventsARead-onlyInspect
Search the organization's audit log, newest first by default: who did what to which subject and how it ended, every approval decision, pipeline outcome, configuration change and API key action included. Filters combine; page with next_cursor. total_count is how many events match.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Free text over the event type, the actor's name and id, the subject id, the event id and the event's data. | |
| sort | No | occurred (the default), event_type or actor. | |
| limit | No | How many events per page, 1 to 500. Defaults to 100. | |
| order | No | desc for newest first (the default) or asc. | |
| to_at | No | Only events before this RFC 3339 time. | |
| cursor | No | The next_cursor of the previous page; keep the same filters, sort and order. | |
| from_at | No | Only events at or after this RFC 3339 time. | |
| outcome | No | Only events whose action ended this way: approved, denied, expired, cancelled, human or blocked. | |
| actor_id | No | Only events by one actor: a membership or user id, an agent's slug, or an API key's id. | |
| actor_type | No | Only events by this kind of actor: human, agent, system or api_key. | |
| subject_id | No | Only events about one subject; requires subject_type. An agent is given by its slug, everything else by its id. | |
| event_types | No | Only events of these types, from list_audit_event_types. | |
| subject_type | No | Only events about this kind of thing, such as approval_request, membership or request_approval_pipeline. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint true, destructive false, openWorld false), so credit goes to what is added: default newest-first ordering, a documented "filters combine" conjunction rule, a cursor-based pagination contract, and the meaning of total_count. Missing only rate limits, permission requirements, or default page size behavior across the 13 filters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, ledger-style, front-loaded with the verb and resource before operational details. The middle clause ("who did what to which subject and how it ended, every approval decision, pipeline outcome, configuration change and API key action") is slightly list-heavy but earns its place by conveying coverage breadth.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 13-parameter, zero-required tool with no output schema, the description covers the essentials an agent needs: defaults, filter conjunction, cursor paging, and the two return fields that matter (next_cursor, total_count). A note on empty-result behavior or per-page maximum would round it out.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents every parameter including the sort/order defaults and the subject_id-requires-subject_type rule. The description reinforces default ordering and the pagination invariant (same filters/sort/order when cursoring) but adds little that the schema does not already say — baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (search the organization's audit log) plus the content it covers — actor, subject, outcome, approval decisions, pipeline outcomes, config changes, API key actions. An agent can distinguish it from get_audit_event on scope alone, but 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Filters combine; page with next_cursor" gives real operating guidance on how to drive the tool, but there is no statement of when to prefer this over get_audit_event or list_audit_event_types, and no exclusions. Usage is implied rather than directed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_audit_event_typesList audit event typesARead-onlyInspect
List the event types this organization's audit log holds, the vocabulary for list_audit_events' event_types filter.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered and the description only needs to add scope, which it does ('this organization's'). It says nothing about result shape, ordering, or whether the set is paginated, and does not address the surprising idempotentHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no filler, and the key information (what it lists) is front-loaded before the cross-reference. Nothing could be removed without losing meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, side-effect-free enumeration tool with full annotation coverage and no parameters, this is nearly enough to call it correctly. The only missing piece is a hint about what the response contains (a flat list of type identifiers/strings), since there is no output schema to fall back on.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is no parameter semantics to explain; baseline for a 0-param tool is 4. The description correctly avoids inventing filtering arguments.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('List the event types this organization's audit log holds') and scopes it to the organization, which distinguishes it from org-agnostic or broader listing tools. It also names its role relative to the sibling list_audit_events, so the agent can tell the two apart 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The clause 'the vocabulary for list_audit_events' event_types filter' effectively tells the agent to call this first when building that filter, which is clear usage context. It stops short of explicit when-not-to-use guidance (e.g., billing/retention questions), so it lands just below the top.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_escalation_path_revisionsList escalation path revisionsARead-onlyInspect
List an escalation path's revisions, newest first, with which one is active.
| Name | Required | Description | Default |
|---|---|---|---|
| path_key | Yes | The escalation path's key. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds useful output-shaping behavior — ordering (newest first) and an active-revision marker — but says nothing about pagination, result limits, or behavior for an unknown path_key.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler; the ordering and active-flag details are exactly the parts that matter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with no output schema and one fully documented parameter, the description covers purpose plus the two relevant return characteristics. Only pagination/error behavior is left open, a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter and schema coverage is 100%, so the schema fully documents path_key. The description adds no format, sourcing, or lookup semantics beyond that, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('List an escalation path's revisions') and scopes it to a single path key, which cleanly separates it from list_escalation_paths and get_escalation_path_revision. It does not explicitly name those siblings, so differentiation is by naming precision rather than explicit contrast.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not statement and no named alternative (e.g. get_escalation_path_revision for a single revision). Usage is only implied by 'newest first, with which one is active', which hints at auditing history but leaves the agent to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_escalation_pathsList escalation pathsBRead-onlyInspect
List escalation paths with their key, name, active revision and latest revision.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Which to list: live (the default), archived, or all. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare this as a safe read-only operation with no destruction or open-world behavior. The description adds the returned fields but does not disclose additional behavioral context such as pagination, ordering, or handling of archived items.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It communicates the core purpose and returned fields efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with strong annotation coverage and a fully described schema, the description is mostly complete. It names the returned fields but does not mention the status filter or default behavior, leaving a minor gap even though the schema covers it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the single optional status parameter is fully documented in the schema. The description does not add meaning beyond the schema, 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: list escalation paths. It also names the key returned fields, which helps an agent understand what this list provides, but it does not explicitly distinguish the tool from sibling tools such as list_escalation_path_revisions or get_escalation_path.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives. The description does not mention the status filter, default behavior, or when to choose list_escalation_paths over revision- or usage-specific sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_escalation_path_usesList escalation path usesARead-onlyInspect
List the active pipeline revisions that name this path, as a block's path or as the default: what stands in the way of archiving it.
| Name | Required | Description | Default |
|---|---|---|---|
| path_key | Yes | The escalation path's key. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=false and openWorldHint=false. Beyond that, the description discloses a meaningful behavioral filter the schema does not: only *active* pipeline revisions are counted, so archived revisions will not appear — exactly the detail that matters when judging archive safety.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense sentence with the resource and its scope front-loaded, followed by the motivating use case. No filler and nothing restated from the name or title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read-only lookup with no output schema, the description conveys what the result represents (pipeline revisions referencing this path) and why it matters. It stops short of describing result fields or ordering, which a caller might still want.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single path_key parameter has 100% schema description coverage, so the baseline is 3. The description adds nothing about the key's format or origin beyond what the schema already says.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and a precise resource subset (active pipeline revisions naming this escalation path), including the two ways a pipeline can reference it (block path or default). An agent can distinguish it from list_pipeline_uses or list_webhook_endpoint_uses without opening the schema, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The trailing clause 'what stands in the way of archiving it' supplies a concrete usage context: call this before archiving an escalation path to check for blocking references. It gives no explicit when-not guidance or named alternative, which keeps it below a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_gateway_server_revisionsList gateway server revisionsARead-onlyInspect
List a gateway server's revisions, newest first, with which one is active. Use it to find a revision to roll back to.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | The next_cursor of the previous page. | |
| server_slug | Yes | The server's slug, from list_gateway_servers. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so safety is covered. The description adds value beyond that by disclosing result ordering ('newest first') and that active status is included in the response, which the annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the purpose and ordering front-loaded before the usage hint. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description compensates by telling the agent what comes back (revisions, newest first, with active indicated); pagination is handled by the documented cursor param. For a two-parameter read tool this is nearly complete, missing only explicit tie-in to the sibling activate tool by name.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: server_slug is documented as coming from list_gateway_servers and cursor as the next_cursor of the previous page. The description adds no parameter-level meaning beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List a gateway server's revisions') plus scope details: ordering ('newest first') and inclusion of the active flag. It implicitly distinguishes from the singular get_gateway_server_revision, though it doesn't name any sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use it to find a revision to roll back to' gives a concrete selection scenario that points the agent toward the revision-listing → activate flow. It lacks explicit exclusions (e.g., when to use get_gateway_server_revision instead of listing), so it stops short of 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_gateway_serversList gateway serversARead-onlyInspect
List the MCP servers the organization registered on the MCP Gateway: slug, name, URL or tunnel, active revision, each scope (named credential) with whether its credential is stored and any warnings about its OAuth grant. Secret values are never returned.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Which to list: live (the default), archived, or all. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a read-only, non-destructive operation. The description adds useful behavioral context beyond annotations: it discloses that returned data includes scopes, credential storage status, OAuth grant warnings, and explicitly states that secret values are never returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence with the core purpose front-loaded, followed by a compact enumeration of return fields and the secret-handling note. There is no redundant or wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description usefully explains what the tool returns. It covers key security-relevant behavior around credentials and secrets. It does not mention pagination, ordering, or permission requirements, but for a simple list tool with one optional parameter the core context is adequately complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the sole status parameter is fully documented in the schema including its default. The description does not add parameter semantics beyond the schema, 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: list MCP servers registered on the MCP Gateway. It also enumerates returned fields (slug, name, URL/tunnel, revision, scopes, credential status), making the purpose clear, though it does not explicitly distinguish itself from sibling list tools such as list_gateway_server_revisions or list_gateway_server_tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit when-to-use guidance or alternatives. It does not say when to call this instead of get_gateway_server, list_gateway_server_revisions, or list_gateway_tunnels, leaving the agent to infer usage from the verb alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_gateway_server_toolsList gateway server toolsARead-onlyInspect
List the tools a gateway server's downstream advertises, by their own names, as the gateway last listed them: the union, and per scope the tools that scope's credential lists, or why it could not. A scope marked refreshing is being listed again in the background (never listed, changed, or an hour old): call again shortly for the new listing. Use the names for set_agent_tool_access and pipeline conditions. Requires a personal API key.
| Name | Required | Description | Default |
|---|---|---|---|
| server_slug | Yes | The server's slug, from list_gateway_servers. It prefixes the server's tools as <slug>__<tool> for agents. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations it discloses that results are a cached snapshot ('as the gateway last listed them'), that per-scope listings may carry a failure reason, that a 'refreshing' scope means a background re-list was triggered by a never-listed/changed/hour-old condition, and that a personal API key is required. These are exactly the traits the annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and caching semantics are front-loaded, and every clause carries information (union, per-scope, refresh state, auth). The middle segment ('the union, and per scope the tools that scope's credential lists, or why it could not') is dense to the point of being hard to parse on a first read.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still conveys the return shape (union plus per-scope entries plus failure reasons plus refresh markers) and the auth prerequisite. For a single-parameter read tool that is everything an agent needs to call it and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single parameter, and the schema already explains that the slug comes from list_gateway_servers and how it prefixes agent-facing tool names. The description adds nothing parameter-specific, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('List the tools a gateway server's downstream advertises') and pins the data to what 'the gateway last listed', which separates it from the catalog-style siblings such as list_tool_catalog and list_tool_definitions. It never names those siblings explicitly, so an agent must infer the boundary, which keeps it below a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use the names for set_agent_tool_access and pipeline conditions' gives concrete downstream usage, and the 'refreshing ... call again shortly' clause tells the agent how to react to a transient state. It stops short of naming alternatives or stating when not to use this tool, so no exclusions are offered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_gateway_tunnelsList gateway tunnelsARead-onlyInspect
List the tunnels the organization runs in its own network, with their live connections and the entries they serve: the tunnel_id and tunnel_entry values a server reached through a tunnel names.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Which to list: live (the default), archived, or all. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already establish that this is a read-only, non-destructive, non-open-world operation. The description adds useful behavioral context by explaining that results include live connections and the entries served, plus the relevant tunnel_id and tunnel_entry values. It does not mention pagination or permissions, but against the annotation coverage this is a meaningful addition.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is a single front-loaded sentence that immediately names the action and resource, with the return-content details following after the colon. There is no wasted text, though the sentence is somewhat dense and could be marginally easier to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, but the description compensates by explaining what the tool returns: live connections, served entries, and the tunnel_id/tunnel_entry values. With one optional parameter fully covered by the schema and strong annotation coverage for safety, the definition is complete enough for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the status parameter is already fully documented in the schema with its default and values (live, archived, all). The description does not add parameter-specific guidance or format details beyond what the schema provides, 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: it lists tunnels the organization runs in its own network, and it also states what each result includes (live connections and served entries). It does not explicitly contrast with nearby gateway-server tools, but no direct tunnel-list sibling exists, so the purpose remains clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description only states what the tool does; it gives no guidance on when to use it versus alternatives such as list_gateway_servers or get_gateway_server. There are no exclusions, prerequisites, or contextual conditions to help an agent choose among related list tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_member_permission_policiesList member permission policiesARead-onlyInspect
List the permission policies granted directly to one member: each policy's permissions, the scope they apply at and its revision. Grants the member inherits from teams are on list_team_permission_policies. Requires a personal API key.
| Name | Required | Description | Default |
|---|---|---|---|
| membership_id | Yes | The membership id, from list_members. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=false), and the description adds the personal-API-key requirement plus a summary of the shape of the result set. It does not contradict any hint; the only modest gap is that it says nothing about ordering, pagination, or behavior when the member has no direct policies.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences: what it returns, where the excluded data lives, and the auth requirement. The scope constraint is front-loaded and nothing is repeated from the schema or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, non-destructive read with full schema coverage and no output schema, the description gives enough to select and invoke correctly, including what the returned policies look like. The remaining gap is minor operational detail such as ordering or empty-result behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema itself supplies the provenance hint ('from list_members'), so the description's job here is minimal. It reinforces the singular 'one member' framing but adds no format or edge-case detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('List the permission policies granted directly to one member') and enumerates the returned fields (permissions, scope, revision). It explicitly separates this tool from the closely-named sibling list_team_permission_policies, so an agent can distinguish the two 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the boundary condition ('granted directly to one member') and names the alternative for the excluded case ('Grants the member inherits from teams are on list_team_permission_policies'), which is exactly the routing decision an agent needs. It also adds an auth prerequisite ('Requires a personal API key'), which affects whether the call can be made at all.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_membersList membersARead-onlyInspect
List the organization's members with the membership id (the id an escalation path's user target carries), display name, email, status, roles and team ids.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so safety profile is covered. The description adds genuine value beyond that by disclosing the exact returned fields (membership id, display name, email, status, roles, team ids), which matters because there is no output schema; it does not address pagination, ordering, or whether inactive members are included.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the resource comes first and the qualifier about the membership id follows where it is most useful. Nothing repeats the schema or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read tool with no output schema, the field enumeration makes the definition largely self-sufficient. The only meaningful gap is the absence of any note on result volume or pagination for an organization-wide list, which an agent would want to know before calling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters and the input schema is an empty closed object at 100% coverage, so there is nothing for the description to disambiguate. Baseline for a parameterless tool applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ("List the organization's members") and enumerates the payload fields, so an agent knows exactly what it retrieves. It does not explicitly contrast with siblings such as list_roles or list_teams, but the resource scope is distinct enough that confusion is unlikely.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance and no named alternatives, so usage is only implied by the verb "list." The parenthetical noting the membership id is the id an escalation path's user target carries provides a useful downstream-usage hint, but it is a single passing cue rather than real routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_permissionsList permissionsARead-onlyInspect
List every permission key this deployment knows, with what it allows, who can hold it, the kind of resource it applies to and whether it is dangerous. Use it to tell a person which grant to make, for example pipeline.write at pipeline: for a team that owns a delegated pipeline. Requires a personal API key that can read permission policies.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly and non-destructive, and the description adds real context beyond them: the auth requirement ('personal API key that can read permission policies') and the shape of the returned data, including a danger flag. That is meaningful disclosure for a no-argument catalog tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with what the tool returns and then when to reach for it. Slightly dense, but every clause (returned fields, example, auth prerequisite) earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully compensates by naming the fields returned (what it allows, who can hold it, resource kind, danger flag) and the auth prerequisite. Nothing critical is missing for a read-only zero-arg catalog call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4. The description correctly does not invent parameter behavior and instead describes the content of what comes back.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List every permission key this deployment knows') and immediately scopes it as the permission *catalog*, which separates it from the sibling policy listers (list_member_permission_policies, list_team_permission_policies, list_roles). The enumeration of returned attributes reinforces what the tool is about.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete use case with a worked example ('to tell a person which grant to make, for example pipeline.write at pipeline:<key> for a team that owns a delegated pipeline'), which is enough for an agent to recognize the scenario. It stops short of naming alternatives or exclusions (e.g. 'use list_member_permission_policies to see what a member already holds').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_pipeline_revisionsList pipeline revisionsARead-onlyInspect
List a pipeline's revisions, newest first, with which one is active. Use it to find a revision to roll back to.
| Name | Required | Description | Default |
|---|---|---|---|
| pipeline_key | Yes | The pipeline's key. 'entry' is the entry pipeline every request starts in; any other key is a pipeline a delegate block hands requests to. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish it as a safe, non-destructive read. The description adds genuine behavioral context beyond them: results come back ordered newest-first and each revision carries an active flag, which matters for choosing one to roll back to. No pagination or size limits are disclosed, keeping it below 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, each earning its place: the first covers what is returned and how it's ordered, the second covers when to use it. Front-loaded with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read-only list tool with full schema coverage and annotation safety flags, the description covers purpose, ordering, and the key returned attribute. Only pagination/result-size behavior is unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description says nothing about pipeline_key, but the schema documents it fully at 100% coverage, including the meaning of 'entry' versus delegate target keys. With the schema doing all the work, baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List a pipeline's revisions') plus scope details: ordering ('newest first') and the active marker. It's clearly distinguishable from get_pipeline_revision or list_pipelines, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use it to find a revision to roll back to' gives a concrete selection scenario that implicitly routes to activate_pipeline_revision. It lacks explicit exclusions (e.g., use get_pipeline_revision for details of a single revision), so it falls 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_pipelinesList pipelinesARead-onlyInspect
List every approval pipeline: the entry pipeline every request starts in, then every pipeline a delegate block can hand requests to, each with its key, name, active revision number, the delegate blocks that hand requests to it, and history.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Which to list: live (the default), archived, or all. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds meaningful behavioral context about the return composition and ordering: the entry pipeline first, then delegate-target pipelines, each with key, name, active revision, delegate blocks, and history. It does not discuss pagination or auth/rate limits, but adds real value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler, leading with the action and resource. It is dense with return-field detail but still structurally efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, one-parameter list tool with no output schema, the description usefully explains what is returned: key, name, active revision, delegate blocks, and history. It still omits how the status filter changes results and any pagination behavior, so it is not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, 'status', is fully documented in the schema as live/archived/all with live as default. The description never mentions status filtering, so it adds no parameter meaning beyond what the schema already provides; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'List every approval pipeline', and clarifies the scope by distinguishing the entry pipeline from delegate-target pipelines. It does not explicitly differentiate itself from close siblings like get_pipeline or list_pipeline_revisions, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no explicit when-to-use guidance and does not name alternatives such as get_pipeline or list_pipeline_revisions. The intended use is only implied by 'List every approval pipeline'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_pipeline_usesList pipeline usesARead-onlyInspect
List the delegate blocks in active pipeline revisions that hand requests to this pipeline: what stands in the way of archiving it.
| Name | Required | Description | Default |
|---|---|---|---|
| pipeline_key | Yes | The pipeline's key. 'entry' is the entry pipeline every request starts in; any other key is a pipeline a delegate block hands requests to. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds useful scope information ('active pipeline revisions') and the archive-blocker framing, but it does not describe output shape, pagination, or other behavioral details beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that conveys both what is listed and why it matters, with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read tool with full annotation coverage, the description is largely complete: it explains what is returned conceptually and its archival purpose. It could mention return format or pagination, but no output schema exists and the core notion of 'delegate blocks' is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the single parameter's schema description already explains the 'entry' special case and normal pipeline keys. The tool description does not add parameter-level detail beyond the schema, 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('List the delegate blocks') and narrows the scope to active pipeline revisions and delegate blocks that hand requests to this pipeline. It clearly distinguishes this use-analysis tool from general pipeline or revision listing tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'what stands in the way of archiving it' gives clear contextual guidance that this tool is used before archiving a pipeline. It does not explicitly name alternatives or when not to use it, but the intended usage is evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_rolesList rolesARead-onlyInspect
List the predefined roles (owner, admin, reviewer, auditor) with the permissions each grants. Assigning roles and permission policies is done by a person in the app. Requires a personal API key.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description adds genuinely new context: a personal API key is required, and assignment workflows are out of scope of this API. It doesn't mention caching or return size, but that's minor given the safety profile is already covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the return content, then the scope limitation, then the auth requirement. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description states what comes back (roles with their granted permissions). Combined with the auth note and the in-app assignment exclusion, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4. The description adds nothing to explain (nor needs to explain) inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (List) plus resource (predefined roles) with the exact enumerations (owner, admin, reviewer, auditor) and what accompanies each (permissions). It also clarifies the boundary versus role assignment, so an agent can distinguish it from sibling mutation tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says assigning roles and permission policies is a human in-app action, which tells the agent not to attempt assignment via API. It stops short of naming related siblings such as list_permissions or list_member_permission_policies, so it lacks full alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_team_escalation_policy_revisionsList team escalation policy revisionsARead-onlyInspect
List a team's escalation policy revisions, newest first, with which one is active.
| Name | Required | Description | Default |
|---|---|---|---|
| team_id | Yes | The team's id, from list_teams. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description usefully adds ordering (newest first) and that the active revision is indicated, but with no output schema it does not sketch the returned fields or 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the resource and the two most useful behavioral facts (ordering, active marker). No filler or restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only list tool with annotations covering safety, the description is nearly sufficient and covers ordering and the active marker. Because there is no output schema, a brief note on what a revision entry contains (or the absence of pagination) would have closed the remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single required parameter with 100% schema coverage and its description already explains provenance ('from list_teams'). The tool description adds nothing about team_id, which is acceptable at this coverage level but earns only the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource (list a team's escalation policy revisions) and adds two distinguishing traits: newest-first ordering and an active-flag. It is clearly separable from get_team_escalation_policy_revision, though it never explicitly contrasts with the similarly named list_escalation_path_revisions sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the name and scope; there is no statement of when to call this versus get_team_escalation_policy_revision (fetch one revision) or list_escalation_path_revisions (a different revision family). An agent can infer the intent but gets no routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_team_permission_policiesList team permission policiesARead-onlyInspect
List the permission policies a team holds, which every member inherits live: each policy's permissions, scope and revision. Requires a personal API key.
| Name | Required | Description | Default |
|---|---|---|---|
| team_id | Yes | The team's id, from list_teams. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so safety is covered. The description adds value beyond them: it discloses the auth requirement (personal API key) and the semantic that policies are inherited live by every member, which is not expressible in structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact clauses with zero filler: the core action and scope come first, followed by the auth prerequisite. Nothing is repeated from the title or schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully sketches the return contents (permissions, scope, revision) in addition to the auth requirement. For a single-parameter read tool, this is nearly sufficient; only pagination or ordering behavior is unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single team_id parameter is already documented with a pointer to list_teams. The description adds no further syntax or formatting detail about the identifier, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("List the permission policies a team holds") and scopes it to teams rather than members, which is the key distinction from the sibling list_member_permission_policies. The sibling is not named explicitly, so differentiation relies on inference from "a team holds".
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a real prerequisite ("Requires a personal API key") and implicitly frames the use case via the live-inheritance model, letting an agent understand when this view is relevant versus member-level policies. It stops short of explicitly naming an alternative or a when-not condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_teamsList teamsARead-onlyInspect
List teams with their id (what an escalation path's team target carries), name, member count and whether an escalation policy is active.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Which to list: live (the default), archived, or all. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds value beyond that by disclosing the returned fields and, notably, that the id is the value used as an escalation path's team target — a non-obvious behavioral link. It omits ordering/pagination, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the verb and resource, with no wasted clauses. The parenthetical about the id's role is dense but earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully enumerates what each team record carries, which is exactly the gap that needs filling. Minor omissions like result ordering or pagination behavior keep it from complete coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with a single well-documented 'status' parameter, so the baseline is 3. The description does not mention the status filter at all, adding no semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description pairs a specific verb ('List') with a specific resource ('teams') and enumerates the fields returned (id, name, member count, escalation policy active). It is clearly distinguishable from write-side siblings like archive_team or rename_team, though it does not explicitly contrast with get_team.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the name and the field list, but the description never states when to prefer this over get_team or list_members, nor does it mention the archived/all filtering behavior that the schema introduces. An agent can infer the basic use case but gets no explicit routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_tool_catalogList tool catalogARead-onlyInspect
List the tools agents have reported or can reach, one entry per tool and source, with its schema, the instances offering it and whether its source is available. Use it to learn the exact tool names and argument fields pipeline conditions test. The catalogue is advisory: it never changes how a request is decided.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Only tools whose name or description contains this text. | |
| offset | No | How many matching tools to skip; tools come 50 to a page. | |
| source | No | Only tools from this source: builtin, mcp, or a source the deployment adds, such as gateway. | |
| status | No | Only tools that are available, unavailable or stale. | |
| refresh | No | Bypass the deployment's five-minute discovery cache for its own tool source. Tools a runtime reports locally refresh only through the CLI. | |
| agent_slug | No | Only tools this agent's instances or sources offer. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, non-destructive, closed-world behavior. The description adds meaningful behavioral context beyond that: entries are per tool and source, source availability is reported, and the catalogue is explicitly advisory and never changes request decisions. It does not cover auth or rate limits, but it adds useful operational framing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences with no wasted wording. The core listing behavior is front-loaded, the intended use is stated next, and the advisory caveat follows efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, but the description explains the return shape well: one entry per tool and source with schema, offering instances, and source availability. The schema covers all filters with full descriptions. It could still say more about pagination defaults or route agents to close sibling tools, so it is not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all six filter parameters are already well documented in the schema. The description does not add syntax or filtering semantics beyond what the schema provides, 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: it lists tools reported or reachable, one entry per tool and source, with schema, offering instances, and availability. This is clearly distinct from generic CRUD tools, though it does not explicitly differentiate itself from close siblings like list_tool_definitions or get_tool_catalog_entry.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides a concrete use case: learning exact tool names and argument fields that pipeline conditions test. It also says the catalogue is advisory. However, it gives no when-not guidance and does not name alternatives such as list_tool_definitions or get_tool_catalog_entry, despite many sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_tool_definitionsList tool definitionsARead-onlyInspect
List every distinct tool definition across agents in one answer (name, server, schema and description, with the runtimes and instances offering it): the vocabulary to write pipeline conditions against.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so safety is covered; the description adds value by enumerating what the response aggregates (name, server, schema, description, runtimes, instances), which is essential with no output schema. It omits pagination, ordering, and how 'distinct' is resolved when agents disagree on the same tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the main action and scope, with the projected fields folded into a parenthetical. It is dense but every clause carries information; the em-dash purpose clause is arguably padding but justifies the tool's value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-param read-only list with no output schema, the description supplies the return shape and the aggregation level, which is the main gap it had to fill. Minor omissions remain: whether results are paginated or size-bounded, and how conflicts between agent-specific definitions are reported.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The description correctly implies a whole-tenant scan with no filtering options.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List every distinct tool definition across agents') and makes the cross-agent de-duplication scope explicit, which distinguishes it from list_tool_catalog and list_agent_tool_access. It stops short of naming those siblings, so the differentiation is inferential rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The trailing clause 'the vocabulary to write pipeline conditions against' implies a use case (conditions referencing tools by name), but there is no explicit when-to-use/when-not guidance and no alternative tool named, even though list_tool_catalog is the obvious near-neighbour to route between.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_webhook_endpoint_revisionsList webhook endpoint revisionsARead-onlyInspect
List a webhook endpoint's revisions, newest first, with which one is active. Use it to find a revision to roll back to.
| Name | Required | Description | Default |
|---|---|---|---|
| endpoint_key | Yes | The webhook endpoint's key. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, non-destructive, closed-world behavior. The description adds useful behavioral context beyond annotations by stating that results are ordered newest first and include the active revision, which an agent needs in order to interpret the list correctly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two tight sentences with no wasted words. Ordering and active-revision information are front-loaded, followed by the motivating use case.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter list tool with full annotation coverage and no output schema, the description supplies the key behavioral facts: ordering and active revision. It does not discuss pagination or result size, but those gaps are minor for this tool's scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the sole parameter endpoint_key is fully documented in the schema. The description implies that the key identifies the webhook endpoint whose revisions are listed, but adds no syntax or format details beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: listing a webhook endpoint's revisions. It also specifies ordering (newest first) and that the active revision is included, which clearly distinguishes it from generic list or get operations and from other revision-list tools for other resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear use case: find a revision to roll back to. It does not explicitly name alternatives such as get_webhook_endpoint_revision for inspecting one revision or activate_webhook_endpoint_revision for activation, so it lacks full when-not guidance, but the intended context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_webhook_endpointsList webhook endpointsARead-onlyInspect
List webhook endpoints (the URLs a pipeline's webhook block can ask for an outcome) with their key, active revision, and which pipelines use them.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish this as a read-only, non-destructive operation. The description adds useful behavioral context by naming the returned fields: key, active revision, and pipelines using the endpoint. It does not mention pagination or rate limits, but for this simple zero-parameter list the extra return-content disclosure is meaningful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted text. The resource is named first and the returned fields follow immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, zero-parameter listing tool with no output schema, the description is largely complete: it explains what the resource is and what fields the list includes. Only pagination and completeness of the result set are left unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so the schema cannot carry parameter semantics and the description does not need to explain any. The baseline for a zero-parameter tool is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("List webhook endpoints") and explains the endpoint concept as URLs a pipeline's webhook block can ask for an outcome. It also names the returned fields. It does not explicitly distinguish this listing tool from siblings like get_webhook_endpoint or list_webhook_endpoint_uses.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The list semantics imply usage when an agent needs an inventory of webhook endpoints. However, it gives no explicit when-to-use guidance, exclusions, or alternatives such as get_webhook_endpoint for details or list_webhook_endpoint_uses for usage relationships.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_webhook_endpoint_usesList webhook endpoint usesARead-onlyInspect
List the active pipeline revisions whose webhook blocks post to this endpoint: what stands in the way of archiving it.
| Name | Required | Description | Default |
|---|---|---|---|
| endpoint_key | Yes | The webhook endpoint's key. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and closed-world scope, so the safety profile is covered. The description adds a genuinely new behavioral fact beyond the annotations: only *active* pipeline revisions are returned, and those results are precisely what would block archiving. Return shape/pagination is not described, but with annotations carrying safety that is a minor gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the verb and resource, with the motivating context trailing. 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read-only enumeration with no output schema, the description conveys the entity returned, the relation that qualifies it, and why an agent would want it. Minor unknowns (whether duplicates per pipeline are collapsed, result ordering) remain but are not blockers.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single endpoint_key parameter is documented in the schema itself. The description adds no syntax, format, or sourcing guidance beyond that, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (list) and a precise resource: active pipeline revisions whose webhook blocks post to this endpoint. This distinguishes it from adjacent list_*_uses tools and from get_webhook_endpoint by naming the exact relationship being enumerated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The clause "what stands in the way of archiving it" gives a clear use case (checking blockers before archiving a webhook endpoint), which is a real routing signal. It stops short of explicitly naming alternatives or a when-not-to-use condition, so it is not a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preview_pipelinePreview pipelineARead-onlyInspect
Run a sample request through a set of blocks and report the outcome (approve, deny, human, or next), which block decided, its reason, and the escalation path a human exit would take. Each step lists a block the request reached, with the pipeline it belongs to; a branch or delegate reports enter or next for its condition, and end_of_branch when the request ran out of its blocks (for a delegate, out of the target pipeline). Delegate blocks expand to their targets' current active revisions, so the preview walks what a request would. Nothing is saved and no approval request is created. webhook blocks and other asynchronous kinds really call the endpoint or the model.
| Name | Required | Description | Default |
|---|---|---|---|
| blocks | Yes | The blocks to run the sample through, in order; the same shape update_pipeline takes. Pass the current blocks from get_pipeline to test what is active. | |
| sample | Yes | The request to run through the blocks. Nothing is created: no approval request, no notification. | |
| pipeline_key | Yes | The pipeline the blocks stand in for ('entry' for the entry pipeline). Delegate blocks expand to their targets' current active revisions. | |
| default_ask_agent_owner | No | Whether the default asks the agent's owner first, as update_pipeline takes it. | |
| default_escalation_path | No | The default escalation path to assume, as update_pipeline takes it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: states nothing is saved, no approval request is created, delegates expand to live revisions, and – critically – webhook and other asynchronous blocks really call the endpoint or model. That last disclosure is the single most important operational fact and it is stated plainly. It stops short of 5 because it doesn't say what that means for retries/latency or whether the caller gets an error when an external call fails.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and dry-run guarantee, then output shape, then step semantics. It is a dense single paragraph, however, and the enter/next/end_of_branch explanation is compressed into one long clause that rewards a second read.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description carries the return-value burden – and it does: outcome, deciding block, reason, escalation path, and per-step reporting with enter/next/end_of_branch semantics. Combined with the dry-run and external-call caveats, an agent has everything needed to call and interpret this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds a little meaning for pipeline_key (delegate expansion, 'entry') and for how the blocks/sample pair is consumed, but nothing about default_ask_agent_owner or default_escalation_path beyond what the schema already documents.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb and resource ('Run a sample request through a set of blocks and report the outcome') and names the exact output fields, which immediately separates it from update_pipeline (persist) and get_pipeline (read). The dry-run nature is unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clear context is given: pass the current blocks from get_pipeline to test what is active, and the preview walks current active revisions. It never explicitly rules out alternatives (e.g., 'do not use this to actually submit a request; use X'), so it falls just 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.
read_referenceRead referenceARead-onlyInspect
Read the exact grammar for pipeline blocks, conditions, or escalation path and team escalation policy documents. Read the relevant topic before writing one: unknown fields are refused and ids must be UUIDs.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | Yes | One of: pipeline_blocks (block envelope and each type's config), conditions (the condition tree branches, delegates and request conditions use: fields, operators, values), escalation_paths (path and team escalation policy documents: nodes, targets, timing, working hours, repeat). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds valuable behavioral context beyond annotations by noting "unknown fields are refused and ids must be UUIDs," which tells the agent about validation rules that matter when writing pipeline content. It does not describe the return format, but the extra enforcement detail is meaningful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, and the purpose is front-loaded before the usage instruction. Every sentence earns its place by stating what to read and why.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only reference tool with annotations covering safety, the description is nearly complete. It names the topics and validation constraints, though it could say more about what the returned reference material looks like.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already enumerates the three possible topic values with detailed explanations. The description mentions the same topics but does not add syntax or selection guidance beyond what the schema provides, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: "Read the exact grammar for pipeline blocks, conditions, or escalation path and team escalation policy documents." It clearly identifies this as a reference-reading tool rather than a CRUD or inspection sibling, and the topic list mirrors the parameter's domain.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit timing: "Read the relevant topic before writing one." That tells the agent when this tool is needed. It does not name specific alternative tools or when not to use it, but the context is clear enough for a reference tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_memberRemove memberADestructiveIdempotentInspect
Remove a member from the organization for good: their sessions, API keys and agent instances stop working. Refused for your own membership, the last active owner, and members your directory manages. Requires a personal API key.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Remove even while an active escalation path names the member. Without it the call is refused and lists the paths. | |
| membership_id | Yes | The membership id, from list_members. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint and idempotentHint, but the description adds real value: the cascade (sessions, API keys, agent instances stop working), the exact refusal cases, and the personal-API-key auth requirement. This is behavioral context the annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences with the destructive scope front-loaded, then refusals, then the auth prerequisite. No filler, and each clause carries information an agent needs before calling.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive two-parameter tool with no output schema, the description covers the effect, the guardrails, and the auth requirement, which is everything needed to invoke it safely and correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the schema itself documents both membership_id (from list_members) and force (including the escalation-path refusal behavior). The description adds no parameter-level detail beyond hinting at refusals, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Remove a member from the organization') with the scope qualifier 'for good', which separates it from update_member or set_team_members among the siblings. An agent can identify it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete refusal conditions (your own membership, last active owner, directory-managed members) and the prerequisite of a personal API key, which tells the agent when the call will fail. It does not explicitly name a sibling alternative, so it falls short of the top band.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rename_teamRename teamADestructiveIdempotentInspect
Rename a team. Escalation paths name teams by id, so nothing else changes. Refused for a team your directory manages. Requires a personal API key.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The new name, unique among live teams. | |
| team_id | Yes | The team's id, from list_teams. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true, and idempotentHint=true; the description goes beyond them with the auth requirement, the directory-managed refusal case, and the blast-radius note that id-based references are unaffected. The remaining gap is that it never says what the call returns, though no output schema exists to cover that either.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with the action and followed by the consequences an agent most needs (references intact, refusal condition, auth). Nothing is redundant with the title or schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter mutation with full schema coverage and rich annotations, the description covers scope, auth, and failure mode adequately. The one omission is return behavior, which matters slightly more here because there is no output schema to defer to.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already states the name must be unique among live teams and that team_id comes from list_teams. The description adds no parameter-level detail beyond that, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Rename a team") and immediately bounds the effect: escalation paths reference teams by id, so references do not break. That is enough to distinguish it from archive_team, create_team, and get_team without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit exclusion ("Refused for a team your directory manages") and a prerequisite ("Requires a personal API key"), which tells the agent when the call will fail before it attempts it. It does not name an alternative tool, but no sibling offers a competing rename path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restore_agentRestore agentADestructiveIdempotentInspect
Restore an archived agent to active. Credentials and provisioner tokens revoked when it was archived stay revoked; its instances can be enrolled again.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_slug | Yes | The agent's slug, from list_agents. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare destructiveHint=true and idempotentHint=true, but the description adds valuable behavior beyond them: revoked credentials and provisioner tokens remain revoked, and instances can be re-enrolled. This clarifies what restore does not recover, which is important for an agent reasoning about 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is two tight sentences, with the core action front-loaded and the caveat about credentials placed immediately after. There is no redundant phrasing or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter mutation tool, the description covers purpose and key side effects, and annotations cover safety and idempotency. It does not describe the response shape, which is a minor gap in the absence of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is one parameter, agent_slug, and the schema already documents it fully with a reference to list_agents. The description adds no further parameter meaning, so the high schema coverage supports the baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: restoring an archived agent to active. It clearly distinguishes the operation from siblings like archive_agent and update_agent by naming the archived-to-active transition.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Restore an archived agent to active' gives a clear precondition and implied usage context, so an agent knows this applies to archived agents. It does not explicitly name alternatives such as update_agent or archive_agent, 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.
revoke_agent_credentialRevoke agent credentialADestructiveIdempotentInspect
Revoke one instance credential for good: the runtime holding it can no longer make requests. To pause an instance instead, disable it with update_agent_instance.
| Name | Required | Description | Default |
|---|---|---|---|
| credential_id | Yes | The credential's id, from get_agent. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is covered. The description adds genuine context beyond that: 'for good' signals permanence and 'the runtime holding it can no longer make requests' explains the concrete consequence. It stops short of stating whether the credential can be reissued, which keeps it just under a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero waste, with the permanence and effect front-loaded and the alternative redirect placed second.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter destructive tool with full annotation coverage and no output schema, the description supplies everything an agent needs: the irreversible effect and the correct routing to the pausing alternative.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single credential_id parameter is documented in the schema ('The credential's id, from get_agent'). The description adds no syntax or sourcing detail beyond what the schema already provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Revoke one instance credential') and immediately clarifies the effect on the runtime holding it. It also explicitly distinguishes itself from update_agent_instance, which pauses rather than revokes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names the alternative use case and the exact tool to reach for it ('To pause an instance instead, disable it with update_agent_instance'). This is explicit when-to-use-this vs when-to-use-an-alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revoke_provisioner_tokenRevoke provisioner tokenADestructiveIdempotentInspect
Revoke a provisioner token for good. Instances it already created keep their own credentials.
| Name | Required | Description | Default |
|---|---|---|---|
| provisioner_id | Yes | The provisioner token's id, from get_agent. |
TDQS
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 covered. The description adds genuinely new behavioral context: revocation is permanent and existing instances keep their own credentials, which clarifies blast radius in a way annotations cannot.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, with the permanence warning front-loaded and the blast-radius caveat second. Nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter destructive tool with annotations covering safety, the description supplies permanence and downstream impact, which is enough to call it correctly. It omits auth/permission requirements and what the response contains, but those are minor here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter's description already says where to get the id (from get_agent). The description adds nothing further about provisioner_id, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Revoke a provisioner token") that an agent can clearly separate from create_provisioner_token and revoke_agent_credential. It does not explicitly name sibling alternatives, but the resource is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"For good" signals that this is irreversible and should be used deliberately, which implies when to use it versus rotating or recreating. However, no explicit when/when-not guidance or alternative tool (e.g. create_provisioner_token) is named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rotate_webhook_endpoint_secretRotate webhook endpoint secretADestructiveIdempotentInspect
Replace a webhook endpoint's signing secret. The old secret stops working at once for every revision, so deliveries fail signature checks until the receiver has the new one. The answer carries the new secret exactly once: relay it to whoever operates the receiving service.
| Name | Required | Description | Default |
|---|---|---|---|
| endpoint_key | Yes | The webhook endpoint's key. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: it discloses the blast radius ('every revision'), the immediate irreversibility of the old secret, the downstream failure mode (signature check failures), and the one-time-only return of the new secret. These are exactly the facts an agent needs before invoking a destructiveHint operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each carrying a distinct and necessary fact: the action, the irreversible consequence, and the one-time secret return. Front-loaded with the verb and resource, zero filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly compensates by explaining that the response carries the new secret exactly once and that it must be relayed. Combined with the destructive/idempotent annotations, an agent has everything needed to call this safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter with 100% schema description coverage, so the schema already documents endpoint_key. The description adds no syntax, format, or lookup guidance for the key, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb and resource: 'Replace a webhook endpoint's signing secret.' An agent can immediately distinguish this from sibling mutations like save_webhook_endpoint, archive_webhook_endpoint, or test_webhook_endpoint.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the operational context clear by describing the consequence of calling it (old secret dies instantly, deliveries fail signature checks until the receiver is updated), which effectively tells the agent when this is appropriate. It does not name an alternative tool or state an explicit when-not condition, so it falls 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.
save_webhook_endpointSave webhook endpointAInspect
Create a webhook endpoint or save a new revision of one, and activate it unless activate is false. A new key answers with signing_secret exactly once: relay it to whoever operates the receiving service, because it is what verifies withHuman's signature and it cannot be read back. The URL must be public HTTPS.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Public HTTPS URL withHuman posts the signed request to. | |
| name | Yes | Display name. | |
| activate | No | Activate the new revision right away. Defaults to true. | |
| endpoint_key | Yes | Stable key a pipeline's webhook block names (config.endpoint_key). A new key creates the endpoint and mints its signing secret; an existing key gets a new revision and keeps its secret. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial information beyond the annotations: a new key returns signing_secret exactly once, that secret is unreadable afterward, and it must be relayed to the receiving service's operator. Annotations only declare the mutation safety profile, so this is genuinely new behavioral context about irreversibility and secret handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, all load-bearing: behavior first, then the secret-handling warning, then the URL constraint. No repetition of the title or the schema's display-name boilerplate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still covers the one value that matters on return (signing_secret, shown once). Combined with the create-vs-revision semantics and the activation default, 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description earns an upgrade by explaining endpoint_key outcomes (new key mints a secret, existing key creates a revision and keeps it) and by restating the HTTPS requirement on url. The activate flag's default is left to the schema, which is acceptable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a precise verb and resource and covers the dual mode ('Create a webhook endpoint or save a new revision of one'), which an agent can act on directly. Sibling differentiation against activate_webhook_endpoint_revision is only implicit (this tool activates unless told otherwise) rather than named outright.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Activate it unless activate is false' gives a clear default and the condition that overrides it, and 'The URL must be public HTTPS' is a hard precondition. It stops short of telling the agent when to prefer the standalone activate_webhook_endpoint_revision or rotate_webhook_endpoint_secret siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_agent_tool_accessSet agent tool accessADestructiveIdempotentInspect
Replace which of a gateway server's tools an agent may call, and with which scopes. Access decides what the agent sees and can call at all; the approval pipelines still decide every call it makes. The agent's next tool listing reflects the change, and calls check live access before they run.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | none (no tools), selected (exactly the tools listed) or all (every current and future tool). | |
| tools | No | Exact downstream tool names for mode selected, as list_gateway_server_tools reports them (without the slug prefix). No wildcards. | |
| scopes | No | The scopes the agent may call with; any granted scope works with any granted tool. Empty exactly when mode is none. | |
| revision | Yes | The grant's current revision from list_agent_tool_access, or 0 for an agent and server never configured. A stale revision is refused. | |
| agent_slug | Yes | The agent's slug, from list_agents. | |
| server_slug | Yes | The gateway server's slug, from list_gateway_servers. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, but the description adds real behavioral context the annotations cannot: the effect is immediate ('the agent's next tool listing reflects the change') and enforced at call time ('calls check live access before they run'), plus the crucial separation from approval policy. It does not explicitly state that previously granted tools/scopes are wiped on replace, which is the main destructive consequence an agent should be warned about.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with the action front-loaded, followed by the access-vs-approval distinction and the timing guarantee. Nothing is redundant with the title or restated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, idempotent grant-replacement tool with six required-or-optional params and no output schema, the description covers semantics, timing, and enforcement adequately. The missing piece is an explicit warning that existing grants are overwritten rather than merged, which is the most consequential behavior left to inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so mode values, tool naming, scope rules, and the revision/staleness contract are already fully documented in the schema. The description adds only the passing phrase 'with which scopes' and no additional parameter meaning, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and resource: 'Replace which of a gateway server's tools an agent may call, and with which scopes.' This cleanly separates it from the read-side sibling list_agent_tool_access and from unrelated setters like set_gateway_scope_headers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description frames the tool's role against the approval pipeline ('access decides what the agent sees... approval pipelines still decide every call'), giving clear context for when this tool matters. It stops short of explicit when-not-to-use guidance or naming the alternative used to read current grants, which is implied only via the schema's reference to list_agent_tool_access.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_gateway_scope_headersSet gateway scope headersADestructiveIdempotentInspect
Store the header set an organization-held static_headers scope calls its downstream with, replacing any stored set. Values are sealed at once and never returned by any tool or page; only the gateway reads them. Ask the person for the values rather than inventing them.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | Yes | An organization-held scope whose auth_mode is static_headers. | |
| headers | Yes | The complete header set the gateway sends the downstream server, for example {Authorization: 'Bearer ...'}. It replaces any stored set. | |
| server_slug | Yes | The server's slug, from list_gateway_servers. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint and idempotentHint, but the description adds the crucial context the agent cannot get elsewhere: values are sealed immediately, are never returned by any tool or page, and only the gateway reads them. It also discloses that the write replaces the entire stored set, which matches the idempotent hint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with the write/replace semantics front-loaded, then the secrecy property, then the practical sourcing rule. No sentence is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the destructive-write semantics, the irreversibility of reading values back, and where the values must come from — enough for a correct invocation without an output schema. It stops short of noting permission requirements or failure behavior for a non-static_headers scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, and the description earns an extra point by clarifying that the headers object is a complete replacement set and that submitted values are write-only — meaning the agent must capture them before submitting. It doesn't add format or size constraints beyond the schema example.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: storing a header set for an organization-held static_headers scope, replacing any stored set. The static_headers qualifier distinguishes it from set_gateway_scope_oauth_client, though that sibling is never named outright.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the auth_mode constraint (only static_headers scopes) and the instruction to ask the person for values rather than inventing them. However, it never explicitly says when to choose this over set_gateway_scope_oauth_client or what to do if the scope has a different auth_mode.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_gateway_scope_oauth_clientSet gateway scope oauth clientADestructiveIdempotentInspect
Store the OAuth client every member signs in with on a member-held oauth scope, for an authorization server that offers no dynamic client registration. The secret is sealed and never returned. Replacing the client keeps members' tokens, though a token issued to the old client may need its member to reconnect.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | Yes | A member-held scope whose auth_mode is oauth. | |
| client_id | Yes | The OAuth client id registered with the downstream server's authorization server. | |
| server_slug | Yes | The server's slug, from list_gateway_servers. | |
| client_secret | No | The client secret, for a confidential client. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true. The description adds non-obvious behavior: the secret is sealed and never returned, and replacing the client preserves members' tokens while possibly requiring reconnection for tokens issued to the old client.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the purpose and followed by the most important behavioral caveats. Every sentence adds useful information without repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given full schema coverage, destructive/idempotent annotations, and no output schema, the description supplies the key missing context: secret handling and token reconnection behavior. No essential invocation details appear to be missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters are already documented in the schema. The description does not add syntax, format, or conditional meaning beyond the schema's parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: storing the OAuth client used by members on a member-held OAuth scope. The added condition about authorization servers without dynamic client registration makes the purpose distinguishable from generic scope configuration tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear contextual guidance: use this for an authorization server that offers no dynamic client registration. It does not name alternatives such as set_gateway_scope_headers or disconnect_gateway_scope, so it falls short of explicit when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_team_membersSet team membersADestructiveIdempotentInspect
Replace a team's manual member list. Requires a personal API key; organization keys cannot manage teams.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Also remove members the team's active escalation policy still names. Without it the call is refused and lists them. | |
| team_id | Yes | The team's id, from list_teams. | |
| membership_ids | Yes | The complete manual member list as membership ids from list_members; it replaces the current one, so include members to keep. Members a directory sync placed on the team are unaffected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare destructiveHint=true and idempotentHint=true, so the description is not responsible for the core safety profile. It adds useful behavioral context by stating the personal-API-key requirement and the organization-key restriction. It does not describe the escalation-policy refusal behavior, but that detail is covered in the parameter schema rather than needed here.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two tightly written sentences with no wasted words. The core operation is front-loaded, followed by the important authentication restriction. It is appropriately sized for a tool whose parameters are fully documented in the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the destructive nature of the operation, rich annotations, full schema description coverage, and no output schema, the description is largely complete. It clearly states the replacement behavior and the key authentication constraint. It could add one line about the escalation-policy refusal covered by the force parameter, but that is already fully explained in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters are already documented in the input schema, including the meaning of force and membership_ids. The description adds only the high-level notion of replacing the manual list and does not add syntax or edge-case guidance beyond the schema. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: 'Replace a team's manual member list.' This clearly distinguishes the operation as a bulk replacement of manual team membership rather than an individual member update. It does not explicitly name or differentiate from close siblings such as update_member or remove_member, so it falls short of the top score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides one important usage constraint: a personal API key is required, and organization keys cannot manage teams. However, it does not explain when to choose this bulk-replace tool over alternatives like update_member or remove_member, leaving the agent to infer that from the operation name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
test_webhook_endpointTest webhook endpointAInspect
Send one signed test delivery (type webhook_endpoint.test, flagged as a preview) to a revision's URL and report what came back, waiting up to 10 seconds. It checks the receiver's signature verification too. The test is recorded in the audit log.
| Name | Required | Description | Default |
|---|---|---|---|
| revision | No | The revision whose URL to test, from list_webhook_endpoint_revisions. Omit to test the active revision; a draft can be tested before it is activated. | |
| endpoint_key | Yes | The webhook endpoint's key. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-readOnly, non-idempotent, openWorld, non-destructive, so the bar is lower; the description adds genuine value: the 10-second timeout, the fact that a signed preview test is sent, that receiver signature verification is exercised, and that the action is audit-logged. It does not spell out error/return shapes, but with no output schema that is a minor gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each carrying distinct information, with the action and its key constraint (10-second wait) front-loaded. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description partially compensates by stating what is reported back and the timeout, plus audit logging. It leaves the exact response shape and failure behavior implicit, a small gap for a network-touching test tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are documented in the schema, including the useful 'omit to test active revision; drafts testable before activation' note. The description itself adds no parameter-level syntax or format detail beyond referencing 'a revision's URL', so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Send one signed test delivery) and resource (webhook endpoint revision URL), plus concrete artifacts: the delivery type 'webhook_endpoint.test', the preview flag, and the 10-second wait. Clearly distinguishable from siblings such as get_webhook_endpoint or list_webhook_endpoint_revisions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clear context is implied (verifying a receiver accepts a signed delivery, including signature verification), but the description never states when to choose this versus alternatives like activate_webhook_endpoint_revision, nor names any exclusion. Usage is inferable rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_agentUpdate agentADestructiveIdempotentInspect
Rename an agent or switch it between active and disabled. Disabling refuses every instance's credentials until the agent is active again, without revoking them. The slug never changes.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | A new display name, unique among live agents. Omit to keep the current one. | |
| status | No | active or disabled. Disabling keeps every credential but refuses them all until the agent is active again. Omit to keep the current status. | |
| agent_slug | Yes | The agent's slug, from list_agents. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations flag destructiveHint=true, but the description explains the non-obvious sense in which it is destructive: disabling refuses every instance's credentials without revoking them, and the state persists until re-activated. 'The slug never changes' further constrains the mutation. This is exactly the context annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the operations, then the credential nuance, then the immutability constraint. No filler and nothing buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter mutation tool with full schema coverage and no output schema, the description covers what changes and the key side effect. It does not mention failure modes (e.g., duplicate display name) or permission requirements, though the name-uniqueness rule is already in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents name, status, and agent_slug, making the baseline 3. The description adds one real semantic point beyond the schema: the slug is immutable, so agent_slug is purely an identifier rather than something rename touches.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States specific verbs and resource: rename an agent or switch it between active and disabled. This sharply narrows what the generically named update_agent does, distinguishing it from siblings like rename_team, archive_agent, restore_agent, and update_agent_instance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The two supported operations define the usage context clearly, so an agent knows exactly which calls this tool covers. It does not name alternatives (e.g., archive_agent for removal) or state when-not to use it, leaving a small inference gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_agent_instanceUpdate agent instanceADestructiveIdempotentInspect
Rename one instance of an agent or switch it between active and disabled. Disabling refuses the instance's credentials until it is active again, without revoking them.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | A new name, unique within the agent. Requests already made keep the name they were made with. Omit to keep the current one. | |
| status | No | active or disabled. Disabling refuses the instance's credentials until it is active again. Omit to keep the current status. | |
| instance_id | Yes | The instance's id, from get_agent. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description explains the effect of disabling: credentials are refused but not revoked until reactivation. That is real context an agent cannot derive from readOnlyHint=false or destructiveHint=true, and it usefully signals the operation is reversible. It stops short of noting that renaming does not retroactively affect already-made requests (that detail lives only in the schema).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the operation and followed by the one non-obvious behavioral consequence. No filler and nothing repeated verbatim from the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter mutation with full schema coverage and annotations declaring idempotency and destructiveness, the description covers what the tool does and the key side effect of disabling. Only minor gaps remain, such as what happens on a name collision, which the schema handles.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both optional parameters (name, status) are already fully documented with omit-to-keep semantics. The description mirrors 'rename' and 'active/disabled' without adding syntax or edge-case meaning, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb pair and resource scope: it renames one instance of an agent or toggles its active/disabled status. An agent can distinguish this from agent-level operations, though it never names its closest siblings (update_agent, create_agent_instance, revoke_agent_credential) to make the boundary explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The two use cases (rename, toggle status) are stated directly, so the agent can infer when to call it. However, there is no guidance on when to prefer this over revoke_agent_credential or update_agent, and no exclusions — the routing is implied rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_escalation_pathUpdate escalation pathAInspect
Save a new revision of an existing escalation path (the whole document again, not a diff) and activate it unless activate is false. Pipelines that name the key pick up the active revision for new requests; requests already routed keep the revision they were pinned to.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Display name people see, for example Payments review. | |
| nodes | Yes | The path's nodes in order: level nodes name targets and how long to wait (escalate_after) before the next level, if_else nodes branch on conditions, defer nodes wait for working hours. Every node needs a UUID id. See read_reference topic escalation_paths. | |
| repeat | No | What to do when every level has been paged and nobody answered: {times: 1..9, after: '15m'} walks the levels again. | |
| activate | No | Activate the new revision right away. Defaults to true. A path with no active revision cannot be named by an active pipeline. | |
| path_key | Yes | Stable key, lowercase letters, digits, dots, underscores or dashes (for example payments-review). It names the path from pipeline blocks and is never reused, even after archiving. | |
| working_hours | No | Named working-hours sets that defer nodes and working_hours conditions refer to by id: {id, timezone (IANA), intervals: [{weekdays: [mon, ...], start: '09:00', end: '17:30'}]}. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real behavior beyond the annotations: full-document replacement rather than a diff, activation defaults to true, in-flight requests stay pinned to their old revision, and an unactivated path cannot be referenced by an active pipeline. These are exactly the side effects an agent needs before mutating.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the mutation and its default behavior, then the downstream effect on pipelines and pinned requests. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the versioning model and activation side effects well for a nested-object tool with no output schema. Return payload and error cases are left implicit, but the schema and read_reference pointer cover input detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all six parameters are already documented, including activate's default and path_key's immutability. The description only reinforces the activate semantics and does not add syntax or constraints the schema lacks.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Save a new revision), resource (existing escalation path), and scope (whole document again, not a diff), plus bundled activation. That phrasing separates it from create_escalation_path and from activating a revision via a separate tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Conveys consequences ('pipelines that name the key pick up the active revision') but never says explicitly when to choose this over create_escalation_path or activate_escalation_path_revision, nor any prerequisites. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_gateway_serverUpdate gateway serverBInspect
Save a new revision of a gateway server (name, URL or tunnel, and the whole scope list again) and activate it unless activate is false. Activating retires every scope the revision leaves out and drops its stored credentials; a retired scope name is refused.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | The downstream server's Streamable HTTP endpoint. Give exactly one of url and tunnel_id. | |
| name | Yes | Display name. | |
| scopes | Yes | The server's scopes (named credentials), 1 to 20, in the order agents see them. The whole list again on every revision: a scope left out is retired when the revision is activated and its stored credentials are dropped. | |
| activate | No | Activate the new revision right away so the gateway serves it from its next configuration poll. Defaults to true. | |
| tunnel_id | No | The id of the tunnel the downstream server is reached through (from list_gateway_tunnels), for a server inside your own network. Give exactly one of url and tunnel_id. | |
| server_slug | Yes | The server's slug: lowercase letters, digits and dashes. Agents see its tools as <slug>__<tool>. A new slug registers the server and is taken for good, archived servers included. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable behavioral detail: activating a revision retires scopes left out, drops stored credentials, and refuses retired scope names. But annotations declare destructiveHint=false while the description clearly describes destructive consequences, so this is an annotation contradiction and must be scored 1.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences, front-loaded with the core action and followed by the critical activation side effect. Every sentence earns its place and no unnecessary background is included.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with rich schema coverage and no output schema, the description covers the key behavioral consequences of saving and activating a revision. It is not fully complete because it omits explicit routing against sibling tools, but the core operational context is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all six parameters in detail. The description reinforces the important 'whole scope list again' requirement, but adds little beyond what the schema provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: saving a new revision of a gateway server, including name, URL or tunnel, and the full scope list. It is clear what the tool does, but it does not explicitly name the sibling tools it differs from, such as create_gateway_server or activate_gateway_server_revision.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies usage by saying the revision is activated unless activate is false, which gives some when-to-use context. However, it does not state when to use this tool instead of create_gateway_server or activate_gateway_server_revision, so the agent must infer the boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_memberUpdate memberADestructiveIdempotentInspect
Suspend a member (signs them out everywhere and refuses their sessions, API keys and agents) or reactivate a suspended one. Refused for your own membership, the last active owner, and members your directory manages. Requires a personal API key.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Suspend even while an active escalation path names the member. Without it the call is refused and lists the paths. | |
| status | Yes | active to reactivate a suspended member, or suspended to sign them out everywhere and refuse their sessions, keys and agents until reactivated. | |
| membership_id | Yes | The membership id, from list_members. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already flag destructiveHint=true and idempotentHint=true, yet the description adds real behavior beyond them: the revocation scope of a suspend (sessions, API keys, agents), the refusal conditions that will return errors, and a required authentication mode (personal API key). It also implies that reactivation reverses a suspend, so the agent understands this is a soft, reversible operation, unlike remove_member.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action and its effects, then the refusals and the auth prerequisite. Every clause carries information an agent needs, and nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a destructive mutation with no output schema, and the description covers everything that matters: scope of the effect, reversibility, refusal conditions, and the authentication requirement. The remaining parameter-level detail (force) is fully covered in the schema, so nothing an agent needs before calling is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: status, membership_id and force are all documented in the schema, including what force does. The description echoes the status semantics (suspend vs reactivate) but adds no detail about the escalation-path override, so it essentially restates what the schema already provides. Baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a precise verb and resource pair (suspend/reactivate a member) and spells out the concrete effect: signs them out everywhere and refuses sessions, API keys and agents. That is clearly distinguishable from sibling mutations like remove_member or set_team_members, which an agent could otherwise confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives the trigger conditions (suspend a member, or reactivate a suspended one) and states three exclusion cases: your own membership, the last active owner, and directory-managed members. It does not name the delete-forever alternative (remove_member), so the agent still has to infer that this is the reversible option, but the call context is otherwise clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_pipelineUpdate pipelineAInspect
Save a new revision of a pipeline (the entry pipeline, or one a delegate hands requests to) and activate it (unless activate is false). Blocks run in order and the first to decide wins: outcome blocks decide every request that reaches them, webhook blocks ask a service of yours (and a kind this deployment adds may ask a model), branch blocks run their own blocks only for requests their condition matches (so "if this, then that" is a branch holding an outcome block), and delegate blocks hand matching requests to another pipeline by key; a request that enters a branch or a delegated pipeline is decided inside it or goes to a human, and nothing after the block runs for it. A request no block decides falls through to human review, so end with an outcome block whose outcome is approve when the rest should be automatic. Every escalation path a block or the default names, and every pipeline a delegate names, must exist; activation additionally requires each to be active and refuses a delegation cycle. Call read_reference (pipeline_blocks) first.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | A new display name for the pipeline. Omit to keep the current one. | |
| blocks | Yes | The complete ordered block list for the new revision (it replaces the current blocks, so include the ones to keep). Each block: id (key-shaped, unique across the whole pipeline including blocks inside branches), name, type (outcome | branch | delegate | webhook, or a kind this deployment adds; see read_reference), enabled: true, timeout (for example 50ms), max_attempts (1 for outcome, branch and delegate), and config for its type; a branch holds its own ordered blocks in config.blocks, a delegate names the pipeline it hands matching requests to in config.pipeline_key. See read_reference topic pipeline_blocks. An empty list sends every request to human review. | |
| activate | No | Activate the new revision right away so new requests use it. Defaults to true. False saves a draft revision you can activate later with activate_pipeline_revision. | |
| pipeline_key | Yes | The pipeline to replace ('entry' for the entry pipeline). | |
| default_ask_agent_owner | No | Send those requests to the person who owns the agent instance that made them instead, with default_escalation_path, if set, as the fallback for requests from agents without an owner (service agents); without it they go to any authorized reviewer. | |
| default_escalation_path | No | Escalation path key that takes human exits which name no path of their own, and requests the pipeline hands to a person by running out of blocks. Omit to inherit the defaults of the pipelines that delegate into this one, or, for the entry pipeline, to leave them to any authorized reviewer. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses rich behavior beyond the annotations: blocks run in order, first-to-decide wins, branch/delegate requests are decided inside, undecided requests fall through to human review, referenced escalation paths and pipelines must exist, activation requires them to be active, and delegation cycles are refused. Nothing contradicts the non-destructive annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The main action is front-loaded, but the description then contains a long, run-on explanation of block types that overlaps with what read_reference and the blocks schema already cover. Much of it is useful context, but it is not tightly structured or economical.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex, six-parameter mutation with no output schema, the description covers activation semantics, escalation defaults, validation constraints, and block behavior thoroughly. It could say more about the returned value or failure modes, but the schema coverage is high and the core operational picture is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains every parameter, including the detailed blocks structure and activate/default_escalation_path behavior. The description adds block-semantics context but little parameter-specific detail beyond what the schema provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Save a new revision') and resource ('a pipeline'), and scopes it to either the entry pipeline or a delegate target. An agent can tell this is an update/save operation rather than a create or read operation without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear operational guidance: call read_reference (pipeline_blocks) first, and use activate_pipeline_revision to activate a saved draft later. It does not explicitly distinguish itself from create_pipeline, but its context is otherwise well framed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_team_escalation_policyUpdate team escalation policyAInspect
Save a new revision of a team's escalation policy (the whole document again, not a diff) and activate it unless activate is false. The policy orders how members are paged when a path level targets the team: levels name current members as user targets, or broadcast for everyone; every member a request reaches may still decide it. Call read_reference (escalation_paths) first.
| Name | Required | Description | Default |
|---|---|---|---|
| nodes | Yes | The policy's nodes in order, in the escalation path grammar, except that level targets are user targets naming current team members (membership ids from get_team) or one broadcast target ({type: broadcast}, no id) for every member. Every node needs a UUID id. See read_reference topic escalation_paths. | |
| repeat | No | What to do when every level has been paged and nobody answered: {times: 1..9, after: '15m'} walks the levels again. | |
| team_id | Yes | The team's id, from list_teams. | |
| activate | No | Activate the new revision right away. Defaults to true. | |
| working_hours | No | Named working-hours sets that defer nodes and working_hours conditions refer to by id, as an escalation path takes them. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare the generic non-idempotent/non-destructive write profile; the description adds real value by disclosing that every save creates a new revision rather than patching in place, that the entire document must be resupplied, and that activation happens by default unless activate is false. It does not say what happens to the previously active revision or what an invalid node list does, which is the main remaining gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the write semantics and full-document requirement before the domain explanation; each sentence carries information. Slightly dense and mixes invocation guidance into the middle of the policy-model explanation, which makes it marginally harder to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter, nested-object mutation with no output schema, the description covers the essential semantics: whole-document replacement, default activation, and the escalation-path structure that nodes must follow. What is missing is the response shape (e.g., whether the new revision id is returned) and whether the prior revision remains retrievable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already carries the bulk of parameter meaning. The description adds domain framing for nodes ('levels name current members as user targets, or broadcast') and the activate default, but repeat, working_hours and team_id get no additional explanation beyond the schema, so the baseline 3 holds.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Save a new revision'), a specific resource ('team's escalation policy'), and a crucial scope detail ('the whole document again, not a diff'), plus the default activation side effect. This distinguishes it from siblings like activate_team_escalation_policy_revision and update_escalation_path without requiring the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete prerequisite ('Call read_reference (escalation_paths) first') and explains the activate-flag behavior, which tells the agent how to control the outcome. However, it never contrasts itself with update_escalation_path, create_escalation_path, or activate_team_escalation_policy_revision, so sibling selection still requires inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Publisher details
- Operator
- withHuman · Publisher source
- Operator website
- https://withhuman.ai · Publisher source
- Vendor relationship
- First-party · Publisher source
- Documentation
- https://withhuman.ai/docs/web-app/mcp-server · Publisher source
- Trust center
- https://withhuman.ai/security · Publisher source
- Restrictions
- There are paid and free plans for the hosted service, free has no restrictions on the mcp server. Open source is available too. · Publisher source
Related MCP Connectors
Give any AI agent a way to ask a person — for approval, a decision, an answer or a review.
Add human approval to AI agent workflows through cQnce authorization tools.
Runtime permission, approval, and audit layer for AI agent tool execution.
Human approvals, notifications, inbound webhooks, wake-ups for headless agents. Free trial: /try
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to request human approvals with customizable forms, webhooks, and team features.51 npmMIT
- AlicenseAqualityDmaintenanceHuman-in-the-loop approval gate for AI agents. Your agent calls submit_approval before any irreversible action; a human reviews on a branded page; a signed webhook fires back with the decision.11MIT
- AlicenseNot gradedqualityDmaintenancePauses AI agent execution and routes approval requests to humans via Slack or email, with cryptographically signed proof of the human's decision.17 npmMIT
- AlicenseNot gradedqualityCmaintenanceProvides a human-in-the-loop approval gateway for AI agents, enforcing policies and audit logging for MCP-compatible tool calls.Apache 2.0
Glama MCP Gateway
Add one secure layer between your agents and this server.