Документация › Для разработчиков › Подключить ИИ-агента
Подключить ИИ-агента (MCP)
Обновлено 4 октября 2026 г.
[для разработчиков]Подключите Claude Code, Codex или Cursor к DOS AI одной командой и управляйте проектами прямо из своего ИИ-инструмента: «покажи вчерашних лидов», «поправь промпт», «сколько потратили за неделю».
⏱ 7 мин · 👤 для разработчика и интегратора · 🟢 live
За 30 секунд:
- Адрес сервера:
https://dosai.pro/api/mcp, авторизация тем же ключомdos_sk_live_…, что и у API, либо кнопкой «Разрешить» (ChatGPT, claude.ai, Claude Code) без ключа.- В Claude Code подключается одной командой, в Codex и Cursor через конфиг.
- Агент получает 79 инструментов: создание проекта и сборка бота с нуля, подключение Telegram, чек-лист готовности, здоровье проекта, настройки бота, рабочие часы и тест-чат, база знаний, функции и уведомления о заявках, диалоги и заметки, лиды, статусы и напоминания, дожимы и правила, записи, рассылки (просмотр), аналитика, отчёты, деньги по дням и расход на рекламу, руководство.
- Удалять проекты и проводить платежи агент не может: этого нет в наборе инструментов намеренно.
- Готовые команды с подставленным ключом лежат в кабинете: раздел для разработчиков.
Что это даёт
Обычный API нужно программировать. MCP (Model Context Protocol) это стандартный «разъём», через который ИИ-инструмент видит платформу как набор понятных действий и вызывает их сам, по просьбе на человеческом языке.
Практический смысл для интегратора, который ведёт несколько клиентов:
- «Покажи все проекты, где вчера не было ни одного лида», вместо обхода кабинетов руками.
- «Прочитай промпт барбершопа, добавь правило про запись на выходные, сохрани»: правка без переключения окон.
- «Сколько диалогов и лидов у стоматологии за июль, какая конверсия»: сводка в одном ответе.
- «Открой последний диалог и ответь клиенту, что мастер перезвонит в 10:00»: ответ оператором из терминала.
Шаг 1. Выпустить ключ
Ключ выпускается в кабинете, раздел для разработчиков (/developers). Подробно про права и область действия написано в статье Публичный API.
Что важно выбрать правильно:
| Выбор | Когда | Что сможет агент |
|---|---|---|
| Только чтение | Аналитика, отчёты, разбор диалогов | Смотреть, но ничего не менять |
| Чтение и запись | Правка промпта, ответы клиентам | Ещё и менять промпт, статусы лидов, отправлять сообщения |
| Один проект | Работа по одному клиенту | Только этот проект. dosai_list_projects вернёт ровно его, остальные недоступны |
| Весь аккаунт | Ведёте несколько проектов | Все проекты аккаунта |
🔑 Ключ показывается один раз. Скопируйте сразу; потеряли, отзовите и выпустите новый.
Шаг 2. Подключить свой инструмент
Готовые команды с уже подставленным ключом появляются в кабинете сразу после создания ключа, проще скопировать оттуда. Ниже те же команды, если подключаете позже.
Claude Code
claude mcp add --transport http dosai https://dosai.pro/api/mcp \
--header "Authorization: Bearer dos_sk_live_ВАШ_КЛЮЧ"Проверка: claude mcp list, сервер dosai должен быть в списке. Дальше просто просите словами: «покажи мои проекты в DOS AI».
Codex
В ~/.codex/config.toml:
[mcp_servers.dosai]
url = "https://dosai.pro/api/mcp"
bearer_token_env_var = "DOSAI_KEY"И ключ в профиль оболочки (~/.zshrc или ~/.bashrc):
export DOSAI_KEY="dos_sk_live_ВАШ_КЛЮЧ"Так ключ не лежит в конфиге, который легко утащить в репозиторий или синхронизировать между машинами. Если ваш Codex ругается на поле url, он старый: обновите его, поддержка удалённых серверов там встроенная.
Cursor
В ~/.cursor/mcp.json:
{
"mcpServers": {
"dosai": {
"url": "https://dosai.pro/api/mcp",
"headers": { "Authorization": "Bearer dos_sk_live_ВАШ_КЛЮЧ" }
}
}
}Cursor умеет подставлять переменные окружения, так что ключ тоже можно не держать в файле: "Authorization": "Bearer ${env:DOSAI_KEY}".
Любой другой инструмент
MCP это открытый стандарт, а не список из трёх программ. Клиенты, которые умеют искать серверы сами, найдут нас в официальном реестре MCP под именем pro.dosai/dos-ai (домен подтверждён, запись активна). Проверить можно так:
curl "https://registry.modelcontextprotocol.io/v0/servers?search=dosai"Всем остальным нужны всего две вещи:
| Что | Значение |
|---|---|
| Адрес сервера | https://dosai.pro/api/mcp (транспорт streamable HTTP) |
| Заголовок | Authorization: Bearer dos_sk_live_ВАШ_КЛЮЧ |
Большинство инструментов настраиваются файлом такого вида:
{
"mcpServers": {
"dosai": {
"url": "https://dosai.pro/api/mcp",
"headers": { "Authorization": "Bearer dos_sk_live_ВАШ_КЛЮЧ" }
}
}
}Проверить связь до настройки инструмента можно одной командой: в ответ придёт список инструментов.
curl -s https://dosai.pro/api/mcp \
-H "Authorization: Bearer dos_sk_live_ВАШ_КЛЮЧ" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'Если инструмент вообще не умеет MCP, остаётся обычный путь: публичный REST API с тем же ключом.
ChatGPT и Claude на сайте: без ключа
Веб-версии ChatGPT и claude.ai ключ не принимают, они входят по кнопке «Разрешить» (OAuth 2.1). С 27.09.2026 это работает: в коннекторе указывается только адрес https://dosai.pro/api/mcp, дальше открывается страница DOS AI, человек входит, отмечает права и жмёт «Разрешить». Пошагово для владельца: DOS AI в ChatGPT и Claude.
Как устроено для интегратора:
- Без входа сервер отвечает
401с заголовкомWWW-Authenticate: Bearer resource_metadata="https://dosai.pro/.well-known/oauth-protected-resource/api/mcp". По этим метаданным клиент находит сервер входа (Supabase Auth, OAuth 2.1 с динамической регистрацией клиентов) и сам регистрируется. - Права решает страница согласия, а не пропуск: смотреть всегда, менять настройки и писать клиентам отдельными галочками, плюс все проекты или один свой. Ассистент без права записи не видит инструментов записи в
tools/list; без права «писать клиентам»dosai_send_operator_messageотвечает понятным отказом. - Отключение на странице «ИИ-ассистенты» снимает доступ сразу; следующий вызов получит
401сerror="invalid_token", и клиент предложит войти заново. - Claude Code тоже умеет этот вход:
claude mcp add --transport http dosai https://dosai.pro/api/mcpбез заголовка откроет браузер со страницей «Разрешить». Ключ по-прежнему работает, если он вам удобнее.
Что умеет агент
| Инструмент | Что делает | Права ключа |
|---|---|---|
dosai_list_projects | Список проектов, у каждого видно, работает ли WhatsApp-канал | чтение |
dosai_get_project | Настройки проекта: статус, канал и работает ли он сейчас (whatsapp_channel: online, offline, banned когда WhatsApp ограничил номер, not_connected, unknown), модель, баланс | чтение |
dosai_get_prompt | Прочитать системный промпт | чтение (роль админа или владельца) |
dosai_update_prompt | Заменить системный промпт | запись (роль админа или владельца) |
dosai_list_functions | Список функций ассистента | чтение |
dosai_list_leads | Лиды постранично, с фильтром по статусу (none, potential, qualified, hot, converted, reserve, lost) | чтение |
dosai_get_lead | Полная карточка лида с ответами анкеты | чтение |
dosai_update_lead | Статус лида, имя, телефон, почта | запись |
dosai_list_bookings | Записи клиентов (бот, функции, ваша система) и что платформа им отправит: подтверждение, напоминания, и почему что-то не уйдёт | чтение |
dosai_upsert_booking | Сообщить о записи из вашей CRM: платформа подтвердит её клиенту и напомнит перед визитом. Тот же external_id обновляет, status: "cancelled" отменяет | запись |
dosai_list_conversations | Диалоги, с фильтром по статусу (open, resolved, closed) и включением архивных | чтение |
dosai_get_messages | Переписка одного диалога | чтение |
dosai_send_operator_message | Написать клиенту от лица оператора | запись |
dosai_get_analytics | Диалоги, лиды, конверсия, время ответа, воронка, источники и расход за период (без указания дат: последние 7 дней) | чтение |
dosai_get_balance | Остаток и расход | чтение |
dosai_get_overview | Неделя против прошлой: диалоги, лиды, % изменения, лиды по статусам, минуты с последней активности | чтение |
dosai_get_whatsapp_status · dosai_get_telegram_status | Подключён ли канал, последняя ошибка связи (QR привязки не отдаётся никогда) | чтение |
dosai_count_paused_conversations | Сколько диалогов бот сейчас не ведёт | чтение |
dosai_get_bot_settings · dosai_update_bot_settings | Настройки бота: вкл/выкл, кому отвечает, пояс, буфер, пауза оператора, автовозобновление, дожимы, глубина размышления, память. Выдуманное поле возвращается ошибкой, а не молчаливым «сохранено» | чтение · запись (админ) |
dosai_list_prompt_versions | История версий промпта (дата и начало текста) | чтение |
dosai_test_bot | Спросить бота в тест-чате как клиент и получить настоящий ответ; живым клиентам ничего не уходит, с баланса списывается как обычный ответ | запись |
dosai_list_knowledge · dosai_read_knowledge_document | Документы базы знаний и текст документа кусками | чтение |
dosai_add_knowledge_text · dosai_update_knowledge_document | Добавить текстовый документ; включить, выключить, переименовать. Удаления нет: устаревший документ выключается | запись |
dosai_list_media | Медиатека | чтение |
dosai_get_function · dosai_set_function_active | Одна функция (секреты замаскированы); включить или выключить | чтение · запись |
dosai_list_function_runs · dosai_get_functions_health | Последние вызовы функции; успехи и ошибки по всем функциям | чтение |
dosai_get_conversation · dosai_update_conversation | Карточка диалога; статус, теги, имя, архив, закрепление, отложить | чтение · запись |
dosai_toggle_bot_in_conversation | Переключить бота в одном диалоге (сначала прочитать ai_on) | запись |
dosai_list_conversation_notes · dosai_add_conversation_note | Внутренние заметки к диалогу | чтение · запись |
dosai_list_scheduled_messages · dosai_schedule_message | Отложенные сообщения клиенту; запланировать (уходит живому клиенту) | чтение · запись |
dosai_search_conversation | Поиск по словам в одном диалоге | чтение |
dosai_get_lead_statuses · dosai_get_lead_history · dosai_list_tags | Статусы воронки, история лида, теги | чтение |
dosai_list_lead_reminders · dosai_add_lead_reminder | Напоминания по лиду | чтение · запись |
dosai_list_followups · dosai_get_followup_stats | Клиенты в дожимах и результаты дожимов | чтение |
dosai_list_rules · dosai_set_rule_active · dosai_list_rule_runs | Правила «когда, если, то», включить или выключить, лента срабатываний | чтение · запись |
dosai_get_booking_settings | Подтверждение и напоминания о записи | чтение |
dosai_list_broadcasts | Рассылки и их итоги (запуск только в кабинете) | чтение |
dosai_get_funnel · dosai_list_logs · dosai_list_report_settings | Воронка за период, журнал событий, отчёты по расписанию | чтение |
dosai_list_balance_history · dosai_list_invoices | История баланса; счета клиентам бизнеса (только просмотр) | чтение |
dosai_list_help_articles | Оглавление этого руководства: ассистент отвечает на «как сделать» ссылкой на статью | чтение |
dosai_create_project | Создать проект (нового бота). Только при подключении ко всем проектам | запись |
dosai_compose_bot_description | Собрать промпт бота из трёх ответов владельца, как кнопка в кабинете. Платно (30 центов с баланса проекта, только при успехе), заменяет прежний промпт, он остаётся в истории | запись (админ) |
dosai_connect_telegram_bot | Подключить Telegram-бота по ключу от @BotFather | запись (админ) |
dosai_get_setup_checklist | Что ещё не готово: промпт, канал, баланс, проверка, и чем это сделать. Тот же чек-лист, что на обзоре проекта | чтение |
dosai_get_cabinet_link | Ссылка на нужную страницу кабинета для того, что делает только владелец: QR WhatsApp, пополнение, команда, рассылка, удаление | чтение |
dosai_set_model · dosai_set_notify_email | Модель бота; почта владельца для уведомлений и отчётов | запись (админ) |
dosai_update_bot_settings (schedule) | Рабочие часы: все семь дней Пн…Вс, время ЧЧ:ММ, начало равно концу = круглосуточно | запись (админ) |
dosai_edit_knowledge_document · dosai_search_knowledge | Поправить текст документа базы знаний по кускам; что бот найдёт по вопросу (доли цента) | запись |
dosai_list_followup_steps · dosai_add_followup_step · dosai_update_followup_step | Цепочка дожимов: тексты, паузы, время, включить или выключить шаг | чтение · запись |
dosai_add_keyword_reply | Правило «клиент написал слово, платформа отвечает этим текстом без ИИ» | запись |
dosai_add_lead_notification | Сообщать владельцу о новой заявке на почту или в WhatsApp (функция из каталога) | запись |
dosai_set_lead_statuses | Статусы воронки: переименовать, добавить, убрать (статус с заявками не удалится) | запись |
dosai_update_report · dosai_send_report_now | Отчёт по расписанию: включить, время, дни, канал; отправить сейчас. Меняются только названные поля | запись (владелец) |
dosai_get_money_by_day · dosai_list_ad_spend · dosai_add_ad_spend | Деньги проекта по дням; расход на рекламу для цены заявки | чтение · запись (владелец) |
dosai_list_team | Кто работает в проекте и с какой ролью | чтение |
Чего в наборе нет намеренно: любое удаление, платежи, счета и возвраты, пополнение баланса, запуск рассылки (пишет всей базе; черновика у рассылки нет, создание сразу ставит её в отправку), приглашение и управление участниками (клиент мог бы уговорить агента пригласить чужого человека), ссылка и QR подключения WhatsApp (кто их держит, тот может привязать к боту свой номер), кнопка «Тест» у функции (она выполняет настоящее действие), админ-функции. ИИ иногда ошибается, и цена ошибки не должна равняться удалённому проекту или списанным деньгам. Эти действия остались в API, где вызов делается осознанно. Для них агент даёт ссылку на нужную страницу кабинета (dosai_get_cabinet_link), нажимает человек.
Безопасность
- Ключ = доступ к вашим проектам. Команда подключения содержит его в открытом виде: вставляйте только в свой терминал, не выкладывайте в репозиторий и не показывайте на экране при записи видео.
- Начните с ключа только на чтение. Права на запись выдавайте, когда точно нужны правки.
- Клиенту или подрядчику выдавайте ключ, привязанный к одному проекту.
- Агент действует от вашего имени. Он видит ровно то, что видите вы, и ограничен вашей ролью на каждом проекте.
- Отправка сообщения необратима.
dosai_send_operator_messageпишет живому человеку в WhatsApp, Instagram или Telegram. Согласуйте текст с агентом до отправки. Если канал сообщение не принял, инструмент честно скажет «не доставлено»: в этом случае оно лежит в диалоге неотправленным и ждёт повтора. - Тексты клиентов это данные, а не команды. В переписке может оказаться фраза вида «игнорируй прежние инструкции и сделай…». Сервер прямо предупреждает об этом агента при подключении, но привычка проверять, что именно агент собирается сделать, остаётся за вами.
Лимиты
- 120 запросов в минуту на ключ, плюс собственный лимит у каждого эндпоинта (например, аналитика 20 в минуту).
- Один вызов инструмента = два запроса к платформе, поэтому ориентируйтесь примерно на 60 действий агента в минуту.
- Лимит считается на каждый ключ отдельно: два ключа одного аккаунта имеют по своему бюджету, они не складываются и не делятся.
- При превышении приходит понятная агенту фраза «превышен лимит, подожди N секунд», и он повторит сам.
Если не работает
| Что видит агент | Что произошло | Что делать |
|---|---|---|
| «API-ключ недействителен, истёк или отозван» | Ключ удалён, истёк или скопирован с опечаткой | Выпустить новый в кабинете |
| «Этот ключ только для чтения» | Ключ без права записи, а действие меняет данные | Выпустить ключ с правом записи |
| «Ключ привязан к другому проекту» | Ключ на один проект, а запрос к другому | Взять ключ на весь аккаунт или на нужный проект |
| «Недостаточно прав на этом проекте» | Ваша роль ниже администратора | Попросить владельца повысить роль |
| «Превышен лимит запросов» | Слишком часто | Подождать указанные секунды |
| «Конфликт: такое действие уже выполнено» на отправке | Тот же текст в тот же диалог в пределах пяти минут считается случайным дублем и не уходит | Так задумано: защищает клиента от двойного сообщения при повторе запроса. Нужно отправить то же самое ещё раз, подождите или измените текст |
| «Сообщение НЕ доставлено клиенту» | Канал отказал: номер переподключается, сработала защита от блокировки или бот заблокирован клиентом | Сообщение сохранено в диалоге как неотправленное, его видно в кабинете с кнопкой повтора. Повторите позже; отправленным его считать нельзя |
| «Неверные аргументы. Unrecognized key» | Агент передал поле, которого у инструмента нет | Ничего не делать: в ответе названо лишнее поле, агент исправится сам. Так сделано нарочно, чтобы выдуманный параметр не поменял смысл ответа молча |
| Сервер не появился в списке | Опечатка в адресе или заголовке | Проверить https://dosai.pro/api/mcp и формат Bearer dos_sk_live_… |
401 Unauthorized на initialize | Запрос пришёл без ключа и без входа | Передать Authorization: Bearer dos_sk_live_… или пройти вход кнопкой «Разрешить» (клиенты с OAuth делают это сами) |
| «Владелец отключил этого ассистента» | Подключение к ChatGPT или Claude отключено на странице «ИИ-ассистенты» | Подключить заново, откроется страница «Разрешить» |
Под капотом
Сервер работает по streamable HTTP и не хранит сессий: каждый вызов самодостаточен, поэтому переключение серверов между двумя запросами агента ничего не ломает.
Каждый инструмент внутри вызывает тот же публичный REST-эндпоинт, что и обычная интеграция. Это сделано намеренно: права, лимиты, проверки и запись в журнал живут в одном месте, и агент получает ровно те же ответы, что получил бы curl. Отдельной «агентской» логики доступа не существует, поэтому она не может разойтись с основной.
Ответы инструментов подрезаются: списки отдаются постранично, длинный системный промпт не приезжает вместе со списком проектов, аналитика сворачивается до цифр (без превью рекламных креативов и почасовой карты), а слишком большой ответ обрезается с подсказкой сузить запрос. Причина простая: результат вызова попадает в контекст модели, и один неаккуратный запрос иначе вытеснит всё, над чем вы работали. Там, где данные свёрнуты, инструмент прямо перечисляет, что именно осталось за кадром: иначе «этого у меня нет под рукой» легко превращается в «таких данных не существует».
Машиночитаемое описание REST-части лежит на https://dosai.pro/api/openapi.json, краткая памятка для агентов на https://dosai.pro/llms.txt.
Простыми словами
Обычно, чтобы связать программу с платформой, нужен программист: он пишет код, который ходит по адресам и разбирает ответы. MCP убирает этот шаг для ИИ-инструментов. Вы один раз даёте своему ИИ-помощнику адрес и ключ, и дальше говорите обычными словами: «сколько заявок пришло вчера», «поправь промпт у бота стоматологии», «ответь этому клиенту, что перезвоним в десять». Помощник сам понимает, какое действие вызвать.
Ключ это пароль: он даёт помощнику ровно те же возможности, что есть у вас в кабинете, не больше. Если хотите, чтобы помощник только смотрел и ничего не менял, выпустите ключ «только чтение». Если работаете с одним клиентом, выпустите ключ на один проект: до остальных помощник не дотянется.
И главное, что мы решили заранее: помощник не умеет удалять проекты и трогать деньги. Даже если он что-то неправильно поймёт, худшее, что произойдёт, это изменённый текст промпта или одно лишнее сообщение клиенту. Всё это видно и поправимо.
Дальше: → Кастомные вебхуки
Связано: Публичный API · Роли и права
Не получилось? → напиши в саппорт