1. Configuration
  • HMS Sovereign API
  • Get started
    • Authentication
    • Introduction
    • Quickstart
  • Core concepts
    • Assistants
    • Calls
    • Phone Numbers
    • Webhooks
  • Platform
    • Billing & Credits
    • EU Data Sovereignty
    • Voice Selection
    • Whitelabel Portal
  • Webhooks
    • Assistant Request
    • End of Call Report
    • Webhooks Overview
    • Webhook Security
    • Status Update
    • Tool Calls
  • Configuration
    • Analysis Templates
    • Custom Tools
    • SIP Trunks
    • Tool Templates
  • Features
    • AI Generation
    • Autonomous Silence Handling
    • Call Analysis
    • Call Transfers
    • Campaigns Setup
    • Outbound Campaigns
    • Voicemail Detection
    • Web Calls
  • Integrations
    • BYOK Setup
    • Provider Pricing
    • xAI Grok Integration
  • Reference
    • Error Codes
    • Rate Limits
    • Troubleshooting
Documentation
API Reference
Documentation
API Reference
Book a meeting
Linkedin
Github
  1. Configuration

Tool Templates

Tool templates let you define reusable tool configurations that can be easily added to multiple assistants. Instead of copying tool definitions, create templates and reference them when configuring assistants.

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 Assistants#

When creating or updating an assistant, reference tool templates by ID:
The tools from these templates will be added to the assistant'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 assistants currently using it. Tools are stored as objects in the assistant configuration, not as references.

Related#

Custom Tools Guide
Tool Templates API
Tool Calls Webhook
Modified at 2026-03-17 10:59:50
Previous
SIP Trunks
Next
AI Generation
Built with