Guest API for AI agents
A public menio.ru API that lets AI assistants and agents act on behalf of a guest: read a restaurant's menu, compose and place an order, reserve a table. No authentication β these are the same operations a guest performs on the menu website.
Managing a restaurant's own data (menu editing, prices, analytics) is a separate MCP server with API keys: see the MCP Server Guide.
Addressing a restaurant
A restaurant is addressed by its location code β the uppercase segment of its menu URL. If the menu opens at menio.ru/MYCAFE, the code is MYCAFE. The same code is embedded in table QR codes.
Quick start (REST)
# What the API can do
curl https://api.menio.ru/llm/v1
# Restaurant menu in English
curl "https://api.menio.ru/llm/v1/locations/MYCAFE/menu?lang=en"
# Place a pickup order
curl -X POST https://api.menio.ru/llm/v1/locations/MYCAFE/orders \
-H 'Content-Type: application/json' \
-d '{
"items": [{"itemId": "abc123", "quantity": 2}],
"orderType": "pickup",
"customer": {"name": "Guest", "phone": "+995555123456"},
"language": "en"
}'
# β {"accepted": true, "orderId": "β¦", "total": 24, "statusUrl": "β¦"}
# Order status (orderId is the secret access token)
curl https://api.menio.ru/llm/v1/locations/MYCAFE/orders/{orderId}
Full specification: OpenAPI 3.1.
Endpoints
| Method | Path | Purpose |
|---|---|---|
| GET | /llm/v1/locations/{DOMAIN}/menu?lang=xx |
Menu: categories, items, prices, variants and addons, currency, fulfilment options |
| GET | /llm/v1/locations/{DOMAIN}/items/{itemId} |
A single item with its options |
| POST | /llm/v1/locations/{DOMAIN}/orders |
Place an order (the server validates items and computes totals) |
| GET | /llm/v1/locations/{DOMAIN}/orders/{orderId} |
Order status, number, lines |
| GET | /llm/v1/locations/{DOMAIN}/reservations/availability?start=&durationMinutes= |
Free/busy tables on the floor plan |
| POST | /llm/v1/locations/{DOMAIN}/reservations |
Reservation request (pending until the restaurant confirms) |
| GET / DELETE | /llm/v1/locations/{DOMAIN}/reservations/{id} |
Reservation status / cancellation |
Connecting over MCP
Server: https://api.menio.ru/llm/mcp β Model Context Protocol, streamable HTTP, stateless, no auth.
Configuration for Claude Desktop / Claude Code and compatible clients:
{
"mcpServers": {
"meni-guest": {
"type": "http",
"url": "https://api.menio.ru/llm/mcp"
}
}
}
Tools: get_menu, get_item, create_order, get_order_status, check_table_availability, create_reservation, get_reservation_status, cancel_reservation.
Typical flows:
- Ordering:
get_menuβcreate_orderβget_order_status(the 4-digit order number appears within seconds). - Table reservation:
check_table_availability(tables from the floor plan, free/busy for the chosen window) βcreate_reservationwithtableIdβget_reservation_status(the restaurant confirms the request) βcancel_reservationif needed.
Rules and guarantees
- Orders are validated against the live menu: an unknown item, variant or addon yields a 400 with a list of problems; prices and totals are computed server-side β an agent cannot "set" a price.
- Pickup and delivery orders require the guest's name and phone; delivery also requires an address.
orderId/reservationIdare secret tokens: they grant status access and cancellation. Do not publish them.- Orders and reservations reach the restaurant in real time β admin panel, kitchen display, notifications β exactly like orders from the website.
- Guest reservations stay
pendinguntil the restaurant confirms them in the admin panel.
Machine-readable discovery
https://menio.ru/llms.txtβ a short API map for LLMs;https://menio.ru/.well-known/mcp.jsonβ MCP servers manifest;GET https://api.menio.ru/llm/v1β discovery document with examples.