get_available_slots

Swiggy Dineout (Reservations): Check available time slots for TABLE BOOKING at a restaurant. NOT for food delivery or grocery orders. Returns breakfast, lunch, and dinner slots for up to 7 DAYS starting from the requested date in a single call. the flow handles date switching client-side — do NOT call this tool again when the user picks a different date in the UI. Date must be in YYYY-MM-DD format (e.g., "2026-04-20") or epoch timestamp. Each slot contains deals — FREE (isFree=true) and PAID prebook/prime deals (isFree=false, with a price). Surface BOTH to the user. FREE deals book directly via book_table. PAID deals book via UPI: create_cart (DEAL_TICKET_PURCHASE) → get_payment_options → book_table with paymentMethod="UPI". Each slot in the response contains: - dateStr: Date the slot belongs to (YYYY-MM-DD) - slotId: From slot.deals[].slotId - reservationTime: Epoch timestamp (slot.reservationTime) - itemId: From slot.deals[].itemId (format: "restaurantId-ticketId") - displayTime: e.g., "10:00 AM" - slotGroupName: "Breakfast", "Lunch", or "Dinner" - deals[]: Each deal has title, isFree, bookingPrice (₹ cover charge; bookingPrice>0 / isFree=false means a PAID prebook deal, even if the title reads like a discount), dealCategory, discountPercentage Example: "What times are available at [Restaurant] on [Date]?" → Call with restaurant ID and date. Example: User changes date in UI → Do NOT call this tool again; the UI already has all 7 days loaded. RULES: - If the user confirms a time/date combo visible in the response, TRUST it and call book_table directly. - For dates other than the first, the per-date summary gives meal-type ranges; the structuredContent has the exact slotId/itemId/reservationTime. - Do NOT call get_available_slots again for a different date — the response already contains all 7 days. After showing slots, let the user pick a date and time. Do NOT automatically call book_table — wait for the user to confirm their choice.

See get_available_slots in actionComing soon

Example

const result = await client.callTool({
  name: "get_available_slots",
  arguments: {
    restaurantId: "rest_42",
    date: "2026-05-01",
    latitude: 12.9716,
    longitude: 77.5946,
  },
});

Parameters

ParameterTypeRequiredDescription
restaurantIdstringyesRestaurant ID from search or details
datestringyesStarting date as YYYY-MM-DD string (e.g., "2026-04-20") or epoch timestamp as numeric string (e.g., "1735689600"). Returns slots for up to 7 days from this date.
latitudenumberyesUser's latitude
longitudenumberyesUser's longitude

Session credentials (user identity, access token) are supplied automatically by the authenticated MCP session - you do not pass them in the tool call. See Authenticate.

Response

All Swiggy MCP tools return:

{
  "success": true,
  "data": { /* tool-specific payload */ },
  "message": "optional human-readable message"
}

On failure:

{
  "success": false,
  "error": { "message": "description of what went wrong" }
}

See Error codes for the full catalogue.

Output schema

data: {
  slots: Array<{
    isFree?: boolean;
    slotId: number;
    displayTime: string;
    reservationTime: number;
    slotGroupName: string;
    availableInventory: number;
    dateStr?: string;
    subText?: string;
    daySubtext?: string;
    price?: number;
    deals: Array<{
      itemId: string;
      ticketId: string;
      slotId: number;
      title?: string;
      discountPercentage?: number;
      coverCharge?: number;
      displayFee?: string;
      bookingPrice?: number;
      isFree?: boolean;
      availableInventory?: number;
      availableInventoryCount?: number;
    }>;
  }>;
  restaurantId: string;
  date: string;
  restaurantName?: string;
  guestCount?: number;
  latitude: number;
  longitude: number;
}

This schema documents the structured payload returned by get_available_slots. Optional fields can vary by user state, cart state, and live Swiggy availability.

Schema notes

  • restaurantId: Swiggy restaurant identifier. Preserve it exactly for menu, cart, slot, booking, and order follow-up calls.
  • latitude / longitude: coordinates from the selected saved location or restaurant context. Reuse returned values for follow-up slot, tracking, or payment calls; do not infer them from address text.
  • slotId / itemId / ticketId / reservationTime / dateStr / displayTime: Dineout slot/deal fields. Copy identifiers from the exact selected slot/deal; do not derive them from display time or restaurant name.
  • isFree / bookingPrice / coverCharge / displayFee: Dineout payment/price indicators. Paid deals must go through the payment flow; free deals can be booked directly after confirmation.
  • availableInventory / availableInventoryCount: live capacity for the slot/deal. Treat it as time-sensitive and reconfirm if the user waits or changes date/time.
  • price: item-level price fields. They may differ before and after coupons, variants, add-ons, or stock updates; use cart/order totals for checkout.
  • Fields marked optional may be omitted depending on user state, cart/order state, and live Swiggy availability.
  • Use returned identifiers and enum values exactly as provided; do not invent fallback IDs, status values, payment methods, or timestamps.

Details

FieldValue
Nameget_available_slots
MCP ServerDineout
EndpointPOST mcp.swiggy.com/dineout
StageReserve
Behaviourread-only

Next in this journey →

Continue with book_table.