Waitwhile MCP by usefulapi

Read Waitwhile visits, bookings, customers, services and analytics; add, update and cancel visits.

Sollte ich dies verwenden

Qualität und Sicherheit

A
Qualität der Beschreibung
100%
Vollständigkeit des Schemas
93%
Qualität der Benennung
99%
Risiko der Vergiftung
100%
Übereinstimmung der Berechtigungen
100%
Einhaltung des Protokolls
100%

Befunde (2)

  • LOWTool 'waitwhile_first_available_slots' name length outside 3-30 rangein waitwhile_first_available_slots
  • LOWTool 'waitwhile_resources_availability' name length outside 3-30 rangein waitwhile_resources_availability

Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.

Kontextkosten

~7,804Tokens (Tool-Definitionen)
~2.0 KBTypische Antwortgröße
Erhebliche Auswirkung auf die Aufmerksamkeit (6.10% von 128k Kontext)

Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.

Installieren

Installation mit einem Klick

Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:

{
  "mcpServers": {
    "waitwhile": {
      "url": "https://waitwhile.usefulapi.io/mcp"
    }
  }
}

Remote-Endpunkte

https://waitwhile.usefulapi.io/mcpstreamable-http

Was es kann

Tool-Inventar

Tools (29)

🟢 Nur lesen🟡 Schreiben🔴 Löschen⚪ Unbekannt
🟢waitwhile_list_locations(external_id, country_code, desc, limit, start_after)

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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "external_id": {
      "description": "Only the location with this external id.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "country_code": {
      "description": "Two-letter country code.",
      "type": "string",
      "minLength": 2,
      "maxLength": 2
    },
    "desc": {
      "description": "Newest first.",
      "type": "boolean"
    },
    "limit": {
      "description": "Results per page, 1-100 (default 20).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "start_after": {
      "description": "Cursor: pass the previous reply's next_start_after to get the next page.",
      "type": "string",
      "minLength": 1,
      "maxLength": 500
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢waitwhile_get_location(location)

One location by id or short name (the part of its public Waitwhile URL). GET /locations/{shortNameOrId}.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "location": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Location id or short name."
    }
  },
  "required": [
    "location"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢waitwhile_list_location_status(limit, start_after)

Live status of every location: open/closed, number of people waiting and being served, current estimated wait time, and booking counters. GET /location-status.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "limit": {
      "description": "Results per page, 1-100 (default 20).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "start_after": {
      "description": "Cursor: pass the previous reply's next_start_after to get the next page.",
      "type": "string",
      "minLength": 1,
      "maxLength": 500
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢waitwhile_get_location_status(location_id)

Live status of one location: open/closed, waiting and serving counts, estimated wait. GET /location-status/{locationId}.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "location_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Location id."
    }
  },
  "required": [
    "location_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢waitwhile_list_visits(location_id, state, tag, customer_id, external_customer_id, ...)

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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "location_id": {
      "description": "Only visits at this location.",
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "state": {
      "type": "string",
      "enum": [
        "PENDING",
        "DRAFT",
        "BOOKED",
        "WAITING",
        "SERVING",
        "COMPLETE"
      ]
    },
    "tag": {
      "type": "string",
      "enum": [
        "NO-SHOW",
        "CANCELLED",
        "REMOVED",
        "ALERTED",
        "ARRIVED",
        "DELAYED",
        "CONFIRMED",
        "EXPIRED",
        "FLAGGED",
        "IMPORTED",
        "PRIORITIZED",
        "CAPACITY",
        "REJECTED",
        "QUICK"
      ]
    },
    "customer_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "external_customer_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "service_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "resource_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "from_booking_date": {
      "description": "Bookings starting at or after this local date-time, YYYY-MM-DDThh:mm.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}$"
    },
    "to_booking_date": {
      "description": "Bookings starting at or before this local date-time, YYYY-MM-DDThh:mm.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}$"
    },
    "from_date": {
      "description": "Visits created from this date-time (ISO 8601 or epoch ms).",
      "type": "string"
    },
    "to_date": {
      "description": "Visits created up to this date-time (ISO 8601 or epoch ms).",
      "type": "string"
    },
    "desc": {
      "description": "Newest first.",
      "type": "boolean"
    },
    "limit": {
      "description": "Results per page, 1-100 (default 20).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "start_after": {
      "description": "Cursor: pass the previous reply's next_start_after to get the next page.",
      "type": "string",
      "minLength": 1,
      "maxLength": 500
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢waitwhile_search_visits(q, location_id, state, tag, exclude_tags, ...)

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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Prefix match on name, phone, e-mail or customer id."
    },
    "location_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "state": {
      "type": "string",
      "enum": [
        "PENDING",
        "DRAFT",
        "BOOKED",
        "WAITING",
        "SERVING",
        "COMPLETE"
      ]
    },
    "tag": {
      "type": "string",
      "enum": [
        "NO-SHOW",
        "CANCELLED",
        "REMOVED",
        "ALERTED",
        "ARRIVED",
        "DELAYED",
        "CONFIRMED",
        "EXPIRED",
        "FLAGGED",
        "IMPORTED",
        "PRIORITIZED",
        "CAPACITY",
        "REJECTED",
        "QUICK"
      ]
    },
    "exclude_tags": {
      "description": "Leave out visits carrying any of these tags.",
      "maxItems": 10,
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "NO-SHOW",
          "CANCELLED",
          "REMOVED",
          "ALERTED",
          "ARRIVED",
          "DELAYED",
          "CONFIRMED",
          "EXPIRED",
          "FLAGGED",
          "IMPORTED",
          "PRIORITIZED",
          "CAPACITY",
          "REJECTED",
          "QUICK"
        ]
      }
    },
    "limit": {
      "description": "Results per page, 1-100 (default 20).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "minimum": 1,
      "maximum": 1000000
    }
  },
  "required": [
    "q"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢waitwhile_get_visit(visit_id)

One visit (waitlist entry or booking) by id: customer, state, tags, services, resources, party size, position, estimated wait and all timestamps. GET /visits/{visitId}.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "visit_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Visit id."
    }
  },
  "required": [
    "visit_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢waitwhile_list_booking_slots(location_id, from_date, to_date, service_ids, resource_ids, ...)

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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "location_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Location id."
    },
    "from_date": {
      "description": "Local start, YYYY-MM-DDThh:mm.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}$"
    },
    "to_date": {
      "description": "Local end, YYYY-MM-DDThh:mm.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}$"
    },
    "service_ids": {
      "description": "Only slots for these services.",
      "minItems": 1,
      "maxItems": 30,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 100
      }
    },
    "resource_ids": {
      "description": "Only slots for these resources.",
      "minItems": 1,
      "maxItems": 30,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 100
      }
    },
    "service_duration": {
      "description": "Service duration in seconds, to size the slots.",
      "type": "integer",
      "minimum": 60,
      "maximum": 86400
    },
    "show_min_spots": {
      "description": "Only slots with at least this many free spots.",
      "type": "integer",
      "minimum": 1,
      "maximum": 1000
    }
  },
  "required": [
    "location_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢waitwhile_first_available_slots(location_id, from_date, to_date, max_num_slots, party_size, ...)

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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "location_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Location id."
    },
    "from_date": {
      "description": "Local start, YYYY-MM-DDThh:mm.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}$"
    },
    "to_date": {
      "description": "Local end, YYYY-MM-DDThh:mm.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}$"
    },
    "max_num_slots": {
      "description": "Max number of slots to return.",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "party_size": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "service_ids": {
      "minItems": 1,
      "maxItems": 30,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 100
      }
    },
    "resource_ids": {
      "minItems": 1,
      "maxItems": 30,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 100
      }
    },
    "service_duration": {
      "description": "Service duration in seconds.",
      "type": "integer",
      "minimum": 60,
      "maximum": 86400
    }
  },
  "required": [
    "location_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢waitwhile_list_customers(location_id, external_id, from_date, to_date, desc, ...)

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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "location_id": {
      "description": "Only customers with visits at this location.",
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "external_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "from_date": {
      "type": "string",
      "description": "ISO 8601 date or date-time (e.g. 2026-10-01T00:00:00Z), or epoch milliseconds."
    },
    "to_date": {
      "type": "string",
      "description": "ISO 8601 date or date-time (e.g. 2026-10-01T00:00:00Z), or epoch milliseconds."
    },
    "desc": {
      "description": "Newest first.",
      "type": "boolean"
    },
    "limit": {
      "description": "Results per page, 1-100 (default 20).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "start_after": {
      "description": "Cursor: pass the previous reply's next_start_after to get the next page.",
      "type": "string",
      "minLength": 1,
      "maxLength": 500
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢waitwhile_search_customers(q, location_id, state, tag, limit, ...)

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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Prefix match on name, phone, e-mail or customer id."
    },
    "location_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "state": {
      "type": "string",
      "enum": [
        "PENDING",
        "DRAFT",
        "BOOKED",
        "WAITING",
        "SERVING",
        "COMPLETE"
      ]
    },
    "tag": {
      "type": "string",
      "enum": [
        "NO-SHOW",
        "CANCELLED",
        "REMOVED",
        "ALERTED",
        "ARRIVED",
        "DELAYED",
        "CONFIRMED",
        "EXPIRED",
        "FLAGGED",
        "IMPORTED",
        "PRIORITIZED",
        "CAPACITY",
        "REJECTED",
        "QUICK"
      ]
    },
    "limit": {
      "description": "Results per page, 1-100 (default 20).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "minimum": 1,
      "maximum": 1000000
    }
  },
  "required": [
    "q"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢waitwhile_get_customer(customer_id)

One customer by id: contact details, tags, per-location state and last visit. Contains personal data. GET /customers/{customerId}.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "customer_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Customer id."
    }
  },
  "required": [
    "customer_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢waitwhile_list_customer_notes(customer_id)

The staff notes recorded on a customer (content, author, visit and location, timestamps). GET /customers/{customerId}/notes.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "customer_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Customer id."
    }
  },
  "required": [
    "customer_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢waitwhile_list_services(location_id, q, external_id, limit, start_after, ...)

List services (what customers book or queue for): name, duration, price, locations, resources and category structure. GET /services.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "location_id": {
      "description": "Only items offered at these locations.",
      "minItems": 1,
      "maxItems": 30,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 100
      }
    },
    "q": {
      "description": "Prefix match on name or display name.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "external_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "limit": {
      "description": "Results per page, 1-100 (default 20).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "start_after": {
      "description": "Cursor: pass the previous reply's next_start_after to get the next page.",
      "type": "string",
      "minLength": 1,
      "maxLength": 500
    },
    "is_category": {
      "description": "Only service categories (true) or only services (false).",
      "type": "boolean"
    },
    "parent_id": {
      "description": "Only children of this category.",
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢waitwhile_get_service(service_id)

One service by id. GET /services/{serviceId}.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "service_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Service id."
    }
  },
  "required": [
    "service_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢waitwhile_list_resources(location_id, q, external_id, limit, start_after, ...)

List resources — the people, rooms, tables or equipment that serve customers: name, locations, services, availability flag and category structure. GET /resources.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "location_id": {
      "description": "Only items offered at these locations.",
      "minItems": 1,
      "maxItems": 30,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 100
      }
    },
    "q": {
      "description": "Prefix match on name or display name.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "external_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "limit": {
      "description": "Results per page, 1-100 (default 20).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "start_after": {
      "description": "Cursor: pass the previous reply's next_start_after to get the next page.",
      "type": "string",
      "minLength": 1,
      "maxLength": 500
    },
    "is_category": {
      "description": "Only resource categories (true) or only resources (false).",
      "type": "boolean"
    },
    "parent_id": {
      "description": "Only children of this category.",
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "email": {
      "description": "Only the resource with this e-mail.",
      "type": "string",
      "minLength": 3,
      "maxLength": 200
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢waitwhile_get_resource(resource_id)

One resource by id. GET /resources/{resourceId}.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "resource_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Resource id."
    }
  },
  "required": [
    "resource_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢waitwhile_resources_availability(location_id, date, resource_ids)

Working hours/availability of a location's resources on a date (e.g. who is working today). GET /resources/availability.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "location_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Location id."
    },
    "date": {
      "description": "Date (yyyy-mm-dd) or ISO 8601 date-time; default today.",
      "type": "string"
    },
    "resource_ids": {
      "description": "Only these resources.",
      "minItems": 1,
      "maxItems": 30,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 100
      }
    }
  },
  "required": [
    "location_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢waitwhile_list_data_fields(location_id, q, external_id, limit, start_after)

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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "location_id": {
      "description": "Only items offered at these locations.",
      "minItems": 1,
      "maxItems": 30,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 100
      }
    },
    "q": {
      "description": "Prefix match on name or display name.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "external_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "limit": {
      "description": "Results per page, 1-100 (default 20).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "start_after": {
      "description": "Cursor: pass the previous reply's next_start_after to get the next page.",
      "type": "string",
      "minLength": 1,
      "maxLength": 500
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢waitwhile_get_data_field(data_field_id)

One data field by id. GET /data-fields/{dataFieldId}.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "data_field_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Data field id."
    }
  },
  "required": [
    "data_field_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢waitwhile_list_users(location_id, role, q, external_id, limit, ...)

List the staff users of the account: name, e-mail, roles, locations. Password data and tokens are never returned. GET /users.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "location_id": {
      "description": "Only users with access to these locations.",
      "minItems": 1,
      "maxItems": 30,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 100
      }
    },
    "role": {
      "description": "Only users with these roles.",
      "minItems": 1,
      "maxItems": 10,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 50
      }
    },
    "q": {
      "description": "Prefix match on name or e-mail.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "external_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "limit": {
      "description": "Results per page, 1-100 (default 20).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "start_after": {
      "description": "Cursor: pass the previous reply's next_start_after to get the next page.",
      "type": "string",
      "minLength": 1,
      "maxLength": 500
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢waitwhile_list_messages(location_id, visit_id, customer_id, external_customer_id, state, ...)

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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "location_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "visit_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "customer_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "external_customer_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "state": {
      "type": "string",
      "enum": [
        "PENDING",
        "BLOCKED",
        "FAILED",
        "DELIVERED",
        "UNCONFIRMED",
        "RECEIVED"
      ]
    },
    "from_date": {
      "type": "string",
      "description": "ISO 8601 date or date-time (e.g. 2026-10-01T00:00:00Z), or epoch milliseconds."
    },
    "to_date": {
      "type": "string",
      "description": "ISO 8601 date or date-time (e.g. 2026-10-01T00:00:00Z), or epoch milliseconds."
    },
    "desc": {
      "description": "Newest first.",
      "type": "boolean"
    },
    "limit": {
      "description": "Results per page, 1-100 (default 20).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "start_after": {
      "description": "Cursor: pass the previous reply's next_start_after to get the next page.",
      "type": "string",
      "minLength": 1,
      "maxLength": 500
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢waitwhile_get_message(message_id)

One message by id. Contains personal data. GET /messages/{messageId}.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "message_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Message id."
    }
  },
  "required": [
    "message_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢waitwhile_visit_analytics(location_id, from_date, to_date)

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

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "location_id": {
      "description": "Only this location (default: all).",
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "from_date": {
      "description": "Period start (ISO 8601 or epoch ms).",
      "type": "string"
    },
    "to_date": {
      "description": "Period end (ISO 8601 or epoch ms).",
      "type": "string"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢waitwhile_list_audit_entries(type, event, entity_id, location_id, from_date, ...)

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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "type": {
      "type": "string",
      "enum": [
        "ACCOUNT",
        "CUSTOMER",
        "DATA-FIELD",
        "MESSAGE",
        "LOCATION",
        "RESOURCE",
        "SERVICE",
        "USER",
        "VISIT"
      ]
    },
    "event": {
      "description": "Audit event type.",
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "entity_id": {
      "description": "Id of the changed object.",
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "location_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "from_date": {
      "type": "string",
      "description": "ISO 8601 date or date-time (e.g. 2026-10-01 or 2026-10-01T00:00:00Z)."
    },
    "to_date": {
      "type": "string",
      "description": "ISO 8601 date or date-time (e.g. 2026-10-01 or 2026-10-01T00:00:00Z)."
    },
    "desc": {
      "description": "Newest first.",
      "type": "boolean"
    },
    "limit": {
      "description": "Results per page, 1-100 (default 20).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "start_after": {
      "description": "Cursor: pass the previous reply's next_start_after to get the next page.",
      "type": "string",
      "minLength": 1,
      "maxLength": 500
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴waitwhile_create_visit(location_id, name, first_name, last_name, phone, ...)

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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "location_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Location id (see waitwhile_list_locations)."
    },
    "name": {
      "description": "Customer name.",
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "first_name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "last_name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "phone": {
      "description": "Customer phone, E.164 (+16005551234).",
      "type": "string",
      "pattern": "^\\+[1-9]\\d{6,14}$"
    },
    "email": {
      "description": "Customer e-mail.",
      "type": "string",
      "maxLength": 100,
      "format": "email",
      "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,}$"
    },
    "party_size": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "date": {
      "description": "Booking start in the location's local time, YYYY-MM-DDThh:mm. Omit to join the waitlist.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}$"
    },
    "duration": {
      "description": "Booking duration in seconds.",
      "type": "integer",
      "minimum": 0,
      "maximum": 86400
    },
    "service_ids": {
      "description": "Services the customer wants.",
      "minItems": 1,
      "maxItems": 30,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 100
      }
    },
    "resource_ids": {
      "description": "Preferred resources (staff, rooms).",
      "minItems": 1,
      "maxItems": 30,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 100
      }
    },
    "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"
    }
  },
  "required": [
    "location_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴waitwhile_update_visit(visit_id, state, add_tags, remove_tags, date, ...)

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

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "visit_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Visit id."
    },
    "state": {
      "description": "New state.",
      "type": "string",
      "enum": [
        "PENDING",
        "DRAFT",
        "BOOKED",
        "WAITING",
        "SERVING",
        "COMPLETE"
      ]
    },
    "add_tags": {
      "description": "Tags to add.",
      "minItems": 1,
      "maxItems": 10,
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "NO-SHOW",
          "CANCELLED",
          "REMOVED",
          "ALERTED",
          "ARRIVED",
          "DELAYED",
          "CONFIRMED",
          "EXPIRED",
          "FLAGGED",
          "IMPORTED",
          "PRIORITIZED",
          "CAPACITY",
          "REJECTED",
          "QUICK"
        ]
      }
    },
    "remove_tags": {
      "description": "Tags to remove.",
      "minItems": 1,
      "maxItems": 10,
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "NO-SHOW",
          "CANCELLED",
          "REMOVED",
          "ALERTED",
          "ARRIVED",
          "DELAYED",
          "CONFIRMED",
          "EXPIRED",
          "FLAGGED",
          "IMPORTED",
          "PRIORITIZED",
          "CAPACITY",
          "REJECTED",
          "QUICK"
        ]
      }
    },
    "date": {
      "description": "New booking start, local time YYYY-MM-DDThh:mm.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}$"
    },
    "duration": {
      "description": "New booking duration in seconds.",
      "type": "integer",
      "minimum": 0,
      "maximum": 86400
    },
    "party_size": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "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"
    }
  },
  "required": [
    "visit_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴waitwhile_cancel_visit(visit_id, send_notifications)

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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "visit_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Visit id."
    },
    "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"
    }
  },
  "required": [
    "visit_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡waitwhile_add_customer_note(customer_id, content, location_id, visit_id)

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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "customer_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Customer id."
    },
    "content": {
      "type": "string",
      "minLength": 1,
      "maxLength": 1000,
      "description": "The note text."
    },
    "location_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "visit_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    }
  },
  "required": [
    "customer_id",
    "content"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Community

Diesen Server bewerten

Nachweis

Aktuelle Beobachtungen

verifiziertVersion nicht aufgezeichnet29 Tools