Back to blog
Product

We built an MCP server for scheduling. Here's what happened.

Arjun MehtaArjun MehtaFebruary 12, 20267 min read

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
  1. Time-of-day preference — morning person? The 9 AM slot scores higher than the 4 PM one.
  2. Gap efficiency — avoids creating orphan gaps between meetings that are too short to be useful.
  3. Day spread — prefers days with fewer existing meetings to distribute load.
  4. Buffer comfort — scores higher when there's breathing room before and after.
  5. 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

Arjun Mehta

Founder


Keep reading

Start scheduling for free.

Get started for free
Ask AI about skdul