Integración con Mastra
Los agentes de Mastra cargan herramientas MCP con MCPClient de @mastra/mcp. Conéctalo a @burnbound/mcp y tu agente recibe fetch_paid y el resto de herramientas de Burnbound: puede pagar APIs x402 y reembolsar cargos de Stripe a través de tu gateway de acciones, y cada pago o reembolso se comprueba contra su política de Burnbound (hosts permitidos, máximo por pago, tope diario, aprobaciones) antes de que se mueva el dinero. La API del cliente sigue la referencia de MCPClient de Mastra y su introducción a MCP.
Esta página usa el servidor MCP porque el SDK de JavaScript de Burnbound todavía no está publicado en npm (consulta SDK). Todo lo que aparece aquí es un paquete publicado.
Instalación
npm install @mastra/core @mastra/mcp @burnbound/mcp
Probado con @mastra/core 1.74, @mastra/mcp 2.1 y @burnbound/mcp 0.3.1 en Node.js 22. El ejemplo usa el enrutador de modelos de Mastra con un modelo de Anthropic; sirve cualquier modelo que admita Mastra.
Necesitas una clave del agente (bb_agent_…) del panel de Burnbound, para un agente con sus topes, sus hosts permitidos y una cartera conectada. Primeros pasos lo deja listo.
Conecta las herramientas de Burnbound
import { Agent } from "@mastra/core/agent";
import { MCPClient } from "@mastra/mcp";
const burnbound = new MCPClient({
id: "burnbound",
servers: {
burnbound: {
command: "npx",
args: ["-y", "@burnbound/mcp@latest"],
env: { BURNBOUND_KEY: process.env.BURNBOUND_KEY! },
},
},
});
try {
const agent = new Agent({
id: "paying-agent",
name: "Paying agent",
instructions:
"Pay for APIs only with the burnbound_fetch_paid tool. Call burnbound_get_budget first. " +
"If a Burnbound tool returns an error, report its code instead of retrying.",
model: "anthropic/claude-opus-5-5",
tools: await burnbound.listTools(),
});
const result = await agent.generate(
"Find WETH pools on Ethereum with CoinGecko: GET " +
"https://pro-api.coingecko.com/api/v3/x402/onchain/search/pools?query=weth&network=eth " +
'with maxAmountUsd "0.02".',
);
console.log(result.text);
} finally {
await burnbound.disconnect();
}
El ejemplo paga a CoinGecko (0.01 USDC por llamada en Base la última vez que lo verificamos), así que pro-api.coingecko.com tiene que estar en los hosts permitidos del agente. Hay más vendedores en el catálogo de APIs x402.
Los nombres de las herramientas llevan el nombre del servidor
listTools() pone a cada herramienta el espacio de nombres serverName_toolName, así que el agente ve burnbound_fetch_paid, burnbound_get_budget, burnbound_list_payments, burnbound_get_approval_status, burnbound_search_paid_apis, burnbound_diagnose_payment, burnbound_propose_rule y burnbound_stripe_refund. Usa esos nombres en las instrucciones. Para elegir las herramientas en cada petición, listToolsets() devuelve las mismas herramientas para pasarlas a generate() o stream().
Pasa todas las variables de Burnbound en env
Mastra arranca los servidores stdio con una lista corta de variables de tu entorno (HOME, PATH, USER y unas pocas más), no con todo. Pon en env todas las variables BURNBOUND_* que necesite el servidor: BURNBOUND_KEY siempre, y BURNBOUND_WALLET_PROFILE si el agente firma con una cartera local que no es la predeterminada. La lista completa está en la referencia de herramientas MCP.
Cuando se rechaza un pago
Cuando Burnbound rechaza un pago, la llamada a la herramienta falla con un error cuyo mensaje es el JSON de error del servidor, por ejemplo {"error": {"code": "policy_denied", "reasons": ["amount_exceeds_per_transaction"], …}}. No se ha pagado nada. La política se mantiene decida lo que decida el modelo; la instrucción sobre los errores solo evita que el agente se quede en bucle ante un rechazo. Los pagos que necesitan a una persona, por ejemplo uno igual o superior al umbral de aprobación del agente o el primero a una dirección de cobro nueva, vuelven como pending_approval (un resultado normal, no un error); consulta Aprobación humana de los pagos de agentes con Slack para ver cómo reintentar.
Dónde puede ejecutarse
El servidor es un proceso hijo que se arranca con npx, así que necesita Node.js 20 o posterior en la máquina que ejecuta tu agente de Mastra, y no encaja en funciones serverless ni edge. Si el agente firma con una cartera local, la clave tiene que estar en el llavero de esa máquina o en ~/.burnbound; en un contenedor o un servidor compartido, mejor una cartera de Coinbase CDP. Consulta Carteras de agente: Coinbase CDP o una clave local.
Cómo se probó este ejemplo
Ejecutamos esta conexión de principio a fin con @burnbound/mcp 0.3.1: MCPClient listó las cinco herramientas, get_budget devolvió el presupuesto del agente y fetch_paid pagó a un vendedor de prueba en Base Sepolia (status: "paid"), ejecutando directamente los objetos de herramienta de Mastra. La llamada al agente es código estándar de Mastra.
Relacionado
- Vercel AI SDK y LangChain.js: el mismo servidor en otros frameworks.
- Cómo limitar el gasto de un agente de IA: todos los límites que aplica la política.
- Primeros pasos: crea el agente y su clave.