Ask the user for approval
ask_humanSend 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
| Name | Required | Description | Default |
|---|---|---|---|
| context | No | Everything 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. | |
| options | No | 2 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"] | |
| question | Yes | The 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_name | No | Who is asking, shown to the human so they know which agent or task it is. Example: "Claude Code · billing" | |
| wait_seconds | No | How long this call waits for the answer before returning "pending" (0 to 45, default 45). Keep the default. | |
| expires_in_minutes | No | How 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. |