Docs/Build your agent

Tools

On this page

Instructions decide what an agent says. Tools decide what it can do — put a caller through to a person, end the call cleanly, text them a link, or ask your own system a question mid-conversation.

What a tool is

A tool is a capability you attach to an agent. The agent decides when to use it, based on the conversation and on what your instructions told it. You never script the sequence.

Manage them at Tools, then attach them to specific agents in AgentsEditTools. A tool that exists but is not attached does nothing.

Tools and integrations are different things

Tools are call-control actions — hang up, transfer, send a text, call a URL. Integrations are connections to whole applications like HubSpot or Google Calendar, connected once on their own page. Both end up as things the agent can do mid-call; they are just set up in different places.

The nine tools

ToolWhat it doesUse it for
TransferMoves the live call to another phone number or SIP address.Escalation to a human. Every production agent should have this.
Hang UpEnds the call deliberately.Closing cleanly when the business is done, or when a caller asks to stop.
Send MessageSends an SMS to the caller during or after the call.Links, addresses, booking confirmations, reference numbers — anything awkward to say aloud.
WebhookCalls a URL you control and gives the reply back to the agent.Looking things up in your own system when there is no ready-made integration.
HandoffPasses the conversation to a different Vociply agent.A front-door agent routing to specialists — “billing” vs. “technical”.
InviteAdds another participant to the call.Bringing a colleague in without dropping the caller.
SIP ReferTransfers using SIP signalling rather than a new call leg.Handing back into an existing PBX or contact centre.
Send DTMFPlays keypad tones.Navigating an automated menu on the far end of a transfer.
Skip TurnLets the agent stay silent and let the caller keep talking.Callers who think aloud, or long explanations you do not want interrupted.

Transfer: set this up first

If you add one tool, add this one. An agent with no escape route will keep trying to handle a caller it cannot help, and that is the interaction people remember.

  1. Create the tool

    ToolsCreateTransfer. Enter the destination in international format — +254712345678 — or a SIP address if you are handing into a PBX. You can define more than one destination.

  2. Attach it to the agent

    AgentsEditTools, tick the transfer tool, save.

  3. Tell the agent when to use it

    Add a rule to the instructions. Be specific about the triggers:

    In your instructions
    If the caller asks for a person, sounds frustrated or upset, has a
    complaint, or you have failed to help them twice — transfer the call.
    Say "let me put you through to a colleague" first, then transfer.
  4. Test it by being difficult

    Call the agent and demand a human. If you are not transferred within two exchanges, your trigger wording is too narrow — widen it and try again.

Transfers depend on someone answering

If your transfer number rings out, the caller is left with nothing. Point it at a number that is genuinely staffed during the hours the agent runs — a hunt group or mobile, not a desk phone nobody sits at. For after hours, tell the agent to take a message instead of transferring.


Webhooks

The escape hatch. If your system is not in the integrations list but has an HTTP endpoint, a webhook tool lets the agent ask it a question mid-call and speak the answer.

What you configure

FieldMeaning
URLWhere Vociply sends the request. Must be reachable from the internet over HTTPS.
MethodGET, POST, PUT, PATCH or DELETE. POST for most lookups.
HeadersName/value pairs — this is where an API key or bearer token goes.
TimeoutHow long to wait, in milliseconds. Default 10,000. Keep it low — a caller is waiting.
AsyncFire and forget: the agent does not wait for a reply. Good for logging, wrong for lookups.
ParametersWhat the agent should collect and send — an order number, an email address.

What the exchange looks like

Vociply sends the call context plus whatever parameters the agent gathered:

Request from Vociply
POST https://your-server.example.com/vociply/lookup
Content-Type: application/json

{
  "call_id": "c_8f2a...",
  "agent_id": "a_31bd...",
  "caller_number": "+254712345678",
  "parameters": {
    "order_number": "SO-10482"
  }
}

Return plain JSON. Whatever you send back is given to the agent, which turns it into a sentence — so return facts, not formatted prose:

Your reply
{
  "status": "shipped",
  "carrier": "G4S",
  "expected": "Thursday 14 March"
}

The agent then says something like “That one shipped with G4S and should reach you Thursday the fourteenth.”

Keep it under two seconds

Every millisecond your endpoint takes is silence on the call. If a lookup is genuinely slow, tell the agent to say “bear with me a moment” before calling it — a narrated wait is far more tolerable than dead air.

Anyone who guesses the URL can call it

Put a secret in a header and check it on your side. Never rely on the URL being unguessable, and never expose an endpoint that changes data without authentication.

If maintaining an endpoint sounds like more than you want to do, use n8n instead — you build the same thing by dragging boxes, and Vociply talks to it the same way.


Telling the agent when to use them

Attaching a tool makes it possible. Your instructions make it happen. Name the tool and state the trigger:

Good — specific triggers
- Before offering any appointment time, use check_availability.
- After booking, use send_message to text the caller the address.
- If the caller asks for a human or is upset, use transfer_call.
- When the caller says goodbye or the business is done, use end_call.
  • Name the tool. “Check the calendar” is vaguer to the agent than check_availability.
  • Give the trigger, not the mechanics. “When the caller wants to book” — not a step-by-step of how to call it.
  • Say what to do when it fails. “If the booking does not go through, take their number and say someone will confirm.”
  • Do not attach tools it has no use for. Every extra tool is one more thing to consider on every turn, which costs a little speed and a little accuracy.

Tool questions

Can the agent use two tools in one turn?

Yes. Booking an appointment and then texting a confirmation is two tools in sequence, and the agent handles the ordering itself as long as your instructions describe the outcome.

What happens if my webhook is down?

It times out and the agent carries on without the answer. Give it a fallback in the instructions — “if you cannot look it up, apologise and take their number” — otherwise it will improvise, and improvising about a real order is exactly what you do not want.

Can a tool send an email instead of an SMS?

Not directly — Send Message is SMS. For email, connect Gmail or Outlook as an integration, which gives the agent a send-email action.

Does a transfer cost extra minutes?

The call continues, so it continues to use minutes until everybody hangs up. A call transferred to a human is still a call in progress.

Can I stop the agent hanging up too early?

Tighten the trigger: “Only use end_call after the caller has said goodbye or confirmed there is nothing else.” Vague end-call rules are the usual cause of an agent cutting people off mid-sentence.

Still stuck? support@vociply.com