Tools

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

A tool is a function the LLM can invoke mid-conversation. Tools come in three 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.

Webhook and client 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.