El problema de los 8 formatos
Si construyes un agente IA hoy, vas a recibir credenciales de muchos lugares:
- Un MCP server que te pasa una "MCP Server Card"
- Un agente de Google A2A que te pasa una "A2A card"
- Un servicio W3C VC que te pasa un "Verifiable Credential"
- Un legacy system que te pasa un X.509
- Un JWT OAuth estándar
- Un EAT-AI token (Entity Attestation Token)
- Un ZTA card (Zero Trust Agent)
- Un ATC v3 (Agent Trust Card)
Cada formato tiene su propia estructura, su propia firma, su propio esquema de revocación. Si quieres soportar los 8, tendrías que mantener 8 verificadores distintos.
UTA los unifica.
La API
# Detecta el formato automáticamente y verifica
curl -X POST https://www.marketnow.site/api/trust?action=verify \
-H "Content-Type: application/json" \
-d '{"card": "<cualquier formato>"}'
Respuesta:
{
"decision": "PERMIT",
"detected_format": "JWT",
"issuer": "did:web:alice.example",
"expires_at": "2026-12-31T23:59:59Z",
"stages": {
"PARSER": "OK",
"DETECT": "JWT",
"SCHEMA": "OK",
"CRYPTO": "OK",
"ISSUER": "did:web:alice.example",
"KEY_BINDING": "OK",
"POP": "OK",
"PROVENANCE": "DIRECT",
"LIFECYCLE": "ACTIVE",
"EVIDENCE": "LOGGED",
"POLICY": "PASS",
"DECISION": "PERMIT"
},
"failed_stage": null
}
Cómo funciona la detección
La etapa DETECT usa heurísticas simples pero efectivas:
- Si empieza con
eyJ→ JWT - Si tiene
@contextconhttps://www.w3.org/2018/credentials/v1→ W3C VC - Si tiene
mcp_server_card_v1→ MCP Card - Si tiene
a2a_protocol_v1→ A2A card - Si tiene
eat_profile→ EAT-AI - Si tiene
zta_v1→ ZTA - Si tiene
atc_v3→ ATC v3 - Si empieza con
-----BEGIN CERTIFICATE-----→ X.509
Una vez detectado, el pipeline enruta a la lógica específica del formato.
Translate: de un formato a otro
UTA también puede traducir entre formatos:
curl -X POST https://www.marketnow.site/api/trust?action=translate \
-H "Content-Type: application/json" \
-d '{
"card": "<JWT aquí>",
"target_format": "W3C_VC"
}'
Esto te permite recibir un JWT y emitir un W3C VC equivalente, preservando issuer, subject, scope, y vigencia.
Bridge: verificar en un ecosistema, emitir en otro
El endpoint bridge:
curl -X POST https://www.marketnow.site/api/trust?action=bridge \
-H "Content-Type: application/json" \
-d '{
"card": "<JWT de ecosistema A>",
"target_format": "MCP_CARD",
"target_issuer": "did:web:bridge.example"
}'
Verifica la credencial en ecosistema A (JWT) y, si pasa, emite una credencial equivalente en ecosistema B (MCP Card). Útil cuando un agente de un ecosistema necesita hablar con un agente de otro.
Benchmarks
| Operación | Latencia |
|---|---|
| Detect | 0.02ms |
| Verify (JWT) | 0.15ms |
| Verify (W3C VC) | 0.18ms |
| Verify (MCP Card) | 0.16ms |
| Translate | 0.25ms |
| Bridge | 0.35ms |
Throughput: 6,744 verificaciones/segundo en un solo núcleo.
Implementación en tu código
import { verify, translate, bridge } from '@marketnow/trust-core';
// Verificar
const result = await verify(card);
if (result.decision !== 'PERMIT') {
throw new Error(`Trust failed at ${result.failed_stage}`);
}
// Traducir
const w3cVC = await translate(jwtCard, 'W3C_VC');
// Bridgear
const mcpCard = await bridge(jwtCard, 'MCP_CARD', 'did:web:bridge.example');
Conclusión
La interoperabilidad no es un feature, es el feature. Si tu agente solo soporta un formato de credencial, estás construyendo un silo. UTA te da los 8 formatos en una sola llamada.
Repo: alicelabs-llc/universal-trust-adapter · API: marketnow.site/api/trust
Top comments (0)