---
title: Menumigo Developer Documentation
description: Read-only JSON API, MCP server and Markdown content negotiation for Menumigo. No API key, no account, CORS open, OpenAPI 3.1.
canonical: https://menumigo.com/developers
source: Menumigo
---

# Menumigo Developer Documentation

> Read-only JSON API, MCP server and Markdown content negotiation for Menumigo. No API key, no account, CORS open, OpenAPI 3.1.

Everything Menumigo publishes for machines is public, read-only and unauthenticated. There is no API key to request, no account to create and no sandbox to be granted — every example below runs against production. Responses are CORS-open.

**REST endpoints.** Full specification: https://menumigo.com/openapi.json (OpenAPI 3.1).

- `GET /api/public` — index of the API itself: every endpoint, its parameters, and the error format
- `GET /api/public/restaurants?q=&city=&cuisine=&limit=` — search published restaurants (limit 1-50, default 20)
- `GET /api/public/restaurants/{slug}` — one restaurant's profile and complete menu: categories, items, prices, currency, EU-14 allergens, dietary tags, opening hours, ratings, per-language translations
- `GET /api/public/locations` — every country and city directory page
- `GET /api/public/cuisines` — every cuisine and venue-type page
- `GET /api/public/plans` — plans, prices and the exact limits the product enforces
- `GET|POST /api/public/tools/food-cost` — portion cost, waste buffer, labour overhead, gross margin, suggested price
- `GET /api/public/tools/wifi-qr?ssid=&password=&encryption=` — Wi-Fi QR payload and connection instructions
- `GET /api/public/tools/review-qr?placeId=` — Google review target URL and QR payload

**Error format.** Every failure under /api is JSON, including a request to a path that does not exist — an HTML error page is never returned from the API. The shape is `{ error, status, message, hint, documentation, specification }`. Branch on `error`: it is a stable code (`not_found`, `invalid_request`, `invalid_json`, `method_not_allowed`, `not_acceptable`, `rate_limited`, `internal_error`) and will not be renamed. A 404 on an unknown path also carries `availableEndpoints`. Errors are sent with `Cache-Control: no-store`.

**Markdown content negotiation.** Every public page is served in two representations at one URL, following the acceptmarkdown.com convention. Append `.md` to any path, or send `Accept: text/markdown`. Responses carry `Content-Type: text/markdown; charset=utf-8` and `Vary: Accept`; q-values are honoured, including `q=0` as an explicit rejection; a request that accepts neither text/html nor text/markdown gets a 406 listing what is available rather than a silent fallback. The complete page list is at https://menumigo.com/llms-index.md, generated from the route table.

**MCP server.** Remote Model Context Protocol over HTTP JSON-RPC 2.0 at https://menumigo.com/api/mcp, no credentials. Tools: `search_restaurants`, `get_restaurant_menu`, `calculate_food_cost`, `generate_wifi_qr_payload`, `generate_review_qr_payload`, `get_menumigo_plans`, `list_locations_and_cuisines`. `initialize`, `tools/list`, `tools/call`, `resources/list` and `resources/read` are supported. Manifest at /.well-known/mcp.json.

**Manifests.** /openapi.json, /.well-known/mcp.json, /.well-known/ai-plugin.json, /.well-known/agent.json, /.well-known/security.txt, /llms.txt, /llms-full.txt, /llms-index.md, /sitemap.xml.

**Limits and terms.** No authentication and no published quota; cache responses and avoid hammering search. Directory and plan data carry a 24-hour s-maxage, restaurant search 60 seconds, a single menu 5 minutes; errors are never cached. The API is read-only — non-GET requests to a read endpoint return 405 with an `Allow` header. Only data already published on the public menu pages is exposed: no account data, no guest data, no analytics. Data is provided for informational use with attribution to menumigo.com, subject to the terms of service.

## Related pages

- [Menumigo home](https://menumigo.com/index.md)
- [About Menumigo](https://menumigo.com/about.md)
- [Contact Menumigo](https://menumigo.com/contact.md)
- [Pricing](https://menumigo.com/pricing.md)
- [Privacy Policy](https://menumigo.com/privacy.md)
- [Terms of Service](https://menumigo.com/terms.md)

---

*Canonical HTML page: https://menumigo.com/developers*
*Site overview for agents: https://menumigo.com/llms.txt · full index: https://menumigo.com/llms-full.txt*
