Splendid Booking

Your bookings, from your AI or your own code.

Everything the admin page can do is available two ways: as an AI connector (MCP) you add to Claude, ChatGPT or Cursor in two minutes, and as a REST API with a key from Settings. Same permissions as your login, same audit trail. Included on every plan.

Use it from your AI

Add this connector URL in your AI app, sign in with your Splendid Booking admin login, tick the businesses and what the connection may change, and start asking.

https://mcp.splendidbooking.com/mcp
Things people ask once it is connected: what is on tomorrow · book Chris Martin Friday at 10 for two rooms · move Saturday's 9 AM to Monday · who still owes me money · close next Friday afternoon · send the invoice for job 4471 with a pay link · which calls did nobody call back. Anything that emails or texts a customer says so before it runs, and nothing is cancelled, completed or closed without your word.

Revoke a connection any time from Settings → API & AI connectors, or from the AI app. Each business you manage shows the connection and can revoke its own part of it.

API keys

Settings → API & AI connectors → New key. Name it, tick what it may change, and copy it: it is shown once. A key acts as your login and can never do more than you can. Managers and staff logins do not make keys; they connect through the AI sign-in instead and see exactly what their portal shows.

Quickstart

curl -H "Authorization: Bearer sb_live_..." \
  "https://api.splendidbooking.com/v1/bookings?from=2026-10-20&to=2026-10-20"

curl -H "Authorization: Bearer sb_live_..." \
  "https://api.splendidbooking.com/v1/reports/outstanding?from=2026-10-01&to=2026-10-31&format=csv"

curl -X POST -H "Authorization: Bearer sb_live_..." -H "Content-Type: application/json" \
  -d '{"first_name":"Chris","last_name":"Martin","phone":"540-555-0100","service_id":12,"date":"2026-10-24","slot_id":3}' \
  https://api.splendidbooking.com/v1/bookings

The spec itself: openapi.json (OpenAPI 3.1). Import it into Postman, Bruno or any generator.

Conventions

Scopes and roles

Two layers. The role of the login behind the token (owner, partner with its dials, manager, staff) is the ceiling: a staff token lists only that person's jobs, a partner without the invoices dial cannot send one. Scopes narrow further and are chosen when the key or connection is made:

Several businesses, one connection

If your login email is an admin on more than one business, one key or one AI connection can cover all of them. Every call runs under exactly one business: name it with the X-Business: <slug> header (or ?business=). A write without it is refused with BUSINESS_REQUIRED; reads without it return the list of businesses where that makes sense. In the AI, every tool takes a business argument and the connection knows which role you hold on each.

Limits and errors

Reference

Generated from the live spec. Each endpoint names the scope it needs and, where one exists, the AI tool that wraps it.

Loading the spec…

MCP: tools, resources, prompts

The connector exposes one tool per endpoint marked with a tool name above, plus api_request (method, path, query, body) for everything else after reading the splendid://openapi resource. Read tools are marked read-only; cancel, complete and close carry the destructive hint, so a well-behaved client asks first.

Five prompts ship with it, each a worked procedure: morning_briefing (today's jobs, walk-ins, unhandled calls, money owed, reminders going out), end_of_day, customer_lookup, fill_a_slow_day and weekly_numbers.

Transport: Streamable HTTP, stateless. Auth: OAuth 2.1 with dynamic client registration and PKCE; discovery at /.well-known/oauth-authorization-server. A personal API key works as the bearer too (for scripts and Claude Code).

Changelog