Skip to main content
TurnCall agents can call tools during conversations. Tools let the AI take actions — transfer calls, look up customer data, book appointments, and more.

Built-in Tools

These work out of the box with no server needed:
ToolDescriptionParameters
end_callTerminate the callreason (optional)
transfer_callTransfer to a phone numbertarget_number (required), transfer_mode, reason
handoff_to_agentSwitch to another AI agentagent_id (required), reason, context
send_dtmfSend keypad tonesdigits (required)

Custom Webhook Tools

Define tools with a webhook_url — TurnCall POSTs to your server when the LLM invokes the tool:
{
  "name": "lookup_customer",
  "description": "Look up customer details by phone number",
  "parameters_schema": {
    "type": "object",
    "properties": {
      "phone_number": {
        "type": "string",
        "description": "E.164 phone number"
      }
    },
    "required": ["phone_number"]
  },
  "webhook_url": "https://your-api.com/tools/lookup",
  "execution_mode": "sync",
  "timeout_seconds": 10,
  "max_retries": 1
}

Webhook Payload

Your server receives:
{
  "tool_name": "lookup_customer",
  "arguments": {"phone_number": "+15559876543"},
  "call_id": "call-uuid",
  "project_id": "project-uuid"
}
Return any JSON — it’s passed back to the LLM as the tool result.

Tool Invocation Recording

All tool calls (webhook + MCP + built-in) are recorded in the tool_invocations table with:
  • Input arguments
  • Output result
  • Status (success/error)
  • Latency (ms)
Query invocations via the API:
curl http://localhost:8090/v1/tools/invocations/CALL_ID \
  -H "Authorization: Bearer tc_xxx"

Validate Tool Schema

Test your tool definition before adding it to an agent:
curl -X POST http://localhost:8090/v1/tools \
  -H "Authorization: Bearer tc_xxx" \
  -H "Content-Type: application/json" \
  -d '{"name": "my_tool", "description": "...", "parameters_schema": {...}}'