Swiggy Builders Club
Official documentation: mcp.swiggy.com/builders/docs. BudgetFood AI is a demo agent that mirrors the discover → score → shortlist phase; production ordering uses the tools below against https://mcp.swiggy.com/food.
Demo disclaimer: This web app uses static menus and a local scoring engine. It does not call Swiggy APIs from the browser. To submit real orders, wire an MCP client with OAuth as described in Authenticate.
| Server | Endpoint | Tools |
|---|---|---|
| Food | https://mcp.swiggy.com/food | 14 |
| Instamart | https://mcp.swiggy.com/im | 13 |
| Dineout | https://mcp.swiggy.com/dineout | 8 |
Transport: Streamable HTTP (JSON-RPC) · Auth: OAuth 2.1 with PKCE
From Order food end-to-end: address → restaurants → menu → cart → coupons → place → track. v1: COD only; ₹1000 cart cap; confirm before place_food_order.
Resolve delivery address
Use saved address label + addressId before any search. Never pass raw coordinates as args.
get_addressesFind restaurants
Pass addressId + query. Only surface restaurants with availabilityStatus OPEN; mention distance for far picks.
search_restaurantsBrowse menu
Paginated categories; use search_menu for keyword search across items.
get_restaurant_menusearch_menuBuild cart
Single-restaurant cart; switching restaurant flushes cart — use flush_food_cart to restart explicitly.
update_food_cartApply coupon (optional)
v1 COD only — prefer coupons that do not require online payment.
fetch_food_couponsapply_food_couponConfirm & place
Builders Club ₹1000 cart cap. Confirm with user before place_food_order — not idempotent; check get_food_orders before retry on 5xx.
get_food_cartplace_food_orderTrack delivery
Poll at most every ~10s for ETA updates.
track_food_orderdiscover
get_addressesget_restaurant_menusearch_menusearch_restaurantscart
apply_food_couponfetch_food_couponsflush_food_cartget_food_cartupdate_food_cartorder
place_food_ordertrack
get_food_order_detailsget_food_orderstrack_food_ordersupport
report_errorPaste into ~/.cursor/mcp.json (or project .cursor/mcp.json), then reload MCP servers and complete OAuth in the browser — official instructions.
{
"mcpServers": {
"swiggy-food": {
"url": "https://mcp.swiggy.com/food"
},
"swiggy-instamart": {
"url": "https://mcp.swiggy.com/im"
},
"swiggy-dineout": {
"url": "https://mcp.swiggy.com/dineout"
}
}
}search_restaurants / search_menu with structured intent.update_food_cart.place_food_order (paymentMethod: COD) and track_food_order.“Ready” depends on whether you are shipping a showcase demo or production MCP traffic.
Current build
Catalog source: demo (static lib/menu-data.ts + lib/restaurant-data.ts). Set NEXT_PUBLIC_DATA_SOURCE=mcp when your scoring layer consumes MCP payloads only.
| File | Role |
|---|---|
| lib/menu-data.ts | Static menu items; consumed by lib/recommend.ts for scoring. Replace with MCP menu payloads for production. |
| lib/restaurant-data.ts | Demo restaurants & coupons; used on home / restaurants pages for counts and browsing. |
| Question | Answer |
|---|---|
| How do I know it’s ready? | Demo/submission: build + run + deploy OK; /swiggy-mcp documents integration. Real MCP: OAuth works, tools return live data end-to-end, checkout follows Swiggy rules. |
| Remove demo restaurants for real MCP? | Yes for production paths — discovery and menus must come from MCP tools (search_restaurants, get_restaurant_menu, etc.). Static lib/menu-data.ts and lib/restaurant-data.ts are not live catalog data; remove or gate behind demo-only mode. |