> ## 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.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.