Local services & SaaS
Faire
Orders, inventory, reorders and messages for wholesale brands.
12 endpoints
Read Resy reservations and venue availability with an agent or script. Use MCP or REST to prepare dining shortlists and a personal reservation brief.
11 tools Read and write
Resy has no public API (checked 27 Oct 2026). American Express runs an official Resy MCP app that only Claude and ChatGPT can connect to: it finds tables and, in ChatGPT, books one. Cotlet runs 11 Resy tools hosted, over MCP for agents and REST for scripts, including the ones the official app leaves out.
| What you need | Resy in Claude | Resy in ChatGPT | Cotlet |
|---|---|---|---|
| Search tables with live availability | Yes, US | Yes, US | Yes |
| Book a table | Hands off to Resy | Yes | Yes, after your OK |
| See, change or cancel your reservations | No | No | Yes |
| Set or remove Notify alerts | In the Resy app | In the Resy app | Yes |
| Use from another agent, n8n or a script | Claude only | ChatGPT only | Yes |
| Allowed by Resy's terms | Yes, official | Yes, official | Not approved by Resy |
Checked 27 Oct 2026. Sources: Resy newsroom: Resy restaurants in the U.S. are now discoverable in Claude · Resy newsroom: Resy launches reservations in ChatGPT · American Express: Find Resy restaurants in Claude (PDF) · Resy Help: change or cancel a reservation
Use your own account in its Cotlet Cloud Browser.
Connect your agent or create a Cotlet API key.
Ask your agent or send an HTTP request.
We never keep your Resy password, and no table is booked, moved or cancelled until you approve it. Who can see your session
Use MCP with your AI agent, or HTTP requests in n8n, Make, Zapier and scripts. Follow the MCP setup below or jump to the REST guide.
Log in to Resy in Cotlet. Create a Cotlet account, sign in to Resy in its Cloud Browser and switch on Enable for agents.
Add the server address. Paste https://cotlet.dev/mcp/v1 into your agent as an MCP server or custom connector.
Allow the connection. Chat apps open a Cotlet sign-in. Code editors, n8n and scripts send an API key from the console.
Resy sits on the shared address https://cotlet.dev/mcp/v1 with your other apps. You can keep Resy's own app in Claude or ChatGPT connected next to it; give the two different names so your agent knows which one to call.
Settings > Connectors > Add custom connector
URL: https://cotlet.dev/mcp/v1/connect
Claude Code:
claude mcp add --transport http cotlet-resy \
https://cotlet.dev/mcp/v1 \
--header "Authorization: Bearer $COTLET_API_KEY" Settings > Apps & Connectors > Create
MCP server URL: https://cotlet.dev/mcp/v1/connect
Authentication: OAuth // ~/.cursor/mcp.json
{
"mcpServers": {
"cotlet-resy": {
"url": "https://cotlet.dev/mcp/v1",
"headers": { "Authorization": "Bearer ${env:COTLET_API_KEY}" }
}
}
} # ~/.codex/config.toml
[mcp_servers.cotlet-resy]
url = "https://cotlet.dev/mcp/v1"
bearer_token_env_var = "COTLET_API_KEY" MCP Client Tool (inside an AI Agent)
Transport: HTTP Streamable
URL: https://cotlet.dev/mcp/v1
Auth: Bearer, <your key>
Tool: resy_read Make: MCP Client > Call a tool
Zapier: MCP Client by Zapier > Run Tool
Server URL: https://cotlet.dev/mcp/v1
Token: <your key>
Tool: resy_write Create a Cotlet API key with access to Resy and its read operations. Store it as COTLET_API_KEY in your environment or automation platform's credential store.
Sign in to Resy in its Cotlet Cloud Browser and enable the app for agents. Use your Resy diner account; some restaurants require a card on file for reservations.
curl https://cotlet.dev/api/v1/resy/reservations \
-H "Authorization: Bearer $COTLET_API_KEY" A successful REST call puts the tool output in result. This illustrative response excerpt omits call IDs, messages and credit details.
{
"status": "success",
"app": "resy",
"tool": "list_reservations",
"result": {
"reservations": [
{
"reservation_id": "r_70412",
"venue": "Trattoria Esempio",
"date": "2026-11-14",
"time": "19:00",
"party_size": 4
}
]
}
} Read result.reservations for your upcoming bookings, soonest first. Use the past status for previous reservations; this list has no cursor or limit input.
Use reservation IDs with get_reservation for cancellation deadlines, fees and currency. Tock bookings do not appear in this Resy list.
Availability reads reserve nothing and slots can disappear. The reporting workflows below do not book, cancel or change Notify requests.
| Tool | Connect through | Example workflow |
|---|---|---|
| n8n | HTTP Request | Read reservations and details into a personal dining calendar with cancellation deadlines and fees. |
| Make | HTTP > Make a request | Combine venue search, venue details and availability into a dated shortlist without reserving a table. |
| Python or Node.js | REST API | Read existing Notify requests into a review list without adding or changing alerts. |
Send Authorization: Bearer <your Cotlet API key> in request headers. You configure the schedule, destination and record comparisons.
Cotlet reads Resy; your workflow steps write to your chosen destination. These HTTP workflows do not require a native Cotlet connector or a prebuilt template.
Python and Node.js can use the same HTTP requests without an AI agent. Keep access keys in credentials, outside shared workflow exports.
The API and MCP reference lists operations and inputs. The REST API guide explains authentication, errors and approvals.
Read only. Each call reads Resy once; nothing repeats in a loop to catch a table. Restaurants that book through Tock show no times.
Returns restaurants in the order Resy shows them for the search, each with its venue_id, name, neighborhood, cuisine and the open times Resy shows for that date and party size. A restaurant with no open time is still listed, with an empty list, so you can set a Notify alert there. Some restaurants on Resy take bookings through Tock; those show no times here.
MCP callresy_read → search_venues
REST endpointGET https://cotlet.dev/api/v1/resy/venues/search
| Name | Type | Description |
|---|---|---|
| query string | string | Restaurant name, cuisine or neighborhood, for example "Italian" or "West Village". |
| location string required | string | City as Resy lists it, for example "New York" or "Los Angeles". |
| date string required | string | Date as YYYY-MM-DD. |
| party_size integer required | integer | Number of guests. |
{
"location": "location",
"date": "date",
"party_size": 1
} {
"date": "2026-10-30",
"party_size": 4,
"venues": [
{
"venue_id": "v_58231",
"name": "Trattoria Esempio",
"neighborhood": "West Village",
"cuisine": "Italian",
"times": [
"19:00",
"20:15"
]
},
{
"venue_id": "v_61907",
"name": "Osteria Campione",
"neighborhood": "West Village",
"cuisine": "Italian",
"times": []
}
]
} Returns what the restaurant shows on its Resy page: address, neighborhood, cuisine, price range, description and the notes it adds about booking. It changes nothing and reaches no one.
MCP callresy_read → get_venue
REST endpointGET https://cotlet.dev/api/v1/resy/venues/{venue_id}
| Name | Type | Description |
|---|---|---|
| venue_id string required | string | A venue_id from search_venues. |
{
"venue_id": "venue_8c41d2"
} {
"venue_id": "v_58231",
"name": "Trattoria Esempio",
"address": "12 Example Street, New York, NY",
"neighborhood": "West Village",
"cuisine": "Italian",
"price_range": "$$$",
"notes": "Reservations open 14 days ahead."
} Returns each open slot with its slot_id, time, table type such as Dining Room or Bar, and the cancellation policy the restaurant set for it. Each call reads Resy once; the tool does not repeat itself to wait for a table, so for a full restaurant use add_notify. Slots change fast, so book soon after reading them.
MCP callresy_read → get_availability
REST endpointGET https://cotlet.dev/api/v1/resy/venues/{venue_id}/availability
| Name | Type | Description |
|---|---|---|
| venue_id string required | string | A venue_id from search_venues. |
| date string required | string | Date as YYYY-MM-DD. |
| party_size integer required | integer | Number of guests. |
{
"venue_id": "venue_8c41d2",
"date": "date",
"party_size": 1
} {
"venue_id": "v_58231",
"date": "2026-10-30",
"party_size": 4,
"slots": [
{
"slot_id": "sl_9f2c41",
"time": "19:00",
"table_type": "Dining Room",
"cancellation_policy": "Cancel by 2 pm the day before or pay 25 USD per guest."
},
{
"slot_id": "sl_9f2c58",
"time": "20:15",
"table_type": "Bar",
"cancellation_policy": "Cancel by 2 pm the day before or pay 25 USD per guest."
}
]
} Booking, moving and cancelling reach the restaurant, so all three wait for your OK. The restaurant's cancellation policy applies as it does in the app.
Returns the reservations from Reservations in your Resy profile, soonest first for upcoming ones, each with its reservation_id, restaurant, date, time and party size. Bookings made through Tock for a restaurant listed on Resy are not in your Resy account and do not show up.
MCP callresy_read → list_reservations
REST endpointGET https://cotlet.dev/api/v1/resy/reservations
| Name | Type | Description |
|---|---|---|
| status string | string | upcoming or past. Defaults to upcoming. |
{
"reservations": [
{
"reservation_id": "r_70412",
"venue": "Trattoria Esempio",
"date": "2026-10-30",
"time": "19:00",
"party_size": 4
},
{
"reservation_id": "r_70388",
"venue": "Bistro Modello",
"date": "2026-10-31",
"time": "20:30",
"party_size": 2
},
{
"reservation_id": "r_70355",
"venue": "Sushi Campione",
"date": "2026-11-04",
"time": "18:45",
"party_size": 6
}
]
} Returns what Manage Reservation shows: restaurant, address and phone, date, time, party size, table type, your special request and the cancellation policy with its deadline and fee per guest. The restaurant sets the policy, and Resy points questions about fees to the restaurant.
MCP callresy_read → get_reservation
REST endpointGET https://cotlet.dev/api/v1/resy/reservations/{reservation_id}
| Name | Type | Description |
|---|---|---|
| reservation_id string required | string | A reservation_id from list_reservations. |
{
"reservation_id": "reservation_8c41d2"
} {
"reservation_id": "r_70412",
"venue": "Trattoria Esempio",
"address": "12 Example Street, New York, NY",
"date": "2026-10-30",
"time": "19:00",
"party_size": 4,
"table_type": "Dining Room",
"special_request": "Birthday dinner",
"cancellation_policy": {
"deadline": "2026-10-29T14:00:00-04:00",
"fee_per_guest": 25,
"currency": "USD"
}
} Books the table under your name and returns the reservation_id; Resy then sends its usual confirmation email from noreply@resy.com. Restaurants with a cancellation fee need a card on file, and the slot's cancellation policy applies from the moment you book. A slot someone else took in the meantime fails the call without booking. By default you confirm each call; you can switch that off for this tool.
MCP callresy_write → book_reservation
REST endpointPOST https://cotlet.dev/api/v1/resy/slots/{slot_id}/reservations
| Name | Type | Description |
|---|---|---|
| slot_id string required | string | A slot_id from get_availability. |
| special_request string | string | A note for the restaurant, for example "Birthday dinner". |
{
"slot_id": "slot_8c41d2"
} {
"reservation_id": "r_70412",
"status": "confirmed",
"venue": "Trattoria Esempio",
"date": "2026-10-30",
"time": "19:00",
"party_size": 4
} Does what Change Reservation does in Resy and returns the reservation as it is after the change. The new slot's cancellation policy replaces the old one. If the new slot is gone, the call fails and the old reservation stays. By default you confirm each call; you can switch that off for this tool.
MCP callresy_write → change_reservation
REST endpointPATCH https://cotlet.dev/api/v1/resy/slots/{slot_id}/reservations/{reservation_id}
| Name | Type | Description |
|---|---|---|
| reservation_id string required | string | A reservation_id from list_reservations. |
| slot_id string required | string | The new slot_id from get_availability for the new date, time or party size. |
{
"reservation_id": "reservation_8c41d2",
"slot_id": "slot_8c41d2"
} {
"reservation_id": "r_70388",
"status": "confirmed",
"venue": "Bistro Modello",
"date": "2026-10-31",
"time": "21:30",
"party_size": 2
} Cancels the booking the way Cancel does in Manage Reservation. When you cancel after the restaurant's deadline, its policy can charge a fee per guest, and the approval shows that fee before you confirm. A cancelled reservation cannot be restored; the table goes back to other diners. By default you confirm each call; you can switch that off for this tool.
MCP callresy_write → cancel_reservation
REST endpointPOST https://cotlet.dev/api/v1/resy/reservations/{reservation_id}/cancel
| Name | Type | Description |
|---|---|---|
| reservation_id string required | string | A reservation_id from list_reservations. |
{
"reservation_id": "reservation_8c41d2"
} {
"reservation_id": "r_70355",
"status": "cancelled",
"venue": "Sushi Campione",
"fee_charged": false
} Resy itself watches for the opening and alerts you; the tools only set and remove your place on the list.
Returns the Notify requests Resy shows next to your reservations, each with its notify_id. A Notify alert is not a reservation: Resy sends a push or email when a matching table opens, and the table still has to be booked.
MCP callresy_read → list_notify
REST endpointGET https://cotlet.dev/api/v1/resy/notifies
No parameters.
{
"notify": [
{
"notify_id": "n_3301",
"venue": "Torrisi",
"date": "2026-10-30",
"time_from": "19:00",
"time_to": "21:00",
"party_size": 2
},
{
"notify_id": "n_3297",
"venue": "Torrisi",
"date": "2026-10-24",
"time_from": "19:00",
"time_to": "21:00",
"party_size": 2
}
]
} Sets the same alert as the Notify button in Resy and returns its notify_id. Resy, not the agent, watches for an opening and alerts you by push or email; it books nothing. Eligible American Express Card Members with Global Dining Access get Priority Notify and are alerted first. The alert reaches no one and remove_notify undoes it, so it runs without asking you.
MCP callresy_write → add_notify
REST endpointPOST https://cotlet.dev/api/v1/resy/venues/{venue_id}/notifies
| Name | Type | Description |
|---|---|---|
| venue_id string required | string | A venue_id from search_venues. |
| date string required | string | Date as YYYY-MM-DD. |
| time_from string required | string | Start of the time range, HH:MM. |
| time_to string required | string | End of the time range, HH:MM. |
| party_size integer required | integer | Number of guests. |
{
"venue_id": "v_44102",
"date": "2026-10-30",
"time_from": "19:00",
"time_to": "21:00",
"party_size": 2
} {
"notify_id": "n_3301",
"venue": "Torrisi",
"date": "2026-10-30",
"time_from": "19:00",
"time_to": "21:00",
"party_size": 2
} Removes one Notify request and returns it as removed. It touches only your own alert and add_notify sets it again, so it runs without asking you. Your reservations stay as they are.
MCP callresy_write → remove_notify
REST endpointDELETE https://cotlet.dev/api/v1/resy/notifies/{notify_id}
| Name | Type | Description |
|---|---|---|
| notify_id string required | string | A notify_id from list_notify. |
{
"notify_id": "notify_8c41d2"
} {
"notify_id": "n_3297",
"status": "removed"
} Your logged-in Resy profile, encrypted with AES-256-GCM, in Finland. Not the password.
The 11 Resy tools. Never the cookie or your card.
Your reservations, Notify list, profile and the card Resy keeps on file.
Your card, name, phone, email, password and the account itself.
A new login can ask for a one-time code. You type it in, we never do.
Disable for agents, reset the browser, or log out of Resy everywhere.
Our site scores A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory (live results). There is no SOC 2 report or third-party pentest yet.
"When we identify behavior that violates the Resy Terms of Service, we disable user accounts and all associated reservations."
Resy's terms forbid using automated software to crawl its pages, and Resy told CNN on 23 Sep 2026 that it does not permit unapproved third-party bots or agents. That month it disabled at least two accounts whose AI agents scanned for open tables, one at about 200 requests an hour, and cancelled their upcoming reservations; both were restored later. Cotlet is not an agent Resy has approved. Using it is your decision, and the risk is to your Resy account.
Never point it at a restaurant's release minute. Both closed accounts were caught racing for hard tables.
When Resy moves a button or renames a field, we fix it on our side and your prompts keep working. status.cotlet.dev watches the site, console and API every 3 minutes.
| Action | Undo |
|---|---|
| Set a Notify alert | remove_notify, one call |
| Remove a Notify alert | add_notify sets it again |
| Book a table | cancel_reservation, free before the restaurant's deadline |
| Change a reservation | Change it again if the old slot is still open |
| Cancel a reservation | None. The table goes back to other diners |
3 of 11 tools ask first: book_reservation, change_reservation and cancel_reservation. Each reaches the restaurant, and a late cancellation can cost a fee per guest, which the approval shows. Notify alerts reach nobody, so they run at once. Switching the wait off is your choice, per tool.
A cancelled table cannot be taken back. Read the restaurant name in the approval, not after.
{
"name": "add_notify",
"arguments": {
"venue_id": "v_44102",
"date": "2026-10-30",
"time_from": "19:00",
"time_to": "21:00",
"party_size": 2
}
} curl -X POST https://cotlet.dev/api/v1/resy/venues/v_44102/notifies \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"date":"2026-10-30","time_from":"19:00","time_to":"21:00","party_size":2}' {
"notify_id": "n_3301",
"venue": "Torrisi",
"date": "2026-10-30",
"time_from": "19:00",
"time_to": "21:00",
"party_size": 2
} A cron job or script calls the same tools over REST at /api/v1/resy, with the same key and price, for example a morning check of cancellation deadlines. A failed call costs nothing. The tools table lists the REST path of each tool.
About $17 a monthfor a diner who books about once a week, 2,870 credits. Resy itself is free for diners; restaurants' cancellation fees stay theirs.
| Job | Calls | Credits |
|---|---|---|
| Find and book a table | 4 × 4 | 160 |
| Notify alerts for a full restaurant | 6 × 2 | 120 |
| Move a reservation | 3 × 1 | 30 |
| Morning cancellation deadline check | 3 × 30 | 900 |
| Weekly Notify cleanup | 4 × 4 | 160 |
| Cloud Browser, 30 days | 1,500 | |
| Total | 2,870 |
The month is our example: 4 bookings, Notify alerts for 2 full restaurants, 1 change, a deadline check every morning and a weekly Notify cleanup. Resy publishes no bookings-per-diner figure, so the volume is our assumption. The daily check is most of the calls; run it weekly and the month costs less. Dollars at the $29 pack rate.
| Credits | Price, one time | Calls at 10 credits | Per 1,000 credits |
|---|---|---|---|
| 5,000 | $29 | 500 | $5.80 |
| 15,000 | $79 | 1,500 | $5.27 |
| 32,000 | $149 | 3,200 | $4.66 |
| 60,000 | $249 | 6,000 | $4.15 |
Only successful calls use credits; failed calls and timeouts cost nothing. At a balance of 0 calls pause, never a surprise charge. Authenticate with the Authorization: Bearer header.
| Option | What it does | Where it stops |
|---|---|---|
| chrischall/resy-mcp | Search, book, list and cancel reservations, favorites and Priority Notify through Resy's private web endpoints. In the MCP Registry. MIT, 2 stars, last push 25 Oct 2026. | Runs on your computer with a Resy token, your password or a browser extension. Its own README warns that Resy can ban accounts. |
| Kirch2/covers | TypeScript CLI and MCP server: search, book, cancel and watch for openings. MIT, 6 stars, last push 16 Jul 2026. | Local only. Watching for openings by polling is what got accounts closed. |
| jrklein343-svg/restaurant-mcp | One MCP server for Resy and OpenTable reservations. 4 stars. | No license, last push 9 Feb 2026. |
| Hosted scraper marketplaces | Paid Resy endpoints for search and availability. | Not your account: they do not see or manage your reservations. |
| Resy in Claude and ChatGPT | Resy's own apps: search and availability, booking in ChatGPT. | Only in those two apps, and nothing after the booking. |
To find a table inside Claude or ChatGPT, Resy's own app is the safe choice, and it is free. Cotlet is for the jobs after the booking, and for agents, n8n and scripts outside those two apps. A GitHub server does the same for free if you keep it running and accept the same account risk.
Take Group sp. z o.o. runs Cotlet, a software company registered in Poland, EU (VAT PL6342984273), working since 2019. Its founders are Bart Krawczyk (Co-founder, CTO) and Jake Slugocki (Co-founder, SEO, sales and marketing). Questions about the Resy tools go to contact@cotlet.dev.
Yes. Call Cotlet's REST API from a script or an HTTP step in n8n, Make or Zapier with your Cotlet key. MCP is the alternative for AI agents; you do not need to connect an agent to use REST.
Make a free account at https://cotlet.dev, open Resy under Integrations in the console and log in to Resy in its Cloud Browser. The trial starts right away, with no card.
Resy says it disables accounts and their reservations when it sees behavior that breaks its Terms of Service, and that automated activity must not put excessive demand on its systems or stop other diners from booking (Resy Security Center). In September 2026 Resy told CNN it does not permit unapproved third-party agents, after it disabled an account whose agent checked one restaurant about 200 times an hour. Cotlet's tools read Resy once per call and use Resy's own Notify list for full restaurants instead of checking again and again. Read Resy's terms before you connect your account.
For finding a table, often yes. The Resy app in Claude shows live availability and sends you to Resy to book (American Express guide, April 2026), and the Resy app in ChatGPT can book in the chat (Resy newsroom, August 2026). Neither lists, changes or cancels your reservations or sets Notify alerts, and neither works in other agents, n8n or scripts.
The restaurant sets its own deadline and fee per guest, and the policy is in your confirmation email. Restaurants charge the fee themselves in Resy OS; for Global Dining Access bookings Resy charges eligible fees weekly (Resy Help: Cancellation fee charges; Global Dining Access cancellation policy FAQ). cancel_reservation shows the fee before you approve.
Only if your account already has it. Resy gives Priority Notify to eligible American Express Card Members with Global Dining Access (Resy Help: Notify). add_notify sets the same alert you would set in the app, so a card member's alert keeps its priority.
It works with your own Resy account wherever Resy lists restaurants. Resy's official apps in Claude and ChatGPT cover US restaurants only (Resy newsroom, 2026).
No. Resy says reservations at restaurants that book through Tock are not in your Resy account, so list_reservations does not show them.
Only the way in. Both carry the same 11 tools, inputs and answers, with one API key and one price. Agents use MCP; scripts and HTTP steps use REST.
No. Cotlet is independent and not affiliated with Resy or American Express.
Free 7-day trial with 2,000 credits, no card needed.
May we use Google Analytics to see which pages help people? It sets cookies only if you accept. No ads, and we never sell data. Cookie policy