Skip to content

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.

Deletes · 3Changes · 4

29 tools: 3 can delete or cancel things, 4 change things and 22 only read.

Scanned Oct 21, 2026

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/mcp

Tools

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/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.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.