Documentation
API Reference
Documentation
API Reference
Book a meeting
Linkedin
Github
  1. Guides
  • Introduction
  • Get started
    • Quickstart
    • Authentication
  • Core concepts
    • Agents
    • Phone numbers
    • Calls
    • Webhooks
  • Webhooks
    • Overview
    • Assistant request
    • Tool calls
    • Status update
    • End of call report
    • Security
  • Guides
    • Campaigns
    • xAI Realtime Integration
    • Voice selection psychology
    • Analysis templates
    • BYOK Setup
    • Call analysis
    • Call Transfers
    • Custom Tools
    • Sip Trunks
    • Tool templates
    • Voicemail detection
    • Autonomous silence detection
    • Billing
    • Error codes
    • Rate limits
    • Troubleshooting
  • Api's
    • Campaigns
    • Agents
    • Voices
    • BYOK
    • Analysis templates
    • Tool templates
    • Organization
    • Phone numbers
    • Sip trunks
    • Calls
    • Call control
    • Usage
    • Domains
Documentation
API Reference
Documentation
API Reference
Book a meeting
Linkedin
Github
  1. Guides

Tool templates

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.

What are Tool Templates?#

A tool template defines:
Tool type - Function, end call, or transfer
Name and description - For LLM understanding
Parameters - JSON Schema for inputs
Configuration - URLs, async settings, etc.

Creating a Tool Template#

Function Tool Template#

Response:
{
  "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"
  }
}

End Call Tool Template#

Transfer Call Tool Template#

Template Fields#

FieldTypeRequiredDescription
namestringYesTool name (used by LLM)
descriptionstringYesWhat the tool does
typestringYesfunction, end_call, or transfer_call
urlstringNoWebhook URL for function tools
asyncbooleanNoFire-and-forget mode (default: false)
async_responsestringNoResponse for async tools
parametersobjectNoJSON Schema for inputs
destinationsarrayNoTransfer destinations (for transfer_call)

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,
  "async_response": "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": "transfer_call",
  "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.

Related#

Custom Tools Guide
Tool Templates API
Tool Calls Webhook
Modified at 2026-01-30 12:26:45
Previous
Sip Trunks
Next
Voicemail detection
Built with