{"server":"com.thmenu/thmenu","count":10,"changes":[{"tool":"place_order","kind":"changed","observed_at":"2026-10-15T08:38:37.907Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"3164cbbffdb674f8287cf667a15ff8b5","after_hash":"ce37fdca68ac69fb5887e407c0590643"},{"tool":"search_restaurants","kind":"changed","observed_at":"2026-10-15T08:38:37.907Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"c39a84b17c5e81f50c49161719747e0c","after_hash":"21fbe2224835ea363de57da399ae21d2"},{"tool":"search_restaurants","kind":"changed","observed_at":"2026-10-13T22:03:29.880Z","fields":["description","inputSchema"],"description_before":"Search the public directory (opt-in venues only) by location, opening status, cuisine, dietary options, declared attributes, ordering channel, declared price level and menu language. Neutral ranking (AI-K6): distance in 0.5 km bands when `near` is given → availability (open now first; unknown hours before closed) → profile freshness (owner-verified within 90 days first) → name. Payment to Thmenu never affects order. Cuisine, dietary, price level and other attributes are owner declarations, not verified facts; venues without a declaration are excluded only when an attribute or price filter is used, and venues without coordinates only when `near` is used. Returns slug, name, city, country, distance_km, is_open_now (serve-time, in the venue's own timezone; null when hours are unknown), channels (order · reservation · pickup · delivery), declared attributes, freshness and the menu URL. Paginated.","description_after":"Search the public directory (opt-in venues only) by location, opening status, cuisine, dietary options, declared attributes, ordering channel, declared price level and menu language — and, right now, a free table or an open waitlist (the restaurant graph's channel states). Neutral ranking (AI-K6): distance in 0.5 km bands when `near` is given → availability (open now first; unknown hours before closed; a venue in holiday mode counts as closed) → profile freshness (owner-verified within 90 days first) → name. Payment to Thmenu never affects order. Cuisine, dietary, price level and other attributes are owner declarations, not verified facts; venues without a declaration are excluded only when an attribute or price filter is used, and venues without coordinates only when `near` is used. Returns slug, name, city, country, distance_km, is_open_now (serve-time, in the venue's own timezone; null when hours are unknown; false while the venue is in holiday mode), channels (order · reservation · pickup · delivery), declared attributes, freshness and the menu URL. Paginated.","description_similarity":0.875,"before_hash":"e87591174c4c77021665dcbc3ad97cb6","after_hash":"c39a84b17c5e81f50c49161719747e0c"},{"tool":"place_order","kind":"changed","observed_at":"2026-10-08T02:04:33.040Z","fields":["description","inputSchema"],"description_before":"Place an order against the agent_session_id from start_order_session. Atomically inserts the order + items, applies server-side canonical pricing + tax (do NOT trust the unit_price you compute — we re-read it from D1), decrements inventory, optionally redeems a promo code, and creates a Stripe hosted Checkout Session so the customer can pay + authenticate on their own device. Returns order_id, total_cents (tax-inclusive), currency, promo_discount, and a hosted_confirm_url (a Stripe checkout link) to share with the human. Idempotency-Key header REQUIRED.","description_after":"Place an order against the agent_session_id from start_order_session. Atomically inserts the order + items, applies server-side canonical pricing + tax (do NOT trust the unit_price you compute — we re-read it from D1), decrements inventory and optionally redeems a promo code. The guest pays at the venue (payment_status 'unpaid'); a venue that takes payment before preparing answers payment_rail_unavailable — an agent order is never charged on a rail of its own. Returns order_id, total_cents (tax-inclusive), currency and promo_discount. Idempotency-Key header REQUIRED.","description_similarity":0.58,"before_hash":"b9118aba07d9655066749836d78f8aa1","after_hash":"3164cbbffdb674f8287cf667a15ff8b5"},{"tool":"search_restaurants","kind":"changed","observed_at":"2026-10-08T02:04:33.040Z","fields":["description","inputSchema"],"description_before":"Search the public directory (opt-in venues only) by location, opening status, cuisine, dietary options, declared attributes and ordering channel. Neutral ranking (AI-K6): distance in 0.5 km bands when `near` is given → availability (open now first; unknown hours before closed) → profile freshness (owner-verified within 90 days first) → name. Subscription tier never affects order. Cuisine, dietary, price level and other attributes are owner declarations, not verified facts; venues without a declaration are excluded only when an attribute or price filter is used, and venues without coordinates only when `near` is used. Returns slug, name, city, country, distance_km, is_open_now (serve-time, in the venue's own timezone; null when hours are unknown), channels (order · reservation · pickup · delivery), declared attributes, freshness and the menu URL. Paginated.","description_after":"Search the public directory (opt-in venues only) by location, opening status, cuisine, dietary options, declared attributes, ordering channel, declared price level and menu language. Neutral ranking (AI-K6): distance in 0.5 km bands when `near` is given → availability (open now first; unknown hours before closed) → profile freshness (owner-verified within 90 days first) → name. Payment to Thmenu never affects order. Cuisine, dietary, price level and other attributes are owner declarations, not verified facts; venues without a declaration are excluded only when an attribute or price filter is used, and venues without coordinates only when `near` is used. Returns slug, name, city, country, distance_km, is_open_now (serve-time, in the venue's own timezone; null when hours are unknown), channels (order · reservation · pickup · delivery), declared attributes, freshness and the menu URL. Paginated.","description_similarity":0.935,"before_hash":"a796bd25f5a806652a8ddbf80ad8aa2b","after_hash":"e87591174c4c77021665dcbc3ad97cb6"},{"tool":"get_restaurant","kind":"changed","observed_at":"2026-10-08T02:04:33.040Z","fields":["description"],"description_before":"Fetch a public restaurant profile by slug: name, description, address/city/country, currency, timezone, phone, menu URL, opening hours (7 days, minutes from midnight; a close_minute above 1440 ends after midnight on the next day, e.g. 1560 = 02:00) with isOpenNow evaluated in the venue's own timezone (null when hours are unknown), owner-declared attributes (cuisine, dietary, …; null = not declared, never \"no\"), derived channels (order · reservation · pickup · delivery), policies derived from the venue's settings (ordering accepted / holiday mode / staff approval / payment timing / scheduled orders, takeaway & delivery ETA and fees, reservation party cap, table calls, tip cap), per-field owner verification timestamps, categories and product count. Only restaurants opted into the public directory are visible.","description_after":"Fetch a public restaurant profile by slug: name, description, address/city/country, currency, timezone, phone, menu URL, opening hours (7 days, minutes from midnight; a close_minute above 1440 ends after midnight on the next day, e.g. 1560 = 02:00) with isOpenNow evaluated in the venue's own timezone (null when hours are unknown), owner-declared attributes (cuisine, dietary, …; null = not declared, never \"no\"), derived channels (order · reservation · pickup · delivery), policies derived from the venue's settings (ordering accepted / holiday mode / staff approval / payment timing / scheduled orders, takeaway & delivery ETA and fees, reservation party cap, table calls, tip cap), per-field owner verification timestamps, categories and product count, and `graph` — the canonical Restaurant Graph node's agent fields: verification state (UNCLAIMED · CLAIMED · SUSPENDED · HIDDEN; VERIFIED only when a human verified it), channel_states (each channel true/false/null with a reason — null means unknown, never \"no\"; TABLE_AVAILABLE only from tables staff confirmed ready), menu languages with coverage, and payment availability. Only restaurants opted into the public directory are visible.","description_similarity":0.784,"before_hash":"52177aafd4cb170c0c5a6eb9edb1cf40","after_hash":"0677ba200b059cfc65d3cc56719251c3"},{"tool":"join_loyalty","kind":"changed","observed_at":"2026-10-07T20:10:33.019Z","fields":["description","inputSchema"],"description_before":"Enrol the authenticated customer in the restaurant loyalty programme. Returns the member id, current points balance, and tier. Safe to call even if the customer is already enrolled — returns existing data in that case. Requires an active agent_session_id and the customer email or phone.","description_after":"Loyalty sign-up for a guest. The guest must confirm their own e-mail, so joining happens on the restaurant's menu (My thmenu → Loyalty); this tool answers with that instruction and never reveals whether an e-mail or phone is already enrolled. Requires an active agent_session_id.","description_similarity":0.254,"before_hash":"2361907e5b89eac88e801c368892dc6b","after_hash":"de5bb789c12d37f70e227607e7303cd3"},{"tool":"search_restaurants","kind":"changed","observed_at":"2026-10-07T20:10:33.019Z","fields":["description"],"description_before":"Search the public directory (opt-in venues only) by location, opening status, cuisine, dietary options, declared attributes and ordering channel. Neutral ranking (AI-K6): distance in 0.5 km bands when `near` is given → availability (open now first; unknown hours before closed) → profile freshness (owner-verified within 90 days first) → name. Subscription tier never affects order. Cuisine, dietary and other attributes are owner declarations, not verified facts; venues without a declaration are excluded only when an attribute filter is used, and venues without coordinates only when `near` is used. Returns slug, name, city, country, distance_km, is_open_now (serve-time, in the venue's own timezone; null when hours are unknown), channels (order · reservation · pickup · delivery), declared attributes, freshness and the menu URL. Paginated.","description_after":"Search the public directory (opt-in venues only) by location, opening status, cuisine, dietary options, declared attributes and ordering channel. Neutral ranking (AI-K6): distance in 0.5 km bands when `near` is given → availability (open now first; unknown hours before closed) → profile freshness (owner-verified within 90 days first) → name. Subscription tier never affects order. Cuisine, dietary, price level and other attributes are owner declarations, not verified facts; venues without a declaration are excluded only when an attribute or price filter is used, and venues without coordinates only when `near` is used. Returns slug, name, city, country, distance_km, is_open_now (serve-time, in the venue's own timezone; null when hours are unknown), channels (order · reservation · pickup · delivery), declared attributes, freshness and the menu URL. Paginated.","description_similarity":0.966,"before_hash":"db75e9bfe19244591237688f8730b4ab","after_hash":"a796bd25f5a806652a8ddbf80ad8aa2b"},{"tool":"get_pricing","kind":"changed","observed_at":"2026-10-07T14:27:04.203Z","fields":["title","description"],"description_before":"Return the canonical two-track subscription matrix: the restaurant track (Starter, Lite, Pro, Platinum, Diamond) plus the dedicated Hotels track (Hotels, Hotels+). Billing is YEARLY ONLY — each tier carries its USD yearly list price and the founding-cohort yearly price, plus the feature list. Generated from the same source as the public pricing page; stable identifiers — safe to cache.","description_after":"Return Thmenu's commercial model as structured facts: free forever, every feature included, no subscription and no trial; the only charge is a platform fee in basis points on payment volume processed through Thmenu (the payment processor's own fee is separate); cash or external payments carry no Thmenu fee. Generated from the code that charges it — safe to cache.","description_similarity":0.163,"before_hash":"b364ae85b1ccf00b7d9b699ec5c2847b","after_hash":"861c1f88474b17e561f0b194db9d9e2e"},{"tool":"get_restaurant","kind":"changed","observed_at":"2026-10-02T13:30:07.408Z","fields":["description"],"description_before":"Fetch a public restaurant profile by slug: name, description, address/city/country, currency, timezone, phone, menu URL, opening hours (7 days, minutes from midnight) with isOpenNow evaluated in the venue's own timezone (null when hours are unknown), owner-declared attributes (cuisine, dietary, …; null = not declared, never \"no\"), derived channels (order · reservation · pickup · delivery), policies derived from the venue's settings (ordering accepted / holiday mode / staff approval / payment timing / scheduled orders, takeaway & delivery ETA and fees, reservation party cap, table calls, tip cap), per-field owner verification timestamps, categories and product count. Only restaurants opted into the public directory are visible.","description_after":"Fetch a public restaurant profile by slug: name, description, address/city/country, currency, timezone, phone, menu URL, opening hours (7 days, minutes from midnight; a close_minute above 1440 ends after midnight on the next day, e.g. 1560 = 02:00) with isOpenNow evaluated in the venue's own timezone (null when hours are unknown), owner-declared attributes (cuisine, dietary, …; null = not declared, never \"no\"), derived channels (order · reservation · pickup · delivery), policies derived from the venue's settings (ordering accepted / holiday mode / staff approval / payment timing / scheduled orders, takeaway & delivery ETA and fees, reservation party cap, table calls, tip cap), per-field owner verification timestamps, categories and product count. Only restaurants opted into the public directory are visible.","description_similarity":0.857,"before_hash":"65f477ce23dfe3ce37019e803a1b31b4","after_hash":"52177aafd4cb170c0c5a6eb9edb1cf40"}],"next_before":null,"next_actions":[]}