When an agent calls a tool, you can control what happens next: should the agent speak immediately, stay silent and listen, or speak only in specific situations. This helps you avoid awkward “double talk” around tool calls and makes multi-step flows feel natural.
Why post-tool behavior matters
By default, agents speak immediately after a tool call returns. This is usually ideal for “lookup” tools (pricing, order status, customer details) because the agent can immediately respond using the retrieved data.
For other tool types—especially “save” or “side-effect” actions (store notes, log progress, write to a CRM)—speaking both before and after the tool can feel repetitive. In those cases, you may want the agent to speak either before or after the tool call, but not both.
Agent reaction modes
FlowbotAI supports three reaction modes that determine what the agent does immediately after the tool completes:
Reaction | What the agent does | Best for |
Speaks | The agent speaks immediately after the tool returns. | Information retrieval and responses that should be voiced right away. |
Listens | The agent stays silent and listens for user input. | Background actions where the agent already spoke before the tool, or when you want the caller to respond next. |
Speaks-Once | The agent speaks only if it did not speak immediately before the tool call. | Preventing the agent from repeating itself on both sides of a tool call. |
Where you set the reaction
You can control agent reactions in three places. Use whichever approach best matches your architecture:
- Tool default: set a default reaction directly on the tool definition so every call behaves consistently.
- HTTP tool override: return an HTTP header from your tool endpoint to set the reaction for that specific tool invocation.
- Client/data tool override: include an agent_reaction field in the tool result message for that invocation. Coming Soon!
Option A: Set a default on the tool
If a tool is always “lookup-like” (or always “background-like”), assign a default reaction at the tool level. Then you only override it on the handful of cases where the behavior should differ.
Option B: Override for HTTP tools - Coming Soon!
For HTTP-based tools, you can override the reaction by returning a response header named X-FlowbotAI-Agent-Reaction with one of these values: speaks, listens, or speaks-once.

// Example: Node/Express HTTP tool endpoint that asks the agent to listen after completion
app.post('/tool/saveProgress', (req, res) => {
// ...persist data...
// Tell the runtime what the agent should do next
res.set('X-FlowbotAI-Agent-Reaction', 'listens');
return res.status(200).json({
result: "Progress saved successfully."
});
});

Tip: Use listens for “save” tools when the agent already said something like “Got it — saving that now.” This prevents a redundant follow-up line after the tool completes.
Option C: Override for client/data tools - Coming Soon!
If your tool runs client-side (or over a data connection), include agent_reaction in the tool result message. This sets the reaction for that single tool call.

// Example: Client tool result message that prevents double-talking around the tool call
{
"responseType": "tool-response",
"result": "Saved the caller's preferences.",
"agent_reaction": "speaks-once"
}
Common patterns that sound great in production
Lookup tool: speak immediately
- Set reaction to speaks (default).
- Use when the tool returns information the agent should read back right away.
Side-effect tool: speak before, then listen
- Agent says: “Perfect—saving that now.”
- Tool runs.
- Set reaction to listens so the caller can continue without the agent adding an extra line.
Prevent repetition: speaks-once
- Use speaks-once when the agent might speak both right before and right after the tool call.
- This is especially helpful in multi-step forms where the agent confirms an input, calls a tool, then should move on cleanly.
Quick checklist
- Decide if the tool is primarily a lookup or a side-effect action.
- Choose a default reaction (speaks, listens, or speaks-once).
- If behavior varies by situation, override per invocation (HTTP header or tool result field).
- Test your flow by simulating “speak before tool” and “silent before tool” cases to ensure speaks-once does what you expect.
Related Articles
Agent Prompting 101
Why prompts matter in AI Agents Prompting is the primary controller for how a voice agent behaves. It defines the agent’s role, tone, boundaries, and how it handles real-world situations like confusion, edge cases, and tool usage. When you’re aiming ...
FlowbotAI Tools Overview
What tools unlock in FlowbotAI Tools are the “action layer” for FlowbotAI voice agents. They let an agent do more than talk — it can look things up, update systems, and trigger workflows while keeping the conversation natural and on-track. In plain ...
Explore Built-in Tools
What “built-in tools” mean in FlowbotAI FlowbotAI ships with a small set of built-in tools that cover common voice-application needs out of the box. They behave the same way as tools you create yourself: your agent can invoke them mid-conversation, ...
Explore Custom Tools
What “Custom Tools” mean in FlowbotAI Custom tools give your FlowbotAI agent the ability to communicate with systems outside the call—anything you can do in a function (or API endpoint) can be exposed to the agent as a tool. Tools are the foundation ...
Zapier Worfkflow Integration
Flowbot Agent Connector – Zapier Integration Guide The Flowbot Agent Connector allows you to integrate your Flowbot Voice Agents with over 8,000+ apps in the Zapier ecosystem. Automate everyday tasks like creating tickets, updating CRMs, sending ...