XGuard — Universal Action Gateway

Gateway de descoberta MCP remoto para encontrar e inspecionar recursos públicos HTTP, MCP e x402.

Documentação

XGuard — Universal Paid AI Agent + Secretless Gateway

API de produção canônica

https://api.xguardgate.com

Identidade canônica — v5.1.0: XGuard Universal Paid AI Agent + Secretless Gateway. Agentes descobrem ferramentas reais, obtêm um preço assinado, pagam por requisição via x402 v2 USDC e recebem um recibo assinado mais evidência ProofRail. Secretless Egress mantém credenciais upstream reutilizáveis fora do contexto do agente. Veja CANONICAL_IDENTITY.md.

O caminho principal sem conta é:

direct tool call → signed quote + HTTP 402 → verify + settle
                 → controlled execution → signed receipt + ProofRail

A primeira ferramenta de produção paga é xguard.web.fetch: HTTPS público limitado GET/HEAD com proteção SSRF, validação de DNS público, redirecionamentos manuais seguros, limites de conteúdo/tipo/tamanho/tempo, cache, erros estáveis, timestamps de origem e hashes de conteúdo. Ferramentas de busca, geração/roteamento de IA e consulta de dados estão explicitamente desabilitadas até que conectores reais sejam configurados.

Início rápido em cinco minutos

Nenhuma conta ou SDK é necessário. O caminho mais curto é uma requisição; XGuard cria a cotação assinada e retorna o desafio x402 padrão sem contatar o alvo:

curl -i https://api.xguardgate.com/v1/tools/web.fetch \
  -H 'content-type: application/json' \
  -d '{"url":"https://example.com/"}'

# Response: HTTP 402 + Payment-Required + X-XGuard-Quote.
# Sign the challenge with an x402 v2 payer and retry the identical request with
# Payment-Signature and X-XGuard-Quote. XGuard settles before execution.

# Optional machine discovery and free preparation:
curl -sS https://api.xguardgate.com/v1/capabilities
curl -sS https://api.xguardgate.com/v1/pricing
curl -sS https://api.xguardgate.com/v1/payment/readiness

# Optional free guard: validates HTTPS/SSRF/DNS/payment readiness without contacting the target
curl -sS https://api.xguardgate.com/v1/preflight \
  -H 'content-type: application/json' \
  -d '{"url":"https://example.com/","testnet":true}'

curl -sS https://api.xguardgate.com/v1/pricing/quote \
  -H 'content-type: application/json' \
  -d '{"url":"https://example.com/","testnet":true}'

# A standalone signed quote remains available for clients that need a price preview.
# Send its compact `quote` as X-XGuard-Quote; the response is the same HTTP 402.
curl -i https://api.xguardgate.com/v1/tools/web.fetch/testnet \
  -H 'content-type: application/json' \
  -H 'X-XGuard-Quote: <signed-quote>' \
  -d '{"url":"https://example.com/"}'

O payload de pagamento final é x402 v2 padrão; pode ser produzido por qualquer carteira/cliente compatível. XGuard adicionalmente exige o payment-identifier recomendado pelo servidor retornado na cotação e no desafio. Uma nova tentativa exata retorna o resultado armazenado e não liquida duas vezes.

MCP

curl -i https://api.xguardgate.com/mcp \
  -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"xguard.web.fetch","arguments":{"url":"https://example.com/"}}}'

A2A

curl -i https://api.xguardgate.com/a2a \
  -H 'content-type: application/json' -H 'a2a-version: 1.0.0' \
  -d '{"jsonrpc":"2.0","id":1,"method":"SendMessage","params":{"message":{"messageId":"fetch-1","role":"ROLE_USER","parts":[{"data":{"action":"xguard.web.fetch","input":{"url":"https://example.com/"}}}]}}}'

Descoberta em TypeScript e Python

const capabilities = await fetch("https://api.xguardgate.com/v1/capabilities").then(r => r.json());
const quote = await fetch("https://api.xguardgate.com/v1/pricing/quote", {
  method: "POST",
  headers: { "content-type": "application/json" },
  body: JSON.stringify({ url: "https://example.com/", testnet: true }),
}).then(r => r.json());
import requests

capabilities = requests.get("https://api.xguardgate.com/v1/capabilities", timeout=10).json()
quote = requests.post(
    "https://api.xguardgate.com/v1/pricing/quote",
    json={"url": "https://example.com/", "testnet": True},
    timeout=10,
).json()

Superfícies de descoberta canônicas: /mcp, /a2a, /.well-known/agent-card.json, /.well-known/oauth-protected-resource/mcp, /.well-known/payment-manifest, /.well-known/x402-facilitator.json, /openapi.json, /llms.txt, /v1/capabilities, /v1/preflight, /v1/pricing, /v1/payment/readiness, /v1/health e /v1/ready.

Base Sepolia é apenas para integração e cada liquidação de teste é registrada como environment=test, revenue=false. Cotações de produção usam Base Mainnet e o destinatário/facilitador de produção configurado; a receita é registrada apenas para uma liquidação de produção externa com evidência de transação.

xguard.web.fetch é o ponto de estrangulamento obrigatório de execução protegida: sua primeira chamada direta retorna a cotação vinculada à entrada e o 402 automaticamente, e cada nova tentativa paga exige liquidação x402 v2 antes de o alvo ser contatado. xguard.preflight e o endpoint de cotação independente permanecem como preparação gratuita opcional. Quando um operador mantém uma credencial upstream reutilizável apenas no XGuard, Secretless Egress é igualmente o caminho obrigatório com credencial para esse ambiente.

Caminho de credencial sem segredo

XGuard mantém credenciais upstream reutilizáveis fora dos agentes de IA. Operadores armazenam uma credencial de API Stripe, GitHub, OpenAI, Anthropic, Slack, Notion, Cloudflare, Gemini ou personalizada uma vez, e então dão ao agente apenas uma capacidade XGuard de escopo curto e limitada.

Operator secret
     ↓
Encrypted XGuard credential vault
     ↓
Scoped capability
     ↓
AI agent
     ↓
XGuard Secretless Egress
     ↓
credential injected server-side
     ↓
upstream API

O agente nunca recebe a credencial upstream reutilizável.

XGuard se torna um ponto de estrangulamento real quando um operador mantém a credencial reutilizável apenas no XGuard e delega capacidades em vez de redistribuir essa credencial. XGuard não reivindica controle sobre tráfego de Internet não relacionado.

Por que Secretless Egress

Um token portador reutilizável dentro de um agente autônomo pode ser copiado, registrado, colocado em contexto, reutilizado fora da requisição pretendida ou vazado para uma ferramenta não confiável. XGuard muda o primitivo de posse de segredo para posse de capacidade com escopo.

O limite de egress atual fornece:

  • armazenamento criptografado de credenciais reutilizáveis;
  • predefinições de provedores para OpenAI, Anthropic, GitHub, Stripe, Slack, Notion, Cloudflare e Gemini;
  • credenciais personalizadas baseadas em cabeçalho restritas a hosts HTTPS públicos explícitos;
  • capacidades de curta duração;
  • vinculação exata de origem HTTPS;
  • listas de permissão de prefixo de caminho;
  • listas de permissão de método HTTP;
  • contagens máximas de chamadas;
  • cobrança de Usage Credit antes da liberação do segredo e antes do egress de rede de saída;
  • sem encaminhamento automático de credenciais em redirecionamentos;
  • bloqueio de alvos privados/locais;
  • injeção automática de Idempotency-Key para métodos inseguros;
  • sem repetição automática cega após ambiguidade de rede;
  • descoberta MCP e execução de egress sem expor o provisionamento de credenciais ao contexto do modelo.

API de Egress

Contrato legível por máquina:

GET https://api.xguardgate.com/v1/egress
GET https://api.xguardgate.com/.well-known/xguard-egress.json
GET https://api.xguardgate.com/.well-known/xguard-egress-key.json
GET https://api.xguardgate.com/v1/egress/providers

1. Operador armazena uma credencial reutilizável

O provisionamento de credenciais é intencionalmente uma API de operador, não uma ferramenta MCP.

POST /v1/egress/credentials
X-XGuard-Key: <usage-credit-key>
Content-Type: application/json
{
  "provider": "github",
  "value": "<github-token>",
  "label": "production-github",
  "allowed_paths": ["/repos/"],
  "allowed_methods": ["GET", "POST"]
}

XGuard retorna apenas metadados de credencial como xcred_...; o segredo reutilizável não é retornado.

2. Operador emite uma capacidade curta

POST /v1/egress/capabilities
X-XGuard-Key: <usage-credit-key>
Content-Type: application/json
{
  "credential_id": "xcred_...",
  "target_origin": "https://api.github.com",
  "path_prefix": "/repos/",
  "allowed_methods": ["GET", "POST"],
  "ttl_seconds": 300,
  "max_calls": 10
}

A capacidade xgc_... retornada é o que o agente recebe.

3. Agente executa sem o segredo upstream

POST /v1/egress/fetch
Content-Type: application/json
{
  "capability": "xgc_...",
  "target": "https://api.github.com/repos/org/repo/issues",
  "method": "POST",
  "body_json": {
    "title": "Example"
  }
}

XGuard valida o escopo da capacidade e a cobrança, injeta a credencial GitHub no lado do servidor, envia uma requisição HTTPS e nunca expõe o token GitHub reutilizável ao agente.

Contrato de preços:

GET /v1/egress/pricing

A configuração atual consome 1 XGuard Usage Credit por tentativa de egress autorizada com credencial. A cobrança é comprometida antes da descriptografia da credencial e antes do egress de rede de saída. Se a cobrança não puder ser comprometida, nenhuma requisição upstream é enviada.

MCP

Endpoint MCP canônico:

https://api.xguardgate.com/mcp

Ferramentas voltadas ao agente incluem:

xguard_secretless_egress
xguard_egress_fetch
xguard_action_rail

A criação de credenciais reutilizáveis é deliberadamente não exposta como uma ferramenta MCP.

Action Rail subjacente

O caminho de ferramenta paga sem conta e o Secretless Egress são os principais limites do produto. XGuard Action Rail permanece disponível subjacente para controles de execução mais fortes em torno de pagamentos, compras, reservas, mensagens, implantações, exclusões, escritas de API e chamadas de ferramentas.

POST /v1/mandates
POST /v1/actions/permits
POST /v1/actions/execute
GET  /v1/actions/permits/{permit_id}

Action Rail adiciona mandatos com escopo, permissões criptográficas vinculadas à requisição, rejeição de repetição, estado de execução durável e recibos.

Implantação Universal e Edge

Para infraestrutura controlada pelo operador, XGuard também pode ser colocado na frente de uma origem:

Internet / Ingress
      ↓
XGuard Universal Gate
      ↓
private origin

O repositório inclui Cloudflare Edge Gate, implantação Node portátil, Docker, Docker Compose, Kubernetes e componentes OpenAPI AutoGate.

x402 nativo e execução paga

x402 v2 é o caminho de pagamento principal sem conta para ferramentas de agente pagas. XGuard também mantém seus endpoints de retransmissão facilitadora para compatibilidade retroativa.

GET  /supported
POST /verify
POST /settle
GET  /facilitator
GET  /.well-known/x402
GET  /v1/facilitator/route

XGuard permanece um gateway facilitador x402 v2 não custodial com roteamento ciente de capacidade, proteção contra repetição, conciliação Base USDC e comportamento de liquidação ambígua com falha fechada.

Modelo de segurança

  • credenciais upstream reutilizáveis são criptografadas em repouso usando chaves AES-GCM por registro envolvidas por uma autoridade XGuard RSA-OAEP;
  • valores secretos não são incluídos nas capacidades do agente;
  • chaves de Usage Credit do operador XGuard são criptografadas no estado da capacidade e não são entregues aos agentes;
  • capacidades vinculam uma origem, prefixo de caminho, métodos, expiração e chamadas máximas;
  • cabeçalhos fornecidos pelo usuário não podem substituir o cabeçalho de credencial injetado ou os cabeçalhos de controle XGuard;
  • alvos privados/locais e auto-alvos XGuard são bloqueados;
  • redirecionamentos não são seguidos automaticamente com credenciais injetadas;
  • a cobrança é comprometida antes da descriptografia do segredo e do egress de rede;
  • métodos inseguros recebem um Idempotency-Key gerado pelo XGuard quando o chamador não forneceu um;
  • XGuard não repete automaticamente uma requisição com credencial após ambiguidade de rede.

Descoberta de máquina

GET /.well-known/xguard-egress.json
GET /.well-known/xguard-actions.json
GET /.well-known/xguard.json
GET /.well-known/ai-plugin.json
GET /.well-known/agent-card.json
GET /architecture
GET /v1/protocols
GET /openapi.json
GET /llms.txt
GET /skill.md
GET /sitemap.xml

Domínios de produção

https://xguardgate.com
https://api.xguardgate.com

A configuração do Cloudflare Worker desabilita a rota pública workers.dev para que a identidade de produção do XGuard seja limitada aos domínios XGuard personalizados.

Repositório:

https://github.com/moelayyan90/XGuard