Which tool?
ask_conversation is easy to confuse with its two siblings. This decision diagram picks the right one.
Quick Start
1
Ask One Question
2
Adjust the Timeout for Slower Channels
timeout_s for humans who may be away; the hard cap is 3600 seconds.3
Handle the Four Outcomes in Instructions
How It Works
ask_conversation sends the prompt through the same delivery stack send_message uses, then waits for the next reply that correlates back from the target — returning it as a JSON string.
The reply is matched back to the request via the existing correlation-id infrastructure.
Outcomes
Every call resolves to exactly one of four typed statuses, so a turn never hangs silently.Targets
Targets use the same forms assend_message — see Send Message → Targets.
Timeouts (bounded wait)
timeout_s sets the maximum seconds the tool waits for a reply, and the value is normalized so a turn can never wait forever.
The target is model-controlled, so the tool refuses to let a prompt-injected agent make a turn wait indefinitely — this clamp is a security property, not a suggestion.
When It’s Available
ask_conversation needs a running bot/gateway to reach another chat and correlate its reply.
When no gateway is active the tool returns:
User Interaction Flow
A Telegram user asks the deploy agent to ship build 42. Before running the deploy, the agent callsask_conversation("slack:#ops", "OK to deploy build 42?"). #ops replies “green — go ahead” in Slack. The agent proceeds with the deploy and reports success back to the user on Telegram.
Configuration Reference
ask_conversation takes three arguments:
Returns: a JSON string of the reply — one of the four statuses above.
Common Patterns
Human-in-the-loop approval on another platform
Cross-agent handoff
Graceful fallback on non-reply outcomes
Best Practices
Prefer ask_conversation over polling
Prefer ask_conversation over polling
The wait is bounded and correlated — you get exactly one typed outcome. Don’t loop
send_message and re-check for a reply; ask_conversation handles the send-and-await for you.Right-size timeout_s
Right-size timeout_s
Keep it short for humans in a live channel, longer for on-call escalations. The hard cap is 3600s — anything higher is clamped.
Handle all four outcomes in agent instructions
Handle all four outcomes in agent instructions
Include a line like “If ask_conversation returns status ≠ ‘reply’, fall back to X” so
reply, timeout, undelivered, and no_route are all covered.Restrict targets with SendPolicy
Restrict targets with SendPolicy
Use
SendPolicy to limit which channels an agent may ask. A denied policy returns undelivered before the message goes out, so the target chat is never contacted.Related
Send Message Tool
Fire-and-deliver sibling — message a target without waiting for a reply
Send Policy
Restrict which targets ask_conversation may reach
Clarify Tool
Ask the current user mid-turn (not another chat)
Messaging Bots
Set up the gateway that makes this tool available
Channels Gateway
Connect Telegram, Slack, Discord, and WhatsApp
Gateway
How request/reply is bound to a running gateway

