Skip to main content
Zeeg runs a remote MCP server, so an AI app you already use — Claude, ChatGPT, Cursor, VS Code, or any other MCP client — can read and act on your Zeeg workspace: check availability, book and reschedule meetings, look up CRM people, read routing form submissions, review AI voice agent calls, and more.
The MCP server is served from our own backend in Germany, the same servers and processing region as the rest of Zeeg.

Server URL

Every MCP client listed below connects to this one URL. There’s nothing to install on our side and no separate account to create — you sign in with your existing Zeeg login.

Connect from your AI app

Go to Settings → Connectors → Add custom connector, paste the server URL, and follow the sign-in prompt.
The first tool call opens your browser to Zeeg. If you’re not signed in, you’ll see sign-in and create-account buttons; sign in or sign up, and you’re sent straight back to finish connecting. You’ll then see a Zeeg-branded consent page naming the app, the redirect it will use, the workspace you’re connecting, and what it will be able to do. Approve it, and the app acts with your own dashboard permissions — a member sees what they see in the dashboard, an admin sees the whole workspace. It can’t do anything you can’t already do yourself. Manage or revoke a connection any time from Settings → Connected apps, which also shows every tool call the app has made.

Plan requirement

MCP access needs a trial or paid Zeeg plan. On a free plan, every tool returns a plain error explaining that MCP needs a paid plan or an active trial, with a link to billing — never a bare 401 or 403. Some tools need more than base access:
  • find_available_times and book_meeting need a paid plan (not trial) — the same premium-scope check the public API applies to available-time and booking-creation requests.
  • The voice agent tools (list_voice_agents, list_agent_calls, get_agent_call and start_outbound_call) need AI minutes in the workspace: an AI minutes subscription or enough AI credit.

Tools

Tool names are snake_case; every tool declares a title and whether it’s read-only or destructive, which AI apps use to decide when to ask you before calling it. search_crm and get_booking results carry a link straight to the record in your dashboard; so do list_voice_agents, list_agent_calls and get_agent_call.

Safety

  • Confirmation before it matters. book_meeting, cancel_booking, reschedule_booking, hand_over_booking, and start_outbound_call are marked destructive, so a well-behaved AI app confirms with you before calling them — booking, cancelling, moving, handing over and calling all have a real-world effect, and start_outbound_call spends AI minutes.
  • Text from outside your workspace is marked as data, not instructions. Booking answers, notes, and routing form submissions are written by invitees and form respondents. The server labels this content and tells the connected AI app never to treat it as instructions — a booking answer that says “ignore your previous instructions” stays inert.
  • Every tool call is logged. Which app, which tool, what it touched, and whether it succeeded — visible to you (and, for admins, the whole workspace) at Settings → Connected apps. Arguments and results aren’t stored, only what happened.
  • Lean output by default. Tool results return what the task needs — a list of bookings, for instance, doesn’t include phone numbers or form answers unless the app explicitly asks for them.

Data processing

Once you approve a connection, tool results — booking details, CRM records, form answers, and so on — are sent to the AI provider behind the app you connected (Anthropic for Claude, OpenAI for ChatGPT, and so on). That’s the same as pasting the data into that app yourself. Zeeg’s own processing and hosting stay in Germany, unchanged by connecting an AI app.

For OAuth client builders

The MCP server implements the MCP authorization spec on top of our existing Passport OAuth:
  • Discovery: GET /.well-known/oauth-authorization-server and GET /.well-known/oauth-protected-resource/mcp, both under https://api.zeeg.me.
  • Resource: the protected-resource metadata’s resource is exactly https://api.zeeg.me/mcp.
  • PKCE: required, S256 only. An authorize request with plain, or without code_challenge_method, is refused with invalid_request.
  • Issuer identification (RFC 9207): every authorization response carries iss, equal to the metadata issuer (authorization_response_iss_parameter_supported: true).
  • Dynamic client registration: POST /oauth/register, open to any redirect host — the consent page names the redirect host and marks the app unverified unless it’s on our first-party allowlist, so don’t rely on registration itself as a trust signal.
  • Client ID metadata documents (CIMD): also supported (client_id_metadata_document_supported: true), and preferred over DCR for a high-traffic client — the metadata is fetched from the client’s own client_id URL instead of registering a new row per connection.
  • Client type: public clients only — token_endpoint_auth_methods_supported: ["none"]. There’s no client-secret flow.
  • Scope: every MCP client is pinned to mcp:use regardless of what it requests. A token that carries mcp:use is rejected by every /v1 and /v2 REST route, and a normal API token is rejected by the MCP endpoint — the two token types don’t cross over.
  • Token lifetimes: access tokens expire after 1 hour; refresh tokens after 30 days and rotate on use — reusing a spent refresh token returns invalid_grant.
  • Loopback redirects: http://localhost/callback and http://127.0.0.1/callback match on any port, for local tools like Claude Code.
  • Token endpoint: accepts application/x-www-form-urlencoded, per the OAuth spec.
  • Tool results: every tool except get_zeeg_guide returns structuredContent described by its outputSchema in tools/list, plus the same JSON as a text block for clients that read only text.
Last modified on September 27, 2026