MCP-сервер
Подключите AI-агента к своей рабочей области AISAR по Model Context Protocol.
AISAR предоставляет сервер Model Context Protocol — это позволяет любому MCP-совместимому AI-клиенту (Claude Code, claude.ai, Cursor и другим) работать с вашей рабочей областью через самоописывающиеся инструменты (tools), без написания интеграции под каждый эндпоинт REST API вручную.
Эндпоинт и аутентификация
Сервер работает по протоколу Streamable HTTP:
POST https://mcp.aisar.app/mcp/companyАутентификация — тем же API-токеном компании, который используется для REST API (создаётся в кабинете: Настройки → Системы → API, требует тарифа Business), в заголовке Authorization:
Authorization: Bearer 123|xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxТранспорт — только Bearer, без cookie-сессий и без OAuth-флоу. Запрос без валидного токена получает 401; токен не того класса — 401/403.
Подключение клиента
Claude Code
claude mcp add --transport http aisar https://mcp.aisar.app/mcp/company \
--header "Authorization: Bearer YOUR_API_TOKEN"claude.ai
Settings → Connectors → Add custom connector, URL https://mcp.aisar.app/mcp/company, заголовок Authorization: Bearer YOUR_API_TOKEN.
Обобщённый MCP-клиент (например Cursor)
{
"mcpServers": {
"aisar": {
"url": "https://mcp.aisar.app/mcp/company",
"headers": {
"Authorization": "Bearer YOUR_API_TOKEN"
}
}
}
}После подключения вызовите инструмент whoami первым запросом — он подтвердит, к какой компании привязан токен.
Инструменты сервера
Документация
Читают актуальную документацию платформы прямо с сервера — ответы всегда синхронизированы с последним деплоем.
| Инструмент | Назначение |
|---|---|
list_docs | Список доступных документов |
list_doc_sections | Заголовки разделов документа |
get_doc | Документ целиком или один раздел |
search_docs | Полнотекстовый поиск по документации |
list_webhook_events | Каталог событий вебхуков платформы |
get_webhook_payload_spec | Точная схема payload одного события |
lookup_error_code | Расшифровка кода ошибки WhatsApp Cloud (Meta), например 131047 |
Чтение
| Инструмент | Аргументы |
|---|---|
whoami | — |
list_channels | status?, type?, page, per_page |
list_funnels | — |
list_deals | funnel_id?, stage_id?, status?, search?, page |
get_deal | deal_id |
search_contacts | query, page |
get_contact | contact_id |
list_conversations | status?, channel_id?, assigned_to_me?, search?, page |
get_conversation | conversation_id |
search_messages | query (ограничено по частоте) |
list_templates | channel_id?, language?, sendable_only? |
list_broadcasts / get_broadcast | —, broadcast_id |
get_dashboard_summary | period? (today/7d/30d) |
Каждый ответ содержит явный allow-list полей — учётные данные каналов, provider-ключи, секреты интеграций, токены и пароли никогда не возвращаются.
Запись
Каждый инструмент записи проверяет соответствующее разрешение, работает в рамках компании токена и логируется в аудит.
| Инструмент | Аргументы |
|---|---|
send_message | conversation_id, text |
send_template_message | channel_id, contact_id\|conversation_id, template_id, variables? |
create_contact / update_contact | поля контакта |
add_internal_note | conversation_id, text |
assign_conversation | conversation_id, user_id\|team_id |
close_conversation | conversation_id |
create_deal / update_deal | поля сделки (stage_id должен принадлежать воронке) |
move_deal_stage | deal_id, stage_id |
create_deal_note | deal_id, text |
Вебхуки — самообслуживание
| Инструмент | Аргументы |
|---|---|
list_integrations | — |
create_webhook_integration | url, events[], signing_secret? |
test_webhook | integration_id\|url |
get_webhook_deliveries | integration_id |
URL вебхука проходит тот же SSRF-гард, что и REST-эндпоинт создания интеграций (приватные/loopback/link-local/метаданные-адреса отклоняются, включая DNS-rebinding и закодированные формы IP); на компанию есть лимит числа интеграций; имена событий валидируются по каталогу платформы.
Лимиты и поведение
- Лимиты частоты (на токен, на компанию):
search_messages— 30/мин,send_messageиsend_template_message— 60/мин,create_webhook_integration— 10/мин, инструменты документации — 120/мин. - Пагинация:
per_pageограничен максимумом 50. - Без массовой рассылки: инструменты отправки работают только с существующим диалогом или одним контактом — массовой отправки здесь нет (для рассылок используйте функцию «Рассылки» в кабинете).
- Недоверенный контент: тексты сообщений, имена контактов и заметки, которые возвращают инструменты, — это данные третьих лиц, а не инструкции для модели.
Диагностика
| Симптом | Причина / решение |
|---|---|
401 Unauthorized | Токен отсутствует или невалиден. |
403 Forbidden | Токен не является токеном сервисного аккаунта (например, мобильный/embed-токен), либо подписка неактивна / фича api выключена. |
| Инструмент возвращает «не найдено» по существующему ID | ID принадлежит другой компании — принадлежность к компании токена проверяется на каждом аргументе. |
| «Rate limit exceeded» | Превышен лимит конкретного инструмента (см. «Лимиты и поведение») — повторите чуть позже. |