BookingKoala by Cotlet
PYPI · BOOKINGKOALA-API-MCP · 3 COMPONENTS
Bookings, providers and customers in your BookingKoala store.
Available components
Last scanned (2 hours ago)
Scores higher than 63% of PyPI servers
Category CRM and Sales
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security50
- Malware scan not yet available for this package.Unverified
- No known CVEs affecting this package version or its production dependencies.Pass
- Runs hatchling.build at install time, a recognised build step with no custom scripting around it. View diagnostics → Pass
- 0 of 35 dependencies flagged as unhealthy. View diagnostics → Pass
Provenance & Transparency84
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Cryptographically verified build provenance (signed, bound to cotletdev/bookingkoala-api-mcp-server). View diagnostics → Pass
- License check failed: the license (PolyForm-Noncommercial-1.0.0) isn't a recognized OSI-approved license. See how to fix → Fail
- Actively maintained (last published 0 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability79
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 2911 tokens (~153/item across 19 items; 17 tools + 2 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management0
- Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 19 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Unverified: 1 category
A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 24 Oct 26 64
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 24 Oct 2026 · Analysed pypi/bookingkoala-api-mcp@1.0.3
Provenance Verified
A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.
| Result | Verified |
|---|---|
| Ecosystem | pypi |
| Reason | Verified |
| Discovered via | Registry attestation endpoint |
| Source repo | cotletdev/bookingkoala-api-mcp-server |
| Certificate issuer | https://token.actions.githubusercontent.com |
| Certificate SAN | https://github.com/cotletdev/bookingkoala-api-mcp-server/.github/workflows/publish.yml@refs/tags/v1.0.3 |
| Rekor log index | 3439418115 |
| Predicate type | PyPI publish attestation https://docs.pypi.org/attestations/publish/v1 |
| Subject digest | sha256:4d807bb7342c44cac826bb7c0167c2fdef6a71de6481553da757f5f587fcc040 |
Background: How many MCP packages publish verified provenance →
Install scripts 1 script
| Hook | Tier | Command |
|---|---|---|
| build_backend | allowlisted | hatchling.build |
Background: Why install scripts are a supply-chain risk →
Dependencies 35 packages
| Packages resolved | 35 |
|---|---|
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
assign_provider Assign provider ~153
Assign a provider or team to a booking, or to its whole recurring schedule. Puts the provider on the booking, as Assign in the booking's sidebar does, and returns the booking as get_booking shows it. BookingKoala tells the provider about the job. A provider who is not available at that time is refused unless even_if_unavailable is true.
| Name | Type | Req | Description |
|---|---|---|---|
| booking_id | integer | yes | Booking id from list_bookings. |
| even_if_unavailable | boolean | – | Assign although the provider is not available then. Default: false. |
| provider_id | integer | yes | Provider or team id from list_providers. |
| whole_schedule | boolean | – | Assign every later booking of the recurring schedule too. Default: false. |
No output schema declared.
No examples provided.
cancel_booking Cancel booking ~148
Cancel one booking or its whole recurring schedule, without a cancellation fee. Checks the store's cancellation rules first (a store that requires a reason gets the 'Other' reason with your text), then cancels as Cancel in the booking's sidebar does, with no fee. Nobody is told unless notify is true. Cancelled bookings leave list_bookings.
| Name | Type | Req | Description |
|---|---|---|---|
| booking_id | integer | yes | Booking id from list_bookings. |
| notify | boolean | – | Email the customer and providers about it. Default: false. |
| reason | string | – | Why it is cancelled (kept on the booking). |
| whole_schedule | boolean | – | Cancel the whole recurring schedule from this booking on. Default: false. |
No output schema declared.
No examples provided.
create_booking Create booking ~98
Start a new booking as a copy of an existing one: same customer, service and price. Copies the booking as Duplicate in its sidebar does. The copy is saved as a draft (list_drafts) with the same customer, address, service, extras and price; open form_url to pick the date and book it. Nobody is told until it is booked.
| Name | Type | Req | Description |
|---|---|---|---|
| from_booking_id | integer | yes | Booking to copy, from list_bookings. |
No output schema declared.
No examples provided.
create_customer Create customer ~268
New customer in the store. BookingKoala emails them an invitation to set a password. Adds a customer as Add Customer in the admin does, with an optional address that becomes their default service address. BookingKoala emails the customer at once to set a password for the store's booking page, so use their real address. An email already in the store is refused. Returns the new customer as get_customer does.
| Name | Type | Req | Description |
|---|---|---|---|
| address | string | – | Street address, e.g. 540 W 28th Street, New York, NY, USA. |
| apt | string | – | Apartment or suite. |
| city | string | – | City. |
| country | string | – | Country, e.g. United States. |
| string | yes | Email address. BookingKoala sends the customer an invitation to set a password. | |
| first_name | string | yes | First name. |
| gender | string | – | Gender, optional. |
| last_name | string | yes | Last name. |
| phone | string | – | Phone number, digits only for US numbers, e.g. 2125550147. |
| sms_notifications | boolean | – | Text the customer booking updates. Default: false. |
| state | string | – | State, e.g. New York. |
| zipcode | string | – | ZIP or postal code. |
No output schema declared.
No examples provided.
dashboard Dashboard ~128
Store totals for a date range: revenue, provider pay, bookings, ratings, referrals. Returns the figures of the admin Dashboard for the dates given (this month by default): revenue paid and pending, split into bookings, custom invoices and separate charges; what providers earned and what is still unpaid; booking counts, unassigned and cancelled included; ratings and referrals. Amounts are in the store's currency.
| Name | Type | Req | Description |
|---|---|---|---|
| end_date | string | – | YYYY-MM-DD, included. Default: last day of this month. |
| start_date | string | – | YYYY-MM-DD. Default: first day of this month. |
No output schema declared.
No examples provided.
get_booking Get booking ~87
One booking with its price breakdown, provider pay, notes and service. Reads a booking by id: date and arrival window, customer, address, assigned providers, the service parameters and extras, notes, the price breakdown (service total, discounts, tax, tip, final amount) and what the providers are paid for it.
| Name | Type | Req | Description |
|---|---|---|---|
| booking_id | integer | yes | Booking id from list_bookings. |
No output schema declared.
No examples provided.
get_customer Get customer ~109
One customer: contact details, addresses, booking counts and bookings not charged yet. Returns the customer's profile as their page in the admin shows it: name, email, phone, saved addresses (address_id is what a booking or invoice for this customer uses), counts of upcoming and cash bookings, the bookings not charged yet (past ones included), gift cards received and the referral summary. Times of day are in the store's time zone.
| Name | Type | Req | Description |
|---|---|---|---|
| customer_id | integer | yes | customer_id from list_customers. |
No output schema declared.
No examples provided.
get_provider Get provider ~139
One provider or team: contact, category, team members, reviews and payment logs. Returns the provider's profile as their page in the admin shows it: contact details, IC or W2 category, priority, scheduling permissions, the team's members and lead (for a team) or the teams it belongs to, customer reviews and the newest payment logs (what the store paid the provider). Payment logs come as BookingKoala records them.
| Name | Type | Req | Description |
|---|---|---|---|
| payment_logs_limit | integer | – | Newest payment logs to include, 1 to 50. Default: 20. |
| provider_id | integer | yes | provider_id from list_providers (a team too). |
No output schema declared.
No examples provided.
list_bookings List bookings ~214
Bookings of the store: upcoming, unassigned, completed, charge pending or declined. Lists bookings as the Bookings page shows them, newest schedule dates first within the filter, with the customer, address, assigned providers, total and whether it is charged. Filter by status, date range, a search on the customer, or one customer or provider. Cancelled bookings are not listed. Page with next_cursor.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | next_cursor from the previous call. |
| customer_id | integer | – | Only this customer's bookings. |
| end_date | string | – | Up to this date. |
| limit | integer | – | Page size. Default: 20. |
| provider_id | integer | – | Only this provider's bookings. |
| search | string | – | Customer name, email or phone. |
| start_date | string | – | From this date. |
| status | string | – | Which bookings: upcoming (default), today, unassigned, completed, pending (charge pending), declined (charge declined), paused or all. |
No output schema declared.
No examples provided.
list_charges List charges ~206
Charged bookings with their payments and refunds, as the Charges page lists them. Returns bookings that were charged, newest first, each with its payments: the booking charge, extras, tips, fees and refunds, with amount, tax, refunded amount and card. Filter by booking day and search by customer. BookingKoala gives no total: next_cursor is set while a full page comes back. booking_id and payment_log_id go to refund_charge. Empty until the store charges through a connected payment processor or marks bookings paid in cash.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | next_cursor from the previous call. |
| end_date | string | – | Last booking day, YYYY-MM-DD. Default: no upper bound. |
| limit | integer | – | 1 to 100. Default: 20. |
| search | string | – | Customer name, email or phone, or a booking id. |
| start_date | string | – | First booking day, YYYY-MM-DD. Default: no lower bound. |
No output schema declared.
No examples provided.
list_customers List customers ~137
Customers of the store, with email and phone; search by name, email or phone. Returns the store's customers as the Customers page lists them, newest first, active or deactivated. BookingKoala gives no total: next_cursor is set while a full page comes back. Use customer_id in get_customer.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | next_cursor from the previous call. |
| limit | integer | – | 1 to 100. Default: 20. |
| search | string | – | Part of a name, email or phone number. |
| status | string | – | active or inactive (deactivated) customers. Default: active. |
No output schema declared.
No examples provided.
list_drafts List drafts ~97
Draft bookings and quotes saved in the store, not yet booked. Lists the drafts and quotes on the Drafts page: customer, date when set, total and whether it is a quote. create_booking leaves a draft here. Page with next_cursor.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | next_cursor from the previous call. |
| limit | integer | – | Page size. Default: 20. |
| search | string | – | Customer name or email. |
No output schema declared.
No examples provided.
list_invoices List invoices ~248
Invoices of the store or of one customer, with payment status, total and amount due. Returns invoices as the Invoices page lists them, newest first: number, customer, booking or custom type, payment status (paid, unpaid, partially_paid, void, uncollectible), total, paid, amount due, issue and due dates. Filter by customer, payment status and issue dates (default: two years back to a year ahead), or search by number, email, name or phone. BookingKoala gives no total: next_cursor is set while a full page comes back. invoice_id goes to resend_invoice.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | next_cursor from the previous call. |
| customer_id | integer | – | Only this customer's invoices. |
| end_date | string | – | To this issue day, YYYY-MM-DD. Default: a year ahead. |
| limit | integer | – | 1 to 100. Default: 20. |
| pay_status | string | – | Payment status filter. |
| search | string | – | Invoice number, customer email, name or phone. |
| start_date | string | – | From this issue day, YYYY-MM-DD. Default: 2 years ago. |
No output schema declared.
No examples provided.
list_providers List providers ~184
Providers (cleaners, technicians) and teams of the store, in priority order. Returns the store's service providers as the Providers page lists them, single providers and teams together; type team returns teams only. A team lists its members' provider ids, a provider the teams it belongs to and leads. BookingKoala gives no total: next_cursor is set while a full page comes back. Use provider_id in get_provider and when assigning a booking.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | next_cursor from the previous call. |
| limit | integer | – | 1 to 100. Default: 20. |
| search | string | – | Part of a name, email or phone number. |
| status | string | – | active or inactive (deactivated) providers. Default: active. |
| type | string | – | all: providers and teams (default). team: teams only. |
No output schema declared.
No examples provided.
reschedule_booking Reschedule booking ~171
Postpone a visit of a recurring booking to the date of a later visit in its schedule. Works like Postpone in the booking's sidebar: the visit moves to one of the schedule's later visit dates, keeping its arrival time and price, and the booking comes back as get_booking shows it. A date outside the schedule fails with the list of allowed dates. One-time bookings cannot be postponed. Nobody is told unless notify is true. A store that charges a reschedule fee refuses the move here: charge it in the panel.
| Name | Type | Req | Description |
|---|---|---|---|
| booking_id | integer | yes | Booking id from list_bookings. |
| date | string | yes | New date: one of the later visit dates of the booking's recurring schedule. |
| notify | boolean | – | Email the customer and providers about the change. Default: false. |
No output schema declared.
No examples provided.
resend_invoice Resend an invoice ~191
Send an invoice to its customer again by email, text or both. Sends an existing invoice from list_invoices to its customer again, as the invoice's Resend button does: by email (default) and, with sms true, a text with the invoice link. The invoice's CC and billing addresses get the email too. attach_pdf defaults to the invoice's own setting. The invoice itself does not change. The customer gets it at once. BookingKoala refuses some resends with a warning, for example a void invoice; the error carries its message.
| Name | Type | Req | Description |
|---|---|---|---|
| attach_pdf | boolean | – | Attach the PDF to the email. Default: as the invoice. |
| boolean | – | Email the invoice to the customer. Default: true. | |
| invoice_id | string | yes | invoice_id from list_invoices. |
| sms | boolean | – | Text the invoice link to the customer. Default: false. |
No output schema declared.
No examples provided.
send_quote Send a quote ~214
Email a saved quote to the customer with a link to book it. Sends a quote from list_drafts as the Send quote popup does: saves the recipient and expiry date on the quote, then emails the store's Send quote template (or your subject and message) with the quote's booking link. email defaults to the quote's customer; expires_on to the saved date, else a month ahead. Only drafts saved as quotes can be sent; a plain draft is refused before you confirm. The customer gets the email at once.
| Name | Type | Req | Description |
|---|---|---|---|
| draft_id | integer | yes | Id of a quote from list_drafts. |
| string | – | Send to this address. Default: the quote's customer. | |
| expires_on | string | – | Last day the customer can book it, YYYY-MM-DD. Default: as saved, else a month ahead. |
| message | string | – | Email body (HTML allowed). Default: the store's Send quote template. |
| subject | string | – | Email subject. Default: the store's. |
No output schema declared.
No examples provided.
How do I install the BookingKoala by Cotlet MCP server?
BookingKoala by Cotlet runs locally as a PyPI package, launched with uvx bookingkoala-api-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
pypi · bookingkoala-api-mcp
claude mcp add dev-cotlet-bookingkoala -- uvx bookingkoala-api-mcp
What is the BookingKoala by Cotlet MCP server?
BookingKoala by Cotlet is an MCP server listed in the public MCP registry as dev.cotlet/bookingkoala. Bookings, providers and customers in your BookingKoala store. This page covers its PyPI package (bookingkoala-api-mcp).
Is the BookingKoala by Cotlet MCP server safe to use?
BookingKoala by Cotlet scores 64 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 24 October 2026. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the BookingKoala by Cotlet MCP server expose?
BookingKoala by Cotlet exposes 17 tools: assign_provider, cancel_booking, create_booking, create_customer, dashboard, and 12 more. Their descriptions and schemas cost roughly 2,792 tokens of context every time the server is loaded.
Is the BookingKoala by Cotlet MCP server still maintained?
BookingKoala by Cotlet is still listed as active in the MCP registry. We last reached this channel on 24 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the BookingKoala by Cotlet MCP server under?
BookingKoala by Cotlet declares the PolyForm-Noncommercial-1.0.0 licence, which is not on the OSI-approved list. Read the terms before using it at work, and note this covers the source only, not the cost of any service it calls.