System Tools
Built-in agent tools in Speaknode: end call, transfer to a human operator, transfer to another agent, detect language, skip turn, request info
System tools are capabilities that ship with Speaknode. Unlike webhook tools, you do not create them — they already exist in every workspace. You enable the ones an agent needs, and optionally tune how they behave.
Technically they are ordinary LLM tools: the model sees their name and description, and calls them when the conversation matches. The difference is that the platform executes them internally — hanging up, dialling an operator, switching the agent, changing the language — instead of sending an HTTP request somewhere.
Where to configure them
Open the agent
Go to Agents in https://app.speaknode.com, open the agent and scroll to the Tools section.
Enable the tool
System Tools lists every built-in tool. Flip the switch to give the tool to the agent.
Configure it
Once a tool is enabled, a gear icon appears next to the switch. It opens the tool's settings for this agent: the description, interruption behaviour and — for the two transfer tools — the transfer rules.
Settings are stored per agent. Enabling Transfer to a human operator on one agent and pointing it at a support number does not affect any other agent.
Settings every system tool has
| Field | What it does |
|---|---|
| Name | Read-only. The tool's name in the catalogue. |
| Description (optional) | The text the LLM reads to decide when to call the tool. Leave it blank to use the platform's default prompt, which is already tuned. Show Default fills the field with that default so you can edit it instead of writing from scratch. |
| Disable interruptions | While the tool is running, the caller cannot interrupt the agent. Useful when the tool speaks a phrase that must be heard in full. |
Careful with custom descriptions
The default descriptions are the result of a lot of tuning — a rewritten description is the most common reason a tool stops firing (or starts firing when it should not). If you do override it, keep the runtime placeholders: [languages will be populated at runtime] for Detect language, and the instruction to pass exactly one rule id for the transfer tools. The platform appends the actual list of languages / transfer rules to the description at call time.
The catalogue
| Tool | What it gives the agent | Needs configuration |
|---|---|---|
| End call | Hang up when the conversation is over | No |
| Transfer to a human operator | Put the caller through to a live person over the phone | Yes — transfer rules |
| Transfer to another agent | Hand the dialogue to another AI agent | Yes — transfer rules |
| Detect language | Switch the conversation to the caller's language | No (uses the agent's languages) |
| Skip turn | Stay silent when the caller asks for a moment | No |
| Ask for clarification | Log what information the agent was missing | No |
End call
Why you need it. Without this tool the agent can never hang up on its own: the call only ends when the caller does, or when the session times out. That costs money on every call and leaves the caller listening to an agent that has nothing left to say.
How to use it. Enable the switch — there is nothing else to configure. The agent will call it when the dialogue is genuinely finished: the goal is reached, the caller says goodbye, or the caller explicitly asks to end the call.
The agent generates its own farewell (there is no fixed "goodbye" phrase to configure), waits for it to finish playing, and only then terminates the session. The recording and the transcript are finalised normally.
If the agent hangs up too eagerly, tighten the description rather than turning the tool off — e.g. add "Never end the call while the customer's question is unanswered".
Transfer to a human operator
Why you need it. Some calls should not be handled by a bot: the caller insists on a human, the request is outside what the agent can resolve, or the deal is large enough that a person should close it. This tool dials a live operator's phone number and hands the call over — the caller stays on the same call the whole time.
Phone calls only
This tool works only when the conversation is happening over the phone. In a web-widget session the platform does not even give the tool to the model, so the agent cannot promise a transfer it is unable to perform. Connect a number under Phone Numbers first — see Phone Numbers and Custom SIP.
The operator is dialled from the same phone number and telephony account the caller reached the agent on. It is a second outbound leg, billed by your telephony provider like any other outbound call.
Setting up a transfer rule
Enable the tool and open its settings
In the agent's Tools section, enable Transfer to a human operator and click the gear icon.
Add a rule
In Transfer Rules, click Add Rule and fill it in:
| Field | Required | What to put there |
|---|---|---|
| Transfer mode | Yes | Cold, Warm — custom message or Warm — auto summary. See below. |
| Phone number | Yes | The operator's number in international format, e.g. +15551234567. |
| Condition | Yes | Plain-language description of when this rule applies, e.g. "The caller explicitly asks to speak with a human, or the request is outside the agent's scope". The model reads it to decide whether to transfer and, with several rules, which one to use. |
| Transfer message (to caller) | No | What the caller should be told just before the handover. See the note below. |
| Operator briefing (to operator) | For Warm — custom message | What is spoken to the operator when they pick up. Ignored by the other two modes. |
| Ringing timeout (seconds) | No | How long the operator's phone rings before we give up. A new rule starts at 60; the allowed range is 5–120; left empty it falls back to 30. |
Add more rules if you route by topic
One rule per destination. For example: billing questions → the finance line, technical failures → the support line, everything else → the front desk. Write the conditions so they do not overlap — the model picks by condition alone.
Save the agent
Click Save Changes in the drawer, then save the agent.
What the caller actually hears before the handover
The agent announces the transfer in its own words, generated from the conversation — the default tool description explicitly tells it to warn the caller and keep them company while the operator is being dialled. Transfer message is not played verbatim on an operator transfer today; treat it as documentation of the intended phrasing, and put the wording you want into the agent's prompt or the tool description instead. (On transfer to another agent, by contrast, the transfer message is spoken verbatim.)
Do not mix Warm — auto summary with the other modes in one agent
Warm — auto summary requires the model to produce a summary; the other two modes do not. If one agent has rules of both kinds under this tool, the platform cannot build a single consistent tool and drops it entirely — the agent will silently have no way to transfer. Use Warm — auto summary for every rule, or for none of them.
Transfer modes
| Mode | What the operator hears once the answering-machine check clears | Use it when |
|---|---|---|
| Cold (no briefing) | Nothing — they are connected straight to the caller. | The operator has the context elsewhere (a CRM screen pop), or speed matters more than context. |
| Warm — custom message | The fixed text from Operator briefing. | The context is always the same: "Incoming transfer from the website line, the customer wants to discuss a refund." |
| Warm — auto summary | A short recap of the conversation, generated by the model for this specific call. | Conversations differ every time and the operator should not have to ask the caller to repeat themselves. |
In all three modes the operator first hears music for a few seconds after picking up, while the platform makes sure a live person answered rather than an answering machine (see When the operator does not answer). They cannot hear the caller yet, and the caller cannot hear them.
What happens during the transfer
While the operator's phone is ringing the caller hears hold music and cannot hear the agent. The operator, in turn, does not hear the caller until the answering-machine check has cleared and the briefing has been played — so the caller never overhears what is said about them, and a voicemail greeting never gets to record a live customer.
Once the operator is connected, the agent leaves the call silently — there is no farewell phrase. The caller and the operator keep talking on the same call; the platform stops taking part in it.
The operator's leg is recorded as a separate audio stem, so a transferred call can still be reviewed end to end under Conversations.
When the operator does not answer
The transfer is treated as failed when the operator does not pick up within the ringing timeout, the line is busy or rejects the call, the provider cannot place the call at all, or the call is answered by voicemail (the platform detects answering machines and refuses to hand a live customer to a recording).
In every one of those cases the call is not lost: the hold music stops, the agent comes back, apologises in one sentence, says the request will be picked up later, and carries on with the conversation. The caller is never dropped.
Tips
- Write conditions from the caller's perspective. "The caller asks for a manager or says they want to talk to a person" beats "escalation".
- Match the ringing timeout to the team. A call centre that answers in five seconds does not need 60 seconds of hold music; a single person on a mobile might.
- Keep the operator briefing short. The caller is on hold while it plays.
- Test it end to end before publishing — with a real inbound call, not from the web widget, since the tool is not available there. See Testing.
Troubleshooting
| Symptom | Likely cause |
|---|---|
| The agent never offers a transfer | The tool is disabled, has no rules at all, or the session is a widget session rather than a phone call. |
| The agent talks about transferring but nothing happens | The rules mix Warm — auto summary with the other modes, so the tool was dropped. |
| The transfer always fails immediately | The number is unreachable from your telephony account, or the inbound number has no telephony account bound to it. |
| The operator picks up and hears music for a few seconds | Expected — the answering-machine check is running; the caller is connected right after it (in Cold mode with no briefing at all). |
| Saving the agent fails with a validation error | Warm — custom message without an operator briefing, a rule without a phone number, or a ringing timeout outside 5–120 seconds. |
Transfer to another agent
Why you need it. One prompt that covers sales, support and billing is worse at all three than three focused agents. This tool lets a front-line agent route the dialogue to a specialised one — including its own voice, language, prompt and tools — without dropping the conversation.
How to use it. Enable the tool, open its settings and add a rule per destination agent:
| Field | Required | What to put there |
|---|---|---|
| Agent | Yes | The agent to hand the conversation to. |
| Condition | Yes | When this rule applies, e.g. "The caller asks about an invoice or a payment". |
| Delay before transfer (milliseconds) | No | A pause before the switch. Useful to let a transfer message land before the new agent starts. |
| Transfer Message | No | Spoken by the current agent right before the switch, e.g. "I will transfer you to a specialist." It is played in full and cannot be interrupted. |
| Enable First Message | No | What the target agent says first. See How the handover runs below. |
The transfer happens inside the same session: the same conversation record, the same recording, no second call. It works on phone calls and in the web widget alike.
How the handover runs
When the rule fires:
-
The current agent stops speaking (any inline TTS is interrupted).
-
The optional Transfer Message is played in full.
-
Delay before transfer waits, if set.
-
The target agent replaces the current one. It inherits the full prior chat history — everything the caller already told the previous agent is visible to the new one.
-
What the target agent says first depends on Enable First Message:
Enable First Message Target has a first message What the caller hears ON yes The target's own first message is played (e.g., "Hi, I'm the sales specialist"). ON no / empty The target continues the conversation from the last user message — no greeting. OFF (either) The target continues the conversation from the last user message — no greeting.
"Continue the conversation" means the target's LLM sees the full history and responds directly to the caller's last message, as if it had been listening the whole time. It will not reintroduce itself or ask a generic "How can I help you?".
Turn Enable First Message off for a seamless handover — the second agent picks up the thread instead of starting with a greeting ritual. Turn it on only when the target must explicitly announce itself (e.g., a legal disclosure that a different specialist is now on the line).
Transfer to an agent or to an operator?
Transfer to another agent keeps the caller with the AI and costs nothing extra. Transfer to a human operator places a real outbound call and takes a person's time. Route by topic with the first; escalate out of automation with the second.
Detect language
Why you need it. A caller who starts speaking a language the agent did not expect otherwise gets answered in the wrong one for the rest of the call. This tool lets the agent notice and switch — voice, prompt and greeting — mid-conversation.
How to use it. Enable it on an agent that has more than one language configured (see Agents). No further setup: the platform passes the agent's language list into the tool at call time, and the agent may switch to those languages only. If the caller asks for a language that is not configured, the agent says so instead of switching.
The switch is triggered by an explicit request — "Can we speak in Spanish?", "Do you speak Portuguese?" — not by the caller merely mentioning a language.
If you override this tool's description, keep the [languages will be populated at runtime] placeholder: it is where the platform injects the agent's actual languages.
Skip turn
Why you need it. When a caller says "hold on, let me find my order number", a voice agent normally treats the pause as its turn and starts talking over them. This tool gives the agent a way to deliberately say nothing.
How to use it. Enable it — no configuration. The agent stays silent and waits for the caller to speak again when they explicitly ask for a moment ("give me a second", "let me think", "hold on, let me check").
It does not fire on plain silence, and it does not fire on a direct question. It is worth enabling on any agent that asks callers for numbers, addresses or documents.
Ask for clarification
Why you need it. It is a diagnostic tool: it records what the agent was missing to finish the job — an account number the caller never gave, context that was not in the prompt, an ambiguous instruction. Reviewing those records shows you what to add to the prompt, the variables or the webhook tools.
How to use it. Enable it and review the tool calls under Conversations.
Placeholder tool
This one is marked Placeholder in the tools list: it performs no action and changes nothing in the conversation — it only logs the request for analysis. The agent keeps talking to the caller as usual after calling it.
Summary
| Tool | Effect on the call | Configuration |
|---|---|---|
| End call | Ends the session after the agent's farewell | Description only |
| Transfer to a human operator | Outbound call to a person, then the agent leaves | Transfer rules; phone sessions only |
| Transfer to another agent | Another AI agent continues in the same session | Transfer rules |
| Detect language | Voice, prompt and greeting switch language | Agent's languages |
| Skip turn | The agent stays silent for one turn | Description only |
| Ask for clarification | None — logged for analysis | Description only |