Skip to main content

What are tools?

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.

Available tool types

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:
FieldDescription
Tool nameShort identifier used by the LLM (e.g., get_order_status)
DescriptionTells the LLM when and why to use this tool
MethodGET, POST, PUT, or PATCH
URLThe endpoint to call
HeadersStatic key-value headers (e.g., Authorization: Bearer ...)
BodyJSON body template; supports {{variable}} substitution from conversation context
ParametersDeclare 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:
FieldDescription
Tool nameShort identifier (e.g., save_lead_score)
DescriptionTells the LLM when to call this tool
AttributeThe contact attribute to update (must exist in Settings → Attributes)
Value parameterThe 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:
FieldDescription
Tool nameShort identifier (e.g., send_booking_confirmation)
DescriptionTells the LLM when to send this message
TemplateSelect an approved WhatsApp template from your account
Variable mappingMap 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.

Writing good tool descriptions

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.”

Tool execution flow

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.