Tools

Let an agent call your backend, run code on the caller's device, proxy through an MCP server, or end and transfer calls

A tool is a function the LLM can invoke mid-conversation. Tools come in four kinds:

System

Worker built-ins - end_call, transfer_to_number, transfer_to_agent, play_keypad_touch_tone, skip_turn. No HTTP; they run in the agent process in milliseconds.

Webhook

Your backend. Any business logic - look up an order, book an appointment, charge a card. Signed with HMAC-SHA256.

Client

The caller’s browser or SDK. UI actions - navigate the page, fill a form, update a cart. Dispatched over the session’s tools data channel.

MCP

A customer-hosted Model Context Protocol server. The worker opens the configured transport at session start, discovers remote tools, and proxies tool calls through.

Webhook, client, and MCP tools are created once and attached to any number of agents; system built-ins are added directly to an agent. To wire them up, see Add tools.

Parameters

Every tool declares the parameters the LLM may pass:

1"params": [
2 { "name": "order_id", "type": "string", "description": "Customer's order ID", "required": true },
3 { "name": "notify", "type": "boolean", "description": "Email confirmation", "required": false }
4]

type is one of string, number, integer, or boolean. A string parameter can also declare an enum of allowed values.

How invocations are recorded

Every tool call is persisted on the transcript with role=tool, tool_name, tool_args, and tool_result - available via GET /v1/agents/conversations/{id}/messages.