Magisterium AI

Referência da API

Todos os métodos são chamados via POST para https://www.magisterium.com/api/v1/a2a utilizando JSON-RPC 2.0. Cada requisição deve incluir Authorization: Bearer $MAGISTERIUM_TOKEN (um token de utilizador emitido via OAuth — consulte Autenticação) e Content-Type: application/json.

Métodos

message/send

Envie uma mensagem a uma habilidade e receba uma tarefa concluída. Todas as habilidades do Magisterium são síncronas — a resposta contém o estado terminal da tarefa (completed ou failed), nunca um estado intermédio working.

Parâmetros:

CampoTipoObrigatórioDescrição
messageMessageSimA mensagem do utilizador com partes e metadados opcionais.
message.rolestringSimDeve ser "user".
message.messageIdstringSimID único para esta mensagem.
message.kindstringSimDeve ser "message".
message.partsPart[]SimPelo menos uma parte (text ou data).
message.metadata.skillIdstringNãoHabilidade a invocar. Predefinição: catholic_qa.
message.contextIdstringNãoID de contexto opcional para agrupar tarefas relacionadas. Se for omitido, o servidor gera um.
configurationobjectNãoReservado para uso futuro.

Devolve: um objeto Task com kind: "task".

tasks/get

Obtenha uma tarefa previamente criada pelo seu ID.

Parâmetros:

CampoTipoObrigatórioDescrição
idstringSimO ID da tarefa devolvido por message/send.

Devolve: o objeto Task, ou um erro TASK_NOT_FOUND se tiver expirado ou não existir. As tarefas são armazenadas durante 24 horas.

tasks/cancel

Cancele uma tarefa se estiver num estado cancelável. Como todas as habilidades se resolvem de forma síncrona, a maioria das tarefas já se encontra num estado terminal (completed / failed) no momento em que a resposta é devolvida — tentar cancelar uma tarefa terminal devolve INVALID_PARAMS com a mensagem Invalid state transition.

Parâmetros:

CampoTipoObrigatórioDescrição
idstringSimO ID da tarefa a cancelar.

Devolve: o objeto Task atualizado com status.state: "canceled".

Ciclo de vida da tarefa

As habilidades do Magisterium são executadas de forma síncrona, pelo que uma tarefa só é persistida no armazenamento depois de a habilidade terminar — sempre num estado terminal. Os estados submitted e working fazem parte da especificação A2A mais alargada, mas nunca são produzidos pela implementação do Magisterium; só irá observar um dos três estados terminais apresentados abaixo.

EstadoSignificado
completedTerminal — os resultados estão em artifacts. Devolvido por message/send quando a habilidade termina com sucesso.
failedTerminal — status.message contém o motivo da falha. Devolvido por message/send quando a habilidade lança uma exceção.
canceledTerminal — apenas alcançável chamando tasks/cancel numa tarefa não terminal. Como as tarefas já se encontram num estado terminal no momento em que message/send devolve, na prática o cancelamento é rejeitado com INVALID_PARAMS para qualquer tarefa para a qual tenha uma referência.

Cada tarefa transporta ainda:

  • contextId — um identificador de agrupamento que pode reutilizar em mensagens de seguimento para ligar tarefas relacionadas.
  • history — a lista ordenada de mensagens do utilizador e do agente que produziram os artefactos da tarefa.

Códigos de erro

CódigoNomeDescrição
-32700Parse errorCorpo JSON inválido.
-32600Invalid requestFalta dos campos jsonrpc, method ou id.
-32601Method not foundMétodo JSON-RPC desconhecido.
-32602Invalid paramsParâmetros em falta ou inválidos (devolvido também para transições de estado inválidas em tasks/cancel).
-32603Internal errorFalha inesperada no servidor.
-32001Task not foundO ID da tarefa não existe ou expirou.
-32002Skill not foundskillId desconhecido nos metadados da mensagem.
-32003Rate limit exceededDemasiadas requisições. Verifique retryAfter (segundos) no data do erro.
-32004UnauthorizedToken Bearer em falta ou inválido.
-32005Paid plan requiredO A2A requer um plano Pro, Organization ou Enterprise.

O estado HTTP espelha a classe do erro: 401 para UNAUTHORIZED, 403 para PLAN_REQUIRED, 429 para RATE_LIMITED e 200 para todos os restantes erros JSON-RPC (segundo a convenção JSON-RPC de devolver 200 com um corpo error).

Limites de utilização

O A2A partilha o mesmo conjunto de limites de utilização do MCP — consulte os Preços do MCP para os limites de requisições de cada plano.

São aplicadas duas variantes:

  • Predefinida — aplica-se a document_search, document_fetch, liturgical_readings e saints_of_the_day.
  • Intensiva — aplica-se apenas a catholic_qa, porque executa um pipeline de resposta baseado em LLM. Esta variante utiliza um limite mais estrito e baixo.

Quando atinge um limite, o objeto data do erro contém retryAfter em segundos. Os chamadores devem aguardar esse intervalo antes de tentar novamente.

CORS

O endpoint responde a requisições preflight OPTIONS e devolve cabeçalhos CORS permissivos (Access-Control-Allow-Origin: *, Allow-Methods: POST, OPTIONS, Allow-Headers: Content-Type, Authorization), pelo que o A2A pode ser chamado a partir de orquestradores baseados em navegador sem necessidade de um proxy.