addrbookFor publishers
← The evidence ledger

Evidence row 301651

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint 7d8d2ef2-ef63-4b8b-81e4-6fc9f18a5797
Recorded
Previous row
None: the first of its kind about this subject
Body SHA-256
a95ab6eeba8f8414aa311015294c24af7c3181b2f7f3be6d65847264994715bc
Leaf
0x23cac023ebed7a0f57242b969986f2c48596ae1df45bcd20130ff97db098e048

What was observed

{
  "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"
    }
  ]
}

What the leaf hashes

{"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"}

Proof

Fold these into the leaf in order, hashing each sorted pair with keccak256, to reach the root of (296695 rows).

  1. 0x23cb38c0b83f9a60aac8a6458687f8ef95985ce5678953808263b09b3d768341
  2. 0x6046e5ea29e817ce4a0e412f758ab7fc7d9c9b788402c0b498aae4150badfeb3
  3. 0x1869fff17b5367e4524b68d7576158e604ea8e237d5f3ddffd56f168789d2c6f
  4. 0xe6cdb1be3b7a148905d0c1032dd5f3542983db20fd0d363d4da66e4405b9c90d
  5. 0x275a3987b60d8e6d39d8399eea0bf3cb532fdfc8c69ac4fb28e3a5f2fc2486f8
  6. 0x3a7a338ef23f29a73c6f06594ac545ab0ab2d979a773cb759f971a61733302ad
  7. 0x7f996aa54219e16c68d3ce360e2a1ed44779a7d8d4562298022d67066a9125fb
  8. 0x9c6ad1cf02df1e6a7d6b0c8bb5d5184ebfa7a9fecca36004f667e0d38ae44231
  9. 0xbc5246cda47158df1c064ca68cdd8d908ba87a0a982f369c71005f5c4c337831
  10. 0x1f665fd33ff003b77fc5f27a4e56219f36aaae7e346794cb25d15f47d71ec758
  11. 0x395ecef2713b13f9a2a88fe836fbc1a4e94906043e3938cd3fd16627be6b95de
  12. 0x2ceb9cc3a43f479e6ab73db5d3d474a93995fb4188ee45f71846b4cf537a0016
  13. 0x830b2c874449c7499489eba2baa67d49f991298225763c0161b471621038d0fb
  14. 0xd843afcced75dedd39194ff9bd12326b88099e6112686db2299392d022dc3146
  15. 0xc3a6a3ae44ec0da1848b16d40c45d7aac97a67352eea8df18e0f26edabea8a2f
  16. 0x06d71bfa7d8b41d62c8836efc2c601e1cc3772d9453596b2ae4950887f3310ca
  17. 0x8c756542e482157df0c36464d75c937b845e4423dbbcfad08f0cf8d5a16b9a13
  18. 0x20704208aa6923d6b2450ef74ede87a6e0265d46447926038fe9506e9e154b2d
  19. 0x9b9ce5b74b9bab5121612ef6b64920a8d453cbf311096a423eef9702747e868a
Day root
0xf43e8dcc3d451a4788b26be904c55e8c4c0fa75c9666796c51db38d37e2c0df8
Chained
0x702d5ac508f08b0d1accf36af25822d8e5660367494edd17a642fb61e158a57a
Published
On Arc Testnet, block 69251483: 0x495162f8936e19f0039918feebe6c307f327cd6bf8c37219620b1970041fa9ae

How to check it · This row as JSON