Skip to main content
Glama

wait_for_approval

Wait for a human approval decision with a bounded timeout. Returns pending status if time expires; proceed only when approved.

Instructions

Wait for a human decision, bounded to 120 seconds.

The timeout is clamped to [1, 120] and the poll interval to [1, 30] so no MCP host is left hanging. If the request is still pending when the timeout lapses, the result carries status: "pending" and timed_out: true; call get_approval or wait_for_approval again to keep waiting. Proceed only when the status is approved — denied, expired, and pending all mean stop.

Input Schema

NameRequiredDescriptionDefault
approval_idYes
timeout_secondsNo
poll_interval_secondsNo

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.2.0

TDQS

A4.3/5.0
Behavior4/5

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

No annotations, so the description carries the load and does it well: it discloses the timeout clamp `[1, 120]`, the poll clamp `[1, 30]`, that the call blocks, and the exact `status: "pending" / timed_out: true` outcome on lapse. What it omits is the failure mode when `approval_id` is invalid or expired-upstream, and whether the blocking call has any side effect on the approval record.

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

Conciseness4/5

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

Front-loaded with the verb and the hard bound, and every clause carries information (clamps, pending semantics, stop conditions). Slightly padded by the line-broken formatting and the redundant re-statement that pending means stop after already saying `status: "pending"`.

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

Completeness4/5

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

With an output schema present the description needn't enumerate return fields, yet it still explains the two fields that matter for loop control (`status`, `timed_out`) and the stop rule. The gap is the provenance and validity of the required `approval_id`, which an agent must supply correctly to call this at all.

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

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate, and it does for two of three params by giving the legal ranges for `timeout_seconds` and `poll_interval_seconds` (bounds the schema's bare numeric types and defaults do not convey). `approval_id` is never explained — notably where it comes from, presumably `request_approval` — which keeps this from a 5.

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

Purpose5/5

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

Opens with a specific verb and resource ('Wait for a human decision') plus a hard scope bound ('bounded to 120 seconds'). An agent can distinguish this blocking wait from the non-blocking sibling `get_approval` because the description explicitly frames re-calls to either as the continuation strategy.

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

Usage Guidelines4/5

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

Gives explicit decision rules: 'Proceed only when the status is `approved` — denied, expired, and pending all mean stop,' which is a clear when-not. It names `get_approval` and `wait_for_approval` as follow-up options but never states the condition that should push an agent to the polling sibling instead of this blocking call, so the alternative selection is left partly implicit.

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