Book a table
Dineout journey - find a restaurant, check availability, reserve.
Dineout is Swiggy's table-reservation surface across 50+ Indian cities. The flow is compact: find → check slots → book → confirm.
The flow
get_saved_locations
│
▼
search_restaurants_dineout ──► get_restaurant_details
│
▼
get_available_slots ──► book_table ──► get_booking_status
Step 1 - Start with a location
const locations = await client.callTool({ name: "get_saved_locations" });
// Unlike Food/Instamart, Dineout returns lat/lng explicitly for "near me" queries
If the user asks "restaurants near me for Friday dinner", use the first saved location's coordinates.
Step 2 - Search
const restaurants = await client.callTool({
name: "search_restaurants_dineout",
arguments: {
lat: locations.data[0].lat,
lng: locations.data[0].lng,
query: "italian",
},
});
Results include availability status, offers, cuisines, and price range. Filter to restaurants where availability is "AVAILABLE" before presenting.
Step 3 - Dig into details
const details = await client.callTool({
name: "get_restaurant_details",
arguments: { restaurantId: restaurants.data.restaurants[0].id },
});
// details.data: ratings, amenities, menu images, exclusive Dineout deals
Step 4 - Check available slots
const slots = await client.callTool({
name: "get_available_slots",
arguments: {
restaurantId: details.data.id,
date: "2026-05-01",
guestCount: 4,
},
});
// slots.data has 7-day forward availability, broken into breakfast/lunch/dinner bands
Surface slot times in the user's timezone (all restaurants are in India; IST applies).
Step 5 - Book
const booking = await client.callTool({
name: "book_table",
arguments: {
restaurantId: details.data.id,
slotId: slots.data.slots[0].slotId,
guestCount: 4,
},
});
Important: book_table is not idempotent. On 5xx, call get_booking_status with the restaurant and slot before retrying.
Step 6 - Confirm
const status = await client.callTool({
name: "get_booking_status",
arguments: { bookingId: booking.data.bookingId },
});
Send the user the confirmation number and the restaurant's address.
Agent prompt
Common errors
SLOT_UNAVAILABLE→ slot filled; refetch availability and offer alternatives.RESTAURANT_NOT_BOOKABLE→ restaurant isn't Dineout-enabled; offer dine-in walk-in guidance or a Food order instead.BOOKING_WINDOW_CLOSED→ outside booking hours; present next available day.
Full catalogue: errors.