# Phorest MCP

> Phorest connects your salon and spa operations directly to your AI client. Manage everything—from creating new clients and listing appointments to updating staff schedules—using natural conversation. Handle check-ins, track services, and export business data without opening a single desktop app.

## Overview
- **Category:** customer-relationship-management
- **Price:** Free
- **Tags:** salon-management, appointment-booking, spa-software, client-management, staff-scheduling

## Description

Phorest connects your salon and spa operations right to your AI client. You'll manage every detail—from adding a new client record to running end-of-day reports—just by talking to your agent. Forget opening up the desktop app; you handle everything in natural conversation.

**Managing Client Profiles:** You can start things off by creating an entirely new client record using **`create_client`**. To keep records straight, you use **`list_clients`** to get a rundown of every person in your book. If a client moves or changes their phone number, you modify the data with **`update_client`**, though remember you gotta provide a version number so the system knows which copy is right. When it comes to services, you can view all available service packages that people buy using **`list_client_courses`**. You pull up specific package details for any client using **`get_client_course`** to see their current status and when they expire; if they get a new treatment, you extend the membership or change the record with **`update_client_course`**.

**Handling Appointments:** To see what's happening today, you run **`list_appointments`**, which shows all bookings for your location. If you need to know the nitty-gritty details of one specific booking, you use **`get_appointment`**. When a client walks in, you mark them as present with **`checkin_appointment`**. You can also confirm one or more booked appointments using **`confirm_appointments`**. If a service needs moving around, you change the appointment's details—like rescheduling it or changing the treatment type—with **`update_appointment`**.

**Tracking Staff Schedules:** You get full visibility into staff availability. To check what everyone is doing at your location for a whole day, you call **`get_branch_timetable`**. If you only need to see one person's schedule for a specific date range, you use **`get_staff_timetable`**; this retrieves individual timetables. You manage staff downtime by scheduling breaks using **`create_break`**, and if you wanna check what breaks are already logged in the system, you call **`list_breaks`**.

**Generating Business Reports:** For analysis, you don't mess around with manual data entry. You start a background job to compile raw business data into a CSV file using **`create_csv_export_job`**. To follow up on that report, you check the status and grab the download link for your export job by running **`get_csv_export_job`**.

This entire system lets you handle client records with **`list_clients`**, create new clients using **`create_client`**, update details via **`update_client`**, manage service packages through **`list_client_courses`** and **`get_client_course`**, and adjust package status with **`update_client_course`**. You handle the daily flow by listing all bookings with **`list_appointments`**, checking a client in using **`checkin_appointment`**, confirming appointments with **`confirm_appointments`**, or making changes to existing slots with **`get_appointment`** and **`update_appointment`**. Staff management is covered when you pull the whole schedule for a branch via **`get_branch_timetable`**, check an employee's schedule using **`get_staff_timetable`**, set breaks with **`create_break`**, or see all current break listings by running **`list_breaks`**. Finally, your business intelligence relies on starting exports with **`create_csv_export_job`** and checking the status of those reports using **`get_csv_export_job`**.

## Tools

### checkin_appointment
Marks a client as present for their scheduled appointment.

### confirm_appointments
Confirms one or more booked appointments with the system.

### create_break
Schedules a staff member's break period into the timetable.

### create_client
Adds an entirely new client record to your business database.

### create_csv_export_job
Starts a background job that compiles data into a downloadable CSV file for reporting.

### get_appointment
Retrieves all specific details about a single, known appointment.

### get_branch_timetable
Gets the full work schedule for every staff member at a specific branch location.

### get_client_course
Fetches details about a client's current service package, including expiry dates.

### get_csv_export_job
Checks the status and provides the download URL for an export job you started earlier.

### get_staff_timetable
Retrieves individual staff member timetables for a specific day or range.

### list_appointments
Shows all appointments currently scheduled at a given branch location.

### list_breaks
Retrieves a list of existing staff breaks in the system.

### list_client_courses
Lists all available service packages that can be sold to clients.

### list_clients
Returns a list of all client records associated with your business ID.

### update_appointment
Changes details for an existing appointment, such as rescheduling or modifying the service type.

### update_client_course
Updates the status of a service package, often used to extend an expiry date.

### update_client
Modifies general client information like phone numbers or addresses. Requires a version number to prevent data conflicts.

## Prompt Examples

**Prompt:** 
```
List all clients for business ID 12345.
```

**Response:** 
```
I've retrieved the client list for business 12345. I found 50 clients on the first page, including 'Jane Doe' and 'John Smith'. Would you like to see more details for a specific client?
```

**Prompt:** 
```
Show me the appointments for branch 678 today.
```

**Response:** 
```
Fetching appointments for branch 678... There are 12 appointments scheduled for today. The next one is a 'Full Hair Color' at 2:00 PM for client ID 9988.
```

**Prompt:** 
```
Get the timetable for staff member 5544 in branch 678.
```

**Response:** 
```
Accessing staff timetable... Staff member 5544 is working from 9:00 AM to 6:00 PM today with a break scheduled at 1:00 PM. They have 3 available slots remaining.
```

## Capabilities

### Manage Client Profiles
Create new client records or update existing details and service packages using tools like `create_client`, `update_client`, and `update_client_course`.

### Handle Appointments
List scheduled appointments for a branch, check in clients, confirm bookings, or modify specific appointment details with tools such as `list_appointments` and `checkin_appointment`.

### Track Staff Schedules
Retrieve the work timetables for entire branches or individual staff members (`get_staff_timetable`, `get_branch_timetable`) and manage scheduled breaks using `create_break`.

### Generate Business Reports
Trigger CSV export jobs to pull raw data on client lists, appointments, or performance for later analysis (`create_csv_export_job`).

### Review Client History
Get details about a specific client's service package history using `get_client_course` and view all available packages with `list_client_courses`.

## Use Cases

### The Check-In Rush
It's peak hour. The receptionist needs to check in five clients, but they are logged into three different screens. Instead, they simply tell their agent: 'Check in all 10 AM appointments.' The agent runs `checkin_appointment` for everyone and confirms the list instantly.

### The Scheduling Conflict
A client calls to move a booking. Instead of looking up the old appointment, checking staff availability, and then updating it manually, the agent runs `get_staff_timetable` for all relevant staff first. Then, they use `update_appointment` with the new time—all in one conversational flow.

### The End-of-Month Audit
The owner needs to report on how many clients paid for a specific package last month and who those staff members were. They ask the agent to run `create_csv_export_job` targeting 'Client Activity,' giving them all the data they need for accounting.

### The Staffing Gap
It's Monday morning, and a new stylist calls in sick. The manager needs to know who is covering their shift. They ask the agent: 'List staff schedules for this week.' The agent uses `get_branch_timetable` and immediately points out where the gap is.

## Benefits

- Checks in clients instantly. Use `checkin_appointment` to mark someone present without navigating deep into the scheduling interface. It's one command, done.
- Tracks staff time efficiently. Need to know who’s free? `get_staff_timetable` pulls an individual staff member’s schedule right here, showing breaks and open slots.
- Keeps data clean. If a client moves or changes their phone number, use `update_client`. It handles the version control so you don't accidentally overwrite critical info.
- Never lose reports again. Instead of manual exports to Excel, use `create_csv_export_job` and then check its status with `get_csv_export_job` for a direct download link.
- Manages packages easily. If a client needs an extension on their service package, use `update_client_course`. It’s quicker than logging into the main CRM.

## How It Works

The bottom line is you talk naturally; the server handles the complex API calls and updates in the background.

1. Subscribe to the Phorest server and provide your API credentials (Username/Password).
2. Your agent connects to the system, allowing it to read and write data within your business account.
3. Ask your agent a direct question: 'List all clients for today' or 'Check in client Jane Doe.' The agent executes the necessary tool calls.

## Frequently Asked Questions

**How do I check a client's service history using the Phorest MCP Server?**
Use `get_client_course`. This tool pulls details about a specific client’s package, letting you see their current status and when it expires without manually searching through records.

**Can I update an appointment using the Phorest MCP Server?**
Yes, use `update_appointment`. You can change booking times or services directly. Remember to confirm the new time slot is available first by listing appointments.

**How do I get a list of all clients in my business?**
You call `list_clients`. This tool provides an immediate roster of everyone associated with your account, which you can then ask the agent to filter or detail further.

**What is the best way to get a full report for my business?**
You must use `create_csv_export_job`. This tool starts the data collection process. After running it, you check its status using `get_csv_export_job` to get your download link.

**Can I manage staff breaks with the Phorest MCP Server?**
Yes, use `create_break`. This tool lets you schedule and track staff time off or short breaks directly through the agent interface.

**How do I use the `create_client` tool to add a new client record?**
You call `create_client` and provide the necessary details like name, contact information, and initial services. The system handles saving this new account directly into your salon's database.

**What is the function of the `get_staff_timetable` tool?**
The `get_staff_timetable` tool retrieves a specific employee's full schedule for a given date. It shows their working hours, scheduled breaks, and available time slots.

**How do I use the `confirm_appointments` tool?**
To confirm appointments, pass the IDs of one or more bookings to `confirm_appointments`. This updates the status for several clients instantly, ensuring your records are accurate.

**Can I check in a client for their appointment using the AI?**
Yes! Use the `checkin_appointment` tool with the Business ID, Branch ID, and Appointment ID. The agent will process the check-in immediately.

**How do I see a specific staff member's schedule?**
You can use the `get_staff_timetable` tool. Just provide the Business ID, Branch ID, and Staff ID to see their working hours and availability.

**Is it possible to export client data to CSV?**
Yes, you can initiate an export using `create_csv_export_job` and then retrieve the status or file using `get_csv_export_job`.