用途:在 Swiggy Dineout 上找餐厅、查桌位时段并预订(免费或付费 deal),也可查询或取消预订。适用场景是用户想外出就餐、按菜系/区域/类型找位并订桌。
主要流程:locations → search → details → slots →(付费时 cart)→ book → status。
第一步,先用 locations 选地点 id,再用 search 搜索,只支持一个搜索词(餐厅名、菜系、区域,或 pub、rooftop、buffet 等)。无结果时说明没有匹配,建议换词,不要把不相关餐厅当作结果。
第二步,可选 details,然后 slots 查看某日期起 7 天内的时段。数据中 slots[] 含 dateStr、displayTime、reservationTime、slotId 及 deals[](itemId、isFree、bookingPrice)。按该日期的 dateStr 与 displayTime 匹配用户时间,返回时段内每 15 分钟都可订;以数据为准,不要声称列出的时间不可用。
第三步,先向用户确认“在什么时间、几位、免费还是某价格 deal”,得到肯定答复后再预订。免费 deal 一步完成:swiggy dineout book --restaurant-id <id> --slot-id <slotId> --item-id <itemId> --reservation-time <reservationTime> --guests <n> --yes --json --no-interactive。付费预购 deal 需先 cart,再带 cart-key 用 --pay upi --wait 预订。slotId、itemId(格式 restaurantId-ticketId)、reservationTime 必须从所选时段原样复制,不可由显示时间推算;人数限 1–20。付费预订返回 PENDING_PAYMENT,此时尚未完成预订,需按 swiggy-pay 继续。
第四步,用 status <orderId> 查看状态和能否取消,用 cancel <orderId> --reason "..." --yes 取消。仅在用户明确要求且有 orderId 时取消;cancel_booking 仍在逐步开放,若返回 MCP_ERROR,引导用户前往 Swiggy App 或致电 080-67466729。
限制与禁止:搜索后不要自动调用 details 或 slots,应让用户先选餐厅;未经第三步明确询问不得下单;book_table 非幂等,出错后不要重试,先运行 status。费用、价格仅以 deal 数据中的 isFree 与 bookingPrice 为准,资料未提供其他收费细节。