Skip to main content

End Call

cut_call is a built-in tool that lets the agent hang up the call when the conversation is done. It ships with Bolti — you don't define a URL, schema, or endpoint for it. You just decide whether your agent has access to it.

What the LLM sees

Just like any other tool, the model sees a name, a description, and a parameters object:

FieldValue
Namecut_call
DescriptionImmediately end the active call when the user asks to hang up.
Parametersreason (string, optional), drain (boolean, optional, default true)

The model invokes it the same way it invokes any other function. Bolti recognises the name and, instead of making an HTTP request, runs the hangup directly inside the realtime audio session.

When the model picks it

The model calls cut_call when the conversation has clearly reached an end. Typical triggers:

  • The caller says "thanks, bye", "we're good, you can hang up", or anything that reads as a goodbye.
  • The agent has finished a transactional task and the caller acknowledges it.
  • The caller explicitly asks to end the call.

You don't need to write rules for this — the model handles it from the description plus the conversation context. If you want to reinforce when it should hang up (or when it should not), put guidance in the agent's system prompt under Agent Setup → Basic.

How it actually ends the call

When the model emits a cut_call, Bolti:

  1. Logs the call with the reason the model provided.
  2. Drains the audio session so the agent's last sentence finishes playing (unless drain: false was specified).
  3. Shuts down the realtime session, which terminates the SIP / WebRTC leg.
  4. Triggers the post-call pipeline — recording finalization, transcript persistence, webhooks, dispositions, extractions.

The hangup is initiated by the agent, not by the carrier. From the caller's perspective, the call simply ends.

Enabling and disabling

cut_call is enabled by default on every new agent.

To change it:

  1. Go to your agent → Settings → Tools.
  2. In the Built-in tools section, toggle cut_call on or off.
  3. Click Save Tool Assignments.
StateBehavior
Enabled (default)The model can hang up when the conversation reaches an end.
DisabledThe model cannot hang up. The call ends only when the caller hangs up, the carrier drops the line, or your max-call-duration limit triggers.
When to disable

Disable cut_call only when you have a strong reason — for example, an outbound campaign where the caller should always be the one to end the call, or a hold-and-transfer flow where the agent must stay on the line. The default is on for a reason: without it, the agent will keep trying to keep the conversation going long after it should have ended.

Using it from the agent's prompt

You don't have to mention cut_call in the system prompt for it to work — the description is enough for normal goodbyes. But you can nudge the model:

When the caller has confirmed they have what they need, thank them and end the call.

Or, conversely:

Do not end the call until the caller explicitly says goodbye.

The prompt controls behavior; tool assignment controls capability. If cut_call is disabled in tool assignments, no amount of prompting will let the model hang up.

What it doesn't do

  • It is not a transfer. cut_call ends the call. There is no warm hand-off to a human.
  • It does not delete the call record. The recording, transcript, and post-call data are preserved as on any other ended call.
  • It does not run any custom code. If you want a webhook or external action when a call ends, configure it via Conversation Intelligence → Webhooks, not by chaining tools to cut_call.

Other built-ins

Today, cut_call is the only built-in tool. Additional call-control built-ins (hold, DTMF send, etc.) will appear in the Built-in tools section of the agent Tools tab as they ship.

What's next