Magisterium AI

Справочник API

Все методы вызываются через POST по адресу https://www.magisterium.com/api/v1/a2a с использованием JSON-RPC 2.0. Каждый запрос должен включать Authorization: Bearer $MAGISTERIUM_TOKEN (пользовательский токен, выданный через OAuth — см. Аутентификацию) и Content-Type: application/json.

Методы

message/send

Отправить сообщение навыку и получить завершённую задачу. Все навыки Magisterium синхронны — ответ содержит терминальное состояние задачи (completed или failed), но никогда промежуточный статус working.

Параметры:

ПолеТипОбязательноеОписание
messageMessageДаСообщение пользователя с частями и необязательными метаданными.
message.rolestringДаДолжно быть "user".
message.messageIdstringДаУникальный ID для этого сообщения.
message.kindstringДаДолжно быть "message".
message.partsPart[]ДаМинимум одна часть (text или data).
message.metadata.skillIdstringНетНавык для вызова. По умолчанию catholic_qa.
message.contextIdstringНетНеобязательный ID контекста для группировки связанных задач. Если опущен, сервер сгенерирует его.
configurationobjectНетЗарезервировано для будущего использования.

Возвращает: Объект Task с kind: "task".

tasks/get

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

Параметры:

ПолеТипОбязательноеОписание
idstringДаID задачи, возвращённый из message/send.

Возвращает: Объект Task, либо ошибку TASK_NOT_FOUND, если задача истекла или отсутствует. Задачи хранятся 24 часа.

tasks/cancel

Отменить задачу, если она находится в отменяемом состоянии. Поскольку все навыки разрешаются синхронно, большинство задач уже находятся в терминальном состоянии (completed / failed) к моменту возврата ответа — попытка отменить терминальную задачу возвращает INVALID_PARAMS с сообщением Invalid state transition.

Параметры:

ПолеТипОбязательноеОписание
idstringДаID задачи для отмены.

Возвращает: Обновлённый объект Task с status.state: "canceled".

Жизненный цикл задачи

Навыки Magisterium выполняются синхронно, поэтому задача сохраняется в хранилище только после завершения навыка — всегда в терминальном состоянии. Состояния submitted и working являются частью более широкой спецификации A2A, но никогда не создаются реализацией Magisterium; вы всегда будете наблюдать только одно из трёх терминальных состояний ниже.

СостояниеЗначение
completedТерминальное — результаты находятся в artifacts. Возвращается message/send, когда навык успешно завершается.
failedТерминальное — status.message содержит причину сбоя. Возвращается message/send, когда навык выбрасывает исключение.
canceledТерминальное — достижимо только при вызове tasks/cancel для нетерминальной задачи. Поскольку к моменту возврата message/send задачи уже находятся в терминальном состоянии, на практике отмена отклоняется с INVALID_PARAMS для любой задачи, к которой у вас есть доступ.

Каждая задача также содержит:

  • contextId — групповой идентификатор, который можно повторно использовать для последующих сообщений, чтобы связывать связанные задачи.
  • history — упорядоченный список сообщений пользователя и агента, которые привели к артефактам задачи.

Коды ошибок

КодИмяОписание
-32700Parse errorНекорректное тело JSON.
-32600Invalid requestОтсутствуют поля jsonrpc, method или id.
-32601Method not foundНеизвестный метод JSON-RPC.
-32602Invalid paramsОтсутствуют или некорректны параметры (также возвращается при недопустимых переходах состояний tasks/cancel).
-32603Internal errorНепредвиденный сбой на стороне сервера.
-32001Task not foundID задачи не существует или истёк.
-32002Skill not foundНеизвестный skillId в метаданных сообщения.
-32003Rate limit exceededСлишком много запросов. Проверьте retryAfter (в секундах) в data ошибки.
-32004UnauthorizedОтсутствует или недействителен Bearer-токен.
-32005Paid plan requiredA2A требует план Pro, Organization или Enterprise.

HTTP-статус отражает класс ошибки: 401 для UNAUTHORIZED, 403 для PLAN_REQUIRED, 429 для RATE_LIMITED и 200 для всех остальных ошибок JSON-RPC (согласно конвенции JSON-RPC возвращать 200 с телом error).

Лимиты запросов

A2A использует тот же пул лимитов запросов, что и MCP — см. Цены MCP для пределов запросов по каждому плану.

Применяются два варианта:

  • Default — применяется к document_search, document_fetch, liturgical_readings и saints_of_the_day.
  • Expensive — применяется только к catholic_qa, так как он запускает LLM-конвейер формирования ответа. Этот вариант использует более строгий, сниженный лимит.

При достижении лимита объект data ошибки содержит retryAfter в секундах. Вызывающие стороны должны выдержать этот интервал перед повторной попыткой.

CORS

Эндпоинт отвечает на предварительные запросы OPTIONS и возвращает разрешительные заголовки CORS (Access-Control-Allow-Origin: *, Allow-Methods: POST, OPTIONS, Allow-Headers: Content-Type, Authorization), поэтому A2A может вызываться из браузерных оркестраторов без прокси.