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 944f22e
Browse filesBrowse the repository at this point in the historyBrowse files
Copy file name to clipboardExpand all lines: README.md
+19-19Lines changed: 19 additions & 19 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,13 +8,13 @@ BookingKoala has no public API and no official MCP server. Its API key only conn
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/bookingkoala`, with OpenAPI docs at `/docs`. [Setup](#rest-api)
11
-
-**Python**: `call("list_bookings", status="unassigned")`, plus 12 ready scripts in [`examples/`](examples/).
11
+
-**Python**: `call("list_bookings", status="unassigned")`, plus 12 ready scripts in [`examples/`](https://github.com/cotletdev/bookingkoala-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 BookingKoala changes its app, for a team or a business, use the [hosted version at cotlet.dev](https://cotlet.dev/integrations/bookingkoala-api-mcp-server).
With [uv](https://docs.astral.sh/uv/): `uv venv && uv pip install -e .`, then `uv run bookingkoala-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/bookingkoala-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 bookingkoala-api-mcp` (or `pip install -U bookingkoala-api-mcp`), from source `git pull && pip install -e .`. We copy every change of the hosted BookingKoala tools into this repo.
`~/.cursor/mcp.json`, the same block as Claude Desktop. A ready copy is in [`mcp.json`](mcp.json).
180
+
`~/.cursor/mcp.json`, the same block as Claude Desktop. A ready copy is in [`mcp.json`](https://github.com/cotletdev/bookingkoala-api-mcp-server/blob/main/mcp.json).
Or one tool from the shell: `bookingkoala-mcp call list_customers search=whitfield`, or with a JSON object.
258
258
259
-
Ready scripts in [`examples/`](examples/). Each prints JSON, takes `--out file.csv` or `--out file.json` where it makes sense, and `--help`:
259
+
Ready scripts in [`examples/`](https://github.com/cotletdev/bookingkoala-api-mcp-server/blob/main/examples/). Each prints JSON, takes `--out file.csv` or `--out file.json` where it makes sense, and `--help`:
260
260
261
261
| Script | What it does |
262
262
|---|---|
263
-
|[`list_bookings.py`](examples/list_bookings.py)| Bookings by status and date range: date, arrival time, customer, address, providers, total. |
264
-
|[`export_customers.py`](examples/export_customers.py)| Customers to CSV or JSON: name, email, phone, tags, note. |
265
-
|[`store_dashboard.py`](examples/store_dashboard.py)| Store totals for a date range: revenue, provider pay, bookings, ratings, referrals. |
266
-
|[`assign_unassigned.py`](examples/assign_unassigned.py)| Gives each unassigned job to the provider with the fewest jobs that day. Shows the plan unless you pass `--assign`. |
267
-
|[`assign_provider.py`](examples/assign_provider.py)| Assigns one booking, or its whole recurring schedule, to a provider or team. |
268
-
|[`reschedule_day.py`](examples/reschedule_day.py)| Moves a closed day's recurring visits to their next visit date. Plan first, `--move` to do it. |
269
-
|[`cancel_booking.py`](examples/cancel_booking.py)| Cancels one booking or the rest of its schedule, with no fee, after you confirm. |
270
-
|[`rebook_customer.py`](examples/rebook_customer.py)| Copies a repeat customer's last visit into a draft. `--send-quote` emails their saved quote. |
271
-
|[`send_quote.py`](examples/send_quote.py)| Lists saved drafts and quotes, or emails one quote with a link to book it. |
272
-
|[`add_customer.py`](examples/add_customer.py)| Adds a customer after checking the email is not in the store yet. |
273
-
|[`provider_pay_report.py`](examples/provider_pay_report.py)| Provider pay totals for a pay period, then each provider's payment logs. |
274
-
|[`overdue_invoices.py`](examples/overdue_invoices.py)| Unpaid invoices past due. `--remind` sends each one to its customer again. |
263
+
|[`list_bookings.py`](https://github.com/cotletdev/bookingkoala-api-mcp-server/blob/main/examples/list_bookings.py)| Bookings by status and date range: date, arrival time, customer, address, providers, total. |
264
+
|[`export_customers.py`](https://github.com/cotletdev/bookingkoala-api-mcp-server/blob/main/examples/export_customers.py)| Customers to CSV or JSON: name, email, phone, tags, note. |
265
+
|[`store_dashboard.py`](https://github.com/cotletdev/bookingkoala-api-mcp-server/blob/main/examples/store_dashboard.py)| Store totals for a date range: revenue, provider pay, bookings, ratings, referrals. |
266
+
|[`assign_unassigned.py`](https://github.com/cotletdev/bookingkoala-api-mcp-server/blob/main/examples/assign_unassigned.py)| Gives each unassigned job to the provider with the fewest jobs that day. Shows the plan unless you pass `--assign`. |
267
+
|[`assign_provider.py`](https://github.com/cotletdev/bookingkoala-api-mcp-server/blob/main/examples/assign_provider.py)| Assigns one booking, or its whole recurring schedule, to a provider or team. |
268
+
|[`reschedule_day.py`](https://github.com/cotletdev/bookingkoala-api-mcp-server/blob/main/examples/reschedule_day.py)| Moves a closed day's recurring visits to their next visit date. Plan first, `--move` to do it. |
269
+
|[`cancel_booking.py`](https://github.com/cotletdev/bookingkoala-api-mcp-server/blob/main/examples/cancel_booking.py)| Cancels one booking or the rest of its schedule, with no fee, after you confirm. |
270
+
|[`rebook_customer.py`](https://github.com/cotletdev/bookingkoala-api-mcp-server/blob/main/examples/rebook_customer.py)| Copies a repeat customer's last visit into a draft. `--send-quote` emails their saved quote. |
271
+
|[`send_quote.py`](https://github.com/cotletdev/bookingkoala-api-mcp-server/blob/main/examples/send_quote.py)| Lists saved drafts and quotes, or emails one quote with a link to book it. |
272
+
|[`add_customer.py`](https://github.com/cotletdev/bookingkoala-api-mcp-server/blob/main/examples/add_customer.py)| Adds a customer after checking the email is not in the store yet. |
273
+
|[`provider_pay_report.py`](https://github.com/cotletdev/bookingkoala-api-mcp-server/blob/main/examples/provider_pay_report.py)| Provider pay totals for a pay period, then each provider's payment logs. |
274
+
|[`overdue_invoices.py`](https://github.com/cotletdev/bookingkoala-api-mcp-server/blob/main/examples/overdue_invoices.py)| Unpaid invoices past due. `--remind` sends each one to its customer again. |
@@ -423,7 +423,7 @@ The source is public, the license is not an open source license: noncommercial u
423
423
424
424
## License
425
425
426
-
[PolyForm Noncommercial License 1.0.0](LICENSE). In short:
426
+
[PolyForm Noncommercial License 1.0.0](https://github.com/cotletdev/bookingkoala-api-mcp-server/blob/main/LICENSE). In short:
427
427
428
428
-**Allowed:** noncommercial use: you, for your own personal purposes with your own BookingKoala account, or a charity, school, public research or government body. Changing the code, and sharing it under the same license.
429
429
-**Not allowed:** any commercial use, your own business included; client work; selling or offering it, or a service built on it.
@@ -434,7 +434,7 @@ The source is public, the license is not an open source license: noncommercial u
0 commit comments