# Fresha MCP

> Fresha allows you to query and analyze your salon or spa data directly through natural conversation. Pull appointments, client histories, sales records, staff details, inventory levels, services offered, and location information instantly from any AI agent.

## Overview
- **Category:** customer-relationship-management
- **Price:** Free
- **Tags:** appointments, salon-management, booking-system, sales-tracking, client-database

## Description

Connecting your Fresha workspace gives your AI agent deep insight into every aspect of your salon's operations. You talk to it like a person—you ask questions about business performance or client status, and it pulls the precise data points you need without manual exports or navigating complex dashboards. This capability works by running powerful queries against all core operational tables, making insights available immediately. Since Vinkius is the central catalog for these connections, you connect once to get access to this Fresha MCP alongside thousands of other industry tools.

It’s about getting answers—like 'What was the total revenue from massages last month?' or 'Who booked an appointment at the Westside Spa location today?'—and having your agent deliver a clean, actionable report right back to you.

## Tools

### list_appointment_services
Lists the services that are included in a client's booked appointment.

### list_appointments
Retrieves a list of scheduled appointments, including status and time slots.

### list_clients
Fetches detailed records for all customers in the system.

### list_inventory
Shows current stock levels and details for physical products you sell.

### list_locations
Retrieves a list of all physical business sites managed by the company.

### list_products
Lists retail products available for sale in the salon or spa.

### list_reviews
Gets a list of customer feedback and reviews left through the platform.

### list_sale_items
Retrieves itemized lists for specific sales transactions, like what was purchased in one checkout.

### list_sales
Lists all completed sales and revenue records across the business.

### list_services
Provides a list of every service that can be offered to clients, including pricing.

### list_staff
Lists all registered staff members and their professional profiles within the system.

## Prompt Examples

**Prompt:** 
```
List the last 5 completed appointments with client details.
```

**Response:** 
```
I will query `list_appointments` with `$filter=Status eq 'Completed'`, `$orderby=StartTime desc`, `$top=5`, and `$expand=Client`. Here are the 5 most recent completed bookings, including appointments for Sarah M. (Haircut) and John D. (Massage).
```

**Prompt:** 
```
Show me our physical business locations and active staff members.
```

**Response:** 
```
Retrieving data... Using `list_locations` and `list_staff`, I found 2 active locations ('Downtown Salon' and 'Westside Spa') and 8 registered staff members. Would you like to see which staff members are assigned to a specific location?
```

**Prompt:** 
```
Find all sales transactions from today.
```

**Response:** 
```
Running the query on `list_sales` with a filter for today's date... I found 12 sales transactions totaling $1,450. The largest transaction was Invoice #1042 for $220. Would you like me to list the individual items for that invoice using `list_sale_items`?
```

## Capabilities

### Track daily appointments and services
Retrieve detailed lists of scheduled client bookings and the specific services associated with those appointments.

### Manage and analyze client data
Access full customer profiles, contact details, and complete service histories for any individual client.

### Review sales and financial performance
Get breakdowns of all recorded sales transactions, including itemized receipts and invoice totals.

### Inspect business structure details
List physical locations, available products in inventory, service menus, and staff professional profiles across the network.

### Monitor staff performance and location assignments
See who works at which site and manage records for all registered staff members.

## Use Cases

### The weekly revenue audit
A manager needs to confirm total sales last week. Instead of pulling the bulky reports, they ask their agent to run a query on `list_sales` for the date range, immediately getting a summarized financial overview and spotting any unusual dips in certain service lines.

### Checking staff availability
An owner needs to know if enough licensed therapists are available next Tuesday. They ask their agent to cross-reference `list_staff` records with the upcoming appointments listed by `list_appointments`, ensuring they schedule properly.

### Investigating a specific client's history
A consultant needs context on a returning high-value client. They use their agent to query `list_clients` and immediately see every service the person has ever booked, helping them tailor a personalized recommendation.

### Inventory mismatch check
An operations analyst suspects products sold aren't being tracked right. They ask the agent to compare sales data from `list_sale_items` against current stock levels using `list_inventory` for immediate discrepancies.

## Benefits

- Stop running manual reports. You can ask for the last five completed appointments, including who booked them and what services were performed, all in one prompt using `list_appointments` and `list_appointment_services`.
- Instantly audit sales data. Get a total count of today's revenue or check individual invoice details by querying `list_sales` and then drilling down with `list_sale_items` for deeper insight.
- Understand your client base better than ever. You can pull up specific customer profiles using `list_clients`, view their service history, and track retention patterns without leaving the chat window.
- Manage physical assets easily. Check current stock levels in real-time by running a query on `list_inventory` or review which products are sold most often via `list_products`.
- Get a full picture of your brand's reach. You can check multiple locations using `list_locations` and verify which staff members (`list_staff`) work at each site to plan staffing shifts.

## How It Works

The bottom line is, you ask a natural language question, and your agent executes a structured database query to give you the answer.

1. Subscribe to this MCP on Vinkius.
2. Enter your Fresha Data Connector Token into the connection settings.
3. Ask your AI agent a question about your business data; it runs the query and provides the results.

## Frequently Asked Questions

**Can I use list_appointments to check if a staff member is free?**
Yes. You can ask your agent to query `list_appointments` combined with `list_staff`. It checks the scheduled times against registered personnel, letting you see immediate gaps.

**Does list_sales include details about which services were used?**
Yes. When querying `list_sales`, your agent can pull detailed transaction records using `list_sale_items`. This shows exactly what was purchased or applied for each sale.

**How do I check if a specific product is in stock?**
You run a query on `list_inventory`. The agent returns the real-time count of that item, ensuring you don't promise a client something you sold out of.

**Is list_services limited to only appointment services?**
No. While it lists core service types, you can also ask about retail products by querying `list_products` for the full menu.

**When I use list_clients, can my agent pull together a client's full history of appointments using their ID?**
Yes, the agent compiles that data for you. You provide the client name or ID, and we cross-reference records from `list_appointments` to give you a complete service timeline.

**If I use list_staff, can I specify which physical location (via list_locations) an employee is assigned to?**
You absolutely can filter by location. We combine data from `list_staff` and `list_locations`, so you only see staff working at a specific branch or spa.

**When running list_inventory, what filters are available if I want to group items by category rather than searching by name?**
The tool supports structured filtering. You can apply OData filters to narrow the search results down to specific categories or supplier groups within the inventory.

**If list_sale_items is run with an invoice number that doesn't match any record in list_sales, how does the system handle it?**
The agent will return a clear error message. It confirms the mismatch and advises you on correcting the invoice ID or checking the date range for the transaction.

**Can I filter appointments by status or date using this server?**
Yes! The `list_appointments` tool supports standard OData `$filter` parameters. For example, you can pass `Status eq 'Completed'` or filter by start times to isolate specific booking periods.

**How do I retrieve the specific services booked within an appointment?**
You can use the `list_appointment_services` tool, or use the `$expand` parameter in `list_appointments` to load related service details in a single query.

**Can I view financial transactions and checkout details?**
Yes. Use the `list_sales` tool to query invoices and transactions, and the `list_sale_items` tool to inspect individual line items, products, or services sold during checkout.