@OPEN402/SDK

Documentación del SDK

Una línea de código y tu agente puede pagar APIs vía x402, servicios mexicanos (CFE, Telmex, Telcel, Izzi) e invertir en CETES. Sin wallets. Sin llaves privadas. Sin fricción.

PAQUETES

Monorepo

@open402/agents

SDK principal. Cliente para crear agentes, gestionar pagos x402, pagar servicios MX y administrar créditos.

pnpm add @open402/agents
@open402/agentkit

Puente con Coinbase AgentKit. Provee AgentXActionProvider con 8 acciones (pay_bill, pay_x402, get_balance, get_history, add/remove_rule, invest_cetes, check_investment).

pnpm add @open402/agentkit
@open402/agent

Runtime para ejecutar agentes con CDP wallet + AgentKit + LangChain. Ideal para desplegar agentes autónomos.

pnpm add @open402/agent
@open402/db

Modelos Prisma y cliente de base de datos. Esquemas User, Agent, Wallet, Transaction, SpendingRule, CreditBalance.

pnpm add @open402/db
@open402/api

Tipos compartidos y utilidades de respuesta API. Interfaces AgenteXConfig, NetworkId, ApiResponse.

pnpm add @open402/api

QUICK START

Primeros pasos

Obtén tu API key en el dashboard y empieza en menos de 5 minutos.

Paso 1 — Instalar
pnpm add @open402/agents
Paso 2 — Configurar
import { AgentX } from '@open402/agents'; const agentx = await AgentX.create({apiKey: process.env.OPEN402_KEY,});
Paso 3 — Crear un agente
const agent = await agentx.createAgent('Mi Agente', {policy: {daily_cap_mxn: 2000, confirm_above_mxn: 800, services: ['cfe', 'telmex'],},});

EJEMPLOS

Uso del SDK

Crear un agente y pagar una API
import { AgentX } from '@open402/agents';

const agentx = await AgentX.create({
  apiKey: 'sk_...',
});

const agent = await agentx.createAgent('Mi Agente');

// Paga una API vía x402 (Arbitrum)
const result = await agent.payX402({
  url: 'https://api.coingecko.com/api/v3/simple/price?ids=bitcoin&vs_currencies=usd',
  method: 'GET',
});

console.log('Pagado:', result.cost, 'créditos');
Pagar un servicio mexicano
import { AgentX } from '@open402/agents';

const agentx = await AgentX.create({
  apiKey: 'sk_...',
});

const agent = await agentx.createAgent('Paga Luz');

// Paga CFE vía Prontipagos
const result = await agent.payService({
  provider: 'cfe',
  reference: '123456789',
  amount: 312.50,
});

console.log('Confirmación:', result.confirmationCode);
Agregar reglas de gasto
import { AgentX } from '@open402/agents';

const agentx = await AgentX.create({ apiKey: 'sk_...' });
const agent = await agentx.createAgent('Mi Agente');

// El agente nunca gastará más de 800 MXN por transacción
// ni pasará los 2000 MXN diarios sin confirmación
agent.addRule({
  service: 'cfe',
  maxAmount: 800,
  requiresConfirmation: true,
  confirmationThreshold: 600,
});
Integrar con AgentKit + LangChain
import { AgentX } from '@open402/agents';
import { AgentXActionProvider } from '@open402/agentkit';
import { AgentKit } from '@coinbase/agentkit';

const agentx = await AgentX.create({ apiKey: 'sk_...' });
const agent = await agentx.createAgent('AI Agent');

const agentKit = await AgentKit.from({
  actionProviders: [
    new AgentXActionProvider(agentx, agent),
  ],
});

// Ahora el LLM puede llamar herramientas como
// agentx_pay_bill, agentx_pay_x402, etc.
Invertir en CETES
import { AgentX } from '@open402/agents';

const agentx = await AgentX.create({ apiKey: 'sk_...' });
const agent = await agentx.createAgent('Inversor');

// Crea una orden de inversión en CETES
const result = await agent.investInCETES({ amountMXN: 500 });

console.log('CLABE:', result.depositClabe);
console.log('Order ID:', result.orderId);

// Consultar estado de la inversión
const status = await agent.checkInvestment(result.orderId);
console.log('Status:', status.status);

API

Clases principales

Todas las clases son importables desde @open402/agents.

AgentX

Punto de entrada del SDK. Configura la conexión con la API, maneja autenticación y crea agentes.

create(config)createAgent(name, config?)getAgent(id)listAgents()getBalance()purchaseCredits(request)payBill(request)payX402(request)
Agent

Representa un agente autónomo. Cada agente tiene su propia wallet (Agentic Wallet) y su policy engine.

payX402(request)payService(request)getBalance()getHistory(limit?)addRule(rule)removeRule(ruleId)listRules()investInCETES(request)checkInvestment(orderId)
AgentWallet

Wallet MPC del agente en Arbitrum o Base. Las claves viven en TEE (AWS Nitro Enclave). Nunca expuestas.

create(config, client?)import(config, address, client?)getBalance()sendMXM(to, amount)
PolicyEngine

Motor de reglas de gasto. Cada agente tiene su propia instancia. Las reglas son bloqueantes.

evaluate(action)addRule(rule)removeRule(ruleId)listRules()setDailyCap(amount)setPerTxLimit(amount)
ApiClient

Cliente HTTP interno para comunicarse con la API de open402. Usado por AgentX automáticamente.

createAgent(name)getBalance()purchaseCredits(input)payBill(agentId, request)payX402(agentId, request)investInCETES(input)checkInvestment(orderId)createWallet(networkId)getWalletBalance(address)transferMXM(from, to, amount)
X402PaymentHandler

Manejador del protocolo x402. Intercepta respuestas HTTP 402, extrae instrucciones de pago, ejecuta el pago via wallet.sendMXM() y reintenta la request original.

pay(request)parsePaymentRequired(header)executePayment(payload)
BillPaymentHandler

Manejador de pagos de servicios mexicanos via Prontipagos API. Soporta CFE, Telmex, Telcel, Izzi y 400+ servicios.

pay(provider, reference, amount)getProviders()checkStatus(transactionId)

POLICY ENGINE

Reglas de gasto

Define qué puede gastar tu agente, cuánto y cuándo. Las reglas son bloqueantes — el agente nunca las viola.

SpendingRule
interface SpendingRule {
  id: string;
  service: string;          // 'cfe' | 'telmex' | 'telcel' | 'izzi' | '*'
  maxAmount: number;        // Monto máximo MXN por transacción
  requiresConfirmation: boolean;
  confirmationThreshold?: number;  // Pide confirmación sobre este monto
  schedule?: {
    type: 'monthly' | 'weekly' | 'one-time';
    day?: number;           // Día del mes (monthly)
    time?: string;          // '09:00'
  };
  notification?: {
    channels: ('telegram' | 'email')[];
    notifyBeforeDays?: number;
  };
}