Skip to main content
This page shows you how to build a booking MCP app with @waniwani/sdk. The user picks a service, the funnel checks availability, the user picks a slot, the funnel confirms. Runs as one MCP tool inside ChatGPT, Claude, or any MCP client.

What you’ll build

A booking flow that:
  1. Asks what service they want (haircut, consultation, demo, etc.)
  2. Calls your availability API (action node)
  3. Asks the user to pick a slot
  4. Confirms the booking with your backend
  5. Returns a booking reference

Flow graph

Code

Register

Patterns this uses

  • Action nodes for API calls. fetch_availability and confirm_booking run without user interaction. See Flows → Nodes.
  • Suggestions passed at runtime. ask_slot uses suggestions computed from state.availableSlots. See Flows → Interrupts.
  • Conditional re-asking. Add a validate callback on slot to re-ask if the slot was taken between fetch and confirm.

Variants

  • Recurring availability cache. Skip the fetch_availability node by pre-loading slots and rotating them daily.
  • Multi-service with conditional branching. Branch on service to ask different follow-up questions (e.g. “Bringing a guest?” only for consultations). See Flows → Edges.
  • Add a confirmation widget. Use showWidget to display the booking card visually. See the Pet Insurance Quote example for the widget handoff pattern.

Add funnel analytics

Set WANIWANI_API_KEY and you’ll see step-by-step drop-off using the node labels: Pick a service → Pick a slot → Capture contact → Confirm booking. fetch_availability is hidden from the funnel (hideFromFunnel: true) because it’s plumbing, not a user-facing step. Helps you spot whether users abandon at slot selection or contact info. See Tracking → Overview.

Next

Build a sales funnel MCP

Build an insurance quote MCP

Widgets in flows

Conditional edges