bissl - menus in Austria
Dishes, prices, diets, allergens and this week's lunch menus of places to eat in Austria.
我该使用它吗
质量与安全性
发现(1)
- LOW在 search_lunch_menus 中
基于对工具定义和协议合规性的自动分析。
上下文开销
这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。
安装
一键安装
将以下内容添加到你的 `claude_desktop_config.json` 文件中:
{
"mcpServers": {
"bissl": {
"url": "https://api.bissl.at/mcp"
}
}
}远程端点
https://api.bissl.at/mcpstreamable-http它能做什么
工具清单
工具(4)
🟢get_venue(lang, slug)
A place by its slug: address, phone, website, opening hours and its whole menu - food, drinks and this week's lunch - with every price.
输入模式
{
"type": "object",
"properties": {
"lang": {
"anyOf": [
{
"$ref": "#/$defs/ApiLang"
},
{
"type": "null"
}
],
"description": "The language of dish names, descriptions and section titles: de, the menus' own, or\nen, as bissl translated them."
},
"slug": {
"description": "The place's `slug`, from a search's or a list's answer.",
"type": "string"
}
},
"required": [
"slug"
],
"$defs": {
"ApiLang": {
"description": "The language dish names, descriptions and section titles come in: the menus' own\nGerman, or English as bissl translated them.",
"enum": [
"de",
"en"
],
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}输出模式
{
"type": "object",
"properties": {
"attribution": {
"type": "string"
},
"checked_on": {
"description": "The day its menus were last read from its website.",
"format": "date",
"type": [
"string",
"null"
]
},
"menus": {
"description": "Its regular food and drinks, and its lunch of this week; none when bissl has no\nmenu of it.",
"items": {
"$ref": "#/$defs/Menu"
},
"type": "array"
},
"opening_hours": {
"description": "Its opening hours in OpenStreetMap's syntax: \"Mo-Fr 11:00-22:00; Sa 12:00-22:00\".",
"type": [
"string",
"null"
]
},
"phone": {
"type": [
"string",
"null"
]
},
"place": {
"$ref": "#/$defs/Place"
},
"website": {
"description": "Its own website.",
"type": [
"string",
"null"
]
}
},
"required": [
"place",
"menus",
"attribution"
],
"$defs": {
"ApiDiet": {
"description": "A diet as a menu marks a dish, or the dish's name says it.",
"oneOf": [
{
"enum": [
"vegan"
],
"type": "string"
},
{
"const": "vegetarian",
"description": "Vegetarian, vegan dishes included.",
"type": "string"
}
]
},
"Dish": {
"description": "A dish or drink on a menu, the same in every answer.",
"properties": {
"allergens": {
"description": "The allergen letters its menu lists, by the Austrian codes (A gluten, B\ncrustaceans, C egg, D fish, E peanuts, F soy, G milk, H nuts, L celery, M mustard,\nN sesame, O sulphites, P lupin, R molluscs); null when the menu lists none for it,\nwhich is no promise it has none.",
"type": [
"string",
"null"
]
},
"checked_on": {
"description": "The day its menu was last read from the venue's website.",
"format": "date",
"type": [
"string",
"null"
]
},
"description": {
"type": "string"
},
"diet": {
"anyOf": [
{
"$ref": "#/$defs/ApiDiet"
},
{
"type": "null"
}
],
"description": "Vegan or vegetarian as the menu marks it or its name says; null when neither."
},
"id": {
"description": "bissl's id of the dish on its menu.",
"format": "int64",
"type": "integer"
},
"name": {
"type": "string"
},
"prices": {
"description": "One per size or variant; none when the menu gives no price.",
"items": {
"$ref": "#/$defs/Price"
},
"type": "array"
},
"served_on": {
"description": "The day a lunch dish is served on; null for what the place always serves.",
"format": "date",
"type": [
"string",
"null"
]
},
"url": {
"description": "The venue's bissl page with this dish marked.",
"type": "string"
}
},
"required": [
"id",
"name",
"description",
"prices",
"url"
],
"type": "object"
},
"Menu": {
"properties": {
"kind": {
"$ref": "#/$defs/MenuKind"
},
"sections": {
"items": {
"$ref": "#/$defs/MenuSection"
},
"type": "array"
},
"served": {
"description": "When a lunch is served, as its page says: \"Mo–Fr · 11:30–14:30\". Lunch only.",
"type": [
"string",
"null"
]
},
"title": {
"description": "\"Speisen\", \"Getränke\", \"Mittagsmenü\" - or in English.",
"type": "string"
},
"valid_from": {
"description": "The first and last day a lunch menu is for, when it says.",
"format": "date",
"type": [
"string",
"null"
]
},
"valid_to": {
"format": "date",
"type": [
"string",
"null"
]
}
},
"required": [
"kind",
"title",
"sections"
],
"type": "object"
},
"MenuKind": {
"enum": [
"food",
"drinks",
"lunch"
],
"type": "string"
},
"MenuSection": {
"description": "A part of a menu, as the venue page's tab: \"Vorspeisen\", a lunch day's \"Mo 5.10.\".",
"properties": {
"dishes": {
"items": {
"$ref": "#/$defs/Dish"
},
"type": "array"
},
"title": {
"description": "Null for a menu of one section.",
"type": [
"string",
"null"
]
}
},
"required": [
"dishes"
],
"type": "object"
},
"Place": {
"description": "A place to eat or drink, the same in every answer.",
"properties": {
"address": {
"description": "Street, house number, postcode and town; null when bissl has none.",
"type": [
"string",
"null"
]
},
"area": {
"description": "Its district or town, to say where it is: \"7. Neubau\", \"Mödling\"; null outside every\ntown bissl knows. No filter takes it.",
"type": [
"string",
"null"
]
},
"cuisines": {
"description": "Its cuisines as OpenStreetMap names them: austrian, italian, pizza, vietnamese...",
"items": {
"type": "string"
},
"type": "array"
},
"distance_m": {
"description": "Metres from the point asked about (`lat`, `lon`), when one was given.",
"format": "int64",
"type": [
"integer",
"null"
]
},
"kind": {
"description": "Its kind as OpenStreetMap tags it: restaurant, fast_food, cafe, bar, pub,\nbiergarten, ice_cream, food_court, bakery or pastry.",
"type": "string"
},
"lat": {
"format": "double",
"type": "number"
},
"lon": {
"format": "double",
"type": "number"
},
"name": {
"type": "string"
},
"open_now": {
"description": "Open right now by its opening hours (Vienna's time); null when bissl can't read them.",
"type": [
"boolean",
"null"
]
},
"price_level": {
"description": "\"€\" to \"€€€€\" from its menu's prices; null while bissl doesn't know.",
"type": [
"string",
"null"
]
},
"slug": {
"description": "bissl's name for the place: what `/v1/venues/{slug}` and `get_venue` take.",
"type": "string"
},
"url": {
"description": "Its page on bissl, with every menu: link to it.",
"type": "string"
}
},
"required": [
"slug",
"name",
"kind",
"cuisines",
"lat",
"lon",
"url"
],
"type": "object"
},
"Price": {
"description": "A price of a dish: one per size or variant.",
"properties": {
"note": {
"description": "What it is for, when the menu says: a size or a variant (\"0,5 l\", \"klein\").",
"type": "string"
},
"price": {
"description": "As the venue page writes it: \"12,90 €\".",
"type": [
"string",
"null"
]
},
"price_cents": {
"description": "In euro cents; null when the menu names a size without a price.",
"format": "int64",
"type": [
"integer",
"null"
]
}
},
"required": [
"note"
],
"type": "object"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢search_dishes(bbox, cuisine, diet, dish_kind, free_of, ...)
Find 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.
输入模式
{
"type": "object",
"properties": {
"bbox": {
"description": "Keep to a map area: \"west,south,east,north\" in degrees - a town, a district, the\nstreets around a place. Everywhere when left out.",
"type": [
"string",
"null"
]
},
"cuisine": {
"description": "Only at places of this cuisine, as OpenStreetMap names it: \"italian\", \"vietnamese\".",
"type": [
"string",
"null"
]
},
"diet": {
"anyOf": [
{
"$ref": "#/$defs/ApiDiet"
},
{
"type": "null"
}
],
"description": "Only dishes of this diet: vegan, or vegetarian (vegan dishes included)."
},
"dish_kind": {
"anyOf": [
{
"$ref": "#/$defs/DishKind"
},
{
"type": "null"
}
],
"description": "Food or drinks only."
},
"free_of": {
"description": "Only dishes whose menu lists their allergens and none of these letters: \"A\" gluten,\n\"G\" milk, \"AG\" both.",
"type": [
"string",
"null"
]
},
"lang": {
"anyOf": [
{
"$ref": "#/$defs/ApiLang"
},
{
"type": "null"
}
],
"description": "The language of dish names, descriptions and section titles: de, the menus' own, or\nen, as bissl translated them."
},
"lat": {
"description": "The latitude of a point - the user's, or one they name - to measure distances from\nand sort nearest first; with `lon`.",
"format": "double",
"type": [
"number",
"null"
]
},
"limit": {
"description": "Places to answer with: 1 to 30, 10 when left out.",
"format": "int64",
"type": [
"integer",
"null"
]
},
"lon": {
"description": "The longitude of that point; with `lat`.",
"format": "double",
"type": [
"number",
"null"
]
},
"max_price": {
"description": "Only dishes costing at most this much, in whole euros.",
"format": "int64",
"type": [
"integer",
"null"
]
},
"min_price": {
"description": "Only dishes costing at least this much, in whole euros.",
"format": "int64",
"type": [
"integer",
"null"
]
},
"offset": {
"description": "Places to skip, for the next ones: 0 when left out.",
"format": "int64",
"type": [
"integer",
"null"
]
},
"open_now": {
"description": "Only places open right now.",
"type": [
"boolean",
"null"
]
},
"q": {
"description": "Words a dish must match, as people say them, German or English: \"schnitzel\", \"vegan\ncurry\", \"glutenfreie pizza\". A diet, allergens or a cuisine among them are taken as\nfilters; misspelt German words are put right when that finds something.",
"type": [
"string",
"null"
]
},
"sort": {
"anyOf": [
{
"$ref": "#/$defs/DishSort"
},
{
"type": "null"
}
],
"description": "The order of the places."
}
},
"$defs": {
"ApiDiet": {
"description": "A diet as a menu marks a dish, or the dish's name says it.",
"oneOf": [
{
"enum": [
"vegan"
],
"type": "string"
},
{
"const": "vegetarian",
"description": "Vegetarian, vegan dishes included.",
"type": "string"
}
]
},
"ApiLang": {
"description": "The language dish names, descriptions and section titles come in: the menus' own\nGerman, or English as bissl translated them.",
"enum": [
"de",
"en"
],
"type": "string"
},
"DishKind": {
"enum": [
"food",
"drinks"
],
"type": "string"
},
"DishSort": {
"oneOf": [
{
"const": "recommended",
"description": "The best matches at the most useful places: with prices, open now, near the middle.",
"type": "string"
},
{
"const": "match",
"description": "Best match first, then cheapest.",
"type": "string"
},
{
"const": "price",
"description": "Cheapest first.",
"type": "string"
},
{
"const": "distance",
"description": "Best match first, then nearest to `lat`, `lon` - the order whenever they are given,\nunless `price`.",
"type": "string"
}
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}输出模式
{
"type": "object",
"properties": {
"attribution": {
"type": "string"
},
"corrected": {
"description": "The words put right when they found nothing as typed: \"schnitzel\" for \"schnitzl\".",
"type": [
"string",
"null"
]
},
"cuisine": {
"type": [
"string",
"null"
]
},
"diet": {
"anyOf": [
{
"$ref": "#/$defs/ApiDiet"
},
{
"type": "null"
}
],
"description": "The filters in effect, asked for or taken from the words."
},
"free_of": {
"type": [
"string",
"null"
]
},
"note": {
"description": "Why there is nothing, or less than asked for, when there is a reason to say.",
"type": [
"string",
"null"
]
},
"places": {
"description": "Each with its best matches, at most 5.",
"items": {
"$ref": "#/$defs/PlaceDishes"
},
"type": "array"
},
"recommended": {
"description": "Nothing was asked for, so these are dishes popular at this time of day.",
"type": "boolean"
},
"searched": {
"description": "The words searched for, once a diet, allergens or a cuisine among them were taken as\nfilters (\"vegan curry\" searches \"curry\" with diet vegan); null for none.",
"type": [
"string",
"null"
]
},
"total_dishes": {
"format": "int64",
"type": "integer"
},
"total_places": {
"description": "Places and dishes found, of which `places` holds `limit` from `offset` on. A search\nreads at most 500 places - the nearest `lat`, `lon`, else the middle of `bbox`, else\nthe most complete listings - and counts the dish where those have it; when fewer than\n30 do, it reads the 500 nearest (or most complete) that have it instead. So these\nare at most 500, `sort=price` is the cheapest of them, and paging ends there.",
"format": "int64",
"type": "integer"
}
},
"required": [
"recommended",
"total_places",
"total_dishes",
"places",
"attribution"
],
"$defs": {
"ApiDiet": {
"description": "A diet as a menu marks a dish, or the dish's name says it.",
"oneOf": [
{
"enum": [
"vegan"
],
"type": "string"
},
{
"const": "vegetarian",
"description": "Vegetarian, vegan dishes included.",
"type": "string"
}
]
},
"Dish": {
"description": "A dish or drink on a menu, the same in every answer.",
"properties": {
"allergens": {
"description": "The allergen letters its menu lists, by the Austrian codes (A gluten, B\ncrustaceans, C egg, D fish, E peanuts, F soy, G milk, H nuts, L celery, M mustard,\nN sesame, O sulphites, P lupin, R molluscs); null when the menu lists none for it,\nwhich is no promise it has none.",
"type": [
"string",
"null"
]
},
"checked_on": {
"description": "The day its menu was last read from the venue's website.",
"format": "date",
"type": [
"string",
"null"
]
},
"description": {
"type": "string"
},
"diet": {
"anyOf": [
{
"$ref": "#/$defs/ApiDiet"
},
{
"type": "null"
}
],
"description": "Vegan or vegetarian as the menu marks it or its name says; null when neither."
},
"id": {
"description": "bissl's id of the dish on its menu.",
"format": "int64",
"type": "integer"
},
"name": {
"type": "string"
},
"prices": {
"description": "One per size or variant; none when the menu gives no price.",
"items": {
"$ref": "#/$defs/Price"
},
"type": "array"
},
"served_on": {
"description": "The day a lunch dish is served on; null for what the place always serves.",
"format": "date",
"type": [
"string",
"null"
]
},
"url": {
"description": "The venue's bissl page with this dish marked.",
"type": "string"
}
},
"required": [
"id",
"name",
"description",
"prices",
"url"
],
"type": "object"
},
"Place": {
"description": "A place to eat or drink, the same in every answer.",
"properties": {
"address": {
"description": "Street, house number, postcode and town; null when bissl has none.",
"type": [
"string",
"null"
]
},
"area": {
"description": "Its district or town, to say where it is: \"7. Neubau\", \"Mödling\"; null outside every\ntown bissl knows. No filter takes it.",
"type": [
"string",
"null"
]
},
"cuisines": {
"description": "Its cuisines as OpenStreetMap names them: austrian, italian, pizza, vietnamese...",
"items": {
"type": "string"
},
"type": "array"
},
"distance_m": {
"description": "Metres from the point asked about (`lat`, `lon`), when one was given.",
"format": "int64",
"type": [
"integer",
"null"
]
},
"kind": {
"description": "Its kind as OpenStreetMap tags it: restaurant, fast_food, cafe, bar, pub,\nbiergarten, ice_cream, food_court, bakery or pastry.",
"type": "string"
},
"lat": {
"format": "double",
"type": "number"
},
"lon": {
"format": "double",
"type": "number"
},
"name": {
"type": "string"
},
"open_now": {
"description": "Open right now by its opening hours (Vienna's time); null when bissl can't read them.",
"type": [
"boolean",
"null"
]
},
"price_level": {
"description": "\"€\" to \"€€€€\" from its menu's prices; null while bissl doesn't know.",
"type": [
"string",
"null"
]
},
"slug": {
"description": "bissl's name for the place: what `/v1/venues/{slug}` and `get_venue` take.",
"type": "string"
},
"url": {
"description": "Its page on bissl, with every menu: link to it.",
"type": "string"
}
},
"required": [
"slug",
"name",
"kind",
"cuisines",
"lat",
"lon",
"url"
],
"type": "object"
},
"PlaceDishes": {
"description": "A place and its dishes in an answer: the dishes a search found there, or its lunch.",
"properties": {
"dishes": {
"description": "In the answer's order.",
"items": {
"$ref": "#/$defs/Dish"
},
"type": "array"
},
"more_dishes": {
"description": "More of them there, on its page.",
"format": "int64",
"type": "integer"
},
"place": {
"$ref": "#/$defs/Place"
},
"served": {
"description": "When its lunch is served, as its menu says: \"11:00–14:30\". Lunch only; null otherwise.",
"type": [
"string",
"null"
]
}
},
"required": [
"place",
"dishes",
"more_dishes"
],
"type": "object"
},
"Price": {
"description": "A price of a dish: one per size or variant.",
"properties": {
"note": {
"description": "What it is for, when the menu says: a size or a variant (\"0,5 l\", \"klein\").",
"type": "string"
},
"price": {
"description": "As the venue page writes it: \"12,90 €\".",
"type": [
"string",
"null"
]
},
"price_cents": {
"description": "In euro cents; null when the menu names a size without a price.",
"format": "int64",
"type": [
"integer",
"null"
]
}
},
"required": [
"note"
],
"type": "object"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢search_lunch_menus(bbox, cuisine, day, diet, free_of, ...)
The lunch menus (Mittagsmenüs) served today - or another day of this week - with every dish and its price, near a point or in a map area; with `q`, only the lunch dishes matching it ("schnitzel", "suppe").
输入模式
{
"type": "object",
"properties": {
"bbox": {
"description": "Keep to a map area: \"west,south,east,north\" in degrees - a town, a district, the\nstreets around a place. Everywhere when left out.",
"type": [
"string",
"null"
]
},
"cuisine": {
"description": "Only at places of this cuisine, as OpenStreetMap names it: \"italian\", \"vietnamese\".",
"type": [
"string",
"null"
]
},
"day": {
"description": "\"2026-10-20\": another day of this lunch week, Monday to Sunday (at the weekend, the\ncoming week's too). Today when left out; open_now only counts today.",
"format": "date",
"type": [
"string",
"null"
]
},
"diet": {
"anyOf": [
{
"$ref": "#/$defs/ApiDiet"
},
{
"type": "null"
}
],
"description": "Only dishes of this diet: vegan, or vegetarian (vegan dishes included)."
},
"free_of": {
"description": "Only dishes whose menu lists their allergens and none of these letters: \"A\" gluten,\n\"G\" milk, \"AG\" both.",
"type": [
"string",
"null"
]
},
"lang": {
"anyOf": [
{
"$ref": "#/$defs/ApiLang"
},
{
"type": "null"
}
],
"description": "The language of dish names, descriptions and section titles: de, the menus' own, or\nen, as bissl translated them."
},
"lat": {
"description": "The latitude of a point - the user's, or one they name - to measure distances from\nand sort nearest first; with `lon`.",
"format": "double",
"type": [
"number",
"null"
]
},
"limit": {
"description": "Places to answer with: 1 to 30, 10 when left out.",
"format": "int64",
"type": [
"integer",
"null"
]
},
"lon": {
"description": "The longitude of that point; with `lat`.",
"format": "double",
"type": [
"number",
"null"
]
},
"max_price": {
"description": "Only dishes costing at most this much, in whole euros.",
"format": "int64",
"type": [
"integer",
"null"
]
},
"min_price": {
"description": "Only dishes costing at least this much, in whole euros.",
"format": "int64",
"type": [
"integer",
"null"
]
},
"offset": {
"description": "Places to skip, for the next ones: 0 when left out.",
"format": "int64",
"type": [
"integer",
"null"
]
},
"open_now": {
"description": "Only places open right now.",
"type": [
"boolean",
"null"
]
},
"q": {
"description": "Words a dish must match, as people say them, German or English: \"schnitzel\", \"vegan\ncurry\", \"glutenfreie pizza\". A diet, allergens or a cuisine among them are taken as\nfilters; misspelt German words are put right when that finds something.",
"type": [
"string",
"null"
]
},
"sort": {
"anyOf": [
{
"$ref": "#/$defs/LunchSort"
},
{
"type": "null"
}
],
"description": "The order of the places."
}
},
"$defs": {
"ApiDiet": {
"description": "A diet as a menu marks a dish, or the dish's name says it.",
"oneOf": [
{
"enum": [
"vegan"
],
"type": "string"
},
{
"const": "vegetarian",
"description": "Vegetarian, vegan dishes included.",
"type": "string"
}
]
},
"ApiLang": {
"description": "The language dish names, descriptions and section titles come in: the menus' own\nGerman, or English as bissl translated them.",
"enum": [
"de",
"en"
],
"type": "string"
},
"LunchSort": {
"oneOf": [
{
"enum": [
"name"
],
"type": "string"
},
{
"const": "recommended",
"description": "The most useful lunches first: with prices, at places open for lunch.",
"type": "string"
},
{
"const": "distance",
"description": "Nearest to `lat`, `lon` first - the order whenever they are given, unless another.",
"type": "string"
},
{
"const": "price",
"description": "The cheapest dish first.",
"type": "string"
}
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}输出模式
{
"type": "object",
"properties": {
"attribution": {
"type": "string"
},
"corrected": {
"description": "The words put right when they found nothing as typed: \"schnitzel\" for \"schnitzl\".",
"type": [
"string",
"null"
]
},
"cuisine": {
"type": [
"string",
"null"
]
},
"day": {
"description": "The day the lunch menus are for.",
"format": "date",
"type": "string"
},
"diet": {
"anyOf": [
{
"$ref": "#/$defs/ApiDiet"
},
{
"type": "null"
}
],
"description": "The filters in effect, asked for or taken from the words."
},
"free_of": {
"type": [
"string",
"null"
]
},
"note": {
"description": "Why there is nothing, when there is a reason to say.",
"type": [
"string",
"null"
]
},
"places": {
"description": "Each with its whole lunch that day - the dishes matching `q`, when it was given.",
"items": {
"$ref": "#/$defs/PlaceDishes"
},
"type": "array"
},
"searched": {
"description": "The words the dishes match, once a diet, allergens or a cuisine among them were taken\nas filters; null for none.",
"type": [
"string",
"null"
]
},
"total_dishes": {
"format": "int64",
"type": "integer"
},
"total_places": {
"description": "Places serving lunch and their dishes, of which `places` holds `limit` from `offset` on.",
"format": "int64",
"type": "integer"
}
},
"required": [
"day",
"total_places",
"total_dishes",
"places",
"attribution"
],
"$defs": {
"ApiDiet": {
"description": "A diet as a menu marks a dish, or the dish's name says it.",
"oneOf": [
{
"enum": [
"vegan"
],
"type": "string"
},
{
"const": "vegetarian",
"description": "Vegetarian, vegan dishes included.",
"type": "string"
}
]
},
"Dish": {
"description": "A dish or drink on a menu, the same in every answer.",
"properties": {
"allergens": {
"description": "The allergen letters its menu lists, by the Austrian codes (A gluten, B\ncrustaceans, C egg, D fish, E peanuts, F soy, G milk, H nuts, L celery, M mustard,\nN sesame, O sulphites, P lupin, R molluscs); null when the menu lists none for it,\nwhich is no promise it has none.",
"type": [
"string",
"null"
]
},
"checked_on": {
"description": "The day its menu was last read from the venue's website.",
"format": "date",
"type": [
"string",
"null"
]
},
"description": {
"type": "string"
},
"diet": {
"anyOf": [
{
"$ref": "#/$defs/ApiDiet"
},
{
"type": "null"
}
],
"description": "Vegan or vegetarian as the menu marks it or its name says; null when neither."
},
"id": {
"description": "bissl's id of the dish on its menu.",
"format": "int64",
"type": "integer"
},
"name": {
"type": "string"
},
"prices": {
"description": "One per size or variant; none when the menu gives no price.",
"items": {
"$ref": "#/$defs/Price"
},
"type": "array"
},
"served_on": {
"description": "The day a lunch dish is served on; null for what the place always serves.",
"format": "date",
"type": [
"string",
"null"
]
},
"url": {
"description": "The venue's bissl page with this dish marked.",
"type": "string"
}
},
"required": [
"id",
"name",
"description",
"prices",
"url"
],
"type": "object"
},
"Place": {
"description": "A place to eat or drink, the same in every answer.",
"properties": {
"address": {
"description": "Street, house number, postcode and town; null when bissl has none.",
"type": [
"string",
"null"
]
},
"area": {
"description": "Its district or town, to say where it is: \"7. Neubau\", \"Mödling\"; null outside every\ntown bissl knows. No filter takes it.",
"type": [
"string",
"null"
]
},
"cuisines": {
"description": "Its cuisines as OpenStreetMap names them: austrian, italian, pizza, vietnamese...",
"items": {
"type": "string"
},
"type": "array"
},
"distance_m": {
"description": "Metres from the point asked about (`lat`, `lon`), when one was given.",
"format": "int64",
"type": [
"integer",
"null"
]
},
"kind": {
"description": "Its kind as OpenStreetMap tags it: restaurant, fast_food, cafe, bar, pub,\nbiergarten, ice_cream, food_court, bakery or pastry.",
"type": "string"
},
"lat": {
"format": "double",
"type": "number"
},
"lon": {
"format": "double",
"type": "number"
},
"name": {
"type": "string"
},
"open_now": {
"description": "Open right now by its opening hours (Vienna's time); null when bissl can't read them.",
"type": [
"boolean",
"null"
]
},
"price_level": {
"description": "\"€\" to \"€€€€\" from its menu's prices; null while bissl doesn't know.",
"type": [
"string",
"null"
]
},
"slug": {
"description": "bissl's name for the place: what `/v1/venues/{slug}` and `get_venue` take.",
"type": "string"
},
"url": {
"description": "Its page on bissl, with every menu: link to it.",
"type": "string"
}
},
"required": [
"slug",
"name",
"kind",
"cuisines",
"lat",
"lon",
"url"
],
"type": "object"
},
"PlaceDishes": {
"description": "A place and its dishes in an answer: the dishes a search found there, or its lunch.",
"properties": {
"dishes": {
"description": "In the answer's order.",
"items": {
"$ref": "#/$defs/Dish"
},
"type": "array"
},
"more_dishes": {
"description": "More of them there, on its page.",
"format": "int64",
"type": "integer"
},
"place": {
"$ref": "#/$defs/Place"
},
"served": {
"description": "When its lunch is served, as its menu says: \"11:00–14:30\". Lunch only; null otherwise.",
"type": [
"string",
"null"
]
}
},
"required": [
"place",
"dishes",
"more_dishes"
],
"type": "object"
},
"Price": {
"description": "A price of a dish: one per size or variant.",
"properties": {
"note": {
"description": "What it is for, when the menu says: a size or a variant (\"0,5 l\", \"klein\").",
"type": "string"
},
"price": {
"description": "As the venue page writes it: \"12,90 €\".",
"type": [
"string",
"null"
]
},
"price_cents": {
"description": "In euro cents; null when the menu names a size without a price.",
"format": "int64",
"type": [
"integer",
"null"
]
}
},
"required": [
"note"
],
"type": "object"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢search_venues(bbox, cuisine, has_menu, kind, lang, ...)
Places to eat and drink: by name, kind, cuisine, map area or nearness, open now, with a menu, serving lunch today.
输入模式
{
"type": "object",
"properties": {
"bbox": {
"description": "Keep to a map area: \"west,south,east,north\" in degrees - a town, a district, the\nstreets around a place. Everywhere when left out.",
"type": [
"string",
"null"
]
},
"cuisine": {
"description": "Only at places of this cuisine, as OpenStreetMap names it: \"italian\", \"vietnamese\".",
"type": [
"string",
"null"
]
},
"has_menu": {
"description": "Only places whose menu with prices bissl read.",
"type": [
"boolean",
"null"
]
},
"kind": {
"description": "Its kind as OpenStreetMap tags it: restaurant, fast_food, cafe, bar, pub,\nbiergarten, ice_cream, food_court, bakery or pastry.",
"type": [
"string",
"null"
]
},
"lang": {
"anyOf": [
{
"$ref": "#/$defs/ApiLang"
},
{
"type": "null"
}
],
"description": "The language of dish names, descriptions and section titles: de, the menus' own, or\nen, as bissl translated them."
},
"lat": {
"description": "The latitude of a point - the user's, or one they name - to measure distances from\nand sort nearest first; with `lon`.",
"format": "double",
"type": [
"number",
"null"
]
},
"limit": {
"description": "Places to answer with: 1 to 30, 10 when left out.",
"format": "int64",
"type": [
"integer",
"null"
]
},
"lon": {
"description": "The longitude of that point; with `lat`.",
"format": "double",
"type": [
"number",
"null"
]
},
"lunch_today": {
"description": "Only places serving a lunch menu today.",
"type": [
"boolean",
"null"
]
},
"offset": {
"description": "Places to skip, for the next ones: 0 when left out.",
"format": "int64",
"type": [
"integer",
"null"
]
},
"open_now": {
"description": "Only places open right now.",
"type": [
"boolean",
"null"
]
},
"q": {
"description": "Words to search for among the places: part of a name - \"figlm\" finds Figlmüller.",
"type": [
"string",
"null"
]
},
"sort": {
"anyOf": [
{
"$ref": "#/$defs/VenueSort"
},
{
"type": "null"
}
],
"description": "The order of the places."
}
},
"$defs": {
"ApiLang": {
"description": "The language dish names, descriptions and section titles come in: the menus' own\nGerman, or English as bissl translated them.",
"enum": [
"de",
"en"
],
"type": "string"
},
"VenueSort": {
"oneOf": [
{
"enum": [
"name"
],
"type": "string"
},
{
"const": "recommended",
"description": "The most useful places first: with a menu, prices, photos, open now.",
"type": "string"
},
{
"const": "price",
"description": "The cheapest price level first.",
"type": "string"
},
{
"const": "distance",
"description": "Nearest to `lat`, `lon` first - the order whenever they are given, unless another.",
"type": "string"
}
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}输出模式
{
"type": "object",
"properties": {
"attribution": {
"type": "string"
},
"cuisine": {
"description": "The cuisine kept to, when one was asked for.",
"type": [
"string",
"null"
]
},
"note": {
"description": "Why there is nothing, when there is a reason to say.",
"type": [
"string",
"null"
]
},
"places": {
"items": {
"$ref": "#/$defs/PlaceListing"
},
"type": "array"
},
"total_places": {
"description": "Places matching, of which `places` holds `limit` from `offset` on.",
"format": "int64",
"type": "integer"
}
},
"required": [
"total_places",
"places",
"attribution"
],
"$defs": {
"Place": {
"description": "A place to eat or drink, the same in every answer.",
"properties": {
"address": {
"description": "Street, house number, postcode and town; null when bissl has none.",
"type": [
"string",
"null"
]
},
"area": {
"description": "Its district or town, to say where it is: \"7. Neubau\", \"Mödling\"; null outside every\ntown bissl knows. No filter takes it.",
"type": [
"string",
"null"
]
},
"cuisines": {
"description": "Its cuisines as OpenStreetMap names them: austrian, italian, pizza, vietnamese...",
"items": {
"type": "string"
},
"type": "array"
},
"distance_m": {
"description": "Metres from the point asked about (`lat`, `lon`), when one was given.",
"format": "int64",
"type": [
"integer",
"null"
]
},
"kind": {
"description": "Its kind as OpenStreetMap tags it: restaurant, fast_food, cafe, bar, pub,\nbiergarten, ice_cream, food_court, bakery or pastry.",
"type": "string"
},
"lat": {
"format": "double",
"type": "number"
},
"lon": {
"format": "double",
"type": "number"
},
"name": {
"type": "string"
},
"open_now": {
"description": "Open right now by its opening hours (Vienna's time); null when bissl can't read them.",
"type": [
"boolean",
"null"
]
},
"price_level": {
"description": "\"€\" to \"€€€€\" from its menu's prices; null while bissl doesn't know.",
"type": [
"string",
"null"
]
},
"slug": {
"description": "bissl's name for the place: what `/v1/venues/{slug}` and `get_venue` take.",
"type": "string"
},
"url": {
"description": "Its page on bissl, with every menu: link to it.",
"type": "string"
}
},
"required": [
"slug",
"name",
"kind",
"cuisines",
"lat",
"lon",
"url"
],
"type": "object"
},
"PlaceListing": {
"description": "A place in the list of places.",
"properties": {
"has_menu": {
"description": "bissl read a menu with prices from its website.",
"type": "boolean"
},
"lunch_today": {
"description": "It serves a lunch menu today.",
"type": "boolean"
},
"place": {
"$ref": "#/$defs/Place"
}
},
"required": [
"place",
"has_menu",
"lunch_today"
],
"type": "object"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}社区
证据