Tool tree
gradeNot graded
page: Every page
zomato_get_sessionAnswer
Start here. Reports whether the user is logged in, the delivery address state, the restaurant open on the page and the cart, plus the next step to take. Changes nothing.
View tool JSON
{
"name": "zomato_get_session",
"kind": "answer",
"impl": "imperative",
"description": "Start here. Reports whether the user is logged in, the delivery address state, the restaurant open on the page and the cart, plus the next step to take. Changes nothing.",
"inputSchema": {
"type": "object",
"properties": {}
},
"page": "/ncr"
}zomato_request_login_otpAction
Send a login OTP by SMS to the phone number the user gave you. Then ask the user to read the code back and call zomato_verify_login_otp. If the user would rather not share their number or OTP, or wants email or Google, use zomato_open_login_dialog instead. Returns "logged_in" without sending anything when the session is already valid.
View tool JSON
{
"name": "zomato_request_login_otp",
"kind": "act",
"impl": "imperative",
"description": "Send a login OTP by SMS to the phone number the user gave you. Then ask the user to read the code back and call zomato_verify_login_otp. If the user would rather not share their number or OTP, or wants email or Google, use zomato_open_login_dialog instead. Returns \"logged_in\" without sending anything when the session is already valid.",
"inputSchema": {
"type": "object",
"properties": {
"phone": {
"type": [
"string",
"number"
],
"description": "The phone number the user gave you in this conversation. Never guess it. Indian numbers can include or omit +91.",
"examples": [
"9876543210"
]
}
},
"required": [
"phone"
]
},
"page": "/ncr"
}zomato_verify_login_otpAction
Finish the OTP login started by zomato_request_login_otp, using the code the user read out. The phone number is remembered from that call. On success the user is logged in and the page reloads.
View tool JSON
{
"name": "zomato_verify_login_otp",
"kind": "act",
"impl": "imperative",
"description": "Finish the OTP login started by zomato_request_login_otp, using the code the user read out. The phone number is remembered from that call. On success the user is logged in and the page reloads.",
"inputSchema": {
"type": "object",
"properties": {
"otp": {
"type": [
"string",
"number"
],
"description": "The OTP the user read out in this conversation. Never guess it.",
"examples": [
"123456"
]
}
},
"required": [
"otp"
]
},
"page": "/ncr"
}zomato_open_login_dialogAction
Open the Zomato login dialog on the page so the user signs in themselves, by phone, email or Google. Offer it to anyone who would rather not share their number or OTP with you. The page reloads when they finish, which ends this conversation.
View tool JSON
{
"name": "zomato_open_login_dialog",
"kind": "act",
"impl": "imperative",
"description": "Open the Zomato login dialog on the page so the user signs in themselves, by phone, email or Google. Offer it to anyone who would rather not share their number or OTP with you. The page reloads when they finish, which ends this conversation.",
"inputSchema": {
"type": "object",
"properties": {}
},
"page": "/ncr"
}zomato_list_addressesAnswer
List the saved delivery addresses with "canDeliver" and "isSelected", and say which one would be picked automatically. Changes nothing.
View tool JSON
{
"name": "zomato_list_addresses",
"kind": "answer",
"impl": "imperative",
"description": "List the saved delivery addresses with \"canDeliver\" and \"isSelected\", and say which one would be picked automatically. Changes nothing.",
"inputSchema": {
"type": "object",
"properties": {}
},
"page": "/ncr"
}zomato_select_addressAction
Select the delivery address. With "addressId", selects that saved address. With no arguments, keeps a valid current address or picks the default: the one last used on this browser, or the only deliverable one. When several could apply it selects nothing and returns "no_address_selected" with all the ids.
View tool JSON
{
"name": "zomato_select_address",
"kind": "act",
"impl": "imperative",
"description": "Select the delivery address. With \"addressId\", selects that saved address. With no arguments, keeps a valid current address or picks the default: the one last used on this browser, or the only deliverable one. When several could apply it selects nothing and returns \"no_address_selected\" with all the ids.",
"inputSchema": {
"type": "object",
"properties": {
"addressId": {
"type": [
"string",
"number"
],
"description": "Optional. A saved address id.",
"examples": [
"123456"
]
}
}
},
"page": "/ncr"
}zomato_add_addressAction
Save a new delivery address to the account and select it. Step 1: pass { "locationQuery" } (an area, street or landmark) to get matching locations. Step 2: once the user confirms one, call again with its "placeId" and the address details. A single unambiguous match is used directly. Missing required fields come back in "missingFields".
View tool JSON
{
"name": "zomato_add_address",
"kind": "act",
"impl": "imperative",
"description": "Save a new delivery address to the account and select it. Step 1: pass { \"locationQuery\" } (an area, street or landmark) to get matching locations. Step 2: once the user confirms one, call again with its \"placeId\" and the address details. A single unambiguous match is used directly. Missing required fields come back in \"missingFields\".",
"inputSchema": {
"type": "object",
"properties": {
"locationQuery": {
"type": "string",
"description": "Area, street or landmark to look up.",
"examples": [
"Connaught Place"
]
},
"placeId": {
"type": "string",
"description": "A placeId from an earlier zomato_add_address call."
},
"address": {
"type": "string",
"description": "House or flat number and building."
},
"floor": {
"type": "string",
"description": "Optional floor."
},
"landmark": {
"type": "string",
"description": "Optional landmark."
},
"locality": {
"type": "string",
"description": "Area, sector or locality."
},
"tag": {
"type": "string",
"description": "How to label it, e.g. Home, Work, Hotel or Other."
},
"otherTag": {
"type": "string",
"description": "A custom label when tag is \"Other\"."
},
"select": {
"type": "boolean",
"description": "Select the new address for this order. Defaults to true."
}
}
},
"page": "/ncr"
}zomato_search_restaurantsAction
Find restaurants for a dish, cuisine or restaurant name near the delivery address. "pizza" returns restaurants that serve pizza as well as ones named after it. Each result has restaurantId, rating, etaMinutes, costForTwo, isOpen and canOrder. deliveryFee is null because it is only known once the cart is priced (zomato_quote_cart or zomato_prepare_checkout). If no address is selected it picks the default first, and reports the outcome in "address".
View tool JSON
{
"name": "zomato_search_restaurants",
"kind": "act",
"impl": "imperative",
"description": "Find restaurants for a dish, cuisine or restaurant name near the delivery address. \"pizza\" returns restaurants that serve pizza as well as ones named after it. Each result has restaurantId, rating, etaMinutes, costForTwo, isOpen and canOrder. deliveryFee is null because it is only known once the cart is priced (zomato_quote_cart or zomato_prepare_checkout). If no address is selected it picks the default first, and reports the outcome in \"address\".",
"inputSchema": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "A dish, cuisine or restaurant name.",
"examples": [
"pizza",
"butter chicken",
"Dominos"
]
},
"context": {
"type": "string",
"enum": [
"delivery",
"dineout",
"takeaway",
"nightlife",
"all"
],
"description": "Optional. Defaults to \"delivery\" (or \"takeaway\" on a takeaway page). Pass \"dineout\" or \"nightlife\" only when the user wants to go out rather than order."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 20,
"description": "Maximum restaurants to return (default and maximum 20)."
}
},
"required": [
"query"
]
},
"page": "/ncr"
}zomato_get_restaurant_menuAction
Open a restaurant and return its menu in one call. Pass "restaurantId" from zomato_search_restaurants; leave it out to read the restaurant already open. The result names the active restaurant, so check it before adding items. A dish with hasAddOns true needs zomato_get_dish_options before it can be added.
View tool JSON
{
"name": "zomato_get_restaurant_menu",
"kind": "act",
"impl": "imperative",
"description": "Open a restaurant and return its menu in one call. Pass \"restaurantId\" from zomato_search_restaurants; leave it out to read the restaurant already open. The result names the active restaurant, so check it before adding items. A dish with hasAddOns true needs zomato_get_dish_options before it can be added.",
"inputSchema": {
"type": "object",
"properties": {
"restaurantId": {
"type": [
"string",
"number"
],
"description": "From zomato_search_restaurants.",
"examples": [
"20424478"
]
},
"orderUrl": {
"type": "string",
"description": "Optional. The orderUrl of a search result, for a restaurant not returned by search in this conversation."
},
"search": {
"type": "string",
"description": "Optional text to match against dish names, descriptions and categories.",
"examples": [
"paneer"
]
},
"category": {
"type": "string",
"description": "Optional category name. The result lists every category."
},
"limit": {
"type": "integer",
"description": "Optional cap on how many dishes to return. Leave it out to get the whole menu."
}
}
},
"page": "/ncr"
}zomato_get_dish_optionsAnswer
Get the add-on groups for a dish on the open restaurant. This is the only source of add-on ids. "min" above 0 means the group is required; "selectionType" single takes exactly one. Nested groups have "parentOptionId" and apply only when that option is chosen.
View tool JSON
{
"name": "zomato_get_dish_options",
"kind": "answer",
"impl": "imperative",
"description": "Get the add-on groups for a dish on the open restaurant. This is the only source of add-on ids. \"min\" above 0 means the group is required; \"selectionType\" single takes exactly one. Nested groups have \"parentOptionId\" and apply only when that option is chosen.",
"inputSchema": {
"type": "object",
"properties": {
"itemId": {
"type": [
"string",
"number"
],
"description": "A dish id from zomato_get_restaurant_menu."
},
"restaurantId": {
"type": [
"string",
"number"
],
"description": "Optional. The restaurantId you expect to be open. The call fails instead of acting on a different restaurant."
}
},
"required": [
"itemId"
]
},
"page": "/ncr"
}zomato_add_item_to_cartAction
Add a dish to the cart. This increments: the same dish with the same add-ons goes onto the same line and raises its quantity by "quantity". Different add-ons make a new line. The result returns the "lineItemId"; to make a line an exact quantity, use zomato_set_item_quantity instead of adding again.
View tool JSON
{
"name": "zomato_add_item_to_cart",
"kind": "act",
"impl": "imperative",
"description": "Add a dish to the cart. This increments: the same dish with the same add-ons goes onto the same line and raises its quantity by \"quantity\". Different add-ons make a new line. The result returns the \"lineItemId\"; to make a line an exact quantity, use zomato_set_item_quantity instead of adding again.",
"inputSchema": {
"type": "object",
"properties": {
"itemId": {
"type": [
"string",
"number"
],
"description": "A dish id from zomato_get_restaurant_menu."
},
"quantity": {
"type": "integer",
"minimum": 1,
"maximum": 20,
"description": "How many to add (default 1)."
},
"addOnIds": {
"type": "array",
"items": {
"type": [
"string",
"number"
]
},
"description": "Option ids from zomato_get_dish_options. Include the parent option when choosing nested add-ons."
},
"restaurantId": {
"type": [
"string",
"number"
],
"description": "Optional. The restaurantId you expect to be open. The call fails instead of acting on a different restaurant."
}
},
"required": [
"itemId"
]
},
"page": "/ncr"
}zomato_set_item_quantityAction
Set a cart line to an exact quantity. Calling it twice with the same value changes nothing the second time. 0 removes the line. Use a "lineItemId" from zomato_get_cart or zomato_add_item_to_cart.
View tool JSON
{
"name": "zomato_set_item_quantity",
"kind": "act",
"impl": "imperative",
"description": "Set a cart line to an exact quantity. Calling it twice with the same value changes nothing the second time. 0 removes the line. Use a \"lineItemId\" from zomato_get_cart or zomato_add_item_to_cart.",
"inputSchema": {
"type": "object",
"properties": {
"lineItemId": {
"type": [
"string",
"number"
],
"description": "From zomato_get_cart."
},
"quantity": {
"type": "integer",
"minimum": 0,
"maximum": 20,
"description": "The quantity the line should have."
},
"restaurantId": {
"type": [
"string",
"number"
],
"description": "Optional. The restaurantId you expect to be open. The call fails instead of acting on a different restaurant."
}
},
"required": [
"lineItemId",
"quantity"
]
},
"page": "/ncr"
}zomato_remove_cart_lineAction
Delete one whole cart line, whatever its quantity. To reduce a quantity instead, use zomato_set_item_quantity.
View tool JSON
{
"name": "zomato_remove_cart_line",
"kind": "act",
"impl": "imperative",
"description": "Delete one whole cart line, whatever its quantity. To reduce a quantity instead, use zomato_set_item_quantity.",
"inputSchema": {
"type": "object",
"properties": {
"lineItemId": {
"type": [
"string",
"number"
],
"description": "From zomato_get_cart."
},
"restaurantId": {
"type": [
"string",
"number"
],
"description": "Optional. The restaurantId you expect to be open. The call fails instead of acting on a different restaurant."
}
},
"required": [
"lineItemId"
]
},
"page": "/ncr"
}zomato_get_cartAnswer
Read the cart as the user sees it: one entry per line with lineItemId, quantity, add-ons and line total, plus the restaurant it belongs to. The subtotal excludes taxes and fees; zomato_quote_cart or zomato_prepare_checkout return the full bill.
View tool JSON
{
"name": "zomato_get_cart",
"kind": "answer",
"impl": "imperative",
"description": "Read the cart as the user sees it: one entry per line with lineItemId, quantity, add-ons and line total, plus the restaurant it belongs to. The subtotal excludes taxes and fees; zomato_quote_cart or zomato_prepare_checkout return the full bill.",
"inputSchema": {
"type": "object",
"properties": {}
},
"page": "/ncr"
}zomato_clear_cartAction
Empty the cart, including one saved for another restaurant. Destructive, so only call it when the user asks to start over.
View tool JSON
{
"name": "zomato_clear_cart",
"kind": "act",
"impl": "imperative",
"description": "Empty the cart, including one saved for another restaurant. Destructive, so only call it when the user asks to start over.",
"inputSchema": {
"type": "object",
"properties": {}
},
"page": "/ncr"
}zomato_quote_cartAction
Optional. Price the current cart with Zomato without leaving the page: every bill line (item total, taxes, delivery fee and so on) and the grand total. Use it when the user asks what the order will cost before deciding. It is not a required step: zomato_prepare_checkout prices the cart itself.
View tool JSON
{
"name": "zomato_quote_cart",
"kind": "act",
"impl": "imperative",
"description": "Optional. Price the current cart with Zomato without leaving the page: every bill line (item total, taxes, delivery fee and so on) and the grand total. Use it when the user asks what the order will cost before deciding. It is not a required step: zomato_prepare_checkout prices the cart itself.",
"inputSchema": {
"type": "object",
"properties": {
"restaurantId": {
"type": [
"string",
"number"
],
"description": "Optional. The restaurantId you expect to be open. The call fails instead of acting on a different restaurant."
}
}
},
"page": "/ncr"
}zomato_prepare_checkoutAction
Open the Zomato checkout page with the cart, once it has what the user asked for and a delivery address is selected. It runs the site's own continue-to-checkout flow, so the cart is priced once, by that flow, and returns that bill when the flow provides one (otherwise the checkout page shows it). It does not place the order or take payment: the user reviews the bill on the checkout page and presses the place order button themselves. Optional "quoteId" from zomato_quote_cart makes it refuse if the cart or address changed after the user saw that quote.
View tool JSON
{
"name": "zomato_prepare_checkout",
"kind": "act",
"impl": "imperative",
"description": "Open the Zomato checkout page with the cart, once it has what the user asked for and a delivery address is selected. It runs the site's own continue-to-checkout flow, so the cart is priced once, by that flow, and returns that bill when the flow provides one (otherwise the checkout page shows it). It does not place the order or take payment: the user reviews the bill on the checkout page and presses the place order button themselves. Optional \"quoteId\" from zomato_quote_cart makes it refuse if the cart or address changed after the user saw that quote.",
"inputSchema": {
"type": "object",
"properties": {
"quoteId": {
"type": "string",
"description": "Optional. From zomato_quote_cart, when the user was shown that quote."
},
"restaurantId": {
"type": [
"string",
"number"
],
"description": "Optional. The restaurantId you expect to be open. The call fails instead of acting on a different restaurant."
}
}
},
"page": "/ncr"
}