Tools are workspace-level resources shared across agents. Removing a tool from an agent detaches it — the tool stays in your workspace and remains attached to other agents. Editing a tool updates every agent that uses it, and those agents show unpublished changes until you publish.
Create a webhook tool
In the Builder, open Tools and choose Add tool → Webhook. A tool created from the Builder is attached to the current agent immediately; use the tool’s Access tab to enable it for other agents.1
Name and describe the tool
The model decides when to call a tool based on its name and description. Write the description for the model: say what the tool does and when to use it — “Look up the status of an order. Use when the caller asks where their order is.”
2
Declare arguments
Each argument is a name plus a description. Arguments are exposed to the agent as tool parameters — the description tells the model what value to extract from the conversation.
3
Configure the request
Pick a method (
GET, POST, PUT, PATCH, or DELETE — default POST), the endpoint URL, a content type (default application/json), and an optional body template.4
Add headers
Attach authentication or any custom headers — they are sent with every webhook request.
5
Set response handling
Choose a timeout (1–120 seconds, default 30) and how errors are surfaced to the agent.
Argument templating
Reference any declared argument with{{name}} — in the URL, in the body template, or both. The platform substitutes the values the agent supplies before sending the request.
Endpoint URL
Body template
Authentication headers
Each header has a kind that identifies what it carries:
Header values are sent exactly as you store them. The Builder’s Bearer and Basic presets create the
Authorization header with the Bearer or Basic prefix pre-filled — complete the value with your credential.
Timeouts and error handling
timeout_seconds caps how long the platform waits for your endpoint: 1–120 seconds, default 30. Voice conversations happen live — keep endpoints fast, and lower the timeout so a slow backend can’t stall the call.
error_handling controls what the agent learns when a call fails (default passthrough):
Use
hide when error responses might leak internal details you don’t want spoken aloud.
Mock responses
A tool can store mock responses — canned payloads, each with aname, a status_code (100–599), a content_type, and a body. Mocks are saved with the tool’s configuration for test scenarios, but they don’t intercept anything yet: preview and live calls always hit the real endpoint.
Test your tool
The tool editor’s Test tab fires a real request at your endpoint. Fill in the arguments as JSON (pre-filled with a sample based on your declared arguments) and send — you get back the status code, latency, response headers, and response body. A failing test never blocks saving the tool. Response bodies are captured up to 64 KB; larger bodies are cut off and flagged withresponse_truncated.
Create tools via the API
POST /v1/agent/tools creates a tool in your workspace. Tools created this way are not attached to any agent — enable them per agent afterwards.
Create a webhook tool
Escalate to a ticket mid-call
When the agent can’t resolve an issue, the strongest close is a ticket opened while the caller is still on the line, with the ticket number read back aloud. Thecreate_ticket tool above is the entire integration — what makes it work is the prompt around it and the response your endpoint returns.
Set the escalation policy in the prompt. The tool description says what the tool does; the system prompt says when escalating is the right move:
System prompt excerpt
error_handling: passthrough (the default), the agent sees your response body and uses it in its next reply — so respond with what the caller should hear:
Endpoint response
An in-call ticket depends on the model choosing to escalate. For a safety net
that catches every unresolved call — including those where the agent never
called the tool — pair this with auto-ticketing from post-call
analysis.
Limits
URL restrictions
Endpoint URLs must usehttp or https. Requests to localhost, private network ranges, and cloud metadata endpoints are rejected, and URLs may not embed credentials. The Builder validates the URL as you type; the API enforces the same rules.
Going further
Client tools
Run tool calls in your own app instead of over HTTP.
System tools
Built-in capabilities you toggle per agent.
Preview calls
Talk to your agent and watch tool calls fire.
Agent tests
Assert on agent behavior, tools included.

