Для AI-агентов: markdown этой страницы — /docs-content/connectors-mcp.md индекс документации — /llms.txt

Шлюз коннекторов (MCP)

Шлюз позволяет Коворку и связанным приложениям Вайбкод вызывать инструменты сервисов, подключённых к порталу. Работает по протоколу MCP Streamable HTTP без сессий.

Базовый URL: https://vibecode.bitrix24.tech/v1 | Авторизация: ключ устройства Коворка или допущенного приложения

Кто может вызывать

Коворк использует ключи устройства с назначением cowork-desktop. Приложению нужны явно выданный действующий vibe:connectors и действующее приложение с персональным ключом приложения или OAuth-ключом приложения. Владелец и портал должны совпадать с ключом. Пока функция не включена для портала, маршруты отвечают 404 ROUTE_NOT_FOUND. При включённой функции остальные ключи получают 403 CONNECTOR_KEY_NOT_ALLOWED.

Приложение действует от лица владельца ключа, а не зрителя страницы или пользователя из заголовков. Оно видит только общие подключения PORTAL, разрешённые правилом администратора и правами владельца. Скоуп не создаёт подключения и правила. Точный белый список: GET /v1/connectors, POST /v1/connectors/mcp, GET /v1/connectors/write-tickets/{id} и GET /v1/me; остальные ручки и операции хоста, включая заявки и управление подключениями, закрыты.

Допущенное приложение получает data.connectorHost в GET /v1/me: host = VIBE_APP, applicationId, connectionScope = PORTAL, mcpUrl = /v1/connectors/mcp и confirmationMode = web_owner. Отсутствие блока не выдаёт доступ. Допуск и права проверяются заново при каждом запросе.

Пока функция выключена, путь отвечает 404 ROUTE_NOT_FOUND на любой запрос — до проверки ключа, метода и тела. Если функция включена только для части порталов или сотрудников, ключ вне этого круга получает тот же 404 сразу после проверки ключа.

Запрос

POST /v1/connectors/mcp

POST /v1/connectors/mcp принимает одно сообщение JSON-RPC 2.0 до 256 КиБ, пакет сообщений отклоняется. Методы: initialize, notifications/initialized, ping, tools/list, tools/call. Когда функция включена, GET и DELETE Коворка отвечают 405, приложения — 403 CONNECTOR_KEY_NOT_ALLOWED.

Terminal
curl https://vibecode.bitrix24.tech/v1/connectors/mcp \
  -H "Authorization: Bearer YOUR_COWORK_DESKTOP_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

Инструменты, оплата и подтверждение записи

Мета-инструменты: connectors_available, connectors_find_tools и connectors_run_tool; отдельный инструмент имеет имя slug__tool. Недоступный инструмент возвращает UNKNOWN_TOOL. Для результата принятой операции BRIDGE используйте connectors_get_result.

Успешный платный вызов списывает баланс текущего портала; владелец ключа указан в проводке, приложение и ключ — в журнале вызовов. Сохраняется существующий мягкий суточный лимит с границей дня UTC. Бесплатные вызовы и отказы не списывают баланс. ACCOUNT_FROZEN, INSUFFICIENT_BALANCE, DAILY_CAP_REACHED и COMPANY_BUDGET_EXHAUSTED закрывают исполнение до вызова вендора.

Для WRITE нужны правило администратора READ_WRITE, ключ с правом записи и включённая для портала функция записи. Приложению требуется одобрение владельца в веб-кабинете, заголовок версии десктопа не нужен. Минимальная версия десктопа, включая пустую версию, закрывающую запись, действует только для Коворка. Хост читает собственный билет через API хоста, ждёт решения человека и повторяет вызов с теми же аргументами и ключом. Одобрение потребляется один раз. Платный отказ до исполнения не потребляет уже одобренный билет. Чувствительные аргументы и секреты вендора не попадают в карточку подтверждения или журнал администратора.

Коды ошибок

HTTP Код Когда
400 JSON-RPC -32600 в запросе пакет сообщений: шлюз принимает одно сообщение
401 MISSING_API_KEY, INVALID_API_KEY, KEY_INACTIVE, KEY_EXPIRED ключ не передан, неизвестен, отключён или истёк
403 CONNECTOR_KEY_NOT_ALLOWED ключ не от устройства Коворка или допущенного приложения, либо метод приложения вне белого списка
403 OWNER_BLOCKED владелец ключа заблокирован или больше не активен на портале
403 WRITE_BLOCKED_READONLY_KEY ключ в режиме только чтения
404 ROUTE_NOT_FOUND функция не включена для портала или сотрудника
405 METHOD_NOT_ALLOWED метод Коворка не POST
413 PAYLOAD_TOO_LARGE тело запроса больше 256 КиБ
429 RATE_LIMITED превышен платформенный потолок 300 запросов в минуту по одному ключу, у каждого ключа свой счётчик. Действующее для вашего ключа значение — в заголовке x-ratelimit-limit (потолок делится на реплики)
503 CONNECTOR_VAULT_NOT_CONFIGURED коннекторы не настроены на сервере

Ошибки инструментов приходят в ответе tools/call с isError: true и кодом в _meta["vibe/error"].code.

Операции BRIDGE

Каждый запуск BRIDGE, включая вызов через connectors_run_tool, требует UUID в params._meta["vibe/idempotencyKey"]. Это метаданные, а не аргумент инструмента. После таймаута или потери ответа повторяйте то же действие с теми же UUID, аргументами и ключом. Для нового действия создавайте другой UUID. Повтор UUID с другими данными даёт CONNECTOR_OPERATION_CONFLICT; автоматически повторять такой отказ нельзя.

Быстрый READ

Синтетические инструменты bridge_test иллюстрируют контракт. Для своего коннектора используйте имя и схему аргументов из обнаружения. Быстрый READ сразу возвращает итоговый результат инструмента:

JSON
{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"bridge_test__quick_read","arguments":{},"_meta":{"vibe/idempotencyKey":"123e4567-e89b-42d3-a456-426614174000"}}}
JSON
{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{\"ok\":true}"}]}}

Pending и получение результата

Долгий вызов возвращает pending без isError. Это не ошибка вендора и не окончательный успех. Вызывайте connectors_get_result через tools/call на том же POST /v1/connectors/mcp; отдельного V1-адреса для результата нет:

JSON
{"jsonrpc":"2.0","id":2,"result":{"content":[{"type":"text","text":"The operation is in progress. Retrieve its result later by operationId through connectors_get_result."}],"_meta":{"vibe/operation":{"id":"123e4567-e89b-42d3-a456-426614174000","status":"running","retryAfterMs":1000,"expiresAt":"2026-10-12T13:00:00.000Z","resultTool":"connectors_get_result"}}}}
JSON
{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"connectors_get_result","arguments":{"operationId":"123e4567-e89b-42d3-a456-426614174000"}}}

Соблюдайте retryAfterMs и интервал не менее секунды. Опрос снова возвращает pending либо итоговый результат инструмента. Закрытие браузера, разрыв соединения и HTTP-таймаут прекращают ожидание, но не принятую работу. Не запускайте новое действие ради получения прежнего результата.

Платный WRITE

Отправьте WRITE с новым UUID:

JSON
{"jsonrpc":"2.0","id":4,"method":"tools/call","params":{"name":"bridge_test__approved_write","arguments":{},"_meta":{"vibe/idempotencyKey":"123e4567-e89b-42d3-a456-426614174001"}}}

Если требуется подтверждение, читайте билет через GET /v1/connectors/write-tickets/{id}, дождитесь одобрения владельца в веб-кабинете и повторите тот же вызов с теми же UUID и аргументами. Идентификатор JSON-RPC-запроса может измениться; UUID действия должен сохраниться. Возврат существующей операции выполняется до новой проверки оплаты и WRITE-подтверждения. Потребление подтверждения и резервирование операции атомарны: отказ допуска не расходует подтверждение и не запускает работу. Поэтому потерянный ответ запуска можно повторить без дополнительного эффекта и списания.

Владение, сроки и оплата

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

Ограничение Значение
Срок выполнения 1 час
Доступность результата 24 часа после завершения
Запись защиты от повторов 7 дней
Активные операции 20 на ключ; 100 на портал Битрикс24 и коннектор
Опрос результата 60 запросов в минуту на ключ; интервал не менее секунды
Жёсткий размер результата 256 КиБ

Цена фиксируется при резервировании операции. Успешное завершение относится к дню завершения по UTC с мягким суточным лимитом; одновременно принятые работы могут превысить этот лимит. До окончательного расчёта журнал показывает Выполняется без суммы оплаты. Завершение сохраняет исходное время вызова и привязку к хосту/приложению. Истёкший результат нельзя восстановить новым UUID; сохранённая запись защиты запрещает повторное исполнение старой операции.

Ошибки операций

Отказы инструмента приходят внутри HTTP 200 с isError: true и _meta["vibe/error"].code. CONNECTOR_OPERATION_CONFLICT — неповторяемый конфликт (HTTP-представление 409); CONNECTOR_OPERATION_NOT_FOUND — нейтральный неповторяемый отказ (HTTP-представление 404), в том числе для недоступного этому пользователю результата. Отсутствующие или неверные метаданные повтора дают INVALID_ARGUMENTS. Ограничения допуска дают BUSY, транспортный таймаут — VENDOR_UNAVAILABLE; ни один из них не доказывает отмену принятой внешней работы. Не превращайте неопределённость в новый WRITE. Существующие ошибки авторизации, недоступного инструмента и оплаты сохраняют силу.