Give her one errand — book the table, check the stock, report the absence. She rings the business, says she is an AI, gets it done, and hands back what happened, in words.
Built for assistant hosts — plain HTTP with an OpenAPI spec, or an MCP server for Claude and ChatGPT hosts.
Works with Muse — say the errand to Muse, Sakhai makes the call.
Your assistant gathers what the task needs, shows its user the business, the number and the errand, and asks the task's own question — Shall I ring Piatti and book a table for two on Friday at seven? On their yes, one request comes to Sakhai.
A task from the catalogue, the business, its number, the details, and the user's yes. She answers 202 with an id in under a second.
Opens by saying she is an AI assistant calling for your user. Presses through the menu, waits out the hold, says the errand, and listens to what they say back.
One of four outcome words with the answer, the price, the conditions — signed to your webhook, or read back from GET /calls/{id}. Never audio.
Each task tells your assistant what it needs, and gives it the question to put to its user.
book_tabledate, time, party
"a table for two on Friday at seven"order_pickupitems, when
"an order for collection: two idli at noon"check_stockitem, item number
"do you have the 14-inch one on the floor right now"check_appointmentdate
"whether Friday's appointment still stands"report_absencedate, reason
"Amy will not be in on Wednesday"get_quotewhat, when
"what they would charge for a gutter clean"askone question
your user's own words, oncearrangeone request
your user's own words, oncePOST https://api.sakhai.care/api/v1/calls
Authorization: Bearer sk_sakhai_…
{"task": "book_table", "business": "Piatti", "phone": "+1 925 …",
"details": {"date": "2026-09-26", "time": "19:00", "party": 2},
"for": {"name": "Moses"}, "fallback": "any time between six and eight",
"tz": "America/Los_Angeles", "consent": true}
→ 202 {"id": "c_…", "status": "calling",
"errand": "a table for 2 on 2026-09-26 at 19:00"}
→ your webhook, signed:
{"id": "c_…", "status": "completed",
"outcome": {"answer": "seven for two, in the name Rajan",
"booked": true, "confirmed": true,
"conditions": "fifteen minutes' grace", "held_s": 75}}
Plain HTTP with an OpenAPI 3.1 spec, or an MCP server for Claude and ChatGPT hosts. The docs are one page.
A phone number is the account. A code by text, the key shown once. Nothing to install on your side.
How often it works is measured on real errands, each call marked by a person against what the business actually said. The number goes on this page when there are fifty judged calls, not before.
The outcome is words. She says on the line that the call is transcribed; the transcript is judged when the call ends and then it is gone.
A pharmacy, a doctor's or dentist's office, a clinic, a lab, an insurer, a bank, a utility account — anywhere the other end must find the person in its own records first — is refused before dialling. She never asks for a date of birth or an account number to try anyway.
Every request carries the user's answer to the task's own question, asked after they saw the business, the number and the errand. Never assumed from the first message.
Every call opens with who she is and who she is calling for. A message left on a recorder is reported as left only when her own words are on the tape.
The same voice, as a companion for families: reminders that are never invented, a call or a WhatsApp away, in the language of home. The family app is in TestFlight now; the stores follow.
hello@sakhai.care for the family app · how she treats what she hears