Skip to main content
Glama

Ask the user for approval

ask_human

Send a question to the user's phone and return their answer. It reaches them in Telegram, or by email (WhatsApp or Signal when connected), with one button per option. Use it when the user wants to approve or decide something outside the conversation, for example before you pay, send a message or an email on their behalf, delete, publish or sign up for something, or when they ask you to check with them through Aval or on their phone. Not for things the user already approved in the conversation, or for questions you can answer yourself. Ask one decision per call. Write question in the user's language so that it makes sense on its own, give up to 6 short options (Yes / No when left out), and put the details they need in context. The call waits up to 45 seconds. Status "answered" comes with answer (the chosen option), answer_index and an optional comment from the user. Status "pending" comes with a question_id: call wait_for_answer until the status changes, and wait for the answer before carrying out the action. Status "expired" means no approval. Errors: "subscription_required" (the user can connect Telegram or subscribe), "rate_limited" (more than 6 questions a minute).

Input Schema

NameRequiredDescriptionDefault
contextNoEverything the human needs to decide, plain text, 2000 characters max: amounts, recipients, dates, the exact text you will send, links to check, what happens with each option. Shown under the question.
optionsNo2 to 6 distinct answer buttons, 40 characters max each, in the human's language, the most likely first. Make each one an action you know how to carry out. Leave it out for Yes / No. Example: ["Pay", "Wait until Monday", "Don't pay"]
questionYesThe question, in the human's language, at most 300 characters, understandable without the conversation: say what you will do and to whom. Example: "Pay the OVH invoice of €42.90 now?"
agent_nameNoWho is asking, shown to the human so they know which agent or task it is. Example: "Claude Code · billing"
wait_secondsNoHow long this call waits for the answer before returning "pending" (0 to 45, default 45). Keep the default.
expires_in_minutesNoHow long the human can answer, in minutes (1 to 10080, default 60). After that the question expires, which means no approval. Give more time when nothing is urgent.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations are sparse (readOnlyHint=false, openWorldHint=true, idempotentHint=false, destructiveHint=false), so the description carries real weight and does: it discloses the 45-second wait, the three terminal statuses and their meanings ('expired' means no approval), the warning to wait before acting, and two named error conditions including the 6-questions-per-minute rate limit. None of this contradicts the annotations — the tool itself creates a question rather than destroying anything.

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?

It is one dense block of prose, but nearly every sentence earns its place and it is front-loaded with the core action before moving to routing, constraints, and result shapes. Some parameter guidance overlaps the schema text verbatim in spirit, which keeps it from a 5 on efficiency.

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

Completeness5/5

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

There is no output schema, so the description must explain return values — and it does, enumerating answered/pending/expired, the fields that accompany each (answer, answer_index, comment, question_id), and the required follow-up call. Errors and rate limits are also covered, which is more than sufficient for a 6-parameter tool.

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

Parameters4/5

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

Schema coverage is 100% and the parameter descriptions are already detailed, so the baseline is 3; the description adds guidance on intent rather than restating bounds — write `question` in the user's language so it stands alone, default Yes/No when options are omitted, and put decision details in `context`. 'Ask one decision per call' adds a constraint not expressed in the schema, though a fair amount of the parameter advice duplicates what the schema already says.

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

Purpose5/5

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

The description opens with a specific verb and resource — 'Send a question to the user's phone and return their answer' — and names the delivery channels (Telegram, email, WhatsApp/Signal). It also distinguishes itself from the sibling wait_for_answer by explaining the 45-second wait and the pending handoff, so an agent can route correctly 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.

Usage Guidelines5/5

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

It gives explicit when-to-use triggers (before paying, sending a message or email, deleting, publishing, signing up, or when the user asks to be checked with via Aval), explicit when-not conditions (already approved in conversation, or questions the agent can answer itself), and the follow-up path for pending results. It even constrains granularity: 'Ask one decision per call.'

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources