Booksy MCP Server
A 28-tool Booksy Biz connector for AI agents — read the calendar, clients, staff and reports, and make bookings, time off, review replies and client messages.
Calendar: list appointments in a date range (max 31 days), get one appointment's services/staff/prices/notes, and find free start times for a service on a day, per staff member.
Booking writes: create an appointment for one or several services, reschedule (new time, staff or services), or cancel — each with an optional
notify_clientand a dry run.Time off: list time off and calendar blocks, block whole days or a few hours for a staff member, and remove a block again.
Clients: list/search clients with contact details, visit counts and last visit (filter by
not_visited_days), get a full card with visit history, add, update, delete a card, and append dated private notes.Business setup: read the service menu with variants and prices, staff with weekly working hours, business hours and time zone, business profile and plan status, SMS allowance/settings, and panel notifications.
Reviews: list reviews with ratings, text and your reply; post or replace a public reply.
Message Blasts: list templates and scheduled blasts, estimate reach and SMS cost without sending, and send one message by email, SMS or push to chosen clients.
Stats & Reports: pull dashboard totals or a category (revenue, appointments, clients, cash flow, staff, marketing, tips, inventory) for a day, week, month or year.
Guardrails: writes run Booksy's own dry run first, no client is contacted unless you pass
notify_client, and a read-only mode exposes only the 17 read tools.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Booksy MCP Server show me today's appointments and any open slots this afternoon"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Booksy API and MCP server: connect Booksy to ChatGPT and Claude
Yes, ChatGPT, Claude and other AI agents can work in your Booksy account. That includes Cursor, Codex, OpenClaw and any MCP client, plus automations in n8n, Make and Zapier. Ask in plain words, and the AI reads your calendar and open slots, finds clients who have not been back, moves bookings when someone is off, answers reviews and compares revenue per staff member. It shows you what it will do first and sends nothing to other people until you say so.
As of November 2026, this repo is the missing piece: 28 Booksy tools for AI assistants and scripts.
What you can ask
What does tomorrow look like? List the appointments and any gaps longer than an hour.
Tom is off on Friday. Move his bookings to whoever is free at about the same time, and show me the plan first.
Compare last week's revenue per staff member with the week before.
Which clients have not been in for 60 days and have nothing booked?
Related MCP server: BookingKoala MCP Server
Two ways to get it
Run it yourself, this repo | ||
For | salon, barber and beauty business owners | developers |
Setup | sign in to Booksy once, about 5 minutes, nothing to install | Python and a terminal |
Works in | ChatGPT and Claude apps, on your phone too, Cursor, Codex, OpenClaw, any MCP client, n8n, Make, Zapier, REST API | Claude Code, Claude Desktop, Cursor, Codex on your computer |
Runs | 24/7, your computer can be off | while your computer is on |
Price | 7 days free, no card | free |
Cotlet is best for salon, barber and beauty business owners who want ChatGPT, Claude or another AI agent to work in Booksy for them, with nothing to install.
Run it yourself
A Booksy API and a Booksy MCP server you run on your own computer, in Python, on the session of your own Google Chrome. All 28 Booksy Biz tools we run in production at Cotlet: the calendar, open slots, time off, clients, services and staff, reviews, Message Blasts and Stats & Reports.
Booksy has no self-serve API for business owners and no official MCP server. This repo gives you both:
MCP server for Claude Code, Claude Desktop, Cursor, Codex and any MCP client, over stdio or HTTP. Setup
REST API on
http://127.0.0.1:8787/api/v1/booksy, with OpenAPI docs at/docs. SetupPython:
call("list_appointments", {"from": "2026-10-27", "to": "2026-10-27"}), plus 9 ready scripts inexamples/.
Free for your own use, your own business included (license).
Also on Odel: https://odel.app/modules/cotlet/booksy and mcpbeat: https://mcpbeat.com/mcp-servers/cotlet/booksy/
uv tool install booksy-api-mcp # or: pip install booksy-api-mcp
booksy-mcp connect # reads your Booksy Biz session from Chrome
booksy-mcp call list_services
claude mcp add booksy -- uvx booksy-api-mcp mcpContents
Questions from Booksy users
Does Booksy have an API? Not one a business owner can use. Booksy runs a partner API whose docs at docs.booksy.com ask for a login, so you cannot get keys for your own account (checked 11 Oct 2026). Stats & Reports and Message Blasts are not among its public areas. This repo and Cotlet give you 28 Booksy tools as a REST API and an MCP server.
Can I get a Booksy API key? Not from Booksy for your own account. With Cotlet you get your own API key that works with your Booksy account, for scripts, n8n, Make, Zapier or any HTTP client. This repo needs no key: it runs on your computer, on your own Booksy session.
Is there an official ChatGPT integration for Booksy? Booksy has a ChatGPT app for clients: it finds pros and books open slots. It does not run your business. Cotlet connects your Booksy Biz account to ChatGPT, Claude and other AI agents: your calendar, clients, staff, reviews, Message Blasts and stats.
How do I connect Booksy to ChatGPT? Sign up at cotlet.dev, sign in to Booksy once in your Cloud Browser there, and add Cotlet to ChatGPT, following the steps in your account. Then ask ChatGPT about your Booksy like you would ask an assistant. ChatGPT needs a server on the internet, so this repo alone, running on your computer, does not connect to ChatGPT.
Can ChatGPT manage my Booksy calendar? Yes, with Cotlet. It lists tomorrow's appointments and gaps, finds open slots, blocks time off and plans moves when a staff member is off. It shows you the plan before it changes anything.
Can AI bring back Booksy clients who stopped booking? Yes, with Cotlet. It finds clients who have not been in for a while and have nothing booked, so you can send them a Message Blast or a personal note.
Can I automate Booksy with Zapier, Make or n8n? We could not confirm a Booksy Zapier app. With Cotlet, n8n, Make and Zapier can read appointments and clients and send Message Blasts, for example to copy new bookings into a Google Sheet.
Can I use it from my phone? Yes, with Cotlet: once it is set up, the ChatGPT and Claude apps on your phone can use Booksy for you.
Do I need to be technical? For Cotlet, no: you sign in to Booksy and add Cotlet to ChatGPT or Claude, with step-by-step instructions in your account. This repo is for people who are fine with Python and a terminal.
Is my Booksy account safe? Yes. Neither Cotlet nor this repo sees or stores your Booksy password. You sign in yourself, the way you always do, and the AI works on that signed-in session. Anything that reaches other people asks for your OK first: in Cotlet by default, here through your MCP client.
Is it free? This repo is free, also in your own business. Cotlet is free for 7 days with no card, then one-time credit packs from $29, no subscription. Pricing.
I manage Booksy for several accounts or clients. Does that work? Yes, with Cotlet. Each Booksy login gets its own connection. Write to contact@cotlet.dev and tell us how many accounts you manage.
How it works
AI agent (MCP) / script (REST, Python) ──▶ booksy-mcp on your computer ──your Booksy session──▶ <country>.booksy.com
▲
booksy-mcp connect ───────┘ reads it once from your Chrome (DevTools Protocol)You sign in to Booksy Biz in your own Chrome at booksy.com/pro, the way you always do.
booksy-mcp connectattaches to that Chrome through the Chrome DevTools Protocol and reads your session. Booksy does not keep it in a cookie. The panel stores it in the localStorage of itsweb-gateway.booksy.comframe, soconnectreads that storage, the booksy.com cookies and the panel's country, and saves them to~/.config/booksy-api-mcp/session.json, readable by your user only. It never sees or stores your password.Every tool call is a request to the API the Booksy Biz web panel calls (
<country>.booksy.com/core/v2, sous.booksy.comfor a US business andpl.booksy.comfor a Polish one), sent with curl_cffi, which copies Chrome's TLS fingerprint. No headless browser runs.
When Booksy signs you out, the server reads the session from Chrome again, if Chrome is open with remote debugging on.
Requirements
Python 3.11 or newer.
Google Chrome 144 or newer, signed in to Booksy Biz. Any Chrome or Chromium works with a debugging port.
macOS, Linux or Windows.
A Booksy Biz owner account. Some reports, such as Staff Members, need Booksy Biz Pro. Booksy sends one-time Message Blasts on a paid plan only, not during the free trial.
Install
From PyPI:
uv tool install booksy-api-mcp # or: pipx install booksy-api-mcp, or: pip install booksy-api-mcp
booksy-mcp --versionMCP clients can also run it with no install: uvx booksy-api-mcp mcp.
From source:
git clone https://github.com/cotletdev/booksy-api-mcp-server.git
cd booksy-api-mcp-server
python3 -m venv .venv
. .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e .
booksy-mcp --versionWith uv: uv venv && uv pip install -e ., then uv run booksy-mcp ....
Setting it up with an AI agent (Claude Code, Codex, Cursor)? Open it in this folder and ask it to set up the repo: AGENTS.md tells it every step, and it asks you only for the steps in Chrome.
To update: uv tool upgrade booksy-api-mcp (or pip install -U booksy-api-mcp), from source git pull && pip install -e .. We copy every change of the hosted Booksy tools into this repo.
Connect your Chrome
Option A: your everyday Chrome (recommended)
Open
chrome://inspect/#remote-debuggingin Chrome and switch remote debugging on. Chrome then accepts DevTools connections from programs on this computer, and asks you before each one.Make sure you are signed in to Booksy Biz at booksy.com/pro. Keep a tab of the panel open, because
connectreads the session in it. With no Booksy tab open, it opens one in the background and closes it again.Run:
booksy-mcp connectChrome asks whether to allow the connection. Click Allow.
Saved 41 Booksy cookies and 50 localStorage keys to /Users/you/.config/booksy-api-mcp/session.json
Signed in to Booksy as Maria Lopez (Studio Maria)You can switch remote debugging off again afterwards. Leave it on if you want the server to pick up a new session by itself after Booksy signs you out.
connect looks for Chrome's DevToolsActivePort file in the default profile folder. For Chrome Beta, Canary or a custom profile folder, pass --profile-dir "<folder>".
Option B: a Chrome with a debugging port
Chrome does not open a debugging port on your default profile, so start a separate one, sign in to Booksy Biz there once, and connect to it:
# macOS
"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" --remote-debugging-port=9222 --user-data-dir="$HOME/.chrome-booksy"
# Linux
google-chrome --remote-debugging-port=9222 --user-data-dir="$HOME/.chrome-booksy"
# Windows
"C:\Program Files\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222 --user-data-dir="%USERPROFILE%\.chrome-booksy"
booksy-mcp connect --cdp http://127.0.0.1:9222--cdp also takes a ws:// DevTools URL, for example of a Chrome on another machine reached over an SSH tunnel.
There is no option to paste a cookie by hand, since Booksy has no session cookie. A server with no Chrome can use a session.json copied from a machine where connect ran.
Check the session at any time:
booksy-mcp statusMCP server
The MCP server lists every tool with its input schema, a description written for agents, and hints. Read tools are marked read-only, and tools that reach clients (bookings, reschedules, cancellations, review replies, blasts) are marked so your client asks before running them.
Claude Code
claude mcp add booksy -- uvx booksy-api-mcp mcp
# read only:
claude mcp add booksy -- uvx booksy-api-mcp mcp --read-onlyClaude Desktop
~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"booksy": {
"command": "uvx",
"args": ["booksy-api-mcp", "mcp"]
}
}
}Cursor
~/.cursor/mcp.json, the same block as Claude Desktop. A ready copy is in mcp.json.
Codex
~/.codex/config.toml:
[mcp_servers.booksy]
command = "uvx"
args = ["booksy-api-mcp", "mcp"]Over HTTP
booksy-mcp serve also serves MCP over streamable HTTP at http://127.0.0.1:8787/mcp, for clients that take a URL:
booksy-mcp serve
claude mcp add --transport http booksy http://127.0.0.1:8787/mcpThen ask your agent things like:
What does tomorrow look like? List the appointments and any gaps longer than an hour.
Tom is off on Friday. Move his bookings to whoever is free at about the same time, and show me the plan first.
Compare last week's revenue per staff member with the week before.
Which clients have not been in for 60 days and have nothing booked?
REST API
booksy-mcp serve # http://127.0.0.1:8787, MCP at /mcp, docs at /docsEach tool has its own route under /api/v1/booksy, the same paths as the hosted API at cotlet.dev, so code written against one works with the other. Path parts and the query string are arguments, and a JSON body adds the rest.
curl 'http://127.0.0.1:8787/api/v1/booksy/services'
curl 'http://127.0.0.1:8787/api/v1/booksy/appointments?from=2026-10-27&to=2026-10-31'
curl 'http://127.0.0.1:8787/api/v1/booksy/services/8307205/open-slots?date=2026-10-27'
curl -X POST http://127.0.0.1:8787/api/v1/booksy/staffs/882081/time-offs \
-H 'Content-Type: application/json' \
-d '{"start": "2026-11-02", "end": "2026-11-06", "reason": "vacation"}'Any tool by name, body as its arguments:
curl -X POST http://127.0.0.1:8787/api/v1/booksy/tools/find_client -d '{"query": "nowak"}'GET /api/v1/booksy/tools: every tool with its route, input schema and an example answer.GET /docs: interactive OpenAPI docs,GET /openapi.jsonthe schema, for n8n, Postman or a generated client.Answers are JSON.
list_clientsreturnsnext_cursor; pass it back ascursorfor the next page. Reviews and notifications takepage.
The server listens on 127.0.0.1 only. To reach it from another device of yours, set a token, and every request then needs Authorization: Bearer <token>:
BOOKSY_MCP_TOKEN=$(openssl rand -hex 24) booksy-mcp serve --host 0.0.0.0Python and the example scripts
Straight from Python, no server needed:
from booksy_api_mcp import call
from booksy_api_mcp.scripting import paginate, write_rows
services = call("list_services")["services"]
day = call("list_appointments", {"from": "2026-10-27", "to": "2026-10-27"})["appointments"]
clients = list(paginate("list_clients", {"not_visited_days": 60, "limit": 100}, "clients"))
write_rows(clients, "slipping-away.csv")
call("add_time_off", staff_id="882081", start="2026-11-02T13:00", end="2026-11-02T14:00", reason="Lunch")Or one tool from the shell: booksy-mcp call find_open_slots service_id=8307205 date=2026-10-27, or with a JSON object. An ID stays text where the tool takes text.
Times are local to the business. A date-time without a zone is read in the business's time zone, and answers carry its offset.
Ready scripts in examples/. Each prints JSON or a short list, takes --out file.csv or --out file.json where it makes sense, and --help:
Script | What it does |
Tomorrow's appointments, one line each, and the open slots left for a service. | |
Moves one staff member's appointments on a day to colleagues free within an hour of the original time. Prints the plan; | |
Adds whole days off or blocks hours on one day, or removes a time off. | |
Clients to CSV or JSON: contact, note, visits, no-shows, revenue, last visit. | |
Clients not seen for N days, minus anyone booked in the next 30 days. | |
One Message Blast to those lapsed clients, after it shows the reach and SMS cost and asks. | |
Appointments and revenue per staff member, last week against the week before, big moves flagged. | |
Reviews without a reply, lowest rating first; | |
Adds a client card with no invitation, or a note to an existing one. |
python examples/tomorrows_appointments.py --open-slots-for 8307205
python examples/reschedule_day.py --staff-id 882081 --date 2026-10-27
python examples/export_clients.py --not-visited-days 60 --out slipping-away.csvOn a schedule, cron on your own computer works while it is on: 0 19 * * * cd ~/booksy-api-mcp-server && .venv/bin/python examples/tomorrows_appointments.py.
All 28 tools
IDs come from the list tools: service_id from list_services, staff_id from list_staff, client_id from list_clients or find_client, appointment_id from list_appointments. booksy-mcp tools prints this list, booksy-mcp tools --json adds the input schemas.
Calendar
Tool | Access | REST route | What it does |
| read |
| Appointments in a date range with client, service, staff, time and status. |
| read |
| One appointment: services, staff, times, price, client and notes. |
| read |
| Free start times for a service on one day, from working hours, bookings, blocks and time off. |
| write |
| Book a client for one or more services at a start time; Booksy checks the slots first. |
| write |
| Change an appointment: a new start time, another staff member, or other services. |
| write |
| Cancel an appointment and free its time in the calendar. |
Time off
Tool | Access | REST route | What it does |
| read |
| Staff time off and blocked hours in a date range. |
| write |
| Block a staff member's calendar so no one can book it: whole days off or a few hours. |
| write |
| Remove time off or a blocked period so the time can be booked again. |
Clients
Tool | Access | REST route | What it does |
| read |
| Clients with contact details, visit counts and last visit, plus Booksy's client groups. |
| read |
| Client cards matching a name, email or phone. |
| read |
| One client card: contact details, private note, counts and visit history. |
| write |
| Add a client card to your client list. Needs a phone or an email. |
| write |
| Change a client card's name, phone, email, birthday or private note. |
| write |
| Add a dated line to a client's private note, keeping what is there. |
| write |
| Remove a client card from your client list. |
Business setup
Tool | Access | REST route | What it does |
| read |
| Your service menu with category, variants, duration, price and the staff who offer each. |
| read |
| Staff members with their working hours for a week and the services they offer. |
| read |
| Weekly opening hours, time zone and booking lead times of the business. |
| read |
| Your business's name, address, contact, opening hours, booking policy, rating and plan status. |
| read |
| Text message allowance and usage, client message channels and your notification settings. |
| read |
| Notifications from the panel's bell: new bookings, changes, cancellations, reviews. |
Reviews
Tool | Access | REST route | What it does |
| read |
| Client reviews of your business with rating, text, services, staff and your reply. |
| write |
| Post or change your public reply to a client's review. |
Message Blasts
Tool | Access | REST route | What it does |
| read |
| Message Blast templates (automated and one-time) and the blasts scheduled to go out. |
| read |
| Count who a Message Blast would reach and its SMS cost, without sending it. |
| write |
| Send one message to chosen clients by email, SMS or push notification. |
Stats & Reports
Tool | Access | REST route | What it does |
| read |
| Numbers from Stats & Reports for a day, week, month or year, as JSON. |
Writes run Booksy's own dry run first, and send the client no notice unless you pass notify_client. New clients get no invitation. send_message_blast refuses an empty client list, because Booksy reads an empty list as every client.
Never built, on purpose: your Booksy sign-in, email, password and account deletion, and anything that moves money (subscription, payments, payouts, billing). Every request passes a guard that refuses those Booksy paths.
Configuration
Variable | Default | What it does |
|
| Folder of |
| Proxy for every request to Booksy, e.g. | |
|
| |
| Bearer token required by | |
|
| Address of |
Security and your Booksy account
Your password never reaches this code. Only the session the panel already keeps is read, and only that of booksy.com.
The session file is yours.
session.jsonis created with mode 0600 and holds your Booksy access token. Anyone who has it can act as you in Booksy Biz, so keep it out of git and shared folders.Local by default.
servebinds to127.0.0.1and refuses another address withoutBOOKSY_MCP_TOKEN.booksy.com only. Requests and redirects outside booksy.com are refused.
Read-only mode.
--read-onlyorBOOKSY_MCP_READ_ONLY=1exposes the 17 read tools only.Actions reach real people. A booking, a move with
notify_client, a cancellation, a review reply and a blast reach your clients. MCP clients ask before running them; a script does not, so try it on a test client of your own first.Do not spam. Blasts to people who did not agree break Booksy's rules and the law in many countries. You are responsible for what runs in your account.
Errors
The REST API answers {"error": "<code>", "message": "..."}. The MCP server returns the same code and message as a tool error.
Status | Code | What to do |
401 |
| No session, or Booksy signed you out. Sign in to Booksy Biz in Chrome and run |
403 |
| Your Booksy plan or role cannot do this, e.g. a Pro report on Booksy Biz Lite. |
403 |
| The server runs read-only, or the request would change your Booksy account itself. |
403 |
| Booksy refused the request or showed a bot check. Open the panel in Chrome once, then retry. |
409 |
| Booksy asks for a CAPTCHA. Solve it in Chrome. |
422 |
| An argument is missing or wrong; the message names it. |
429 |
| Booksy is limiting the account. Wait a few minutes. |
502 |
| Booksy answered with an error, or changed its panel. |
Self-hosted or hosted
This repo | ||
Tools | the same 28 | the same 28 |
Runs | on your computer, while it is on | in the cloud, 24/7 |
Booksy session | your Chrome, saved in a local file | your own Cloud Browser in the EU, profile encrypted with AES-256-GCM |
When Booksy changes its panel |
| fixed for you, every tool tested daily |
Approvals | your MCP client asks per call | bookings, reschedules, replies and blasts wait for your OK, switchable per tool |
Works with | MCP clients on your machine, local scripts | Claude.ai and ChatGPT connectors, n8n, Make, Zapier, any HTTP client |
Who may use it | you and your own business | you, teams, businesses, agencies |
Price | free | free 7-day trial with 2,000 credits, no card; then one-time packs from $29 for 5,000 credits |
On the hosted version a successful call uses 10 credits for most tools, failed calls are free, and the Cloud Browser uses 50 credits a day while it has an app enabled for agents. Full pricing.
FAQ
Is there a Booksy MCP server for Claude, ChatGPT or Cursor?
Yes, this one runs on your machine: booksy-mcp mcp for Claude Code, Claude Desktop, Cursor and Codex. ChatGPT and Claude.ai connectors need a public HTTPS URL, which the hosted Booksy MCP server gives you.
Is there a Booksy Zapier app? We could not confirm one. Owners who want bookings elsewhere forward Booksy confirmation emails to a Zapier email parser. That copies new bookings one way and cannot change anything in Booksy.
Can I export my Booksy clients to CSV?
Yes: python examples/export_clients.py --out clients.csv. Every client card with contact details, note, visits, no-shows, revenue and last visit, across all pages.
Can it find free slots and book for me?
find_open_slots gives the free starts for a service on a day, per staff member, each checked with Booksy's own dry run. create_appointment books one of them for a client, and the client hears about it only with notify_client.
Can it send Message Blasts?
Yes, send_message_blast by email, SMS or push, on a paid Booksy plan. Run estimate_message_blast first for the reach and the SMS cost. In the EU only clients who gave marketing consent get it.
Does it work outside the US?
Yes. Booksy runs a separate API per country, and the server picks it from your session: us.booksy.com, pl.booksy.com, es.booksy.com and so on.
Why does it need my Chrome? To read your Booksy session without your password. Chrome is used once per sign-in, not for each call.
What happens when Booksy signs me out?
Calls fail with auth_expired. With Chrome remote debugging on, the server reads the new session on the next call (click Allow when Chrome asks). Otherwise run booksy-mcp connect again.
Can it run on a VPS or in Docker?
Technically yes, with a session.json copied from your computer. Booksy then sees your session from a datacenter IP, which looks less like you. For an always-on setup the hosted version keeps your session in your own Cloud Browser on a fixed IP.
Will my Booksy account get banned? Requests carry Chrome's fingerprint and go out one at a time, as you would click. Nobody can promise a platform never acts. Keep to your normal use and do not blast people who did not agree.
Can I use it for my salon or for my clients? For your own salon, yes, free. You may not offer it to others as a hosted or managed service. For client work, use Cotlet or write to contact@cotlet.dev.
Is it open source? The source is public under the Elastic License 2.0: free to use and change, also in your own business, but not to resell as a hosted service.
A tool broke or I need another one. Open an issue with the tool name and the error message.
License
Elastic License 2.0. In short:
Allowed: using it for yourself and in your own business, free. Changing the code and sharing it under the same license.
Not allowed: offering it to others as a hosted or managed service, removing the license notices, getting around its limits.
Maintained by Cotlet (@cotletdev). Booksy is a trademark of its owner. This project is unofficial and not affiliated with, endorsed or sponsored by Booksy.
Available Tools
28 toolsadd_clientAdd clientAInspect
Add a client card to your client list. Needs a phone or an email.
Adds one client card with a name, a phone or an email (Booksy needs one of them), and optionally a private note and a birthday. The client is not invited to the Booksy app and gets no message, so add_client runs without asking first. delete_client removes the card again. A card deleted earlier with the same email or phone comes back with its old visits, note and birthday unless new ones are given.
Inputs: name (required), note, email, phone, +1 more.
add_client_noteAdd client noteAInspect
Add a dated line to a client's private note, keeping what is there.
Booksy keeps one private note per client card, seen only by the business. This adds a new line starting with today's date under the existing text. The client is not told.
Inputs: text (required), client_id (required).
add_time_offAdd time offAInspect
Block a staff member's calendar so no one can book it: whole days off or a few hours.
Two dates (YYYY-MM-DD) add whole days of time off, like Staff > Shifts. Two date-times on the same day block those hours in the calendar, like a time reservation. Booksy refuses a block over existing appointments. It reaches no client; remove_time_off takes it back.
Inputs: end (required), start (required), staff_id (required), reason.
cancel_appointmentCancel appointmentADestructiveInspect
Cancel an appointment and free its time in the calendar.
Cancels one appointment as the business. The client is told only with notify_client. A deposit, if any, follows the business's deposit settings. Booksy refuses appointments it no longer lets you cancel (can in get_appointment). There is no undo; book again with create_appointment.
Inputs: appointment_id (required), reason, notify_client.
create_appointmentCreate appointmentADestructiveInspect
Book a client for one or more services at a start time; Booksy checks the slots first.
Books one client card for service_id, or for several services in one appointment, each with its own staff member, back to back from start. Each end follows the service's duration. Booksy's dry run checks every staff member is free first; a busy slot is refused, never double-booked. The client gets Booksy's confirmation only with notify_client. dry_run returns the same answer with saved false and keeps nothing.
Inputs: start (required), client_id (required), note, dry_run, +4 more.
delete_clientDelete clientADestructiveInspect
Remove a client card from your client list.
Deletes the card the way the panel's Delete button does. The client is not told. Past appointments stay in the calendar.
Inputs: client_id (required).
estimate_message_blastEstimate Message BlastARead-onlyIdempotentInspect
Count who a Message Blast would reach and its SMS cost, without sending it.
Asks Booksy what send_message_blast would do with the same clients, channel and text: how many clients it reaches, how many emails, texts or push notifications go out and what the texts cost beyond the plan's free allowance. Where the law asks for marketing consent (EU), consented counts only the clients who agreed; send_message_blast sends to those. Nothing is sent.
Inputs: channel (required), message (required), client_ids (required).
find_clientFind clientARead-onlyIdempotentInspect
Client cards matching a name, email or phone.
Searches the client list the way the Clients page's search box does and returns the matching cards with contact details, note and visit counts. A card added a moment ago can take a few seconds to show up in search; get_client reads it by ID at once.
Inputs: query (required), limit.
find_open_slotsFind open slotsARead-onlyIdempotentInspect
Free start times for a service on one day, from working hours, bookings, blocks and time off.
Returns free start times for one service on one day, earliest first, for each staff member who offers it (or only staff_id). Starts follow the service's time slot interval and leave room for its duration; past times are left out. Booksy's own booking check confirms every slot returned. Pass start and staff_id to create_appointment.
Inputs: date (required), service_id (required), limit, staff_id.
get_appointmentGet appointmentARead-onlyIdempotentInspect
One appointment: services, staff, times, price, client and notes.
Returns one appointment with each service's staff member, times and price, the client, the total and the notes. note is the internal note only staff see; client_note is the note shown to the client. can lists what Booksy allows now (cancel, change, confirm, decline, no_show).
Inputs: appointment_id (required).
get_business_hoursGet business hoursARead-onlyIdempotentInspect
Weekly opening hours, time zone and booking lead times of the business.
Reads the opening hours set in Business details: open ranges for each day (an empty list is closed), the note shown with them, the business's time zone and address, and how early and how late clients may book or change a visit.
Inputs: no named parameters.
get_business_profileGet business profileARead-onlyIdempotentInspect
Your business's name, address, contact, opening hours, booking policy, rating and plan status.
Reads the business record behind your Booksy profile: name, address and time zone, phone, public email, website, description, weekly opening hours, how far ahead clients can book and change, review rating, whether the profile is visible in the Booksy marketplace, and the plan status with the trial end date.
Inputs: no named parameters.
get_clientGet clientARead-onlyIdempotentInspect
One client card: contact details, private note, counts and visit history.
Reads one client card of the business by ID: name, email, phone, birthday, private note, tags, whether the client is blocked or uses the Booksy app, visit, no-show and cancellation counts, revenue, and the visits (past and upcoming appointments) with times, services, staff, status and total. A visit's appointment_uid is the appointment_id of get_appointment.
Inputs: client_id (required), visits_limit.
get_reportGet reportARead-onlyIdempotentInspect
Numbers from Stats & Reports for a day, week, month or year, as JSON.
Returns one Stats & Reports category for a period: dashboard gives the totals for appointments, revenue and clients with the change against the previous period; any other category gives its highlight tables and the list of its reports. Pass report with a key from that list for the full report. Booksy counts one day, one Monday-to-Sunday week, one calendar month or one calendar year, so from and to must be such a period. Amounts come formatted in the business's currency. Booksy Biz Lite has the dashboard, revenue, appointments and clients; cash_flow, inventory, staff_members and marketing need Booksy Biz Pro.
Inputs: to (required), from (required), category (required), report, +1 more.
get_settingsGet settingsARead-onlyIdempotentInspect
Text message allowance and usage, client message channels and your notification settings.
Reads the settings an agent needs before messaging clients: whether SMS and email to clients are on, the free and paid text allowance with this period's usage and price per text part, and which booking events notify you by email or push. Changes stay in the Booksy app.
Inputs: no named parameters.
list_appointmentsList appointmentsARead-onlyIdempotentInspect
Appointments in a date range with client, service, staff, time and status.
Lists the Booksy calendar between two days (31 at most), in start order, including unconfirmed requests. Times carry the business's time zone. A walk-in has an empty client. An appointment with several services is one row listing them all; get_appointment returns prices and notes.
Inputs: to (required), from (required), staff_id.
list_clientsList clientsARead-onlyIdempotentInspect
Clients with contact details, visit counts and last visit, plus Booksy's client groups.
Reads the Clients list of the business, A to Z: name, email, phone, private note, tags, visits, no-shows, cancellations, revenue and the last visit. Search by name, email or phone, or keep only clients who have not visited for a number of days (filtered on each page). groups gives Booksy's smart groups (new, most loyal, slipping away, prospects, upcoming birthdays ..) with their counts.
Inputs: limit, query, cursor, not_visited_days.
list_message_blastsList Message BlastsARead-onlyIdempotentInspect
Message Blast templates (automated and one-time) and the blasts scheduled to go out.
Reads Promotion > Message Blasts: every automated template with its trigger and whether it is on, every one-time template, and the blasts scheduled for later. send_message_blast sends a one-time message; estimate_message_blast counts recipients and SMS cost first.
Inputs: no named parameters.
list_notificationsList notificationsARead-onlyIdempotentInspect
Notifications from the panel's bell: new bookings, changes, cancellations, reviews.
Reads the notifications Booksy shows under the bell in the panel, newest first. Client chat is not included. Reading does not mark them seen.
Inputs: page, per_page, unread_only.
list_reviewsList reviewsARead-onlyIdempotentInspect
Client reviews of your business with rating, text, services, staff and your reply.
Reads the reviews on your Booksy profile, newest first by default: star rating, text, the client's name as Booksy shows it, services, staff, visit date and your reply if you wrote one. Also returns the average rating and the count per star. Reply with reply_to_review.
Inputs: page, sort, per_page.
list_servicesList servicesARead-onlyIdempotentInspect
Your service menu with category, variants, duration, price and the staff who offer each.
Reads the services of the business: name, category, description, whether clients can book it online, and its variants with duration in minutes, price (number and as shown, with currency), price type and the staff IDs who perform it. create_appointment and find_open_slots take service_id (its first variant) or a variant_id for another variant.
Inputs: no named parameters.
list_staffList staffARead-onlyIdempotentInspect
Staff members with their working hours for a week and the services they offer.
Reads the staff of the business: name, position, email, phone, access level, whether clients see them, the services each one performs, and working hours for each day of one week (Monday to Sunday, from Shifts, time off included). Use staff_id in other tools.
Inputs: week_start_date.
list_time_offList time offARead-onlyIdempotentInspect
Staff time off and blocked hours in a date range.
Lists time off from Shifts (kind time_off: dates, hours only when it is part of a day) and blocked hours in the calendar (kind block: date-times) between two days, 31 at most. time_off_id goes to remove_time_off.
Inputs: to (required), from (required), staff_id.
remove_time_offRemove time offADestructiveInspect
Remove time off or a blocked period so the time can be booked again.
Deletes one time off (off-…) or one calendar block (block-…). It reaches no client.
Inputs: staff_id (required), time_off_id (required).
reply_to_reviewReply to reviewADestructiveIdempotentInspect
Post or change your public reply to a client's review.
Writes your reply under one review on your Booksy profile, the way the Reviews page does. A second call replaces the reply. Everyone who sees your profile sees it and the reviewer is told.
Inputs: reply (required), review_id (required).
reschedule_appointmentReschedule appointmentADestructiveInspect
Change an appointment: a new start time, another staff member, or other services.
Without services, moves every service of the appointment by the same amount, so the first one starts at start. With services, the list replaces the appointment's services, each with its own staff member, back to back from start (default: the current start). Booksy's dry run checks the new slots first and a busy one is refused. The client hears about it only with notify_client. Booksy refuses appointments it no longer lets you change (can in get_appointment).
Inputs: appointment_id (required), start, services, staff_id, +1 more.
send_message_blastSend Message BlastADestructiveInspect
Send one message to chosen clients by email, SMS or push notification.
Sends one Message Blast now to the clients you list, by email, SMS or a push notification to the Booksy Client App, as Promotion > Message Blasts > Create your own message does. Where the law asks for marketing consent (EU), only the listed clients who agreed get it; the call fails when none can. SMS comes from an automated number, so clients cannot reply, and uses the plan's text allowance. Run estimate_message_blast first to see the count and cost. Needs a paid Booksy plan: on the free trial Booksy refuses one-time messages.
Inputs: channel (required), message (required), client_ids (required), subject.
update_clientUpdate clientAInspect
Change a client card's name, phone, email, birthday or private note.
Changes only the fields given and leaves the rest of the card as it is. The note replaces the card's private note; add_client_note adds a line instead. The client is not told.
Inputs: client_id (required), name, note, email, +2 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 28 tools
Most tools are clearly distinct by resource and action, with little risk of misselection. Minor overlap exists between get_business_hours and get_business_profile (both expose hours/time zone), and between add_client_note and update_client for notes, but the descriptions clarify the intended usage.
All 28 tool names use snake_case with a predictable verb_noun pattern such as get_client, list_appointments, create_appointment, update_client, and delete_client. There are no mixed naming conventions or vague bare verbs.
At 28 tools, the surface is heavy and exceeds the typical 3–15 range, though the broad Booksy business-management domain covers clients, appointments, staff, services, messaging, reviews, reporting, and time off. It is borderline heavy rather than clearly bloated, since most tools map to distinct operations.
Core client CRUD and the main appointment lifecycle (list/get/create/reschedule/cancel) are covered, along with time off, messaging, reviews, and read-only business data. However, get_appointment advertises confirm, decline, and no_show actions that have no corresponding tools, leaving a notable dead end in appointment status management.
Maintenance
Related MCP Connectors
Fresha MCP server for ChatGPT, Claude and any AI agent: list appointments, create appointment, reschedule appointment, list clients and get sales summary in your own Fresha account. Cotlet works in the account through your Cloud Browser, a real Chrome where you sign in to Fresha yourself; Cotlet does not store your password and you need no Fresha API key. About the official Fresha API: Fresha has no public API and no developer docs (checked 11 Oct 2026). Its only official data connection is the paid Data Connector add-on, which syncs your data out to reporting tools through a Snowflake database connection. Setup and FAQ: https://cotlet.dev/integrations/fresha-api-mcp-server
Manage an EasyWeek business from AI: bookings, availability, customers, services, orders, messaging.
GlossGenius MCP server for ChatGPT, Claude and any AI agent: list appointments, book appointment, reschedule appointment, find client and get sales summary in your own GlossGenius account. Cotlet works in the account through your Cloud Browser, a real Chrome where you sign in to GlossGenius yourself; Cotlet does not store your password and you need no GlossGenius API key. About the official GlossGenius API: GlossGenius has no public API, developer docs, webhooks or MCP server (checked 24 Oct 2026). Its help center says it offers no direct integrations with accounting or reporting tools; data leaves only as reports and a client list CSV you download by hand. Setup and FAQ: https://cotlet.dev/integrations/glossgenius-api-mcp-server
Acuity Scheduling MCP server for ChatGPT, Claude and any AI agent: list appointments, check availability, book appointment, reschedule appointment, cancel appointment and block off time in your own Acuity Scheduling account. Cotlet works in the account through your Cloud Browser, a real Chrome where you sign in to Acuity Scheduling yourself; Cotlet does not store your password and you need no Acuity Scheduling API key. About the official Acuity Scheduling API: Acuity Scheduling has a full REST API but no official MCP server (checked 17 Oct 2026). The API uses HTTP Basic auth with your user ID and API key, and Acuity says API access is available on the Premium plan (formerly Powerhouse), so Starter and Standard accounts have no key to give an agent. Setup and FAQ: https://cotlet.dev/integrations/acuity-scheduling-api-mcp-server
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables AI agents to look up businesses, find free appointment slots, book, list and cancel appointments at salons, barbershops, nail and brow studios and clinics. Works read-only without a customer login by returning a pre-filled booking link, and can also run against a built-in demo with sample businesses.5MIT
- AlicenseAqualityBmaintenanceEnables AI agents and scripts to manage bookings, provider assignment, rescheduling, cancellations, customers, quotes, invoices, and dashboard data through a self-hosted API and MCP interface using your own Chrome session.217131 PyPI6Elastic 2.0
- AlicenseCqualityCmaintenanceEnables AI assistants to read a salon's Booksy Biz calendar, staff schedules, clients, payments and reports through the user's own logged-in browser tab, without extracting session tokens or spoofing browser fingerprints.89MIT
- AlicenseAqualityCmaintenanceEnables AI agents to operate a signed-in DINGG account through natural-language commands, booking and rescheduling appointments, checking schedules, and following up with clients without requiring a DINGG API key.7Elastic 2.0