Protocolo AP2: Pagos y Comercio Autónomo para Agentes de IA

Del pago humano interactivo a la autorización criptográfica mediante Mandatos Verificables, estandarización en FIDO Alliance y delegación financiera segura.

Resumen Ejecutivo & Respuestas Rápidas (AEO)

¿Qué es el Protocolo AP2 (Agent Payments Protocol)? Es el estándar abierto de comercio y pagos agénticos (impulsado por Google, Mastercard, PayPal y estandarizado en la FIDO Alliance) que reemplaza el uso inseguro de números de tarjeta (PAN/CVV) por una cadena criptográfica de Mandatos Verificables (W3C Verifiable Credentials).

  • Topología de 5 Roles: Segrega estrictamente la Trusted Surface del usuario, el Shopping Agent, el Merchant Agent, el Credential Provider (banco/bóveda) y el Merchant Payment Processor.
  • Cadena de 3 Mandatos (W3C VCs): El usuario firma el Intent Mandate (presupuesto, MCC y TTL); el vendedor firma el Cart Mandate inmutable; y el banco emite el Payment Mandate atando un token DPAN de un solo uso al hash SHA-256 del carrito (cartHash).
  • Modos Human-Present y Human-Not-Present: Soporta compras supervisadas con aprobación biométrica Passkeys/WebAuthn vía AG-UI y compras M2M desatendidas bajo mandatos abiertos acotados.
  • Neutralidad de Rieles: Liquida indistintamente sobre Network Tokens bancarios (Visa/Mastercard), SEPA Instant o Smart Contract Wallets (ERC-4337 / stablecoins).
  • Defensa en Profundidad: Combina la autorización criptográfica de AP2 con delegación IETF WIMSE AIMS y custodia en memoria en el sidecar de OpenSandbox.

1. La Crisis de Autorización en el Comercio Agéntico

La infraestructura financiera global que sustenta Internet (redes Visa/Mastercard, transferencias SEPA, protocolos EMV 3D-Secure y pasarelas de pago) fue diseñada bajo una premisa inquebrantable: un ser humano está frente a una pantalla. El usuario visualiza un carrito de compra, introduce manualmente un número de tarjeta con su código CVV, y confirma su identidad resolviendo un desafío biométrico (TouchID/FaceID) o introduciendo un código SMS de un solo uso (OTP).

En el paradigma de los agentes de IA autónomos, esta arquitectura humana colapsa por completo:

  • Invocación Desatendida (Human-Not-Present): Un agente de operaciones que detecta un pico de demanda en servidores a las 3:00 AM y necesita contratar instancias temporales en la nube o comprar tokens de inferencia no tiene dedos para poner su huella digital ni teléfono para recibir SMS.
  • El Antipatrón del Secreto Compartido: Proporcionar a un modelo de lenguaje una tarjeta de crédito corporativa o una clave secreta estática de Stripe en su system prompt o variables de entorno es una aberración de seguridad: basta un ataque de Prompt Injection indirecto o una alucinación del modelo para drenar los fondos de la empresa.
  • Incertidumbre Legal y Repudio del Comerciante: Los comercios y procesadores de pago necesitan garantías matemáticas y jurídicas de que el usuario final realmente delegó esa compra específica a ese agente, con límites de gasto claros y sin posibilidad de repudio fraudulento.

Para resolver este dilema surge el Agent Payments Protocol (AP2): un estándar abierto y marco criptográfico impulsado originalmente por Google en alianza con gigantes de la industria financiera y tecnológica (Mastercard, PayPal, American Express, Coinbase y Worldline) y formalmente transferido a la FIDO Alliance para su gobernanza neutral dentro de sus grupos de trabajo de Agentic Authentication y Payments.

2. La Topología de Confianza: Los 5 Roles Cardinales de AP2

AP2 establece un modelo de seguridad por capas donde las responsabilidades financieras y operativas están estrictamente segregadas entre cinco actores independientes:

Los 5 Actores de la Arquitectura AP2

  1. Shopping Agent (SA) — Agente Comprador: El agente de IA que actúa en nombre del usuario. Descubre productos, negocia términos comerciales con otros agentes mediante el Protocolo A2A y elabora la orden de compra.
  2. Credential Provider (CP) — Proveedor de Credenciales / Bóveda: La entidad financiera de confianza (banco emisor, pasarela corporativa, emisor de tarjetas virtuales o monedero cripto autosoberano) que custodia los fondos del usuario, evalúa las políticas de gasto y expide credenciales de pago tokenizadas.
  3. Merchant / Merchant Agent (M) — Comercio / Agente Vendedor: La entidad vendedora que expone su catálogo, calcula impuestos y emite el carrito final firmado.
  4. Merchant Payment Processor (MPP) — Pasarela Adquirente: El procesador de cobros del comercio (ej. Adyen, Stripe, Checkout.com) que valida las firmas criptográficas de la orden y liquida la transacción en las redes bancarias o de pago.
  5. Trusted Surface (TS) — Superficie de Confianza del Usuario: El dispositivo seguro controlado por el usuario (smartphone, navegador con enclave seguro Passkeys/FIDO2 o extensión hardware) donde el humano define los límites de gasto y firma criptográficamente su intención.
Diagrama de arquitectura del Protocolo AP2: Los 5 roles cardinales (Trusted Surface, Shopping Agent, Merchant Agent, Credential Provider y Merchant Payment Processor) y la cadena de 3 mandatos criptográficos W3C VC
Figura 1. Arquitectura de los 5 actores del Protocolo AP2 y flujo de la cadena criptográfica de mandatos (Intent Mandate ➔ Cart Mandate ➔ Payment Mandate vinculado al cartHash).
Especificación Topológica en Texto (Esquema RFC / ASCII para Agentes & Docs)
┌────────────────────────────────────────────────────────────────────────┐
│           1. TRUSTED SURFACE DEL USUARIO (FIDO2 / Passkeys)            │
│      Enclave Seguro Hardware • Presupuesto, MCC y Caducidad (TTL)      │
└───────────────────────────────────┬────────────────────────────────────┘
                                    │ Mandato 1: Intent Mandate (W3C VC)
                                    ▼
┌────────────────────────────────────────────────────────────────────────┐
│                 2. SHOPPING AGENT (Agente Comprador IA)                │
│    Descubre catálogo y negocia orden sin conocer jamás el PAN/CVV      │
└───────────────┬────────────────────────────────────────┬───────────────┘
                │ Mandato 2: Cart Mandate                │ Presenta Intent + Cart
                │ (Negociación vía A2A)                  │ Recibe Payment Mandate
                ▼                                        ▼
┌──────────────────────────────┐        ┌────────────────────────────────┐
│  3. MERCHANT AGENT (Vendedor)│        │ 4. CREDENTIAL PROVIDER (Banco) │
│  Firma Cart Mandate inmutable│        │ Valida Cart <= Intent y emite  │
└───────────────┬──────────────┘        │ Mandato 3: Payment Mandate     │
                │                       │ (DPAN atado al SHA256 cartHash)│
                │ Remite Orden +        └────────────────┬───────────────┘
                │ Cadena de Mandatos                     │ Liquidación Token
                ▼                                        ▼
┌────────────────────────────────────────────────────────────────────────┐
│         5. MERCHANT PAYMENT PROCESSOR (Pasarela Adquirente)            │
│   Verifica firmas no repudiables y liquida en Visa / SEPA / ERC-4337   │
└────────────────────────────────────────────────────────────────────────┘

3. La Cadena Criptográfica de Mandatos (The Mandate Chain)

El núcleo técnico diferencial de AP2 es que nunca viajan datos sensibles de tarjetas (PAN/CVV) a través del agente. En su lugar, el protocolo introduce una cadena secuencial de tres Mandatos Criptográficos expresados como Verifiable Credentials (W3C VCs / JSON-LD):

Mandato Emisor & Firmante Propósito Técnico Contenido Clave
1. Intent Mandate
(Mandato de Intención)
Usuario (en su Trusted Surface) Establece el marco de autorización y límites máximos antes de que el agente comience a comprar. Monto máximo (maxAmount), comercios o categorías permitidas (MCC), ventana de tiempo de validez (TTL) y firma FIDO/Passkey del usuario.
2. Cart Mandate
(Mandato de Carrito)
Shopping Agent y Merchant Agent Fija de manera inmutable los ítems específicos negociados, precios unitarios e impuestos. Líneas de producto, importe total exacto, identificador de comercio y firma digital del vendedor.
3. Payment Mandate
(Mandato de Pago)
Credential Provider (Banco / Wallet) Autoriza el movimiento financiero real, enlazándose matemáticamente al hash del Cart Mandate. Token de pago de un solo uso (DPAN / Network Token), hash del carrito y firma criptográfica del banco.

Ejemplo Estructurado: Intent Mandate firmado por el Usuario

// 1. Intent Mandate: El usuario autoriza gastar hasta 100€ en computación cloud
{
  "@context": ["https://www.w3.org/ns/credentials/v2", "https://ap2-protocol.org/contexts/v1"],
  "type": ["VerifiableCredential", "IntentMandate"],
  "issuer": "did:key:z6MkuUserTrustedPhoneEnclave",
  "issuanceDate": "2026-10-23T12:00:00Z",
  "credentialSubject": {
    "mandateId": "mandate_intent_99182",
    "payer": "did:ion:user_felix_villanueva",
    "authorizedAgent": "did:key:z6MktQuijotechDevOpsAgent",
    "spendingLimits": {
      "maxAmount": { "currency": "EUR", "value": 100.00 },
      "allowedCategories": ["CLOUD_SERVICES", "SAAS_APIS"],
      "allowedMerchants": ["*.aws.amazon.com", "hetzner.com", "cloudflare.com"]
    },
    "validUntil": "2026-10-23T18:00:00Z",
    "purpose": "Aprovisionamiento temporal de nodos RISC-V para pruebas de estrés"
  },
  "proof": {
    "type": "JsonWebSignature2020",
    "verificationMethod": "did:key:z6MkuUserTrustedPhoneEnclave#fido-key",
    "jws": "eyJhbGciOiJFUzI1NiIsImNyaXQiOls...K98B"
  }
}

Ejemplo Estructurado: Payment Mandate emitido por el Banco

Cuando el Shopping Agent presenta el CartMandate de Hetzner por importe de 45,50 € al Credential Provider, este constata que 45,50 € ≤ 100,00 €, que el comercio pertenece a la categoría permitida y que la firma del usuario es válida. Acto seguido, emite el PaymentMandate:

// 2. Payment Mandate: Credential Provider emite el token atado al hash del carrito
{
  "@context": ["https://www.w3.org/ns/credentials/v2", "https://ap2-protocol.org/contexts/v1"],
  "type": ["VerifiableCredential", "PaymentMandate"],
  "issuer": "did:web:bank.quijotech.com",
  "credentialSubject": {
    "paymentTokenId": "tok_virtual_dpan_88231",
    "cartHash": "sha256:4a8b792c3d1f0e9...88a",  // Inviolable: atado a ese carrito exacto
    "authorizedAmount": { "currency": "EUR", "value": 45.50 },
    "merchantId": "hetzner.com",
    "oneTimeToken": "dpan_4111_XXXX_XXXX_9921",
    "settlementRail": "CARD_NETWORK_TOKEN"
  },
  "proof": {
    "type": "JsonWebSignature2020",
    "verificationMethod": "did:web:bank.quijotech.com#cert",
    "jws": "eyJhbGciOiJSUzI1NiIs...99xF"
  }
}

Si un atacante interceptase el token oneTimeToken en tránsito e intentase utilizarlo para comprar en otra tienda o alterar el importe a 200 €, la pasarela adquirente rechazaría inmediatamente el cobro porque el cartHash y el merchantId no coincidirían con los registros del banco emisor.

4. Modos de Ejecución: Human-Present vs. Human-Not-Present

AP2 está diseñado para gobernar dos realidades operativas radicalmente distintas:

A. Modo Supervisado (Human-Present)

En este escenario, el Shopping Agent investiga diferentes opciones, negocia con proveedores y prepara el carrito. Cuando la orden está lista, el agente utiliza el Protocolo AG-UI emitiendo un evento RUN_FINISHED con outcome.type = "interrupt". La pantalla del usuario despliega el resumen del pedido y el humano autoriza la transacción mediante autenticación biométrica WebAuthn/Passkey en su Trusted Surface, generando el mandato en milisegundos.

B. Modo Totalmente Autónomo (Human-Not-Present)

En operaciones M2M (Machine-to-Machine) o AIOps de infraestructura, el usuario firma previamente un Intent Mandate Abierto con un presupuesto temporal (ej. 50 € diarios para balanceo de tráfico o compra de datos IoT). El agente ejecuta de forma autónoma sin despertar al operador humano. Si el coste de una transacción superase el saldo restante del mandato abierto, el agente no falla a ciegas: pausa su ejecución y escala la decisión al canal humano a través de AG-UI.

5. Implementación Práctica: Validación Criptográfica en Python

El siguiente código demuestra cómo un Credential Provider implementa en Python la validación del IntentMandate del usuario frente al CartMandate presentado por el agente antes de liberar los fondos:

# ap2_credential_provider.py
import hashlib
import json
import time
from typing import Dict, Any

class AP2CredentialProvider:
    def __init__(self, bank_id: str):
        self.bank_id = bank_id

    def calculate_cart_hash(self, cart_data: Dict[str, Any]) -> str:
        """Calcula el hash canónico del carrito para evitar manipulación de precios o ítems."""
        canonical_json = json.dumps(cart_data, sort_keys=True)
        return hashlib.sha256(canonical_json.encode('utf-8')).hexdigest()

    def evaluate_and_issue_payment_mandate(
        self,
        intent_mandate: Dict[str, Any],
        cart_mandate: Dict[str, Any]
    ) -> Dict[str, Any]:
        """
        Valida que el carrito satisfaga estrictamente el mandato de intención
        pre-firmado por el usuario humano.
        """
        limits = intent_mandate["credentialSubject"]["spendingLimits"]
        cart_subject = cart_mandate["credentialSubject"]
        
        # 1. Verificación de vigencia temporal (TTL)
        now_iso = time.strftime('%Y-%m-%dT%H:%M:%SZ', time.gmtime())
        if now_iso > intent_mandate["credentialSubject"]["validUntil"]:
            raise ValueError("[AP2_ERR_EXPIRED] El Intent Mandate del usuario ha expirado.")

        # 2. Verificación de comercio permitido
        merchant_id = cart_subject["payee"]["merchant_id"]
        allowed = any(
            pattern.replace("*.", "") in merchant_id 
            for pattern in limits["allowedMerchants"]
        )
        if not allowed:
            raise ValueError(f"[AP2_ERR_UNAUTHORIZED_MERCHANT] Comercio no autorizado: {merchant_id}")

        # 3. Verificación de divisa e importe máximo
        cart_total = cart_subject["cart_total"]
        if cart_total["currency"] != limits["maxAmount"]["currency"]:
            raise ValueError("[AP2_ERR_CURRENCY_MISMATCH] Discrepancia de divisas.")

        if cart_total["value"] > limits["maxAmount"]["value"]:
            raise ValueError(
                f"[AP2_ERR_OVER_BUDGET] Carrito ({cart_total['value']}€) excede límite ({limits['maxAmount']['value']}€)."
            )

        # 4. Generación inmutable del Payment Mandate
        cart_hash = self.calculate_cart_hash(cart_subject)
        payment_mandate = {
            "type": ["VerifiableCredential", "PaymentMandate"],
            "issuer": f"did:web:{self.bank_id}",
            "issuanceDate": now_iso,
            "credentialSubject": {
                "paymentTokenId": f"tok_{hashlib.md5(now_iso.encode()).hexdigest()[:8]}",
                "referencesCartHash": cart_hash,
                "merchantId": merchant_id,
                "authorizedAmount": cart_total,
                "oneTimeNetworkToken": "tok_virtual_dpan_single_use_4421"
            },
            "status": "APPROVED"
        }
        return payment_mandate

# Prueba de ejecución
if __name__ == "__main__":
    cp = AP2CredentialProvider(bank_id="bank.quijotech.com")

    # Mandato firmado por el usuario: máximo 50.00 EUR en cloud
    sample_intent = {
        "credentialSubject": {
            "spendingLimits": {
                "maxAmount": {"currency": "EUR", "value": 50.00},
                "allowedMerchants": ["*.hetzner.com", "ovh.com"]
            },
            "validUntil": "2026-12-31T23:59:59Z"
        }
    }

    # Carrito presentado por el agente: 34.20 EUR en Hetzner
    sample_cart = {
        "credentialSubject": {
            "payee": {"merchant_id": "robot.hetzner.com"},
            "cart_total": {"currency": "EUR", "value": 34.20},
            "line_items": [{"item": "Cloud CX22", "price": 34.20}]
        }
    }

    payment_mandate = cp.evaluate_and_issue_payment_mandate(sample_intent, sample_cart)
    print("Pago Autorizado con Éxito bajo Protocolo AP2:")
    print(json.dumps(payment_mandate, indent=2))

6. El Cuarteto de Protocolos Agénticos: MCP, A2A, AG-UI y AP2

Con la consolidación de AP2, la arquitectura de ingeniería agéntica alcanza su madurez definitiva, completando un sistema modular donde cada protocolo resuelve un vector de comunicación especializado:

Protocolo Capa / Eje Propósito Primario Gobernanza / Origen Estándar de Cable
MCP Southbound (Sur) Conectar el agente con herramientas, bases de datos y APIs locales. Anthropic / Open Source JSON-RPC 2.0 (stdio / SSE)
A2A East-West (Este-Oeste) Descubrimiento con Agent Cards y federación de tareas inter-agente. Linux Foundation / Google gRPC / JSON-RPC / REST
AG-UI Northbound (Norte) Streaming reactivo para la interfaz, estado JSON Patch y control humano. CopilotKit / Microsoft / Pydantic HTTP POST + SSE tipado
AP2 Transaccional (Comercio) Autorización no repudiable, mandatos criptográficos y pagos autónomos. FIDO Alliance / Google / Mastercard W3C Verifiable Credentials (JSON-LD)

7. Neutralidad Financiera: Rieles Bancarios y Criptográficos

Una ventaja fundamental de AP2 es su agnosticismo respecto al riel de liquidación subyacente:

  • Rieles Tradicionales (Cards & Banking): El Payment Mandate se traduce en un Network Token (Visa/Mastercard) de un solo uso o en una transferencia instantánea SEPA Request-to-Pay / FedNow, permitiendo la integración con el ecosistema bancario regulado sin fricción.
  • Rieles Cripto y Web3 (Smart Contract Wallets): En entornos descentralizados, el Payment Mandate se materializa como una transacción sobre Account Abstraction (ERC-4337) o una firma de transferencia en stablecoins (USDC en redes L2 de bajo coste como Base o Arbitrum), garantizando liquidación atómica en milisegundos.

8. Preguntas Frecuentes sobre el Protocolo AP2 (FAQ & AEO)

¿Qué evita que un agente gaste más dinero del debido si alucina?

El agente nunca tiene acceso directo a los fondos. La autoridad radica en el Intent Mandate firmado criptográficamente por el usuario en su dispositivo seguro (Trusted Surface). Cuando el agente solicita pagar, el Credential Provider (un software financiero determinista, no un LLM) evalúa matemáticamente que el carrito no rebase los límites. Si el modelo alucina un importe superior, la solicitud es rechazada en la pasarela bancaria.

¿Por qué AP2 se estandariza dentro de la FIDO Alliance?

Porque la FIDO Alliance es el organismo de referencia internacional en autenticación sin contraseñas (creadores de Passkeys y WebAuthn junto al W3C). La integración de AP2 en FIDO garantiza que los mandatos de gasto de los agentes se puedan firmar con la misma seguridad biométrica y criptográfica que hoy protege el inicio de sesión en dispositivos Apple, Android y Windows.

¿En qué se diferencia AP2 del protocolo A2A?

A2A define cómo conversan y se delegan trabajo dos agentes (mensajería, habilidades, tareas y estados). AP2 define cómo se autoriza y liquida una compra entre el comprador, el comercio y el sistema bancario. De hecho, en una transacción real, el Shopping Agent y el Merchant Agent dialogan a través del Protocolo A2A transportando mandatos AP2 en sus mensajes.

Guías Relacionadas en esta Serie (Topic Cluster)

Referencias y Fuentes Oficiales Tier 1