Skip to main content
Glama
cotletdev

BookingKoala MCP Server

by cotletdev

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
BOOKINGKOALA_PROXYNoProxy for every request to BookingKoala, e.g. `http://user:pass@host:port`.
BOOKINGKOALA_STORENoYour store name, `yourstore` for `yourstore.bookingkoala.com`.
BOOKINGKOALA_MCP_HOMENoFolder of `session.json`.~/.config/bookingkoala-api-mcp
BOOKINGKOALA_MCP_HOSTNoAddress of `serve`.127.0.0.1
BOOKINGKOALA_MCP_PORTNoPort of `serve`.8787
BOOKINGKOALA_MCP_TOKENNoBearer token required by `serve`; needed to listen beyond `127.0.0.1`.
BOOKINGKOALA_AUTH_TOKENNoValue of the `IRON_GATEWAY_CTX` cookie, instead of `bookingkoala-mcp connect`. Needs `BOOKINGKOALA_STORE`.
BOOKINGKOALA_MCP_READ_ONLYNo`1` hides and refuses every tool that changes BookingKoala (same as `--read-only`).

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
assign_providerA

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.

cancel_bookingA

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.

create_bookingA

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.

create_customerA

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.

dashboardA

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.

get_bookingA

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.

get_customerA

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.

get_providerA

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.

list_bookingsA

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.

list_chargesA

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.

list_customersA

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.

list_draftsA

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.

list_invoicesA

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.

list_providersA

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.

reschedule_bookingA

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.

resend_invoiceA

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.

send_quoteA

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.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.9/5.0

Scored across 17 tools

Disambiguation5/5

Each tool targets a distinct resource or action: booking lifecycle actions (cancel, reschedule, assign), customer/provider CRUD-style reads, invoice/draft sends, and dashboard reporting are clearly separated. The two sending tools target different objects (invoice vs. quote draft), so they should not be confused.

Naming Consistency4/5

Nearly all tools follow a snake_case verb_noun pattern (list_bookings, get_customer, create_booking, resend_invoice). The only deviation is dashboard, which is noun-only, so the convention is predictable but not perfectly uniform.

Tool Count4/5

Seventeen tools is slightly above the typical 3-15 range but reasonable for a booking-admin domain spanning bookings, customers, providers, invoices, charges, drafts, and reporting. Each tool maps to a recognizable resource or action rather than feeling padded.

Completeness2/5

Read coverage is broad, but lifecycle coverage is uneven: there are no update operations for customers, bookings, or providers, no create-booking-from-scratch path, and no invoice or charge creation. Most critically, list_charges explicitly points to refund_charge, which is not present, creating a dead end for refund workflows.

Maintenance

ActivityMaintained
ResponsivenessNo issues