operbots-mcp
Server exposes the operbots panel through MCP, letting you manage bots, scenarios, dialogs, broadcasts, knowledge, AI services, and more using your own account permissions.
Setup/access:
setup,login,logout,status,tools; stores token at~/.operbots/credentials.json.Account:
whoami, sessions list/revoke, account profile/appearance/password/security, user search.Cases/team: list/get/create/edit/archive/delete cases, audit, members, roles, invites, transfer, leave.
Bots: list/get/status/journal, save/control, commands, variables, webhook check/rotate, reveal token, detach/delete.
Scenarios: list/get/save/publish/versions/restore/simulate/export/import/delete; edit graph and community/dialog scopes.
Market: list/get/like/install/publish/release/update/unpublish ready-made scenarios.
Dialogs/messages: list/get/chat info/history/export/reply/reply file/download attachment, edit/delete message, update, release, reset stage, delete; tasks list/cancel.
Requests/counterparties/replies: request cards, types, tasks, comments, workflow; counterparties CRUD/link/unlink/reconcile; reply templates.
Broadcasts: list/get/targets/attach/detach/preview/save/duplicate/retry/test/delete/start/cancel; preview before irreversible send.
Knowledge: list/save/add document/get/update/reindex/search/delete.
AI services: list/save/usage/test/delete; supports GigaChat, YandexGPT, OpenAI, OpenRouter, custom.
Extensions/notifications/catalog: extensions auth/ops/nodes/webhooks/OAuth; notification filters/settings/read; catalog for platforms, node kinds, market categories, AI kinds, permissions.
Safety: read-only mode leaves 56 tools; 31 danger tools; destructive actions require exact-name confirmation; permissions mirror your panel rights.
Provides tools for managing Telegram bots through the operbots panel, including listing bots, controlling them, sending replies on their behalf, and managing commands and variables.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@operbots-mcp покажи диалоги, где ждут ответа дольше часа, и ответь им от имени бота"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
operbots-mcp
MCP-сервер панели operbots. Даёт Claude Code и другим клиентам MCP работать со всеми разделами панели: делами, ботами Telegram и MAX, сценариями, маркетом, перепиской, заявками, контрагентами, рассылками, базой знаний, ИИ-сервисами, расширениями и уведомлениями.
Права те же, что у вас. Токен опознаёт вашу учётную запись, и панель применяет к запросам те же проверки ролей и прав по делам. Выдать помощнику больше, чем можете сами, нельзя.
собери сценарий приёма заявок для бота поддержки и прогони его на «привет»
поставь из маркета «Консультант с ИИ» боту магазина с нашим GigaChat и базой «Прайс»
покажи диалоги, где ждут ответа дольше часа, и ответь им от имени бота
добавь в базу знаний прайс со страницы example.com/prices и проверь поиск
составь рассылку про новый прайс клиентам, кроме отписавшихся, и покажи, кому уйдёт
почему бот молчит со вчера — посмотри его журналТребуется Node 20 или новее.
Установка
npx operbots-mcp@latest setupОдна команда спрашивает всё нужное и подключает плагин сама: адрес панели, токен, дело по умолчанию. Токен выпускается в панели — аккаунт → Интеграции → «Выпустить токен»; значение показывается один раз, скопируйте сразу. По итогу перезапустите Claude Code.
Проверить в любой момент: npx operbots-mcp status.
Плагин везёт сервер с собой и запускает его настоящим node по полному пути. При
старте ничего не качается и не разрешается по имени — потому что именно там установка
и разваливалась: npx на Windows оказывался .cmd, на холодном кэше уходил в реестр
дольше рукопожатия, а про старый Node молчал вовсе.
Codex
Установите плагин через CLI (Node 20+ должен быть доступен в PATH):
codex plugin marketplace add uk-kd/operbots-mcp
codex plugin add operbots-mcp@operbotsЕсли токен ещё не сохранён, выполните npx operbots-mcp@latest login.
Codex и Claude Code используют один профиль ~/.operbots/credentials.json;
повторно выпускать токен не нужно. Проверка доступа: npx operbots-mcp@latest status.
После установки откройте новый диалог Codex и вызовите whoami.
Для разработки подключите локальный репозиторий:
codex plugin marketplace add /полный/путь/к/operbots-mcp
codex plugin add operbots-mcp@operbotsПакет содержит переносимые plugin.json и mcp.json. Codex разворачивает
${PLUGIN_ROOT} в абсолютный путь установленного плагина; Claude Code использует
свой .claude-plugin/plugin.json с ${CLAUDE_PLUGIN_ROOT}. Не копируйте команду
из манифеста Claude в Codex вручную: в старом подключении переменная оставалась
буквальной и Node завершался с MODULE_NOT_FOUND до рукопожатия MCP.
Если установлен выпуск 0.1.17 без переносимого манифеста, переустановите плагин
из исправленного выпуска либо локального репозитория.
Другие клиенты MCP
operbots-mcp setup в конце печатает готовую строку запуска с полным путём — её и
вставляйте в свой клиент. Плагины Claude Code при этом не нужны.
Related MCP server: Telegram MCP Server
Доступ
Для входа хранится только токен — ~/.operbots/credentials.json с правами 600.
В самой панели значения тоже нет,
там лежит лишь его отпечаток, поэтому даже из базы токен не восстановить.
Вход выполняется через терминал (operbots-mcp login) или через operbots_login
с абсолютным путём token_file. account_password читает явно указанный локальный
JSON-файл password_file с полями current_password и new_password; пароль
не сохраняется в профиле. Файлы с секретами удалите после использования.
Пароли и токены не запрашиваются через формы MCP: это запрещает
спецификация elicitation.
Отозвать доступ — в панели, аккаунт → Интеграции. Отзыв действует сразу и только
для этого токена: остальные машины продолжают работать. Команда
operbots-mcp logout лишь стирает токен с этой машины, сам он остаётся живым.
Выпускать и отзывать токены можно только из панели — по токену нельзя, иначе утёкший ключ выписывал бы себе новые.
Настройки
Все необязательны. Дело по умолчанию и режим чтения спрашивает setup и кладёт их
рядом с токеном: плагин запускает сервер без окружения вовсе, и передать их иначе
некуда. Переменные при этом главнее профиля — ими переопределяют в контейнере и на
сборке.
Переменная | Что делает |
| Адрес панели. Обычно берётся из сохранённого профиля |
| Токен вместо сохранённого файла: контейнер, сборка |
| Дело по умолчанию: короткое имя, название или идентификатор |
| Оставить инструменты чтения — 56 вместо 143; вход и выход остаются |
| Другой путь к файлу доступа |
| Сколько ждать ответ панели. По умолчанию 30000 |
| Не проверять сертификат — для самоподписанного TLS |
Инструменты
143 инструмента. Дела, ботов, сценарии, публикации маркета, материалы, заготовки, рассылки и
подключения можно называть по имени — идентификаторы не нужны:
flows_publish bot="бот поддержки" flow="Приём заявок".
При одинаковых названиях инструмент просит UUID из списка. Поиск диалога по номеру чата ограничен 1000 записями; поиск по имени отказывает при неполной странице. В делах с более чем 100 рассылками используйте их UUID. Неполная выборка не считается доказательством однозначного совпадения.
Раздел | Инструменты |
Аккаунт |
|
Дела |
|
Люди |
|
Боты |
|
Сценарии |
|
Маркет |
|
Диалоги |
|
Заявки |
|
Контрагенты |
|
Заготовки ответов |
|
Рассылки |
|
База знаний |
|
ИИ-сервисы |
|
Расширения |
|
Уведомления |
|
Справочники |
|
31 инструмент помечен danger: клиент получает подсказку об опасном действии. Удаление дела, бота,
сценария, диалога и базы знаний целиком, передача дела другому владельцу и запуск
рассылки требуют вдобавок названия дословно: случайный вызов не сотрёт и не разошлёт.
Режим OPERBOTS_READ_ONLY=1 оставляет 56 инструментов: всё чтение плюс operbots_login
и operbots_logout — они правят не панель, а токен на этой машине, и без них человек
с отозванным токеном остался бы с советом войти и без способа это сделать.
Чтение истории не сбрасывает непрочитанные сообщения; для этого есть dialogs_mark_read.
knowledge_search, ai_test и flows_simulate могут обращаться к настоящему ИИ-сервису
и расходовать его лимиты, поэтому в режиме чтения недоступны.
Заявки и контрагенты
Карточки возвращают все поля, задачи, историю и доступные действия. Для изменения
заявки передавайте актуальный revision, для типа — version; конфликт возвращается
клиенту без скрытого повторения операции. Перенос диалога из другой карточки требует
replace_counterparty_id прежнего контрагента: конкурентная перепривязка не затирается.
Настройки автосопоставления сохраняют пропущенные поля.
members_list показывает метаданные приглашений, но их ссылки API отдаёт только
при наличии member.invite. Без этого права MCP явно сообщает, что ссылка скрыта.
Расширения и уведомления
Расширения поддерживают авторизацию, операции, входные параметры, вебхуки и начало
OAuth-подключения. Частичная правка сохраняет пропущенные поля и идентификаторы
операций; переданный массив заменяет соответствующий список целиком. Пустые секреты
сохраняют прежние значения, clear_secrets явно удаляет их.
Уведомления по умолчанию показываются по всем делам. Фильтр case ограничивает ленту
только при явной передаче. Настройки видов уведомлений объединяются с текущими;
replace=true заменяет карту полностью.
Маркет
Готовые сценарии — «Консультант с ИИ», «Заявка», «Запись на визит» и остальные — живут в
маркете вместе с публикациями других дел, и ставятся оттуда: market_list находит,
market_install заводит боту новый сценарий рядом с существующими. Первый сценарий
своего вида включается автоматически только при наличии flow.publish; без этого
права остаётся черновиком. Остальные включают через flows_publish. Это правило
действует также для создания через flows_save без copy_of и импорта через
flows_import. Копии сценариев остаются черновиками.
Узлам «Ответ ИИ» при установке передают provider и knowledge_base — что именно
нужно сценарию, показывает карточка market_get. Своё выкладывают через market_publish
по праву market.publish; карточку и граф увидят все пользователи панели, поэтому текст
в настройках узлов стоит проверить заранее — ссылки на подключения панель снимает сама,
а вписанные руками адреса и ключи нет. Название дела на карточке не показывается, пока не
разрешить show_origin.
Переписка
dialogs_history печатает id каждого сообщения: по нему dialogs_reply reply_to
отвечает цитатой, dialogs_edit_message правит текст уже отправленного — и у собеседника,
и в панели, — а dialogs_delete_message убирает своё сообщение из чата собеседника. В
переписке панели удалённое остаётся зачёркнутым: история разговора важнее чистой ленты.
Чужие сообщения не правятся и не удаляются.
Сообщества
Группы и каналы, где состоит бот, — это те же диалоги: dialogs_list kind=community
показывает их, kind=private — только личную переписку. dialogs_get читает сохранённую
карточку; dialogs_chat_info спрашивает платформу о сообществе и обновляет название
и положение бота. Поэтому сверка недоступна в режиме чтения. У сценария есть
вид — dialog для личной переписки и community для сообществ; у бота по одному
включённому на вид, и какой ведёт разговор, решает вид чата. Вид задают в flows_save scope=…, узлы под него — operbots_catalog what=node_kinds scope=community: вход и
выход участника, пост канала, удалить или ограничить участника, закрепить, название
чата, ссылка-приглашение, «участник — админ?». Отдельному сообществу назначают свой
сценарий через dialogs_update flow=…, публикации маркета отбирают по виду
market_list scope=…. Прогон сценария сообществ — flows_simulate event=post|join|leave.
Рассылка
Составляют и отправляют в два шага. broadcasts_save заводит черновик — он никуда
не уходит, даже если задан срок. Отправку начинает только broadcasts_start, и она
необратима: разосланное не отзывается ни у одного получателя. Между ними —
broadcasts_preview: он показывает, сколько разговоров подошло под условия, кто именно
и что настораживает в самом сообщении. Отбор без единого условия означает всех
собеседников бота, а забытое условие выглядит ровно так же — потому предпросмотр и
стоит смотреть всегда.
Условий восемь: кто ведёт разговор, метки, метки-исключения, назначенный участник,
молчание дольше стольких дней, язык, «без получателей прошлой рассылки» и дата
начала общения (joined_after). Их можно передать в audience; audience={}
снимает все условия. broadcasts_targets показывает состояния доставки,
broadcasts_retry повторяет неудачные отправки, broadcasts_test отправляет одному
явно выбранному диалогу. Повтор и тестовая отправка также требуют подтверждения.
Файлы и границы доступа
dialogs_reply_file и broadcasts_attach читают явно указанный абсолютный локальный
путь (до 20 МиБ). MIME определяется по расширению либо задаётся content_type.
Сетевые UNC-пути и Windows device пути не принимаются.
dialogs_download_attachment скачивает вложение в абсолютный destination,
не перезаписывая существующий файл. Ответ записывается потоком с пределом 100 МиБ;
при ошибке незавершённый новый файл удаляется. dialogs_export выгружает текст переписки.
Материал базы знаний с source=file принимает уже извлечённый текст: backend
не имеет маршрута загрузки бинарного документа.
Выпуск и отзыв интеграционных токенов, настройка 2FA и коды восстановления требуют
браузерной сессии: backend не разрешает их по интеграционному токену. account_security
возвращает прямые ссылки на соответствующие вкладки аккаунта. Регистрация, вход с
паролем/2FA, обновление браузерной сессии, OAuth callback, входящие вебхуки платформ
и WebSocket используют свои протоколы; MCP не выдаёт их за доступные операции токена.
sessions_revoke all=true завершает браузерные сессии на всех устройствах.
Значения секретных переменных бота панель отдаёт открыто, а сервер скрывает — видно только имя.
Полотно
Граф отдаётся и принимается плоским, без внутренностей редактора:
узлы:
- id: start
kind: trigger.command
config: { command: start }
- id: hello
kind: action.message
config: { text: Здравствуйте! Чем помочь? }
связи:
- from: start
to: helloПереданные nodes, edges и comments заменяют свой список целиком;
пропущенные списки сохраняются. Сначала flows_get, затем flows_save с нужными
списками и version прочитанной редакции. Для правки графа существующего сценария
version обязательна; конфликт 409 требует перечитать и объединить правки.
Размеры, координаты, оформление узлов и связей, комментарии и viewport
сохраняются, если не передать их явно. Состав config — в operbots_catalog what=node_kinds; узлы у платформ одни и те же, а варианты в их настройках разные,
поэтому передавайте platform — иначе в граф попадёт вариант, которого у платформы
бота нет.
Новая редакция создаётся, только если граф действительно изменился.
Команды
operbots-mcp setup установка целиком: токен, настройки, плагин
operbots-mcp запустить сервер MCP (так его вызывает клиент)
operbots-mcp login только сохранить токен доступа к панели
operbots-mcp logout удалить токен с этой машины
operbots-mcp status проверить связь с панелью и показать права
operbots-mcp tools перечислить доступные инструментыMIT · правите код — загляните в CONTRIBUTING.md
Available Tools
143 toolsaccount_appearanceОформление панелиB
Меняет язык, тему, акцент, плотность и анимации панели. Пропущенные настройки сохраняет.
Inputs: mode, accent, locale, motion, +4 more.
account_passwordИзменить парольADestructive
Меняет пароль из локального JSON-файла с current_password и new_password, созданного человеком вне MCP. Пароли не запрашиваются через формы MCP, не попадают в аргументы или ответ. Прежние браузерные сессии завершаются.
Inputs: password_file (required).
account_securityБезопасность и токены аккаунтаARead-onlyIdempotent
Ссылка на управление вторым фактором, кодами восстановления и интеграционными токенами. Эти операции требуют браузерной сессии: токен интеграции не может выпускать новые токены или менять второй фактор.
Inputs: section.
account_updateИзменить данные аккаунтаA
Меняет ФИО, дату рождения, телефон, часовой пояс и номера в Telegram и MAX учётной записи — по номерам бот шлёт участнику весточки из сценария (узел «Сообщить в чат» с адресатом «участник команды»). Передавайте только те поля, которые нужно изменить: остальные останутся как есть. Этим же инструментом проходят шаг знакомства: пока фамилии, имени и даты рождения нет, API закрыт целиком.
Inputs: phone, max_id, timezone, last_name, +5 more.
ai_deleteУдалить подключение к ИИADestructive
Удаляет подключение вместе с сохранёнными ключами. Пока сервис используют боты, панель удалить его не даст: отвяжите его от каждого бота (bots_save ai_provider=null) и от баз знаний (knowledge_save provider=null), а из узлов «Ответ ИИ» уберите provider_id через flows_save.
Inputs: provider (required), case.
ai_listПодключения к ИИ-сервисамARead-onlyIdempotent
Какие ИИ-сервисы подключены к делу, с какими моделями и сколько ботов их используют. Ключи не показываются — только последние символы.
Inputs: case, provider.
ai_saveПодключить или настроить ИИ-сервисA
Без параметра provider подключает новый сервис, с ним — меняет настройки. Какие ключи нужны: gigachat — authorization_key (обязательно), scope (по умолчанию GIGACHAT_API_PERS); yandexgpt — api_key (обязательно), folder_id (обязательно); openai — api_key (обязательно); openrouter — api_key (обязательно); custom — api_key (по желанию); обязателен base_url. При изменении переданные ключи дописываются поверх прежних, а стереть ключ пустой строкой нельзя — только перезаписать.
Inputs: case, kind, name, model, +9 more.
ai_testПроверить ИИ-сервисA
Отправляет пробную реплику и показывает ответ модели или причину отказа. Это настоящий запрос к сервису: он расходует лимиты и может стоить денег.
Inputs: provider (required), case, prompt.
ai_usageРасход ИИBRead-onlyIdempotent
Полный отчёт расхода с итогами, сравнением, днями и разрезами. provider, bot, kind, model — точные ключи из choices предыдущего ответа, включая удалённые подключения.
Inputs: bot, case, days, kind, +2 more.
audit_filtersОтбор журнала действийBRead-onlyIdempotent
Доступные виды событий и авторы с числом записей, включая ушедших участников.
Inputs: case.
audit_listЖурнал действийARead-onlyIdempotent
Кто и что менял в деле: правки, включения, удаления, выдачу прав. Отвечает на вопрос «кто это сделал» — в том числе про действия, совершённые токеном доступа: у таких записей указано, каким именно. Чтение в журнал не попадает. Требует права audit.view.
Inputs: case, limit, action, offset, +1 more.
bots_commands_applyНастроить меню командA
Приводит меню команд бота к переданному списку: недостающие команды добавляет, существующие обновляет, порядок расставляет по порядку в списке. Команды, которых нет в списке, сохраняются — чтобы удалить их, передайте remove_missing=true. Само меню у платформы обновляется, только если sync=true или бот перезапущен.
Inputs: bot (required), commands (required), case, sync, +1 more.
bots_controlЗапуск и остановка ботаA
Запускает, останавливает или перезапускает бота, а также отправляет меню команд у платформы. Запуск сам синхронизирует меню; отдельная синхронизация нужна после правки команд у уже работающего бота.
Inputs: bot (required), action (required), case.
bots_deleteОтключить ботаADestructive
Убирает бота из дела вместе с командами и переменными. Диалоги и переписка удаляются. Восстановить нельзя. Чтобы временно выключить, используйте bots_save enabled=false.
Inputs: bot (required), confirm_name (required), case.
bots_detachОтключить бота с выбором сохраняемых данныхADestructive
Отключает бота с точным подтверждением названием. По умолчанию сохраняет сценарии, диалоги, рассылки и журнал под архивной записью. Сценарии можно передать другому боту.
Inputs: bot (required), confirm_name (required), case, flows_to, +4 more.
bots_getКарточка ботаARead-onlyIdempotent
Бот целиком: настройки, меню команд, переменные контента и список сценариев. Значения переменных, отмеченных как секретные, скрыты.
Inputs: bot (required), case.
bots_journalЖурнал ботаARead-onlyIdempotent
Что делал сам бот: запуски и остановки, входящие обновления, ответы модели и сколько она думала, ожидание ответа по сценарию, отложенные действия, ошибки сценария и отказы платформой. Журнал дела (audit_list) пишет действия людей — этот пишет действия бота, и на вопрос «почему бот молчит» отвечает именно он. Записи идут от свежих к старым; сузить можно видом (kind) и уровнем — level=error оставит одни сбои. Какие виды у этого бота вообще встречались и сколько их, перечислено в конце ответа. Журнал — недавняя история, а не архив: старые записи панель убирает сама.
Inputs: bot (required), case, kind, level, +2 more.
bots_listСписок ботовARead-onlyIdempotent
Боты дела: состояние, режим работы, число диалогов и непрочитанного.
Inputs: case.
bots_reveal_tokenПоказать токен ботаADestructive
Возвращает токен бота в открытом виде. Токен даёт полное управление ботом — запрашивайте его, только если пользователь прямо об этом попросил, и не пересказывайте без надобности.
Inputs: bot (required), case.
bots_saveПодключить или настроить ботаA
Без параметра bot подключает бота по токену или восстанавливает его архивную запись с оставленными сценариями и диалогами. Токен проверяется живым запросом к платформе и хранится зашифрованным. С параметром bot меняет настройки. Смена токена или режима перезапускает работающего бота. Платформу у подключённого бота сменить нельзя: у неё свой вид токена и свои пределы.
Inputs: bot, case, mode, name, +7 more.
bots_statusЖивое состояние ботаBRead-onlyIdempotent
Состояние живого рантайма: время работы, обновления, ошибки и время проверки.
Inputs: bot (required), case.
bots_variables_setПеременные контента ботаA
Задаёт переменные, которые подставляются в тексты сценария: цены, адреса, ссылки. Существующие ключи обновляются, новые создаются. Отмеченные секретными не показываются обратно. Ключ: латиница, цифры, подчёркивание и точка.
Inputs: bot (required), case, variables, delete_keys.
bots_webhook_checkЧто платформа знает о вебхукеARead-onlyIdempotent
Отчёт самой платформы: на какой адрес она шлёт обновления, сколько их ждёт доставки и какой была последняя ошибка доставки. Единственный способ понять, почему бот в режиме вебхука молчит: со стороны панели всё бывает исправно — адрес публичный, запрос доходит, — а платформа не достучалась и знает причину. Ни токен, ни ключ из адреса наружу не отдаются: адрес показан без ключа, а вывод прямо говорит, тот ли это адрес, которого ждёт панель.
Inputs: bot (required), case.
bots_webhook_infoГотовность панели к вебхукамARead-onlyIdempotent
Публичный адрес панели и условия для включения режима webhook. Бот не требуется.
Inputs: case.
bots_webhook_rotateСменить адрес вебхукаADestructive
Выдаёт боту новый секретный адрес вебхука. Прежний перестаёт работать навсегда — это нужно, если старый адрес утёк. Работающий бот перезапускается.
Inputs: bot (required), case.
broadcasts_attachПриложить файл к рассылкеA
Прикладывает локальный файл к черновику или ещё не начавшейся рассылке.
Inputs: broadcast (required), file_path (required), case, content_type.
broadcasts_cancelОстановить рассылкуA
Останавливает рассылку: то, что ещё не ушло, не уйдёт. Отправленное вернуть нельзя, счётчики остаются. Повторить неудачные отправки — broadcasts_retry; составить новый черновик из этой рассылки — broadcasts_duplicate.
Inputs: broadcast (required), case.
broadcasts_deleteУдалить рассылкуADestructive
Удаляет рассылку и отчёт. Идущую сначала остановите; отправленное не отзывается.
Inputs: broadcast (required), confirm_name (required), case.
broadcasts_detachСнять вложение рассылкиA
Снимает вложение черновика или ещё не начавшейся рассылки.
Inputs: broadcast (required), case.
broadcasts_duplicateСкопировать рассылку в черновикB
Копия не отправляется. only_missed исключает тех, кто получил исходную рассылку.
Inputs: broadcast (required), case, only_missed.
broadcasts_getОткрыть рассылкуCRead-onlyIdempotent
Текст, кнопки по рядам, вложение, условия отбора и состояние рассылки.
Inputs: broadcast (required), case.
broadcasts_listРассылки делаARead-onlyIdempotent
Рассылки дела с условиями отбора, текстом и счётчиками: скольким ушло, скольким не дошло и сколько пропущено — это те, кто закрыл боту рот. Состояния: draft — черновик, его ещё можно править и запускать; scheduled — ждёт своего срока или ближайшего оборота рассыльщика; running — идёт; done — закончена; cancelled — остановлена; failed — не с чего было начать.
Inputs: q, bot, case, limit, +2 more.
broadcasts_previewКому уйдёт рассылкаARead-onlyIdempotent
Прикидка до отправки: сколько разговоров подходит под условия, кто именно (первые 50 по свежести), сколько из них закрыли боту рот и что настораживает в самом сообщении — пустой отбор, слишком широкий, неизвестные подстановки. Разосланное не отзывают, поэтому смотреть надо здесь. Ничего не сохраняет: черновик заводит broadcasts_save. Условия — те же, что у списка разговоров; ни одного условия означает всех собеседников бота.
Inputs: bot (required), text (required), case, mode, +10 more.
broadcasts_retryПовторить рассылку недошедшимADestructive
Повторно отправляет недошедшие сообщения. Уже получившие не получают второй раз.
Inputs: broadcast (required), confirm_name (required), case.
broadcasts_saveСоставить или поправить рассылкуA
Без параметра broadcast заводит черновик — он никуда не уходит, пока его не запустят (broadcasts_start). С параметром broadcast правит черновик, а также рассылку, поставленную на срок и ещё не ушедшую. Начавшуюся правкой уже не догнать — её останавливают через broadcasts_cancel. Бота меняют, только сняв вложение. Условия отбора при правке заменяются целиком теми, что переданы, а не дополняются; не передали ни одного — прежние остаются. Разметку HTML панель проверяет здесь же: платформа отбила бы сообщение с незакрытым тегом сразу у всех.
Inputs: bot, case, mode, tags, +13 more.
broadcasts_startЗапустить рассылкуADestructive
Ставит черновик в очередь: рассыльщик разошлёт сообщение всем, кто подошёл под условия. Отправленное не отзывается ни у одного получателя, поэтому сначала broadcasts_preview — пустой отбор означает всех собеседников бота. Со сроком (run_at) рассылка дождётся его. То, что ещё не ушло, останавливают через broadcasts_cancel.
Inputs: broadcast (required), confirm_title (required), case.
broadcasts_targetsОтчёт по получателям рассылкиCRead-onlyIdempotent
Кому дошло, кому нет и почему. Фильтры и страницы обрабатывает панель.
Inputs: broadcast (required), q, case, limit, +2 more.
broadcasts_testОтправить пробу рассылкиADestructive
Реально отправляет одно сообщение в выбранный диалог от имени бота рассылки.
Inputs: dialog (required), broadcast (required), confirm_name (required), case.
cases_deleteУдалить делоADestructive
Удаляет дело целиком: боты, сценарии, переписка, участники и роли. Восстановить нельзя. Чтобы просто убрать дело из списка, используйте cases_save с archived=true.
Inputs: case (required), confirm_name (required).
cases_getОткрыть делоARead-onlyIdempotent
Карточка дела: права текущего пользователя в нём и сводка — боты, диалоги, переписка за выбранный срок, отложенные действия, базы знаний, участники.
Inputs: case, days.
cases_leaveВыйти из делаADestructive
Убирает вас из числа участников дела. Владелец выйти не может — сначала нужно передать дело другому участнику (case_transfer).
Inputs: case (required).
cases_listСписок делARead-onlyIdempotent
Все дела, к которым есть доступ, с ролью, правами и счётчиками ботов и непрочитанного.
Inputs: include_archived.
cases_saveСоздать или изменить делоA
Без указания дела создаёт новое (вы становитесь владельцем, разворачиваются пять ролей: владелец, администратор, конструктор, оператор, наблюдатель). С указанием — меняет название, описание, знак и оформление или убирает дело в архив.
Inputs: case, name, emoji, accent, +3 more.
case_transferПередать делоADestructive
Делает другого участника владельцем дела. Прежний владелец переводится в администраторы и теряет право на повторную передачу — вернуть дело сможет только новый владелец.
Inputs: case (required), member (required), confirm_name (required).
counterparties_deleteУдалить контрагентаADestructive
Удаляет карточку и снимает её связи с диалогами. Нужно дословное name для подтверждения.
Inputs: confirm_name (required), counterparty_id (required), case.
counterparties_dialogsДиалоги и их контрагентыARead-onlyIdempotent
Без dialog_id показывает доступные диалоги для связывания с карточкой. С dialog_id возвращает связанного контрагента либо сообщает, что связи нет. Нужны права chat.view.
Inputs: case, search, dialog_id.
counterparties_getОткрыть контрагентаARead-onlyIdempotent
Карточка контрагента по UUID из counterparties_list. Диалоги видны только с правом chat.view.
Inputs: counterparty_id (required), case.
counterparties_linkСвязать диалог с контрагентомA
Связывает один явно указанный dialog_id с карточкой. Для переноса из другой карточки нужно явно передать её UUID в replace_counterparty_id; панель отклонит несовпавшую прежнюю связь.
Inputs: dialog_id (required), counterparty_id (required), case, replace_counterparty_id.
counterparties_listКонтрагенты делаCRead-onlyIdempotent
Контрагенты с контактами, заметками, дополнительными полями и доступными связанными диалогами.
Inputs: case, search.
counterparties_reconcileСопоставить имеющиеся диалогиA
Запускает серверное автоматическое сопоставление по текущим настройкам, возвращает linked/created/skipped. Ручные связи учитывает сама панель.
Inputs: case.
counterparties_saveСоздать или изменить контрагентаA
Без counterparty_id создаёт карточку; для создания нужно name, dialog_ids содержит явно выбранные UUID. При правке передавайте только изменённые поля; null очищает контакт, custom_fields заменяет карту целиком. Связи существующей карточки меняют через counterparties_link/unlink.
Inputs: case, name, email, notes, +5 more.
counterparties_settingsНастройки сопоставления контрагентовCRead-onlyIdempotent
Ручной или автоматический режим, критерии и переменные для сопоставления диалогов.
Inputs: case.
counterparties_settings_saveИзменить сопоставление контрагентовA
Меняет только переданные настройки. В automatic нужен хотя бы один критерий; с включённым сопоставлением телефона или почты соответствующая переменная не должна быть пустой. Для обработки имеющихся диалогов вызовите counterparties_reconcile.
Inputs: case, mode, match_email, match_phone, +4 more.
counterparties_unlinkСнять связь диалога с контрагентомB
Снимает только явно указанную связь; карточка и переписка сохраняются.
Inputs: dialog_id (required), counterparty_id (required), case.
dialogs_cancel_scheduledОтменить продолжение диалогаADestructive
Отменяет одно отложенное действие из dialogs_get для указанного диалога.
Inputs: dialog (required), task_id (required), case.
dialogs_chat_infoСверить сведения о сообществеA
Спрашивает платформу о группе или канале: участники, ссылка и положение бота. Панель при этом обновляет название, положение бота и признак блокировки диалога. Для чтения сохранённых данных используйте dialogs_get.
Inputs: dialog (required), case.
dialogs_deleteУдалить диалогADestructive
Удаляет диалог вместе со всей перепиской. Восстановить нельзя. Чтобы бот просто перестал отвечать этому человеку, переведите разговор в ручной режим: dialogs_update mode=operator, ai_enabled=false — переписка при этом останется.
Inputs: dialog (required), confirm_contact (required), case.
dialogs_delete_messageУдалить сообщение у собеседникаADestructive
Убирает своё сообщение из чата собеседника; в переписке панели запись остаётся зачёркнутой — след того, что и когда убрали. Только свои: сообщения собеседника не удаляются. Вернуть нельзя. Слишком старое сообщение платформа удалить не даст.
Inputs: dialog (required), message (required), case.
dialogs_download_attachmentСкачать вложение сообщенияBRead-onlyIdempotent
Сохраняет вложение локально. destination должен быть новым файлом.
Inputs: dialog (required), message (required), destination (required), case, +1 more.
dialogs_edit_messageИзменить отправленное сообщениеA
Меняет текст сообщения, которое бот или оператор уже отправили, — и у собеседника, и в переписке панели. Только свои сообщения: чужие и служебные не правятся. Не дошедшее изменить нельзя — только отправить заново; подпись к вложению панель пока не правит. Кнопки остаются прежними. Бот должен быть запущен; слишком старое сообщение платформа может не дать изменить.
Inputs: text (required), dialog (required), message (required), case, +1 more.
dialogs_exportВыгрузить перепискуARead-onlyIdempotent
Переписка одним готовым текстом: шапка с собеседником, ботом и метками, дальше сообщения по порядку — ровно то, что панель отдаёт файлом. Годится приложить к разбору спора или передать тому, у кого доступа к панели нет. Прочитанной переписка от этого не становится, но сама выгрузка отмечается в журнале дела. Разбирать сообщения по одному и уходить вглубь истории удобнее через dialogs_history.
Inputs: dialog (required), case.
dialogs_forget_memoryОчистить память ИИ о диалогеA
Удаляет сводку ИИ. Переписка остаётся; следующая сводка соберётся по ней заново.
Inputs: dialog (required), case.
dialogs_getКарточка диалогаARead-onlyIdempotent
Диалог и его положение в сценарии: на каком шаге стоит разговор, какого ответа ждёт, какой путь уже пройден, что запланировано и какие переменные накоплены.
Inputs: dialog (required), case.
dialogs_historyИстория перепискиARead-onlyIdempotent
Сообщения диалога от старых к новым. По умолчанию ничего не помечает прочитанным — счётчики в панели остаются как были. За ранними сообщениями передайте before и before_id самого раннего сообщения: время бывает одинаковым у нескольких сообщений. Пометить прочитанным — отдельный write-инструмент dialogs_mark_read.
Inputs: dialog (required), case, limit, before, +2 more.
dialogs_listСписок диалоговARead-onlyIdempotent
Переписки ботов дела с отбором по боту, виду чата, режиму и подстроке. Показывает, где есть непрочитанное и какие диалоги ведёт оператор. Сообщества — группы и каналы, где состоит бот, — это те же диалоги с kind=community; в панели они в разделе «Сообщества».
Inputs: bot, tag, case, kind, +6 more.
dialogs_mark_readПометить диалог прочитаннымA
Обнуляет счётчик непрочитанного. Требует chat.reply; историю читает dialogs_history.
Inputs: dialog (required), case.
dialogs_releaseВернуть диалог сценариюB
Снимает оператора и возвращает ведение диалога сценарию.
Inputs: dialog (required), case.
dialogs_replyОтветить собеседникуA
Отправляет сообщение человеку от имени бота — своим текстом или заготовкой из replies_list, при желании цитатой на конкретное сообщение (reply_to). По умолчанию диалог переходит в ручной режим и закрепляется за вами — сценарий перестаёт вести разговор, пока его не вернут (dialogs_update mode=bot). Бот должен быть запущен. Проверяйте поле «ошибка доставки» в ответе: сообщение сохраняется даже тогда, когда платформа его не приняла.
Inputs: dialog (required), case, text, reply, +4 more.
dialogs_reply_fileОтправить файл собеседникуA
Отправляет локальный файл от имени бота, до 20 МиБ. Ошибка доставки видна в ответе.
Inputs: dialog (required), file_path (required), case, caption, +3 more.
dialogs_reset_stageСнять разговор с шагаA
Освобождает разговор, застрявший на узле ожидания: сценарий ждёт ответа, которого не будет, и со стороны это выглядит молчащим ботом. После снятия следующее сообщение начнёт сценарий заново. Отложенные продолжения этого разговора снимаются заодно — они назначены от того же шага и сработали бы в пустоту.
Inputs: dialog (required), case.
dialogs_updateНастроить диалогA
Меняет режим ведения (сценарий или оператор), отвечает ли ИИ, метки, закрепление и сценарий сообщества. Перевод в режим bot возвращает разговор сценарию и снимает оператора. Заблокировать собеседника отсюда нельзя: блокировку приносит платформа, когда человек сам закрывает боту рот, — панель её только показывает.
Inputs: dialog (required), case, flow, mode, +4 more.
extensions_deleteУдалить расширениеADestructive
Удаляет подключение с подтверждением точного названия. Сервер защищает операции, используемые сценариями.
Inputs: extension (required), confirm_name (required), case.
extensions_getОпределение расширенияCRead-onlyIdempotent
Настройки, операции и события расширения с идентификаторами. Секреты скрыты.
Inputs: extension (required), case.
extensions_listРасширения делаBRead-onlyIdempotent
Полные определения внешних подключений. Сохранённые секреты сервер возвращает пустыми.
Inputs: case.
extensions_nodesУзлы расширенийBRead-onlyIdempotent
Доступные этому делу динамические виды узлов extension и extension_trigger, поля и выходы для flows_save.
Inputs: case.
extensions_oauth_beginАвторизовать расширение через OAuthA
Создаёт ссылку OAuth с защищённым состоянием. Откройте её в браузере и завершите вход на стороне внешней системы.
Inputs: extension (required), case.
extensions_saveСоздать или настроить расширениеA
Без extension создаёт подключение (нужны name и base_url). При правке сохраняет пропущенные поля, операции и события. Переданные массивы заменяют прежние целиком; сохраняйте идентификаторы используемых операций.
Inputs: auth, case, icon, name, +12 more.
extensions_templatesШаблоны расширенийCRead-onlyIdempotent
Готовые определения подключений для создания расширения.
Inputs: case.
flows_deleteУдалить сценарийADestructive
Удаляет сценарий вместе со всей историей редакций. Восстановить нельзя. Если удалить активный сценарий, другой вместо него автоматически не включится. Его собственная публикация в маркете также удаляется; установленные копии сохраняются.
Inputs: bot (required), flow (required), confirm_name (required), case.
flows_exportВыгрузить сценарийARead-onlyIdempotent
Отдаёт сценарий одним объектом формата operbots.flow — тем же, что панель скачивает кнопкой «Скачать». Ответ приходит готовым JSON: его целиком передают в flows_import полем document или сохраняют копию рядом с кодом.
Inputs: bot (required), flow (required), case.
flows_getОткрыть сценарийARead-onlyIdempotent
Сценарий целиком: все узлы с их параметрами, все связи и замечания к графу — связи в никуда, отсутствие триггера, недостижимые узлы.
Inputs: bot (required), flow (required), case.
flows_importЗагрузить сценарий из выгрузкиA
Заводит сценарий из объекта, полученного через flows_export. Существующие не трогает: загруженный добавляется рядом, а при совпадении названий получает номер. Первый сценарий своего вида включается автоматически только с правом flow.publish; без него остаётся черновиком. Остальные включаются через flows_publish. Ссылки на ИИ-сервис и базу знаний исходного дела при переезде проверяются, и неразрешимые снимаются — о каждой снятой сказано в ответе.
Inputs: bot (required), document (required), case, name.
flows_listСценарииARead-onlyIdempotent
Какие сценарии заведены, какой из них в работе и сколько в них узлов. Без параметра bot возвращает сценарии всего дела — со всех ботов сразу. У сценария есть вид: для диалогов (личная переписка) или для сообществ (группы и каналы); у бота по одному включённому на вид.
Inputs: bot, case.
flows_publishВключить или выключить сценарийA
Включает сценарий в работу — остальные сценарии бота того же вида при этом выключаются. Для диалогов и сообщества выбирается по одному активному сценарию. Перед включением граф проверяется: связи на несуществующие узлы не дадут опубликовать. Выключение снимает выбранный сценарий с работы.
Inputs: bot (required), flow (required), case, active.
flows_restoreВернуть редакциюA
Возвращает граф сценария к выбранной редакции. История не переписывается — поверх создаётся новая редакция. Если сценарий в работе, бот начнёт вести себя по-старому сразу.
Inputs: bot (required), flow (required), version (required), case.
flows_saveСоздать или сохранить сценарийA
Без параметра flow создаёт сценарий — пустой, из переданного графа или копией другого (copy_of). С параметром flow перезаписывает его. Граф передаётся ЦЕЛИКОМ: чтобы поправить один узел, сначала прочитайте сценарий через flows_get и пришлите изменённый список полностью вместе с version прочитанной редакции. При конфликте перечитайте и объедините правки. Не переданные nodes/edges/comments/viewport сохраняются. Новая редакция создаётся, только если граф действительно изменился. Готовые сценарии — «Консультант с ИИ», «Заявка», «Запись на визит» и другие — здесь не создаются: их ставят из маркета через market_install. При создании без copy_of первый сценарий своего вида включается автоматически только с правом flow.publish; без него остаётся черновиком. Копии остаются черновиками. Включить сценарий — flows_publish.
Inputs: bot (required), case, flow, name, +12 more.
flows_simulateПрогнать сценарийA
Проверяет сценарий, не выходя к платформе: какой триггер сработал, какие шаги прошли и что бот ответил бы. Диалог нигде не сохраняется, задержки пропускаются, запросы к внешним адресам и весточки в служебный чат не выполняются. Через variables можно подставить накопленное разговором — так проверяются ветки условий и подстановки. Внимание: узлы с ИИ обращаются к настоящей модели и расходуют её лимиты.
Inputs: bot (required), flow (required), case, text, +4 more.
flows_versionsИстория редакцийBRead-onlyIdempotent
Все сохранённые редакции сценария с комментариями и датами.
Inputs: bot (required), flow (required), case.
invites_acceptПринять приглашениеA
Вступает в дело от имени текущего пользователя по токену из ссылки-приглашения.
Inputs: token (required).
invites_createСоздать приглашениеA
Делает ссылку для вступления в дело — в том числе для человека, который ещё не зарегистрирован в панели. Ссылку сервер никуда не отправляет: её нужно передать самому. Любой, у кого есть ссылка, войдёт в дело с указанной ролью.
Inputs: case, role, email, max_uses, +1 more.
invites_getПосмотреть приглашениеARead-onlyIdempotent
Показывает дело, роль и состояние приглашения по токену из ссылки до вступления.
Inputs: token (required).
invites_revokeОтозвать приглашениеBDestructive
Гасит ссылку-приглашение: перейти по ней больше не получится.
Inputs: invite_id (required), case.
knowledge_add_documentДобавить материалA
Кладёт в базу текст, извлечённый текст файла (source=file) или страницу по ссылке. Разбор идёт в фоне: сразу после добавления материал в состоянии pending, проверьте его позже через knowledge_list. Повторный вызов создаёт дубликат, а не обновляет прежний материал.
Inputs: base (required), url, case, text, +2 more.
knowledge_deleteУдалить базу или материалADestructive
С параметром document удаляет один материал, без него — базу знаний целиком вместе со всеми материалами и векторами. Восстановить нельзя.
Inputs: base (required), case, document, confirm_name.
knowledge_documentМатериал целикомARead-onlyIdempotent
Материал с его текстом: что в нём написано на самом деле. Список материалов текста не отдаёт. Материал можно назвать по имени — идентификатор не обязателен. С chunks=true вдобавок покажет нарезку: те самые куски, которыми материал ляжет модели.
Inputs: base (required), document (required), case, chunks.
knowledge_document_updateИзменить материалA
Правит название и текст материала. Изменённый текст сам уходит на пересборку — иначе бот отвечал бы по прежней нарезке. Вид источника и ссылку сменить нельзя: это уже другой материал. Для материала по ссылке refetch=true перечитывает страницу заново — страница забирается один раз, при добавлении, и дальше живёт снимком.
Inputs: base (required), document (required), case, text, +2 more.
knowledge_listБазы знанийARead-onlyIdempotent
Без параметра base — все базы знаний дела с их настройками. С параметром base — ещё и список материалов с состоянием разбора.
Inputs: base, case.
knowledge_reindexПересобрать материалыA
Ставит материалы в очередь на повторный разбор. Нужно после смены размера куска или подключения к ИИ-сервису: старые фрагменты нарезаны по-прежнему. Без параметра document пересобирается вся база.
Inputs: base (required), case, document.
knowledge_saveСоздать или настроить базу знанийA
Без параметра base создаёт базу, с параметром — меняет её настройки. Для поиска базе нужно подключение к ИИ-сервису, умеющему считать векторы. Подключение можно сменить или снять (provider=null) только у пустой базы: векторы разных моделей несопоставимы. После правки размера куска старые материалы нужно пересобрать через knowledge_reindex.
Inputs: base, case, name, top_k, +6 more.
knowledge_searchПроверить поиск по базеA
Показывает, какие фрагменты база подставит модели в ответ на такой вопрос. Так проверяют, что материалы разобраны и порог близости выбран верно. Если база выключена или векторы не считаются, ответ будет пустым без ошибки. Поиск вызывает внешний ИИ-сервис для векторизации вопроса и записывает расход; он может оплачиваться отдельно.
Inputs: base (required), question (required), case, limit.
market_getКарточка публикацииARead-onlyIdempotent
Публикация целиком: описание, состав сценария, история версий и, с параметром case, где в этом деле она уже стоит. С with_graph отдаёт и сам граф — посмотреть узлы до установки.
Inputs: item (required), case, with_graph.
market_installУстановить из маркетаA
Ставит публикацию боту новым сценарием — рядом с существующими, ничего не заменяя. Первый сценарий своего вида включается автоматически только с правом flow.publish; без него остаётся черновиком. Остальные включаются через flows_publish. Ссылки на чужие подключения из графа снимаются; узлам «Ответ ИИ» передайте provider и knowledge_base, иначе они отвечают пустотой или «из головы». Чего требует сценарий, видно в market_get, поле «нужно». Повторная установка той же публикации даёт ещё одну копию — так обновляют до свежей версии.
Inputs: bot (required), item (required), case, name, +2 more.
market_likeЛайк публикацииA
Поставить или снять лайк публикации от своего имени.
Inputs: item (required), liked.
market_listМаркет сценариевARead-onlyIdempotent
Каталог готовых сценариев: от проекта и опубликованные другими делами. Поиск по названию и описанию, отбор по разделу, платформе, источнику и потребности в ИИ или базе знаний. С параметром case у каждой публикации видно, стоит ли она уже в этом деле и не отстала ли от свежей версии. Установка — market_install.
Inputs: case, mine, sort, limit, +9 more.
market_publishВыложить сценарий в маркетA
Публикует сценарий дела в маркете: карточку и граф текущей редакции увидят все пользователи панели и смогут поставить себе. Ссылки на подключения и базы знаний снимаются, а вот текст в настройках узлов — адреса, подписи, ключи, вписанные руками, — уходит как есть: проверьте граф через flows_get. Название дела на карточке не показывается, пока не разрешить show_origin. Нужно право market.publish. Правки после публикации — market_release (новая версия) и market_update (карточка).
Inputs: bot (required), flow (required), title (required), summary (required), +4 more.
market_releaseВыпустить новую версиюA
Обновляет граф публикации до текущей редакции сценария и поднимает номер версии. Уже установленные копии у других не меняются — у них появится пометка, что доступна свежая версия. Если граф с прошлой версии не менялся, панель откажет.
Inputs: bot (required), flow (required), comment (required), case.
market_unpublishСнять публикациюADestructive
Убирает публикацию из маркета вместе с историей версий, лайками и счётчиком установок; вернуть их нельзя — повторная публикация начнётся с версии 1. Уже установленные копии у других дел остаются. Сам сценарий в деле не трогается.
Inputs: bot (required), flow (required), case.
market_updateПравить карточку публикацииA
Меняет карточку публикации — название, описание, раздел, подпись делом. Граф не трогает: для него market_release.
Inputs: bot (required), flow (required), case, title, +4 more.
members_listУчастники, роли и приглашенияARead-onlyIdempotent
Кто состоит в деле, с какой ролью и какими итоговыми правами; какие роли заведены в деле и какие ссылки-приглашения действуют. Разделы, на которые не хватает прав, помечаются как недоступные. Ссылки приглашений видны только с правом member.invite.
Inputs: case, with_permissions.
members_removeИсключить участникаADestructive
Убирает человека из дела. Он теряет доступ ко всем ботам, сценариям и переписке дела. Владельца исключить нельзя.
Inputs: member (required), case.
members_saveДобавить участника или изменить его праваA
Без параметра member добавляет в дело уже зарегистрированного человека по почте. С параметром member меняет его роль и точечные права поверх роли. Если человек ещё не зарегистрирован, создайте ссылку-приглашение через invites_create.
Inputs: case, note, role, email, +3 more.
notifications_filtersВиды уведомлений и отборCRead-onlyIdempotent
Каталог видов, дел, уровней, числа записей и срок хранения.
Inputs: no named parameters.
notifications_listЛента уведомленийBRead-onlyIdempotent
Личные уведомления всех дел с отбором и страницами. Чтение ленты не отмечает записи прочитанными.
Inputs: case, kind, level, limit, +2 more.
notifications_readОтметить уведомления прочитаннымиC
Укажите ids или all=true. Параметр case ограничивает массовое прочтение одним делом.
Inputs: all, ids, case.
notifications_settingsНастройки уведомленийCRead-onlyIdempotent
Полный каталог видов и текущие флаги доставки.
Inputs: no named parameters.
notifications_settings_saveНастроить уведомленияA
Меняет флаги указанных видов; остальные настройки сохраняются. replace=true заменяет всю карту и сбрасывает пропущенные виды к серверным значениям.
Inputs: kinds (required), replace.
notifications_summaryНепрочитанные уведомленияBRead-onlyIdempotent
Точный общий счётчик личной ленты.
Inputs: no named parameters.
operbots_catalogСправочники панелиARead-onlyIdempotent
Что можно использовать при сборке: платформы с их пределами, виды узлов сценария с полным составом их настроек, разделы маркета, виды ИИ-сервисов с нужными ключами и каталог прав. Готовые сценарии ищите в маркете: market_list и market_install. Смотрите node_kinds перед тем, как собирать или править сценарий: config каждого узла описан именно там — и передавайте platform: сами узлы у платформ одни и те же, а варианты в их настройках разные (у MAX нет разметки MarkdownV2 и голосового среди вложений).
Inputs: what (required), case, kind, scope, +1 more.
operbots_loginПодключиться к панелиA
Проверяет доступ или подключается по токену из локального token_file. Токен выпускается в самой панели: аккаунт → Интеграции → «Выпустить токен», и показывается там один раз. Человек вводит его через CLI login или локальный файл; формы MCP не запрашивают секреты. Вызывайте, когда другие инструменты сообщают, что доступ не настроен или токен больше не действует.
Inputs: url, token_file, switch_account.
operbots_logoutЗабыть доступ на этой машинеADestructive
Стирает сохранённый токен с этой машины. Сам токен при этом продолжает действовать — чтобы он перестал работать везде, отзовите его в панели: аккаунт → Интеграции.
Inputs: no named parameters.
replies_deleteУдалить заготовку ответаADestructive
Убирает заготовку из списка. Отправленные по ней сообщения остаются в переписке — исчезает только сама заготовка.
Inputs: reply (required), case.
replies_listЗаготовки ответовARead-onlyIdempotent
Заготовленные ответы оператора: приветствие, реквизиты, «уточню и вернусь». Порядок — по частоте вставки, нужное каждый день сверху. Отправить заготовку в разговор: dialogs_reply reply=«название».
Inputs: case.
replies_saveСохранить заготовку ответаA
Без параметра reply заводит новую заготовку, с ним — правит существующую. Название нужно, чтобы заготовку было чем позвать; без него панель обойдётся, но в списке она станет безымянной.
Inputs: case, text, reply, title, +1 more.
requests_cancelОтменить заявкуADestructive
Отменяет заявку и пропускает её незавершённые задачи. Нужны revision и явная причина.
Inputs: reason (required), revision (required), request_id (required), case.
requests_commentДобавить комментарий к заявкеB
Добавляет текст в историю заявки. Комментарий не требует revision.
Inputs: text (required), request_id (required), case.
requests_deleteУдалить заявкуADestructive
Удаляет заявку вместе с историей. Нужны текущая revision и точное название для подтверждения.
Inputs: revision (required), request_id (required), confirm_name (required), case.
requests_getОткрыть заявкуARead-onlyIdempotent
Заявка целиком, включая поля, маршрут, задачи, события и текущую revision.
Inputs: request_id (required), case.
requests_listЗаявки делаBRead-onlyIdempotent
Заявки с полным маршрутом, задачами, событиями и revision для последующей правки. Связи с диалогами и контрагентами панель показывает только при наличии соответствующих прав.
Inputs: case, mine, search, status, +3 more.
requests_saveСоздать или изменить заявкуA
Без request_id создаёт заявку. Для правки обязательна revision из прочитанной карточки; передавайте только изменяемые поля. data дополняет прежние значения. assignee_id=null и due_at=null снимают назначение и срок. Тип и исходные связи задаются только при создании.
Inputs: case, data, title, due_at, +8 more.
requests_task_completeВыполнить задачу заявкиA
Завершает задачу по её UUID; outcome выбирают из outcomes карточки, data содержит значения полей. Обязательна revision заявки. Автоматические задачи вручную завершать нельзя.
Inputs: task_id (required), revision (required), request_id (required), case, +2 more.
requests_tasks_listМои задачи по заявкамARead-onlyIdempotent
Готовые к выполнению задачи активных заявок, назначенные вам. Для выполнения прочитайте requests_get и передайте актуальную revision.
Inputs: case.
requests_types_deleteУдалить тип заявокADestructive
Удаляет тип по UUID, version и дословному названию. Снимки уже созданных заявок сохраняются.
Inputs: type_id (required), version (required), confirm_name (required), case.
requests_types_listТипы заявокCRead-onlyIdempotent
Типы заявок с полями, маршрутами и version для правки или удаления.
Inputs: case.
requests_types_saveСоздать или изменить тип заявокA
Сохраняет полное определение типа: name, description, fields и workflow. При изменении обязательна version из requests_types_list; пропущенные description и fields станут пустыми. Проверки маршрута и прав на участников выполняет панель.
Inputs: name (required), workflow (required), case, fields, +3 more.
requests_workflowИзменить маршрут заявкиA
Заменяет workflow заявки целиком с проверкой переданной revision. Нужны права request.manage.
Inputs: revision (required), workflow (required), request_id (required), case.
roles_deleteУдалить рольADestructive
Удаляет роль дела. Готовые роли удалить нельзя, и роль с участниками — тоже: сначала переведите людей на другую роль.
Inputs: role (required), case.
roles_saveСоздать или изменить рольA
Заводит в деле свою роль с нужным набором прав или меняет существующую. Готовые роли (владелец, администратор, конструктор, оператор, наблюдатель) правке не поддаются — укажите copy_of, чтобы сделать копию пресета и настроить её.
Inputs: case, name, role, slug, +5 more.
sessions_listУстройства с входом в панельARead-onlyIdempotent
Браузеры и другие устройства, где выполнен вход в панель под этой учётной записью. Токены доступа сюда не попадают — их видно в панели, в разделе «Интеграции».
Inputs: no named parameters.
sessions_revokeЗавершить вход на устройствеADestructive
Завершает сессию по идентификатору из sessions_list — устройство выкинет из панели. На токены доступа не влияет.
Inputs: all, session_id.
tasks_cancelОтменить отложенное действиеBDestructive
Снимает запланированное действие: бот не отправит то, что собирался.
Inputs: task_id (required), case.
tasks_listОтложенные действияARead-onlyIdempotent
Что запланировано в деле: «написать через три дня», «напомнить, если не ответил». Показывает и выполненные, и отменённые: выполненные задачи не удаляются, а порядок — по сроку с самых ранних, так что без status ответ занимает давняя история. Что ещё предстоит, спрашивайте с status=pending: отбор делает панель. Больше 300 записей за раз панель не отдаёт, и общего их числа не сообщает.
Inputs: case, limit, status.
users_searchНайти человека для приглашенияARead-onlyIdempotent
Поиск пользователей по имени или почте. Сервер скрывает чужие полные адреса и номера платформ.
Inputs: query (required).
whoamiКто я в панелиARead-onlyIdempotent
С какой учётной записью работает сервер, к какой панели подключён и какие дела доступны с перечнем прав в каждом. Полезно вызвать первым: дальше можно обращаться к делам по названию.
Inputs: no named parameters.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 143 tools
Nearly every tool is namespaced by domain (bots_, flows_, dialogs_, broadcasts_, knowledge_, requests_, counterparties_, extensions_, market_, etc.) and descriptions actively draw boundaries, e.g. bots_journal vs audit_list and dialogs_history vs dialogs_export. Some residual overlap remains since several *_save tools upsert (create+update) and there are clusters of similar read tools (bots_webhook_info/check/rotate, notifications_*), but an agent can reliably pick the right tool.
Names follow a predictable snake_case resource_action pattern (bots_list, flows_get, dialogs_reply, market_install) with sub-resources consistently grouped (bots_commands_apply, requests_types_save). A few outliers break the pattern (whoami, operbots_catalog, operbots_login/logout), but they are the exception and remain readable.
At 143 tools this is far beyond the practical scope of a single MCP server; even though the underlying panel domain is genuinely broad (bots, flows, dialogs, broadcasts, knowledge, AI, tickets, counterparties, extensions, market, audit), the count will strain context and tool selection, and several domains would be better split or trimmed.
The surface covers full lifecycles across every apparent sub-domain: CRUD for cases, bots, flows (with versions/import/export), dialogs, broadcasts, knowledge bases, AI providers, requests/tickets and their types, counterparties, extensions, plus members, roles, invites, sessions, account, audit, notifications and a market. Few obvious gaps remain, and edge operations like reindex, retry, reconcile and reset_stage are included.
Maintenance
Related MCP Connectors
Official MCP server for Agentwork — delegate tasks to AI agents with human-in-the-loop
MCP server for AI dialogue using various LLM models via AceDataCloud
MCP server for Gainium — manage trading bots, deals, and balances via AI assistants
MCP server for OpenAI API (chat completions, image generation, embeddings) via AceDataCloud
Related MCP Servers
- AlicenseAqualityDmaintenanceThis MCP server enables AI assistants to interact with a BT Panel server through natural language, allowing users to query logs, manage websites, and monitor system status without manual panel login.931 npm12MIT
- FlicenseAqualityDmaintenanceAn MCP server for interacting with Telegram bots and channels using the Telegraf library. It allows AI agents to send messages, manage channels, forward content, and intelligently respond to Telegram conversations.552 npm8-
- AlicenseNot gradedqualityAmaintenanceMCP server with persistent memory, voice understanding, multi-thread orchestration, and remote control via Telegram for AI assistants.2,299 npm5MIT
- FlicenseBqualityDmaintenanceA specialized MCP server that allows AI coding assistants to send direct messages via your personal Telegram account.1-