Booksy by Cotlet

dev.cotlet由 cotlet.dev 发布官方发布者v1.0.2更新于 Oct 28, 2026

Bookings, clients, reviews and reports for beauty businesses.

发布方自己的服务:Cotlet

已验证Streamable HTTP可网页运行效率与工作流沟通与协作商业与电商

概览

AI 生成的概览

Booksy Biz 的 MCP 服务器,让助手读取并修改美容美发商家的日历、客户、评价、群发消息和报表。

可以做什么
  • 读取日历与空闲时间:预约列表、单条预约、可预约时段、休假与封锁时段
  • 创建、改期和取消预约,添加或移除员工休假
  • 搜索、读取、新增、修改和删除客户卡与私人备注
  • 读取服务项目、员工、营业时间、商家资料、设置和面板通知
  • 读取评价并发布或替换公开回复
  • 列出并估算 Message Blast,通过邮件、短信或推送发送,并获取 Stats & Reports 数据
适用场景
适合沙龙、理发店和美容商家或其开发者,希望助手回答当天预约情况、查找空档、在员工休假时规划改约、唤醒久未到店客户、回复评价或比较各员工营收。
运行要求
可使用 cotlet.dev 的托管端点,需要 Cotlet API 密钥并以 Authorization bearer 头传递;或在本地运行 Python 包(Python 3.11 及以上,用 uvx 启动),需要已登录 Booksy Biz 的 Google Chrome 144 及以上,并执行一次连接步骤保存会话文件。需要 Booksy Biz 商家账号;部分报表需 Booksy Biz Pro,一次性群发需付费套餐。
安装前请注意
许多工具会写入真实账号并触达真实客户:预约、改期、取消、评价回复和 Message Blast,且仅通过 MCP 客户端请求确认。保存的会话文件含 Booksy 访问令牌,持有者可冒充商家操作,请勿放入 git 或共享目录。短信超出免费额度会产生费用,且在法律要求的地区需取得营销同意。可用只读模式或只读参数限制风险。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Booksy by Cotlet,将其添加到工作区。
  2. 连接 所需的 凭据。它们会被私密存储,绝不会在公开页面上展示。
  3. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/dev.cotlet%2Fbooksy/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。 客户端会在首次连接时完成 OAuth 登录。

{
  "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.

来源:README.md,提交 ad17a6e

工具

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.

输入参数name必填noteemailphonebirthday

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.

输入参数text必填client_id必填

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.

输入参数end必填start必填reasonstaff_id必填

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.

输入参数reasonnotify_clientappointment_id必填

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.

输入参数notestart必填dry_runstaff_idclient_id必填service_id必填notify_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.

输入参数client_id必填

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.

输入参数channel必填message必填client_ids必填

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.

输入参数limitquery必填

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.

输入参数date必填limitstaff_idservice_id必填

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

输入参数appointment_id必填

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.

无需输入参数。

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.

无需输入参数。

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.

输入参数client_id必填visits_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.

输入参数to必填from必填reportcategory必填staff_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.

无需输入参数。

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.

输入参数to必填from必填staff_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.

输入参数limitquerycursornot_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.

无需输入参数。

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.

输入参数pageper_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.

输入参数pagesortper_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.

无需输入参数。

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.

输入参数week_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.

输入参数to必填from必填staff_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.

输入参数staff_id必填time_off_id必填

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.

输入参数reply必填review_id必填

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

输入参数start必填staff_idnotify_clientappointment_id必填

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.

输入参数channel必填message必填subjectclient_ids必填

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.

输入参数namenoteemailphonebirthdayclient_id必填

版本历史

2
  1. v1.0.2最新Oct 24, 2026
  2. v1.0.0Oct 23, 2026

评分

已满足适用检查项的 90%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分

    请在仓库或注册中心条目中声明许可证。

其他 Cotlet 集成