Skip to main content
Glama
dofunc
by dofunc

approve

Resolve pending permission requests for a delegated coding-agent turn by allowing once or choosing an option ID, then wait for the result or a follow-up question.

Instructions

Allow this one tool call (allow_once), or pick option_id explicitly. Blocks until the turn is done, needs an approval or asks a question; the server sets no time limit. If your client times out, the turn keeps running and the connection stays: call status for the state and output for the reply instead of sending the task again. Returns "approval_needed" with an approval to answer via approve / allow / reject, or "question_needed" with a question to answer via answer.

Input Schema

NameRequiredDescriptionDefault
waitNoWait for the result (default true). false returns right after sending.
sessionYesSession id returned by open
option_idNo
approval_idYesapproval_id from the approval_needed result

Output Schema

NameRequiredDescriptionDefault
outputNo
statusYes
outcomeNo
turn_idNo
approvalNo
questionNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.2.1

TDQS

A4.1/5.0
Behavior5/5

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

With no annotations, the description carries the full behavioral burden and does so well: it discloses blocking until the turn finishes, no server-side time limit, and that timed-out turns continue running rather than failing. It also describes the two return states and the follow-up actions for each.

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

Conciseness4/5

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

The description is front-loaded with the core action and then adds blocking/timeout behavior, which are operationally important. It is dense but every sentence contributes useful information, with no obvious padding.

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?

Because an output schema exists, the description need not explain return values exhaustively, but it still covers the important states. The main remaining gaps are the semantics of option_id and the distinction between approve / allow / reject. For a blocking approval tool with no annotations, it is otherwise complete enough for correct invocation.

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

Parameters3/5

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

Schema coverage is 75%, so the schema already documents wait, session, and approval_id. The description mentions option_id explicitly but does not explain its allowed values or where it comes from. The wait parameter is not discussed in the description at all.

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

Purpose4/5

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

The description states a specific action: allow a pending tool call or explicitly choose an option. It also names the related result states and sibling actions (approve / allow / reject / answer), making the tool's role reasonably clear. It stops short of sharply distinguishing approve from its siblings allow and reject.

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

Usage Guidelines4/5

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

The description gives clear context: use it when a result is "approval_needed" or "question_needed". It also names alternatives for the timeout case (status and output instead of resending). It does not explain when to choose approve versus allow or reject.

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