Tool templates let you define reusable tool configurations that can be easily added to multiple agents. Instead of copying tool definitions, create templates and reference them when configuring agents.Tool type - Function, end call, or transfer
Name and description - For LLM understanding
Parameters - JSON Schema for inputs
Configuration - URLs, async settings, etc.
{
"tool_template": {
"id": "template-uuid",
"name": "lookup_customer",
"description": "Look up customer information...",
"type": "function",
"url": "https://api.example.com/webhooks/lookup",
"async": false,
"parameters": { ... },
"created_at": "2025-12-13T10:00:00.000Z"
}
}
Template Fields#
| Field | Type | Required | Description |
|---|
name | string | Yes | Tool name (used by LLM) |
description | string | Yes | What the tool does |
type | string | Yes | function, endCall, or transferCall |
url | string | No | Webhook URL for function tools |
async | boolean | No | Fire-and-forget mode (default: false) |
asyncResponse | string | No | Response for async tools |
parameters | object | No | JSON Schema for inputs |
destinations | array | No | Transfer destinations (for transferCall) |
Using Templates with Agents#
When creating or updating an agent, reference tool templates by ID:The tools from these templates will be added to the agent's llm_config.tools.Template Examples#
Check Appointment Availability#
{
"name": "check_availability",
"description": "Check available appointment slots for a given date and service type. Use when customer wants to book an appointment.",
"type": "function",
"url": "https://api.example.com/webhooks/availability",
"parameters": {
"type": "object",
"properties": {
"date": {
"type": "string",
"description": "Date to check in YYYY-MM-DD format"
},
"service": {
"type": "string",
"description": "Type of service requested"
}
},
"required": ["date"]
}
}
Book Appointment#
{
"name": "book_appointment",
"description": "Book an appointment for the customer. Only use after confirming the date, time, and service with the customer.",
"type": "function",
"url": "https://api.example.com/webhooks/book",
"parameters": {
"type": "object",
"properties": {
"date": {
"type": "string",
"description": "Appointment date in YYYY-MM-DD format"
},
"time": {
"type": "string",
"description": "Appointment time in HH:MM format"
},
"service": {
"type": "string"
},
"customer_name": {
"type": "string"
},
"notes": {
"type": "string"
}
},
"required": ["date", "time", "customer_name"]
}
}
Log Event (Async)#
{
"name": "log_interest",
"description": "Log that the customer expressed interest in a product for sales follow-up",
"type": "function",
"url": "https://api.example.com/webhooks/log",
"async": true,
"asyncResponse": "I've noted your interest for our team to follow up.",
"parameters": {
"type": "object",
"properties": {
"product": {
"type": "string",
"description": "Product the customer is interested in"
},
"notes": {
"type": "string",
"description": "Additional notes about the interest"
}
},
"required": ["product"]
}
}
Multi-Destination Transfer#
{
"name": "transfer_call",
"description": "Transfer the call to the appropriate department",
"type": "transferCall",
"destinations": [
{
"type": "number",
"number": "+31612345678",
"description": "Sales team - for pricing, quotes, and new business",
"message": "Ik verbind u door met onze sales afdeling."
},
{
"type": "number",
"number": "+31687654321",
"description": "Technical support - for product issues and troubleshooting",
"message": "Ik verbind u door met technische support."
},
{
"type": "number",
"number": "+31698765432",
"description": "Billing - for invoice and payment questions",
"message": "Ik verbind u door met de facturatie afdeling."
}
]
}
Listing Templates#
Updating a Template#
Deleting a Template#
Deleting a template does not affect agents currently using it. Tools are stored as objects in the agent configuration, not as references.