POST to your HTTPS endpoint, and speaks the result back to the caller within seconds. No human intervention, no call transfers required.
Typical uses include customer lookups, appointment booking, CRM updates, inventory checks, and knowledge base queries.
How a tool call works
By default the caller waits in real time throughout this flow, so keep your handler fast. For slow tools, see While the tool runs.
Add a tool in the Agent Editor
In the dashboard, open your agent and navigate to Tools → Add Tool. Fill in the following fields:- Tool name — a
snake_caseidentifier the AI uses internally (e.g.lookup_customer,book_appointment). Keep it short and descriptive. - Description — plain-English instructions that tell the AI when to call this tool. Be explicit. Start with “Call this tool when…” and list trigger phrases. The description is how the AI decides whether to invoke the tool.
- HTTP method — use
POSTfor writes and lookups that need call context; useGETfor simple lookups. - Endpoint URL — your endpoint’s full URL,
https://(recommended) orhttp://. - Headers — add auth headers here (e.g.
Authorization: Bearer your-secret). They are sent verbatim on every request. - Argument schema — define the arguments the AI should extract from the conversation (see below).
- While this tool runs / When the result arrives — whether the agent waits for your endpoint or keeps talking, and when it gives the result (see While the tool runs).
- Timeout (seconds) — how long Verbeo waits for your endpoint (5–300 s, default 30 s).
While the tool runs
Two settings on each custom tool control how the conversation continues while your endpoint works. They apply to agents on Gemini 3.8 Live. While this tool runs
When the result arrives (only with Keep talking)
- Gemini 3.1 ignores these settings. They are kept on the tool and apply once the agent runs on Gemini 3.8 Live.
- Built-in tools (end call, transfer, SMS, voicemail, calendar, knowledge base) are managed by Verbeo and have no such settings.
call_analyzed webhook may be sent before it finishes; such a tool then appears in tools[] without a result.
Argument schema
The argument schema tells the AI what data to extract from the conversation and pass to your endpoint. Each argument has:
Writing good argument descriptions:
Implement your endpoint
Your handler receives aPOST with the tool_invoked event envelope. Parse payload.args for the extracted arguments and payload.call for call metadata including the live transcript.
Here is a minimal Node.js/Express example that handles an appointment booking tool:
Response format
Return JSON within the tool’s timeout. Your response shapes what the agent says next.
Examples:
The tool_invoked webhook payload
This is the full payload your endpoint receives on every tool invocation:
payload.args contains exactly the arguments you defined in the schema. payload.call gives you the current call state including the live transcript and any dynamic variables you passed at call creation.
Timeout and error handling
If your real operation takes more than a few seconds:
- On Gemini 3.8 Live, set the tool to Keep talking (see While the tool runs): the caller can keep talking to the agent while your endpoint works, and the agent gives the result when it arrives. The agent does not fill the silence on its own if the caller says nothing.
- On Gemini 3.1 (where the setting is ignored), return an immediate holding message and handle the result asynchronously:
Security recommendations
- Add an auth header — configure a shared secret in the tool’s Headers field (e.g.
Authorization: Bearer your-secret). Verbeo sends it verbatim on every request. Reject any request missing it. - Use HTTPS — every request carries the tool’s headers, your keys included. An
http://endpoint is accepted, but it sends them unencrypted. - Be idempotent — network conditions can duplicate requests. Deduplicate by
call_id + tool_name + args. If you have already processed an identical invocation, return the same response. - Handle PII carefully —
payload.call.transcriptmay contain names, phone numbers, and other personal data. Only log or forward it to systems that meet your privacy requirements.
Tool invocations in post-call data
Every tool call during a call appears in thecall_analyzed webhook event — in payload.data.tools[] with the full args, result, and timestamp, and inline in payload.data.transcript[] with role: "tool". This gives you a complete audit trail of what the agent did on every call.