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
- Claude.ai (Pro, Max, Team, Enterprise): Settings → Connectors → Add custom connector → name it, paste the URL, Add. Claude detects the sign-in flow by itself.
- ChatGPT (developer mode on a paid plan): Settings → Connectors → Create → paste the URL, OAuth.
- Claude Code:
claude mcp add --transport http splendid https://mcp.splendidbooking.com/mcpthen/mcpto sign in. - Claude Desktop, Cursor, Windsurf and any MCP client that supports remote servers with OAuth: same URL.
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
- Base URL
https://api.splendidbooking.com/v1, bearer token, JSON in and out. - Lists also answer as CSV: add
?format=csvor sendAccept: text/csv. Bookings, customers, invoices, calls, staff, reminders and every report. - Dates are
YYYY-MM-DDin the business timezone and ranges are inclusive. Every time comes back twice: UTC ISO (start_time) and local (start_local,date,timezone). - Money is a decimal string in dollars:
"129.00". Never cents, never floats. - Refusals are
{ "error": "...", "code": "..." }. Codes are stable and documented per endpoint (NO_ROOM,NOT_CANCELLED,PAY_LINK_OUTSTANDING,SCOPE_REQUIRED...). - Side effects match the admin page. Creating, moving, cancelling or restoring a booking emails the customer unless you pass
"notify": false; the owner alert, text messages, calendar sync and the audit log all happen as they would from a click. /v1only gains fields and endpoints. A breaking change would be/v2.
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
- Per token: 300 reads and 60 writes per minute. Over that,
429withRetry-After. - Lists cap at 500 rows; availability and schedule ranges at 62 days.
401codes:NO_TOKEN,INVALID_TOKEN,TOKEN_REVOKED,TOKEN_EXPIRED,ADMIN_INACTIVE.403:SCOPE_REQUIRED,BUSINESS_NOT_ON_TOKEN, or the role refusal.
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
- 2026-10-17 — v1.1: the full core (bookings and every action, customers, invoices, calls, reports with CSV, catalog, schedule, staff, reminders) and the MCP connector with OAuth.
- 2026-10-16 — v1.0: API keys with per-business grants,
/me,/business, the spec.