Carteras de agente: Coinbase CDP o una clave local
Un agente que paga APIs x402 necesita una cartera que firme autorizaciones de transferencia de USDC. Dónde está la clave de esa cartera decide lo que una política de gasto puede hacer cumplir de verdad. Esta guía compara los dos modos que admite Burnbound, una cartera de Coinbase CDP y una clave en tu propia máquina, y explica sin rodeos de qué no protege cada uno. Solo las APIs de pago necesitan cartera: los reembolsos se hacen en tu cuenta de Stripe y las tarjetas en tu saldo de Stripe Issuing.
Burnbound nunca guarda la clave privada de una cartera ni custodia fondos, en ninguno de los dos modos. Los pagos van de tu cartera al vendedor.
La respuesta corta
- Usa Coinbase CDP si el agente puede ejecutar comandos de shell (Claude Code, Cursor, cualquier agente de programación), funciona sin supervisión o necesitas que la política se cumpla aunque el agente se porte mal. El agente nunca tiene nada con lo que firmar.
- Usa una clave local si quieres la clave en tu propia máquina, sin nadie más implicado en la firma, y aceptas que un agente con acceso a la shell de esa máquina podría saltarse la política.
Cómo firma cada modo
| Coinbase CDP | Clave local (firma en el cliente) | |
|---|---|---|
| Dónde está la clave privada | En Coinbase, en tu cartera CDP | En tu máquina: el llavero del sistema o un archivo que solo lee tu usuario |
| Qué guarda Burnbound | Tus credenciales de la API de CDP, cifradas (AES-256-GCM) | La dirección pública de la cartera |
| Quién firma un pago permitido | Coinbase, cuando Burnbound se lo pide | El servidor MCP en tu máquina, después de que Burnbound lo permita |
| ¿Puede Burnbound hacer firmar un pago? | Sí, a través de CDP, para los pagos que su política permite | No |
| ¿Puede el agente firmar por su cuenta? | No | Sí, si puede leer la clave |
| Cumplimiento | Fuerte | Cooperativo |
mode en los resultados de fetch_paid |
server_signed |
client_signs |
Coinbase CDP: el agente no tiene nada que firme
Creas una cartera en Coinbase Developer Platform y pegas en el panel de Burnbound su API key ID, API key secret, wallet secret y dirección. Cuando un pago cumple la política del agente, Burnbound pide a CDP que lo firme y devuelve el payload firmado al servidor MCP, que lo envía al vendedor.
De qué protege: en la máquina del agente solo está la clave del agente (bb_agent_…). Esa clave puede pedir a Burnbound que autorice un pago, pero cada petición pasa por la política, y la clave no puede cambiar la política, subir un tope ni aprobar un pago. Un agente que lea todos los archivos de la máquina sigue sin encontrar nada que pueda mover USDC.
En qué confías: Burnbound guarda credenciales que pueden pedir firmas. Se guardan cifradas en reposo, se descifran solo para pedir una firma y nunca vuelven a mostrarse ni las devuelve la API. Aun así son potentes, así que trata la cartera de CDP como una cartera de gasto: guarda en ella solo lo que tus agentes deberían poder gastar.
Clave local: tu máquina, tu firma
Creas la cartera en tu máquina y registras solo su dirección:
npx -y @burnbound/mcp@latest wallet init
La clave privada se guarda en el llavero de macOS, en el Secret Service de Linux (GNOME Keyring, KWallet) cuando hay un bus de sesión disponible o, si no, en un archivo de ~/.burnbound/wallets/ que solo puede leer tu usuario. Nunca está en la configuración MCP ni en el entorno, y nunca se envía a Burnbound.
Cuando un pago cumple la política, Burnbound devuelve exactamente lo que hay que firmar: la oferta del propio vendedor, un nonce derivado del pago y una ventana de validez corta. Antes de firmar, el servidor MCP comprueba que la cartera local es la registrada para el agente, que la oferta pertenece al host que la pidió, que el importe no supera el maxAmountUsd de la llamada y que la ventana es de 300 segundos como máximo. Solo firma una TransferWithAuthorization de USDC en Base o Base Sepolia o, en un agente con MPP activado, una transacción tempo.charge en USDC.e en Tempo.
De qué protege: Burnbound no puede hacer firmar nada. Si alguien comprometiera Burnbound, solo tendría tu dirección.
El límite cooperativo de una clave local
Esta es la parte en la que hay que ser honestos. La firma en el cliente solo funciona mientras el agente pase por el servidor MCP. Un proceso que se ejecuta con tu usuario puede leer lo que lee tu usuario: un agente que pueda ejecutar comandos de shell en la máquina podría leer la clave del llavero o del archivo de la cartera y firmar una transferencia sin preguntar a Burnbound.
El servidor MCP lo pone más difícil, no imposible:
- la clave se carga solo en el primer
fetch_paid, nunca en las herramientas de solo lectura; - cada petición a Burnbound y a los vendedores se revisa en busca de la clave, y se bloquea si aparece;
- el servidor no arranca si una variable
BURNBOUND_*parece una clave privada; wallet exportimprime la clave solo en una terminal interactiva, después de que escribas la dirección para confirmar.
Con Claude Code también puedes quitarle al agente las vías habituales para leer la clave, en .claude/settings.json. Estas reglas reducen los accidentes; no son un sandbox:
{
"permissions": {
"deny": [
"Read(~/.burnbound/**)",
"Edit(~/.burnbound/**)",
"Bash(security find-generic-password:*)",
"Bash(security dump-keychain:*)",
"Bash(secret-tool lookup:*)",
"Bash(npx -y @burnbound/mcp@latest wallet export:*)",
"Bash(npx -y @burnbound/mcp wallet export:*)",
"Bash(burnbound-mcp wallet export:*)"
]
}
}
Detectar gasto fuera de la política
En las carteras locales, Burnbound vigila la dirección on-chain y registra un evento payment.out_of_policy cuando sale USDC (o USDC.e en Tempo) de ella sin un pago correspondiente que haya permitido: una autorización de transferencia con un nonce desconocido, una enviada a otro payee o por otro importe, un transfer() sin más, o un approve()/permit() que concede una asignación (allowance). El evento aparece en la auditoría y como aviso en la página del agente, normalmente en pocos minutos. Lo detecta a posteriori; no puede bloquear ni revertir la transferencia.
En los dos modos: mantén el saldo pequeño
El saldo de la cartera es el techo real de lo que un agente que se porta mal puede gastar fuera de la política. Con una clave local, un agente que lea la clave puede gastarse la cartera entera; en cualquier modo, una cartera con el gasto de una semana pierde como mucho el gasto de una semana.
- Recárgala con el gasto previsto de unos pocos días y vuelve a recargarla cuando haga falta. Las llamadas x402 suelen costar céntimos: consulta los precios actuales en el catálogo de APIs x402.
- No guardes ETH en una cartera local. Los pagos x402 no lo necesitan y, sin él, la cartera no puede enviar por sí misma una transacción normal.
- Usa una cartera por agente (
--profile <name>en las carteras locales), para que un problema en una no llegue a las demás.
Mezclar modos entre agentes
Cada agente de Burnbound tiene su propia conexión con una cartera, su propia política y sus propias claves. Puedes darle una cartera de CDP a un agente que funciona sin supervisión y una clave local a un agente que vigilas desde tu mesa, y los dos aparecen en el mismo panel y en la misma auditoría.
Para saber más
- El modelo de confianza completo: Seguridad.
- Los modos de firma, en formato de referencia: Conceptos.
- Configura un agente con cualquiera de los dos modos: Primeros pasos.