Tool tree
gradeNot graded
list-categoriesAnswer
Discover available food categories such as burgers, pizza, sushi, Indian, and breakfast. Use when the user wants ideas or has not named a cuisine; otherwise call search-restaurants directly.
View tool JSON
{
"name": "list-categories",
"kind": "answer",
"impl": "imperative",
"description": "Discover available food categories such as burgers, pizza, sushi, Indian, and breakfast. Use when the user wants ideas or has not named a cuisine; otherwise call search-restaurants directly.",
"inputSchema": {
"type": "object",
"properties": {}
}
}search-restaurantsAnswer
Find restaurants matching a food, cuisine, or category. Start here for requests like 'find me a burger for one person under $20' by using category 'burgers' or query 'burger'. Returns restaurant ids, ratings, price level, ETA, delivery fee, and offers. Next call get-restaurant-menu. Price level is not the final order total.
View tool JSON
{
"name": "search-restaurants",
"kind": "answer",
"impl": "imperative",
"description": "Find restaurants matching a food, cuisine, or category. Start here for requests like 'find me a burger for one person under $20' by using category 'burgers' or query 'burger'. Returns restaurant ids, ratings, price level, ETA, delivery fee, and offers. Next call get-restaurant-menu. Price level is not the final order total.",
"inputSchema": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Free-text search (e.g. 'spicy ramen', 'vegan')"
},
"category": {
"type": "string",
"enum": [
"breakfast",
"burgers",
"pizza",
"sushi",
"indian",
"mediterranean",
"healthy",
"italian",
"ramen",
"grill",
"dessert",
"coffee"
],
"description": "Category id to filter by"
},
"cuisine": {
"type": "string",
"description": "Cuisine name (e.g. italian, indian, sushi)"
},
"priceLevel": {
"type": "string",
"enum": [
"$",
"$$",
"$$$",
"$$$$"
],
"description": "Price level filter"
},
"sortBy": {
"type": "string",
"enum": [
"recommended",
"rating",
"eta",
"deliveryFee"
],
"description": "Sort order"
},
"freeDelivery": {
"type": "boolean",
"description": "Only show restaurants with free delivery"
},
"offers": {
"type": "boolean",
"description": "Only show restaurants running an offer/promo"
},
"topRated": {
"type": "boolean",
"description": "Only show top-rated restaurants (4.6+)"
},
"under30": {
"type": "boolean",
"description": "Only show restaurants delivering in 30 min or less"
}
}
}
}get-restaurant-menuAnswer
Get the full menu for a restaurant returned by search-restaurants. Returns item ids, prices, descriptions, sections, and dietary tags. Select suitable items from this result, then use get-cart to verify a total budget because fees and tax are added at checkout.
View tool JSON
{
"name": "get-restaurant-menu",
"kind": "answer",
"impl": "imperative",
"description": "Get the full menu for a restaurant returned by search-restaurants. Returns item ids, prices, descriptions, sections, and dietary tags. Select suitable items from this result, then use get-cart to verify a total budget because fees and tax are added at checkout.",
"inputSchema": {
"type": "object",
"properties": {
"restaurantId": {
"type": "string",
"description": "The restaurant id from search results (name also works)"
}
},
"required": [
"restaurantId"
]
}
}filter-menu-itemsAction
Narrow the current menu by food name, dietary needs, section, or maximum item price. maxPrice applies per item, not to the full order. To satisfy a total budget, add a candidate and check the final total with get-cart.
View tool JSON
{
"name": "filter-menu-items",
"kind": "act",
"impl": "imperative",
"description": "Narrow the current menu by food name, dietary needs, section, or maximum item price. maxPrice applies per item, not to the full order. To satisfy a total budget, add a candidate and check the final total with get-cart.",
"inputSchema": {
"type": "object",
"properties": {
"restaurantId": {
"type": "string",
"description": "Restaurant id (defaults to the open restaurant)"
},
"dietaryTags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Dietary filters: vegetarian, vegan, gluten-free, dairy-free, nut-free, spicy, halal, kosher"
},
"maxPrice": {
"type": "number",
"description": "Maximum price per item"
},
"section": {
"type": "string",
"description": "Menu section (e.g. Popular, Sides, Drinks, Desserts)"
},
"query": {
"type": "string",
"description": "Text to match in item name/description"
}
}
}
}find-mealsAction
Search individual dishes ACROSS ALL restaurants in one call by intent, budget, and meal time — the fastest way to answer requests like 'a healthy lunch under $15' or 'something spicy for dinner'. Returns matching dishes with their restaurant, price, and image, ranked by relevance, and updates the storefront the user is watching. Prefer this over opening menus one at a time. Then call add-to-cart with an item id. Intent words understood in query include: healthy, light, hearty, spicy, sweet, protein, comfort — plus any dish or cuisine name. maxPrice applies per dish; confirm the full order total with get-cart because fees and tax are added at checkout.
View tool JSON
{
"name": "find-meals",
"kind": "act",
"impl": "imperative",
"description": "Search individual dishes ACROSS ALL restaurants in one call by intent, budget, and meal time — the fastest way to answer requests like 'a healthy lunch under $15' or 'something spicy for dinner'. Returns matching dishes with their restaurant, price, and image, ranked by relevance, and updates the storefront the user is watching. Prefer this over opening menus one at a time. Then call add-to-cart with an item id. Intent words understood in query include: healthy, light, hearty, spicy, sweet, protein, comfort — plus any dish or cuisine name. maxPrice applies per dish; confirm the full order total with get-cart because fees and tax are added at checkout.",
"inputSchema": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Dish, cuisine, or intent keywords (e.g. 'healthy bowl', 'spicy', 'comfort')"
},
"mealType": {
"type": "string",
"enum": [
"breakfast",
"lunch",
"dinner",
"dessert",
"drink",
"side"
],
"description": "Filter by meal time or course"
},
"maxPrice": {
"type": "number",
"description": "Maximum price per dish in USD"
},
"dietaryTags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Dietary filters: vegetarian, vegan, gluten-free, dairy-free, nut-free, spicy, halal, kosher"
},
"limit": {
"type": "number",
"description": "Maximum number of dishes to return (default 12)"
}
}
}
}add-to-cartAction
Add a menu item using its item id, quantity, and optional size or extra option ids. Returns the updated cart and complete totals. For budget requests, inspect the returned total and adjust the cart if it exceeds the user's limit.
View tool JSON
{
"name": "add-to-cart",
"kind": "act",
"impl": "imperative",
"description": "Add a menu item using its item id, quantity, and optional size or extra option ids. Returns the updated cart and complete totals. For budget requests, inspect the returned total and adjust the cart if it exceeds the user's limit.",
"inputSchema": {
"type": "object",
"properties": {
"itemId": {
"type": "string",
"description": "The menu item id (an item name is also accepted)"
},
"quantity": {
"type": "number",
"description": "Quantity (default 1)"
},
"optionIds": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional option ids (e.g. 'large') from the item's option groups"
}
},
"required": [
"itemId"
]
}
}remove-from-cartAction
Remove an item from the cart by item id or name. Use to correct a selection or bring an order within budget. Returns the updated cart and totals.
View tool JSON
{
"name": "remove-from-cart",
"kind": "act",
"impl": "imperative",
"description": "Remove an item from the cart by item id or name. Use to correct a selection or bring an order within budget. Returns the updated cart and totals.",
"inputSchema": {
"type": "object",
"properties": {
"itemId": {
"type": "string",
"description": "The menu item id or name"
}
},
"required": [
"itemId"
]
}
}update-cart-itemAction
Set the quantity of an item already in the cart using its item id or name. Quantity 0 removes it. Returns recalculated totals for portion or budget adjustments.
View tool JSON
{
"name": "update-cart-item",
"kind": "act",
"impl": "imperative",
"description": "Set the quantity of an item already in the cart using its item id or name. Quantity 0 removes it. Returns recalculated totals for portion or budget adjustments.",
"inputSchema": {
"type": "object",
"properties": {
"itemId": {
"type": "string",
"description": "The menu item id or name"
},
"quantity": {
"type": "number",
"description": "New quantity"
}
},
"required": [
"itemId",
"quantity"
]
}
}get-cartAnswer
Get the current cart and authoritative checkout price, including subtotal, delivery fee, service fee, tax, and final total in USD. Always use this to verify a total budget; menu prices alone exclude fees and tax.
View tool JSON
{
"name": "get-cart",
"kind": "answer",
"impl": "imperative",
"description": "Get the current cart and authoritative checkout price, including subtotal, delivery fee, service fee, tax, and final total in USD. Always use this to verify a total budget; menu prices alone exclude fees and tax.",
"inputSchema": {
"type": "object",
"properties": {}
}
}start-checkoutSensitive Action
Prepare the current cart for human review without placing it. Returns an absolute checkoutUrl that must be shown to the user. Opening it restores the items and recalculates prices so a human can review, edit the delivery address, and choose whether to press Place Order.
View tool JSON
{
"name": "start-checkout",
"kind": "transact",
"impl": "imperative",
"description": "Prepare the current cart for human review without placing it. Returns an absolute checkoutUrl that must be shown to the user. Opening it restores the items and recalculates prices so a human can review, edit the delivery address, and choose whether to press Place Order.",
"inputSchema": {
"type": "object",
"properties": {}
}
}place-orderSensitive Action
Place the current simulated order, clear the cart, and begin tracking. This changes state and must only be called after explicit user approval. For external-agent handoff or review-only requests, call start-checkout and return its checkoutUrl instead.
View tool JSON
{
"name": "place-order",
"kind": "transact",
"impl": "imperative",
"description": "Place the current simulated order, clear the cart, and begin tracking. This changes state and must only be called after explicit user approval. For external-agent handoff or review-only requests, call start-checkout and return its checkoutUrl instead.",
"inputSchema": {
"type": "object",
"properties": {}
}
}get-order-statusAnswer
Check the latest status and ETA of the current placed order. Use after place-order; this does not inspect an unplaced checkout cart.
View tool JSON
{
"name": "get-order-status",
"kind": "answer",
"impl": "imperative",
"description": "Check the latest status and ETA of the current placed order. Use after place-order; this does not inspect an unplaced checkout cart.",
"inputSchema": {
"type": "object",
"properties": {}
}
}