# resy-mcp [Health: Active]

**Category:** 💻 Developer Tools  
**Repository:** https://github.com/chrischall/resy-mcp  
**GitHub Stars:** 2  
**npm Downloads (last month):** 3543  
**Views:** 0  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/resy-mcp

## Description
Resy reservation management — search, book, cancel, favorites, and Priority Notify for Claude

## Tools
Capabilities this server exposes over MCP:

- **resy_get_profile** — Get the authenticated Resy user's profile (name, email, phone, booking count, member-since date). Payment method IDs are not exposed.
- **resy_list_payment_methods** — List the user's saved payment methods on Resy. Returns id, brand, last four digits, expiry, and is_default. The id can be passed as payment_method_id to resy_book.
- **resy_healthcheck** — Resolves the credential the way real tools do, then makes one authenticated request to api.resy.com. Reports which source supplied the credential, whether api.resy.com accepted it, the round-trip time, and a plain-English hint distinguishing 'no credential' from 'credential rejected' from 'a api.resy.com-side problem'. Read-only; never returns the credential itself. Call this when a real tool fails and you want to know which hop broke.
- **resy_search_venues** — Search Resy for restaurants with availability. Returns venues including any bookable slot tokens for the requested date + party size. Defaults to NYC geo if lat/lng omitted.
- **resy_find_slots** — List available reservation slots at a specific venue for a date + party size. Returns slot config_tokens suitable for booking. Tokens expire quickly; book soon after fetching.
- **resy_get_venue** — Get full details for a single Resy venue by id.
- **resy_list_reservations** — List the user's Resy reservations. Defaults to upcoming; pass scope="past" or "all" to broaden. Each result includes the resy_token needed for cancellation, plus occasion/special_request/cancellability.
- **resy_cancel** — Cancel a Resy reservation by its resy_token (the rr://... identifier returned from resy_book or resy_list_reservations). The confirmation preview shows the Resy account, venue, date, time, party size, and any cancellation fee. Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE). Once confirmed, the result carries `cancelled` (boolean: true only when the cancellation is confirmed) and `outcome` ("cancelled", "not_cancelled", or "unknown"). On "unknown", `cancelled` is false but the reservation MAY have been cancelled — check resy_list_reservations before retrying.
- **resy_book** — Book a reservation. Composite tool: internally runs find-slots → get booking details → book. It books ONLY the exact slot a preview showed. The first call returns a preview (the Resy account, venue, date, party size, the exact slot time that would be booked, its slot_type, the payment card last-4, and the slot's cancellation_policy / payment_terms — any no-show fee or deposit) and books nothing. Pass desired_time (HH:MM, 24-hour) to target a specific slot. If your exact desired_time is not available the tool does NOT auto-book a different time — it returns the available times so you can pick, unless you pass allow_closest_time:true (which previews the nearest slot). Omit desired_time to preview the first available slot. Resy can list several slots at one time with different seating types (Dining Room / Bar / Patio) and different fees; pass slot_type to target one. To book: on a client without a confirmation prompt the preview comes back with a confirmToken bound to that exact slot and its terms — after the user approves, call again with the same arguments plus the preview's time as desired_time and the confirmToken. On a client that can prompt, call again with the preview's time as desired_time, its slot_type and its terms_token, and the user is asked to confirm. If that slot is gone, or its seating type or cancellation/payment terms changed since the preview, nothing is booked and a fresh preview is returned. Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE). Before booking, it checks your existing reservations and refuses if you already hold one at this venue on this date (e.g. an earlier call that timed out but went through); pass allow_duplicate:true to book another anyway. Uses the user's default payment method unless payment_method_id is supplied (it must be one of the saved cards from resy_list_payment_methods; the preview names the card by brand and last-4).
- **resy_list_favorites** — List the user's favorited Resy venues ("hit list").
- **resy_add_favorite** — Add a venue to the user's favorites by venue_id.
- **resy_remove_favorite** — Remove a venue from the user's favorites by venue_id.
- **resy_list_notify** — List Priority Notify subscriptions — tables you are waiting for when reservations open up.
- **resy_add_notify** — Subscribe to Priority Notify for a venue/date/party size. Resy emails you when a matching slot opens. time_start / time_end bound the window you're willing to accept (HH:MM, 24h). Resy's notify booking window only accepts near-term dates (~30 days out).
- **resy_remove_notify** — Cancel a Priority Notify subscription by notify_id. The tool looks up the full spec from resy_list_notify internally — no other input needed.

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `npx` (confidence: high):

```json
"mcpServers": {
  "resy-mcp": {
    "command": "npx",
    "args": ["-y","resy-mcp"],
    "env": {
      "RESY_AUTH_TOKEN": "",
      "RESY_EMAIL": "",
      "RESY_PASSWORD": "",
      "RESY_DISABLE_FETCHPROXY": "",
      "RESY_TOKEN_CACHE": "",
      "RESY_TOKEN_FILE": "",
      "RESY_API_KEY": "",
      "RESY_API_KEY_FILE": ""
    }
  }
}
```

**Requires environment variables:** `RESY_AUTH_TOKEN`, `RESY_EMAIL`, `RESY_PASSWORD`, `RESY_DISABLE_FETCHPROXY`, `RESY_TOKEN_CACHE`, `RESY_TOKEN_FILE`, `RESY_API_KEY`, `RESY_API_KEY_FILE` — the values above are empty placeholders; fill in real credentials before running (see the repository for what each one is for).

## Documentation

## What resy-mcp does

The resy-mcp MCP server exposes Resy account and reservation operations to MCP-compatible clients. It can retrieve the current profile, search venues by date and party size, inspect venue details, and list bookable slots. Reservation management includes viewing upcoming or past bookings, booking a specific table, and canceling a reservation by its Resy token.

The server also covers two account-management areas: favorited venues and Priority Notify subscriptions. Adding and removing favorites or notify subscriptions is available through dedicated tools. The intended use is personal management of one user's own Resy account, not bulk booking, table resale, or automated competition for newly released slots.

## How it works

The resy-mcp MCP server calls the private endpoints used by the Resy web and mobile applications. Resy does not publish an official API, so endpoint behavior, API keys, rate limits, and bot detection may change without notice. Use of the server remains subject to Resy's Terms of Service, which the project notes may prohibit bots and automated booking and may lead to account restrictions.

Authentication follows a priority order. A pre-obtained `RESY_AUTH_TOKEN` takes precedence, followed by email-and-password authentication. If neither is configured, the server can use the fetchproxy browser bridge through a signed-in resy.com tab and the ContextMint Bridge extension. Tokens and API-key data may be cached on disk according to the configured settings.

Writes are guarded by confirmations. `resy_book` and `resy_cancel` can request an interactive prompt. On clients without prompt support, the initial call returns a preview and confirmation token, and a later call must provide the approval token. Booking is tied to the exact previewed slot, including its time, seating type, and terms; changed slot data results in a new preview instead of a booking.

## Setup and configuration

Install dependencies and build the package with `npm install` followed by `npm run build`. Run the local stdio server with `node dist/bundle.js`.

Configuration is optional because the browser-bridge path can provide authentication. Supported settings include:

- `RESY_AUTH_TOKEN` for a directly supplied Resy token.
- `RESY_EMAIL` and `RESY_PASSWORD` for password login.
- `RESY_DISABLE_FETCHPROXY=1` to disable browser-bridge authentication.
- `RESY_TOKEN_CACHE` and `RESY_TOKEN_FILE` to control token caching.
- `RESY_API_KEY` and `RESY_API_KEY_FILE` to provide or store the web-app API key.
- `RESY_CAPTURE_TIMEOUT` and `RESY_WS_PORT` to configure bridge behavior.

Confirmation behavior can be adjusted with `MCP_CONFIRM_MODE`, `MCP_CONFIRM_ELICITATION`, `MCP_CONFIRM_TTL_SECONDS`, and `MCP_CONFIRM_SECRET`. The project also documents MCPB and Claude Desktop installation, with optional authentication fields that can be left blank when using the bridge.

## Tools and capabilities

The resy-mcp MCP server provides tools for:

- Reading the account profile.
- Searching venues and inspecting availability.
- Finding slots and retrieving venue details.
- Booking and canceling reservations.
- Listing upcoming and past reservations.
- Listing, adding, and removing favorites.
- Listing, adding, and removing Priority Notify subscriptions.

The composite booking operation finds a venue slot, retrieves its details, and submits the booking request after the required confirmation flow.

## Limitations and notes

This integration is unaffiliated with Resy or American Express and is intended for personal, non-commercial use. The maintainer warns that Resy may rotate keys, alter endpoint formats, introduce additional bot detection, enforce rate limits, reject slot locks, or suspend accounts. Users accept responsibility for consequences associated with their account and should stop using the server if Resy objects to the activity.

_Full upstream README: https://allmcps.com/mcp/resy-mcp/readme_

