> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cartesia.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# System tools

> Configure built-in actions for calls and telephony.

System tools are built-in actions configured directly on an agent. `config.system_tools` currently supports three slots: `end_call`, `send_dtmf`, and `transfer_to_number`.

<Frame caption="Turn system tools on from the Tools page in the Playground.">
  <img src="https://mintcdn.com/cartesia-2650f86a/wJ-UNaUxIYqQcebi/assets/images/agents/playground-system-tools.png?fit=max&auto=format&n=wJ-UNaUxIYqQcebi&q=85&s=57d496e37cc7e1ae127d4d2d1aeb0454" alt="Tools page in the Playground with End call, Send keypad tones, and Transfer call toggles" width="2000" height="1013" data-path="assets/images/agents/playground-system-tools.png" />
</Frame>

```json theme={null}
{
  "config": {
    "system_tools": {
      "end_call": {
        "description": "End the call after the caller explicitly says goodbye.",
        "pre_tool_speech": "force"
      },
      "send_dtmf": null,
      "transfer_to_number": {
        "description": null,
        "pre_tool_speech": "auto",
        "transfers": [
          {
            "destination": {
              "type": "phone",
              "phone_number": "+14155550100"
            },
            "condition": "The caller asks to speak with billing."
          }
        ]
      }
    }
  }
}
```

Reads return all three slots. A disabled slot is `null`. On `PATCH`:

* Omit a slot to leave it unchanged.
* Send `null` to disable it.
* Send the config object to enable or update any slot settings.

An empty object enables `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 as `12#`, while navigating a phone menu. Supported tones are `0` through `9`, `*`, and `#`.

## Transfer to number

Transfers a phone call to a configured destination. Each destination requires an E.164 phone number and a condition that tells the model when to use it. You can configure up to 16 destinations.

```json theme={null}
{
  "transfers": [
    {
      "destination": { "type": "phone", "phone_number": "+14155550100" },
      "condition": "The caller has a billing or payment question."
    },
    {
      "destination": { "type": "phone", "phone_number": "+14155550101" },
      "condition": "The caller reports a technical problem with their device."
    },
    {
      "destination": { "type": "phone", "phone_number": "+14155550102" },
      "condition": "The caller asks for a person and no other destination applies."
    }
  ]
}
```
