Skip to main content
Glama

operbots-mcp

npm

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 и кладёт их рядом с токеном: плагин запускает сервер без окружения вовсе, и передать их иначе некуда. Переменные при этом главнее профиля — ими переопределяют в контейнере и на сборке.

Переменная

Что делает

OPERBOTS_URL

Адрес панели. Обычно берётся из сохранённого профиля

OPERBOTS_TOKEN

Токен вместо сохранённого файла: контейнер, сборка

OPERBOTS_CASE

Дело по умолчанию: короткое имя, название или идентификатор

OPERBOTS_READ_ONLY=1

Оставить инструменты чтения — 56 вместо 143; вход и выход остаются

OPERBOTS_CREDENTIALS

Другой путь к файлу доступа

OPERBOTS_TIMEOUT_MS

Сколько ждать ответ панели. По умолчанию 30000

OPERBOTS_INSECURE_TLS=1

Не проверять сертификат — для самоподписанного TLS


Инструменты

143 инструмента. Дела, ботов, сценарии, публикации маркета, материалы, заготовки, рассылки и подключения можно называть по имени — идентификаторы не нужны: flows_publish bot="бот поддержки" flow="Приём заявок".

При одинаковых названиях инструмент просит UUID из списка. Поиск диалога по номеру чата ограничен 1000 записями; поиск по имени отказывает при неполной странице. В делах с более чем 100 рассылками используйте их UUID. Неполная выборка не считается доказательством однозначного совпадения.

Раздел

Инструменты

Аккаунт

operbots_login, operbots_logout, whoami, sessions_list, sessions_revoke, account_update, account_appearance, account_password, account_security, users_search

Дела

cases_list, cases_get, cases_save, cases_delete, cases_leave, audit_list, audit_filters

Люди

members_list, members_save, members_remove, case_transfer, roles_save, roles_delete, invites_create, invites_get, invites_accept, invites_revoke

Боты

bots_list, bots_get, bots_status, bots_webhook_info, bots_journal, bots_save, bots_control, bots_commands_apply, bots_variables_set, bots_reveal_token, bots_webhook_check, bots_webhook_rotate, bots_detach, bots_delete

Сценарии

flows_list, flows_get, flows_save, flows_publish, flows_versions, flows_restore, flows_simulate, flows_export, flows_import, flows_delete

Маркет

market_list, market_get, market_like, market_install, market_publish, market_release, market_update, market_unpublish

Диалоги

dialogs_list, dialogs_get, dialogs_chat_info, dialogs_history, dialogs_mark_read, dialogs_export, dialogs_reply, dialogs_reply_file, dialogs_download_attachment, dialogs_edit_message, dialogs_delete_message, dialogs_update, dialogs_release, dialogs_forget_memory, dialogs_cancel_scheduled, dialogs_reset_stage, dialogs_delete, tasks_list, tasks_cancel

Заявки

requests_list, requests_get, requests_save, requests_delete, requests_types_list, requests_types_save, requests_types_delete, requests_tasks_list, requests_task_complete, requests_comment, requests_workflow, requests_cancel

Контрагенты

counterparties_list, counterparties_get, counterparties_save, counterparties_delete, counterparties_settings, counterparties_settings_save, counterparties_dialogs, counterparties_link, counterparties_unlink, counterparties_reconcile

Заготовки ответов

replies_list, replies_save, replies_delete

Рассылки

broadcasts_list, broadcasts_get, broadcasts_targets, broadcasts_attach, broadcasts_detach, broadcasts_preview, broadcasts_save, broadcasts_duplicate, broadcasts_retry, broadcasts_test, broadcasts_delete, broadcasts_start, broadcasts_cancel

База знаний

knowledge_list, knowledge_save, knowledge_add_document, knowledge_document, knowledge_document_update, knowledge_reindex, knowledge_search, knowledge_delete

ИИ-сервисы

ai_list, ai_save, ai_usage, ai_test, ai_delete

Расширения

extensions_list, extensions_get, extensions_templates, extensions_nodes, extensions_save, extensions_oauth_begin, extensions_delete

Уведомления

notifications_list, notifications_summary, notifications_filters, notifications_read, notifications_settings, notifications_settings_save

Справочники

operbots_catalog — платформы с их пределами, виды узлов с настройками, разделы маркета, виды ИИ-сервисов, права

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 tools
account_appearanceОформление панелиB

Меняет язык, тему, акцент, плотность и анимации панели. Пропущенные настройки сохраняет.

Inputs: mode, accent, locale, motion, +4 more.

account_passwordИзменить парольA
Destructive

Меняет пароль из локального JSON-файла с current_password и new_password, созданного человеком вне MCP. Пароли не запрашиваются через формы MCP, не попадают в аргументы или ответ. Прежние браузерные сессии завершаются.

Inputs: password_file (required).

account_securityБезопасность и токены аккаунтаA
Read-onlyIdempotent

Ссылка на управление вторым фактором, кодами восстановления и интеграционными токенами. Эти операции требуют браузерной сессии: токен интеграции не может выпускать новые токены или менять второй фактор.

Inputs: section.

account_updateИзменить данные аккаунтаA

Меняет ФИО, дату рождения, телефон, часовой пояс и номера в Telegram и MAX учётной записи — по номерам бот шлёт участнику весточки из сценария (узел «Сообщить в чат» с адресатом «участник команды»). Передавайте только те поля, которые нужно изменить: остальные останутся как есть. Этим же инструментом проходят шаг знакомства: пока фамилии, имени и даты рождения нет, API закрыт целиком.

Inputs: phone, max_id, timezone, last_name, +5 more.

ai_deleteУдалить подключение к ИИA
Destructive

Удаляет подключение вместе с сохранёнными ключами. Пока сервис используют боты, панель удалить его не даст: отвяжите его от каждого бота (bots_save ai_provider=null) и от баз знаний (knowledge_save provider=null), а из узлов «Ответ ИИ» уберите provider_id через flows_save.

Inputs: provider (required), case.

ai_listПодключения к ИИ-сервисамA
Read-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Расход ИИB
Read-onlyIdempotent

Полный отчёт расхода с итогами, сравнением, днями и разрезами. provider, bot, kind, model — точные ключи из choices предыдущего ответа, включая удалённые подключения.

Inputs: bot, case, days, kind, +2 more.

audit_filtersОтбор журнала действийB
Read-onlyIdempotent

Доступные виды событий и авторы с числом записей, включая ушедших участников.

Inputs: case.

audit_listЖурнал действийA
Read-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Отключить ботаA
Destructive

Убирает бота из дела вместе с командами и переменными. Диалоги и переписка удаляются. Восстановить нельзя. Чтобы временно выключить, используйте bots_save enabled=false.

Inputs: bot (required), confirm_name (required), case.

bots_detachОтключить бота с выбором сохраняемых данныхA
Destructive

Отключает бота с точным подтверждением названием. По умолчанию сохраняет сценарии, диалоги, рассылки и журнал под архивной записью. Сценарии можно передать другому боту.

Inputs: bot (required), confirm_name (required), case, flows_to, +4 more.

bots_getКарточка ботаA
Read-onlyIdempotent

Бот целиком: настройки, меню команд, переменные контента и список сценариев. Значения переменных, отмеченных как секретные, скрыты.

Inputs: bot (required), case.

bots_journalЖурнал ботаA
Read-onlyIdempotent

Что делал сам бот: запуски и остановки, входящие обновления, ответы модели и сколько она думала, ожидание ответа по сценарию, отложенные действия, ошибки сценария и отказы платформой. Журнал дела (audit_list) пишет действия людей — этот пишет действия бота, и на вопрос «почему бот молчит» отвечает именно он. Записи идут от свежих к старым; сузить можно видом (kind) и уровнем — level=error оставит одни сбои. Какие виды у этого бота вообще встречались и сколько их, перечислено в конце ответа. Журнал — недавняя история, а не архив: старые записи панель убирает сама.

Inputs: bot (required), case, kind, level, +2 more.

bots_listСписок ботовA
Read-onlyIdempotent

Боты дела: состояние, режим работы, число диалогов и непрочитанного.

Inputs: case.

bots_reveal_tokenПоказать токен ботаA
Destructive

Возвращает токен бота в открытом виде. Токен даёт полное управление ботом — запрашивайте его, только если пользователь прямо об этом попросил, и не пересказывайте без надобности.

Inputs: bot (required), case.

bots_saveПодключить или настроить ботаA

Без параметра bot подключает бота по токену или восстанавливает его архивную запись с оставленными сценариями и диалогами. Токен проверяется живым запросом к платформе и хранится зашифрованным. С параметром bot меняет настройки. Смена токена или режима перезапускает работающего бота. Платформу у подключённого бота сменить нельзя: у неё свой вид токена и свои пределы.

Inputs: bot, case, mode, name, +7 more.

bots_statusЖивое состояние ботаB
Read-onlyIdempotent

Состояние живого рантайма: время работы, обновления, ошибки и время проверки.

Inputs: bot (required), case.

bots_variables_setПеременные контента ботаA

Задаёт переменные, которые подставляются в тексты сценария: цены, адреса, ссылки. Существующие ключи обновляются, новые создаются. Отмеченные секретными не показываются обратно. Ключ: латиница, цифры, подчёркивание и точка.

Inputs: bot (required), case, variables, delete_keys.

bots_webhook_checkЧто платформа знает о вебхукеA
Read-onlyIdempotent

Отчёт самой платформы: на какой адрес она шлёт обновления, сколько их ждёт доставки и какой была последняя ошибка доставки. Единственный способ понять, почему бот в режиме вебхука молчит: со стороны панели всё бывает исправно — адрес публичный, запрос доходит, — а платформа не достучалась и знает причину. Ни токен, ни ключ из адреса наружу не отдаются: адрес показан без ключа, а вывод прямо говорит, тот ли это адрес, которого ждёт панель.

Inputs: bot (required), case.

bots_webhook_infoГотовность панели к вебхукамA
Read-onlyIdempotent

Публичный адрес панели и условия для включения режима webhook. Бот не требуется.

Inputs: case.

bots_webhook_rotateСменить адрес вебхукаA
Destructive

Выдаёт боту новый секретный адрес вебхука. Прежний перестаёт работать навсегда — это нужно, если старый адрес утёк. Работающий бот перезапускается.

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Удалить рассылкуA
Destructive

Удаляет рассылку и отчёт. Идущую сначала остановите; отправленное не отзывается.

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Открыть рассылкуC
Read-onlyIdempotent

Текст, кнопки по рядам, вложение, условия отбора и состояние рассылки.

Inputs: broadcast (required), case.

broadcasts_listРассылки делаA
Read-onlyIdempotent

Рассылки дела с условиями отбора, текстом и счётчиками: скольким ушло, скольким не дошло и сколько пропущено — это те, кто закрыл боту рот. Состояния: draft — черновик, его ещё можно править и запускать; scheduled — ждёт своего срока или ближайшего оборота рассыльщика; running — идёт; done — закончена; cancelled — остановлена; failed — не с чего было начать.

Inputs: q, bot, case, limit, +2 more.

broadcasts_previewКому уйдёт рассылкаA
Read-onlyIdempotent

Прикидка до отправки: сколько разговоров подходит под условия, кто именно (первые 50 по свежести), сколько из них закрыли боту рот и что настораживает в самом сообщении — пустой отбор, слишком широкий, неизвестные подстановки. Разосланное не отзывают, поэтому смотреть надо здесь. Ничего не сохраняет: черновик заводит broadcasts_save. Условия — те же, что у списка разговоров; ни одного условия означает всех собеседников бота.

Inputs: bot (required), text (required), case, mode, +10 more.

broadcasts_retryПовторить рассылку недошедшимA
Destructive

Повторно отправляет недошедшие сообщения. Уже получившие не получают второй раз.

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Запустить рассылкуA
Destructive

Ставит черновик в очередь: рассыльщик разошлёт сообщение всем, кто подошёл под условия. Отправленное не отзывается ни у одного получателя, поэтому сначала broadcasts_preview — пустой отбор означает всех собеседников бота. Со сроком (run_at) рассылка дождётся его. То, что ещё не ушло, останавливают через broadcasts_cancel.

Inputs: broadcast (required), confirm_title (required), case.

broadcasts_targetsОтчёт по получателям рассылкиC
Read-onlyIdempotent

Кому дошло, кому нет и почему. Фильтры и страницы обрабатывает панель.

Inputs: broadcast (required), q, case, limit, +2 more.

broadcasts_testОтправить пробу рассылкиA
Destructive

Реально отправляет одно сообщение в выбранный диалог от имени бота рассылки.

Inputs: dialog (required), broadcast (required), confirm_name (required), case.

cases_deleteУдалить делоA
Destructive

Удаляет дело целиком: боты, сценарии, переписка, участники и роли. Восстановить нельзя. Чтобы просто убрать дело из списка, используйте cases_save с archived=true.

Inputs: case (required), confirm_name (required).

cases_getОткрыть делоA
Read-onlyIdempotent

Карточка дела: права текущего пользователя в нём и сводка — боты, диалоги, переписка за выбранный срок, отложенные действия, базы знаний, участники.

Inputs: case, days.

cases_leaveВыйти из делаA
Destructive

Убирает вас из числа участников дела. Владелец выйти не может — сначала нужно передать дело другому участнику (case_transfer).

Inputs: case (required).

cases_listСписок делA
Read-onlyIdempotent

Все дела, к которым есть доступ, с ролью, правами и счётчиками ботов и непрочитанного.

Inputs: include_archived.

cases_saveСоздать или изменить делоA

Без указания дела создаёт новое (вы становитесь владельцем, разворачиваются пять ролей: владелец, администратор, конструктор, оператор, наблюдатель). С указанием — меняет название, описание, знак и оформление или убирает дело в архив.

Inputs: case, name, emoji, accent, +3 more.

case_transferПередать делоA
Destructive

Делает другого участника владельцем дела. Прежний владелец переводится в администраторы и теряет право на повторную передачу — вернуть дело сможет только новый владелец.

Inputs: case (required), member (required), confirm_name (required).

counterparties_deleteУдалить контрагентаA
Destructive

Удаляет карточку и снимает её связи с диалогами. Нужно дословное name для подтверждения.

Inputs: confirm_name (required), counterparty_id (required), case.

counterparties_dialogsДиалоги и их контрагентыA
Read-onlyIdempotent

Без dialog_id показывает доступные диалоги для связывания с карточкой. С dialog_id возвращает связанного контрагента либо сообщает, что связи нет. Нужны права chat.view.

Inputs: case, search, dialog_id.

counterparties_getОткрыть контрагентаA
Read-onlyIdempotent

Карточка контрагента по UUID из counterparties_list. Диалоги видны только с правом chat.view.

Inputs: counterparty_id (required), case.

counterparties_listКонтрагенты делаC
Read-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Настройки сопоставления контрагентовC
Read-onlyIdempotent

Ручной или автоматический режим, критерии и переменные для сопоставления диалогов.

Inputs: case.

counterparties_settings_saveИзменить сопоставление контрагентовA

Меняет только переданные настройки. В automatic нужен хотя бы один критерий; с включённым сопоставлением телефона или почты соответствующая переменная не должна быть пустой. Для обработки имеющихся диалогов вызовите counterparties_reconcile.

Inputs: case, mode, match_email, match_phone, +4 more.

dialogs_cancel_scheduledОтменить продолжение диалогаA
Destructive

Отменяет одно отложенное действие из dialogs_get для указанного диалога.

Inputs: dialog (required), task_id (required), case.

dialogs_chat_infoСверить сведения о сообществеA

Спрашивает платформу о группе или канале: участники, ссылка и положение бота. Панель при этом обновляет название, положение бота и признак блокировки диалога. Для чтения сохранённых данных используйте dialogs_get.

Inputs: dialog (required), case.

dialogs_deleteУдалить диалогA
Destructive

Удаляет диалог вместе со всей перепиской. Восстановить нельзя. Чтобы бот просто перестал отвечать этому человеку, переведите разговор в ручной режим: dialogs_update mode=operator, ai_enabled=false — переписка при этом останется.

Inputs: dialog (required), confirm_contact (required), case.

dialogs_delete_messageУдалить сообщение у собеседникаA
Destructive

Убирает своё сообщение из чата собеседника; в переписке панели запись остаётся зачёркнутой — след того, что и когда убрали. Только свои: сообщения собеседника не удаляются. Вернуть нельзя. Слишком старое сообщение платформа удалить не даст.

Inputs: dialog (required), message (required), case.

dialogs_download_attachmentСкачать вложение сообщенияB
Read-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Выгрузить перепискуA
Read-onlyIdempotent

Переписка одним готовым текстом: шапка с собеседником, ботом и метками, дальше сообщения по порядку — ровно то, что панель отдаёт файлом. Годится приложить к разбору спора или передать тому, у кого доступа к панели нет. Прочитанной переписка от этого не становится, но сама выгрузка отмечается в журнале дела. Разбирать сообщения по одному и уходить вглубь истории удобнее через dialogs_history.

Inputs: dialog (required), case.

dialogs_forget_memoryОчистить память ИИ о диалогеA

Удаляет сводку ИИ. Переписка остаётся; следующая сводка соберётся по ней заново.

Inputs: dialog (required), case.

dialogs_getКарточка диалогаA
Read-onlyIdempotent

Диалог и его положение в сценарии: на каком шаге стоит разговор, какого ответа ждёт, какой путь уже пройден, что запланировано и какие переменные накоплены.

Inputs: dialog (required), case.

dialogs_historyИстория перепискиA
Read-onlyIdempotent

Сообщения диалога от старых к новым. По умолчанию ничего не помечает прочитанным — счётчики в панели остаются как были. За ранними сообщениями передайте before и before_id самого раннего сообщения: время бывает одинаковым у нескольких сообщений. Пометить прочитанным — отдельный write-инструмент dialogs_mark_read.

Inputs: dialog (required), case, limit, before, +2 more.

dialogs_listСписок диалоговA
Read-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Удалить расширениеA
Destructive

Удаляет подключение с подтверждением точного названия. Сервер защищает операции, используемые сценариями.

Inputs: extension (required), confirm_name (required), case.

extensions_getОпределение расширенияC
Read-onlyIdempotent

Настройки, операции и события расширения с идентификаторами. Секреты скрыты.

Inputs: extension (required), case.

extensions_listРасширения делаB
Read-onlyIdempotent

Полные определения внешних подключений. Сохранённые секреты сервер возвращает пустыми.

Inputs: case.

extensions_nodesУзлы расширенийB
Read-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Шаблоны расширенийC
Read-onlyIdempotent

Готовые определения подключений для создания расширения.

Inputs: case.

flows_deleteУдалить сценарийA
Destructive

Удаляет сценарий вместе со всей историей редакций. Восстановить нельзя. Если удалить активный сценарий, другой вместо него автоматически не включится. Его собственная публикация в маркете также удаляется; установленные копии сохраняются.

Inputs: bot (required), flow (required), confirm_name (required), case.

flows_exportВыгрузить сценарийA
Read-onlyIdempotent

Отдаёт сценарий одним объектом формата operbots.flow — тем же, что панель скачивает кнопкой «Скачать». Ответ приходит готовым JSON: его целиком передают в flows_import полем document или сохраняют копию рядом с кодом.

Inputs: bot (required), flow (required), case.

flows_getОткрыть сценарийA
Read-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СценарииA
Read-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История редакцийB
Read-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Посмотреть приглашениеA
Read-onlyIdempotent

Показывает дело, роль и состояние приглашения по токену из ссылки до вступления.

Inputs: token (required).

invites_revokeОтозвать приглашениеB
Destructive

Гасит ссылку-приглашение: перейти по ней больше не получится.

Inputs: invite_id (required), case.

knowledge_add_documentДобавить материалA

Кладёт в базу текст, извлечённый текст файла (source=file) или страницу по ссылке. Разбор идёт в фоне: сразу после добавления материал в состоянии pending, проверьте его позже через knowledge_list. Повторный вызов создаёт дубликат, а не обновляет прежний материал.

Inputs: base (required), url, case, text, +2 more.

knowledge_deleteУдалить базу или материалA
Destructive

С параметром document удаляет один материал, без него — базу знаний целиком вместе со всеми материалами и векторами. Восстановить нельзя.

Inputs: base (required), case, document, confirm_name.

knowledge_documentМатериал целикомA
Read-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Базы знанийA
Read-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.

market_getКарточка публикацииA
Read-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Маркет сценариевA
Read-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Снять публикациюA
Destructive

Убирает публикацию из маркета вместе с историей версий, лайками и счётчиком установок; вернуть их нельзя — повторная публикация начнётся с версии 1. Уже установленные копии у других дел остаются. Сам сценарий в деле не трогается.

Inputs: bot (required), flow (required), case.

market_updateПравить карточку публикацииA

Меняет карточку публикации — название, описание, раздел, подпись делом. Граф не трогает: для него market_release.

Inputs: bot (required), flow (required), case, title, +4 more.

members_listУчастники, роли и приглашенияA
Read-onlyIdempotent

Кто состоит в деле, с какой ролью и какими итоговыми правами; какие роли заведены в деле и какие ссылки-приглашения действуют. Разделы, на которые не хватает прав, помечаются как недоступные. Ссылки приглашений видны только с правом member.invite.

Inputs: case, with_permissions.

members_removeИсключить участникаA
Destructive

Убирает человека из дела. Он теряет доступ ко всем ботам, сценариям и переписке дела. Владельца исключить нельзя.

Inputs: member (required), case.

members_saveДобавить участника или изменить его праваA

Без параметра member добавляет в дело уже зарегистрированного человека по почте. С параметром member меняет его роль и точечные права поверх роли. Если человек ещё не зарегистрирован, создайте ссылку-приглашение через invites_create.

Inputs: case, note, role, email, +3 more.

notifications_filtersВиды уведомлений и отборC
Read-onlyIdempotent

Каталог видов, дел, уровней, числа записей и срок хранения.

Inputs: no named parameters.

notifications_listЛента уведомленийB
Read-onlyIdempotent

Личные уведомления всех дел с отбором и страницами. Чтение ленты не отмечает записи прочитанными.

Inputs: case, kind, level, limit, +2 more.

notifications_readОтметить уведомления прочитаннымиC

Укажите ids или all=true. Параметр case ограничивает массовое прочтение одним делом.

Inputs: all, ids, case.

notifications_settingsНастройки уведомленийC
Read-onlyIdempotent

Полный каталог видов и текущие флаги доставки.

Inputs: no named parameters.

notifications_settings_saveНастроить уведомленияA

Меняет флаги указанных видов; остальные настройки сохраняются. replace=true заменяет всю карту и сбрасывает пропущенные виды к серверным значениям.

Inputs: kinds (required), replace.

notifications_summaryНепрочитанные уведомленияB
Read-onlyIdempotent

Точный общий счётчик личной ленты.

Inputs: no named parameters.

operbots_catalogСправочники панелиA
Read-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Забыть доступ на этой машинеA
Destructive

Стирает сохранённый токен с этой машины. Сам токен при этом продолжает действовать — чтобы он перестал работать везде, отзовите его в панели: аккаунт → Интеграции.

Inputs: no named parameters.

replies_deleteУдалить заготовку ответаA
Destructive

Убирает заготовку из списка. Отправленные по ней сообщения остаются в переписке — исчезает только сама заготовка.

Inputs: reply (required), case.

replies_listЗаготовки ответовA
Read-onlyIdempotent

Заготовленные ответы оператора: приветствие, реквизиты, «уточню и вернусь». Порядок — по частоте вставки, нужное каждый день сверху. Отправить заготовку в разговор: dialogs_reply reply=«название».

Inputs: case.

replies_saveСохранить заготовку ответаA

Без параметра reply заводит новую заготовку, с ним — правит существующую. Название нужно, чтобы заготовку было чем позвать; без него панель обойдётся, но в списке она станет безымянной.

Inputs: case, text, reply, title, +1 more.

requests_cancelОтменить заявкуA
Destructive

Отменяет заявку и пропускает её незавершённые задачи. Нужны revision и явная причина.

Inputs: reason (required), revision (required), request_id (required), case.

requests_commentДобавить комментарий к заявкеB

Добавляет текст в историю заявки. Комментарий не требует revision.

Inputs: text (required), request_id (required), case.

requests_deleteУдалить заявкуA
Destructive

Удаляет заявку вместе с историей. Нужны текущая revision и точное название для подтверждения.

Inputs: revision (required), request_id (required), confirm_name (required), case.

requests_getОткрыть заявкуA
Read-onlyIdempotent

Заявка целиком, включая поля, маршрут, задачи, события и текущую revision.

Inputs: request_id (required), case.

requests_listЗаявки делаB
Read-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Мои задачи по заявкамA
Read-onlyIdempotent

Готовые к выполнению задачи активных заявок, назначенные вам. Для выполнения прочитайте requests_get и передайте актуальную revision.

Inputs: case.

requests_types_deleteУдалить тип заявокA
Destructive

Удаляет тип по UUID, version и дословному названию. Снимки уже созданных заявок сохраняются.

Inputs: type_id (required), version (required), confirm_name (required), case.

requests_types_listТипы заявокC
Read-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Удалить рольA
Destructive

Удаляет роль дела. Готовые роли удалить нельзя, и роль с участниками — тоже: сначала переведите людей на другую роль.

Inputs: role (required), case.

roles_saveСоздать или изменить рольA

Заводит в деле свою роль с нужным набором прав или меняет существующую. Готовые роли (владелец, администратор, конструктор, оператор, наблюдатель) правке не поддаются — укажите copy_of, чтобы сделать копию пресета и настроить её.

Inputs: case, name, role, slug, +5 more.

sessions_listУстройства с входом в панельA
Read-onlyIdempotent

Браузеры и другие устройства, где выполнен вход в панель под этой учётной записью. Токены доступа сюда не попадают — их видно в панели, в разделе «Интеграции».

Inputs: no named parameters.

sessions_revokeЗавершить вход на устройствеA
Destructive

Завершает сессию по идентификатору из sessions_list — устройство выкинет из панели. На токены доступа не влияет.

Inputs: all, session_id.

tasks_cancelОтменить отложенное действиеB
Destructive

Снимает запланированное действие: бот не отправит то, что собирался.

Inputs: task_id (required), case.

tasks_listОтложенные действияA
Read-onlyIdempotent

Что запланировано в деле: «написать через три дня», «напомнить, если не ответил». Показывает и выполненные, и отменённые: выполненные задачи не удаляются, а порядок — по сроку с самых ранних, так что без status ответ занимает давняя история. Что ещё предстоит, спрашивайте с status=pending: отбор делает панель. Больше 300 записей за раз панель не отдаёт, и общего их числа не сообщает.

Inputs: case, limit, status.

whoamiКто я в панелиA
Read-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

    A3.5/5.0

    Scored across 143 tools

    Disambiguation4/5

    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.

    Naming Consistency4/5

    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.

    Tool Count2/5

    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.

    Completeness5/5

    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

    ActivityMaintained
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers