Make your agent wait for you
paperplane_ask sends a question with buttons to your phone and blocks your agent until you tap one, or it times out.
An agent that can act without asking is fast and occasionally wrong in ways you find out about later. paperplane_ask is the other option: the agent sends a question, your phone shows buttons, and the tool call doesn’t return until you tap one — or the timeout fires.
The call
{
"title": "Deploy staging to production?",
"message": "12 files changed, all checks green.",
"options": [
{ "id": "approve", "label": "Approve", "tone": "positive" },
{ "id": "deny", "label": "Deny", "tone": "destructive" }
],
"timeoutSec": 300
}
Omit options and you get a default Approve/Deny pair. timeoutSec runs 5 seconds to 24 hours; without defaultOptionId, an expired ask resolves as timeout with no option chosen — treat that as a denial, not a green light.
What happens while it waits
The agent polls in the background — starting at 2 seconds, backing off ×1.5, capped at 15 seconds — so a fast answer costs almost nothing and a slow one doesn’t hammer the server. You see a normal notification with buttons; tapping one ends the poll on the next check.
What comes back
{
"status": "answered",
"optionId": "approve",
"optionLabel": "Approve",
"answeredBy": "<username>",
"elapsedSec": 41
}
answeredBy is who tapped it, which matters the moment more than one person can answer a channel’s asks.
See scoped agent tokens for why the agent can’t answer its own question, and tool-call timeout recovery for what to do if your MCP client gives up before the person does.