Local services & SaaS
Faire
Orders, inventory, reorders and messages for wholesale brands.
12 endpoints
Your AI agent books appointments from messages, finds free slots, moves a sick stylist's day and finds clients due back. Sign in to Phorest once in your own Cloud Browser. No API request, no development team.
10 tools Read and write
Phorest has no MCP server and no ChatGPT or Claude app. Its API needs credentials from Phorest Support, requested with your account number, and "your own development team for setup" (Phorest help, checked 8 Nov 2026). Cotlet runs 10 Phorest tools hosted, over MCP for agents and REST for scripts, in your own Phorest login.
| What you need | Phorest API | By hand | Cotlet |
|---|---|---|---|
| Appointments and free slots | With credentials | Yes, one by one | Yes |
| Book or move a booking | With credentials | Yes, one by one | Yes, after your OK |
| Clients and notes | With credentials | Yes, one by one | Yes |
| Ask in ChatGPT or Claude | No | No | Yes |
| Developer needed | Yes | No | No |
Checked 8 Nov 2026. Sources: Phorest help: Getting Started with Phorest API · Phorest developer docs · Phorest help: access Phorest in a web browser
Once, in a browser we host for you.
One address in its settings.
It drafts the work, you OK what customers get.
We never keep your Phorest password, and no booking, move or cancellation goes through until you approve it. Who can see your session
Sign in to Phorest in a Cloud Browser. Create a Cotlet account, open Phorest in its Cloud Browser, sign in with your Phorest login on my.phorest.com and press Enable for agents.
Add the Cotlet address. Enter https://cotlet.dev/mcp/v1 as the MCP server or connector URL in your agent.
Let the agent in. Chat apps open a Cotlet sign-in page. Editors, n8n and scripts send an API key made in the console.
Phorest shares the address https://cotlet.dev/mcp/v1 with every other app you enable, so one connector covers them all. Turned Phorest on after connecting? Refresh the connector and the 10 tools appear.
Settings > Connectors > Add custom connector
URL: https://cotlet.dev/mcp/v1/connect
Claude Code:
claude mcp add --transport http cotlet \
https://cotlet.dev/mcp/v1 \
--header "Authorization: Bearer $COTLET_API_KEY" Settings > Apps & Connectors > Create
MCP server URL: https://cotlet.dev/mcp/v1/connect
Authentication: OAuth // ~/.cursor/mcp.json
{
"mcpServers": {
"cotlet": {
"url": "https://cotlet.dev/mcp/v1",
"headers": { "Authorization": "Bearer ${env:COTLET_API_KEY}" }
}
}
} # ~/.codex/config.toml
[mcp_servers.cotlet]
url = "https://cotlet.dev/mcp/v1"
bearer_token_env_var = "COTLET_API_KEY" MCP Client Tool (inside an AI Agent)
Transport: HTTP Streamable
URL: https://cotlet.dev/mcp/v1
Auth: Bearer, <your key>
Tool: phorest_read Make: MCP Client > Call a tool
Zapier: MCP Client by Zapier > Run Tool
Server URL: https://cotlet.dev/mcp/v1
Token: <your key>
Tool: phorest_write Free slots come from the calendar and the services each staff member offers. Bookings, moves and cancellations wait for your OK; your reminder settings decide what the client hears.
Returns appointments with client, service, staff member, start time and status, in calendar order.
MCP callphorest_read → list_appointments
REST endpointGET https://cotlet.dev/api/v1/phorest/appointments
| Name | Type | Description |
|---|---|---|
| date_from string required | string | ISO date. |
| date_to string | string | ISO date. Default: date_from. |
| staff string | string | Staff member name. |
| page integer | integer | Page number. Default: 1. |
{
"date_from": "date from"
} {
"appointments": [
{
"appointment_id": "A-73120",
"client": "Sophie Walsh",
"service": "Full head colour",
"staff": "Aoife",
"start": "2026-11-12T10:00",
"status": "Booked"
}
],
"page": 1
} Reads the calendar and returns start times where the service fits, per staff member who offers it.
MCP callphorest_read → find_free_slots
REST endpointGET https://cotlet.dev/api/v1/phorest/free-slots/find
| Name | Type | Description |
|---|---|---|
| service string required | string | Service name as in your menu. |
| date string required | string | ISO date. |
| staff string | string | Staff member name. |
{
"service": "service",
"date": "date"
} {
"service": "Cut and blow dry",
"slots": [
{
"staff": "Aoife",
"start": "2026-11-13T14:30"
},
{
"staff": "Niamh",
"start": "2026-11-13T16:00"
}
]
} Creates the appointment on the calendar. Your Phorest reminder settings decide whether the client gets a confirmation. By default you confirm each call; you can switch that off for this tool.
MCP callphorest_write → book_appointment
REST endpointPOST https://cotlet.dev/api/v1/phorest/clients/{client_id}/appointments
| Name | Type | Description |
|---|---|---|
| client_id string required | string | Client ID from list_clients. |
| service string required | string | Service name. |
| staff string required | string | Staff member name. |
| start string required | string | ISO date and time from find_free_slots. |
| note string | string | Appointment note. |
{
"client_id": "CL-40192",
"service": "Cut and blow dry",
"staff": "Aoife",
"start": "2026-11-13T14:30"
} {
"appointment_id": "A-73188",
"client": "Sophie Walsh",
"service": "Cut and blow dry",
"staff": "Aoife",
"start": "2026-11-13T14:30",
"status": "Booked"
} Moves the appointment on the calendar. Your reminder settings decide whether the client hears about it. By default you confirm each call; you can switch that off for this tool.
MCP callphorest_write → reschedule_appointment
REST endpointPOST https://cotlet.dev/api/v1/phorest/appointments/{appointment_id}/reschedule
| Name | Type | Description |
|---|---|---|
| appointment_id string required | string | Appointment ID from list_appointments. |
| start string required | string | New ISO date and time. |
| staff string | string | New staff member. Default: unchanged. |
{
"appointment_id": "appointment_8c41d2",
"start": "start"
} {
"appointment_id": "A-73120",
"start": "2026-11-14T11:00",
"staff": "Niamh",
"status": "Booked"
} Marks the appointment cancelled and frees the slot. The reason is kept on the client record. By default you confirm each call; you can switch that off for this tool.
MCP callphorest_write → cancel_appointment
REST endpointPOST https://cotlet.dev/api/v1/phorest/appointments/{appointment_id}/cancel
| Name | Type | Description |
|---|---|---|
| appointment_id string required | string | Appointment ID from list_appointments. |
| reason string | string | Cancellation reason. |
{
"appointment_id": "appointment_8c41d2"
} {
"appointment_id": "A-73120",
"status": "Cancelled",
"reason": "Client request"
} Search matches name, mobile and email, so a returning client is found before a duplicate is made. Notes are for your team only.
Returns clients with ID, contact details and last visit. Pass the client_id to get_client or book_appointment.
MCP callphorest_read → list_clients
REST endpointGET https://cotlet.dev/api/v1/phorest/clients
| Name | Type | Description |
|---|---|---|
| query string | string | Name, mobile or email. |
| not_visited_days integer | integer | Only clients with no visit in this many days. |
| page integer | integer | Page number. Default: 1. |
{
"clients": [
{
"client_id": "CL-40192",
"name": "Sophie Walsh",
"mobile": "+353 85 555 0142",
"email": "sophie@example.com",
"last_visit": "2026-09-30"
}
],
"page": 1
} Returns the client record: contact details, notes, past services with staff and dates, and upcoming appointments.
MCP callphorest_read → get_client
REST endpointGET https://cotlet.dev/api/v1/phorest/clients/{client_id}
| Name | Type | Description |
|---|---|---|
| client_id string required | string | Client ID from list_clients. |
{
"client_id": "client_8c41d2"
} {
"client_id": "CL-40192",
"name": "Sophie Walsh",
"notes": "Colour formula 6.3 + 20 vol",
"history": [
{
"service": "Full head colour",
"staff": "Aoife",
"date": "2026-09-30"
}
],
"upcoming": []
} Creates the client record. Search list_clients first so a returning client does not become a duplicate. Reaches no one, so it runs at once.
MCP callphorest_write → create_client
REST endpointPOST https://cotlet.dev/api/v1/phorest/clients
| Name | Type | Description |
|---|---|---|
| first_name string required | string | First name. |
| last_name string required | string | Last name. |
| mobile string | string | Mobile number. |
| email string | string | Email. |
{
"first_name": "first name",
"last_name": "last name"
} {
"client_id": "CL-40311",
"name": "Emma Byrne",
"mobile": "+353 87 555 0199"
} Appends a note, for example a colour formula or a preference. Visible to your team only, so it runs at once.
MCP callphorest_write → add_client_note
REST endpointPOST https://cotlet.dev/api/v1/phorest/clients/{client_id}/note
| Name | Type | Description |
|---|---|---|
| client_id string required | string | Client ID from list_clients. |
| note string required | string | Note text. |
{
"client_id": "client_8c41d2",
"note": "note"
} {
"client_id": "CL-40192",
"note_added": "Prefers Saturday mornings"
} The service menu with durations and prices, so bookings use your exact service names.
Returns services by category with duration and price, so the agent books the exact service name.
MCP callphorest_read → list_services
REST endpointGET https://cotlet.dev/api/v1/phorest/services
| Name | Type | Description |
|---|---|---|
| category string | string | Service category. |
{
"services": [
{
"name": "Cut and blow dry",
"category": "Hair",
"duration_min": 60,
"price": "55.00"
}
]
} Your signed-in Phorest profile, AES-256-GCM encrypted, in Finland. No password.
The 10 Phorest tools, never the session cookie.
What your login sees: calendar, clients, notes, services.
Card payments, sales, payroll, marketing sends, deletes.
You sign in again yourself, in the same Cloud Browser.
Disable for agents, reset the browser, or change your Phorest password.
Cotlet never types your password: you sign in yourself, and the agent only uses the session. Our site scores A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory (live results).
When Phorest moves a button on the appointment screen or renames a calendar view, we fix the tool and your agent calls it the same way. status.cotlet.dev checks the site, console and API every 3 minutes.
| Action | Undo |
|---|---|
| Book an appointment | Yes, cancel it |
| Move an appointment | Move it back; a reminder already sent stays sent |
| Cancel an appointment | Book it again |
| Add a client or note | Yes, edit it in Phorest |
3 of 10 tools ask first: book_appointment, reschedule_appointment, cancel_appointment. A new client or a client note reach no customer, so they run at once. You can turn the wait off per tool once you trust a routine.
{
"name": "book_appointment",
"arguments": {
"client_id": "CL-40192",
"service": "Cut and blow dry",
"staff": "Aoife",
"start": "2026-11-13T14:30"
}
} curl -X POST https://cotlet.dev/api/v1/phorest/clients/CL-40192/appointments \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"service":"Cut and blow dry","staff":"Aoife","start":"2026-11-13T14:30"}' {
"appointment_id": "A-73188",
"client": "Sophie Walsh",
"service": "Cut and blow dry",
"staff": "Aoife",
"start": "2026-11-13T14:30",
"status": "Booked"
} A cron job or n8n flow can call the same tools over REST at /api/v1/phorest with the same key and price, in JSON. Failed calls are free. Each tool row above shows its REST path.
About $46 a monthfor a salon with 5 stylists, 7,940 credits. Your Phorest plan stays as it is.
| Job | Calls | Credits |
|---|---|---|
| Booking from a message | 3 × 120 | 3,600 |
| Appointment moved | 3 × 40 | 1,200 |
| Tomorrow's book checked | 1 × 26 | 260 |
| Clients due back, weekly | 12 × 4 | 480 |
| New client with a note | 3 × 30 | 900 |
| Cloud Browser, 30 days | 1,500 | |
| Total | 7,940 |
Phorest publishes no booking counts, so the month is our example. Dollars at the $29 pack rate.
| Credits | Price, one time | Calls at 10 credits | Per 1,000 credits |
|---|---|---|---|
| 5,000 | $29 | 500 | $5.80 |
| 15,000 | $79 | 1,500 | $5.27 |
| 32,000 | $149 | 3,200 | $4.66 |
| 60,000 | $249 | 6,000 | $4.15 |
Only successful calls use credits; failed calls and timeouts cost nothing. At a balance of 0 calls pause, never a surprise charge. Authenticate with the Authorization: Bearer header.
| Option | What it does | Where it stops |
|---|---|---|
| Phorest API | Appointments, clients and services for your own developer. | Credentials through Phorest Support; no webhooks; you build and host the code. |
| Third-party bridges | Hosted connections to ChatGPT and Claude built on the API. | Need the same Phorest API credentials first. |
| By hand | Every screen of Phorest, one booking at a time. | Your front desk's time. |
If you already have Phorest API credentials and a developer, building on the API is cheaper for simple reads. To book and reschedule from ChatGPT or Claude this week, Cotlet works in the Phorest account you already have.
Prefer code? Our public repo has a ready Phorest MCP config for Claude Code, ChatGPT and Cursor, an agent skill and a small command-line tool. Add your Cotlet API key and your agent works in your own Phorest account.
Take Group sp. z o.o. runs Cotlet. It is a software company registered in Poland, EU (VAT PL6342984273), in business since 2019, led by its founders Bart Krawczyk (Co-founder, CTO) and Jake Slugocki (Co-founder, SEO, sales and marketing). Questions about the Phorest tools go to contact@cotlet.dev.
Sign up free at https://cotlet.dev, open Phorest under Integrations in the console and sign in to Phorest in its Cloud Browser. The trial starts with your first app and asks for no card.
Sign up at cotlet.dev, log in to Phorest once in its Cloud Browser and add Cotlet to ChatGPT or Claude, following the steps in your console. No API key is needed. ChatGPT and Claude then work in your Phorest account through Cotlet, in their phone apps too.
With Cotlet, ChatGPT, Claude and other AI agents handle jobs like these in Phorest: book appointments from messages; reschedule a sick stylist's day; find clients due for a visit. You ask in plain words, and anything that reaches other people waits for your OK first.
No. Phorest has no ChatGPT or Claude connector of its own and Phorest has no official MCP server (checked 8 Nov 2026). Cotlet is an independent one that works in ChatGPT, Claude, Cursor and any MCP client, on your signed-in account.
Yes, with Cotlet. ChatGPT finds the client, checks free slots for the service and books it with the stylist you name. Booking waits for your OK by default.
Yes, with Cotlet. ChatGPT moves an appointment to a new time or another stylist, for example when someone is off sick, after your OK.
Yes, with Cotlet. ChatGPT searches clients by name, mobile or email and reads their visit history and notes, for example to find colour clients due back.
No. Cotlet works through your own Phorest login, so you do not need credentials from Phorest Support or a development team. It can do what your login can do in Phorest.
Phorest sends its own reminders and confirmations by your settings. A booking the agent makes is a normal Phorest booking, so the same reminders go out.
Only in how it is called. Both carry the same 10 tools, inputs, answers, API key and price. Agents use MCP; scripts and HTTP steps use REST.
No. Cotlet is independent and not affiliated with Phorest.
Free 7-day trial with 2,000 credits, no card needed.
May we use Google Analytics to see which pages help people? It sets cookies only if you accept. No ads, and we never sell data. Cookie policy