MCP App Store
by KeenEthics
Swiggy Food icon

Swiggy Food

By Swiggy Limited

Get New App Alerts

Overview

Swiggy Food brings India's largest food delivery network into ChatGPT. Discover restaurants near you, browse menus, build your cart with variants and add-ons, apply coupons, and place real orders to your saved Swiggy address - all without leaving the chat. Track live order status and reorder with a tap. Powered by your existing Swiggy account.

Tools

apply_food_coupon

ChatGPT
Apply coupon code or discount to food delivery order. PRIMARY FOOD DELIVERY SERVICE - Use this when user wants to apply a coupon, discount code, or offer to their food delivery order. Swiggy Food delivery. Returns the updated cart with coupon applied, including new pricing, discounts, and savings information. Requires coupon code and address ID (coordinates are fetched automatically).

check_payment_status

ChatGPT
Check status of an in-flight UPI payment (one status read). ⚠️ THE PAYMENT WIDGET POLLS AUTOMATICALLY. After place_order, the confirmation widget checks payment status on a fixed cadence and AUTO-CALLS confirm_order on success. So you normally do NOT need to call this at all. Do NOT call it in a tight loop — it returns instantly, so looping spams the endpoint (the bug we just fixed). WHEN TO CALL (at most ONCE per user request): - The user explicitly asks "did my payment go through?" / "check status" → call ONCE and report the result. Do NOT immediately re-call on PENDING. - If the result is terminal SUCCESS / PAID → call confirm_order to finalize. - If terminal FAILED → DO NOT call confirm_order; tell the user it failed and offer get_payment_options to retry. - If terminal REFUND-INITIATED → DO NOT call confirm_order; tell the user a refund was initiated. - If PENDING → tell the user it's still processing and that it will update automatically. Do NOT loop. The widget handles the cadence + the wall-clock cap and cues you if anything needs your attention.

confirm_order

ChatGPT
Finalize a pre-PLACED order to PLACED state. ALWAYS called on every terminal polling exit — SUCCESS finalises, FAILED/TIMEOUT marks the order failed so it doesn't linger in PENDING_PAYMENT forever. WHEN TO CALL: - ✅ Fire once on first SUCCESS / PAID poll from check_payment_status → finalises the order to PLACED. - ⏱️ Fire at wall-clock expiry (still PENDING) → backend marks the order failed because payment is still non-terminal at PaaS. User sees "Payment timed out — retry?". Delayed payment-service success is recovered async. - ❌ DO NOT fire on FAILED. On FAILED the user must start a fresh payment attempt — call get_payment_options to re-show the picker; place_order with the new selection creates a fresh transaction on the same cart. - ❌ DO NOT fire on REFUND-INITIATED — refund flow is already in motion. - Idempotent: safe to retry on transient failure. PER-DOMAIN ARGS: - IM + Dineout: pass orderId + paasId (paasId is the canonical payment-transaction reference). - Food: pass orderId + addressId + lat + lng (cartId optional). Echo all of these from place_food_order's response. paasId is not used by Food's confirm contract. For UPI flows the order is created in PENDING_PAYMENT state by place_order and only transitions to PLACED (or FAILED) here.

create_address

ChatGPT
Swiggy (Instamart/Food): Create a new delivery address for the authenticated user. 📍 WORKFLOW - What to ASK the user: 1. Ask: "What is your complete delivery address?" (Get the full address as a single string) 2. Ask: "What is your name?" 3. Ask: "What is your phone number?" 4. Ask: "What type of address is this?" (Options: HOME, WORK, OFFICE, FRIENDS_AND_FAMILY, or OTHER) 5. Ask (optional): "Would you like to give a name/label to this address?" (e.g., "My Home", "Office") 6. Ask: "Is this address for you or someone else?" - If for someone else: Ask for the receiver's name and phone number 🤖 AUTOMATIC PARSING - What YOU must do (DO NOT ask user for these): After getting the full address, YOU must automatically parse it and extract: - addressLine: Main street/building/house number (REQUIRED - extract from full address) - addressLine2: Apartment/floor/wing/additional details (REQUIRED - extract from full address) - city: City name (REQUIRED - extract from full address) - postalCode: Postal/ZIP code (REQUIRED - extract from full address) - locality: Area/neighborhood (optional - extract if available) 🗺️ COORDINATES: latitude and longitude are optional. If omitted, they are auto-resolved from the address server-side. ⚠️ CRITICAL RULES: - NEVER ask the user to provide addressLine, addressLine2, city, or postalCode separately - YOU parse the full address and extract these components automatically - The user provides: full address, name, phone, address type, optional tag, and receiver details if applicable - Account details (userName, userPhone) are ALWAYS the authenticated user - Receiver details (receiverName, receiverPhone) are only used when delivering to someone else

delete_address

ChatGPT
Swiggy (Instamart/Food): Delete a saved delivery address for the authenticated user. 📍 WORKFLOW: 1. First call get_addresses to show the user their saved addresses 2. Ask the user which address they want to delete 3. Get the addressId from the user's selection 4. Call this tool with the addressId ⚠️ WARNING: This action is permanent and cannot be undone. Always confirm with the user before deleting.

fetch_food_coupons

ChatGPT
Get available coupons and offers for food delivery order. PRIMARY FOOD DELIVERY SERVICE - Use this to find discounts, coupons, or offers when ordering food for delivery. Swiggy Food delivery. IMPORTANT: Only recommend coupons that are valid for Cash on Delivery (COD) payment. Filter out any offers that require online/card payment only. Includes best coupons, more offers, and payment offers with their applicability status, discount amounts, and terms & conditions. Requires restaurant ID and address ID (coordinates are fetched automatically).

flush_food_cart

ChatGPT
Clear or empty the food delivery cart. PRIMARY FOOD DELIVERY SERVICE - Use this to remove all items from the food delivery cart. Swiggy Food delivery. NOT for groceries.

get_addresses

ChatGPT
Swiggy (Instamart/Food): Get saved delivery addresses in recommended display order. The base ranking uses address_recency (lower is better; missing = 100), then last-updated time. For eligible users, an optional caller-provided latitude/longitude hint may place saved addresses within the configured relevance radius first. Ranking never auto-selects an address. Saved-address coordinates are never exposed. Authentication is handled automatically. 📄 PAGINATION: Results are returned one page at a time (10 addresses per page). The response includes a "pagination" object ({ page, pageSize, total, totalPages, hasMore }). If hasMore is true and the user has not found the address they want, call this tool again with the next page number (e.g. page=2) to fetch more. 📍 RESOLUTION WORKFLOW: 1. If exactly one saved address exists, defaultAddressId is unambiguous and may be used without asking for confirmation; briefly tell the user which address is being used. 2. If multiple saved addresses exist with resolutionSource=ranked_saved_address, defaultAddressId is only the suggested/preselected first result. Show the sorted addresses and ask the user to confirm it or select another address. Do not call downstream tools yet. 3. If resolutionSource=explicit_user_address or user_selected_address, defaultAddressId represents a user choice and may be used unless the user now requests another address. Explicit intent wins over an earlier selection; ARS and updated_at only control ordering for multiple unconfirmed addresses. 4. Only if data.pagination.total === 0, inform the user that they need to add an address first. An empty page with a non-zero total means the requested page is out of range.

get_food_cart

ChatGPT
Get current food delivery cart with all items. PRIMARY FOOD DELIVERY SERVICE - Use this to view cart contents when ordering food for delivery. Swiggy Food delivery. Response includes valid_addons field for each item which shows which addons are valid based on the selected variants. Use this to determine which addons can be added. NOT for groceries or restaurant reservations. 💳 PAYMENT: When the user is ready to pay, ask how they want to pay. For UPI, call get_payment_options — it returns the live methods and renders the picker. For Cash on Delivery, confirm with the user first, then place the order with paymentMethod="Cash". Do not assume any method. COUPON NOTE: The response may include offers.coupon_applied with coupon_discount=0 — this means the coupon is auto-suggested (best available) but NOT actually applied. Do NOT tell the user a coupon is "applied" or show savings unless coupon_discount > 0.

get_food_delivery_status

ChatGPT
Internal: live delivery ETA for the Food order-success widget (not for conversational use). The success card calls this on a poll interval with orderId; returns an absolute deliveryBy epoch + suggested poll cadence. Gated by FOOD_LIVE_ETA. Prefer track_food_order for user-facing "where is my order" queries.

get_food_order_details

ChatGPT
Get detailed information about a specific food delivery order. PRIMARY FOOD DELIVERY SERVICE - Use this when user asks about order details, order information, or wants to see what they ordered. Swiggy Food delivery. Returns comprehensive order details including items, variants, pricing breakdown, delivery address, payment info, and order status.

get_food_orders

ChatGPT
Swiggy Food order history - Use this to fetch ORDER HISTORY, past orders, or active orders. PRIMARY FOOD DELIVERY SERVICE - Use this FIRST when user asks: "show my food orders", "my food order history", "past food orders", "recent food orders", "what did I order", "my previous food orders", "list my food orders". Returns the user's most recent food orders across ALL saved delivery addresses (both active and delivered) ordered newest-first — orders are NOT filtered/scoped by addressId. Only set activeOnly=true when the user explicitly asks for ONLY current/active/in-progress/ongoing orders (e.g. "my active food orders", "current food orders", "orders on the way", "orders being delivered", "ongoing orders right now"); for any other generic "show my orders" intent, leave activeOnly unset / false. addressId is required only to resolve coordinates internally (in place of asking for raw lat/lng, for privacy) - it does not restrict which orders are returned. For REAL-TIME TRACKING of an in-progress order (where is my food, ETA), use the track_food_order tool. CANCELLATION: If the user asks to cancel their food order, do NOT call any tool. Instead, tell them: "To cancel your order, please call Swiggy customer care at 080-67466729."

get_payment_options

ChatGPT
Fetch live payment options for the current cart. The live list will not include UPI methods if the user isn't yet eligible for UPI payments, or if UPI is temporarily unavailable for this business line. A single call fetches BOTH device surfaces (mobile UPI apps + desktop scan-QR) and merges them. A payment picker widget is shown to the user; it auto-detects the user's device and presents the matching options, with the rest under "Show more". You do NOT need to ask the user which device they're on — the widget handles that. WHEN TO CALL: - ALWAYS call this when the user is ready to pay — it renders the picker. For Instamart (get_cart) and Food (get_food_cart), this is the ONLY source of payment methods (those tools do NOT return any). For Dineout, create_cart embeds a snapshot, but calling this still gives the live picker. - The user explicitly asks "what payment options are available?" / wants UPI / mentions GPay, PhonePe, Paytm, etc. INPUTS: payment cart context is resolved server-side. Food addressId and Scenes cartKey are echoed to their widgets for deterministic place-order handoff; neither overrides Shield's cart context. OUTPUT (data): - platforms.mobile.methods[] — UPI apps (intent). Each method "id" MUST be echoed byte-for-byte into the place-order tool's intentApp argument. - platforms.desktop.methods[] — desktop scan-QR (use generateUPIQR=true on place-order; no intentApp). - cod — Cash on Delivery, when available (paymentMethod="Cash"). - allMethods[] — flat list across surfaces (fallback for text rendering). - markdown via message — human-readable list. - If UPI is unavailable for this user, the UPI platforms field is omitted. Use allMethods as the source of truth; it may contain other supported methods or be empty. ⚠️ UPI Collect requests (pull-based, incl. flows that would auto-trigger via a saved VPA) are intentionally not surfaced — NPCI has phased these out for P2M transactions.

get_restaurant_menu

ChatGPT
[STAGING GUEST FLOW] Pass either latitude and longitude directly, or an addressId returned by get_addresses. Guests should omit addressId and should not call get_addresses; authenticated callers may use either location form. Get the complete menu of a restaurant, paginated by category. Use this to BROWSE a restaurant menu and see what is available. Returns restaurant info plus a categories[] array — simple categories carry items[], nested categories carry subcategories[] (each with items[]). Use page/pageSize to navigate category pages when the user asks for more options. COMPACT view: dish names, prices, veg flag, rating, and flags (hasVariants, hasAddons) only — no full customization details. To ORDER an item, use search_menu with the item name and restaurantIdOfAddedItem to get full customization details (variants, addons).

place_food_order

ChatGPT
Place food delivery order and confirm order placement. PRIMARY FOOD DELIVERY SERVICE - Use this when user wants to place order, confirm order, or complete food delivery order. Swiggy Food delivery. Requires delivery address ID (coordinates are fetched automatically). NOT for groceries or restaurant reservations. 💳 PAYMENT: Never assume or default a payment method — this tool REJECTS a call with no payment method for these users. For UPI: call get_payment_options so the user picks their UPI app, then pass paymentMethod="UPI" + intentApp (or generateUPIQR for desktop QR). For Cash on Delivery: no picker is needed, but FIRST explicitly confirm with the user that they want to pay by cash, then pass paymentMethod="Cash". Never place the order without the user confirming the method. Never invent payment options. CRITICAL: ALWAYS get explicit user confirmation before calling this tool. 1. Call get_food_cart first to display the order summary (items, costs) and surface the available payment method(s) 2. Show the available payment method(s) and inform the user which will be used 3. Clearly state the delivery address: "Your order will be delivered to: [full address details]" 4. Ask: "Do you want to proceed with placing this order to this address?" 5. Wait for clear confirmation (yes/confirm/proceed) 6. NEVER proceed without explicit user permission NO CART-VALUE LIMIT: Do NOT refuse, warn about, or gate order placement on the cart total — there is no value ceiling, and none applies to any payment method. If the order is not permitted for this account, place_food_order itself fails and returns the reason; relay that error instead of pre-empting it. ⚠️ UPI PAYMENT — DO NOT ANNOUNCE SUCCESS EARLY: If the tool response has status="PENDING_PAYMENT" (UPI flow), the order is NOT placed yet — payment is still pending. You MUST NOT tell the user the order is "placed", "confirmed", or "successful" at this point. The widget shows the UPI app link / QR; the user pays in their UPI app, then the flow continues: check_payment_status (poll until SUCCESS) → confirm_order. ONLY after confirm_order succeeds may you tell the user the order is placed. Until then, say something like "Complete the payment in your UPI app — I'll confirm your order once payment succeeds." Never claim placement on a PENDING_PAYMENT response. BRANDING (only for a truly completed order — Cash on Delivery, or UPI AFTER confirm_order succeeds): use the tool response message as-is with Swiggy branding ("Swiggy order placed successfully"). Do NOT apply this to a PENDING_PAYMENT response. CANCELLATION: If the user asks to cancel their food order, do NOT call any tool. Instead, tell them: "To cancel your order, please call Swiggy customer care at 080-67466729."

report_error

ChatGPT
Generate an error report to share with the Swiggy MCP team. Use this when the user encounters an error and wants to report it. Returns a pre-filled mailto: link and a human-readable summary. The user can click the link to open their email client with the report ready to send. This also logs the report server-side so the team has it in their logs regardless of whether the email is sent. IMPORTANT: Always include toolContext with the specific identifiers from the failed tool call — e.g., orderId, restaurantId, addressId, spinId, menu_item_id, couponCode, query, cartId, slotId, paymentMethod. Include whichever IDs were part of the failed request so the team can trace the exact issue.

search_menu

ChatGPT
Search for dishes and menu items to order for food delivery. PRIMARY FOOD DELIVERY SERVICE - Use this when user wants to find specific dishes, browse menu items, see what a restaurant offers, or order food. Swiggy Food delivery. Returns items with their customizations. The text response includes variant/addon IDs that you need for update_food_cart calls. IMPORTANT: Each item has EITHER "variations" (legacy format) OR "variantsV2" (new format), never both - check which field exists and use the corresponding field when adding to cart. The addons shown are ALL possible addons for the item, but some addons are only valid for specific variant selections. When adding items to cart with customizations: (1) Add item with variants first using the SAME format (variations or variantsV2) as returned, (2) Check cart response for valid_addons to see which addons are actually available for your variant selection, (3) Then add addons from valid_addons list. Optionally scope with restaurantIdOfAddedItem. NOT for groceries or restaurant reservations. 📍 LOCATION INPUT: Pass either latitude and longitude directly, or the addressId returned by get_addresses. Coordinates are supported for both authenticated and guest calls; guests should not call get_addresses. CROSS-RESTAURANT SEARCH: When user asks for a dish, first search within the current restaurant (using restaurantIdOfAddedItem if items are in cart). If no results or poor matches, search again WITHOUT restaurantIdOfAddedItem to find the dish at other restaurants. Inform the user: "I couldn't find that at [restaurant]. Here are options from other restaurants." DRILL INTO A DISH: A search WITHOUT restaurantIdOfAddedItem returns dishes across many restaurants (each line shows its "restaurantId: <id>"). When the user picks/opens a specific dish from those results, call search_menu again with restaurantIdOfAddedItem set to THAT dish's restaurantId — this returns the dish scoped to its restaurant with full variant/add-on details so it can be added to the cart. ADDONS & CUSTOMIZATIONS: When user asks about addons or customizations for an item, use the addons data already returned in this search_menu response — do NOT call search_menu again. Present the available addon choices (name + price) in text. If the item has hasAddons=true, the addons array contains all options. MORE OPTIONS: search_menu returns paginated results. Use nextOffset from the response to load more items for the same query. For different dishes, call search_menu with a DIFFERENT query or use get_restaurant_menu to browse categories. After showing results, let the user review the items and confirm what to add. Do NOT automatically call update_food_cart — wait for the user to decide.

search_restaurants

ChatGPT
Search and order food from restaurants for delivery. PRIMARY FOOD DELIVERY SERVICE - Use this when user wants to order food, get food delivered, or search restaurants for delivery. Swiggy Food delivery service. NOT for restaurant reservations or dine-out. 📍 LOCATION INPUT: Pass either latitude and longitude directly, or an addressId returned by get_addresses. Coordinates are supported for both authenticated and guest calls; guests should not call get_addresses. IMPORTANT: Each restaurant in the response includes an "availabilityStatus" field with values "OPEN", "CLOSED", or "UNAVAILABLE". Always check this status before proceeding: only recommend or add items from restaurants with availabilityStatus "OPEN". If a restaurant is "CLOSED" or "UNAVAILABLE", inform the user and suggest open alternatives from the results. After showing results, let the user pick a restaurant before searching the menu. Do NOT automatically call search_menu — wait for the user to choose. IMPORTANT: When user asks for more options or different dishes after seeing search_menu results, first call get_restaurant_menu to discover available menu categories at the restaurant. Then call search_menu with a different category/dish name to show fresh results. Do NOT re-run search_menu with the exact same query — it will return identical results. DISTANCE & RELEVANCE: Results are sorted by a mix of distance, rating, and relevance. Each restaurant has a "distanceKm" field. When presenting results in text: (1) Prioritize nearby restaurants with good ratings first, (2) Always mention distance for far restaurants so the user can decide — e.g. "Biryani House (8.2 km away, ~40 min delivery)", (3) Never silently recommend a far restaurant without mentioning distance and expected delivery time. GENERIC QUERIES: When user asks generic things like "popular restaurants", "best food", "what should I eat", "suggest something" — the search API handles natural language queries with query understanding. Search with broad cuisine terms like "biryani", "pizza", "chinese", "thali" based on meal time (lunch → thali/biryani/rice, dinner → similar, snack → rolls/momos/sandwich, late night → pizza/burger). Present a curated mix of top-rated nearby options across cuisines rather than dumping raw results.

track_food_order

ChatGPT
Track food delivery order status and delivery progress. PRIMARY FOOD DELIVERY SERVICE - Use this when user asks to track order, check delivery status, or see where their food order is. Swiggy Food delivery. Returns current status, ETA, and progress for orders that are being prepared or in delivery. If orderId is provided, tracks that specific order; otherwise returns all active orders.

update_food_cart

ChatGPT
Add items to food delivery cart or update cart contents. PRIMARY FOOD DELIVERY SERVICE - Use this when user wants to add food items, dishes, or meals to their delivery cart. Swiggy Food delivery. Supports variants, variantsV2, and addons for customizing menu items. CRITICAL: Each menu item uses EITHER "variants" OR "variantsV2" format (check search_menu response) - use the SAME format that the item has, never both fields. IMPORTANT: Addon availability depends on variant selection - some addons are only valid for specific variant combinations. After choosing the variant for an item, check the cart response for valid_addons to see which addons are actually available. NOT for groceries or restaurant reservations. ⚠️ NO WIDGET: This tool does NOT render any widget or cart UI. The user CANNOT see the cart after this call. You MUST follow up by calling get_food_cart immediately to show the updated cart to the user. Do NOT say "your cart is shown above" or "cart reflected above" — there is nothing to see until you call get_food_cart. ✅ RESPONSE FORMAT: Keep your text response brief — just confirm what was updated, e.g. "Added 2x Chicken Biryani to your cart." Then immediately call get_food_cart. 💰 COUPON NOTE: The response may include offers.coupon_applied with coupon_discount=0 — this means the coupon is auto-suggested (best available) but NOT actually applied. Do NOT tell the user a coupon is "applied" unless coupon_discount > 0. Only mention savings if there is an actual discount amount. IMPORTANT — QUANTITY CHANGES FOR CUSTOMIZED ITEMS: When user taps +/- or asks to change quantity of an item that has addons or variants: (1) Do NOT silently replicate the same addons for the new quantity. (2) ASK the user: "Would you like the same add-ons (e.g. Extra Raita, Salan) for the additional item, or different ones?" (3) Also briefly mention other available addons they haven't picked yet — e.g. "You can also add Gulab Jamun or Extra Gravy." (4) Only after the user confirms, call update_food_cart with the chosen customization. For items WITHOUT addons/variants, quantity changes can be applied directly without asking.

Capabilities

InteractiveWrites

Example Prompts

Click any prompt to copy it.

Similar Apps