For agents and developers
Plugging the receptionist into your systems.
Out of the box, every booking and message lands in the business’s AI3 diary and inbox and the owner is emailed. Four ways to go further, all optional, all from the console at /o/<slug>/voice or the API below.
1. A webhook for bookings
Set “Bookings go to” to your webhook and give a secret. Before offering a time the receptionist POSTs:
POST https://your.example/hook
content-type: application/json
x-ai3-signature: sha256=<hex HMAC-SHA256 of the body under your secret>
{"action":"check_availability","business":"Bluebird Plumbing","date":"2026-09-23","window":"afternoon","service":"Dripping tap"}
Answer {"available":["13:00","15:30"]} (times that day, 24-hour) or {"available":[],"closed":true}. Anything else, or no answer within ten seconds, and the receptionist falls back to the business’s opening hours less what it has already booked.
When the caller agrees:
{"action":"booking","business":"Bluebird Plumbing","booking":{"id":"bk_x1","when":"2026-09-23T15:30","service":"Dripping tap","name":"Dana Ortiz","phone":"+17185550142","email":"","details":"Kitchen, ground floor","source":"voice"}}
Answer {"reference":"AB-77"} and the reference is read to the caller and kept on the booking. The booking is saved on AI3 whether or not you answer.
2. A webhook for callers
Every caller, booking and message goes on the organisation’s customer record on AI3 first. “Callers are recorded in” chooses where that record is mirrored: nowhere else (the default), HubSpot (a private app token; each caller a contact, each event a note), or your own system, which gets one signed POST per write: {"action":"contact"|"booking"|"message", "business", "contact":{id, name, phone, email, company, source}, "activity":{kind, text, by, ref, at}, "note", "message"}. The credential is kept on AI3 and never echoed by the profile API, which shows (set) in its place.
3. Tools that read your own system
Add a tool: a name the receptionist calls, a sentence on when to use it, the URL and method, your headers (kept on AI3, never sent to the model), and typed parameters. Mid-call it says “let me check that”, makes the request, and reads the JSON back in words. Parameters go as a JSON body, or as the query string for GET. A tool that does not answer within fifteen seconds is reported to the caller as unavailable and a message is offered instead. Every call is logged under the business.
name: is_car_ready
when: Whether a customer's car is ready to collect, given its registration.
url: https://garage.example/api/ready method: GET
headers: Authorization: Bearer …
parameters: plate:string:The registration plate:required
4. MCP servers
A system that speaks MCP (Streamable HTTP or SSE) gives the receptionist all of its tools at once. Add its URL, an optional bearer token, and whether tools run without asking. The business’s own AI3 organisation is an MCP server too (docs), which is how the receptionist reads its messages, services and orders.
The profile API
Everything the console edits is one JSON document. Read and write it with an owner’s personal token (Authorization: Bearer ai3t_…, minted at /companies):
GET https://ai3.co/api/o/<slug>/voice
POST https://ai3.co/api/o/<slug>/voice {"profile": { …any subset of the profile… }}
The profile’s shape: persona (name, language, extraLanguages, voiceId, style), business (name, vertical, trade, description, phone, website, address, serviceArea, timezone, country, hours, services, prices), policies (greeting, canBook, collect, bookingRules, takeMessages, afterHours, transferNumber, transferWhen, neverSay, custom), knowledge (website, urls, text, faq), integrations (booking, crm, notify, tools, mcp), compliance (record, retentionDays). Verticals: trades, restaurant, clinic, salon, retail, professional, property, hospitality, fitness, automotive, generic. A write is normalised, saved, and pushed to the agent at once; the response is the saved profile.
What it never does
- It never hides that it is an AI agent. The disclosure is a condition of the voice platform and of the law wherever it calls; there is no switch.
- It never invents a price, an hour or an availability: those come from the profile, the knowledge base, or a tool result, or it says it does not know.
- It never takes card numbers or passwords.
Costs: the business is billed for the minutes and model use each call took, plus the seller’s margin, on its own line. The receptionist on /hire · How money moves.