config.system_tools currently supports three slots: end_call, send_dtmf, and transfer_to_number.

Turn system tools on from the Tools page in the Playground.
null. On PATCH:
- Omit a slot to leave it unchanged.
- Send
nullto disable it. - Send the config object to enable or update any slot settings.
end_call or send_dtmf with defaults. Set description to direct when the model should invoke the tool. For example, require an explicit goodbye before ending a call or prevent the agent from hanging up when it reaches voicemail. Set it to null to use the built-in description.
pre_tool_speech controls whether the agent speaks before acting. auto lets the agent decide; force asks it to speak first.
End call
Allows the agent to end a call when the conversation is complete or the caller asks to hang up.Send DTMF
Allows the agent to send one or more keypad tones, such as12#, while navigating a phone menu. Supported tones are 0 through 9, *, and #.
Transfer to number
Transfers a phone call to a configured destination. For each destination, provide a phone number in E.164 format, such as+14155550123, a SIP URI such as sip:user@host, or a dynamic variable such as {{transfer_number}}. Add a condition that tells the model when to use it.
Set the destinations with Update agent, using your agent ID:
PATCH /v1/agents/{agent_id}
transfer_number in the outbound call request or through a webhook assignment. A variable used as a phone destination must contain a valid E.164 number when the transfer runs. Conditions and tool descriptions also support dynamic variables.
In the Playground, open Tools, enable Transfer call, and choose Phone number, SIP URI, or Dynamic variable for each rule’s Destination.
Set type to "sip_uri" and provide sip_uri in the form sip:user@host or sips:user@host, using a lowercase scheme and including both a user and a host.
The sip_uri can also be a single dynamic variable, such as {{sip_uri}}, whose value is the complete SIP URI when the transfer runs. Variables inside a URI, such as sip:{{user}}@host, are not supported. In the Playground, choose Dynamic variable for the rule’s Destination and set Destination type to SIP URI.
Transfers require a Twilio or SIP-trunked phone call; SIP URI destinations require SIP trunking.
On Playground and v1 WebSocket calls, the tool returns an error instead of transferring the call.