Tools are actions the voice agent can take during a conversation. When the LLM decides a tool is needed (e.g., to look up an order or save a caller’s name), it calls the tool, waits for the result, and incorporates the response into its next reply.
Tools are defined per-agent in the Tools tab of the agent configuration.
HTTP Request
Make an outbound HTTP request to any external API mid-call. Use this to look up data (order status, account details, availability) or trigger actions in your systems (create a ticket, update a record).
Configuration fields:
| Field | Description |
|---|
| Tool name | Short identifier used by the LLM (e.g., get_order_status) |
| Description | Tells the LLM when and why to use this tool |
| Method | GET, POST, PUT, or PATCH |
| URL | The endpoint to call |
| Headers | Static key-value headers (e.g., Authorization: Bearer ...) |
| Body | JSON body template; supports {{variable}} substitution from conversation context |
| Parameters | Declare variables the LLM should extract from the conversation before calling the tool |
Example — look up order status:
{
"name": "get_order_status",
"description": "Look up the status of a customer order. Call this when the caller provides their order number.",
"method": "GET",
"url": "https://api.yourstore.com/orders/{{order_number}}",
"headers": {
"Authorization": "Bearer YOUR_API_TOKEN"
},
"parameters": [
{
"name": "order_number",
"description": "The order number provided by the caller",
"type": "string",
"required": true
}
]
}
Save Attribute
Save a value collected during the call to a contact attribute. This updates the caller’s contact record in Swiftsell immediately.
Configuration fields:
| Field | Description |
|---|
| Tool name | Short identifier (e.g., save_lead_score) |
| Description | Tells the LLM when to call this tool |
| Attribute | The contact attribute to update (must exist in Settings → Attributes) |
| Value parameter | The variable the LLM should extract from conversation and pass as the attribute value |
Example — save caller’s budget:
{
"name": "save_budget",
"description": "Save the caller's stated budget after they mention it.",
"attribute": "budget_range",
"parameters": [
{
"name": "value",
"description": "The budget range mentioned by the caller",
"type": "string",
"required": true
}
]
}
Send WhatsApp Template
Send a WhatsApp template message to the caller’s number during or after the call. Use this to send confirmations, follow-up links, or summaries.
Configuration fields:
| Field | Description |
|---|
| Tool name | Short identifier (e.g., send_booking_confirmation) |
| Description | Tells the LLM when to send this message |
| Template | Select an approved WhatsApp template from your account |
| Variable mapping | Map template variables to values from the conversation |
The WhatsApp message is sent to the phone number associated with the call. The caller must have a WhatsApp account on that number to receive it.
The LLM decides when to call a tool based solely on its description. Write descriptions that clearly state:
- The trigger condition — “Call this when the caller provides their order number”
- What the tool returns — “Returns the current status and estimated delivery date”
- When NOT to call it — “Do not call this if the caller hasn’t confirmed their order number yet”
Poor description:
“Gets order info.”
Good description:
“Retrieves the current status and estimated delivery date for a customer order. Call this only after the caller has provided their order number. Returns status (processing/shipped/delivered) and expected delivery date.”
LLM decides a tool is needed
↓
Swiftsell executes the tool (HTTP call, attribute write, or WhatsApp send)
↓
Result is returned to the LLM
↓
LLM incorporates the result into its response to the caller
↓
Tool call + result saved to the call transcript as a tool_call message
Tool calls are visible in the full call transcript in Call Logs, so you can audit exactly what the agent did during each call.