bissl - menus in Austria

Dishes, prices, diets, allergens and this week's lunch menus of places to eat in Austria.

我该使用它吗

质量与安全性

A
描述质量
73%
模式完整度
87%
命名质量
100%
投毒风险
100%
权限匹配度
100%
协议合规性
100%

发现(1)

  • LOWTool 'search_lunch_menus' description lacks action verb在 search_lunch_menus 中

基于对工具定义和协议合规性的自动分析。

上下文开销

~7,558token 数(工具定义)
~20.8 KB典型响应大小
对注意力有显著影响(占 128k 上下文窗口的 5.90%)

这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 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"
}

社区

评价此服务器

证据

最近观测

已验证未记录版本4 个工具