WaitApp
REMOTE · WAITAPP.ONLINE
Find venues, book tables, rooms and services, buy event tickets and order food delivery.
Available components
Last scanned (7 hours ago)
Scores higher than 48% of remote servers
Reachable. Last reached 25 Oct 2026.
Category E-commerce
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security63
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (cancel_order). See how to fix → View diagnostics → Fail
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability60
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 5326 tokens (~177/item across 30 items; 30 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management15
- Stability check failed: schema churn in the 7 days we've observed: 2 tool removals, 0 breaking changes, 0 auth/transport breaks, 7 additions. See how to fix → Fail
Tool Coverage84
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 51% of tool parameters carry a description.Partial
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 30 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 25 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 12 to 15.
- 23 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 5 to 9.
- 22 Oct 26 0
- Tool “track_order” rewrote its description, which is the text the model reads security
- Tool “cancel_order” rewrote its description, which is the text the model reads security
- Tool “check_booking_status” rewrote its description, which is the text the model reads security
- Tool “list_my_orders” rewrote its description, which is the text the model reads security
- Tool “search_menu” rewrote its description, which is the text the model reads security
- Tool “search_venues” rewrote its description, which is the text the model reads security
- Server version: 1.4.0 → 1.5.0 functional
- “search_menu” added an optional parameter “nearLat” cosmetic
- “search_menu” added an optional parameter “nearLng” cosmetic
- “search_menu” added an optional parameter “savedLocationId” cosmetic
- “search_menu” reworded the description of “perVenue” cosmetic
- 21 Oct 26 −1
- Stability: 0.07 → fail ▼ security
- A breaking change shipped without a version bump: still 1.4.0 ▼ security
- Tool “buy_ticket” was removed ▼ security
- Tool “start_order_payment” was removed ▼ security
- Tool “confirm_delivery_order” rewrote its description, which is the text the model reads security
- Tool “draft_delivery_order” rewrote its description, which is the text the model reads security
- Tool “draft_preorder” rewrote its description, which is the text the model reads security
- Tool “place_delivery_order” rewrote its description, which is the text the model reads security
- Tool “place_preorder” rewrote its description, which is the text the model reads security
- New tool “get_payment_link” functional
- New tool “get_ticket_checkout_link” functional
- “draft_delivery_order” dropped the optional parameter “mobileMoneyNumber” cosmetic
- “draft_preorder” dropped the optional parameter “mobileMoneyNumber” cosmetic
- “place_delivery_order” dropped the optional parameter “mobileMoneyNumber” cosmetic
- “place_preorder” dropped the optional parameter “sendPaymentPrompt” cosmetic
- 20 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.
- 19 Oct 26 0
- Tool “confirm_delivery_order” rewrote its description, which is the text the model reads security
- Tool “list_menu_items” rewrote its description, which is the text the model reads security
- Tool “place_delivery_order” rewrote its description, which is the text the model reads security
- Tool “search_venues” rewrote its description, which is the text the model reads security
- Schema quality: 151 → 176 ▼ functional
- Stability: unverified → 0.03 ▲ functional
- Server version: 1.3.0 → 1.4.0 functional
- New tool “quote_delivery” functional
- New tool “draft_preorder” functional
- New tool “list_preorder_slots” functional
- New tool “place_preorder” functional
- New tool “search_menu” functional
- “search_venues” added an optional parameter “nearLat” cosmetic
- “search_venues” added an optional parameter “nearLng” cosmetic
- “search_venues” added an optional parameter “openNow” cosmetic
- “search_venues” added an optional parameter “savedLocationId” cosmetic
- “search_venues” added an optional parameter “takesDelivery” cosmetic
- “search_venues” added an optional parameter “venueType” cosmetic
- 18 Oct 26 63
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 25 Oct 2026 · Probed https://waitapp.online/api/mcp/
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=waitapp.online | CN=YE2,O=Let's Encrypt,C=US | 23 Sept 2026 | 22 Dec 2026 | ECDSA 256 | ECDSA-SHA384 | 5ae5e9e30f0549e9e653312994e41b45bd8 |
| SANs: *.waitapp.online, waitapp.online | ||||||
| CN=YE2,O=Let's Encrypt,C=US (CA) | CN=Root YE,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | ECDSA 384 | ECDSA-SHA384 | 4df3b15dd6c0784c507cd37b58e6f115 |
| CN=Root YE,O=ISRG,C=US (CA) | CN=ISRG Root X2,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | ECDSA-SHA384 | 872165fc34b6e5fba8add5b3705fb53a |
| CN=ISRG Root X2,O=Internet Security Research Group,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | SHA256-RSA | 6c8f1dc727c7117f7baf853ac980f9cd |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of waitapp.online. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| online. | present | 30961 | 13 | Verified |
| waitapp.online. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
| Header | Value |
|---|---|
| strict-transport-security | max-age=63072000; includeSubDomains; preload |
| content-security-policy | default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://*.googleapis.com https://*.gstatic.com https://apis.google.com https://www.recaptcha.net https://www.google.com https://browser.sentry-cdn.com https://js.sentry-cdn.com https://static.cloudflareinsights.com https://*.firebasedatabase.app https://connect.facebook.net; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src 'self' https://fonts.gstatic.com; worker-src blob: 'self'; connect-src 'self' https://*.googleapis.com https://*.firebaseio.com wss://*.firebaseio.com https://*.firebasedatabase.app wss://*.firebasedatabase.app https://*.firebasestorage.app https://firebasestorage.googleapis.com https://identitytoolkit.googleapis.com https://*.sentry.io https://sentry.io https://www.recaptcha.net https://www.google.com https://lenco.co https://*.lenco.co https://*.mapbox.com https://events.mapbox.com https://www.facebook.com https://*.facebook.com https://*.facebook.net; img-src 'self' data: blob: https://*.googleapis |
| x-content-type-options | nosniff |
| x-frame-options | SAMEORIGIN |
| referrer-policy | strict-origin-when-cross-origin |
| permissions-policy | camera=(self), microphone=(), geolocation=(self), payment=() |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://waitapp.online/api/mcp/ | Verified | 200 | |
| http (plaintext) | http://waitapp.online/api/mcp/ | HTTPS enforced | 301 | https://waitapp.online:443/api/mcp/ |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
book_reservation Request a table reservation ~187
Book a table reservation (not a room/stay — use book_room for that) on behalf of a real guest. The venue's city/countryCode come from search_venues. This is a REQUEST the venue reviews and confirms, not an instant confirmation.
| Name | Type | Req | Description |
|---|---|---|---|
| datetime | string | yes | Date and time of the reservation, ISO format, e.g. 2026-10-18T12:30. With no timezone offset it is read as the venue's local time. Must be in the future, at least the venue's minimum notice (default… |
| guestCount | integer | – | – |
| guestEmail | string | – | – |
| guestName | string | yes | – |
| guestPhone | string | yes | – |
| notes | string | – | – |
| restaurantId | string | yes | – |
No output schema declared.
No examples provided.
book_room Request a room booking ~172
Submit a stay booking request on behalf of a real guest — check_room_availability shows whether the dates are free; the venue's city/countryCode come from search_venues. This is a REQUEST the venue reviews and confirms (same as a guest booking on the website), not an instant confirmation. No payment is collected by this tool. If the venue takes a deposit, it is requested after the venue confirms the room.
| Name | Type | Req | Description |
|---|---|---|---|
| checkIn | string | yes | YYYY-MM-DD |
| checkOut | string | yes | YYYY-MM-DD |
| guestCount | integer | – | – |
| guestEmail | string | – | – |
| guestName | string | yes | – |
| guestPhone | string | yes | – |
| notes | string | – | – |
| restaurantId | string | yes | – |
| roomFacilityTypeId | string | yes | – |
No output schema declared.
No examples provided.
book_service Book a service ~168
Book a spa/massage-style SERVICE slot on behalf of a real guest — check_service_availability shows free slots; the venue's city/countryCode come from search_venues. Unlike book_room this is an INSTANT confirmation (a real slot is atomically reserved). No payment is collected by this tool — the guest pays at the venue.
| Name | Type | Req | Description |
|---|---|---|---|
| guestEmail | string | – | – |
| guestName | string | yes | – |
| guestPhone | string | yes | – |
| notes | string | – | – |
| practitionerId | string | – | Optional: a specific person from check_service_availability's availablePractitioners. Omit for whoever is free. |
| restaurantId | string | yes | – |
| serviceTypeId | string | yes | – |
| startIso | string | yes | ISO datetime the appointment starts |
No output schema declared.
No examples provided.
cancel_order Cancel an order ~210
Cancels the connected person's own order under the same rules as the WaitApp website: free while the venue or a rider has not started, refused once the rider is collecting or has the food. A paid order is flagged for the venue to review a refund; refunds are never instant or automatic. When the connection is set to confirm each decision, the first call returns what would be cancelled and cancels nothing, and a call with confirmed: true cancels. With full control it cancels immediately, at most 3 a day.
| Name | Type | Req | Description |
|---|---|---|---|
| confirmed | boolean | – | True records that the person agreed to cancel this order |
| orderCode | string | – | The order code returned when the order was placed, e.g. WA-K4M2 |
| orderId | string | – | The orderId from list_my_orders |
| reason | string | – | – |
| restaurantId | string | – | The venue the order was placed at (needed with orderCode if the person has the same code at two venues) |
No output schema declared.
No examples provided.
check_booking_status Check booking or order status ~158
Looks up the status of a booking or order by its code: the bookingCode or orderCode returned when it was placed (for example WA-K4M2), for a table, stay, service or delivery request, or a pre-order. It needs the restaurantId it was placed at and the phone number it was made with; no sign-in is needed. Returns the status (pending means the venue has not responded yet) and the key details of the booking or order.
| Name | Type | Req | Description |
|---|---|---|---|
| bookingCode | string | yes | – |
| phone | string | yes | The phone number the booking or order was made with. Ask the person for it; it is checked together with the code. No sign-in is needed. |
| restaurantId | string | yes | – |
No output schema declared.
No examples provided.
check_event_availability Check event availability ~26
Check remaining capacity for a specific event.
| Name | Type | Req | Description |
|---|---|---|---|
| eventId | string | yes | – |
No output schema declared.
No examples provided.
check_room_availability Check room availability ~98
Check which physical rooms/facilities of a given catalog type are actually free for a date range — real availability, not just that the type exists. Use list_room_types first to get roomFacilityTypeId.
| Name | Type | Req | Description |
|---|---|---|---|
| checkIn | string | yes | YYYY-MM-DD |
| checkOut | string | yes | YYYY-MM-DD, must be after checkIn |
| restaurantId | string | yes | – |
| roomFacilityTypeId | string | yes | – |
No output schema declared.
No examples provided.
check_service_availability Check service availability ~98
Check whether a bookable SERVICE (spa, massage, etc. — a list_room_types entry with kind "service") has a free slot at a specific start time. Real time-slot availability, not date-range like rooms. Use list_room_types first to get the service's id.
| Name | Type | Req | Description |
|---|---|---|---|
| restaurantId | string | yes | – |
| serviceTypeId | string | yes | – |
| startIso | string | yes | ISO datetime the appointment would start |
No output schema declared.
No examples provided.
confirm_delivery_order Confirm a drafted delivery order ~109
Places a drafted delivery order exactly as drafted. The draftId comes from draft_delivery_order, or from place_delivery_order when the connection is set to confirm each decision. Retrying with the same draftId never creates a second order. When payment is online, the result includes a payment link to WaitApp's payment page where the guest pays; this tool charges nothing. The venue must accept the order after it is placed; track_order follows it by orderCode.
| Name | Type | Req | Description |
|---|---|---|---|
| draftId | string | yes | – |
No output schema declared.
No examples provided.
delete_saved_location Remove a saved location ~50
Removes one of the connected person's saved delivery locations. Orders already placed to it are not affected. Use the id from list_saved_locations.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The location id from list_saved_locations |
No output schema declared.
No examples provided.
draft_delivery_order Draft a delivery order ~425
Prices a food/drink DELIVERY order from the venue's menu (choices and sides included), finds the delivery address and quotes the delivery fee, without placing anything. Returns the items, delivery fee, total, distance and estimated delivery time, and a draftId that confirm_delivery_order places (place_delivery_order does both steps and follows the connection's permission setting). Requires the connected WaitApp account. Item ids and each item's optionGroups come from list_menu_items; chosen choices go in selectedOptions (group name and choice name), and a group with required=true must be chosen. Give the fullest address available (street or estate, area, city), or a savedLocationId. Fails with a clear message if the venue is closed, doesn't deliver, or the address is outside its delivery area. payment: pay_on_delivery (the guest pays the venue or rider on delivery) or online (the guest pays the meal on WaitApp's payment page after the order is placed; this tool and the assistant send and approve no payment). The delivery fee is always paid to the rider on delivery.
| Name | Type | Req | Description |
|---|---|---|---|
| deliveryAddress | string | – | Full delivery address, e.g. 'Plot 12, Foxtale Court, Kawanda Road, Rhodes Park, Lusaka'. Not needed when savedLocationId is given |
| guestName | string | yes | – |
| guestPhone | string | yes | The recipient's phone; the rider calls it on arrival |
| items | array | yes | – |
| payment | string | – | How the guest pays for the meal. pay_on_delivery: nothing is charged here; they pay the venue/rider on delivery (default where the venue allows it). mobile_money: when the order is confirmed, a payme… |
| restaurantId | string | yes | – |
| savedLocationId | string | – | The id of one of the person's saved locations (see list_saved_locations), used instead of deliveryAddress |
No output schema declared.
No examples provided.
draft_preorder Draft a scheduled pre-order ~332
Drafts a pre-order for a time slot, for PICKUP (default) or courier DELIVERY (method: delivery, with deliveryAddress or savedLocationId; the slot must offer delivery and the venue must deliver, and the delivery fee is paid to the rider on delivery). Nothing is placed or reserved: it checks the slot against the items (lead time, capacity, items sold that day), prices the order with choices, and returns the summary: slot and ready time, items, total, what is due now and what on collection. The slot comes from list_preorder_slots (slotInstanceId). Returns a draftId for place_preorder. Requires the connected WaitApp account. payment: on_collection (default; the guest pays the venue when collecting) or online (the amount due now is paid by the guest on WaitApp's payment page after the order is placed; the assistant sends and approves no payment); some venues require online. guestPhone is required: the guest and venue use it to find the order. One slot per order.
| Name | Type | Req | Description |
|---|---|---|---|
| deliveryAddress | string | – | For delivery: the full address. Not needed when savedLocationId is given |
| guestName | string | yes | Who collects, or receives, the order |
| guestPhone | string | yes | – |
| items | array | yes | – |
| method | string | – | – |
| payment | string | – | – |
| restaurantId | string | yes | – |
| savedLocationId | string | – | For delivery: one of the person's saved locations (see list_saved_locations) |
| slotInstanceId | string | yes | From list_preorder_slots |
No output schema declared.
No examples provided.
get_connection_permissions Check what this connection may do ~72
What the person allowed this connection to do on their behalf: whether delivery orders, cancellations and ratings go through immediately (full control, within the limits they set) or are returned for their agreement first (confirm each decision), plus the limits and what is left today. Also says whether a WaitApp account is connected.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_payment_link Get the payment link for an order ~175
Returns the link to WaitApp's payment page for one of the connected person's own orders that still has an amount to pay now (an order placed with online payment, or a pre-order with a deposit). The person opens the link, sees the exact charge, and pays it themselves; this tool charges nothing and sends no payment prompt. Find the order by orderCode (with restaurantId if the same code exists at two venues) or by orderId from list_my_orders.
| Name | Type | Req | Description |
|---|---|---|---|
| orderCode | string | – | The order code returned when the order was placed, e.g. WA-K4M2 |
| orderId | string | – | The orderId from list_my_orders |
| restaurantId | string | – | The venue the order was placed at (needed with orderCode if the person has the same code at two venues) |
No output schema declared.
No examples provided.
get_ticket_checkout_link Get the ticket checkout link for an event ~108
Returns the link to WaitApp's ticket checkout page for an event, with the chosen ticket type and quantity filled in. The guest opens it, sees the exact price, and buys the tickets themselves; this tool charges nothing and sends no payment prompt. check_event_availability shows what is left and the ticket types (tierId).
| Name | Type | Req | Description |
|---|---|---|---|
| eventId | string | yes | – |
| quantity | integer | – | – |
| tierId | string | – | The ticket type, from check_event_availability |
No output schema declared.
No examples provided.
list_events List events ~48
List upcoming, published events (ticketed or free) for a venue, or across all venues if restaurantId is omitted.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | – |
| restaurantId | string | – | – |
No output schema declared.
No examples provided.
list_menu_items List menu items ~217
List a restaurant's menu items. Call with just restaurantId first to see the category names (and counts), then filter with category and/or query rather than reading the whole menu. Items with choices (sides, sizes, add-ons) list them under optionGroups: when ordering, pass the chosen group and choice names as selectedOptions; a group with required=true must be chosen. Unavailable items are left out. Items marked soldAheadOnly are sold only for a scheduled date (a pre-order with a time slot): they can't be ordered for immediate delivery; use list_preorder_slots to pick a time, then draft_preorder and place_preorder (pickup). Paginate with limit and offset.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | – | Only items in this category (case-insensitive), e.g. 'drinks' |
| limit | integer | – | – |
| offset | integer | – | – |
| query | string | – | Only items whose name or description contains this text, e.g. 'burger' |
| restaurantId | string | yes | – |
No output schema declared.
No examples provided.
list_my_orders List my orders ~237
The connected person's own order history at WaitApp venues, newest first. Each order has its venue, code, status, total, type, when it was placed and what was ordered: every item with its quantity, price and chosen choices. Items carry menuItemId and selectedOptions in the form draft_delivery_order accepts. Deliveries also show the address, delivery fee and stage. A kitchen and a bar order placed together are one entry. Filter by venue, status, text (an item or venue name) or date, and page back with nextBefore. Only this person's own orders are returned.
| Name | Type | Req | Description |
|---|---|---|---|
| before | string | – | Only orders placed before this time. Pass nextBefore from the previous page |
| limit | integer | – | – |
| query | string | – | An item name or venue name, e.g. burger or Social |
| restaurantId | string | – | Only orders at this venue |
| since | string | – | Only orders placed on or after this date, e.g. 2026-09-01 |
| status | string | – | e.g. pending, accepted, preparing, ready, served, cancelled |
No output schema declared.
No examples provided.
list_preorder_slots List pre-order time slots ~252
For venues that take scheduled pre-orders (bakeries, caterers; list_menu_items marks their items soldAheadOnly): the dates and times an order can be booked for. Pass the items the guest wants (menuItemId and quantity) so each slot is checked against them: lead time (a cake may need days of notice), items not sold on some days, per-slot limits and capacity. First states the venue's schedule in plain words (schedule: e.g. weekdays, order by 08:00, ready at 11:00; weekends only; every day), so you can describe the pattern to the guest, then lists bookable slots soonest first, each with slotInstanceId, when it will be ready (readyAtLocal), the last moment to order (orderByLocal), places left, and payment terms where a deposit or full payment is required; plus unavailable slots with the reason. method is pickup or delivery.
| Name | Type | Req | Description |
|---|---|---|---|
| items | array | – | The items to book; leave empty to just see the venue's slots |
| method | string | – | How the guest will receive it; slots that don't offer it are marked unavailable |
| restaurantId | string | yes | – |
No output schema declared.
No examples provided.
list_room_types List rooms and services ~46
List a venue's bookable room/facility catalog (only entries visible to customers). Use search_venues first to find the restaurantId.
| Name | Type | Req | Description |
|---|---|---|---|
| restaurantId | string | yes | – |
No output schema declared.
No examples provided.
list_saved_locations List my saved locations ~68
The connected person's saved delivery locations, such as Home and Work: label, address, notes for the rider, and which one is their default. Pass a location's id as savedLocationId to draft_delivery_order or place_delivery_order instead of typing an address. Only ever shows this person's own.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
place_delivery_order Place a delivery order ~277
Orders food for delivery in one call: prices the order, quotes the delivery fee, then places it or returns a draft depending on the permission chosen when connecting (get_connection_permissions shows it). With full control it places the order within the spending limits set; with confirm-each-decision it places nothing and returns a draft summary with a draftId that confirm_delivery_order places. Same inputs and rules as draft_delivery_order. idempotencyKey is required: the same key returns the same order instead of creating a second one. When payment is online, the result includes a payment link to WaitApp's payment page where the guest sees the exact charge and pays it; this tool charges nothing. The venue must accept the order after it is placed; track_order follows it by orderCode.
| Name | Type | Req | Description |
|---|---|---|---|
| deliveryAddress | string | – | Full delivery address. Not needed when savedLocationId is given |
| guestName | string | yes | – |
| guestPhone | string | yes | – |
| idempotencyKey | string | yes | A unique value you generate for this order; reuse it on any retry |
| items | array | yes | – |
| payment | string | – | – |
| restaurantId | string | yes | – |
| savedLocationId | string | – | The id of one of the person's saved locations (see list_saved_locations), used instead of deliveryAddress |
No output schema declared.
No examples provided.
place_preorder Place a drafted pre-order ~132
Places a pre-order drafted with draft_preorder, exactly as drafted: holds the time slot and creates the order. When an amount is due now, the result includes a payment link to WaitApp's payment page where the guest sees the exact charge and pays it themselves; this tool charges nothing. The held slot is released and the order cancelled if the amount due now is not paid in time. If anything fails part-way the slot is released and nothing is charged. Retrying with the same draftId never creates a second order. track_order follows the order by orderCode.
| Name | Type | Req | Description |
|---|---|---|---|
| draftId | string | yes | – |
No output schema declared.
No examples provided.
quote_delivery Quote delivery to an address ~132
The delivery fee, distance and estimated delivery time from one venue to an address or a saved location, with no cart: a quick way to compare venues before building an order. The figure is the same one a draft order then shows. Also says whether the address is inside the venue's delivery area and whether the venue is open now. Needs a connected WaitApp account.
| Name | Type | Req | Description |
|---|---|---|---|
| deliveryAddress | string | – | Full delivery address. Not needed when savedLocationId is given |
| restaurantId | string | yes | – |
| savedLocationId | string | – | The id of one of the person's saved locations (list_saved_locations) |
No output schema declared.
No examples provided.
rate_order Rate a delivered order ~220
Leave a rating for the connected person's own DELIVERED order: food quality, delivery speed and packaging, each 1 to 5, an optional short comment, and optionally a rating for the rider. One rating per order; a repeat returns the existing one. The scores are the person's own. If the connection is set to confirm each decision, the first call returns the scores and submits nothing until a call with confirmed: true.
| Name | Type | Req | Description |
|---|---|---|---|
| comment | string | – | – |
| confirmed | boolean | – | True records that the person agreed to submit these scores |
| deliverySpeed | integer | yes | – |
| food | integer | yes | – |
| orderCode | string | – | The order code returned when the order was placed, e.g. WA-K4M2 |
| orderId | string | – | The orderId from list_my_orders |
| packaging | integer | yes | – |
| restaurantId | string | – | The venue the order was placed at (needed with orderCode if the person has the same code at two venues) |
| riderRating | integer | – | – |
No output schema declared.
No examples provided.
save_location Save a delivery location ~135
Saves a delivery location to the connected person's WaitApp account under a label such as Home or Work, so later orders can use it. Saving a label the person already has updates that location. Up to 10 can be saved. Notes are for the rider, for example a gate code, floor or landmark.
| Name | Type | Req | Description |
|---|---|---|---|
| address | string | yes | Full address: street or estate, area, city |
| label | string | yes | A short name, e.g. Home, Work, Mum's place |
| makeDefault | boolean | – | Make this the person's default location |
| notes | string | – | Gate code, floor, landmark |
No output schema declared.
No examples provided.
search_menu Search menus across venues ~428
Finds which venues sell a dish or cuisine, such as pizza or biryani, by searching the menus of live venues in a city or country (never event organisers). Items filed under a category with the searched name (a Platters section for platter) come first, then dish names and descriptions; close equivalents are searched too (platter also finds basket and sharing plate) and listed in alsoSearched. Returns, for each venue with a match, the venue (whether it delivers, whether it is open now, and its distance when a position is known) and up to perVenue matching items with price and whether they have required choices; matchingItems and moreMatches say how many more exist. When a position is given, or the connected person has a default saved location, venues come back nearest first. Use list_menu_items with the venue id for the full menu and each item's options. Matches marked soldAheadOnly are sold only for a scheduled date (a pre-order with a time slot). Uses a search index, so it covers every live venue quickly. A city or countryCode narrows it and is recommended, because dish names are the same everywhere.
| Name | Type | Req | Description |
|---|---|---|---|
| city | string | – | City, case-insensitive exact match |
| countryCode | string | – | ISO 3166-1 alpha-2, e.g. ZM |
| maxVenues | integer | – | – |
| nearLat | number | – | With nearLng: venues come back nearest-first from this point |
| nearLng | number | – | – |
| openNow | boolean | – | true: only venues open right now |
| perVenue | integer | – | Matching items shown per venue; each venue says how many more matched |
| query | string | yes | A dish or cuisine, e.g. pizza, biryani, burger. Every word must appear in the item's name, category or description |
| savedLocationId | string | – | A saved location of the connected person (list_saved_locations): venues come back nearest-first from it |
| takesDelivery | boolean | – | true: only venues that deliver |
No output schema declared.
No examples provided.
search_venues Search venues ~437
Search WaitApp venues (restaurants, hotels, lodges) by name, city and/or country, and filter them: takesDelivery, venueType (restaurant, hotel, event_organizer, ...) and openNow. Empty query lists venues. Name matching is forgiving (case, '&' vs 'and', small typos); if nothing matches closely, the closest names come back as didYouMean. Each venue says what it supports (delivery, table reservations, stays), whether it is open now and on what basis (openNowBasis: the venue's own switch, its opening hours, or no hours set so assumed open), when it next opens if closed (opensAt), and its hours in words (hoursSummary) and per day (openingHours). With a saved location (savedLocationId) or coordinates (nearLat and nearLng), each venue carries its straight-line distance and venues come back nearest first; with neither, the connected person's default saved location is used when they have one (sortedBy says so). For the delivery fee to an address use quote_delivery. Each venue includes its city and countryCode: venue names repeat across countries. To find who sells a dish, use search_menu.
| Name | Type | Req | Description |
|---|---|---|---|
| city | string | – | City to filter by, case-insensitive exact match |
| countryCode | string | – | ISO 3166-1 alpha-2, e.g. ZM for Zambia — filter to a single country |
| limit | integer | – | – |
| nearLat | number | – | With nearLng: adds distance from this point |
| nearLng | number | – | – |
| openNow | boolean | – | true: only venues open right now |
| query | string | – | Name to search for. Forgiving: ignores case and punctuation, treats '&' as 'and', tolerates small typos |
| savedLocationId | string | – | A saved location of the connected person (list_saved_locations): adds distance from it |
| takesDelivery | boolean | – | true: only venues that deliver |
| venueType | string | – | e.g. restaurant, hotel, event_organizer |
No output schema declared.
No examples provided.
track_order Track an order ~167
How an order is going, for the connected person's own order: for a delivery, the stage, minutes remaining, how far the rider is from the drop-off (km) and the rider's first name; for a scheduled pre-order, its time slot, ready time (in the venue's local time) and what is due in advance; for other orders, the status. The rider's phone number and exact location are never returned.
| Name | Type | Req | Description |
|---|---|---|---|
| orderCode | string | – | The order code returned when the order was placed, e.g. WA-K4M2 |
| orderId | string | – | The orderId from list_my_orders |
| restaurantId | string | – | The venue the order was placed at (needed with orderCode if the person has the same code at two venues) |
No output schema declared.
No examples provided.
view_photos View photos ~142
OPTIONAL. Fetch a small version of the actual photo(s) of a menu item, room/facility type, event or venue so you can look at them and describe them to the guest. Meant for when the guest asks what something looks like. To just show a picture, the imageUrl / photos / coverImageUrl links in the other tools are enough. Returns up to 3 images (resized small) or a note that none exist. Use the id from list_menu_items, list_room_types, list_events or search_venues.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | – |
| kind | string | yes | – |
| maxPhotos | integer | – | – |
No output schema declared.
No examples provided.
How do I install the WaitApp MCP server?
WaitApp is a hosted endpoint at https://waitapp.online/api/mcp/, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · waitapp.online
claude mcp add --transport http online-waitapp-waitapp 'https://waitapp.online/api/mcp/'
What is the WaitApp MCP server?
WaitApp is an MCP server listed in the public MCP registry as online.waitapp/waitapp. Find venues, book tables, rooms and services, buy event tickets and order food delivery. This page covers its hosted endpoint (https://waitapp.online/api/mcp/).
Is the WaitApp MCP server safe to use?
WaitApp scores 65 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the WaitApp MCP server expose?
WaitApp exposes 30 tools: search_venues, search_menu, quote_delivery, list_room_types, check_room_availability, and 25 more. Their descriptions and schemas cost roughly 5,326 tokens of context every time the server is loaded.
Does the WaitApp MCP server require authentication?
No. We connected to WaitApp without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the WaitApp MCP server still maintained?
WaitApp is still listed as active in the MCP registry. We last reached this channel on 25 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.