Built-in Tools
Ready-to-use tools for common functionality in voice applications.
Ultravox Realtime includes several built-in tools that provide common functionality out of the box. These tools are publicly available and work exactly like custom tools you create yourself.
Available Built-in Tools
Tool Name | Description |
---|---|
queryCorpus | Retrieves relevant information from an existing corpus (knowledge base). See Query Corpus API for details. |
leaveVoicemail | Leaves a voicemail and ends the call. Intended to be used with outbound phone calls. |
hangUp | Terminates the call programmatically. Useful for ending conversations gracefully. |
playDtmfSounds | Plays dual-tone multi-frequency (dialpad) tones. See DTMF documentation for sending and receiving tones. |
More information about these can be found below in Tool Details →
Built-in tools use the same definition structure as custom tools. You can view their complete specifications using the List Tools API.
Using Built-in Tools
Using built-in tools is the same as using any other custom durable tool that you have created except for one difference: you can override built-in tools by using the same name.
For example, if you created a durable tool named “hangUp” and then provide that tool by name (i.e. not by the toolId), then your tool would be used instead of the built-in hangUp tool.
Add built-in tools to your agents when creating calls or call stages:
Using Tool Names
Using Tool IDs
If you have multiple tools with the same name, you can use the unique toolId
instead. Agents will see the modelToolName
.
Viewing Available Tools
Use the List Tools API to see all available tools, including built-ins:
The List Tools API returns both built-in tools and any custom tools you’ve created, making it easy to see all tools available in your account.
Tool Parameters
Tools can use and pass parameters (i.e. send variables to the underlying API). The parameters for each built-in tool are explained below.
See Tool Parameters → for details about the different types of parameters used by tools.
Tools can use and pass parameters (i.e. send variables to the underlying API). The parameters for each built-in tool are explained below.
See Tool Parameters → to learn about the different types of parameters used by tools.
Built-in Tool Details
queryCorpus
Searches through a knowledge base (corpus) to find relevant information (AKA RAG).
Requires the ID of the corpus (corpus_id
) to be used for all queries and a dynamic query
parameter is used for each query. Optionally, you can restrict the number of results that are returned to the agent (via max_results
) along with a minimum semantic similarity score (minimum_score
).
Example Usage:
Parameters
Required Parameter Override:
The ID of the corpus to be used for all queries.
Dynamic Parameters:
What to search for.
How many chunks to receive back. Can be any value from 1-20.
Static Parameters:
Can be used to only return content with a minimum semantic similarity score.
leaveVoicemail
When making outbound phone calls, used to leave a voicemail and then end the call.
A dynamic message
parameter is used for the message that will be left. Optionally, you can change the hang up behavior with strict
and the return message with result
.
Example Usage:
Parameters
Dynamic Parameters:
The voicemail message to leave.
Static Parameters:
true
ends the call regardless of user interaction. If set to false
, any user interaction (i.e. speech or interrupting the voicemail) will cause the call to continue.
The message that is returned from the tool call. Will be added to conversation history.
hangUp
Ends the current call programmatically.
Optionally accepts a dynamic parameter called reason
. A static parameter called strict
can be overridden to enable the call to continue if the user speaks and continues the call.
Example Usage:
Parameters
Dynamic Parameters:
A brief reason for hanging up.
Static Parameters:
true
ends the call regardless of user interaction. If set to false
, any user interaction (i.e. speech) will cause the call to continue.
playDtmfSounds
Plays telephone keypad tones (dual-tone multi-frequency signals).
Requires a dynamic parameter called digits
. Static parameters for toneDuration
and spaceDuration
can be overridden. Automatically sets the sample rate based on current call medium.
Example:
Parameters
Dynamic Parameters:
The digits for which tones should be produced. May include: 0-9, *, #, or A-D.
Static Parameters:
The length (in seconds) that tones will be emitted.
The length (in seconds) that spaces (AKA silence between DTMF tones) will be emitted.
Customizing Built-in Tools
Overriding Tool Behavior
You can customize built-in tools by overriding their names or descriptions:
Parameter Overrides
Some built-in tools require or allow parameter overrides:
See the guide on Parameter Overrides →
Replacing Built-in Tools
You can override built-in tools by creating your own tool with the same name:
When you reference a tool by name, your custom tool will be used instead of the built-in version.
Tool ID vs Name Priority
If you reference a tool by toolId
, you’ll always get that specific tool. If you reference by toolName
and have a custom tool with the same name, your custom tool takes precedence over the built-in version.
Authentication
Built-in tools handle authentication automatically - no additional setup required. However, some tools like queryCorpus
require you to specify which corpus to search via parameter overrides.
Next Steps
- For more advanced tool usage, see our guides on parameter overrides and async tools.