Tools
Give agents actions: bookings, transfers, webhooks, CRM.
Shared tools
Tools are reusable across agents. Create a tool once in the Tool Library, then attach it to any agent. You can define webhook tools that POST to your own endpoint, and the platform ships built-in tools you can use right away.
A tool configured once behaves identically on every agent type — phone, website chat, SMS, and workflows all run through the same tool orchestrator.
Built-in tools
| Tool | Works on | What it does |
|---|---|---|
| create_booking | All channels | Creates a calendar event (Google or CalDAV) |
| shopify_order | All channels | Looks up Shopify orders by number, email, or phone |
| knowledge_search | All channels | Searches the agent's knowledge base |
| transfer_call | Phone only | Hands the live call to a human or another number |
| send_sms | Phone only | Texts the current caller |
| end_call | Phone only | Ends the live call |
What is a webhook tool?
A webhook tool lets your agent take a real action in another system — book an appointment, check inventory, save a lead, look up an order. You give us one thing: a URL (your "webhook"). When the model decides the tool is needed, we POST the arguments it chose to that URL and feed the JSON you return straight back into the conversation.
Not a developer? Point the URL at a no-code automation (Zapier, Make, n8n): create a "Webhook" trigger there, copy its URL, and paste it into the tool. That automation does the real work (update a sheet, hit your CRM, send an email) and returns a result.
Request / response contract
We always send a POST with a JSON body containing the model's arguments. Respond with HTTP 200 and a JSON object — the agent reads its fields and speaks/writes them back to the customer. Non-200 responses are treated as a tool error and surfaced to the model so it can recover.
POST https://your-api.com/book ← your webhook URL
Content-Type: application/json
{ "name": "Jane", "date": "2026-06-10", "time": "14:00" } ← arguments the model chose
— your server replies —
200 OK
{ "ok": true, "confirmation": "BK-8842", "when": "Tue Jun 10, 2:00 PM" }Parameters (JSON Schema)
The parameters field is a JSON Schema that tells the model exactly what arguments your webhook accepts. The model fills these in from the conversation and we validate them before calling your URL. Mark the ones you require — the agent will ask the customer for anything missing.
{
"type": "object",
"properties": {
"name": { "type": "string", "description": "Customer's full name" },
"date": { "type": "string", "description": "Booking date, YYYY-MM-DD" },
"time": { "type": "string", "description": "Start time, 24h HH:mm" },
"party": { "type": "integer", "description": "Number of guests", "minimum": 1 }
},
"required": ["name", "date", "time"]
}Worked example: order lookup
Say you run a coffee shop and want the agent to look up a customer's order. Create a webhook tool like this, attach it to your agent, and use the Test button to fire a real call before going live.
| Field | Value |
|---|---|
| Name | lookup_order |
| Description | Look up the status of a customer's order by order number. Use when the caller asks where their order is or whether it's ready. |
| Server URL | https://hooks.yourshop.com/orders/lookup |
| Parameters | { order_number: string (required) } |
// the model sends:
{ "order_number": "SBX-2291" }
// your webhook returns:
{ "status": "ready", "items": ["Grande Latte", "Blueberry Muffin"], "pickup": "Front counter" }
// the agent then says:
"Your order SBX-2291 is ready for pickup at the front counter — a grande latte and a blueberry muffin."Click Test in the builder's Tools tab to run the exact same execution the live channels use (no simulation) and see the real response, latency, and any errors before you ship.
Organizing tools with folders
Folders are optional, workspace-level buckets for keeping a growing Tool Library tidy (e.g. "Booking", "CRM", "Call control"). In the Tool Library, use the folder sidebar to filter and the search bar to find a tool by name or description. In an agent's Tools tab, that agent's attached tools are grouped by folder so a busy agent stays readable.