# MakePlans MCP

> MakePlans connects your AI agent directly to a scheduling and CRM backend. It lets you list bookings, find available time slots, create new customer profiles, and manage staff or room resources using natural language commands.

## Overview
- **Category:** productivity
- **Price:** Free
- **Tags:** appointment-scheduling, booking-management, resource-allocation, crm, service-catalog

## Description

This server connects your AI agent straight to your scheduling backend and CRM. You'll let your agent handle everything from building out new client records to booking an entire day’s worth of appointments just by talking to it.

**Managing Your Client Base**

When you need to add a new person, the `create_new_customer` tool lets your AI client build a fresh profile in your customer database using nothing but their name. If you need to see who's already in the system, the `list_customers` tool pulls up every registered client record. This gives you instant access to all your people data.

**Defining Services and Resources**

Before scheduling anything, you gotta know what you offer and what equipment you use. The `list_available_services` tool shows you a clean list of every service type—the appointment categories—your account provides. When it comes to physical assets or staff, the `list_booking_resources` tool lists all bookable items. You can check which specific staff members or rooms are available for assignment.

**Finding Open Slots and Checking Details**

It’s not enough to know what services you offer; you gotta find when they're open. The `find_available_slots` tool checks your system and reports every single open time slot for a specific service type within any date range you set. For deeper dives, the `get_appointment_details` tool pulls up full information—including status updates and metadata—for one precise booking.

**Handling All Bookings**

To see what’s already on the books, the `list_appointments` tool shows you a comprehensive list of every existing appointment. You can filter these results using optional parameters like date or status to narrow down exactly what you're looking for. If you want to schedule something new, the `create_new_appointment` tool handles it instantly. It takes three specific pieces of info—the person ID, the service ID, and the exact start time—and schedules the booking.

**In short:** Your agent uses these tools in sequence: first, it checks who you got (`list_customers`), then what services you offer (`list_available_services`) and what resources are needed (`list_booking_resources`). Next, it figures out when things are free using `find_available_slots`. Finally, it either schedules the appointment using `create_new_appointment` or lets you review all current bookings with `list_appointments`.

## Tools

### list_appointments
Shows you all existing bookings, letting you filter the results with optional parameters.

### create_new_appointment
Schedules a booking after you specify the person ID, service ID, and start time.

### create_new_customer
Adds a new client profile to your customer database using just their name.

### get_appointment_details
Retrieves full details, including status and metadata, for one specific booking.

### list_customers
Displays a list of every customer profile currently registered in the system.

### list_booking_resources
Lists all bookable assets, such as staff members or physical rooms, that can be assigned to an appointment.

### list_available_services
Pulls a list of every service type (appointment category) offered in your account.

### find_available_slots
Checks and reports all open time slots for a given service ID within specific dates.

## Prompt Examples

**Prompt:** 
```
List all appointments scheduled for next week in MakePlans.
```

**Response:** 
```
I've retrieved your bookings for next week. You have 8 appointments scheduled, including 'Consultation with John Smith' and 'Yoga Class'. Would you like the full details for any of them?
```

**Prompt:** 
```
Find available slots for service ID '123' between tomorrow and Friday.
```

**Response:** 
```
I've checked the availability for service 123. There are 5 open slots available tomorrow morning and 3 slots available on Thursday afternoon.
```

**Prompt:** 
```
Create a new customer profile for 'Alice Doe' with email 'alice@example.com'.
```

**Response:** 
```
Successfully created the profile for Alice Doe in MakePlans. The new person ID is 'pers-987'. You can now use this ID to schedule bookings for her.
```

## Capabilities

### Book appointments
Schedules a new booking instantly after providing the required people, services, and start date.

### Find open slots
Queries the system to show available time windows for any listed service within your chosen date range.

### Add customers
Creates a new client profile, adding them to your internal 'people' database.

### List all bookings
Pulls a comprehensive list of every scheduled appointment, allowing you to filter by date or status.

### Manage resources
Lists and manages bookable assets, like specific staff members or rooms, ensuring they are allocated correctly.

## Use Cases

### Scheduling a complex follow-up.
A client calls back. Instead of manually checking availability, you tell your agent: 'Book John Smith for a 60-minute consultation next Thursday.' The agent runs `list_available_services` to get the ID, then checks slots (`find_available_slots`), and finally executes `create_new_appointment`. It's done in three steps.

### Updating staff assignments.
The salon manager realizes one stylist is out. They ask the agent to check all bookings for 'Stylist Jane Doe'. The agent uses `list_appointments` and flags every booking, giving the manager a clear list of affected clients they need to reschedule.

### Onboarding a new client.
You meet a new client. You tell your AI agent: 'Add this person.' The agent runs `create_new_customer`, confirms the profile is saved, and gives you the necessary unique ID to use for any future bookings.

### Checking system capacity.
The operations team needs to know if they have enough rooms available next quarter. They prompt the agent to list all resources and then query specific availability ranges using `list_booking_resources` combined with date parameters.

## Benefits

- Instant visibility into your schedule. Instead of navigating tabs, you ask the agent to run `list_appointments` and instantly get a summary of all upcoming bookings.
- Never miss an opening slot. Use `find_available_slots` to query service availability across multiple dates in seconds, giving you concrete time options right away.
- Streamlined client data entry. If you're talking to a new client, run `create_new_customer` immediately. You get back a person ID that lets you book them instantly.
- Resource management simplified. With `list_booking_resources`, your agent knows if the required staff member or room is free before it attempts to schedule anything, stopping errors early.
- Full audit trail access. Need to know what happened last month? You can run `get_appointment_details` on any specific booking ID and get all the metadata you need for review.

## How It Works

The bottom line is, your AI agent handles the complex API calls so you don't have to touch the dashboard.

1. First, subscribe to the MakePlans server and provide your API Key along with your Account Name (subdomain).
2. Next, direct your AI client (Claude, Cursor, etc.) to perform a task—like 'Find me an opening for deep tissue massage next Tuesday.'
3. The agent uses the tools automatically. It checks availability (`find_available_slots`), confirms resources are free (`list_booking_resources`), and books it for you (`create_new_appointment`).

## Frequently Asked Questions

**How do I check if a specific staff member is free next week using list_appointments?**
You can run `list_appointments` and use optional parameters to filter by resource name or date range. If you need details on just one booking, use the `get_appointment_details` tool with the booking ID.

**Can I add a new customer before scheduling them using create_new_customer?**
Yes. You run `create_new_customer` first to generate a unique person ID, and then you use that specific ID when calling `create_new_appointment`. This keeps your data clean.

**What do I need to know before using find_available_slots?**
You must provide the service ID and a defined date range. The tool won't check general availability; it only checks specific services you list via `list_available_services`.

**Is there a way to see all my booked appointments at once? (list_appointments)**
Yes, simply call `list_appointments`. You can then use optional parameters to narrow the scope—for example, filtering by status or client ID.

**What happens if I get an authentication error when running list_appointments?**
You must verify your MakePlans API Key and ensure your account subdomain name is correctly entered in Vinkius. The agent cannot run until these connection credentials are valid.

**If I don't know a service ID, how do I use it with create_new_appointment?**
You need to call list_available_services first. This tool provides the full catalog of services, allowing you to retrieve the specific Service ID required for scheduling.

**Are there rate limits when I use find_available_slots frequently?**
The server handles high volume, but repeated calls within a short timeframe can hit API rate limits. If you receive an HTTP 429 error, wait at least one minute before attempting another query.

**How do I get the full details for a specific booking using get_appointment_details?**
You must provide the unique Booking ID as a mandatory parameter. This single ID lets your agent pull all associated metadata, status updates, and resource information.

**How do I find my MakePlans API Key?**
Log in to your MakePlans admin dashboard, navigate to Settings > API to find or generate your Private API Key. Your token is encrypted at rest and injected securely at runtime.

**What is the Account Name?**
The account name is the subdomain used in your MakePlans URL, for example: `mycompany.makeplans.com`. Enter only `mycompany`.

**Can I search for available slots for a specific date range?**
Yes, use the `find_available_slots` tool and provide `params` such as `from=2024-01-01&to=2024-01-07` along with the service ID.