Connect
Self-hosted deployments serve the same path on their own domain, for example
https://lobbystack.example.com/api/mcp.
Assistants connect one of two ways:
- Sign in with LobbyStack. Add the server URL to the assistant. It opens a LobbyStack page where you sign in, pick the business, and choose what the assistant can do. Use this for Claude and ChatGPT connectors.
- API key. Create a key in Settings > API keys and put it in the assistant’s configuration. Use this for scripts, CI, and clients that let you set request headers. See Authentication.
Sign in with LobbyStack
LobbyStack runs an OAuth 2.1 authorization server for MCP clients, as the MCP authorization spec describes. Your assistant finds it on its own from the server URL. When you connect, LobbyStack asks you to:- Sign in, if you aren’t signed in already.
- Pick the business. You see only businesses where you’re an owner or admin.
- Choose what the assistant can do. Every permission it asked for starts checked; uncheck the ones you don’t want.
Details for MCP client developers
Details for MCP client developers
A
401 from /api/mcp carries WWW-Authenticate: Bearer resource_metadata="...". Clients with loopback redirect URIs, such as http://127.0.0.1:6276/callback, register as native apps; other redirect URIs must use HTTPS.Tools
Scopes are the same for OAuth and API keys. Tools return the same objects as the REST API, with times in UTC. Read-only tools carry the
readOnlyHint annotation, and tools that cancel, move or replace data carry destructiveHint, so your assistant can ask you before it runs them.
The webhooks:manage scope has no MCP tools. A key with only that scope can’t connect.
Booking mode
book_appointment and reschedule_appointment work only when Appointments is set to Books appointments (booking_mode instant). In other modes they return an error instead of booking:
You change this setting under Agent > AI settings > Booking. Cancelling works in every mode.
Errors
A failed tool call returns a result marked as an error. Its text is JSON with the same codes as the REST API:401 when the key or access token is missing, unknown, expired or revoked, and 403 when it has no scope the MCP server uses.
Limits and retries
Each tool call counts against a limit of 120 requests per minute. An API key shares its limit with REST requests made with the same key; each OAuth connection has its own. Listing tools doesn’t count. Past the limit, the tool returnsrate_limited with the seconds to wait.
book_appointment, create_contact and add_knowledge accept an optional idempotency_key. Retry with the same value within 24 hours and you get the first result back instead of a duplicate. These keys are the same as the REST Idempotency-Key for POST /appointments, POST /contacts and POST /knowledge: a retry through MCP of a REST request, or the reverse, returns the first result. The same key with different details returns idempotency_key_reused.
Audit log
LobbyStack records each change made through the MCP server in the business’s audit log with the actormcp and the API key’s ID, or for OAuth, the connection’s ID and the person who approved it. It never logs keys or tokens. To cut off an assistant, disconnect it in Settings > Connected apps, or revoke its key in Settings > API keys.