Build on Ritorai.
Connect Claude, ChatGPT or your own code to the inbox, bookings and Ask Ritorai today. A REST API and webhooks are next.
curl -X POST "$RITORAI_MCP_URL" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "ask",
"arguments": {
"question": "Which chats are waiting on me?"
}
}
}'const res = await fetch(process.env.RITORAI_MCP_URL, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "ask",
"arguments": {
"question": "Which chats are waiting on me?"
}
}
}),
});
console.log(await res.json());import json, os, urllib.request
req = urllib.request.Request(
os.environ["RITORAI_MCP_URL"],
data=json.dumps({
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "ask",
"arguments": {
"question": "Which chats are waiting on me?"
}
}
}).encode(),
headers={"Content-Type": "application/json"},
)
print(json.load(urllib.request.urlopen(req)))
Response
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"content": [
{
"type": "text",
"text": "3 chats are waiting on you. Longest: Emma Clarke, 36 min"
}
],
"isError": false
}
}
Quickstart
A connector link is one personal URL. It acts as the person who made it, with their role and branches.
- Make a linkIn Ritorai, open Settings → Connect an AI assistant, name it and tap Create link. It's shown once.
- Add it, or call itPaste it into Claude or ChatGPT as a custom connector, or POST JSON-RPC to it from your own code.
- Ask“Which chats are waiting on me?” Answers come from the same functions as Ritorai's screens.
List the tools
Model Context Protocol over one POST: JSON-RPC 2.0, no session and no stream.
curl -X POST "$RITORAI_MCP_URL" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/list"
}'const res = await fetch(process.env.RITORAI_MCP_URL, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
"jsonrpc": "2.0",
"id": 2,
"method": "tools/list"
}),
});
console.log(await res.json());import json, os, urllib.request
req = urllib.request.Request(
os.environ["RITORAI_MCP_URL"],
data=json.dumps({
"jsonrpc": "2.0",
"id": 2,
"method": "tools/list"
}).encode(),
headers={"Content-Type": "application/json"},
)
print(json.load(urllib.request.urlopen(req)))
Response
{
"jsonrpc": "2.0",
"id": 2,
"result": {
"tools": [
{
"name": "ask",
"title": "Ask Ritorai"
},
{
"name": "list_waiting_chats",
"title": "Waiting chats"
},
{
"name": "read_chat",
"title": "Read a chat"
},
{
"name": "reply",
"title": "Send a reply"
},
{
"name": "add_note",
"title": "Add a note"
},
{
"name": "confirm_booking",
"title": "Confirm a held booking"
}
]
}
}
Six tools
No campaigns, templates, bulk sends, settings or deletes. Every reply follows the same rules as the inbox.
askAsk anything Ask Ritorai answers: bookings, free times, cars due, your figures.
readlist_waiting_chatsChats in one inbox folder, longest wait first.
readread_chatOne chat: the customer, who has it, whether a reply can go, bookings and the last 30 messages.
readreplyReply to the customer inside WhatsApp's 24-hour window. STOP and staff-only rules still apply.
writeadd_noteA note for the team. The customer never sees it.
writeconfirm_bookingConfirm a booking held for staff; the customer gets the usual notice.
writeThe details
Protocol versions
2025-06-18, 2025-03-26, 2024-11-05. An unknown version gets the newest.
Limits
60 calls a minute and 1,000 a day per link. Up to 5 links per person.
Security
Links are kept only as a SHA-256 hash and stop at once when cancelled or the person is deactivated. Every call is logged, without its text.
Errors
A link that doesn't work gets a 404. An unknown method gets -32601; a tool that can't run returns isError: true with the reason.
Marked for staff
A reply or note sent this way shows “via AI assistant” to staff, never to the customer.
On per company
On by default for every company that signed Ritorai's agreement, and can be switched off.
What connects today
AI assistants (MCP)
Claude, ChatGPT or any MCP client, with the six tools above.
WhatsApp Business Platform
An official number per branch, connected with Meta. Templates are synced and message statuses come back.
Facebook and Instagram lead forms
Lead forms and messages from your Page arrive as leads, with an owner and a deadline.
Your DMS, read only
Repair orders, customers and cars sync nightly, and today's orders every 5 minutes. ERPNext today.
CSV export
Customers and bookings, as filtered on screen, for your other systems.
Google business listing
Fill a branch's address, hours, map and review link from Google.
Next
Tell us what you want to build, and we'll build what's needed most first.
REST API and API keys
Read customers, cars, bookings and leads; create leads and bookings from your systems, with keys per company.
Outgoing webhooks
booking.confirmed, booking.arrived, lead.created, message.received, contact.opted_out. Signed, with retries.
TikTok lead forms
TikTok leads arrive like Facebook leads, with the same consent rules.
Lead stages back to Meta
Tell Meta which leads became paid visits, so ads find more people like them.
Building something?
Tell us your systems and what you want to connect.