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

# Changing Call State

> Learn how to programmatically end calls or transition between call stages using special tool response types.

## Special Tool Response Types

For most tools, the response will include data you want the model to use (e.g. the results of a lookup). However, Ultravox has support for special tool actions that can end the call, change the call stage, or communicate with another thread.

These tool actions require setting a special response type.

| Response Type  | Tool Action                                                                                                                                                                               |
| -------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| hang-up        | Terminates the call. In addition to having Ultravox end the call after [periods of user inactivity](/api-reference/calls/overview#inactivitymessages), your custom tool can end the call. |
| new-stage      | Creates a new call stage. See [here](/agents/call-stages) for more.                                                                                                                       |
| send-to-thread | Sends a message to another thread. See [here](/agents/threads) for more.                                                                                                                  |

How you set the response type depends on your tool implementation.
HTTP tools set the response type via the `X-Ultravox-Response-Type` header.
Client and data connection tools should set the responseType field in their tool result message.
