AgentAuth

Auth0, mas para agentes. Serviço de identidade e autenticação para agentes de IA.

Documentação

AgentAuth

Serviço de identidade e autenticação para agentes de IA. Emite credenciais verificáveis, gerencia ciclos de vida de chaves de API e fornece fluxos semelhantes a OAuth para interações máquina a máquina.

Servidor MCP

AgentAuth está disponível como um servidor MCP (Model Context Protocol) — nenhum código de cliente HTTP é necessário. Qualquer agente compatível com MCP pode autenticar e gerenciar permissões por meio de chamadas de ferramenta padrão.

O endpoint MCP está integrado à API do AgentAuth em /mcp. Nenhuma instalação separada é necessária.


Configuração

Hospedado (recomendado)

Adicione isso à configuração do seu cliente MCP e pronto:

{
  "mcpServers": {
    "agentauth": {
      "url": "https://agentauth.radi.pro/mcp"
    }
  }
}

Locais de configuração específicos do cliente

ClienteArquivo de configuração
Claude Desktop (macOS)~/Library/Application Support/Claude/claude_desktop_config.json
Claude Desktop (Windows)%APPDATA%\Claude\claude_desktop_config.json
Claude Code (projeto).claude/settings.json
Claude Code (global)~/.claude/settings.json
Cursor (global)~/.cursor/mcp.json
Cursor (projeto).cursor/mcp.json
VS Code / Copilotsettings.json do usuário ou do espaço de trabalho em github.copilot.chat.mcpServers
Windsurf~/.codeium/windsurf/mcp_config.json
Continue.dev~/.continue/config.json
Zed~/.config/zed/settings.json em context_servers

Todos usam a mesma URL: https://agentauth.radi.pro/mcp

Modo local / stdio

Para ambientes de desenvolvimento ou sem conexão externa:

cd mcp-server
uv pip install -e .
{
  "mcpServers": {
    "agentauth": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/agent-auth/mcp-server", "agentauth-mcp"],
      "env": {
        "AGENTAUTH_URL": "https://agentauth.radi.pro"
      }
    }
  }
}

Auto-hospedagem

Se você executar sua própria instância do AgentAuth, o endpoint MCP estará automaticamente disponível em /mcp. Defina AGENTAUTH_URL para sua instância:

AGENTAUTH_URL=https://your-agentauth-instance.com

Variáveis de Ambiente

VariávelObrigatóriaDescrição
AGENTAUTH_URLSim (modo stdio)URL base do serviço AgentAuth
AGENTAUTH_API_KEYNãoChave de API padrão usada por authenticate quando nenhuma é fornecida

Ao usar o endpoint /mcp hospedado diretamente, nenhuma variável de ambiente é necessária no cliente.


Fluxo de Uso Típico

1. quickstart          → register agent + get API key + access token (first run only)
2. authenticate        → exchange saved API key for a fresh access token
3. [do work]           → pass access_token to list_agents, create_delegation, check_permission, etc.
4. refresh_token       → get a new token pair before the access token expires
5. revoke_token        → invalidate tokens when done (optional)

Ferramentas Disponíveis

discover

Obtenha as capacidades e endpoints do servidor AgentAuth.

Retorna tipos de concessão suportados, escopos disponíveis, tempos de vida de token e todas as URLs de endpoint. Chame isso primeiro para entender o que o serviço oferece.

discover()

quickstart

Registre um novo agente raiz e obtenha credenciais em uma única chamada. A maneira mais rápida de começar.

Retorna identidade do agente, chave de API (mostrada uma vez — salve imediatamente), token de acesso, token de atualização e carimbos de data/hora de expiração.

ParâmetroTipoObrigatórioDescrição
namestringSimNome legível do agente, ex.: "my-data-pipeline"
agent_typestringSimUm de: orchestrator, autonomous, assistant, tool
descriptionstringNãoPropósito do agente
quickstart(
  name="my-pipeline",
  agent_type="autonomous",
  description="Processes nightly ETL jobs"
)

A resposta inclui:

  • agent — identidade registrada (id, name, agent_type, trust_level, …)
  • api_key — chave de API bruta, salve agora
  • access_token — token Bearer pronto para uso (válido por 15 min)
  • refresh_token — use antes que o token de acesso expire
  • expires_at / refresh_before — carimbos de data/hora ISO-8601

authenticate

Troque uma chave de API por um token de acesso (concessão client_credentials).

ParâmetroTipoObrigatórioDescrição
api_keystringNãoChave de API do AgentAuth. Recorre à variável de ambiente AGENTAUTH_API_KEY
scopesstring[]NãoEscopos a solicitar. Padrão: todos os escopos que a credencial permite
authenticate(
  api_key="ak_live_...",
  scopes=["api.read", "agents.write"]
)

Retorna: access_token, refresh_token, token_type, expires_in, expires_at, refresh_before


refresh_token

Troque um token de atualização por um novo par de token de acesso + atualização.

Use quando o token de acesso estiver próximo da expiração — verifique refresh_before na resposta de authenticate.

ParâmetroTipoObrigatórioDescrição
refresh_token_valuestringSimToken de atualização de uma chamada anterior de authenticate ou quickstart
refresh_token(refresh_token_value="rt_...")

introspect_token

Verifique se um token é válido e inspecione suas declarações (RFC 7662).

Retorna active: true/false mais as declarações decodificadas (scopes, agent_type, trust_level, expiration) se ativo.

ParâmetroTipoObrigatórioDescrição
tokenstringSimO token de acesso ou atualização a inspecionar
introspect_token(token="eyJ...")

revoke_token

Revogue um token de acesso ou atualização imediatamente (RFC 7009).

O token é adicionado à lista de bloqueio e invalidado. Idempotente — revogar um token já revogado é bem-sucedido.

ParâmetroTipoObrigatórioDescrição
tokenstringSimToken a revogar
revoke_token(token="eyJ...")

create_credential

Emita uma nova chave de API para um agente.

O raw_key é retornado uma vez — salve-o imediatamente. Leituras subsequentes mostram apenas o prefixo da chave.

ParâmetroTipoObrigatórioDescrição
agent_idstringSimUUID do agente
access_tokenstringSimToken Bearer
scopesstring[]NãoRestrições opcionais de escopo para a nova chave
create_credential(
  agent_id="01927...",
  access_token="eyJ...",
  scopes=["api.read"]
)

rotate_credential

Revogue uma chave de API existente e emita uma substituição em uma única operação atômica.

Retorna novos campos de credencial, o novo raw_key (salve-o) e o antigo credential_id.

ParâmetroTipoObrigatórioDescrição
credential_idstringSimUUID da credencial a rotacionar
access_tokenstringSimToken Bearer
rotate_credential(
  credential_id="01928...",
  access_token="eyJ..."
)

revoke_credential

Revogue permanentemente uma chave de API. Irreversível.

ParâmetroTipoObrigatórioDescrição
credential_idstringSimUUID da credencial a revogar
access_tokenstringSimToken Bearer
revoke_credential(
  credential_id="01928...",
  access_token="eyJ..."
)

create_delegation

Delegue um subconjunto de suas permissões a outro agente.

O delegado só pode receber escopos que o delegador já possui. As delegações podem ser encadeadas até max_chain_depth vezes.

ParâmetroTipoObrigatórioDescrição
delegate_agent_idstringSimUUID do agente que recebe as permissões
scopesstring[]SimEscopos a delegar (devem ser um subconjunto dos seus)
access_tokenstringSimToken Bearer do agente delegador
max_chain_depthintNãoQuantas vezes o delegado pode re-delegar (padrão: 3)
expires_in_hoursintNãoExpiração da delegação em horas a partir de agora
create_delegation(
  delegate_agent_id="01929...",
  scopes=["api.read", "agents.read"],
  access_token="eyJ...",
  max_chain_depth=1,
  expires_in_hours=24
)

check_permission

Avaliação de política em modo de simulação — verifica se um agente tem permissão para executar uma ação sem realmente aplicá-la. Útil para verificações pré-voo.

ParâmetroTipoObrigatórioDescrição
agent_idstringSimUUID do agente a verificar
actionstringSimUm de: read, write, delete, execute, delegate, admin
resourcestringSimCaminho do recurso, ex.: "/api/v1/credentials"
access_tokenstringSimToken Bearer
check_permission(
  agent_id="01927...",
  action="write",
  resource="/api/v1/credentials",
  access_token="eyJ..."
)

Retorna: allowed: true/false, detalhes da política correspondente, raciocínio da decisão.


list_agents

Liste agentes registrados com paginação.

ParâmetroTipoObrigatórioDescrição
access_tokenstringSimToken Bearer
limitintNãoMáximo de resultados, 1–100 (padrão: 50)
offsetintNãoDeslocamento de paginação (padrão: 0)
list_agents(access_token="eyJ...", limit=10, offset=0)

get_agent

Obtenha detalhes completos de um agente específico.

Retorna campos do agente (id, name, agent_type, trust_level, status) mesclados com metadados (is_root, is_active).

ParâmetroTipoObrigatórioDescrição
agent_idstringSimUUID do agente
access_tokenstringSimToken Bearer
get_agent(agent_id="01927...", access_token="eyJ...")

Tipos de Agente

TipoDescrição
orchestratorCoordena outros agentes; alta confiança
autonomousAgentes autônomos executando tarefas longas
assistantAgentes interativos respondendo a solicitações de usuários
toolAgentes utilitários de propósito específico

Tempos de Vida de Token

TokenTempo de vida padrão
Token de acesso15 minutos
Token de atualização7 dias
Chaves de APIConfigurável (sem expiração padrão)

Exemplo de SDK Python

from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client

async with streamablehttp_client("https://agentauth.radi.pro/mcp") as (read, write, _):
    async with ClientSession(read, write) as session:
        await session.initialize()

        # Register and get credentials
        result = await session.call_tool("quickstart", {
            "name": "my-agent",
            "agent_type": "autonomous",
        })
        api_key = result.content[0].text  # save this

        # Authenticate on subsequent runs
        auth = await session.call_tool("authenticate", {"api_key": api_key})
        token = auth.content[0].text  # access_token

API REST

O servidor MCP encapsula a API REST do AgentAuth. A documentação interativa da API está disponível em:

https://agentauth.radi.pro/docs