Kitoko ReceptionistTry a booking

Claude + PayPal, under the hood

How it works

One AI receptionist for a beauty pro, on every channel. It books real times, takes the deposit with PayPal, applies her cancellation policy and keeps her calendar live.

Kitoko Receptionist architectureWeb chat, WhatsApp and MCP clients talk to a Claude agent. Its tools call the booking services, which move money through PayPal and store bookings in Supabase. Supabase Realtime updates the pro's Bryntum calendar.CHANNELSWeb chatpro pageWhatsAppCloud APIMCPoutside AI agentsClaude agentclient receptionist · pro assistant · toolstool calls (ids, never amounts)Services · booking engineslots · quote · hold · deposit · policy · payoutPayPalsandboxOrders v2 + JS SDK v6depositWebhooksverified, dedupedRefundscancellation policyPayoutspay the proInvoicing v2the balanceReporting · DisputesAgent ToolkitSupabasePostgres + RLSbookings · agent_eventsRealtimeBryntumpro's live calendarBack loop: calendar drag or sick day → agent → client
  1. 01

    Ask

    A client writes on the pro page, on WhatsApp, or through her own AI assistant over MCP.

  2. 02

    Hold

    Claude finds real free times and holds one: 15 minutes on the web, 30 on WhatsApp and MCP, topped up once when the pay page opens.

  3. 03

    Pay

    PayPal Orders v2: the client approves the deposit; the capture confirms the booking.

  4. 04

    Run the day

    The pro's Bryntum calendar updates live. Cancellations refund per policy, done bookings pay her out.

Guardrails

  • Amounts never come from the model. Tools take ids and times. Prices, deposits, fees, refunds and payouts are computed by the booking engine and SQL from stored rows.

  • A human confirms every money move. Clients approve the PayPal deposit themselves (an MCP agent only gets the approval link). Refunds and payouts the pro asks for wait for her button press.

  • PayPal is verified and idempotent. Webhooks are checked with verify-webhook-signature and stored once by event id. Every PayPal POST carries a PayPal-Request-Id. Capture is idempotent.

  • Every tool call is logged. Each call lands in agent_events with its inputs, a summary of its result and its duration: the timeline below reads them.

Live: one booking, step by step

Every agent tool call, PayPal event and booking change, in order, with how long each call took. Open /how-it-works?ref=ABC123 with the reference from your confirmation to follow your own booking.

M64YMTexpiredWeb chatlatest demo booking

Cornrows with Aïcha · Aïcha Braids

Wed 28 Oct, 15:30 (Europe/Rome)

Price
€45.00
Deposit
€30.00
Booking fee
€1.50
Paid
€0.00

Step by step

live, every 3 s
  1. BookingBooking M64YMT held

    out source: web · staff: Aïcha

  2. BookingHold expired

    out the deposit was not paid in time