We built an MCP server for scheduling. Here's what happened.
TL;DR
How we built a Model Context Protocol (MCP) server with 16 scheduling tools — and why it changed how we think about our entire product.
Three months ago, we had a normal scheduling app. Booking pages, calendar sync, email reminders — the standard Calendly playbook. Then we decided to build an MCP server, and it changed how we think about the entire product.
What even is MCP?
Model Context Protocol is an open standard that lets AI agents call tools on external services. Think of it as a USB-C port for AI: one interface, many capabilities. Instead of teaching each agent how to navigate a web UI, you give it structured tools with typed inputs and outputs.
An agent doesn't "click the booking button." It calls create_booking({ eventTypeId: "abc", startTime: "2026-02-24T10:00:00Z" }). Clean, predictable, auditable.
The 16 tools we shipped
We started with three tools — list events, get available slots, create booking — and quickly realized that wasn't enough. Agents need context. They need to browse, compare, score, and decide.
Here's the full set:
- Profile: get_profile, update_profile
- Events: list_event_types, create_event_type, update_event_type, delete_event_type
- Availability: get_available_slots, get_availability_schedule, update_availability_schedule
- Bookings: list_bookings, get_booking, create_booking, cancel_booking, reschedule_booking
- Discovery: browse_booking_pages, find_and_book_best_slot
That last one — find_and_book_best_slot — is the star. It combines discovery, scoring, and booking into a single high-level tool. You give it a username and some preferences, and it returns a ranked list of the best slots with scores.
The scoring algorithm
We built a five-factor scoring system that runs server-side:
See this in action
skdul gives you beautiful booking pages with smart availability — plus full AI agent support.
Try it free- Time-of-day preference — morning person? The 9 AM slot scores higher than the 4 PM one.
- Gap efficiency — avoids creating orphan gaps between meetings that are too short to be useful.
- Day spread — prefers days with fewer existing meetings to distribute load.
- Buffer comfort — scores higher when there's breathing room before and after.
- Booking density — penalizes days that are already heavy to prevent burnout.
Each factor contributes to a 0–100 composite score. The agent gets the top candidates and can either book the best one automatically or present options to the user.
What surprised us
Agents are better users than humans. They read every field description. They pass valid types. They handle errors gracefully. Our MCP endpoints have a lower error rate than our web UI.
Dry-run mode is essential. We added it as an afterthought and it became the most-used parameter. Agents love to preview before committing. It's the equivalent of "are you sure?" but actually useful.
The MCP server simplified our API. Building for agents forced us to make every action self-contained and well-documented. The human API improved as a side effect.
What we'd do differently
We should have started with the MCP server. Not the web app. If your product's core value can be expressed as a set of tools, the agent interface is actually the simplest, most honest expression of what your product does. The web UI is just a pretty wrapper.
That's the real lesson: in an agent-first world, the protocol is the product. Read more about why your AI agent should book your meetings.
Arjun Mehta
Founder
Keep reading
Start scheduling for free.
Get started for free