Search dishes
search_dishesFind a dish or drink on the menus of places in Austria: which places serve it,
at what price, with diet and allergens. Give the dish in plain words ("schnitzel",
"vegan curry", "glutenfreie pizza"), and where: a point (lat, lon) to search near, a
map area (bbox), or neither for everywhere. A word for a kind of dish ("pizza",
"schnitzel", "weißwein") finds the dishes of that kind whatever they are called -
a Margherita for "pizza" - and each dish carries its categories.
Tool call template
This tool declares no required parameters. Add optional parameters from the input schema as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {},
"name": "search_dishes"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Words a dish must match, as people say them, German or English: "schnitzel", "vegan curry", "glutenfreie pizza". A diet, allergens or a cuisine among them are taken as filters; misspelt German words are put right when that finds something. | |
| lat | No | The latitude of a point - the user's, or one they name - to measure distances from and sort nearest first; with `lon`. | |
| lon | No | The longitude of that point; with `lat`. | |
| bbox | No | Keep to a map area: "west,south,east,north" in degrees - a town, a district, the streets around a place. Everywhere when left out. | |
| diet | No | Only dishes of this diet: vegan, or vegetarian (vegan dishes included). | |
| lang | No | The language of dish names, descriptions and section titles: de, the menus' own, or en, as bissl translated them. | |
| sort | No | The order of the places. | |
| limit | No | Places to answer with: 1 to 30, 10 when left out. | |
| offset | No | Places to skip, for the next ones: 0 when left out. | |
| cuisine | No | Only at places of this cuisine, as OpenStreetMap names it: "italian", "vietnamese". | |
| free_of | No | Only dishes whose menu lists their allergens and none of these letters: "A" gluten, "G" milk, "AG" both. | |
| open_now | No | Only places open right now. | |
| dish_kind | No | Food or drinks only. | |
| max_price | No | Only dishes costing at most this much, in whole euros. | |
| min_price | No | Only dishes costing at least this much, in whole euros. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| diet | No | The filters in effect, asked for or taken from the words. | |
| note | No | Why there is nothing, or less than asked for, when there is a reason to say. | |
| places | Yes | Each with its best matches, at most 5. | |
| cuisine | No | ||
| free_of | No | ||
| category | No | The dish categories read from the words, as slugs listed in `/v1/openapi.json`: "pizza" is `[{"category": "pizza", "dish": null}]`. They are alternatives - a dish of any of them is found - and a word naming a dish ("margherita") names its category with that dish. Null when the words named none. | |
| searched | No | The words searched for, once a diet, allergens or a cuisine among them were taken as filters ("vegan curry" searches "curry" with diet vegan); null for none. | |
| corrected | No | The words put right when they found nothing as typed: "schnitzel" for "schnitzl". | |
| attribution | Yes | ||
| recommended | Yes | Nothing was asked for, so these are dishes popular at this time of day. | |
| total_dishes | Yes | ||
| total_places | Yes | Places and dishes found, of which `places` holds `limit` from `offset` on. A search reads at most 500 places - the nearest `lat`, `lon`, else the middle of `bbox`, else the most complete listings - and counts the dish where those have it; when fewer than 30 do, it reads the 500 nearest (or most complete) that have it instead. So these are at most 500, `sort=price` is the cheapest of them, and paging ends there. |