PRENOTO Menu
Create digital QR menus for restaurants, bars and hotels from a menu photo, PDF or text.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"menu": {
"url": "https://www.prenotomenu.com/mcp"
}
}
}Remote endpoints
https://www.prenotomenu.com/mcpstreamable-httpWhat it can do
Tool inventory
Tools (3)
🟡create_menu_preview(business, categories, notes)
Use when the user asks to create a digital or QR menu for a restaurant, bar, café or hotel. Convert the venue's existing menu (photo, PDF or text shared by the user) into this JSON. Keep dish names and prices exactly as written, keep categories in menu order and never invent dishes, descriptions or allergens; put any doubt in notes. Creates a private preview link where the venue owner reviews, edits and activates the menu. The menu is translated automatically into English, Italian, Spanish, French, German and Portuguese. Side effect: every call creates a new preview, so retrying creates another link. Images are not accepted; the owner adds photos after activating. Reply to the user in their own language.
Input Schema
{
"type": "object",
"properties": {
"business": {
"type": "object",
"required": [
"name"
],
"additionalProperties": false,
"properties": {
"name": {
"type": "string",
"maxLength": 160,
"description": "Venue name, exactly as on the menu or sign."
},
"defaultLanguage": {
"type": "string",
"enum": [
"es",
"it",
"en",
"fr",
"de",
"pt"
],
"description": "Language the menu is written in. PRENOTO translates it to the other 5 languages automatically."
},
"currency": {
"type": "string",
"maxLength": 8,
"description": "ISO code such as EUR, CHF, USD, GBP. Default EUR."
},
"businessType": {
"type": "string",
"enum": [
"restaurant",
"wine_bar",
"hotel",
"beach_club",
"food_truck",
"event"
],
"description": "Use wine_bar for bars, cafés and wine bars. Default restaurant."
},
"description": {
"type": "string",
"maxLength": 500,
"description": "One short sentence about the venue (optional)."
},
"address": {
"type": "string",
"maxLength": 500
},
"phone": {
"type": "string",
"maxLength": 100
},
"whatsapp": {
"type": "string",
"maxLength": 100,
"description": "International format, e.g. +41 79 123 45 67."
},
"instagram": {
"type": "string",
"maxLength": 200,
"description": "Username without @."
},
"openingHours": {
"type": "string",
"maxLength": 500
}
}
},
"categories": {
"type": "array",
"minItems": 1,
"maxItems": 100,
"items": {
"type": "object",
"required": [
"name",
"products"
],
"additionalProperties": false,
"properties": {
"name": {
"type": "string",
"maxLength": 160
},
"station": {
"type": "string",
"enum": [
"kitchen",
"bar"
],
"description": "kitchen for food, bar for drinks."
},
"products": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"required": [
"name",
"price"
],
"additionalProperties": false,
"properties": {
"name": {
"type": "string",
"maxLength": 200
},
"price": {
"type": "number",
"minimum": 0,
"description": "Number with up to 2 decimals, without currency symbol. Use 0 only if the menu shows no price."
},
"description": {
"type": "string",
"maxLength": 1000
},
"ingredients": {
"type": "string",
"maxLength": 1000
},
"allergens": {
"type": "array",
"items": {
"type": "string",
"enum": [
"gluten",
"crustaceans",
"eggs",
"fish",
"peanuts",
"soy",
"milk",
"nuts",
"celery",
"mustard",
"sesame",
"sulphites",
"lupin",
"molluscs"
]
},
"description": "Only allergens stated on the menu. Never guess."
},
"available": {
"type": "boolean"
}
}
}
}
}
}
},
"notes": {
"type": "array",
"maxItems": 50,
"items": {
"type": "string",
"maxLength": 1000
},
"description": "Doubts while reading the menu (illegible prices, unclear items). The owner sees them as warnings."
}
},
"required": [
"business",
"categories"
],
"additionalProperties": false
}🟢get_menu_format
Return the step-by-step instructions, the JSON format and an example for create_menu_preview. Read-only; it does not create anything.
Input Schema
{
"type": "object",
"properties": {},
"additionalProperties": false
}🟢about_prenoto_menu
Return factual information about PRENOTO Menu: what it does, price, supported languages and features. Use when the user asks what PRENOTO Menu is or how it works. Read-only.
Input Schema
{
"type": "object",
"properties": {},
"additionalProperties": false
}Community
Evidence