Документация для разработчиков
Создавайте приложения для клиентов, курьеров и мерчантов на одном API. Читайте и изменяйте рестораны, меню, заказы и курьеров; получайте события в реальном времени через подписанные webhooks. Всё ограничено владельцем токена.
🛍️ приложение для клиента 🛵 Приложение водителя 🧑🍳 Приложение для мерчанта
Разрабатываете для маркетплейса? Документация для разработчиков приложений → · Документация для разработчиков тем →
learn_platform подготавливает его, get_liquid_reference даёт ему авторитетный белый список и
validate_theme запускает собственные проверки маркетплейса на его выводе — полный цикл изучение → сборка → проверка без выхода из редактора. Подключение одной командой →
Начало работы
Создайте API-токен в панели управления в разделе API-токены и Webhook. Выберите read и/или write права и скопируйте токен — он показывается только один раз.
https://www.menubarcode.com/api/v1Быстрая проверка, что ваш токен работает:
curl https://www.menubarcode.com/api/v1/restaurants \
-H "Authorization: Bearer YOUR_TOKEN"
GET https://www.menubarcode.com/api/v1 возвращает машиночитаемый индекс доступных конечных точек (авторизация не требуется). Машиночитаемая спецификация OpenAPI 3.1 (JSON) — генерируется из работающего маршрутизатора, поэтому всегда совпадает с развёрнутым API.Аутентификация
Отправляйте токен как заголовок Bearer в каждом запросе:
Authorization: Bearer YOUR_TOKEN
Для быстрых тестов вы можете вместо этого передавать ?api_token=YOUR_TOKEN как параметр запроса, но заголовок настоятельно предпочтительнее, чтобы токены не попадали в логи.
| Право | Права |
|---|---|
read | Все GET конечные точки (каждый ресурс). |
write | Все изменяющие конечные точки (а как надмножество — и все чтения). |
Ограниченные токены
Помимо грубых read/write, токен можно ограничить конкретными ресурсами с помощью resource:action прав. Ресурсы: restaurants, menu, orders, customers, analytics, drivers, webhooks; Действия read, write. Выберите их при создании токена в панели управления.
| Пример токена | Может делать |
|---|---|
["orders:write"] | Только чтение + запись заказов (интеграция POS). |
["menu:read"] | Только чтение меню; больше ничего. |
["orders:read","analytics:read"] | Панель отчётности. |
Правила охвата: * даёт всё; область :write также даёт своё :read; грубые read/write ведут себя как *:read / *:write. Запрос без необходимой области возвращает 403. Устаревшие read/write токены не затрагиваются.
Токены хранятся в хешированном виде (SHA-256) и могут иметь необязательный срок действия. Отзывайте любой токен мгновенно из панели управления.
Ограничения частоты
API допускает 120 запросов в минуту на токен. При превышении возвращается 429 Too Many Requests с Retry-After заголовком. Стандартные заголовки лимита частоты включаются в каждый ответ:
X-RateLimit-Limit: 120
X-RateLimit-Remaining: 118
Ошибки
Каждая ошибка на /api/v1 маршруте возвращает стандартные HTTP-коды статуса и единый JSON-конверт — понятное человеку message, стабильное машинное code, и (при валидации) по полям errors Карта
{ "message": "Invalid or expired token.", "code": "unauthenticated" }
{ "message": "The given data was invalid.",
"code": "validation_failed",
"errors": { "title": ["The title field is required."] } }
| Статус | code | Значение |
|---|---|---|
401 | unauthenticated | Отсутствующий, недействительный или истёкший токен. |
403 | forbidden | У токена нет необходимого права/области. |
404 | not_found | Ресурс не найден или не принадлежит токену. |
422 | validation_failed | Валидация не пройдена (см. errors). |
429 | rate_limited | Превышен лимит частоты. |
code, а не человеческий message — сообщения могут быть переформулированы или локализованы; коды стабильны.404, не 403 — API никогда не подтверждает существование данных другого владельца.Пагинация
Конечные точки-списки возвращают конверты с пагинацией в стиле Laravel. Используйте ?page= параметр запроса для перехода по страницам.
{
"data": [ ... ],
"current_page": 1,
"last_page": 3,
"per_page": 20,
"total": 47
}
Чтение ресторанов и меню
Список ресторанов, принадлежащих токену, с пагинацией (20 на страницу).
{
"data": [
{ "id": 12, "title": "Nova Bistro", "slug": "nova-bistro",
"url": "https://.../nova-bistro", "template": "linen",
"created_at": "2026-06-01T10:22:00+00:00" }
],
"current_page": 1, "last_page": 1, "total": 1
}
Один ресторан с его категориями меню и числом позиций.
Полное активное меню, сгруппированное по категориям.
[
{ "id": 3, "name": "Starters",
"items": [
{ "id": 88, "name": "Bruschetta", "price": 6.50,
"is_sold_out": false, "is_popular": true, "is_vegan": true,
"is_halal": true, "calories": 210 }
]
}
]
Заказы
Заказы, сначала новые, с пагинацией (30/страница). Фильтруйте через ?status=.
Полная информация о заказе с позициями, опциями, курьером и хронологией доставки.
Создать заказ — вот как приложение для клиента отправляет корзину (токен хранится на бэкенде мерчанта). Каждая позиция проверяется по актуальному меню ресторана; распроданные или чужие позиции отклоняют весь заказ (422). Срабатывает order.created и возвращает полный заказ, включая его track_token.
curl -X POST https://www.menubarcode.com/api/v1/restaurants/12/orders \
-H "Authorization: Bearer YOUR_TOKEN" -H "Content-Type: application/json" \
-d '{
"type": "delivery",
"customer_name": "A. Idriss",
"phone": "+15551234567",
"address": "9 Cedar Road",
"tip_amount": 3.00,
"note": "Ring the bell",
"source": "customer_app",
"items": [
{ "item_id": 88, "quantity": 2, "variation": 5, "extras": [12], "note": "no onion" },
{ "item_id": 91, "quantity": 1 }
]
}'
Заказ type является одним из on-table, takeaway, delivery. для on-table передайте table_number; для delivery передайте address.
Идемпотентность. Отправьте Idempotency-Key заголовок (или тело client_uuid) при любом вызове создания заказа. Повтор с тем же ключом возвращает исходный заказ и никогда не создаёт дубликат — безопасно при потерянных ответах и офлайн-повторах. Ключи ограничены рамками ресторана.
Обновить статус кухни (new|preparing|ready|delivered|completed|cancelled). Срабатывает order.status_changed.
Storefront API (токен на ресторан)
Отдельный публичный API, аутентифицируемый через токен витрины на ресторан отправляемый как X-Storefront-Token (не Bearer-токен владельца). Выпускайте их из панели управления; каждый токен всегда может достичь только своего ресторана. Область чтения — menu:read; для оформления заказов нужна область order:write Область действия
Полное меню ресторана токена (варианты, опции, группы, галерея).
Базовая информация о ресторане токена.
Отправить корзину от имени гостя. Ценообразование на сервере и не оплачен (гость платит при получении); takeaway или on-table только. Каждая позиция проверяется по актуальному меню — распроданные или чужие позиции отклоняют весь заказ (422). Лимиты: 40 позиций/заказ, 30 шт./строка. Необязательно coupon_code применяет скидку владельца на стороне сервера. Срабатывает order.created и возвращает track_token + continue_url.
curl -X POST https://www.menubarcode.com/api/v1/storefront/orders \
-H "X-Storefront-Token: YOUR_STOREFRONT_TOKEN" -H "Content-Type: application/json" \
-d '{
"type": "takeaway",
"customer_name": "A. Idriss",
"phone": "+15551234567",
"coupon_code": "WELCOME10",
"items": [
{ "item_id": 88, "quantity": 2, "variation": 5, "extras": [12] },
{ "item_id": 91, "quantity": 1 }
]
}'
Аналитика и клиенты
Сводка продаж за период (?from=YYYY-MM-DD&to=YYYY-MM-DD, по умолчанию последние 30 дней): число заказов по статусу/типу, валовая и оплаченная выручка, средний чек и топ позиций.
{
"range": { "from": "2026-06-02", "to": "2026-07-02" },
"orders": { "total": 214, "paid": 198, "by_status": {...}, "by_type": {...} },
"revenue": { "gross": 8420.50, "paid": 7990.00, "avg_order_value": 39.35 },
"top_items": [ { "item_id": 88, "name": "Margherita", "quantity": 143 } ]
}
Список клиентов ресторана (CRM), с пагинацией. Фильтруйте через ?search=.
Управление курьерами Написать
Курьеры принадлежат вам и (необязательно) одному ресторану. Создание или ротация курьера возвращает необработанный токен курьера ровно один раз — передайте его приложению курьера; они аутентифицируются с ним (см. ниже).
curl -X POST https://www.menubarcode.com/api/v1/drivers \
-H "Authorization: Bearer YOUR_TOKEN" -H "Content-Type: application/json" \
-d '{"name":"Alex","phone":"+15550001111","restaurant_id":12}'
# → { "id": 7, "name": "Alex", ..., "token": "RAW_DRIVER_TOKEN_SHOWN_ONCE" }
Аннулирует старый токен и возвращает новый.
Назначить и отслеживать доставку
Заказы на доставку, фильтруемые по ?delivery_status= и ?driver_id=.
Назначить курьера {"driver_id": 7}. Задаёт delivery_status=assigned и срабатывает order.driver_assigned.
Переопределить этап доставки: pending | assigned | picked_up | out_for_delivery | delivered | failed.
API приложения для водителей
Приложение курьера аутентифицируется через Токен водителя (не токен владельца), выпущенный выше. Базовый путь https://www.menubarcode.com/api/v1/driver. Каждый ответ ограничен этим одним курьером.
Authorization: Bearer RAW_DRIVER_TOKEN
Профиль аутентифицированного курьера.
Заказы, назначенные этому курьеру. Добавьте ?active=1 чтобы скрыть доставленные/неудачные.
Продвинуть доставку: {"delivery_status":"out_for_delivery"} затем "delivered" или "picked_up" / "failed", необязательно note). Срабатывают те же webhooks, что и у конечной точки владельца.
Отправить текущую позицию: {"lat":25.2048,"lng":55.2708}. Показывается в отслеживании клиента, пока заказ в пути.
Аккаунты клиентов
A автономное приложение для клиента аутентифицирует своих пользователей токеном на клиента (в стиле Sanctum: несколько устройств, отзываемых по отдельности). Токен владельца не задействован. Клиенты ограничены рамками ресторана, поэтому авторизация находится под /restaurants/{id}/customer/…. Сначала просмотрите меню через публичную конечную точку:
Активное меню, сгруппированное по категориям (распроданные позиции опущены). Без авторизации.
Регистрация / вход
curl -X POST https://www.menubarcode.com/api/v1/restaurants/12/customer/login \
-H "Content-Type: application/json" \
-d '{"email":"sam@example.com","password":"secret123","device":"iPhone 15"}'
# → { "token": "RAW_CUSTOMER_TOKEN", "customer": { "id": 42, "name": "Sam", ... } }
Без пароля (SMS OTP)
Запросите код для номера телефона, затем подтвердите его. Verify находит или создаёт клиента и возвращает токен. Конечные точки авторизации имеют лимит частоты (вход/регистрация 10/мин, запрос OTP 6/мин).
API приложения для клиентов
Аутентифицируйтесь токеном клиента. Базовый путь https://www.menubarcode.com/api/v1/customer. Всё ограничено аутентифицированным клиентом — тело заказа никогда не может подделать id другого клиента.
Authorization: Bearer RAW_CUSTOMER_TOKEN
Чтение / обновление профиля (имя, email, телефон, день рождения, согласия).
Оформить заказ от имени этого клиента (та же структура позиций, что и у конечной точки создания мерчанта; личность берётся из токена). Возвращает заказ с его track_token.
Собственная история заказов клиента, с пагинацией.
Сохранённые адреса доставки (первый становится основным; поддерживает lat/lng).
Отзывает токен, использованный для запроса (только это устройство).
Отслеживание заказа Публичный
Без авторизации — доступ ограничен неугадываемым track_token (возвращается при создании заказа). Это обеспечивает работу приложение для клиента экрана отслеживания в реальном времени.
{
"id": 5501, "status": "preparing", "delivery_status": "out_for_delivery",
"is_paid": true, "total": 42.00,
"timeline": { "preparing_at": "...", "out_for_delivery_at": "..." },
"items": [ { "name": "Margherita", "quantity": 2 } ],
"driver": { "name": "Alex", "lat": 25.2, "lng": 55.27, "location_updated_at": "..." }
}
Блок курьера (с координатами в реальном времени) появляется только после того, как заказ забран / в пути.
Вход для сотрудников
A приложения для персонала (POS / KDS / официант) аутентифицирует каждого сотрудника токеном на сотрудника. Два пути повторяют панель управления: email + пароль или быстрый числовой PIN-код для общих кухонных планшетов. Сотрудники ограничены рамками ресторана.
curl -X POST https://www.menubarcode.com/api/v1/restaurants/12/staff/pin \
-H "Content-Type: application/json" -d '{"pin":"4321","device":"Kitchen iPad"}'
# → { "token": "RAW_STAFF_TOKEN",
# "staff": { "id": 3, "role": "kitchen", "permissions": ["kds"] } }
Ответ перечисляет действующие Разрешения — подмножество orders, menu_edit, coupons, analytics, kds, customers производные от их роли (менеджер / кассир / кухня / официант) плюс любые переопределения на сотрудника. Конечные точки ограничены правами (403 иначе).
API приложения для персонала
Аутентифицируйтесь токеном сотрудника. Базовый путь https://www.menubarcode.com/api/v1/staff. Все действия ограничены рестораном сотрудника.
Authorization: Bearer RAW_STAFF_TOKEN
Профиль с ролью и списком прав.
Список заказов и обновление статуса кухни. Требует orders права.
Актуальные кухонные тикеты, сгруппированные по заказу, отфильтрованные по станции сотрудника (или ?station_id=). Показывает только позиции, ещё queued|preparing|ready.
Продвинуть (queued → preparing → ready → served) или откатить на один статус KDS. Статус родительского заказа синхронизируется автоматически.
Редактируйте меню из зала (менеджеры). Те же payload, что и у конечных точек меню мерчанта, ограниченные рестораном сотрудника.
Сводка продаж для ресторана сотрудника (та же структура, что и у конечной точки аналитики мерчанта; ?from=&to=).
Отзывает токен этого устройства.
Webhooks — настройка
Регистрируйте конечные точки из панели управления в разделе API-токены и Webhook. Выберите, какие события получает каждая конечная точка. При сохранении вы получаете для каждой конечной точки Секрет подписи; используйте Тест кнопку, чтобы отправить ping. Приостановите конечную точку, чтобы остановить доставку, не теряя её секрет.
Ваша конечная точка должна отвечать статусом 2xx быстро (в течение 10 с). Любой другой статус — или таймаут — считается неудачей и повторяется.
Конечными точками также можно управлять программно (для REST-Hooks в Zapier/Make) с webhooks:write токеном:
GET /api/v1/webhook-endpoints # list your endpoints
POST /api/v1/webhook-endpoints # {"url":"https://…","events":["order.created"]} → 201 {id, secret, …}
DELETE /api/v1/webhook-endpoints/{id} # unsubscribe → 204
Значение secret возвращается только при создании — сохраните его для проверки подписи. url должна быть публичной HTTPS-конечной точкой (с защитой от SSRF); events должно быть из списка ниже (или *).
События webhook
| Событие | Срабатывает, когда |
|---|---|
order.created | Оформлен новый заказ (из панели или API). |
order.status_changed | Изменяется статус кухни заказа (панель, POS или API). |
order.paid | Заказ отмечен как полностью оплаченный (шлюз или разделённый счёт). |
order.driver_assigned | Курьер назначен на доставку. |
order.out_for_delivery | Курьер в пути к клиенту. |
order.delivered | Доставка завершена. |
order.delivery_failed | Доставку не удалось завершить. |
refund.completed | Возврат средств по заказу выполнен. |
reservation.created | Создаётся бронирование стола. |
reservation.cancelled | Бронирование столика отменено. |
customer.created | Создаётся новая запись клиента. |
shift.opened | Открыта смена кассы / POS. |
shift.closed | Кассовая / POS-смена закрыта. |
menu.updated | Позиция меню или категория создана, обновлена или удалена (на любой поверхности). Payload: {restaurant_id, change, entity, id}. |
entitlement.changed | Право на функцию предоставлено или отозвано для рабочего пространства (смена плана, дополнение, установка/удаление приложения, переопределение админом). Payload: {action, feature_key, source_type, source_id, user_id, occurred_at} где action равно granted или revoked. |
subscription.* | Жизненный цикл подписки: subscription.paused, .resumed, .renewed, .expired, .plan_changed, .past_due, .expiring, .trial_ending. |
app.uninstalled | Приложение маркетплейса удалено (доставляется на конечную точку приложения). |
* | Подписаться на все события выше. |
ping | Отправляется кнопкой Тест для проверки связи. |
Доставка не удалась, пока ваша конечная точка была недоступна? Используйте Повторить доставку на любой строке в журнале «Недавние доставки» панели, чтобы снова поставить её в очередь с новым webhook-id.
Payload webhook
Каждая доставка — это POST с этим JSON-конвертом и этими заголовками:
POST /your-endpoint HTTP/1.1
Content-Type: application/json
webhook-id: msg_a1b2c3d4e5f6g7h8i9j0k1l2
webhook-timestamp: 1751472240
webhook-signature: v1,K5f...base64...==
X-Webhook-Event: order.created (legacy)
X-Webhook-Signature: 9a3f...hex... (legacy, HMAC of body only)
{
"id": "msg_a1b2c3d4e5f6g7h8i9j0k1l2",
"event": "order.created",
"created_at": "2026-07-02T18:04:00+00:00",
"data": { "order_id": 5501, "total": "42.00" }
}
Значение id уникален для каждой доставки. Поскольку повторы используют тот же id, используйте его, чтобы сделать ваш обработчик идемпотентным.
Проверка подписи
Значение webhook-signature заголовок — это HMAC-SHA256 в кодировке base64, вычисленный над {id}.{timestamp}.{body} с использованием секрета подписи вашей конечной точки. Привязка id и метки времени к подписи и делает перехваченный запрос защищённым от повторного воспроизведения. Отклоняйте любой запрос, чей webhook-timestamp старше примерно 5 минут.
PHP
$secret = 'whsec_from_dashboard';
$id = $_SERVER['HTTP_WEBHOOK_ID'];
$ts = $_SERVER['HTTP_WEBHOOK_TIMESTAMP'];
$body = file_get_contents('php://input');
$sent = explode(',', $_SERVER['HTTP_WEBHOOK_SIGNATURE'])[1] ?? '';
if (abs(time() - (int) $ts) > 300) { http_response_code(400); exit; }
$expected = base64_encode(hash_hmac('sha256', "$id.$ts.$body", $secret, true));
if (!hash_equals($expected, $sent)) { http_response_code(401); exit; }
// verified — process $body
http_response_code(200);
Node.js
const crypto = require('crypto');
function verify(req, secret) {
const id = req.headers['webhook-id'];
const ts = req.headers['webhook-timestamp'];
const sig = (req.headers['webhook-signature'] || '').split(',')[1];
if (Math.abs(Date.now() / 1000 - Number(ts)) > 300) return false;
const expected = crypto
.createHmac('sha256', secret)
.update(`${id}.${ts}.${req.rawBody}`)
.digest('base64');
return crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(sig || ''));
}
X-Webhook-Signature заголовок (простой HMAC-SHA256 тела, hex) также отправляется для обратной совместимости. Новым интеграциям следует использовать webhook-signature.Повторы и журнал доставок
Доставка асинхронна и повторяется при неудаче с экспоненциальной задержкой плюс джиттер: примерно 1m → 5m → 15m → 1h (всего до 5 попыток). Каждая попытка — успешная или неудачная — фиксируется в журнале доставок вашей панели с её HTTP-статусом, номером попытки и фрагментом ответа.
webhook-id чтобы обрабатывать случайные повторы.Серверы MCP
Пять серверов Model Context Protocol соединяют AI-агентов (ChatGPT, Claude, Cursor) с платформой — выберите тот, что подходит вашей аудитории. Все используют JSON-RPC 2.0 поверх HTTP и согласуют версии протокола 2024-11-05 / 2025-03-26 / 2025-06-18.
| Сервер | Конечная точка | Аудитория | Аутентификация | Инструменты |
|---|---|---|---|---|
| Admin | https://www.menubarcode.com/mcp | Владельцы магазинов — управление магазином | Токен API (Bearer) | 23 |
| Storefront | https://www.menubarcode.com/mcp/storefront | Агент гостя — покупки и заказы в одном магазине | Токен витрины (область агента) | 12 |
| Customer | https://www.menubarcode.com/mcp/customer | Авторизованный гость — его собственные заказы | Токен клиента (вход по OTP) | 5 |
| Catalog | https://www.menubarcode.com/mcp/catalog | Кто угодно — поиск магазинов по всей платформе | Публичный | 3 |
| Dev | https://www.menubarcode.com/mcp/dev | AI-инструменты для кода — сборка тем/интеграций | Публичный | 7 |
Быстрый старт: перейти к Admin, Catalog, Customer, или Dev. Сервер витрины использует тот же шаблон подключения, что и Admin, с X-Storefront-Token заголовком вместо Bearer-токена.
MCP-сервер (Admin)
AI-клиент с поддержкой MCP (Claude, ChatGPT, Cursor) может управлять вашим рестораном на естественном языке, используя те же API-токены. Направьте его на:
https://www.menubarcode.com/mcp JSON-RPC 2.0Аутентифицируйтесь через Authorization: Bearer YOUR_TOKEN. Каждый инструмент объявляет нужное ему точечное право (resource:action); устаревший read токен покрывает каждый :read инструмент, а write покрывает всё. Все вызовы ограничены вашими ресторанами и имеют лимит частоты. Инструменты, на которые у вас нет права, скрыты из tools/list.
Подключение (Claude Code)
claude mcp add --transport http platform-admin https://www.menubarcode.com/mcp \
--header "Authorization: Bearer YOUR_TOKEN"
Список инструментов
curl -X POST https://www.menubarcode.com/mcp \
-H "Authorization: Bearer YOUR_TOKEN" -H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
Вызвать инструмент (например, добавить позицию меню)
curl -X POST https://www.menubarcode.com/mcp \
-H "Authorization: Bearer YOUR_TOKEN" -H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call",
"params":{"name":"add_menu_item",
"arguments":{"restaurant_id":12,"name":"Latte","price":4.5}}}'
Инструменты
| Инструмент | Право | Что делает |
|---|---|---|
list_restaurants | read | Рестораны, которыми вы владеете. |
get_menu | read | Категории и позиции ресторана. |
list_categories | menu:read | Категории с числом позиций. |
add_category | menu:write | Создать категорию. |
update_category | menu:write | Переименовать / переупорядочить категорию. |
delete_category | menu:write | Удалить категорию (отклоняется, если в ней есть позиции). |
add_menu_item | write | Создать позицию меню (с проверкой лимита плана). |
update_menu_item | write | Изменить название/цену/описание товара. |
delete_menu_item | menu:write | Безвозвратно удалить товар. |
set_item_availability | menu:write | Отметить позицию в наличии/распродано (переключатель 86). |
list_orders | orders:read | Заказы, сначала новые; фильтры по статусу/дате/поиску. |
get_order | orders:read | Полная информация о заказе, включая позиции. |
update_order_status | write | Продвинуть статус кухни заказа. |
list_customers | customers:read + crm_suite | Список CRM; поиск по имени/телефону/email. Скрыт из tools/list без права. |
get_customer | customers:read + crm_suite | Полная запись одного клиента. Скрыта из tools/list без права. |
sales_report | analytics:read | Выручка + число заказов + топ позиций за период. |
get_restaurant_settings | restaurants:read | Снимок профиля и настроек заказа. |
update_business_hours | restaurants:write | Задать текст часов работы. |
list_coupons | orders:read | Ваши купоны на скидку. |
create_coupon | orders:write | Создать процентный/фиксированный купон. |
update_coupon | orders:write | Изменить купон. |
delete_coupon | orders:write | Удалить купон. |
Catalog MCP (поиск ресторанов)
Публичный MCP-сервер только для чтения, позволяющий AI-агентам находить рестораны и блюда по всей платформе, а затем переходить по диплинку в конкретный магазин для заказа. Без авторизации, с лимитом частоты.
https://www.menubarcode.com/mcp/catalog JSON-RPC 2.0 · publicПодключение (Claude Code)
claude mcp add --transport http platform-catalog https://www.menubarcode.com/mcp/catalog
| Инструмент | Что делает |
|---|---|
search_stores | Найти рестораны по ключевому слову/городу (name, address, menu_url, подсказка storefront_mcp). |
search_items | Найти блюда по всем магазинам (query/dietary/max_price/city), сгруппированные по магазину. |
get_store | Полная публичная информация об одном магазине по slug или id. |
list_starter_menus | Предустановленные стартовые меню, из которых новый магазин может создать начальные данные (кафе, пиццерия, бургерная, пекарня, лаунж). |
Появляются только активные, публично перечисленные магазины; владельцы могут отказаться в настройках магазина. Контактные данные владельца никогда не возвращаются. Чтобы оформить заказ, используйте storefront MCP магазина с агентским токеном на магазин.
Customer Account MCP
Позволяет AI-ассистенту гостя читать, отслеживать и повторять свои собственные заказы. Аутентификация через токен на клиента из существующего входа по OTP; личность клиента берётся только из токена — телефон или id клиента никогда не принимаются как аргумент.
https://www.menubarcode.com/mcp/customer JSON-RPC 2.0 · customer tokenПолучить токен (поток OTP)
# 1) request a one-time code (sent to the customer's phone)
curl -X POST https://www.menubarcode.com/api/v1/restaurants/12/customer/otp/request \
-H "Content-Type: application/json" -d '{"phone":"+15551234567"}'
# 2) verify the code → returns a customer bearer token
curl -X POST https://www.menubarcode.com/api/v1/restaurants/12/customer/otp/verify \
-H "Content-Type: application/json" -d '{"phone":"+15551234567","code":"123456"}'
Подключение (Claude Code)
claude mcp add --transport http my-orders https://www.menubarcode.com/mcp/customer \
--header "Authorization: Bearer CUSTOMER_TOKEN"
| Инструмент | Что делает |
|---|---|
my_orders | Ваши недавние заказы (сначала самые новые). |
order_detail | Полная информация + позиции для одного из ваших заказов. |
track_order | Актуальный статус по id заказа или токену отслеживания. |
reorder | Пересобрать прошлый заказ как черновик корзины (пропускает распроданные позиции). |
my_profile | Ваше имя, телефон и число заказов. |
my_bookings | Ваши собственные бронирования номеров в этом заведении (код, статус, даты, тип номера, итого). |
curl -X POST https://www.menubarcode.com/mcp/customer \
-H "Authorization: Bearer CUSTOMER_TOKEN" -H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
"params":{"name":"my_orders","arguments":{"limit":5}}}'
Подключите свой AI-редактор
Создаёте тему или интеграцию с Claude Code, Cursor или VS Code? Направьте их на публичный Dev MCP-сервер — ваш AI-инструмент получает актуальную документацию платформы, сгенерированный белый список Liquid и серверную проверку тем. Токен не нужен.
https://www.menubarcode.com/mcp/dev JSON-RPC 2.0 · publicClaude Code
claude mcp add --transport http platform-dev https://www.menubarcode.com/mcp/dev
Cursor — .cursor/mcp.json
{ "mcpServers": { "platform-dev": { "url": "https://www.menubarcode.com/mcp/dev" } } }
VS Code — .vscode/mcp.json
{ "servers": { "platform-dev": { "type": "http", "url": "https://www.menubarcode.com/mcp/dev" } } }
Инструменты learn_platform (начните здесь), search_docs / fetch_full_doc, get_liquid_reference, get_section_schema, validate_theme, list_webhook_events. Рекомендуемый рабочий процесс агента: изучение → сборка → проверка → доставка.
https://www.menubarcode.com/mcp) работает с данными вашего ресторана; этот отдаёт документацию и проверку и безопасен для публичного доступа.Список изменений
| Дата | Изменить |
|---|---|
| 2026-08-20 | Релиз гостиничной PMS + рост: refund.completed, reservation.created, reservation.cancelled, customer.created, shift.opened, shift.closed события вебхуков; регистрация push-устройств персонала + 2fa эндпоинты; новые инструменты MCP hotel_availability, my_bookings, list_starter_menus, list_webhook_events. |
| 2026-07-28 | Сгенерированный маршрутизатором индекс обнаружения + спецификация OpenAPI 3.1 (всегда соответствует развёрнутому API); Idempotency-Key при создании заказа; лимиты частоты API на токен; subscription.* + app.uninstalled события webhook + доставка Повторить доставку. |
| 2026-07-07 | Публичный Dev MCP-сервер для AI-инструментов кода: поиск по актуальной документации, сгенерированный справочник Liquid, серверная проверка тем. |
| 2026-07-02 | Точечные области токенов (resource:action); конечные точки редактирования меню сотрудниками + аналитики. |
| 2026-07-02 | Приложение для сотрудников: авторизация токеном на сотрудника (пароль + PIN), контроль ролей и прав, статус заказа, KDS bump/recall. |
| 2026-07-02 | Автономное приложение для клиента: авторизация токеном на клиента (регистрация/вход/OTP), профиль, оформление заказа + история, сохранённые адреса, просмотр публичного меню. |
| 2026-07-02 | Полный API управления: CRUD меню, создание заказов, курьеры + жизненный цикл доставки, API токенов приложения курьера, публичное отслеживание заказов, аналитика продаж, клиенты. Новые события webhook для доставки. |
| 2026-07-02 | Доставка webhook через очередь с повторами; подпись по Standard-Webhooks (webhook-id/timestamp/signature); order.paid событие; публичная документация. |
| 2026-06-26 | Первоначальный REST API v1, токены и конечные точки webhook. |
https://www.menubarcode.com/api/v1