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

ToolWorks onWhat it does
create_bookingAll channelsCreates a calendar event (Google or CalDAV)
shopify_orderAll channelsLooks up Shopify orders by number, email, or phone
knowledge_searchAll channelsSearches the agent's knowledge base
transfer_callPhone onlyHands the live call to a human or another number
send_smsPhone onlyTexts the current caller
end_callPhone onlyEnds the live call
Tip · The phone-only tools manipulate a live call, so they're not offered to website, SMS, or workflow text agents. Every tool call is recorded as a trace you can see in Logs.

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" }
Tip · Keep responses small and human-readable. The model relays your fields to the customer, so { "confirmation": "BK-8842" } is better than a giant nested payload.
Important · Webhook tools time out after 10 seconds per call (with retry/backoff). Keep your endpoint fast, or return a 'working on it' response and follow up.

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"]
}
Tip · Good descriptions matter more than anything else — the model reads them to decide what to pass. "Booking date, YYYY-MM-DD" routes far better than just "date".

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.

FieldValue
Namelookup_order
DescriptionLook 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 URLhttps://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.

Note · Folders are organizational only — they never change what a tool does or which agents use it. Deleting a folder keeps every tool; the tools simply move to "Unfiled".