Business MCP
Where the partner GraphQL API authenticates a server-to-server integration with a scoped key, the business MCP server lets an AI assistant act as you — the signed-in staff member — running the same tools a staffer would over the Model Context Protocol.
Tools
The assistant runs staff tools against your business:
list_activitiesupcoming_sessionssession_attendancebusiness_statscreate_sessioncancel_sessionAuthentication
Two access paths, both resolving to a real staff user whose role bounds every call: OAuth (interactive — an assistant signs in as you), or an API key granted the mcp:business scope (headless — for CI jobs, cron agents, and server-side assistants). Either way the token is an access path, never an escalation.
The OAuth handshake — discovery, registration, PKCE, consent — is shared across both MCP servers. OAuth reference
Consumer (end-user) access over MCP uses the mcp:account scope on the public server — see the public MCP guide. See the public MCP guide
Ready to plug in a client? The Sessions MCP page has copy-paste setup for Claude, Claude Code, Cursor, Codex, and Windsurf. Connect a client
# 1. An unauthenticated MCP request is challenged:
# HTTP/1.1 401 Unauthorized
# WWW-Authenticate: Bearer resource_metadata="https://business.sessions.website/.well-known/oauth-protected-resource"
# 2. After discovery, registration, and consent, call with the token:
curl https://business.sessions.website/@<handle>/api/mcp \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <mcp-access-token>' \
--data '{"jsonrpc":"2.0","id":1,"method":"tools/call",
"params":{"name":"upcoming_sessions","arguments":{}}}'Headless access with an API key
Create an API key with the mcp:business scope under Settings → API keys, and send it as the Bearer token — no browser, no consent screen. The key authenticates as the staff member who created it, checked live on every request: the schema enforces that person's current role, and if they leave the business (or the key is revoked) access ends immediately.
# Headless — no browser, no consent screen. Mint a key
# with the mcp:business scope (Settings → API keys), then:
curl https://business.sessions.website/@<handle>/api/mcp \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer sk_live_…' \
--data '{"jsonrpc":"2.0","id":1,"method":"tools/call",
"params":{"name":"upcoming_sessions","arguments":{}}}'