XGuard — Universal Action Gateway
Puerta de enlace remota de descubrimiento MCP para encontrar e inspeccionar recursos públicos HTTP, MCP y x402.
Documentación
XGuard — Universal Paid AI Agent + Secretless Gateway
API de producción canónica
https://api.xguardgate.com
Identidad canónica — v5.1.0: XGuard Universal Paid AI Agent + Secretless Gateway. Los agentes descubren herramientas reales, obtienen un precio firmado, pagan por solicitud mediante x402 v2 USDC y reciben un recibo firmado más evidencia ProofRail. Secretless Egress mantiene las credenciales reutilizables de origen fuera del contexto del agente. Ver
CANONICAL_IDENTITY.md.
La ruta principal sin cuenta es:
direct tool call → signed quote + HTTP 402 → verify + settle
→ controlled execution → signed receipt + ProofRail
La primera herramienta de producción de pago es xguard.web.fetch: HTTPS público acotado GET/HEAD con protección SSRF, validación de DNS público, redirecciones manuales seguras, límites de contenido/tipo/tamaño/tiempo, caché, errores estables, marcas de tiempo de origen y hashes de contenido. Las herramientas de búsqueda, generación/enrutamiento de IA y consulta de datos están explícitamente deshabilitadas hasta que se configuren conectores reales.
Inicio rápido en cinco minutos
No se necesita cuenta ni SDK. La ruta más corta es una sola solicitud; XGuard crea la cotización firmada y devuelve el desafío x402 estándar sin contactar al destino:
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/"}'
El payload de pago final es x402 v2 estándar; puede ser producido por cualquier wallet/cliente compatible. XGuard además requiere el payment-identifier recomendado por el servidor devuelto en la cotización y el desafío. Un reintento exacto devuelve el resultado almacenado y no liquida dos veces.
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/"}}}]}}}'
Descubrimiento en TypeScript y 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()
Superficies de descubrimiento 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 y /v1/ready.
Base Sepolia es solo para integración y cada liquidación de prueba se registra como environment=test, revenue=false. Las cotizaciones de producción usan Base Mainnet y el destinatario/facilitador de producción configurado; los ingresos se registran solo para una liquidación de producción externa con evidencia de transacción.
xguard.web.fetch es el punto de estrangulamiento obligatorio de ejecución protegida: su primera llamada directa devuelve la cotización vinculada a la entrada y el 402 automáticamente, y cada reintento de pago requiere liquidación x402 v2 antes de contactar al destino. xguard.preflight y el endpoint de cotización independiente siguen siendo preparación gratuita opcional. Cuando un operador mantiene una credencial reutilizable de origen solo en XGuard, Secretless Egress es igualmente la ruta obligatoria respaldada por credenciales para ese entorno.
Ruta de credenciales sin secretos
XGuard mantiene las credenciales reutilizables de origen fuera de los agentes de IA. Los operadores almacenan una credencial de API de Stripe, GitHub, OpenAI, Anthropic, Slack, Notion, Cloudflare, Gemini o personalizada una vez, y luego le dan al agente solo una capacidad XGuard de corta duración y con alcance definido.
Operator secret
↓
Encrypted XGuard credential vault
↓
Scoped capability
↓
AI agent
↓
XGuard Secretless Egress
↓
credential injected server-side
↓
upstream API
El agente nunca recibe la credencial reutilizable de origen.
XGuard se convierte en un punto de estrangulamiento real cuando un operador mantiene la credencial reutilizable solo en XGuard y delega capacidades en lugar de redistribuir esa credencial. XGuard no reclama control sobre tráfico de Internet no relacionado.
Por qué Secretless Egress
Un token portador reutilizable dentro de un agente autónomo puede copiarse, registrarse, colocarse en contexto, reutilizarse fuera de la solicitud prevista o filtrarse a una herramienta no confiable. XGuard cambia la primitiva de posesión de secretos a posesión de capacidades con alcance definido.
El límite de egress actual proporciona:
- almacenamiento cifrado de credenciales reutilizables;
- ajustes preestablecidos de proveedores para OpenAI, Anthropic, GitHub, Stripe, Slack, Notion, Cloudflare y Gemini;
- credenciales personalizadas basadas en encabezados restringidas a hosts HTTPS públicos explícitos;
- capacidades de corta duración;
- vinculación exacta de origen HTTPS;
- listas de permitidos de prefijos de ruta;
- listas de permitidos de métodos HTTP;
- recuentos máximos de llamadas;
- facturación de Usage Credit antes de la liberación del secreto y antes del egress de red saliente;
- sin reenvío automático de credenciales a través de redirecciones;
- bloqueo de destinos privados/locales;
- inyección automática de
Idempotency-Keypara métodos no seguros; - sin reintento automático ciego después de ambigüedad de red;
- descubrimiento MCP y ejecución de egress sin exponer el aprovisionamiento de credenciales al contexto del modelo.
API de Egress
Contrato legible 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. El operador almacena una credencial reutilizable
El aprovisionamiento de credenciales es intencionalmente una API de operador, no una herramienta 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 devuelve solo metadatos de credencial como xcred_...; el secreto reutilizable no se devuelve.
2. El operador emite una capacidad corta
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
}
La capacidad xgc_... devuelta es lo que recibe el agente.
3. El agente ejecuta sin el secreto de origen
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 el alcance de la capacidad y la facturación, inyecta la credencial de GitHub en el lado del servidor, envía una solicitud HTTPS y nunca expone el token reutilizable de GitHub al agente.
Contrato de precios:
GET /v1/egress/pricing
La configuración actual consume 1 XGuard Usage Credit por intento de egress autorizado respaldado por credenciales. La facturación se compromete antes del descifrado de credenciales y antes del egress de red saliente. Si la facturación no puede comprometerse, no se envía ninguna solicitud de origen.
MCP
Endpoint MCP canónico:
https://api.xguardgate.com/mcp
Las herramientas orientadas al agente incluyen:
xguard_secretless_egress
xguard_egress_fetch
xguard_action_rail
La creación de credenciales reutilizables está deliberadamente no expuesta como herramienta MCP.
Action Rail subyacente
La ruta de herramientas de pago sin cuenta y Secretless Egress son los límites principales del producto. XGuard Action Rail sigue disponible debajo para controles de ejecución más fuertes en torno a pagos, compras, reservas, mensajes, despliegues, eliminaciones, escrituras de API y llamadas de herramientas.
POST /v1/mandates
POST /v1/actions/permits
POST /v1/actions/execute
GET /v1/actions/permits/{permit_id}
Action Rail agrega mandatos con alcance, permisos criptográficos vinculados a solicitudes, rechazo de reproducción, estado de ejecución duradero y recibos.
Despliegue Universal y Edge
Para infraestructura controlada por el operador, XGuard también puede colocarse frente a un origen:
Internet / Ingress
↓
XGuard Universal Gate
↓
private origin
El repositorio incluye Cloudflare Edge Gate, despliegue portable de Node, Docker, Docker Compose, Kubernetes y componentes OpenAPI AutoGate.
x402 nativo y ejecución de pago
x402 v2 es la ruta de pago principal sin cuenta para herramientas de agente de pago. XGuard también conserva sus endpoints de retransmisión de facilitador para compatibilidad hacia atrás.
GET /supported
POST /verify
POST /settle
GET /facilitator
GET /.well-known/x402
GET /v1/facilitator/route
XGuard sigue siendo una puerta de enlace facilitadora x402 v2 no custodial con enrutamiento consciente de capacidades, protección contra reproducción, conciliación de USDC en Base y comportamiento de liquidación ambigua con cierre por fallo.
Modelo de seguridad
- las credenciales reutilizables de origen están cifradas en reposo usando claves AES-GCM por registro envueltas por una autoridad RSA-OAEP de XGuard;
- los valores secretos no se incluyen en las capacidades del agente;
- las claves de Usage Credit del operador de XGuard están cifradas en el estado de la capacidad y no se entregan a los agentes;
- las capacidades vinculan origen, prefijo de ruta, métodos, expiración y llamadas máximas;
- los encabezados proporcionados por el usuario no pueden anular el encabezado de credencial inyectado ni los encabezados de control de XGuard;
- los destinos privados/locales y los auto-destinos de XGuard están bloqueados;
- las redirecciones no se siguen automáticamente con credenciales inyectadas;
- la facturación se compromete antes del descifrado del secreto y el egress de red;
- los métodos no seguros reciben un
Idempotency-Keygenerado por XGuard cuando el llamador no proporcionó uno; - XGuard no reproduce automáticamente una solicitud respaldada por credenciales después de una ambigüedad de red.
Descubrimiento de máquinas
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
Dominios de producción
https://xguardgate.com
https://api.xguardgate.com
La configuración de Cloudflare Worker deshabilita la ruta pública workers.dev para que la identidad de producción de XGuard se limite a los dominios personalizados de XGuard.
Repositorio:
https://github.com/moelayyan90/XGuard