MCP: программный интерфейс
MCP-эндпоинт /mcp: инструменты, ресурсы и промпты GetMyBot для ИИ-агентов под тем же персональным токеном.
На этой странице
Кроме REST, у GetMyBot есть интерфейс MCP (Model Context Protocol): он рассчитан на ИИ-агентов и ассистентов, которые вызывают инструменты, а не дёргают эндпоинты вручную. REST остаётся первичным интерфейсом; MCP: удобная альтернатива для агентных сценариев. Имена инструментов, ресурсов и промптов ниже совпадают с тем, что публикует сервер.
Адрес и авторизация
MCP доступен по эндпоинту /mcp (транспорт Streamable HTTP, метод POST). Авторизация: тот же персональный токен, что и для REST: заголовок Authorization: Bearer mbp_…. Отдельные токены заводить не нужно: один PAT работает и для REST, и для MCP. Токен привязан к одному кабинету: list_bots и остальные инструменты видят боты только этого кабинета, а get_balance, get_transactions и connect_bot относятся к нему же (см. Кабинет токена). Каждый инструмент требует того же scope, что и соответствующий REST-эндпоинт; токен со scope * имеет полный доступ. Если scope не хватает: вызов отклоняется (fail-closed), как и в REST.
Если токен выпущен для чужого кабинета, инструменты уровня кабинета проверяют ещё и права кабинета владельца токена: connect_bot требует bots.create, инструменты биллинга: billing.read или billing.write. Scope * прав кабинета не даёт. Если прав нет, инструмент возвращает ошибку permission denied: missing cabinet right (участника в кабинете нет, кабинет доступен только через расшаренного бота) или permission denied: missing cabinet right: <право> (у участника нет конкретного права). Права выдаёт владелец кабинета в карточке «Доступ к кабинету»; сами операции доступа по MCP недоступны.
Подключение к Claude Code / Cursor
Добавьте GetMyBot как удалённый MCP-сервер. Пример конфигурации (mcpServers): подставьте свой домен и токен:
{
"mcpServers": {
"mybot": {
"url": "https://ваш-домен/mcp",
"headers": {
"Authorization": "Bearer mbp_ВАШ_ТОКЕН"
}
}
}
}
Claude Code: положите этот блок в .mcp.json проекта или добавьте сервер командой claude mcp add. Cursor: добавьте тот же блок в настройки MCP (Settings → MCP → Add server). После подключения клиент получит список инструментов, ресурсов и промптов автоматически.
Инструменты по доменам
Сервер публикует инструмент на каждую PAT-доступную операцию REST. Покрытие полное, а не выборочное. Ниже: инструмент и требуемый scope. Имена в формате глагол_существительное (snake_case).
Боты (bots)
list_bots:bots:readget_bot:bots:readvalidate_bot_token:bots:writeconnect_bot:bots:writeupdate_bot:bots:writedelete_bot:bots:writesync_bot:bots:writechange_bot_token:bots:writetransfer_bot:bots:writeget_bot_settings:settings:readupdate_bot_settings:settings:write(в том числеtest_user_ids– тестовые пользователи без списаний)get_widget_settings:settings:readupdate_widget_settings:settings:write
get_widget_settingsотдаёт бренд/лаунчер/панель/приветствие/пречат/расписание/поведение веб-виджета, его origins,widgetKeyиrevision.update_widget_settingsтребуетexpected_revisionиз прочитанного снимка и отклоняет сохранение, если ревизия успела сдвинуться.update_bot_settingsтоже может целиком переписатьwidget_experience, но идёт мимо этой валидации, проверки «аватар принадлежит боту» и замка по ревизии — для виджета это не путь.
Каналы и WhatsApp-шаблоны (bots)
Мультиканальность (Telegram + WhatsApp + VK + веб-виджет) доступна и через MCP. Каналы и шаблоны гейтятся общими scope bots:read / bots:write: отдельного channel-scope нет.
list_channels:bots:read: список каналов бота (platformtg/wa/vk/web, external_id, name, enabled, callback_url).connect_channel:bots:write: подключить канал WhatsApp, VK или веб-виджет (platform+ creds; дляplatform: "web"creds не нужны — вместо них обязательный непустойorigins).delete_channel:bots:write: отключить канал.list_wa_templates:bots:read: каталог WhatsApp-шаблонов канала (name, language, status, category, body).sync_wa_templates:bots:write: пересинхронизировать каталог шаблонов из Meta.create_wa_template:bots:write: создать WhatsApp-шаблон и отправить на модерацию Meta.update_wa_template:bots:write: изменить шаблон (в статусахAPPROVED/REJECTED/PAUSED).delete_wa_template:bots:write: удалить шаблон.
Telegram-каналы подключаются через
connect_bot, а неconnect_channel: последний рассчитан наwa,vkиweb. Категории шаблонов:MARKETING/UTILITY/AUTHENTICATION.create_wa_templateсразу отправляет черновик на модерацию Meta; статус меняется асинхронно: читайте его черезlist_wa_templates(при необходимости обновив каталогsync_wa_templates).
Ответ
connect_channelдляplatform: "web"отличается от остальных платформ:{"widget_key": "…"}, а не{"id": …}. Вызов идемпотентен — повторное подключение того же бота вернёт тот же ключ, а не заведёт второй виджет. Настройка внешнего вида и поведения виджета — отдельная параget_widget_settings/update_widget_settingsвыше, а неconnect_channel.
Загрузка медиа-заголовка шаблона (изображение/видео/документ) через MCP пока не поддерживается: только через web-интерфейс или REST
POST /api/bots/{botID}/channels/{channelID}/templates/media.
Реакции (reactions)
list_reactions:reactions:readget_reaction:reactions:readcreate_reaction:reactions:writeupdate_reaction:reactions:writedelete_reaction:reactions:writeimport_reactions:reactions:writetest_formula:reactions:write: проверить расширенную формулу на примере текста. Поля:bot_id,formula,sample(в REST то же поле называетсяsample_text). Контекст пустой:ctxи параметры не подставляются, пример текста доступен как{text}/{answer}.reorder_reaction:reactions:writeget_reaction_links:reactions:readlist_reaction_folders:reactions:readcreate_reaction_folder:reactions:writeupdate_reaction_folder:reactions:writedelete_reaction_folder:reactions:writeadd_reaction_to_folder:reactions:writeremove_reaction_from_folder:reactions:writeadd_reactions_to_folder:reactions:write
Импорт через
import_reactionsсоздаёт реакции, но пропускает медиа: в MCP-контексте нет premium-проверки и Telegram-приёмника для файлов. Если в бандле SamBot есть картинки/видео/документы: используйте полнофункциональный REST-импорт (POST /api/bots/{botID}/reactions/import), он переносит и медиа.
Рассылки (broadcasts)
start_broadcast:broadcasts:write(опц.paid, опц. сегмент по меткам)get_broadcast:broadcasts:write: для рассылок, запущенных из реакции черезstart_broadcast, отчёт включаетblocked– события блокировки, атрибутированные рассылке в течение 24 часов после доставки.pause_broadcast:broadcasts:writeresume_broadcast:broadcasts:writecancel_broadcast:broadcasts:write
Метки (labels)
list_labels:labels:readcreate_label:labels:writedelete_label:labels:writeset_label_favorite:labels:writeassign_user_label:labels:write– назначить метку подписчику (tg_user_id) по каноническому UUIDlabel_id, необязательно на срокttl_daysот 0 до 106751 дня; 0 означает постоянную метку, по истечении срока метка снимается и срабатывает событие «Метка истекла»remove_user_label:labels:write– снять метку с подписчика по каноническому UUIDlabel_id
Коллекции и записи (collections)
list_collections:collections:readcreate_collection:collections:writeupdate_collection:collections:writedelete_collection:collections:writelist_records:collections:readcreate_record:collections:writeupdate_record:collections:writedelete_record:collections:write
Сценарии (flows)
list_flows:flows:readget_flow:flows:readcreate_flow:flows:writeupdate_flow:flows:writedelete_flow:flows:write
Интеграции, подключения, доступы (integrations)
list_integrations:integrations:readget_integration_sheets:integrations:readget_integration_status:integrations:readcreate_integration:integrations:writeupdate_integration:integrations:writedelete_integration:integrations:writerotate_integration_token:integrations:writelist_connections:integrations:readcreate_connection:integrations:writetest_connection:integrations:writeupdate_connection:integrations:writedelete_connection:integrations:writelist_credentials:integrations:readcreate_credential:integrations:writeupdate_credential:integrations:writedelete_credential:integrations:write
CRM (crm): только чтение
У CRM-подключений своя пара скоупов, и инструментами опубликованы только чтения. Подключение, синхронизация, повтор задачи и разрешение конфликта остаются только в REST, поэтому агент может наблюдать за CRM-интеграцией, но не может менять её поведение. Ни один из инструментов никогда не возвращает креды.
list_crm_connections:crm:read: подключения бота с провайдером, статусом и возможностями.get_crm_connection:crm:read: безопасная сводка одного подключения.get_crm_mapping:crm:read: текущая ревизия маппинга подключения.list_crm_operations:crm:read: последние операции синхронизации, новейшие первыми, при желании в рамках одного подключения.get_crm_operation:crm:read: одна операция с её задачами; сырой полезной нагрузки запроса задачи не отдаёт.list_crm_conflicts:crm:read: задачи, ждущие ручного разбора конфликта.
Что такое подключение, маппинг и операция: на странице CRM-интеграции.
Браузерный пуш и клиентский SDK (web_push, customer_sdk): только чтение
Обе вертикали опубликованы только на чтение. Включение проекта, ротация ключей VAPID и секрета личности, тестовая отправка и отзыв устройства намеренно остаются только в REST: агент может отчитаться по этим каналам, но не может их изменить или запустить. Ни один инструмент не отдаёт приватный ключ VAPID, адрес пуш-подписки, секрет личности или пуш-токен устройства.
get_web_push_config:web_push:read: очищенная конфигурация Web Push для бота.get_web_push_status:web_push:read: включён ли браузерный пуш.get_web_push_report:web_push:read: счётчики подписок и квитанций.get_customer_sdk_status:customer_sdk:read: включён ли проект мобильного SDK.get_customer_sdk_report:customer_sdk:read: счётчики установок и пуш-токенов.
Что означают эти числа: на страницах «Пуш в браузере» и «Клиентский SDK».
Медиа (media)
upload_media:media:writeget_media:media:writedownload_media:media:write: скачать байты медиа-актива в base64 ({mime, size_bytes, data_base64}), например чтобы перезалить его в другого бота черезupload_media. Отказывает на активах крупнее 2 MB.
Шаблоны (templates)
list_templates:templates:readdelete_template:templates:writecreate_template_from_bot:templates:writeapply_template:templates:write
Подписчики, чаты, диалоги (subscribers)
list_subscribers:subscribers:read(пагинация offset/limit, поиск, фильтры по меткам иis_blocked=true|false; каждая строка содержитis_blockedиblocked_at, если подписчик заблокировал бота)list_chats:subscribers:readlist_dialogs:subscribers:read: треды операторского инбокса: подписчик, платформа, превью последнего сообщения, last_seen; keyset-пагинация черезcursor/next_cursor.read_dialog:subscribers:read: сообщения диалога, старые страницы черезbefore_id; у расшифрованных аудио/видео-сообщений вmetaприходятtranscript_status/transcript/transcript_error.send_dialog_message:subscribers:write: операторская отправка текста подписчику: учитывает 24-часовое окно WhatsApp и маршрутизацию каналов, расход метерится по владельцу токена.send_dialog_reaction:subscribers:write: отправить подписчику готовую реакцию бота (как кнопка «отправить реакцию» в операторском чате).transcribe_dialog_message:subscribers:write: запустить или получить расшифровку аудио/видео-сообщения. Идемпотентный: первый вызов ставит фоновую задачу ({"status":"pending"}), поллинг повторным вызовом до{"status":"done","text":…}; неудачная расшифровка перезапускается автоматически. Нужна интеграция «Распознавание речи» у бота.
Статистика и аналитика (stats)
get_stats:stats:readget_stats_summary:stats:readget_stats_recent:stats:readget_stats_log:stats:readget_reaction_health:stats:readget_analytics:stats:readget_analytics_chats:stats:readget_funnel:stats:read
Общие эксперименты (experiments)
list_experiments:experiments:readget_experiment:experiments:readget_experiment_report:experiments:read
Эти инструменты доступны только для чтения. Они возвращают неизменяемое определение эксперимента или отчёт по одной версии. В отчёте валюты разделены и указана выбранная модель атрибуции; инструменты не создают назначения, не записывают факты, не меняют статус и не выбирают победителя.
{
"name": "get_experiment_report",
"arguments": { "bot_id": "<bot-id>", "experiment_id": "<experiment-id>", "version": 2 }
}
Сохранённые воронки событий пока доступны только по REST. Не путайте
устаревший get_funnel выше, который возвращает автоматическую воронку
статистики, с сохранённым определением воронки или её когортой. Для этих
сценариев используйте ограниченные REST-эндпоинты из
руководства по воронкам.
Биллинг: чтение (billing)
get_balance:billing:readlist_tariffs:billing:readget_transactions:billing:read
В чужом кабинете все три требуют права кабинета billing.read, иначе: permission denied: missing cabinet right.
Отправка сообщений
send_message:broadcasts:write: отправка сообщения от имени бота; расход баланса учитывается автоматически по владельцу токена.
Ресурсы
Помимо инструментов сервер отдаёт ресурсы: их можно читать, чтобы не угадывать структуру:
mybot://openapi.yaml: полная OpenAPI-спека (та же, что отдаётся по/openapi.yaml).mybot://reference: компактный справочник: список инструментов с их scope и конвенции (базовый адрес, пагинация, формат ошибок, лимиты).mybot://schemas/reaction,mybot://schemas/trigger,mybot://schemas/action,mybot://schemas/flow,mybot://schemas/collection: JSON-схемы конфигов. Самое ценное для корректной генерации реакций (триггер, условия, чаты, действия), сценариев и коллекций.mybot://bots: динамический список ваших ботов (быстрый контекст без вызова инструмента).
Промпты
Готовые сценарии (slash-команды у MCP-клиента):
setup_autoresponder: собрать бота-автоответчик (аргументы: бот, тема/набор вопросов).segment_broadcast: рассылка по сегменту меток (аргументы: бот, метки, реакция/текст).diagnose_reaction: разобраться, почему реакция не срабатывает (читает реакцию, reaction-health и порядок).import_from_sambot: провести импорт бандла SamBot и проверить результат.weekly_report: сводка по статистике/аналитике бота за период.
Когда выбирать MCP, а когда REST
- Пишете интеграцию, синхронизацию, скрипт или собственную панель: берите REST.
- Подключаете GetMyBot к ИИ-ассистенту или агенту, который умеет MCP: берите
/mcp.
И тот, и другой интерфейс работают под одним токеном и подчиняются одним и тем же правам владельца. Если инструмента под задачу не нашлось: соответствующий REST-эндпоинт всегда есть в интерактивном справочнике.
Rollout-гейты одинаковы на обеих поверхностях. Copilot, Flow Intelligence, Explainable Replay и Vertical Playbooks закрываются fail-closed, если кабинет не включён в rollout.
Customer AI и workflow tools
| Семейство | Tools | Scopes |
|---|---|---|
| Managed AI | invoke_managed_ai, get_managed_ai_usage | managed_ai:invoke, managed_ai:usage:read |
| Copilot | create_copilot_proposal, get_copilot_proposal, validate_copilot_proposal, simulate_copilot_proposal, apply_copilot_proposal, reject_copilot_proposal | copilot:use + journey read/edit |
| Flow Intelligence | get_flow_intelligence_policy, preview/update/reaggregation tools | analytics:read, journey:edit |
| Replay | list_execution_traces, get_execution_trace, simulate_execution_trace, capture_regression_fixture, list_regression_fixtures, get_regression_fixture, run_regression_fixture, list_replay_runs | journey:read/edit |
| Playbooks | list_vertical_playbooks, setup/preflight/install/upgrade; KPI остаётся REST-only | template, bot, reaction read/write |
| Onboarding | start_outcome_onboarding, update_outcome_onboarding, complete_outcome_onboarding | bot/template/reaction scopes |
| Meta | list_meta_connections, start_meta_authorization, refresh_meta_assets, asset check/select/attach и disconnect | integration/bot scopes |
Mutations попадают в audit с surface MCP и PAT token id. OAuth возвращает browser handoff URL; callback и webhooks не публикуются как tools. Provider keyring, routing и reconciliation не доступны customer agents.
Что дальше
- Скиллы для ИИ-агентов: готовые обёртки GetMyBot для Claude Code и других агентов.
- Авторизация и токены: создать PAT для MCP.
- Быстрый старт API: REST-альтернатива.
- Интерактивный справочник: REST-эндпоинты целиком.