Skip to content

TableJourney food travel

by tablejourney.com · remote · no sign-in to list tools · v1.1.1 · published by com.tablejourney

Food travel in 224 cities: verified places, festivals, tours. Agents earn 50% via partner tools.

Final · 1Changes · 18

20 tools: 1 do something that can't be undone, 18 change things and 1 only read.

Scanned Oct 21, 2026

1 check matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http food-travel https://tablejourney.com/mcp

Findings

Matches of fixed checks, with the text they matched.

1 warn
  • The server marks "partner_link" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "partner_link" says "link": a word for a change.

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

20 tools

Can't be undone 1Claude Code: ask
  • partner_confirm_payoutNeeds your API key or OAuth token.No findings

    Why it is in this group

    • The name "partner_confirm_payout" says "payout": a word that usually means money moves, which cannot be taken back.
    • The input takes a statement or command to run (input.code), which can change anything it can reach.
    Description, as the server wrote it
    Needs your API key or OAuth token. The code from the payout email.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
    • readOnlyHint: false
Changes things 18Claude Code: ask
  • car_hireCar hire partners that verifiably cover a city (read-only): one entry per partner with the pickup facts we checked and a tracked booking link.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Car hire partners that verifiably cover a city (read-only): one entry per partner with the pickup facts we checked and a tracked booking link. Empty list when no partner covers the city.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
  • citiesEvery city the site covers (read-only), with the country and city slugs the other tools accept and the hub page URL.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Every city the site covers (read-only), with the country and city slugs the other tools accept and the hub page URL. Call first when unsure of coverage.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
  • dishesUse when the user asks what to eat somewhere or where to find a dish: 'what should I eat in Naples?', 'where to get pastel de nata in Lisbon', 'local dishes in Hanoi'.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Use when the user asks what to eat somewhere or where to find a dish: 'what should I eat in Naples?', 'where to get pastel de nata in Lisbon', 'local dishes in Hanoi'. Signature dishes of a city and where to eat them (read-only). Each item has a description, the venues resolved to ids and page URLs, and the page to cite; ranked by editorial score.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
  • experiencesUse for food tours, cooking classes, tastings and market tours in a city: 'a street food tour in Bangkok', 'pasta-making class in Rome', 'wine tasting near Florence'.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Use for food tours, cooking classes, tastings and market tours in a city: 'a street food tour in Bangkok', 'pasta-making class in Rome', 'wine tasting near Florence'. Bookable food tours, cooking classes, tastings and tickets for a city. Read-only. Each item has price, rating, review count, duration and a tracked `book` link. Ranked by relevance to `query` when given, otherwise by popularity.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
  • festivalsUse when the user asks what food festivals, food events or Christmas markets are on, or when one is: 'food festivals in Italy in October', 'what is on in Austin the week of Novembe…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Use when the user asks what food festivals, food events or Christmas markets are on, or when one is: 'food festivals in Italy in October', 'what is on in Austin the week of November 5', 'Christmas markets in Germany', 'when is the Alba truffle fair'. Food festivals with their next resolved dates (read-only). Filter by city, country, a date window and text. Each item carries starts_on/ends_on for the next edition, the organiser source URL and the page to cite.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
  • itinerariesUse for 'a two-day food itinerary for <city>' or 'how to spend 48 hours eating in <city>'.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Use for 'a two-day food itinerary for <city>' or 'how to spend 48 hours eating in <city>'. Editorial day-by-day food itineraries for a city (read-only): every venue resolved to an id, address, hours and page URL. Empty list when the city has none.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
  • partner_confirmConfirm the email address with the code from partner_join.No findings

    Why it is in this group

    • The input takes a statement or command to run (input.code), which can change anything it can reach.
    Description, as the server wrote it
    Confirm the email address with the code from partner_join. Returns your API key (shown once: send it as `Authorization: Bearer <key>` or X-API-Key; every booking link this server returns to it carries your code) and your referral code (add ?ref=<code> to any tablejourney.com link).

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
    • readOnlyHint: false
  • partner_joinCreate a free partner account so you earn a share of the commission on bookings made by people you send to TableJourney (see partner terms at /partners/terms/).No findings

    Why it is in this group

    • The description's first verb is "create": a word for a change.
    Description, as the server wrote it
    Create a free partner account so you earn a share of the commission on bookings made by people you send to TableJourney (see partner terms at /partners/terms/). We email a one-time code to the address; pass it to partner_confirm to get your API key and referral code. accept_terms must be true. The person or company running the agent is the member and the payee.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
    • readOnlyHint: false
  • partner_payout_methodNeeds your API key or OAuth token.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Needs your API key or OAuth token. type is paypal (paypal_email), usdc_base (address: a USDC address on Base) or bank (holder, country, currency, iban or account_number, bic or routing_number). We email a code; the details take effect only after partner_confirm_payout.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
    • readOnlyHint: false
  • partner_signinExchange the emailed sign-in code for a new API key (the old key stops working).No findings

    Why it is in this group

    • The input takes a statement or command to run (input.code), which can change anything it can reach.
    Description, as the server wrote it
    Exchange the emailed sign-in code for a new API key (the old key stops working).

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
    • readOnlyHint: false
  • partner_signin_codeEmail a one-time sign-in code to a partner account (for a new API key with partner_signin).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Email a one-time sign-in code to a partner account (for a new API key with partner_signin).

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
    • readOnlyHint: false
  • partner_statsNeeds your API key or OAuth token.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Needs your API key or OAuth token. Visits and partner clicks your links brought, and earnings by status (pending until the partner pays us, then payable after the hold).

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
  • placeOne venue in full by id (read-only): every field, provenance, hours, open_now_utc, the booking link and three nearby venues.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    One venue in full by id (read-only): every field, provenance, hours, open_now_utc, the booking link and three nearby venues. Returns {error: ...} when the id is malformed or unknown.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
  • plan_dayUse when the user wants a day planned: 'plan a food day in Paris on Saturday', 'where should I have breakfast, lunch and dinner in Seville'.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Use when the user wants a day planned: 'plan a food day in Paris on Saturday', 'where should I have breakfast, lunch and dinner in Seville'. Compose a food day for one city (read-only): one best-scored open venue per slot from morning to evening, filtered by neighbourhood, dietary need and price tier, every stop open on the given date, plus one bookable experience. Also lists the titles of the editorial itineraries for the city, which are the better plan when one exists (fetch them with `itineraries`).

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
  • staysUse for 'where to stay in <city>' or 'hotels in <city>'.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Use for 'where to stay in <city>' or 'hotels in <city>'. Hotels and stay partners for a city (read-only): hotel listings with a tracked booking link each, plus the partner search links that cover the city. Prices are not returned; the partner page has them.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
  • things_to_doUse when the user is planning a trip or asks what to do in a city: 'I am going to Rome next week, what should I do?', 'things to do in Bangkok for food lovers'.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Use when the user is planning a trip or asks what to do in a city: 'I am going to Rome next week, what should I do?', 'things to do in Bangkok for food lovers'. START HERE for 'what can I do in <city>?' (read-only): one call returns the best food tours, classes and tastings, attraction tickets and passes, festivals on during the dates, top places to eat, where to stay and car hire, each with its page and a tracked booking link. Give the user the book/booking links unchanged; they are affiliate links.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
  • ticketsAttraction tickets, city passes and tour partners that verifiably cover a city (read-only): one entry per partner with a tracked booking link.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Attraction tickets, city passes and tour partners that verifiably cover a city (read-only): one entry per partner with a tracked booking link. Complements `experiences`. Empty list when none covers the city.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true
Only reads 1Claude Code: allow
  • search_placesUse when the user asks where to eat or drink in a city: 'best ramen in Tokyo', 'vegan brunch in Lisbon open on Sunday', 'a wine bar near me in Paris', 'cheap eats in Mexico City', …No findings

    Why it is in this group

    • The name "search_places" says "search": a word for reading.
    Description, as the server wrote it
    Use when the user asks where to eat or drink in a city: 'best ramen in Tokyo', 'vegan brunch in Lisbon open on Sunday', 'a wine bar near me in Paris', 'cheap eats in Mexico City', 'is this restaurant open now'. Search verified venues (read-only). Filter by text, city, kind (a topic such as restaurants, cafes, bakeries, markets, street-food, or a group: eat, drink, bake, do), cuisine, dietary, price tier, opening time, or near a coordinate. Results are ranked by relevance then editorial score and carry provenance (source URL, checked_on, open_status), hours, a page URL to cite and a tracked booking link where one exists. Returns at most `limit` items; an unknown city returns {did_you_mean: [...]} instead of a list.

    Annotations the server declares

    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
    • readOnlyHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.1.1. Values in angle brackets are yours to fill in.

claude mcp add --transport http food-travel https://tablejourney.com/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__food-travel__search_places"
    ],
    "ask": [
      "mcp__food-travel__plan_day",
      "mcp__food-travel__place",
      "mcp__food-travel__festivals",
      "mcp__food-travel__experiences",
      "mcp__food-travel__stays",
      "mcp__food-travel__car_hire",
      "mcp__food-travel__tickets",
      "mcp__food-travel__things_to_do",
      "mcp__food-travel__dishes",
      "mcp__food-travel__itineraries",
      "mcp__food-travel__cities",
      "mcp__food-travel__partner_join",
      "mcp__food-travel__partner_confirm",
      "mcp__food-travel__partner_signin_code",
      "mcp__food-travel__partner_signin",
      "mcp__food-travel__partner_link",
      "mcp__food-travel__partner_stats",
      "mcp__food-travel__partner_payout_method",
      "mcp__food-travel__partner_confirm_payout"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as food-travel. Review it before you use it.