You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 82ab58c
Browse filesBrowse the repository at this point in the historyBrowse files
Copy file name to clipboardExpand all lines: README.md
+16-16Lines changed: 16 additions & 16 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,13 +8,13 @@ Booksy has no self-serve API for business owners and no official MCP server. Thi
8
8
9
9
-**MCP server** for Claude Code, Claude Desktop, Cursor, Codex and any MCP client, over stdio or HTTP. [Setup](#mcp-server)
10
10
-**REST API** on `http://127.0.0.1:8787/api/v1/booksy`, with OpenAPI docs at `/docs`. [Setup](#rest-api)
11
-
-**Python**: `call("list_appointments", {"from": "2026-10-27", "to": "2026-10-27"})`, plus 9 ready scripts in [`examples/`](examples/).
11
+
-**Python**: `call("list_appointments", {"from": "2026-10-27", "to": "2026-10-27"})`, plus 9 ready scripts in [`examples/`](https://github.com/cotletdev/booksy-api-mcp-server/blob/main/examples/).
12
12
13
13
It is for technical people who want to run it themselves, **for noncommercial use only** ([license](#license)). If you want it running 24/7 on a server, kept working when Booksy changes its panel, for a team or a business, use the [hosted version at cotlet.dev](https://cotlet.dev/integrations/booksy-api-mcp-server).
With [uv](https://docs.astral.sh/uv/): `uv venv && uv pip install -e .`, then `uv run booksy-mcp ...`.
88
88
89
-
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`](AGENTS.md) tells it every step, and it asks you only for the steps in Chrome.
89
+
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`](https://github.com/cotletdev/booksy-api-mcp-server/blob/main/AGENTS.md) tells it every step, and it asks you only for the steps in Chrome.
90
90
91
91
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.
`~/.cursor/mcp.json`, the same block as Claude Desktop. A ready copy is in [`mcp.json`](mcp.json).
170
+
`~/.cursor/mcp.json`, the same block as Claude Desktop. A ready copy is in [`mcp.json`](https://github.com/cotletdev/booksy-api-mcp-server/blob/main/mcp.json).
171
171
172
172
### Codex
173
173
@@ -250,19 +250,19 @@ Or one tool from the shell: `booksy-mcp call find_open_slots service_id=8307205
250
250
251
251
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.
252
252
253
-
Ready scripts in [`examples/`](examples/). Each prints JSON or a short list, takes `--out file.csv` or `--out file.json` where it makes sense, and `--help`:
253
+
Ready scripts in [`examples/`](https://github.com/cotletdev/booksy-api-mcp-server/blob/main/examples/). Each prints JSON or a short list, takes `--out file.csv` or `--out file.json` where it makes sense, and `--help`:
254
254
255
255
| Script | What it does |
256
256
|---|---|
257
-
|[`tomorrows_appointments.py`](examples/tomorrows_appointments.py)| Tomorrow's appointments, one line each, and the open slots left for a service. `--date`, `--staff-id`. |
258
-
|[`reschedule_day.py`](examples/reschedule_day.py)| Moves 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. |
259
-
|[`block_time_off.py`](examples/block_time_off.py)| Adds whole days off or blocks hours on one day, or removes a time off. |
260
-
|[`export_clients.py`](examples/export_clients.py)| Clients to CSV or JSON: contact, note, visits, no-shows, revenue, last visit. `--search`, `--not-visited-days`. |
261
-
|[`lapsed_clients.py`](examples/lapsed_clients.py)| Clients not seen for N days, minus anyone booked in the next 30 days. |
262
-
|[`win_back_blast.py`](examples/win_back_blast.py)| One Message Blast to those lapsed clients, after it shows the reach and SMS cost and asks. |
263
-
|[`weekly_staff_report.py`](examples/weekly_staff_report.py)| Appointments and revenue per staff member, last week against the week before, big moves flagged. |
264
-
|[`unanswered_reviews.py`](examples/unanswered_reviews.py)| Reviews without a reply, lowest rating first; `--reply-to` posts a reply. |
265
-
|[`add_client.py`](examples/add_client.py)| Adds a client card with no invitation, or a note to an existing one. |
257
+
|[`tomorrows_appointments.py`](https://github.com/cotletdev/booksy-api-mcp-server/blob/main/examples/tomorrows_appointments.py)| Tomorrow's appointments, one line each, and the open slots left for a service. `--date`, `--staff-id`. |
258
+
|[`reschedule_day.py`](https://github.com/cotletdev/booksy-api-mcp-server/blob/main/examples/reschedule_day.py)| Moves 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. |
259
+
|[`block_time_off.py`](https://github.com/cotletdev/booksy-api-mcp-server/blob/main/examples/block_time_off.py)| Adds whole days off or blocks hours on one day, or removes a time off. |
260
+
|[`export_clients.py`](https://github.com/cotletdev/booksy-api-mcp-server/blob/main/examples/export_clients.py)| Clients to CSV or JSON: contact, note, visits, no-shows, revenue, last visit. `--search`, `--not-visited-days`. |
261
+
|[`lapsed_clients.py`](https://github.com/cotletdev/booksy-api-mcp-server/blob/main/examples/lapsed_clients.py)| Clients not seen for N days, minus anyone booked in the next 30 days. |
262
+
|[`win_back_blast.py`](https://github.com/cotletdev/booksy-api-mcp-server/blob/main/examples/win_back_blast.py)| One Message Blast to those lapsed clients, after it shows the reach and SMS cost and asks. |
263
+
|[`weekly_staff_report.py`](https://github.com/cotletdev/booksy-api-mcp-server/blob/main/examples/weekly_staff_report.py)| Appointments and revenue per staff member, last week against the week before, big moves flagged. |
264
+
|[`unanswered_reviews.py`](https://github.com/cotletdev/booksy-api-mcp-server/blob/main/examples/unanswered_reviews.py)| Reviews without a reply, lowest rating first; `--reply-to` posts a reply. |
265
+
|[`add_client.py`](https://github.com/cotletdev/booksy-api-mcp-server/blob/main/examples/add_client.py)| Adds a client card with no invitation, or a note to an existing one. |
@@ -439,7 +439,7 @@ The source is public, the license is not an open source license: noncommercial u
439
439
440
440
## License
441
441
442
-
[PolyForm Noncommercial License 1.0.0](LICENSE). In short:
442
+
[PolyForm Noncommercial License 1.0.0](https://github.com/cotletdev/booksy-api-mcp-server/blob/main/LICENSE). In short:
443
443
444
444
-**Allowed:** noncommercial use: you, for your own personal purposes with your own Booksy account, or a charity, school, public research or government body. Changing the code, and sharing it under the same license.
445
445
-**Not allowed:** any commercial use, your own business included; client work; selling or offering it, or a service built on it.
@@ -450,7 +450,7 @@ The source is public, the license is not an open source license: noncommercial u
0 commit comments