UNPKG

@awesomate/hosting-mcp

Version:

Awesomate MCP server — lets Claude manage your Awesomate WordPress hosting, plan, limits, n8n automations, and build Node/static apps + databases

88 lines (71 loc) • 5.95 kB
--- 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`. 2. `save_service` with `key`, `name`, `minutes`, `calendars` (keys), and optionally `capacity`, `price_text`, `location`, `cancel_cutoff_hours`, `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`) and `cancel` (`booking_id`, `reason`): the customer is emailed unless `notify: false`, and the calendar's notice email always is. ## 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** is connected per calendar in the hub (Contacts, Bookings, Set up, Connect Google Calendar), by the person whose calendar it is: Claude cannot connect it, so send them there. Once connected, times they are busy in Google are never offered, and every booking is written to an "Awesomate bookings" calendar in their Google account, moved and removed with it. `setup` lists the connected calendars under `links`. Outlook is not available yet; there the notice email's invite is how a booking reaches their calendar.