🤖A2A (Agent-to-Agent)

Подключение внешних AI-агентов к платформе через протокол A2A

Платформа поддерживает протокол A2A (Agent-to-Agent) на основе JSON-RPC 2.0. Внешние агенты могут отправлять задачи, получать результаты в реальном времени и взаимодействовать со специализированными агентами системы.

Архитектура

Все запросы обрабатывает Orchestrator — главный агент, который анализирует задачу и делегирует её специализированному агенту:

АгентСпециализация
OrchestratorАнализ задачи, маршрутизация, валидация результата
FinanceСчета, платежи, расходы, возвраты, финансовые отчёты
SupportДиагностика системы, конфигурация, задачи и проекты
CustomerКонтакты, звонки, SMS, email, история коммуникаций

Каждый агент имеет доступ к реальным данным платформы через MCP-инструменты.

Аутентификация

Все запросы требуют API-токен в заголовке Authorization. Токен можно создать в Settings → Connected Apps → API Tokens.

Authorization: Bearer sk_ws_<wsid>_<token>

Быстрый старт

1. Получение Agent Card

curl https://c10r.io/.well-known/agent.json

Возвращает описание агента, поддерживаемые capabilities и навыки.

2. Отправка задачи

curl -X POST https://c10r.io/api/ws/pasv/a2a \
  -H "Authorization: Bearer sk_ws_pasv_..." \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": "1",
    "method": "message/send",
    "params": {
      "message": {
        "role": "user",
        "parts": [
          {
            "kind": "text",
            "text": "Сформируй income statement за 2025 год"
          }
        ]
      }
    }
  }'

Ответ:

{
  "jsonrpc": "2.0",
  "id": "1",
  "result": {
    "id": "task-uuid",
    "status": "working",
    "messages": [...]
  }
}

3. Получение результата

curl -X POST https://c10r.io/api/ws/pasv/a2a \
  -H "Authorization: Bearer sk_ws_pasv_..." \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": "2",
    "method": "tasks/get",
    "params": {
      "id": "task-uuid"
    }
  }'

Ответ при завершении:

{
  "jsonrpc": "2.0",
  "id": "2",
  "result": {
    "id": "task-uuid",
    "status": "completed",
    "messages": [
      { "role": "user", "parts": [{ "kind": "text", "text": "..." }] },
      { "role": "agent", "parts": [{ "kind": "text", "text": "## Income Statement..." }] }
    ],
    "agentsUsed": ["orchestrator", "finance"]
  }
}

Методы

message/send

Отправляет задачу агенту. Выполнение происходит асинхронно — метод возвращает задачу в статусе working. Результат получается через tasks/get.

message/stream

Отправляет задачу агенту с real-time стримингом через SSE. Ответ — text/event-stream с событиями:

СобытиеОписание
statusСтатус агента: анализ, делегирование, валидация
chunkФрагмент текстового ответа
tool_callВызов инструмента (имя, аргументы)
tool_resultРезультат выполнения инструмента
doneФинальный результат с полным ответом
errorОшибка выполнения

Пример:

curl -N -X POST https://c10r.io/api/ws/pasv/a2a \
  -H "Authorization: Bearer sk_ws_pasv_..." \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": "1",
    "method": "message/stream",
    "params": {
      "message": {
        "role": "user",
        "parts": [{ "kind": "text", "text": "Покажи все неоплаченные счета" }]
      }
    }
  }'

tasks/get

Получение статуса и результата задачи по ID.

Статусы задачи:

СтатусОписание
submittedЗадача принята
workingАгент работает
completedРезультат готов
failedОшибка выполнения

Подключение через Claude Code

Платформа также доступна как MCP-сервер. Claude Code может использовать инструмент ask_agent для взаимодействия с агентами напрямую через существующее MCP-подключение.

Конфигурация MCP в .mcp.json:

{
  "mcpServers": {
    "kompot": {
      "type": "http",
      "url": "https://c10r.io/api/ws/pasv/mcp/stream",
      "headers": {
        "Authorization": "Bearer sk_ws_pasv_..."
      }
    }
  }
}

Примеры задач

ЗадачаАгент
Сформировать income statement за кварталFinance
Найти все просроченные счетаFinance
Проверить конфигурацию воронки продажSupport
Показать все открытые задачи по проектуSupport
Найти контакты, с которыми общались на этой неделеCustomer
Посмотреть историю звонков клиентаCustomer