{"id":301651,"recorded_at":"2026-10-26T22:36:46.608697Z","observed_at":"2026-10-26T22:36:46.608499Z","subject_kind":"endpoint","subject":"7d8d2ef2-ef63-4b8b-81e4-6fc9f18a5797","kind":"mcp.tools","method":"probe.mcp/1","body":{"count":29,"tools":[{"description":"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.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"content":{"description":"The note text.","maxLength":1000,"minLength":1,"type":"string"},"customer_id":{"description":"Customer id.","maxLength":100,"minLength":1,"type":"string"},"location_id":{"maxLength":100,"minLength":1,"type":"string"},"visit_id":{"maxLength":100,"minLength":1,"type":"string"}},"required":["customer_id","content"],"type":"object"},"name":"waitwhile_add_customer_note"},{"description":"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.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"send_notifications":{"description":"Default false: the request asks Waitwhile not to send the immediate confirmation/status message. This may not stop everything: scheduled reminders and follow-ups can still go out according to the location's own settings. Set true to let Waitwhile send its normal messages to the customer.","type":"boolean"},"visit_id":{"description":"Visit id.","maxLength":100,"minLength":1,"type":"string"}},"required":["visit_id"],"type":"object"},"name":"waitwhile_cancel_visit"},{"description":"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.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"date":{"description":"Booking start in the location's local time, YYYY-MM-DDThh:mm. Omit to join the waitlist.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}$","type":"string"},"duration":{"description":"Booking duration in seconds.","maximum":86400,"minimum":0,"type":"integer"},"email":{"description":"Customer e-mail.","format":"email","maxLength":100,"pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$","type":"string"},"first_name":{"maxLength":100,"minLength":1,"type":"string"},"last_name":{"maxLength":100,"minLength":1,"type":"string"},"location_id":{"description":"Location id (see waitwhile_list_locations).","maxLength":100,"minLength":1,"type":"string"},"name":{"description":"Customer name.","maxLength":100,"minLength":1,"type":"string"},"party_size":{"maximum":100,"minimum":1,"type":"integer"},"phone":{"description":"Customer phone, E.164 (+16005551234).","pattern":"^\\+[1-9]\\d{6,14}$","type":"string"},"resource_ids":{"description":"Preferred resources (staff, rooms).","items":{"maxLength":100,"minLength":1,"type":"string"},"maxItems":30,"minItems":1,"type":"array"},"send_notifications":{"description":"Default false: the request asks Waitwhile not to send the immediate confirmation/status message. This may not stop everything: scheduled reminders and follow-ups can still go out according to the location's own settings. Set true to let Waitwhile send its normal messages to the customer.","type":"boolean"},"service_ids":{"description":"Services the customer wants.","items":{"maxLength":100,"minLength":1,"type":"string"},"maxItems":30,"minItems":1,"type":"array"}},"required":["location_id"],"type":"object"},"name":"waitwhile_create_visit"},{"description":"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.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"from_date":{"description":"Local start, YYYY-MM-DDThh:mm.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}$","type":"string"},"location_id":{"description":"Location id.","maxLength":100,"minLength":1,"type":"string"},"max_num_slots":{"description":"Max number of slots to return.","maximum":100,"minimum":1,"type":"integer"},"party_size":{"maximum":100,"minimum":1,"type":"integer"},"resource_ids":{"items":{"maxLength":100,"minLength":1,"type":"string"},"maxItems":30,"minItems":1,"type":"array"},"service_duration":{"description":"Service duration in seconds.","maximum":86400,"minimum":60,"type":"integer"},"service_ids":{"items":{"maxLength":100,"minLength":1,"type":"string"},"maxItems":30,"minItems":1,"type":"array"},"to_date":{"description":"Local end, YYYY-MM-DDThh:mm.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}$","type":"string"}},"required":["location_id"],"type":"object"},"name":"waitwhile_first_available_slots"},{"description":"One customer by id: contact details, tags, per-location state and last visit. Contains personal data. GET /customers/{customerId}.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"customer_id":{"description":"Customer id.","maxLength":100,"minLength":1,"type":"string"}},"required":["customer_id"],"type":"object"},"name":"waitwhile_get_customer"},{"description":"One data field by id. GET /data-fields/{dataFieldId}.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"data_field_id":{"description":"Data field id.","maxLength":100,"minLength":1,"type":"string"}},"required":["data_field_id"],"type":"object"},"name":"waitwhile_get_data_field"},{"description":"One location by id or short name (the part of its public Waitwhile URL). GET /locations/{shortNameOrId}.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"location":{"description":"Location id or short name.","maxLength":100,"minLength":1,"type":"string"}},"required":["location"],"type":"object"},"name":"waitwhile_get_location"},{"description":"Live status of one location: open/closed, waiting and serving counts, estimated wait. GET /location-status/{locationId}.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"location_id":{"description":"Location id.","maxLength":100,"minLength":1,"type":"string"}},"required":["location_id"],"type":"object"},"name":"waitwhile_get_location_status"},{"description":"One message by id. Contains personal data. GET /messages/{messageId}.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"message_id":{"description":"Message id.","maxLength":100,"minLength":1,"type":"string"}},"required":["message_id"],"type":"object"},"name":"waitwhile_get_message"},{"description":"One resource by id. GET /resources/{resourceId}.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"resource_id":{"description":"Resource id.","maxLength":100,"minLength":1,"type":"string"}},"required":["resource_id"],"type":"object"},"name":"waitwhile_get_resource"},{"description":"One service by id. GET /services/{serviceId}.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"service_id":{"description":"Service id.","maxLength":100,"minLength":1,"type":"string"}},"required":["service_id"],"type":"object"},"name":"waitwhile_get_service"},{"description":"One visit (waitlist entry or booking) by id: customer, state, tags, services, resources, party size, position, estimated wait and all timestamps. GET /visits/{visitId}.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"visit_id":{"description":"Visit id.","maxLength":100,"minLength":1,"type":"string"}},"required":["visit_id"],"type":"object"},"name":"waitwhile_get_visit"},{"description":"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.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"desc":{"description":"Newest first.","type":"boolean"},"entity_id":{"description":"Id of the changed object.","maxLength":100,"minLength":1,"type":"string"},"event":{"description":"Audit event type.","maxLength":100,"minLength":1,"type":"string"},"from_date":{"description":"ISO 8601 date or date-time (e.g. 2026-10-01 or 2026-10-01T00:00:00Z).","type":"string"},"limit":{"description":"Results per page, 1-100 (default 20).","maximum":100,"minimum":1,"type":"integer"},"location_id":{"maxLength":100,"minLength":1,"type":"string"},"start_after":{"description":"Cursor: pass the previous reply's next_start_after to get the next page.","maxLength":500,"minLength":1,"type":"string"},"to_date":{"description":"ISO 8601 date or date-time (e.g. 2026-10-01 or 2026-10-01T00:00:00Z).","type":"string"},"type":{"enum":["ACCOUNT","CUSTOMER","DATA-FIELD","MESSAGE","LOCATION","RESOURCE","SERVICE","USER","VISIT"],"type":"string"}},"type":"object"},"name":"waitwhile_list_audit_entries"},{"description":"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.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"from_date":{"description":"Local start, YYYY-MM-DDThh:mm.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}$","type":"string"},"location_id":{"description":"Location id.","maxLength":100,"minLength":1,"type":"string"},"resource_ids":{"description":"Only slots for these resources.","items":{"maxLength":100,"minLength":1,"type":"string"},"maxItems":30,"minItems":1,"type":"array"},"service_duration":{"description":"Service duration in seconds, to size the slots.","maximum":86400,"minimum":60,"type":"integer"},"service_ids":{"description":"Only slots for these services.","items":{"maxLength":100,"minLength":1,"type":"string"},"maxItems":30,"minItems":1,"type":"array"},"show_min_spots":{"description":"Only slots with at least this many free spots.","maximum":1000,"minimum":1,"type":"integer"},"to_date":{"description":"Local end, YYYY-MM-DDThh:mm.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}$","type":"string"}},"required":["location_id"],"type":"object"},"name":"waitwhile_list_booking_slots"},{"description":"The staff notes recorded on a customer (content, author, visit and location, timestamps). GET /customers/{customerId}/notes.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"customer_id":{"description":"Customer id.","maxLength":100,"minLength":1,"type":"string"}},"required":["customer_id"],"type":"object"},"name":"waitwhile_list_customer_notes"},{"description":"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.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"desc":{"description":"Newest first.","type":"boolean"},"external_id":{"maxLength":200,"minLength":1,"type":"string"},"from_date":{"description":"ISO 8601 date or date-time (e.g. 2026-10-01T00:00:00Z), or epoch milliseconds.","type":"string"},"limit":{"description":"Results per page, 1-100 (default 20).","maximum":100,"minimum":1,"type":"integer"},"location_id":{"description":"Only customers with visits at this location.","maxLength":100,"minLength":1,"type":"string"},"start_after":{"description":"Cursor: pass the previous reply's next_start_after to get the next page.","maxLength":500,"minLength":1,"type":"string"},"to_date":{"description":"ISO 8601 date or date-time (e.g. 2026-10-01T00:00:00Z), or epoch milliseconds.","type":"string"}},"type":"object"},"name":"waitwhile_list_customers"},{"description":"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.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"external_id":{"maxLength":200,"minLength":1,"type":"string"},"limit":{"description":"Results per page, 1-100 (default 20).","maximum":100,"minimum":1,"type":"integer"},"location_id":{"description":"Only items offered at these locations.","items":{"maxLength":100,"minLength":1,"type":"string"},"maxItems":30,"minItems":1,"type":"array"},"q":{"description":"Prefix match on name or display name.","maxLength":200,"minLength":1,"type":"string"},"start_after":{"description":"Cursor: pass the previous reply's next_start_after to get the next page.","maxLength":500,"minLength":1,"type":"string"}},"type":"object"},"name":"waitwhile_list_data_fields"},{"description":"Live status of every location: open/closed, number of people waiting and being served, current estimated wait time, and booking counters. GET /location-status.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"limit":{"description":"Results per page, 1-100 (default 20).","maximum":100,"minimum":1,"type":"integer"},"start_after":{"description":"Cursor: pass the previous reply's next_start_after to get the next page.","maxLength":500,"minLength":1,"type":"string"}},"type":"object"},"name":"waitwhile_list_location_status"},{"description":"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.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"country_code":{"description":"Two-letter country code.","maxLength":2,"minLength":2,"type":"string"},"desc":{"description":"Newest first.","type":"boolean"},"external_id":{"description":"Only the location with this external id.","maxLength":200,"minLength":1,"type":"string"},"limit":{"description":"Results per page, 1-100 (default 20).","maximum":100,"minimum":1,"type":"integer"},"start_after":{"description":"Cursor: pass the previous reply's next_start_after to get the next page.","maxLength":500,"minLength":1,"type":"string"}},"type":"object"},"name":"waitwhile_list_locations"},{"description":"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.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"customer_id":{"maxLength":100,"minLength":1,"type":"string"},"desc":{"description":"Newest first.","type":"boolean"},"external_customer_id":{"maxLength":200,"minLength":1,"type":"string"},"from_date":{"description":"ISO 8601 date or date-time (e.g. 2026-10-01T00:00:00Z), or epoch milliseconds.","type":"string"},"limit":{"description":"Results per page, 1-100 (default 20).","maximum":100,"minimum":1,"type":"integer"},"location_id":{"maxLength":100,"minLength":1,"type":"string"},"start_after":{"description":"Cursor: pass the previous reply's next_start_after to get the next page.","maxLength":500,"minLength":1,"type":"string"},"state":{"enum":["PENDING","BLOCKED","FAILED","DELIVERED","UNCONFIRMED","RECEIVED"],"type":"string"},"to_date":{"description":"ISO 8601 date or date-time (e.g. 2026-10-01T00:00:00Z), or epoch milliseconds.","type":"string"},"visit_id":{"maxLength":100,"minLength":1,"type":"string"}},"type":"object"},"name":"waitwhile_list_messages"},{"description":"List resources — the people, rooms, tables or equipment that serve customers: name, locations, services, availability flag and category structure. GET /resources.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"email":{"description":"Only the resource with this e-mail.","maxLength":200,"minLength":3,"type":"string"},"external_id":{"maxLength":200,"minLength":1,"type":"string"},"is_category":{"description":"Only resource categories (true) or only resources (false).","type":"boolean"},"limit":{"description":"Results per page, 1-100 (default 20).","maximum":100,"minimum":1,"type":"integer"},"location_id":{"description":"Only items offered at these locations.","items":{"maxLength":100,"minLength":1,"type":"string"},"maxItems":30,"minItems":1,"type":"array"},"parent_id":{"description":"Only children of this category.","maxLength":100,"minLength":1,"type":"string"},"q":{"description":"Prefix match on name or display name.","maxLength":200,"minLength":1,"type":"string"},"start_after":{"description":"Cursor: pass the previous reply's next_start_after to get the next page.","maxLength":500,"minLength":1,"type":"string"}},"type":"object"},"name":"waitwhile_list_resources"},{"description":"List services (what customers book or queue for): name, duration, price, locations, resources and category structure. GET /services.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"external_id":{"maxLength":200,"minLength":1,"type":"string"},"is_category":{"description":"Only service categories (true) or only services (false).","type":"boolean"},"limit":{"description":"Results per page, 1-100 (default 20).","maximum":100,"minimum":1,"type":"integer"},"location_id":{"description":"Only items offered at these locations.","items":{"maxLength":100,"minLength":1,"type":"string"},"maxItems":30,"minItems":1,"type":"array"},"parent_id":{"description":"Only children of this category.","maxLength":100,"minLength":1,"type":"string"},"q":{"description":"Prefix match on name or display name.","maxLength":200,"minLength":1,"type":"string"},"start_after":{"description":"Cursor: pass the previous reply's next_start_after to get the next page.","maxLength":500,"minLength":1,"type":"string"}},"type":"object"},"name":"waitwhile_list_services"},{"description":"List the staff users of the account: name, e-mail, roles, locations. Password data and tokens are never returned. GET /users.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"external_id":{"maxLength":200,"minLength":1,"type":"string"},"limit":{"description":"Results per page, 1-100 (default 20).","maximum":100,"minimum":1,"type":"integer"},"location_id":{"description":"Only users with access to these locations.","items":{"maxLength":100,"minLength":1,"type":"string"},"maxItems":30,"minItems":1,"type":"array"},"q":{"description":"Prefix match on name or e-mail.","maxLength":200,"minLength":1,"type":"string"},"role":{"description":"Only users with these roles.","items":{"maxLength":50,"minLength":1,"type":"string"},"maxItems":10,"minItems":1,"type":"array"},"start_after":{"description":"Cursor: pass the previous reply's next_start_after to get the next page.","maxLength":500,"minLength":1,"type":"string"}},"type":"object"},"name":"waitwhile_list_users"},{"description":"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.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"customer_id":{"maxLength":100,"minLength":1,"type":"string"},"desc":{"description":"Newest first.","type":"boolean"},"external_customer_id":{"maxLength":200,"minLength":1,"type":"string"},"from_booking_date":{"description":"Bookings starting at or after this local date-time, YYYY-MM-DDThh:mm.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}$","type":"string"},"from_date":{"description":"Visits created from this date-time (ISO 8601 or epoch ms).","type":"string"},"limit":{"description":"Results per page, 1-100 (default 20).","maximum":100,"minimum":1,"type":"integer"},"location_id":{"description":"Only visits at this location.","maxLength":100,"minLength":1,"type":"string"},"resource_id":{"maxLength":100,"minLength":1,"type":"string"},"service_id":{"maxLength":100,"minLength":1,"type":"string"},"start_after":{"description":"Cursor: pass the previous reply's next_start_after to get the next page.","maxLength":500,"minLength":1,"type":"string"},"state":{"enum":["PENDING","DRAFT","BOOKED","WAITING","SERVING","COMPLETE"],"type":"string"},"tag":{"enum":["NO-SHOW","CANCELLED","REMOVED","ALERTED","ARRIVED","DELAYED","CONFIRMED","EXPIRED","FLAGGED","IMPORTED","PRIORITIZED","CAPACITY","REJECTED","QUICK"],"type":"string"},"to_booking_date":{"description":"Bookings starting at or before this local date-time, YYYY-MM-DDThh:mm.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}$","type":"string"},"to_date":{"description":"Visits created up to this date-time (ISO 8601 or epoch ms).","type":"string"}},"type":"object"},"name":"waitwhile_list_visits"},{"description":"Working hours/availability of a location's resources on a date (e.g. who is working today). GET /resources/availability.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"date":{"description":"Date (yyyy-mm-dd) or ISO 8601 date-time; default today.","type":"string"},"location_id":{"description":"Location id.","maxLength":100,"minLength":1,"type":"string"},"resource_ids":{"description":"Only these resources.","items":{"maxLength":100,"minLength":1,"type":"string"},"maxItems":30,"minItems":1,"type":"array"}},"required":["location_id"],"type":"object"},"name":"waitwhile_resources_availability"},{"description":"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.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"limit":{"description":"Results per page, 1-100 (default 20).","maximum":100,"minimum":1,"type":"integer"},"location_id":{"maxLength":100,"minLength":1,"type":"string"},"page":{"description":"Page number, from 1 (default 1). Pass the previous reply's next_page.","maximum":1000000,"minimum":1,"type":"integer"},"q":{"description":"Prefix match on name, phone, e-mail or customer id.","maxLength":100,"minLength":1,"type":"string"},"state":{"enum":["PENDING","DRAFT","BOOKED","WAITING","SERVING","COMPLETE"],"type":"string"},"tag":{"enum":["NO-SHOW","CANCELLED","REMOVED","ALERTED","ARRIVED","DELAYED","CONFIRMED","EXPIRED","FLAGGED","IMPORTED","PRIORITIZED","CAPACITY","REJECTED","QUICK"],"type":"string"}},"required":["q"],"type":"object"},"name":"waitwhile_search_customers"},{"description":"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.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"exclude_tags":{"description":"Leave out visits carrying any of these tags.","items":{"enum":["NO-SHOW","CANCELLED","REMOVED","ALERTED","ARRIVED","DELAYED","CONFIRMED","EXPIRED","FLAGGED","IMPORTED","PRIORITIZED","CAPACITY","REJECTED","QUICK"],"type":"string"},"maxItems":10,"type":"array"},"limit":{"description":"Results per page, 1-100 (default 20).","maximum":100,"minimum":1,"type":"integer"},"location_id":{"maxLength":100,"minLength":1,"type":"string"},"page":{"description":"Page number, from 1 (default 1). Pass the previous reply's next_page.","maximum":1000000,"minimum":1,"type":"integer"},"q":{"description":"Prefix match on name, phone, e-mail or customer id.","maxLength":100,"minLength":1,"type":"string"},"state":{"enum":["PENDING","DRAFT","BOOKED","WAITING","SERVING","COMPLETE"],"type":"string"},"tag":{"enum":["NO-SHOW","CANCELLED","REMOVED","ALERTED","ARRIVED","DELAYED","CONFIRMED","EXPIRED","FLAGGED","IMPORTED","PRIORITIZED","CAPACITY","REJECTED","QUICK"],"type":"string"}},"required":["q"],"type":"object"},"name":"waitwhile_search_visits"},{"description":"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}.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"add_tags":{"description":"Tags to add.","items":{"enum":["NO-SHOW","CANCELLED","REMOVED","ALERTED","ARRIVED","DELAYED","CONFIRMED","EXPIRED","FLAGGED","IMPORTED","PRIORITIZED","CAPACITY","REJECTED","QUICK"],"type":"string"},"maxItems":10,"minItems":1,"type":"array"},"date":{"description":"New booking start, local time YYYY-MM-DDThh:mm.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}$","type":"string"},"duration":{"description":"New booking duration in seconds.","maximum":86400,"minimum":0,"type":"integer"},"party_size":{"maximum":100,"minimum":1,"type":"integer"},"remove_tags":{"description":"Tags to remove.","items":{"enum":["NO-SHOW","CANCELLED","REMOVED","ALERTED","ARRIVED","DELAYED","CONFIRMED","EXPIRED","FLAGGED","IMPORTED","PRIORITIZED","CAPACITY","REJECTED","QUICK"],"type":"string"},"maxItems":10,"minItems":1,"type":"array"},"send_notifications":{"description":"Default false: the request asks Waitwhile not to send the immediate confirmation/status message. This may not stop everything: scheduled reminders and follow-ups can still go out according to the location's own settings. Set true to let Waitwhile send its normal messages to the customer.","type":"boolean"},"state":{"description":"New state.","enum":["PENDING","DRAFT","BOOKED","WAITING","SERVING","COMPLETE"],"type":"string"},"visit_id":{"description":"Visit id.","maxLength":100,"minLength":1,"type":"string"}},"required":["visit_id"],"type":"object"},"name":"waitwhile_update_visit"},{"description":"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).","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"from_date":{"description":"Period start (ISO 8601 or epoch ms).","type":"string"},"location_id":{"description":"Only this location (default: all).","maxLength":100,"minLength":1,"type":"string"},"to_date":{"description":"Period end (ISO 8601 or epoch ms).","type":"string"}},"type":"object"},"name":"waitwhile_visit_analytics"}]},"body_sha256":"a95ab6eeba8f8414aa311015294c24af7c3181b2f7f3be6d65847264994715bc","prev_id":null,"leaf":"0x23cac023ebed7a0f57242b969986f2c48596ae1df45bcd20130ff97db098e048","leaf_text":"{\"body\":\"a95ab6eeba8f8414aa311015294c24af7c3181b2f7f3be6d65847264994715bc\",\"id\":301651,\"kind\":\"mcp.tools\",\"method\":\"probe.mcp/1\",\"observed_us\":1793054206608499,\"prev\":null,\"subject\":\"7d8d2ef2-ef63-4b8b-81e4-6fc9f18a5797\",\"subject_kind\":\"endpoint\"}","day":{"day":"2026-10-26","leaves":296695,"root":"0xf43e8dcc3d451a4788b26be904c55e8c4c0fa75c9666796c51db38d37e2c0df8","chained":"0x702d5ac508f08b0d1accf36af25822d8e5660367494edd17a642fb61e158a57a","anchor_chain":"eip155:5042002","anchor_tx":"0x495162f8936e19f0039918feebe6c307f327cd6bf8c37219620b1970041fa9ae","anchor_block":69251483},"proof":["0x23cb38c0b83f9a60aac8a6458687f8ef95985ce5678953808263b09b3d768341","0x6046e5ea29e817ce4a0e412f758ab7fc7d9c9b788402c0b498aae4150badfeb3","0x1869fff17b5367e4524b68d7576158e604ea8e237d5f3ddffd56f168789d2c6f","0xe6cdb1be3b7a148905d0c1032dd5f3542983db20fd0d363d4da66e4405b9c90d","0x275a3987b60d8e6d39d8399eea0bf3cb532fdfc8c69ac4fb28e3a5f2fc2486f8","0x3a7a338ef23f29a73c6f06594ac545ab0ab2d979a773cb759f971a61733302ad","0x7f996aa54219e16c68d3ce360e2a1ed44779a7d8d4562298022d67066a9125fb","0x9c6ad1cf02df1e6a7d6b0c8bb5d5184ebfa7a9fecca36004f667e0d38ae44231","0xbc5246cda47158df1c064ca68cdd8d908ba87a0a982f369c71005f5c4c337831","0x1f665fd33ff003b77fc5f27a4e56219f36aaae7e346794cb25d15f47d71ec758","0x395ecef2713b13f9a2a88fe836fbc1a4e94906043e3938cd3fd16627be6b95de","0x2ceb9cc3a43f479e6ab73db5d3d474a93995fb4188ee45f71846b4cf537a0016","0x830b2c874449c7499489eba2baa67d49f991298225763c0161b471621038d0fb","0xd843afcced75dedd39194ff9bd12326b88099e6112686db2299392d022dc3146","0xc3a6a3ae44ec0da1848b16d40c45d7aac97a67352eea8df18e0f26edabea8a2f","0x06d71bfa7d8b41d62c8836efc2c601e1cc3772d9453596b2ae4950887f3310ca","0x8c756542e482157df0c36464d75c937b845e4423dbbcfad08f0cf8d5a16b9a13","0x20704208aa6923d6b2450ef74ede87a6e0265d46447926038fe9506e9e154b2d","0x9b9ce5b74b9bab5121612ef6b64920a8d453cbf311096a423eef9702747e868a"]}