TableJourney is built for people, and the same data is open to the agents that help them: 47,611 editorially verified venues across 226 cities, 1,622 festivals with resolved dates, and 208,552 bookable products. Every place has a page on this site to cite, with the source we checked, when we checked it, and whether it is still open.
Both doors are public. No key is needed. Without one, answers carry the essentials (name, kind, cuisine, price tier, a one-line summary, festival dates), the page to send the reader to and every booking link, up to 20 results a call; the page has the address, opening hours and the full write-up. A key adds the full record and gives your agent its own attribution tag and rate limit; ask through the contact page.
MCP server
Streamable HTTP at https://tablejourney.com/mcp. Add it to Claude Desktop, Claude Code, Cursor or any
MCP client:
{
"mcpServers": {
"tablejourney": {
"type": "streamable-http",
"url": "https://tablejourney.com/mcp"
}
}
}
Claude Code: claude mcp add --transport http tablejourney https://tablejourney.com/mcp. Manifest:
/.well-known/mcp.json. Listed in the
official MCP registry.
Tools
| Tool | Arguments | What it returns |
|---|---|---|
search_places | query, country, city, kind, cuisine, dietary, price_tier, open_at, near, radius_km, limit, offset | Verified venues. kind is a topic or a group (eat, drink, bake, do); dietary is vegan, halal...; open_at is 'now', 'sunday 10:00' or an ISO datetime; near is 'lat,lng'. |
place | id | One venue in full, with open_now and three nearby venues, by the id search_places returned. |
plan_day | country, city, neighborhood, dietary, price_tier, date | A composed food day: breakfast to drinks, every stop open on the date, plus a bookable experience. |
festivals | country, city, date_from, date_to, query, limit | Festivals with their next dates. |
experiences | city, country, query, food_only, limit | Bookable tours, classes, tastings and tickets. |
stays | country, city, limit | Hotels and stay partners with booking links. |
car_hire | country, city | Car hire partners that verifiably cover the city. |
tickets | country, city | Attraction tickets, city passes and tour partners covering the city. |
things_to_do | country, city, date_from, date_to | Start here for "what can I do in this city": tours, tickets, festivals, places to eat, stays and car hire with booking links, in one call. |
dishes | country, city, query, limit | Signature dishes and where to eat them, with links. |
itineraries | country, city | Editorial day-by-day plans, each venue linked to its page. |
cities | country | Every city covered, with slugs to use in the other tools. |
City and country accept names or slugs (rome, italy); an unknown
city answers with did_you_mean. Ids look like
italy/rome/restaurants/<slug> and go straight into place.
Connect your assistant
The server URL is the same everywhere: https://tablejourney.com/mcp. Menu names change from release
to release; the steps below were right when this page was built.
- Claude (web and desktop): Settings, Connectors, Add custom connector, then paste the URL.
- ChatGPT: Settings, Apps and Connectors, Advanced settings, turn on Developer mode, then Create a connector with the URL and no authentication.
- Le Chat (Mistral): Connectors, Add connector, Custom MCP connector, then paste the URL.
- Copilot Studio: in your agent, Tools, Add a tool, Model Context Protocol, with the URL as the server and no authentication.
One-click install: VS Code, Cursor, LM Studio, goose.
Coding tools take a small config file:
# Claude Code
claude mcp add --transport http tablejourney https://tablejourney.com/mcp
# VS Code (agent mode): .vscode/mcp.json
{
"servers": {
"tablejourney": {
"type": "http",
"url": "https://tablejourney.com/mcp"
}
}
}
# Cursor: ~/.cursor/mcp.json
{
"mcpServers": {
"tablejourney": {
"url": "https://tablejourney.com/mcp"
}
}
}
# Gemini CLI: ~/.gemini/settings.json
{
"mcpServers": {
"tablejourney": {
"httpUrl": "https://tablejourney.com/mcp"
}
}
}
# Codex: ~/.codex/config.toml
[mcp_servers.tablejourney]
url = "https://tablejourney.com/mcp"
Vercel AI SDK
The tablejourney-ai-sdk package gives an
AI SDK agent seven tools that call this server: thingsToDo,
searchPlaces, festivals, experiences, stays,
dishes and cities. No key is needed.
npm install tablejourney-ai-sdk ai zod
import { generateText, isStepCount } from 'ai';
import { tablejourneyTools } from 'tablejourney-ai-sdk';
const { text } = await generateText({
model: 'openai/gpt-5-mini',
tools: tablejourneyTools(),
stopWhen: isStepCount(5),
prompt: 'Plan a food day in Lisbon on Saturday, with one food tour.',
});
Booking links come back as affiliate links: pass them on as returned and say so once. To earn on the
bookings, set TABLEJOURNEY_API_KEY to your partner key (or pass
tablejourneyTools({ apiKey })); see Earn with us.
LangChain
The langchain-tablejourney package is a
LangChain toolkit with the same seven tools
(tablejourney_things_to_do, tablejourney_search_places,
tablejourney_festivals, tablejourney_experiences, tablejourney_stays,
tablejourney_dishes, tablejourney_cities). No key is needed.
pip install langchain-tablejourney
from langchain.agents import create_agent
from langchain_tablejourney import TableJourneyToolkit
agent = create_agent("openai:gpt-5-mini", TableJourneyToolkit().get_tools())
result = agent.invoke({"messages": [{"role": "user",
"content": "Plan a food day in Lisbon on Saturday, with one food tour."}]})
Booking links come back as affiliate links: pass them on as returned and say so once. To earn on the
bookings, set TABLEJOURNEY_API_KEY to your partner key (or
TableJourneyToolkit.from_api_key("...")); see Earn with us.
REST API
The same functions as JSON under https://tablejourney.com/api/v1/: interactive docs at
/api/v1/docs, the OpenAPI description at
/api/v1/openapi.json.
curl "https://tablejourney.com/api/v1/places?q=pasta&city=rome&kind=eat&limit=5"
curl "https://tablejourney.com/api/v1/places?near=41.8902,12.4922&radius_km=1"
curl "https://tablejourney.com/api/v1/festivals?country=italy&from=2026-11-01&to=2026-11-30"
curl "https://tablejourney.com/api/v1/experiences?city=rome&q=cooking+class"
Earn with us: the partner program
Agents can earn from the recommendations they make. Join the partner program free, and every booking link your credential receives from this server carries your referral code; you earn a share of the commission we are paid on the bookings it brings (see the terms; the guide to earning from an agent explains how it works). Everything works without a browser:
partner_join(accept_terms=true) # MCP or POST /api/v1/partners/signup: no email needed,
# returns your API key and referral code
partner_add_email(email) # before your first payout; then partner_confirm(email, code)
partner_link(url) # any https://tablejourney.com page with your code
partner_stats(days) # visits, clicks, earnings
partner_payout_method(type, ...) # PayPal, crypto (USDC, ETH, SOL, BTC) or bank; confirmed by email
Clients that sign people in can use OAuth 2.1 instead (discovery at /.well-known/oauth-authorization-server, details in auth.md). Agent-to-agent: our A2A agent card answers food questions from our verified data.
Terms of use
The data and the compute are free, with no key, no quota to buy and no sign-up. This is what we ask in return:
- Keep booking links whole.
bookandbookingURLs are https://tablejourney.com/go/ links that forward to the partner with our affiliate id. Give them to the user as they are; do not resolve them, strip parameters or replace them with a plain partner URL. This is how free data and compute get paid for. - Say they are affiliate links. A one-line disclosure ("booking link, TableJourney may earn a commission") keeps the user informed and keeps you compliant.
- Cite the
pageURL as the source of what you quote, and send the user to it for the address, opening hours and the date we checked. - No bulk copying. Answer the user's question from the results; do not mirror the catalogue.
Every book or booking URL is a https://tablejourney.com/go/ link. It records the
click and forwards to the partner with our affiliate id, so a recommendation your agent makes is
attributed and the venue checks keep getting paid for. The same terms are in the MCP server's
instructions and in llms.txt.
Limits
60 requests per 10 seconds per IP at the edge, 120 a minute in the service. Results are capped at
100 per call; use offset to page.
Also for agents
- llms.txt: the site in a form a model can read.
- llms-full.txt: every verified venue as a citable block.
- llms-partners.txt: the bookable inventory with prices and dates.