Booksy by Cotlet

dev.cotletPublished by cotlet.devOfficial publisherv1.0.2Updated Oct 28, 2026

Bookings, clients, reviews and reports for beauty businesses.

The publisher's own server: Cotlet

Overview

AI-generated overview

Booksy Biz MCP server that lets an assistant read and change a beauty business's calendar, clients, reviews, blasts and reports.

What you can do
  • Read the calendar and availability: appointments, single appointments, open slots, time off and blocked hours
  • Book, move and cancel appointments, and add or remove staff time off
  • Search, read, add, update and delete client cards and private notes
  • Read the service menu, staff, opening hours, business profile, settings and panel notifications
  • Read reviews and post or replace a public reply
  • List and estimate Message Blasts, send one by email, SMS or push, and pull Stats & Reports figures
When to use it
Useful for salon, barber and beauty business owners or their developers who want an assistant to answer questions about the day's bookings, find gaps, plan moves when staff are off, chase lapsed clients, reply to reviews or compare revenue per staff member.
Requirements
Either the hosted endpoint at cotlet.dev, which needs a Cotlet API key sent as an Authorization bearer header, or the local Python package (Python 3.11+) run with uvx, which needs Google Chrome 144+ signed in to Booksy Biz and a one-time connect step that saves a session file. A Booksy Biz owner account is required; some reports need Booksy Biz Pro and one-time blasts need a paid plan.
Before you install
Many tools write to the live account and reach real clients: bookings, reschedules, cancellations, review replies and Message Blasts, and the server asks for confirmation only through the MCP client. The saved session file holds a Booksy access token that lets anyone act as the business, so keep it out of git and shared folders. Blasts cost money for SMS beyond the free allowance and require marketing consent where the law demands it. Read-only mode or the read-only flag limits exposure.

Installation

In SourceWeft

  1. Open Booksy by Cotlet in the dashboard and add it to a workspace.
  2. Connect the required credentials. They are stored privately and never shown on public pages.
  3. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/dev.cotlet%2Fbooksy/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config. The client completes OAuth sign-in on first connect.

{
  "mcpServers": {
    "booksy-by-cotlet": {
      "type": "http",
      "url": "https://cotlet.dev/mcp/v1/booksy/connect"
    }
  }
}

README

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?

Two ways to get it

Ready to use, at CotletRun it yourself, this repo
Forsalon, barber and beauty business ownersdevelopers
Setupsign in to Booksy once, about 5 minutes, nothing to installPython and a terminal
Works inChatGPT and Claude apps, on your phone too, Cursor, Codex, OpenClaw, any MCP client, n8n, Make, Zapier, REST APIClaude Code, Claude Desktop, Cursor, Codex on your computer
Runs24/7, your computer can be offwhile your computer is on
Price7 days free, no cardfree

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.

Start free at cotlet.dev →

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. Setup
  • Python: call("list_appointments", {"from": "2026-10-27", "to": "2026-10-27"}), plus 9 ready scripts in examples/.

Free for your own use, your own business included (license).

[Booksy MCP server] [Python 3.11+] [License: Elastic 2.0] [MCP Badge]

bash
uv tool install booksy-api-mcp                  # or: pip install booksy-api-mcpbooksy-mcp connect                                 # reads your Booksy Biz session from Chromebooksy-mcp call list_servicesclaude mcp add booksy -- uvx booksy-api-mcp mcp

Contents

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 [email protected] and tell us how many accounts you manage.

How it works

text
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)
  1. You sign in to Booksy Biz in your own Chrome at booksy.com/pro, the way you always do.
  2. booksy-mcp connect attaches 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 its web-gateway.booksy.com frame, so connect reads 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.
  3. Every tool call is a request to the API the Booksy Biz web panel calls (<country>.booksy.com/core/v2, so us.booksy.com for a US business and pl.booksy.com for 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:

bash
uv tool install booksy-api-mcp       # or: pipx install booksy-api-mcp, or: pip install booksy-api-mcpbooksy-mcp --version

MCP clients can also run it with no install: uvx booksy-api-mcp mcp.

From source:

bash
git clone https://github.com/cotletdev/booksy-api-mcp-server.gitcd booksy-api-mcp-serverpython3 -m venv .venv. .venv/bin/activate              # Windows: .venv\Scripts\activatepip install -e .booksy-mcp --version

With 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)

  1. Open chrome://inspect/#remote-debugging in Chrome and switch remote debugging on. Chrome then accepts DevTools connections from programs on this computer, and asks you before each one.

  2. Make sure you are signed in to Booksy Biz at booksy.com/pro. Keep a tab of the panel open, because connect reads the session in it. With no Booksy tab open, it opens one in the background and closes it again.

  3. Run:

    bash
    booksy-mcp connect
  4. Chrome asks whether to allow the connection. Click Allow.

text
Saved 41 Booksy cookies and 50 localStorage keys to /Users/you/.config/booksy-api-mcp/session.jsonSigned 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:

bash
# macOS"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" --remote-debugging-port=9222 --user-data-dir="$HOME/.chrome-booksy"# Linuxgoogle-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:

bash
booksy-mcp status

MCP 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

bash
claude mcp add booksy -- uvx booksy-api-mcp mcp# read only:claude mcp add booksy -- uvx booksy-api-mcp mcp --read-only

Claude Desktop

~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

json
{  "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:

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:

bash
booksy-mcp serveclaude mcp add --transport http booksy http://127.0.0.1:8787/mcp

Then 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

bash
booksy-mcp serve                   # http://127.0.0.1:8787, MCP at /mcp, docs at /docs

Each 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.

bash
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:

bash
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.json the schema, for n8n, Postman or a generated client.
  • Answers are JSON. list_clients returns next_cursor; pass it back as cursor for the next page. Reviews and notifications take page.

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>:

bash
BOOKSY_MCP_TOKEN=$(openssl rand -hex 24) booksy-mcp serve --host 0.0.0.0

Python and the example scripts

Straight from Python, no server needed:

python
from booksy_api_mcp import callfrom 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:

ScriptWhat it does
tomorrows_appointments.pyTomorrow's appointments, one line each, and the open slots left for a service. --date, --staff-id.
reschedule_day.pyMoves one staff member's appointments on a day to colleagues free within an hour of the original time. Prints the plan; --apply moves them, asking each time.
block_time_off.pyAdds whole days off or blocks hours on one day, or removes a time off.
export_clients.pyClients to CSV or JSON: contact, note, visits, no-shows, revenue, last visit. --search, --not-visited-days.
lapsed_clients.pyClients not seen for N days, minus anyone booked in the next 30 days.
win_back_blast.pyOne Message Blast to those lapsed clients, after it shows the reach and SMS cost and asks.
weekly_staff_report.pyAppointments and revenue per staff member, last week against the week before, big moves flagged.
unanswered_reviews.pyReviews without a reply, lowest rating first; --reply-to posts a reply.
add_client.pyAdds a client card with no invitation, or a note to an existing one.
bash
python examples/tomorrows_appointments.py --open-slots-for 8307205python examples/reschedule_day.py --staff-id 882081 --date 2026-10-27python examples/export_clients.py --not-visited-days 60 --out slipping-away.csv

On 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

ToolAccessREST routeWhat it does
list_appointmentsreadGET /appointmentsAppointments in a date range with client, service, staff, time and status.
get_appointmentreadGET /appointments/{appointment_id}One appointment: services, staff, times, price, client and notes.
find_open_slotsreadGET /services/{service_id}/open-slotsFree start times for a service on one day, from working hours, bookings, blocks and time off.
create_appointmentwritePOST /clients/{client_id}/appointmentsBook a client for one or more services at a start time; Booksy checks the slots first.
reschedule_appointmentwritePOST /appointments/{appointment_id}/rescheduleChange an appointment: a new start time, another staff member, or other services.
cancel_appointmentwritePOST /appointments/{appointment_id}/cancelCancel an appointment and free its time in the calendar.

Time off

ToolAccessREST routeWhat it does
list_time_offreadGET /time-offsStaff time off and blocked hours in a date range.
add_time_offwritePOST /staffs/{staff_id}/time-offsBlock a staff member's calendar so no one can book it: whole days off or a few hours.
remove_time_offwriteDELETE /staffs/{staff_id}/time-offs/{time_off_id}Remove time off or a blocked period so the time can be booked again.

Clients

ToolAccessREST routeWhat it does
list_clientsreadGET /clientsClients with contact details, visit counts and last visit, plus Booksy's client groups.
find_clientreadGET /clients/searchClient cards matching a name, email or phone.
get_clientreadGET /clients/{client_id}One client card: contact details, private note, counts and visit history.
add_clientwritePOST /clientsAdd a client card to your client list. Needs a phone or an email.
update_clientwritePATCH /clients/{client_id}Change a client card's name, phone, email, birthday or private note.
add_client_notewritePOST /clients/{client_id}/notesAdd a dated line to a client's private note, keeping what is there.
delete_clientwriteDELETE /clients/{client_id}Remove a client card from your client list.

Business setup

ToolAccessREST routeWhat it does
list_servicesreadGET /servicesYour service menu with category, variants, duration, price and the staff who offer each.
list_staffreadGET /staffStaff members with their working hours for a week and the services they offer.
get_business_hoursreadGET /business-hoursWeekly opening hours, time zone and booking lead times of the business.
get_business_profilereadGET /businessYour business's name, address, contact, opening hours, booking policy, rating and plan status.
get_settingsreadGET /settingsText message allowance and usage, client message channels and your notification settings.
list_notificationsreadGET /notificationsNotifications from the panel's bell: new bookings, changes, cancellations, reviews.

Reviews

ToolAccessREST routeWhat it does
list_reviewsreadGET /reviewsClient reviews of your business with rating, text, services, staff and your reply.
reply_to_reviewwritePUT /reviews/{review_id}/replyPost or change your public reply to a client's review.

Message Blasts

ToolAccessREST routeWhat it does
list_message_blastsreadGET /message-blastsMessage Blast templates (automated and one-time) and the blasts scheduled to go out.
estimate_message_blastreadGET /message-blasts/estimateCount who a Message Blast would reach and its SMS cost, without sending it.
send_message_blastwritePOST /message-blastsSend one message to chosen clients by email, SMS or push notification.

Stats & Reports

ToolAccessREST routeWhat it does
get_reportreadGET /reports/{category}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

VariableDefaultWhat it does
BOOKSY_MCP_HOME~/.config/booksy-api-mcpFolder of session.json.
BOOKSY_PROXYProxy for every request to Booksy, e.g. http://user:pass@host:port.
BOOKSY_MCP_READ_ONLY1 hides and refuses every tool that changes Booksy (same as --read-only).
BOOKSY_MCP_TOKENBearer token required by serve; needed to listen beyond 127.0.0.1.
BOOKSY_MCP_HOST, BOOKSY_MCP_PORT127.0.0.1, 8787Address of serve.

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.json is 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. serve binds to 127.0.0.1 and refuses another address without BOOKSY_MCP_TOKEN.
  • booksy.com only. Requests and redirects outside booksy.com are refused.
  • Read-only mode. --read-only or BOOKSY_MCP_READ_ONLY=1 exposes 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.

StatusCodeWhat to do
401auth_required, auth_expiredNo session, or Booksy signed you out. Sign in to Booksy Biz in Chrome and run booksy-mcp connect.
403app_permission_deniedYour Booksy plan or role cannot do this, e.g. a Pro report on Booksy Biz Lite.
403scope_deniedThe server runs read-only, or the request would change your Booksy account itself.
403target_blockedBooksy refused the request or showed a bot check. Open the panel in Chrome once, then retry.
409captcha_requiredBooksy asks for a CAPTCHA. Solve it in Chrome.
422invalid_inputAn argument is missing or wrong; the message names it.
429rate_limitedBooksy is limiting the account. Wait a few minutes.
502target_errorBooksy answered with an error, or changed its panel. git pull for the latest tools, or open an issue.

Self-hosted or hosted

This repoCotlet, hosted
Toolsthe same 28the same 28
Runson your computer, while it is onin the cloud, 24/7
Booksy sessionyour Chrome, saved in a local fileyour own Cloud Browser in the EU, profile encrypted with AES-256-GCM
When Booksy changes its panelgit pull once we have fixed itfixed for you, every tool tested daily
Approvalsyour MCP client asks per callbookings, reschedules, replies and blasts wait for your OK, switchable per tool
Works withMCP clients on your machine, local scriptsClaude.ai and ChatGPT connectors, n8n, Make, Zapier, any HTTP client
Who may use ityou and your own businessyou, teams, businesses, agencies
Pricefreefree 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 [email protected].

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.

[Cotlet]

Maintained by Cotlet (@cotletdev). Booksy is a trademark of its owner. This project is unofficial and not affiliated with, endorsed or sponsored by Booksy.

Source: README.md at commit ad17a6e

Tools

28

add_client

Add client

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.

Parametersnamerequirednoteemailphonebirthday

add_client_note

Add client note

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.

Parameterstextrequiredclient_idrequired

add_time_off

Add time off

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.

Parametersendrequiredstartrequiredreasonstaff_idrequired

cancel_appointment

Cancel appointment

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.

Parametersreasonnotify_clientappointment_idrequired

create_appointment

Create appointment

Book a client for one service at a start time; Booksy checks the slot first. Books one client card for one service. The end follows the service's duration. Booksy's dry run checks the 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.

Parametersnotestartrequireddry_runstaff_idclient_idrequiredservice_idrequirednotify_client

delete_client

Delete client

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.

Parametersclient_idrequired

estimate_message_blast

Estimate Message Blast

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.

Parameterschannelrequiredmessagerequiredclient_idsrequired

find_client

Find client

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.

Parameterslimitqueryrequired

find_open_slots

Find open slots

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.

Parametersdaterequiredlimitstaff_idservice_idrequired

get_appointment

Get appointment

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).

Parametersappointment_idrequired

get_business_hours

Get business hours

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.

Takes no parameters.

get_business_profile

Get business profile

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.

Takes no parameters.

get_client

Get client

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.

Parametersclient_idrequiredvisits_limit

get_report

Get report

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.

Parameterstorequiredfromrequiredreportcategoryrequiredstaff_id

get_settings

Get settings

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.

Takes no parameters.

list_appointments

List appointments

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.

Parameterstorequiredfromrequiredstaff_id

list_clients

List clients

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.

Parameterslimitquerycursornot_visited_days

list_message_blasts

List Message Blasts

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.

Takes no parameters.

list_notifications

List notifications

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.

Parameterspageper_pageunread_only

list_reviews

List reviews

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.

Parameterspagesortper_page

list_services

List services

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.

Takes no parameters.

list_staff

List staff

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.

Parametersweek_start_date

list_time_off

List time off

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.

Parameterstorequiredfromrequiredstaff_id

remove_time_off

Remove time off

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.

Parametersstaff_idrequiredtime_off_idrequired

reply_to_review

Reply to review

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.

Parametersreplyrequiredreview_idrequired

reschedule_appointment

Reschedule appointment

Move an appointment to a new start time, and optionally to another staff member. Moves every service of the appointment by the same amount, so the first one starts at start. Booksy's dry run checks the new slot 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).

Parametersstartrequiredstaff_idnotify_clientappointment_idrequired

send_message_blast

Send Message Blast

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.

Parameterschannelrequiredmessagerequiredsubjectclient_idsrequired

update_client

Update client

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.

Parametersnamenoteemailphonebirthdayclient_idrequired

Version history

2
  1. v1.0.2LatestOct 24, 2026
  2. v1.0.0Oct 23, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listed15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

    Declare a license in the repository or the registry entry.

Other Cotlet integrations