# MakePlans MCP

> MakePlans provides an MCP for managing appointments, staff schedules, and service resources. Use your AI client to check availability, book new time slots, or cancel existing bookings without leaving your chat window. It handles everything from listing available services to checking if a specific room is free.

## Overview
- **Category:** productivity
- **Price:** Free
- **Tags:** online-booking, appointment-scheduling, service-management, staff-availability, customer-management, automation

## Description

This MCP Server handles all your appointment management needs. Your AI client controls scheduling by calling specific tools directly, letting you manage everything—staff, rooms, services, and bookings—without leaving the chat window.

**Service Catalog & Details**: If you need to know what's on offer, your agent calls `list_services` for a complete catalog of every available service. To get the full rundown on just one offering, it uses `get_service`. For physical assets like treatment rooms or specialized equipment, the system tracks resources. You can see everything available by calling `list_resources`, and you'll pull detailed specs on any single piece of gear or room using `get_resource`.

**Staffing & Availability**: When it comes to people, your agent uses `list_people` to grab a directory listing of every staff member associated with the account. To find out when services can actually happen, you first check for open slots by calling `list_available_slots`, giving it specific IDs for the service, staff, or resource involved in the time check. This function is key because it shows all open timeslots based on what you provide.

**Managing Bookings**: The server gives your AI client complete control over the booking lifecycle. To see every appointment currently scheduled, call `list_bookings`. If you need to know everything about one specific date, calling `get_booking` retrieves all details using just a single booking ID. When it's time to book something new, the agent executes `create_booking`, which schedules and generates the official record for the new appointment. Need to cancel? You use `delete_booking` to remove an existing entry from the schedule.

## Tools

### create_booking
Schedules a new appointment by generating a booking record.

### delete_booking
Cancels or removes an existing appointment from the schedule.

### get_booking
Retrieves all details for a single, specific booking ID.

### get_resource
Gets detailed information about one piece of equipment or room.

### get_service
Pulls up the full description and details for a single service offering.

### list_available_slots
Checks and lists all open timeslots based on provided service, staff, or resource IDs.

### list_bookings
Displays a complete list of every booking currently in the system.

### list_people
Retrieves a directory listing of all staff members associated with the account.

### list_resources
Lists every available physical resource, like rooms or specialized equipment.

### list_services
Provides a catalog of all services that can be booked at the location.

## Prompt Examples

**Prompt:** 
```
List all my bookings for this month.
```

**Response:** 
```
I've fetched your bookings. You have 3 appointments this month: 'Consultation' on the 12th, 'Follow-up' on the 15th, and 'Review' on the 20th.
```

**Prompt:** 
```
What services are available for booking?
```

**Response:** 
```
Currently, you offer 2 services: 'General Consultation' (ID: 101) and 'Advanced Therapy' (ID: 102).
```

**Prompt:** 
```
Show available slots for service ID '123'.
```

**Response:** 
```
I found 4 available slots for service '123' today, starting from 14:00 to 17:00 at 1-hour intervals.
```

## Capabilities

### Find Available Time
List available time slots for a specific service and staff member.

### Manage Staff Records
View the list of all registered staff members (people).

### Handle Bookings
Create, retrieve details for, or delete existing appointments.

### Check Resources
Get information on specific equipment, rooms, or other physical resources used in services.

### List Services
Retrieve a master list of all offered services (e.g., 'Consultation').

## Use Cases

### The Client Needs a Last-Minute Appointment
A client calls asking for a haircut on Friday at 3 PM. Instead of checking three separate calendars (staff, service availability, room status), your agent runs `list_available_slots` using the client's name and 'Haircut' ID. It immediately returns available timeslots, allowing you to book it right away with `create_booking`.

### The Clinic Needs a Full Audit
At month-end, you need to know who was seen and when. Your agent runs `list_bookings`, giving you the full history for review. If you spot an error, you can then use `get_booking` on that specific ID to verify details before making changes.

### Staffing Conflict Resolution
The schedule shows two services needing Room A at the same time. You tell your agent about the conflict. The agent uses `list_resources` to confirm Room A's status and suggests alternatives, letting you decide if you need to use a different resource ID or reschedule the appointment.

### Updating a Service Offering
The clinic adds a new service: 'Advanced Therapy'. You run `list_services` first to see all existing IDs. Then, using your agent, you check the details of the new offering with `get_service`, confirming its required resources and staff roles before making it live.

## Benefits

- Automate scheduling via `create_booking`. Instead of filling out forms, you just tell your agent to book the appointment, specifying service ID and staff name. It handles the rest.
- Track resource usage with `get_resource` and `list_resources`. You don't have to guess if a room is free; your AI client checks the status before confirming any booking.
- `list_available_slots` cuts down search time dramatically. Give it a service ID and date, and it instantly gives you all open windows for that time frame, eliminating manual calendar cross-referencing.
- Need to cancel something? Just run `delete_booking`. You don't need the booking ID if your agent can figure out which one you mean based on context. It’s faster than emailing a cancellation request.
- Staffing checks are simple with `list_people` and `get_service`. Your agent pulls up staff details alongside service requirements, ensuring the right person is assigned to the job every time.

## How It Works

The bottom line is: your AI client handles the back-and-forth of gathering IDs and checking schedules so you don't have to.

1. Your AI client first runs `list_services` and then `list_people` to gather the necessary IDs for the desired appointment.
2. You ask your agent, 'What slots are open next Tuesday?' The agent uses `list_available_slots`, combining the service ID, staff ID, and date range you provide.
3. The agent confirms the time with you. You then say, 'Book it.' The client executes `create_booking` using all gathered parameters, completing the appointment.

## Frequently Asked Questions

**How do I check staff availability using MakePlans MCP Server?**
You combine `list_people` and `list_available_slots`. First, ask your agent to list people to get the IDs. Then, tell it which service you need and the date range so it can run `list_available_slots` for you.

**What is the difference between `get_booking` and `list_bookings`?**
`list_bookings` gives you a broad overview—a list of all appointments. `get_booking` lets you zoom in on one specific appointment ID, giving you every detail about that single booking.

**Can I use MakePlans MCP Server to find out what services are offered?**
Yes. Use the `list_services` tool. It gives you a full catalog of all available services and their associated IDs, which is necessary for scheduling anything.

**If I want to cancel an appointment, do I need the booking ID? (delete_booking)**
While `delete_booking` accepts an ID, your agent can usually figure out which one you mean by context. But if the agent asks for it, providing the exact booking ID is always fastest.

**What parameters does the `create_booking` tool require?**
It requires a service ID, staff member ID, and time slot. You must provide all three pieces of data to confirm and book an appointment successfully.

**How should I use the `get_resource` tool if I don't know the resource ID?**
First, you run `list_resources` to pull a list of all available IDs. Then, pass that specific resource ID into `get_resource` to get details about it.

**Does the `list_people` tool return staff contact information?**
No, it only provides names and associated staff IDs. For private data like phone numbers or emails, you'll need to use a separate internal directory system.

**If my calendar has hundreds of appointments, how do I handle the results from `list_bookings`?**
The tool supports pagination. You must pass specific cursor or page size parameters in your request if you are dealing with a large number of bookings.

**Where do I find my API Key?**
In your MakePlans account, go to Setup > Integrations > API. You must enable the API to see your key.

**What is the Account Name?**
It is the subdomain of your MakePlans URL (e.g., if your URL is https://mybiz.makeplans.com, the account name is 'mybiz').

**Can I use the MakePlans MCP server for a public website?**
The MCP server uses the Private API and requires an API key, so it is intended for internal or authenticated use rather than direct exposure to unauthenticated public users.