Voice & Conversational AI
Giving a Voice Agent Hands
Picture the end of a good call with an AI agent. The caller wanted to book an appointment. The agent understood perfectly, found a time that worked, confirmed it in a warm and natural voice, and said goodbye. The caller hangs up happy.
And nothing happened.
No appointment was booked. No calendar was touched. No confirmation went out. The agent said all the right words and then those words evaporated, because talking was the only thing it could do. The caller thinks they have a booking. They do not. They will find out at the worst possible moment, standing at a door that nobody is expecting them at.
This is the gap between a voice agent that talks and a voice agent that acts. Closing it is most of the actual work, and it is a lot less glamorous than the conversation itself.
Talking is not doing
A language model is very good at producing the right sentence. That is what it does. Given a conversation, it predicts a fluent, appropriate reply. But a reply is just text. "Great, I have booked you for Tuesday at 3" is a sentence the model can generate whether or not any booking exists anywhere in the world. The words cost nothing and prove nothing.
For the call to mean something, the agent needs hands. It needs to reach out mid-conversation and change something real: put an event on a calendar, send an email, fire off a WhatsApp message, schedule a follow-up call for later. Not after the call, in some batch job that reads a transcript and guesses what was promised. During the call, so the agent can confirm what it actually did, and so it can react if the action fails.
The industry word for these hands is tools. A tool is a specific thing the agent is allowed to do, described in a way the model can understand and invoke. Booking a slot is a tool. Sending an email is a tool. The model does not run the tool itself. It decides a tool should be used, says which one and with what details, and something on the outside does the actual work and reports back.
The wiring underneath
On the production voice platform I worked on, the tools are exposed through MCP servers. MCP is a standard way to hand an agent a set of tools without hard-wiring each one into the agent's core. Think of it like a wall of labeled sockets. The agent does not need to know how the wiring behind each socket works. It just needs to know a socket exists, what it is called, and what to plug into it.
We ran a handful of these tool servers. One for sending email. One for WhatsApp messages. One for scheduling a follow-up call after a delay. Others for third-party integrations that let an agent touch whatever calendar or system a client already used. Each server offers up its tools, and the agent, mid-call, can pick one and call it.
Two design choices in that setup turned out to matter more than the rest.
The first is that tools are not global. They are assigned per agent, and configured per client. One business's receptionist agent might have a booking tool and a WhatsApp tool and nothing else. Another might have email and a follow-up-call tool. The same underlying capability, handed out differently depending on what that specific agent is supposed to be able to do. An agent should only have the hands it needs, and no others. A support bot with the power to send arbitrary emails on your domain is not a feature, it is an incident waiting to happen.
The second is that the tools are filled in with real context at call time. A tool is defined as a template with blanks: a message with a customer name to slot in, an email with a subject and body that reference variables. When the agent decides to use it, those blanks get filled from the actual conversation and the actual client's configuration. The credentials to send that email or message are the client's own, passed through encrypted, never sitting in plain sight. The agent is not composing from nothing. It is completing a form the business already designed, which is exactly what you want when the thing being sent goes out under someone's real name.
Doing things is where the danger lives
Here is the uncomfortable part. The moment an agent can act, every mistake it makes becomes an action instead of a sentence.
A talking-only agent that misunderstands you says something wrong. Annoying, recoverable. An acting agent that misunderstands you books the wrong day, messages the wrong person, or sends an email that should never have gone out. The words were always cheap. The actions are not.
So giving an agent hands is not really about adding tools. It is about deciding, carefully, which hands it gets, making the actions specific and bounded rather than open-ended, and keeping the human's real credentials and templates in control of what actually leaves the building. The model proposes. The system, with its per-agent limits and its pre-shaped templates, decides what is actually allowed to happen.
Get that right and the call from the start of this piece ends differently. The agent finds the time, and while it is still speaking, the booking tool fires, the calendar changes, the confirmation message goes out. Then it says "I have booked you for Tuesday at 3." This time the sentence is true, because the doing came first and the saying just reported it.
That is the whole difference. A voice agent that only talks is a very polite dead end. One with hands can actually finish what the caller came for. The talking was never the hard part. Making the words true is.