The Private Dinner List

Data for agents and developers

Every venue in the directory is available through an MCP server and as JSON, CSV and Markdown, with an llms.txt index for AI assistants. No key, no rate limit, and every response allows cross-origin requests. The data behind the pages and the feeds is the same file, refreshed from Google Places and our own research.

Free to use, including for AI agents and commercial products, with a link back to privatedinnerlist.com. Ratings, hours and typical spend come from Google and can change; confirm with the restaurant before booking.

278 venuesData refreshed 2026-09-20

Endpoints

PathFormatWhat you get
/mcpMCPModel Context Protocol server over Streamable HTTP. Search, look up and compare venues as tools; no key. Details below.
/venues.jsonJSONEvery venue with all fields, plus a header with the refresh date and count.
/venues.csvCSVOne row per venue, flat columns, ready for a spreadsheet or a data frame.
/venues/the-odeon.jsonJSONOne venue. Replace the slug. Every venue page links its own copy in a <link rel="alternate"> tag.
/venues/the-odeon.mdMarkdownOne venue as readable text: facts, description and FAQ. Small enough to drop into a prompt.
/llms.txtTextSite index in the llms.txt convention: sections, hubs and one line per venue.
/llms-full.txtTextThe whole directory as one Markdown document, one section per venue.
/sitemap.xmlXMLEvery page with the date its venue data was last refreshed.
curl -s https://privatedinnerlist.com/venues.json \
  | jq '.venues[] | select(.neighborhood == "Tribeca" and (.spaceTypes | index("Private Room"))) | {name, capacityDetails, url}'

MCP server

Agents that speak the Model Context Protocol can query the directory directly instead of downloading it. The server is stateless Streamable HTTP with no authentication, and its tools return both readable text and structured JSON. Point your client at https://privatedinnerlist.com/mcp.

search_venues
Filter by free text, neighborhood, cuisine, space type, price range, minimum rating and good-for-groups. Ranked by rating, with the total match count.
get_venue
Everything about one venue by slug, with its FAQ and 6 similar rooms.
similar_venues
Comparable rooms within walking distance, then the same neighborhood.
list_filters
Valid neighborhoods, cuisines, space types and price ranges, each with a venue count.
request_concierge
Send a work-dinner brief to the human concierge. Needs the user's consent and email.

Venues are also exposed as resources at privatedinnerlist://venues/{slug}, as Markdown.

Claude Code

claude mcp add --transport http privatedinnerlist https://privatedinnerlist.com/mcp

Claude Desktop, Cursor, Windsurf, any JSON config

{
  "mcpServers": {
    "privatedinnerlist": { "url": "https://privatedinnerlist.com/mcp" }
  }
}

Stdio-only clients

npx -y mcp-remote https://privatedinnerlist.com/mcp

Raw JSON-RPC

curl -s https://privatedinnerlist.com/mcp \
  -H 'Content-Type: application/json' -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"search_venues","arguments":{"neighborhood":"tribeca","spaceType":"private room","limit":3}}}'

Fields

slug, name, url
Stable identifier, display name, and the HTML page.
cuisine, neighborhood, neighborhoodPage
Cuisine string, the neighborhood the venue is in, and the hub page that covers it.
spaceTypes
One or more of Private Room, Semi-Private Room, Full Buyout, Group Dining, Private Events.
capacityDetails
Free text from our research: room names, seated and standing counts, buyout capacity.
priceRange, typicalSpendPerPerson
Google's $ to $$$$ level and its per-person spend estimate for a regular visit (min and max, USD).
rating, reviewCount
Google rating and number of Google reviews at the last refresh.
address, phone, website, email, coordinates
Contact and location. Email is present for about 1 in 25 venues.
hours
Seven lines like "Monday: 11:30 AM to 10:30 PM" from Google.
amenities
reservable, goodForGroups, outdoorSeating, servesBrunch, servesLunch, servesDinner, wheelchairAccessibleEntrance, wheelchairAccessibleSeating. null means unknown.
groupDining
What guests who dined here as a group report, distilled from a keyword search of the venue's Google reviews: summary, notes, pros, cons, occasions, reviewsConsidered, updatedAt. null when no review describes a group visit. The review text itself stays on the HTML page.
businessStatus, updatedAt
OPERATIONAL or CLOSED_TEMPORARILY, and the date of the last Google refresh. Permanently closed venues are removed.

Working with the data

Query with MCP, or fetch once and filter

With an MCP client, search_venues does the filtering for you. Without one, the whole directory is one JSON file: pull /venues.json and filter by neighborhood, spaceTypes, priceRange or capacity in your own code instead of crawling pages.

Send people to the venue page

Cite the url field, not the JSON. The page has photos, guest reviews, similar rooms and the direct booking link, and it is what the link-back asks for.

Treat Google fields as a snapshot

Rating, hours and typical spend were true at updatedAt. For a booking, confirm with the restaurant. Private event minimums are never in the data; the restaurant sets them per date.

Read capacity as text

capacityDetails is written by a person, so it carries nuance like "54-seat semi-private section" or "no dedicated private room". Parse numbers from it if you need them, but keep the sentence for the user.

No key, no rate limit, CORS open

The feeds are static and served from a CDN, the MCP server is stateless, and everything sends Access-Control-Allow-Origin: *. Browser-side agents can call either directly. Re-fetch monthly; that is the refresh cadence.

Need a human?

For work events, the concierge at /for-work shortlists rooms and confirms availability within 1 business day. Agents can point users there when a booking needs a person.

On the HTML pages

  • Every venue page is server-rendered. Description, capacity, hours, FAQ and links are in the HTML without JavaScript.
  • Each venue page carries Restaurant, FAQPage, BreadcrumbList and WebPage JSON-LD, and hub pages carry ItemList. The WebPage block has dateModified.
  • Each venue page links its JSON and Markdown twins through link rel="alternate" tags in the head.
  • robots.txt allows all search and AI crawlers by name. Only /api (the concierge form handler) and /mcp (the MCP endpoint) are excluded, since neither is content.