@awesomate/hosting-mcp
Version:
Awesomate MCP server — lets Claude manage your Awesomate WordPress hosting, plan, limits, n8n automations, and build Node/static apps + databases
100 lines (83 loc) • 7.02 kB
Markdown
---
name: awesomate-bookings
description: Let the business's own customers book appointments or classes online, and manage those bookings. Sets up calendars (a person, room or resource with weekly hours), services (what is booked, how long, how many places, the questions asked), and the booking box for their website, then books, moves and cancels for them. Use when the user says "booking", "bookings", "appointments", "book online", "booking calendar", "scheduling", "let customers book", "Calendly", "class bookings", "who's booked tomorrow", or wants a booking page on their site. Companion to awesomate-app-builder and awesomate-hosting (the page it goes on) and awesomate-n8n (follow-ups): same connection, same token.
---
# Awesomate Bookings: customers book themselves, bookings land in Contacts
A business's customers pick a time on the business's own website, get an email with a calendar
invite and a link to change or cancel, and the business gets a notice for each booking. Every
booking is a record in the business's own Contacts, linked to the person who made it.
Everything goes through one tool, `awesomate_bookings`. Work in plain words with the owner: ask
what people book, who with, and when they are open, then set it up and show them the result in a
sentence or two.
## What it is made of
- **Calendars**: a person, room or resource people book. Each has weekly hours in its own time
zone, how much notice it needs, a gap between bookings, an optional daily limit, and the email
that hears about every booking (with an invite for their own calendar). Set the notice email:
without one, customers' replies to booking emails reach nobody.
- **Services**: what is booked. A length in minutes, places (1 for one person at a time, more for
a class several people join), a price shown as text (nothing is charged), where it happens,
questions to ask when booking, how many hours before the start changes close online, and which
calendars offer it.
- **The booking box**: one key per website, locked to that site's address. `create_key` returns the
snippet to paste.
## Setting up (in this order)
1. `awesomate_bookings` action `save_calendar` with `key` (lower case, like `nicole`), `name`,
`timezone` (like `Australia/Sydney`), `hours` (`{"mon": [["09:00","17:00"]], ...}`, 24-hour, no
overlaps), and `notify_email`. `granularity_minutes` (5, 10, 15, 20, 30 or 60) sets how often
start times fall.
2. `save_service` with `key`, `name`, `minutes`, `calendars` (keys), and optionally `capacity`,
`price_text`, `location`, `cancel_cutoff_hours`, `sort` (order on the booking page, lower
first), `intake` (questions:
`[{"key":"reason","label":"What brings you in?","type":"textarea","required":true}]`; types are
text, textarea, select, multiselect, url; select and multiselect take `options`).
3. `open_times` with `service` to check the times look right before telling the owner it is ready.
4. `create_key` with `website` (the site's address, https). Put the returned `snippet` on the page
the owner wants, or give it to them to paste:
```html
<div data-awesomate-bookings></div>
<script src="https://hub.awesomate.ai/widget/v1/bookings.js" data-key="bk_..." async></script>
```
On the div, `data-service="<key>"` offers one service only, and `data-accent="#0f766e"` colours the
buttons to match the site. On a WordPress site, a Custom HTML block holds both lines. On a site you
build with awesomate-app-builder, put them in the page where booking belongs (a "Book now" section,
or a /book page) and deploy as usual. The box only works on the website named on its key: to use it
on another domain, `update_key` with `allowed_origins`.
Changing a calendar or service later: call the same `save_` action with only what changes.
## Running the diary
- `list` (optionally `from`, `to`, `status`): upcoming bookings with each customer's name, email,
phone and answers. Use it for "who's booked tomorrow".
- `book`: book someone in (`service`, `calendar`, `starts_at` from `open_times`, the customer's
`email`, `first_name`, `last_name`, `phone`, `answers`). `notify: false` when the customer should
not get an email (a booking taken by phone that they already know about). Staff may book outside
the hours with `outside_hours: true`; nobody can double-book a time.
- `move` (`booking_id`, `starts_at`, optional `calendar` to move it to another calendar) and `cancel` (`booking_id`, `reason`): the customer is emailed
unless `notify: false`, and the calendar's notice email always is.
- `get` (`booking_id`): one booking with its customer and their answers.
- `outcome` (`booking_id`, `outcome: completed | no_show`): how it went, once the time has passed.
Nobody is emailed. Mark a no-show only when the owner says the person did not come.
- `disconnect_calendar` (`key`, `provider: google | microsoft`, `confirm: true`): unlink the Google
or Microsoft calendar connected to one of the business's calendars, only on the owner's yes, so
its busy times stop blocking bookings. Connecting one, and choosing which of its calendars count
as busy, is done in the hub under Contacts, Bookings.
## Follow-ups through n8n (Pro)
Each booking is a record of the `booking` kind in Contacts. On Pro, an account with one of its own
apps (`awesomate_crm_apps`) can add a hook with `awesomate_crm_hooks` and `kinds: ["booking"]` to
send each booking's created, updated and archived events to its own n8n: an SMS reminder, copying it
into Google Calendar with the owner's own n8n credential, a thank-you after the visit. Bookings
themselves cannot be written through `awesomate_crm_write`; only these actions change them.
## Plans and limits
- Every plan can set up bookings and take them on its website. Essentials takes up to 50 website
bookings a month; bookings the business makes itself never count.
- Changing bookings from Claude Code (the write actions here) needs Support Plus or above. On
Essentials, the tool answers `upgrade_required`: say the owner can do the same in the hub under
Contacts, Bookings, and do not retry.
- Payments and deposits are not part of bookings yet. Do not promise them; the price is shown only.
- **Google Calendar or Outlook** is connected per calendar in the hub (Contacts, Bookings, Set
up, Connect Google Calendar or Connect Outlook), by the person whose calendar it is: Claude
cannot connect it, so send them there. Once connected, times they are busy there are never
offered, and every booking is written to an "Awesomate bookings" calendar in their account,
moved and removed with it. `setup` lists the connected calendars under `links` (each with its
`provider`), and says which providers this hub offers (`google.available`,
`microsoft.available`). Where neither is offered, the notice email's invite is how a booking
reaches their calendar. A work account whose organisation limits apps may need its Microsoft
365 admin to approve Awesomate once; the hub says so when that happens.