Waitwhile MCP by usefulapi
by usefulapi.io · remote · no sign-in to list tools · v1.3.3 · published by io.usefulapi
Read Waitwhile visits, bookings, customers, services and analytics; add, update and cancel visits.
29 tools: 3 can delete or cancel things, 4 change things and 22 only read.
Scanned Oct 21, 2026
- Deletes or cancels3Claude Code: deny: see these tools
- Can't be undone0Claude Code: ask
- Changes things4Claude Code: ask: see these tools
- Only reads22Claude Code: allow: see these tools
No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http waitwhile https://waitwhile.usefulapi.io/mcpTools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
29 tools
Deletes or cancels 3Claude Code: deny
waitwhile_cancel_visitWRITE: cancel ONE visit (a waitlist entry or booking).No findings
Why it is in this group
- The name "waitwhile_cancel_visit" says "cancel": a word for removing or ending something.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it WRITE: cancel ONE visit (a waitlist entry or booking). Waitwhile sets its state to COMPLETE and adds the CANCELLED tag; the visit is kept, not deleted. By default the request asks Waitwhile to suppress the customer message; this may only stop the immediate cancellation notice, and scheduled reminders/follow-ups can still go out per the location's settings. With send_notifications=true Waitwhile may text/e-mail this ONE customer. POST /visits/{visitId}/cancel.
Annotations the server declares
- title: Cancel visit
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: true
waitwhile_create_visitWRITE: create ONE visit at a location.No findings
Why it is in this group
- The name "waitwhile_create_visit" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it WRITE: create ONE visit at a location. Without a date it adds the customer to the waitlist; with a local date-time (YYYY-MM-DDThh:mm) it creates a booking. Needs a location and at least a name, phone or e-mail. Not idempotent: calling it twice creates two visits. Visit notes are not supported here (the field is deprecated): use waitwhile_add_customer_note. By default the request asks Waitwhile to suppress the customer message; this may only stop the immediate confirmation, and scheduled reminders/follow-ups can still go out per the location's settings. With send_notifications=true Waitwhile may text/e-mail this ONE customer. POST /visits.
Annotations the server declares
- title: Create visit
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
- openWorldHint: true
waitwhile_update_visitWRITE: change ONE visit — its state (e.g.No findings
Why it is in this group
- The name "waitwhile_update_visit" says "update": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it WRITE: change ONE visit — its state (e.g. WAITING to SERVING to COMPLETE, or BOOKED), add/remove tags (e.g. ARRIVED, CONFIRMED, NO-SHOW), booking date/duration or party size. Only the fields you pass change. By default the request asks Waitwhile to suppress the customer message; this may only stop the immediate status message, and scheduled reminders/follow-ups can still go out per the location's settings. With send_notifications=true Waitwhile may text/e-mail this ONE customer. Use waitwhile_cancel_visit to cancel. POST /visits/{visitId}.
Annotations the server declares
- title: Update visit
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: true
Changes things 4Claude Code: ask
waitwhile_add_customer_noteWRITE: add one staff note to a customer's record (optionally tied to a visit and location).No findings
Why it is in this group
- The name "waitwhile_add_customer_note" says "add": a word for a change.
Description, as the server wrote it WRITE: add one staff note to a customer's record (optionally tied to a visit and location). Adds only; nothing is edited or sent to the customer. POST /customers/{customerId}/notes.
Annotations the server declares
- title: Add customer note
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
waitwhile_first_available_slotsThe first available booking slots of a location (optionally for a party size, services and resources) from a date.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it The first available booking slots of a location (optionally for a party size, services and resources) from a date. Use it to propose appointment times. GET /visits/first-available-slots.
Annotations the server declares
- title: First available booking slots
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
waitwhile_resources_availabilityWorking hours/availability of a location's resources on a date (e.g.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Working hours/availability of a location's resources on a date (e.g. who is working today). GET /resources/availability.
Annotations the server declares
- title: Resource availability
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
waitwhile_visit_analyticsAggregated visit statistics for a period: visits, waitlisted, bookings, served, no-shows, cancellations, wait and serve duration quantiles, and breakdowns by location, resource, se…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Aggregated visit statistics for a period: visits, waitlisted, bookings, served, no-shows, cancellations, wait and serve duration quantiles, and breakdowns by location, resource, service, party size, user, day of week and hour of day. GET /analytics/visits (JSON).
Annotations the server declares
- title: Visit analytics
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
Only reads 22Claude Code: allow
waitwhile_get_customerOne customer by id: contact details, tags, per-location state and last visit.No findings
Why it is in this group
- The name "waitwhile_get_customer" says "get": a word for reading.
Description, as the server wrote it One customer by id: contact details, tags, per-location state and last visit. Contains personal data. GET /customers/{customerId}.
Annotations the server declares
- title: Get customer
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
waitwhile_get_data_fieldOne data field by id.No findings
Why it is in this group
- The name "waitwhile_get_data_field" says "get": a word for reading.
Description, as the server wrote it One data field by id. GET /data-fields/{dataFieldId}.
Annotations the server declares
- title: Get data field
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
waitwhile_get_locationOne location by id or short name (the part of its public Waitwhile URL).No findings
Why it is in this group
- The name "waitwhile_get_location" says "get": a word for reading.
Description, as the server wrote it One location by id or short name (the part of its public Waitwhile URL). GET /locations/{shortNameOrId}.
Annotations the server declares
- title: Get location
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
waitwhile_get_location_statusLive status of one location: open/closed, waiting and serving counts, estimated wait.No findings
Why it is in this group
- The name "waitwhile_get_location_status" says "get": a word for reading.
Description, as the server wrote it Live status of one location: open/closed, waiting and serving counts, estimated wait. GET /location-status/{locationId}.
Annotations the server declares
- title: Get location status
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
waitwhile_get_messageOne message by id.No findings
Why it is in this group
- The name "waitwhile_get_message" says "get": a word for reading.
Description, as the server wrote it One message by id. Contains personal data. GET /messages/{messageId}.
Annotations the server declares
- title: Get message
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
waitwhile_get_resourceOne resource by id.No findings
Why it is in this group
- The name "waitwhile_get_resource" says "get": a word for reading.
Description, as the server wrote it One resource by id. GET /resources/{resourceId}.
Annotations the server declares
- title: Get resource
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
waitwhile_get_serviceOne service by id.No findings
Why it is in this group
- The name "waitwhile_get_service" says "get": a word for reading.
Description, as the server wrote it One service by id. GET /services/{serviceId}.
Annotations the server declares
- title: Get service
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
waitwhile_get_visitOne visit (waitlist entry or booking) by id: customer, state, tags, services, resources, party size, position, estimated wait and all timestamps.No findings
Why it is in this group
- The name "waitwhile_get_visit" says "get": a word for reading.
Description, as the server wrote it One visit (waitlist entry or booking) by id: customer, state, tags, services, resources, party size, position, estimated wait and all timestamps. GET /visits/{visitId}.
Annotations the server declares
- title: Get visit
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
waitwhile_list_audit_entriesThe account's audit log: who changed what and when (visits, customers, locations, services, resources, users, messages).No findings
Why it is in this group
- The name "waitwhile_list_audit_entries" says "list": a word for reading.
Description, as the server wrote it The account's audit log: who changed what and when (visits, customers, locations, services, resources, users, messages). Filter by type, event, entity, location or date. GET /audit-entries.
Annotations the server declares
- title: List audit entries
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
waitwhile_list_booking_slotsBooking slots of a location for a date range with the free spots per resource and service, so you can see when an appointment can be booked.No findings
Why it is in this group
- The name "waitwhile_list_booking_slots" says "list": a word for reading.
Description, as the server wrote it Booking slots of a location for a date range with the free spots per resource and service, so you can see when an appointment can be booked. Dates are local to the location, YYYY-MM-DDThh:mm. GET /visits/availability.
Annotations the server declares
- title: List booking slots
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
waitwhile_list_customer_notesThe staff notes recorded on a customer (content, author, visit and location, timestamps).No findings
Why it is in this group
- The name "waitwhile_list_customer_notes" says "list": a word for reading.
Description, as the server wrote it The staff notes recorded on a customer (content, author, visit and location, timestamps). GET /customers/{customerId}/notes.
Annotations the server declares
- title: List customer notes
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
waitwhile_list_customersList customers (name, phone, e-mail, tags, last visit per location, created/updated).No findings
Why it is in this group
- The name "waitwhile_list_customers" says "list": a word for reading.
Description, as the server wrote it List customers (name, phone, e-mail, tags, last visit per location, created/updated). Cursor-paged, 20 per page by default; filter by location, external id or created/updated date. Contains personal data. GET /customers.
Annotations the server declares
- title: List customers
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
waitwhile_list_data_fieldsList the custom data fields (intake/booking form questions) with type, options and where they apply.No findings
Why it is in this group
- The name "waitwhile_list_data_fields" says "list": a word for reading.
Description, as the server wrote it List the custom data fields (intake/booking form questions) with type, options and where they apply. Use the ids to read answers on visits. GET /data-fields.
Annotations the server declares
- title: List data fields
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
waitwhile_list_location_statusLive status of every location: open/closed, number of people waiting and being served, current estimated wait time, and booking counters.No findings
Why it is in this group
- The name "waitwhile_list_location_status" says "list": a word for reading.
Description, as the server wrote it Live status of every location: open/closed, number of people waiting and being served, current estimated wait time, and booking counters. GET /location-status.
Annotations the server declares
- title: List location status
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
waitwhile_list_locationsList the account's locations (businesses/sites): id, name, short name, address, time zone, opening hours and waitlist/booking settings.No findings
Why it is in this group
- The name "waitwhile_list_locations" says "list": a word for reading.
Description, as the server wrote it List the account's locations (businesses/sites): id, name, short name, address, time zone, opening hours and waitlist/booking settings. Use the ids to filter visits, services and resources. GET /locations.
Annotations the server declares
- title: List locations
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
waitwhile_list_messagesList the SMS/e-mail messages Waitwhile sent to and received from customers: channel, recipient, body, delivery state (PENDING, BLOCKED, FAILED, DELIVERED, UNCONFIRMED, RECEIVED) an…No findings
Why it is in this group
- The name "waitwhile_list_messages" says "list": a word for reading.
Description, as the server wrote it List the SMS/e-mail messages Waitwhile sent to and received from customers: channel, recipient, body, delivery state (PENDING, BLOCKED, FAILED, DELIVERED, UNCONFIRMED, RECEIVED) and error. Filter by location, visit, customer, state or date. Contains personal data. This only reads; it cannot send. GET /messages.
Annotations the server declares
- title: List messages
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
waitwhile_list_resourcesList resources — the people, rooms, tables or equipment that serve customers: name, locations, services, availability flag and category structure.No findings
Why it is in this group
- The name "waitwhile_list_resources" says "list": a word for reading.
Description, as the server wrote it List resources — the people, rooms, tables or equipment that serve customers: name, locations, services, availability flag and category structure. GET /resources.
Annotations the server declares
- title: List resources
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
waitwhile_list_servicesList services (what customers book or queue for): name, duration, price, locations, resources and category structure.No findings
Why it is in this group
- The name "waitwhile_list_services" says "list": a word for reading.
Description, as the server wrote it List services (what customers book or queue for): name, duration, price, locations, resources and category structure. GET /services.
Annotations the server declares
- title: List services
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
waitwhile_list_usersList the staff users of the account: name, e-mail, roles, locations.No findings
Why it is in this group
- The name "waitwhile_list_users" says "list": a word for reading.
Description, as the server wrote it List the staff users of the account: name, e-mail, roles, locations. Password data and tokens are never returned. GET /users.
Annotations the server declares
- title: List users
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
waitwhile_list_visitsList visits: waitlist entries (people in line) and bookings (appointments), with customer, state (PENDING, DRAFT, BOOKED, WAITING, SERVING, COMPLETE), tags (e.g.No findings
Why it is in this group
- The name "waitwhile_list_visits" says "list": a word for reading.
Description, as the server wrote it List visits: waitlist entries (people in line) and bookings (appointments), with customer, state (PENDING, DRAFT, BOOKED, WAITING, SERVING, COMPLETE), tags (e.g. NO-SHOW, CANCELLED, ARRIVED), services, resources, party size, position and timestamps. Filter by location, state, tag, customer, service, resource, booking date (local time) or created/updated date. Cursor-paged. Contains customer contact details. GET /visits.
Annotations the server declares
- title: List visits
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
waitwhile_search_customersSearch customers by a prefix match on name, phone, e-mail or customer id; optionally narrowed by location, visit state or tag.No findings
Why it is in this group
- The name "waitwhile_search_customers" says "search": a word for reading.
Description, as the server wrote it Search customers by a prefix match on name, phone, e-mail or customer id; optionally narrowed by location, visit state or tag. Page-numbered. Contains personal data. GET /customers/search.
Annotations the server declares
- title: Search customers
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
waitwhile_search_visitsSearch visits by a prefix match on customer name, phone, e-mail or customer id, optionally filtered by location, state, tag and excluded tags.No findings
Why it is in this group
- The name "waitwhile_search_visits" says "search": a word for reading.
Description, as the server wrote it Search visits by a prefix match on customer name, phone, e-mail or customer id, optionally filtered by location, state, tag and excluded tags. Page-numbered. Contains customer contact details. GET /visits/search.
Annotations the server declares
- title: Search visits
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: true
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.3.3. Values in angle brackets are yours to fill in.
claude mcp add --transport http waitwhile https://waitwhile.usefulapi.io/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__waitwhile__waitwhile_list_locations",
"mcp__waitwhile__waitwhile_get_location",
"mcp__waitwhile__waitwhile_list_location_status",
"mcp__waitwhile__waitwhile_get_location_status",
"mcp__waitwhile__waitwhile_list_visits",
"mcp__waitwhile__waitwhile_search_visits",
"mcp__waitwhile__waitwhile_get_visit",
"mcp__waitwhile__waitwhile_list_booking_slots",
"mcp__waitwhile__waitwhile_list_customers",
"mcp__waitwhile__waitwhile_search_customers",
"mcp__waitwhile__waitwhile_get_customer",
"mcp__waitwhile__waitwhile_list_customer_notes",
"mcp__waitwhile__waitwhile_list_services",
"mcp__waitwhile__waitwhile_get_service",
"mcp__waitwhile__waitwhile_list_resources",
"mcp__waitwhile__waitwhile_get_resource",
"mcp__waitwhile__waitwhile_list_data_fields",
"mcp__waitwhile__waitwhile_get_data_field",
"mcp__waitwhile__waitwhile_list_users",
"mcp__waitwhile__waitwhile_list_messages",
"mcp__waitwhile__waitwhile_get_message",
"mcp__waitwhile__waitwhile_list_audit_entries"
],
"ask": [
"mcp__waitwhile__waitwhile_first_available_slots",
"mcp__waitwhile__waitwhile_resources_availability",
"mcp__waitwhile__waitwhile_visit_analytics",
"mcp__waitwhile__waitwhile_add_customer_note"
],
"deny": [
"mcp__waitwhile__waitwhile_create_visit",
"mcp__waitwhile__waitwhile_update_visit",
"mcp__waitwhile__waitwhile_cancel_visit"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as waitwhile. Review it before you use it.