Skip to content

Restaurant Reservations

Restaurant Reservations

The agent can search availability, book, cancel, list upcoming reservations, and “snipe” releases (auto-book when a slot opens) across four reservation providers. Each provider is an independent module behind a shared interface, so swapping or adding providers doesn’t change the agent’s mental model.

Providers

ProviderSearchAvailabilityBookSnipeCancelList
ResyyesyesAPIyesyesyes
OpenTableyesyeshand-off
TockyesyesAPIyesyesyes
SevenRoomsyesyesAPIyesyesyes

OpenTable does not expose a booking API to third parties, so the agent generates a pre-filled deep link and hands off to the user’s browser to confirm. The CLI never holds OpenTable credentials.

Setup

Each provider is configured independently:

Terminal window
restaurant setup resy # interactive: signs in, stores tokens
restaurant setup tock
restaurant setup sevenrooms

OpenTable needs no setup — search and hand-off work out of the box.

Tokens for API-backed providers are stored in the agent’s secrets store, not in the repo.

Safety Invariants

  • Destructive commands always confirm. book, cancel, jobs cancel, and snipe prompt for y/N unless invoked with --yes.
  • OpenTable can never auto-confirm. The provider doesn’t support API booking, so the agent always hands off to the user’s browser.
  • Per-agent allowlist. Restricted agents (group-chat, family DM) do not have the restaurant binary on their exec allowlist by default — book requests must come from the owner’s session.

Snipe Jobs

A snipe schedules a future booking attempt at the exact moment slots are released (e.g., 10am sharp when a Resy calendar opens):

Terminal window
restaurant snipe --provider resy --venue <id> --party 4 \
--date 2026-06-15 --time "19:00" --release "2026-05-15T17:00:00Z"

The job runs even if the host is asleep — the daemon wakes for the release time, attempts the booking, and notifies on success or failure. Inspect or cancel pending jobs with restaurant jobs list / restaurant jobs cancel.

Agent Surface

The agent reaches the same capabilities through the restaurant-cli plugin’s tool surface, with the same confirmation gates. Day-to-day requests look like:

  • “Book Canlis for two on Friday at 7”
  • “Snipe a 4-top at Sushi Kashiba next Saturday — release is Wednesday at 9am”
  • “What’s on my reservation list?”