Skip to content

Commit 82ab58c

Browse files
committed
README: absolute links and images, so they also work on PyPI
1 parent 4f9da36 commit 82ab58c

1 file changed

Lines changed: 16 additions & 16 deletions

File tree

‎README.md‎

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@ Booksy has no self-serve API for business owners and no official MCP server. Thi
88

99
- **MCP server** for Claude Code, Claude Desktop, Cursor, Codex and any MCP client, over stdio or HTTP. [Setup](#mcp-server)
1010
- **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/).
1212

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

1515
[![Booksy MCP server](https://img.shields.io/badge/Booksy%20MCP-28%20tools-6d4aef)](#all-28-tools)
1616
[![Python 3.11+](https://img.shields.io/badge/python-3.11%2B-141318)](#requirements)
17-
[![License: PolyForm Noncommercial 1.0.0](https://img.shields.io/badge/license-PolyForm%20Noncommercial-141318)](LICENSE)
17+
[![License: PolyForm Noncommercial 1.0.0](https://img.shields.io/badge/license-PolyForm%20Noncommercial-141318)](https://github.com/cotletdev/booksy-api-mcp-server/blob/main/LICENSE)
1818
[![MCP Badge](https://lobehub.com/badge/mcp/cotletdev-booksy-api-mcp-server)](https://lobehub.com/mcp/cotletdev-booksy-api-mcp-server)
1919

2020
```bash
@@ -86,7 +86,7 @@ booksy-mcp --version
8686

8787
With [uv](https://docs.astral.sh/uv/): `uv venv && uv pip install -e .`, then `uv run booksy-mcp ...`.
8888

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

9191
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.
9292

@@ -167,7 +167,7 @@ claude mcp add booksy -- uvx booksy-api-mcp mcp --read-only
167167

168168
### Cursor
169169

170-
`~/.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).
171171

172172
### Codex
173173

@@ -250,19 +250,19 @@ Or one tool from the shell: `booksy-mcp call find_open_slots service_id=8307205
250250

251251
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.
252252

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

255255
| Script | What it does |
256256
|---|---|
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. |
266266

267267
```bash
268268
python examples/tomorrows_appointments.py --open-slots-for 8307205
@@ -439,7 +439,7 @@ The source is public, the license is not an open source license: noncommercial u
439439

440440
## License
441441

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

444444
- **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.
445445
- **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
450450
<a href="https://cotlet.dev">
451451
<picture>
452452
<source media="(prefers-color-scheme: dark)" srcset="assets/logo-white.svg">
453-
<img src="assets/logo.svg" alt="Cotlet" width="120">
453+
<img src="https://raw.githubusercontent.com/cotletdev/booksy-api-mcp-server/main/assets/logo.svg" alt="Cotlet" width="120">
454454
</picture>
455455
</a>
456456
</p>

0 commit comments

Comments
 (0)