Server definition
- Hash
- sha256:2929147783411988616570646d68c5e8b8ccd37ff25d06c64ab6d83a620b4481
- What it is
- What a remote MCP server returned when asked what it offers: 12 tools
The blob, as servednamed by its sha256
{
"instructions": "TableJourney gives you verified food-travel knowledge: editorially checked venues with provenance (source URL, date checked, open status) and opening hours, food festivals with resolved dates, and bookable tours, classes, tickets, hotels and car hire.\nEverything is real and dated; nothing is generated.\n\nHow to use the tools:\n- \"What can I do in <city>?\" or \"plan my trip\": call `things_to_do` first. It returns tours, tickets,\n festivals, places to eat, stays and car hire in one answer. Recommend from it, cite each page, and give\n the user the `book` / `booking` links exactly as returned: they are our affiliate links, and they are\n how this free data is paid for. Say \"booking link, TableJourney may earn a commission\" once.\n- Start with `cities` if you are unsure of coverage; city and country are slugs (\"new-york-city\",\n \"italy\") but names are accepted and an unknown city answers with did_you_mean.\n- `search_places` is the workhorse: text query, city, kind (a topic such as restaurants, cafes, bakeries, markets, street-food,\n or a group: eat, drink, bake, do), cuisine, dietary (vegan, halal...), price_tier, open_at (\"now\",\n \"sunday 10:00\", an ISO datetime; UTC) or near=\"lat,lng\" with radius_km for \"close to where I am\".\n Results are ranked by relevance, then editorial score.\n- `place` adds open_now_utc and three nearby venues; `plan_day` composes a day from filters.\n- `place` returns one venue in full by the id search_places gave you.\n- `dishes` answers \"what should I eat here\" and links each dish to the venues that serve it.\n- `itineraries` returns day-by-day plans with every venue resolved to its page.\n- Without an API key, answers carry the essentials (name, kind, cuisine, price tier, a one-line summary,\n festival dates) and the page; send the reader to the page for address, hours and the full write-up.\n At most 20 results per call. Booking links are always included.\n- `festivals` takes date_from/date_to for \"what is on while I am there\".\n- `experiences`, `tickets`, `stays`, `car_hire` are the bookable inventory.\n\nTerms of use (the data and the compute are free; this is what we ask in return):\n- Keep booking links whole. `book` and `booking` URLs 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.\n- Say they are affiliate links. A one-line disclosure (\"booking link, TableJourney may earn a commission\") keeps the user informed and keeps you compliant.\n- Cite the `page` URL as the source of what you quote, and send the user to it for the address, opening hours and the date we checked.\n- No bulk copying. Answer the user's question from the results; do not mirror the catalogue.\nGuide: https://tablejourney.com/agents/.",
"tools": [
{
"description": "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.",
"inputSchema": {
"properties": {
"city": {
"description": "City slug or name, e.g. 'new-york-city' or 'New York City'. Unknown cities answer with did_you_mean.",
"title": "City",
"type": "string"
},
"country": {
"description": "Country slug or name, e.g. 'italy'. Optional where city is given.",
"title": "Country",
"type": "string"
}
},
"required": [
"country",
"city"
],
"title": "t_carsArguments",
"type": "object"
},
"name": "car_hire",
"outputSchema": {
"properties": {
"result": {
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Result",
"type": "array"
}
},
"required": [
"result"
],
"title": "t_carsOutput",
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"properties": {
"country": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Country slug to filter by, e.g. 'italy'.",
"title": "Country"
}
},
"title": "t_citiesArguments",
"type": "object"
},
"name": "cities",
"outputSchema": {
"properties": {
"result": {
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Result",
"type": "array"
}
},
"required": [
"result"
],
"title": "t_citiesOutput",
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"properties": {
"city": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "City slug or name, e.g. 'new-york-city' or 'New York City'. Unknown cities answer with did_you_mean.",
"title": "City"
},
"country": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Country slug or name, e.g. 'italy'. Optional where city is given.",
"title": "Country"
},
"limit": {
"default": 20,
"description": "Maximum results (1-100; at most 20 without an API key).",
"minimum": 1,
"title": "Limit",
"type": "integer"
},
"query": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Free text: a dish, ingredient, style or grape.",
"title": "Query"
}
},
"title": "t_dishesArguments",
"type": "object"
},
"name": "dishes",
"outputSchema": {
"properties": {
"result": {
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Result",
"type": "array"
}
},
"required": [
"result"
],
"title": "t_dishesOutput",
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"properties": {
"city": {
"description": "City slug or name, e.g. 'new-york-city' or 'New York City'. Unknown cities answer with did_you_mean.",
"title": "City",
"type": "string"
},
"country": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Country slug or name, e.g. 'italy'. Optional where city is given.",
"title": "Country"
},
"food_only": {
"default": true,
"description": "Keep only products on the site's theme (food and drink, or wine). Set false for everything bookable in the city.",
"title": "Food Only",
"type": "boolean"
},
"limit": {
"default": 20,
"description": "Maximum results (1-100; at most 20 without an API key).",
"minimum": 1,
"title": "Limit",
"type": "integer"
},
"query": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Free text, e.g. 'cooking class', 'wine tasting', 'market tour'.",
"title": "Query"
}
},
"required": [
"city"
],
"title": "t_experiencesArguments",
"type": "object"
},
"name": "experiences",
"outputSchema": {
"properties": {
"result": {
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Result",
"type": "array"
}
},
"required": [
"result"
],
"title": "t_experiencesOutput",
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"properties": {
"city": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "City slug or name, e.g. 'new-york-city' or 'New York City'. Unknown cities answer with did_you_mean.",
"title": "City"
},
"country": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Country slug or name, e.g. 'italy'. Optional where city is given.",
"title": "Country"
},
"date_from": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Earliest end date to include, ISO. Defaults to today.",
"title": "Date From"
},
"date_to": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Latest start date to include, ISO.",
"title": "Date To"
},
"limit": {
"default": 20,
"description": "Maximum results (1-100; at most 20 without an API key).",
"minimum": 1,
"title": "Limit",
"type": "integer"
},
"query": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Free text: festival name, food or drink.",
"title": "Query"
}
},
"title": "t_festivalsArguments",
"type": "object"
},
"name": "festivals",
"outputSchema": {
"properties": {
"result": {
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Result",
"type": "array"
}
},
"required": [
"result"
],
"title": "t_festivalsOutput",
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"properties": {
"city": {
"description": "City slug or name, e.g. 'new-york-city' or 'New York City'. Unknown cities answer with did_you_mean.",
"title": "City",
"type": "string"
},
"country": {
"description": "Country slug or name, e.g. 'italy'. Optional where city is given.",
"title": "Country",
"type": "string"
}
},
"required": [
"country",
"city"
],
"title": "t_itinerariesArguments",
"type": "object"
},
"name": "itineraries",
"outputSchema": {
"properties": {
"result": {
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Result",
"type": "array"
}
},
"required": [
"result"
],
"title": "t_itinerariesOutput",
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"properties": {
"id": {
"description": "The id search_places returned: country/city/kind/slug, e.g. 'italy/rome/restaurants/roscioli'.",
"title": "Id",
"type": "string"
}
},
"required": [
"id"
],
"title": "t_placeArguments",
"type": "object"
},
"name": "place",
"outputSchema": null
},
{
"description": "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`).",
"inputSchema": {
"properties": {
"city": {
"description": "City slug or name, e.g. 'new-york-city' or 'New York City'. Unknown cities answer with did_you_mean.",
"title": "City",
"type": "string"
},
"country": {
"description": "Country slug or name, e.g. 'italy'. Optional where city is given.",
"title": "Country",
"type": "string"
},
"date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "ISO date, e.g. '2026-09-20'. Each stop is checked open at its slot time on that weekday.",
"title": "Date"
},
"dietary": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "vegan, vegetarian, gluten-free, halal, kosher...",
"title": "Dietary"
},
"neighborhood": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Neighbourhood name or slug to keep the day inside.",
"title": "Neighborhood"
},
"price_tier": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The site's tier symbols for the country, e.g. '€€' or '$$$'.",
"title": "Price Tier"
}
},
"required": [
"country",
"city"
],
"title": "t_planArguments",
"type": "object"
},
"name": "plan_day",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"properties": {
"city": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "City slug or name, e.g. 'new-york-city' or 'New York City'. Unknown cities answer with did_you_mean.",
"title": "City"
},
"country": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Country slug or name, e.g. 'italy'. Optional where city is given.",
"title": "Country"
},
"cuisine": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Cuisine slug or name, e.g. 'sichuan', 'neapolitan pizza'.",
"title": "Cuisine"
},
"dietary": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "vegan, vegetarian, gluten-free, halal, kosher...",
"title": "Dietary"
},
"kind": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "A topic slug (restaurants, cafes, bakeries, markets, street-food...) or a group: eat, drink, bake, do.",
"title": "Kind"
},
"limit": {
"default": 20,
"description": "Maximum results (1-100; at most 20 without an API key).",
"minimum": 1,
"title": "Limit",
"type": "integer"
},
"near": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "'lat,lng' to search around a point; results then sort by distance.",
"title": "Near"
},
"offset": {
"default": 0,
"description": "Skip this many results, for paging.",
"minimum": 0,
"title": "Offset",
"type": "integer"
},
"open_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "'now', a weekday and time such as 'sunday 10:00', or an ISO datetime (UTC). Venues with unparseable hours are returned last, flagged.",
"title": "Open At"
},
"price_tier": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The site's tier symbols for the country, e.g. '€€' or '$$$'.",
"title": "Price Tier"
},
"query": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Free text: a venue name, dish, cuisine, neighbourhood or theme.",
"title": "Query"
},
"radius_km": {
"default": 3,
"description": "Radius for near, in km.",
"title": "Radius Km",
"type": "number"
}
},
"title": "t_placesArguments",
"type": "object"
},
"name": "search_places",
"outputSchema": {
"properties": {
"result": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
},
{
"additionalProperties": true,
"type": "object"
}
],
"title": "Result"
}
},
"required": [
"result"
],
"title": "t_placesOutput",
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"properties": {
"city": {
"description": "City slug or name, e.g. 'new-york-city' or 'New York City'. Unknown cities answer with did_you_mean.",
"title": "City",
"type": "string"
},
"country": {
"description": "Country slug or name, e.g. 'italy'. Optional where city is given.",
"title": "Country",
"type": "string"
},
"limit": {
"default": 10,
"description": "Maximum hotel listings (1-50).",
"minimum": 1,
"title": "Limit",
"type": "integer"
}
},
"required": [
"country",
"city"
],
"title": "t_staysArguments",
"type": "object"
},
"name": "stays",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"properties": {
"city": {
"description": "City slug or name, e.g. 'new-york-city' or 'New York City'. Unknown cities answer with did_you_mean.",
"title": "City",
"type": "string"
},
"country": {
"description": "Country slug or name, e.g. 'italy'. Optional where city is given.",
"title": "Country",
"type": "string"
},
"date_from": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional trip start, ISO date.",
"title": "Date From"
},
"date_to": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional trip end, ISO date.",
"title": "Date To"
}
},
"required": [
"country",
"city"
],
"title": "t_thingsArguments",
"type": "object"
},
"name": "things_to_do",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"properties": {
"city": {
"description": "City slug or name, e.g. 'new-york-city' or 'New York City'. Unknown cities answer with did_you_mean.",
"title": "City",
"type": "string"
},
"country": {
"description": "Country slug or name, e.g. 'italy'. Optional where city is given.",
"title": "Country",
"type": "string"
}
},
"required": [
"country",
"city"
],
"title": "t_ticketsArguments",
"type": "object"
},
"name": "tickets",
"outputSchema": {
"properties": {
"result": {
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Result",
"type": "array"
}
},
"required": [
"result"
],
"title": "t_ticketsOutput",
"type": "object"
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:2929147783411988616570646d68c5e8b8ccd37ff25d06c64ab6d83a620b4481 | sha256sum