- Recognize the caller from their number in your CRM
- Check a blocklist or do-not-call list
- Look up the caller’s account tier or VIP status
- Find the caller’s open support tickets
Two ways to run a pre-answer lookup
Both run in the background as soon as the call arrives (on an outbound call, once the person answers), and neither ever delays the greeting.
Option 1: Before Call webhook
Add a webhook and set its condition to Before Call. The request body includes the caller’s number, and you can use{{caller_id}} in a parameter value. The response body is added to the agent’s context. See CRM Integration (Before Call) for a full example.
You can configure one Before Call webhook per agent. If your agent editor shows a Pre Answer function, use a Before Call webhook instead and enter your own URL — it is the same kind of webhook, set up explicitly.
Option 2: MCP tools while the phone rings
Use this when the data lives behind an MCP server the agent is already connected to.1
Open the MCP connection
Open the agent → Integrations → Model Context Protocol (MCP), select the connection, and click Edit.
2
Load the tools
Click Test Connection. This loads the tools and each tool’s inputs, which the form below needs — the Look things up while the phone rings section appears once the tools are known. A tool must be turned on in the connection’s Tools list to be used here. The section isn’t offered on an OpenTable reservation agent’s StayAPI connection.
3
Add a tool
Under Look things up while the phone rings, click Add a tool and choose a lookup tool, such as a contact search.
4
Fill in its inputs
Each of the tool’s inputs appears as a field, with required ones marked
*. Type fixed values directly (for example your CRM’s location or account ID), or, on text inputs, use Insert value to add a value from the call:Placeholders are filled in as text, so use them in text inputs; a number input holding a placeholder fails “must be a number”. You can mix fixed text and placeholders in one value, for example
tel:{{caller_id}}.5
Save
Click Update Connection (Save Connection for a new connection). In Connect the button reads Update / Connect, or Update Server / Connect Server in the modern view. Save checks that each tool is turned on, appears only once, has its required inputs filled, and uses only the placeholders above. If Save had to test the connection itself and that test loaded a tool’s inputs for the first time, it stops so you can fill them in — review them and save again.
How it behaves on a call
- All tools run at the same time, as soon as the caller’s details arrive and the MCP connection is ready.
- The AI greeting waits for all of them, but only until it would be heard: until the static greeting finishes, or, with no static greeting, until the agent would start speaking. If every result is in by then, the greeting uses them.
- If they take too long, the agent gives a neutral greeting that doesn’t guess anything, and the results are used from its next reply onwards.
- If the caller’s number is hidden, any tool that uses
{{caller_id}}is skipped. Tools that don’t need it still run. - Each lookup appears in the call transcript as a tool call with its inputs and result (and how long it took, when it ran). Failed and skipped lookups are recorded too and are never read out by the agent. Nothing is recorded if the MCP server can’t be reached when the call starts, or if the call ends before the lookups finish.
- Results are given to the agent as data. Each result is limited to 4,000 characters in the agent’s context (the transcript keeps it in full), so narrow the lookup — for example a limit of 1 — to keep the caller’s details within it.
- Outbound calls: there is no ringing on your side, so the lookups run once the person answers, and
{{caller_id}}is the number being called. - Agent-to-agent transfers: the lookups run once per call, for the agent that answers. They don’t run again for the agent a call is transferred to.
Via the API
MCP pre-answer tools are stored on each connection aspre_answer_calls. See Create Agent — MCP Servers Request Body for the fields and rules, and Get Agent for the stored shape.
