Add a Model Context Protocol (MCP) server for SavvyCal
Bastien Vairet
What problem does this solve?
Right now, connecting SavvyCal to AI agents and LLM-based workflows (Claude, Cursor, n8n AI nodes, etc.) requires writing custom API wrappers. MCP is becoming the standard protocol for exposing SaaS capabilities to AI tools — Stripe, Notion, Linear, and others already have MCP servers. A SavvyCal MCP server would allow any MCP-compatible client to read and manipulate scheduling data without writing glue code.
---
Proposed tool set for a v1 MCP server
The following tools map directly onto the existing REST API surface and would cover the most useful agent interactions.
Read tools
- list_events— Fetch scheduled events with optional filters: date range (starts_after,starts_before), state (scheduled,canceled), pagination. Core for any agent that needs to reason about a calendar.
- get_event— Retrieve full event details by ID: attendees, conferencing info, answers to custom questions, payment status.
- list_scheduling_links— List all links with their slug, name, active state, and duration. Useful for agents choosing which link to share or inspect.
- get_scheduling_link— Full detail on a single link: availability rules, buffer times, payment config, workflow associations.
- get_available_slots— Query open time slots for a given link, date range, and timezone. Enables agents to suggest available times in a conversation without redirecting to the booking page.
- get_current_user— Retrieve authenticated user profile (name, email, timezone, handle). Useful for context and for constructing booking URLs.
- list_webhooks— List configured webhooks (URL, events subscribed). Diagnostic use in automation audits.
- list_workflows— List workflows and their rules. Lets an agent explain or audit what automations are active on a given link.
Write tools
- create_event— Book a meeting programmatically on a given link for a specific slot. Required for agents that complete a booking on behalf of a user after negotiating availability in chat.
- cancel_event— Cancel a scheduled event by ID, with optional cancellation reason. Lets agents handle rescheduling or no-show logic.
- create_scheduling_link— Create a new personal scheduling link with a name, slug, duration, and basic availability. Useful for agents that provision links dynamically (e.g., one link per client, one per cohort).
- update_scheduling_link— Update an existing link's settings (name, duration, availability, buffer, limits). Lets an agent reconfigure links without the user going through the UI.
- toggle_scheduling_link— Enable or disable a link. Simple but valuable for agents managing seasonal availability or temporary closures.
- duplicate_scheduling_link— Duplicate an existing link as a starting point. Speeds up link creation workflows.
---
Authentication
Personal access tokens are sufficient for single-account use cases (the primary MCP scenario). OAuth support would be needed to allow multi-user deployments (e.g., a shared team assistant operating across member accounts), but that can be v2.
---
Why this matters
Scheduling is one of the most frequent AI agent tasks. SavvyCal's overlay model and ranker UX make it genuinely superior for human-to-human scheduling, but agents booking on behalf of users don't need that UI — they need API + MCP. Without it, the workflow is: agent → custom wrapper → SavvyCal REST API, which most non-developers won't set up. With an official MCP server, SavvyCal becomes a first-class citizen in AI-native workflows (Claude Projects, Cursor, open-source agents) with no custom code required.
---
Prior art / references
- Stripe MCP server : https://github.com/stripe/agent-toolkit
- Notion MCP : https://developers.notion.com/docs/mcp
- MCP specification : https://modelcontextprotocol.io