Tools
Tools enable your agents to make external API calls during a call to fetch or send data and take actions. For example, checking order status, retrieving user details, or performing calculations.
Basics
Go to Tools → Create Tool and fill in the basic details:
|
Field |
Description |
Example |
|---|---|---|
|
Name |
An explanatory name for the tool |
|
|
Category |
Logical grouping |
custom |
|
Description |
Clear explanation of what the tool does and when the agent should use this. |
Use to fetch order history using registered phone number |

Parameters
Define the inputs your API will expect. These are passed during runtime by the agent.
|
Field |
Description |
Example |
|---|---|---|
|
Name |
Parameter name |
|
|
Type |
|
string |
|
Required |
Whether this parameter is mandatory or optional |
true |
|
Validation |
An optional regex forumla for input validation |
^\d{10}$ |
|
Description |
What this input represents and how it's used |
Valid 10 digit phone number without any country code |
Use regex to enforce strict parameter format. For example:
-
^\d{10}$ensures a 10-digit phone number -
^GI\d{4}$ensures order ID starts withGIfollowed by 4 digits
Use string(enum) when you want users to pick from a dropdown list of predefined values like delivered, cancelled, etc.
API configuration
Configure how the agent should call the external API.
|
Field |
Description |
Example |
|---|---|---|
|
Method |
HTTP method |
POST |
|
URL |
Endpoint to call |
|
|
Timeout |
Milliseconds before aborting |
15000 |
|
Headers |
Key-value headers |
|
|
Body (Raw) |
JSON body. Use |
|
Available variables:
-
Tool parameters (e.g.,
${phone}) -
Pre-call API and task context variables
-
System variables like
${callSid},${agent}
Response variable mapping
Specify which parts of the API response should be available to the agent. Use . dot notation for referencing nested keys.
Example response:
{
"customer": {
"name": "Tarun",
"totalSpent": 20000
},
"orders": [
{ "orderId": "GI1234", "total": 1234, "status": "delivered" }
]
}
|
Variable name (agent) |
JSON path in response |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
Calculated variables
Use logic to derive new variables from response variables only. This helps classify or format data for better LLM prompting.
|
Calculated Variable |
Logic |
|---|---|
|
|
If |
Only response variables (not tool input parameters) can be used in calculations. You can build complex conditional logic using nested IF → ELSE IF → ELSE paths.
Special built-in endpoints
These are internal tools that don’t hit external APIs:
|
Endpoint |
Purpose |
Example |
|---|---|---|
|
|
Returns input as-is |
Use to echo tool input, e.g., validate input directly in flow |
|
|
Perform arithmetic on input parameters |
Let the agent calculate totals, percentage, averages, etc. |
LLMs are not great at maths. Use these built-in endpoints for doing maths reliably. For example, calculate final price of a product by calling a tool with product endpoint with inputs as itemPrice and discount .
Using tools in agent
Once you’ve created a tool, it becomes available for use inside your voice agents. How and where you use the tool depends on whether your agent is configured as a Single Prompt Agent or a Multi Prompt Agent.
Single prompt agent
In single prompt agents, tools can be added via Think Settings → Tools and are accessible globally.
Multi prompt agent
In multi prompt (flow-based) agents, tools can be configured and used more flexibly. They are available in two places:
a. Inside a node
-
These tools are available to the agent only while it's in that node.
-
They do not cause a node switch when invoked.
-
Tools added to the global node are available across all nodes.
Use case: Checking eligibility or fetching customer details while staying in the same node.
b. Transition
-
When invoked, they trigger the transition and call the tool.
-
Tool output becomes available in the destination node.
Use case: Routing logic based on tool output—e.g., verify KYC, and then decide which node to go next.
Tool messages
When adding a tool, you can configure two types of messages:
|
Type |
Purpose |
Example |
|---|---|---|
|
Start |
What the agent says before using the tool. You can write a fixed line or provide instructions for the LLM to generate it contextually. |
“Give me a moment to fetch your latest order.” |
|
Interrupt |
What the agent says if the user tries to interrupt while the tool is running. Tools are uninterruptible, and this message is played in that case. |
"Hold on just a second, I’m getting your order details." |