Thmenu
What this MCP does
Provides restaurant discovery, menus, carts, reservations, orders, loyalty, delivery checkout, waiter requests, and restaurant owner reporting and draft content tools.
Tools
Input schema
{'type': 'object', 'required': ['agent_session_id', 'code'], 'properties': {'code': {'type': 'string', 'maxLength': 64, 'minLength': 1}, 'agent_session_id': {'type': 'string'}}}
Input schema
{'type': 'object', 'required': ['agent_session_id', 'order_id'], 'properties': {'order_id': {'type': 'string'}, 'agent_session_id': {'type': 'string'}}}
Input schema
{'type': 'object', 'required': ['confirmation_code'], 'properties': {'confirmation_code': {'type': 'string', 'maxLength': 12, 'minLength': 6}}}
Input schema
{'type': 'object', 'required': ['agent_session_id', 'member_id'], 'properties': {'member_id': {'type': 'string'}, 'agent_session_id': {'type': 'string'}}}
Input schema
{'type': 'object', 'required': ['restaurant', 'order_type', 'items'], 'properties': {'note': {'type': 'string', 'maxLength': 500, 'description': "Order-level note for the kitchen. Do not put the guest's name, phone or address here."}, 'items': {'type': 'array', 'items': {'type': 'object', 'required': ['product_id', 'quantity'], 'properties': {'note': {'type': 'string', 'maxLength': 200}, 'quantity': {'type': 'integer', 'maximum': 99, 'minimum': 1}, 'product_id': {'type': 'string'}}}, 'maxItems': 50, 'minItems': 1}, 'order_type': {'enum': ['takeaway', 'delivery'], 'type': 'string'}, 'restaurant': {'type': 'string', 'description': 'Restaurant slug (from search_restaurants / list_public_menus) or id.'}, 'scheduled_for': {'type': 'string', 'description': 'ISO date-time for a scheduled pickup/delivery (optional; the venue may refuse on the confirmation page).'}}}
Input schema
{'type': 'object', 'required': ['product_id', 'description'], 'properties': {'product_id': {'type': 'string', 'description': 'Product id from menu_audit or get_restaurant_menu.'}, 'description': {'type': 'string', 'maxLength': 2000, 'description': 'Proposed description in the menu language. Plain text, no links, no claims you cannot verify.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['tagline', 'about', 'seo_title', 'seo_description'], 'properties': {'about': {'type': 'string', 'maxLength': 700}, 'tagline': {'type': 'string', 'maxLength': 80}, 'seo_title': {'type': 'string', 'maxLength': 60}, 'seo_description': {'type': 'string', 'maxLength': 160}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['entity', 'entity_id', 'locale'], 'properties': {'name': {'type': 'string', 'maxLength': 2000, 'description': 'Translated name (optional). Keep brand names as they are.'}, 'entity': {'enum': ['product', 'category'], 'type': 'string'}, 'locale': {'enum': ['tr', 'en', 'de', 'fr', 'es', 'it', 'nl', 'pt', 'ru', 'ar', 'zh', 'ja', 'ko', 'pl', 'sv', 'da', 'fi', 'no', 'cs', 'hu', 'ro', 'bg', 'el', 'hr', 'sk', 'sl', 'lt', 'lv', 'he', 'fa', 'sw'], 'type': 'string', 'description': 'Target menu language (two letters), different from the menu source language.'}, 'entity_id': {'type': 'string', 'description': 'Product or category id from get_restaurant_menu / menu_audit.'}, 'description': {'type': 'string', 'maxLength': 2000, 'description': 'Translated description (optional). Plain text, no links, same meaning as the source — never add ingredients or claims.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['cart_id'], 'properties': {'cart_id': {'type': 'string', 'pattern': '^[a-f0-9]{32}$'}}}
Input schema
{'type': 'object', 'properties': {'locale': {'type': 'string', 'default': 'en'}}}
Input schema
{'type': 'object', 'required': ['agent_session_id', 'order_id'], 'properties': {'order_id': {'type': 'string'}, 'agent_session_id': {'type': 'string'}}}
Input schema
{'type': 'object', 'properties': {}}
Input schema
{'type': 'object', 'required': ['restaurant'], 'properties': {'days': {'type': 'integer', 'default': 2, 'maximum': 7, 'minimum': 1}, 'restaurant': {'type': 'string'}}}
Input schema
{'type': 'object', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'description': 'Restaurant slug, e.g. lily-rose-bistro'}}}
Input schema
{'type': 'object', 'required': ['restaurant_id'], 'properties': {'locale': {'type': 'string', 'default': 'en'}, 'restaurant_id': {'type': 'string'}}}
Input schema
{'type': 'object', 'required': ['agent_session_id'], 'properties': {'email': {'type': 'string', 'description': 'Customer email (either email or phone required).'}, 'phone': {'type': 'string', 'description': 'Customer phone in E.164 format (either email or phone required).'}, 'display_name': {'type': 'string', 'description': 'Optional display name shown in the loyalty dashboard.'}, 'agent_session_id': {'type': 'string', 'description': 'Active session id from start_order_session.'}}}
Input schema
{'type': 'object', 'properties': {'page': {'type': 'integer', 'default': 1, 'minimum': 1}, 'limit': {'type': 'integer', 'default': 20, 'maximum': 50, 'minimum': 1}}}
Input schema
{'type': 'object', 'properties': {}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['agent_session_id', 'items'], 'properties': {'note': {'type': 'string', 'description': 'Optional order-level note (max 500 chars).'}, 'items': {'type': 'array', 'items': {'type': 'object', 'required': ['product_id', 'quantity'], 'properties': {'quantity': {'type': 'integer', 'maximum': 999, 'minimum': 1}, 'product_id': {'type': 'string'}}}, 'maxItems': 100, 'minItems': 1}, 'room_id': {'type': 'string', 'description': 'Diamond tier only — hotel room id.'}, 'table_id': {'type': 'string', 'description': 'Optional table id when ordering at a table.'}, 'guest_name': {'type': 'string', 'description': 'Required when room_id is set.'}, 'order_type': {'enum': ['dine_in', 'takeaway'], 'type': 'string', 'description': "Channel: 'dine_in' (default — table or room) or 'takeaway' (pickup; requires customer_name + customer_phone, ignores table_id/room_id, only when the restaurant has takeaway enabled — else channel_not_available). Delivery is not offered to agents."}, 'promo_code': {'type': 'string', 'maxLength': 64, 'description': 'Optional promo code to redeem at order time (validate first with apply_promo). The redemption slot is consumed only when this order lands.'}, 'customer_name': {'type': 'string', 'maxLength': 80, 'description': 'Required for takeaway — who picks the order up.'}, 'customer_phone': {'type': 'string', 'maxLength': 24, 'description': 'Required for takeaway — reachable phone (digits, +, spaces/dashes tolerated).'}, 'agent_session_id': {'type': 'string'}}}
Input schema
{'type': 'object', 'required': ['agent_session_id', 'table_id'], 'properties': {'note': {'type': 'string', 'maxLength': 500}, 'table_id': {'type': 'string'}, 'split_type': {'enum': ['full', 'personal'], 'type': 'string', 'default': 'full'}, 'agent_session_id': {'type': 'string'}}}
Input schema
{'type': 'object', 'required': ['restaurant', 'reserved_at', 'party_size'], 'properties': {'note': {'type': 'string', 'maxLength': 300, 'description': "Occasion, seating preference, accessibility needs. Do not put the guest's name, phone or email here."}, 'party_size': {'type': 'integer', 'maximum': 50, 'minimum': 1}, 'restaurant': {'type': 'string'}, 'reserved_at': {'type': 'string', 'description': 'ISO date-time; at least 30 minutes ahead, at most 90 days.'}}}
Input schema
{'type': 'object', 'properties': {}, 'additionalProperties': False}
Input schema
{'type': 'object', 'properties': {}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['slug', 'query'], 'properties': {'slug': {'type': 'string', 'description': 'Restaurant slug.'}, 'limit': {'type': 'integer', 'default': 10, 'maximum': 20, 'minimum': 1}, 'query': {'type': 'string', 'description': 'Free-text search across name + description.'}, 'locale': {'type': 'string', 'default': 'en'}}}
Input schema
{'type': 'object', 'properties': {'q': {'type': 'string', 'description': 'Free text over name and description (min 2 chars).'}, 'city': {'type': 'string'}, 'near': {'type': 'object', 'required': ['lat', 'lng'], 'properties': {'lat': {'type': 'number'}, 'lng': {'type': 'number'}}, 'description': 'Search centre. Venues without coordinates are excluded when set.'}, 'page': {'type': 'integer', 'default': 1, 'minimum': 1}, 'limit': {'type': 'integer', 'default': 20, 'maximum': 50, 'minimum': 1}, 'channel': {'enum': ['order', 'reservation', 'pickup', 'delivery'], 'type': 'string', 'description': "order = digital ordering at the table; reservation; pickup = takeaway; delivery = venue's own delivery."}, 'country': {'type': 'string', 'description': 'ISO 3166-1 alpha-2'}, 'cuisine': {'type': 'array', 'items': {'enum': ['turkish', 'kebab', 'ottoman', 'anatolian', 'aegean', 'black_sea', 'mediterranean', 'middle_eastern', 'lebanese', 'persian', 'georgian', 'greek', 'balkan', 'romanian', 'polish', 'eastern_european', 'russian', 'italian', 'pizza', 'pasta', 'french', 'spanish', 'tapas', 'portuguese', 'german', 'austrian', 'british', 'irish', 'scandinavian', 'dutch', 'american', 'burger', 'steakhouse', 'bbq', 'tex_mex', 'mexican', 'latin_american', 'brazilian', 'peruvian', 'caribbean', 'japanese', 'sushi', 'ramen', 'chinese', 'korean', 'thai', 'vietnamese', 'indian', 'pakistani', 'indonesian', 'malaysian', 'filipino', 'african', 'ethiopian', 'moroccan', 'seafood', 'grill', 'vegetarian', 'vegan', 'healthy', 'cafe', 'coffee', 'tea_house', 'bakery', 'patisserie', 'dessert', 'ice_cream', 'breakfast_brunch', 'fast_food', 'street_food', 'fusion', 'international', 'fine_dining', 'bistro', 'pub', 'bar', 'wine_bar', 'cocktail_bar', 'juice_bar', 'hotel_restaurant', 'food_court'], 'type': 'string'}, 'description': 'All listed cuisines must be declared by the venue.'}, 'dietary': {'type': 'array', 'items': {'enum': ['vegetarian_options', 'vegan_options', 'gluten_free_options', 'lactose_free_options', 'halal', 'kosher'], 'type': 'string'}, 'description': 'Owner declaration, not a certification.'}, 'open_now': {'type': 'boolean', 'default': False, 'description': 'Only venues open right now in their own timezone; venues with unknown hours are excluded when true.'}, 'radius_km': {'type': 'number', 'default': 10, 'maximum': 100, 'minimum': 0.5}, 'attributes': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Any declared attribute token (meals, family, outdoor, accessibility, cuisine, dietary).'}}}
Input schema
{'type': 'object', 'required': ['restaurant_id'], 'properties': {'restaurant_id': {'type': 'string', 'description': 'Canonical restaurant id from get_restaurant or search_products.'}}}
Input schema
{'type': 'object', 'required': ['agent_session_id', 'table_id'], 'properties': {'message': {'type': 'string', 'maxLength': 500}, 'table_id': {'type': 'string'}, 'agent_session_id': {'type': 'string'}}}
Recent tool changes
Similar MCP servers
AgentLot Marketplace
Enables agents and users to discover, bid on, purchase, deliver, and settle paid digital services and compute work.
Gover MCP
Searches and manages corporate travel requests, flights, hotels, rental vehicles, passengers, carts, approvals, reservations, and…
Obriym CRM
Manages CRM records, sales pipelines, activities, orders, products, inventory, and marketplace catalog operations.
zobrx
Provides read-only ecommerce operations and analytics for orders, inventory, marketplace performance, advertising, settlements, t…
SupplySlate
Supports component sourcing, fabrication requests, supplier RFQs, catalog imports, quotes, purchase planning, checkout handoffs, …
velora
Provides Argentine commerce operations including catalog and inventory, customer and supplier management, cash register tracking,…
Shopify
Provides read access to Shopify Admin data for store operations through the Shopify REST API.
Woocommerce
Provides access to WooCommerce store data through the WooCommerce REST API.