// Blog

Notas técnicas para builders de agentes IA

Tutoriales, comparativas y patrones de diseño para construir agentes autónomos que se autofinancian, llaman a 345+ modelos y orquestan MCP Tools.

Policy engines de Privy y Turnkey vs x402: lo que ve el signer

Las wallets gestionadas prometen que un policy engine en el enclave limita lo que un agente puede firmar. Un pago x402 nunca llega a ese engine como transacción: es un mensaje de typed data EIP-3009 o Permit2 cuya forma en el cable depende del adapter. Corrimos @x402/evm 2.28.0 contra backends simulados de Turnkey y Privy y leímos ambos lenguajes de policies. La ruta x402 documentada por Turnkey envía un domain EIP-712 vacío, un bug que describe su propio PR en borrador. Las reglas de typed data de Privy exigen que el mapa de types coincida exactamente, o una regla DENY deja de dispararse en silencio. Ninguno de los dos engines puede llevar un presupuesto x402 acumulado ni acotar la ventana de validez respecto de ahora. Más policies listas para probar para pagarle a LLM4Agents, qué significa para nosotros y seis pasos.

18 min de lectura →

El 402 es un prompt: la metadata de x402 como canal de inyección

Cuando el modelo de un agente lee un 402, el vendedor está escribiendo en su ventana de contexto. La spec de x402 limita serviceName y tags, y la spec del Bazaar llama al facilitator una frontera de confianza, pero description, error y los ejemplos de extensiones no tienen regla, y el transporte MCP exige el 402 en contenido visible para el modelo. Leímos @x402/mcp, Cloudflare Agents y Coinbase AgentKit: Cloudflare aplica su propio tope sobre el requirement que efectivamente se firma, mientras AgentKit chequea su tope configurable contra un monto que tipea el modelo, y deja el default de $1 del SDK como único límite que ata. Contamos 32,127 listings del Bazaar: el 7.1% está escrito como descripción de tool, dirigido al modelo que elige tools, y nueve traen payloads de inyección literales como ejemplos de herramientas de seguridad. Una pequeña prueba con dos modelos locales: ninguna corrida pagó sin preguntar, pero un modelo le dijo al usuario que el pago ya estaba preaprobado por su propia política, y un listing inyectado ganó una llamada 50 veces más cara. Más lo que significa para LLM4Agents y seis pasos.

18 min de lectura →

Semana agentic: confianza, no prueba

Entre el 2 y el 9 de octubre, el scheme batch-settlement de x402 llegó a producción en Solana mainnet en un modo donde el vendedor firma el medidor. El router del lado del agente que lo integró respondió leyendo la cuenta del canal directamente y comparando lo reclamado contra lo que firmó. Tres fixes del SDK hicieron el mismo movimiento, sacando la baseline cobrada del voucher del cliente para leerla del estado on-chain, mientras la spec ahora dice que el precio del propio resource server MUST NOT be trusted. auth-capture v1.1 aterrizó en ambos SDKs junto con un modo donde el facilitator firma el consentimiento del receptor. Y los MCP Server Cards quedaron Final mientras el repo que guarda su schema normativo sigue llamándose experimental.

15 min de lectura →

Wallets de agente de Crossmint: dónde el tope de gasto toca x402

Crossmint vende wallets de agente con tope de gasto, contrapartes permitidas y ventana de tiempo, aplicados onchain. Leímos los docs, @crossmint/wallets-sdk 1.20.0, la app de referencia M2M Payments y el contrato open source de Crossmint para Stellar, para ver dónde ese tope alcanza a un pago x402. La primitiva existe, como signer scopes. Pero las guías de agentes y la app de referencia registran la key del agente sin scopes, no se pueden agregar scopes a un signer ya aprobado y, en EVM, un pago x402 EIP-3009 llega a la wallet solo como un staticcall a isValidSignature sobre un hash de 32 bytes, un camino que no puede llevar un total acumulado. En Stellar, Soroban le entrega a la cuenta la llamada transfer completa y la policy de Crossmint aplica el tope acumulado. Más lo que significa para quien vende inferencia a compradores con smart accounts, y seis pasos.

16 min de lectura →

Cotizado en caracteres, cobrado en tokens: auditamos nuestro 402

Un precio LLM de pago por llamada debe fijarse antes de que corra el modelo, así que el lado del input es una estimación. La nuestra, confirmada sondeando nuestro propio 402 y leyendo nuestro código, es ceil(JSON.stringify(messages).length / 4): unidades UTF-16, con los escapes JSON contados doble. Pasamos la Declaración Universal de Derechos Humanos en 15 idiomas y un conjunto de payloads de agentes por o200k, cl100k, Qwen3, DeepSeek-V3.1, GLM-4.6 y Tekken de Mistral. El inglés se sobrecuenta entre 30 y 33% en todos los tokenizers; el español queda cerca del equilibrio; el chino, el japonés y el coreano se subcuentan entre 2 y 4.5x; el hindi y el bengalí hasta 4.85x. Hashes de transacciones, direcciones, firmas base64 y recibos reales de Base quedan entre 1.6 y 3.5x por debajo, y un texto vietnamita descompuesto cuesta hasta 3x su gemelo compuesto. Una imagen de 1000x1000 se sobrecuenta 17.9x, así que diez de ellas cotizan $1.13 por una llamada de 8 centavos, por encima del límite de $1 por defecto del SDK de x402. Rastreamos quién absorbe cada error en nuestros tres caminos de cobro y proponemos siete pasos para que el 402 sea la factura.

16 min de lectura →

Tool calls en una cadena de fallback: qué se rompe y qué miente

Los agentes con tool calling arrastran estado específico de cada provider en cada paso: semántica de tool_choice, reglas de llamadas paralelas, call IDs, nombres de tools y razonamiento firmado. Lo rastreamos en OpenAI, Anthropic, Gemini y Mistral y en cuatro capas de traducción. Claude Opus 5.5, Sonnet 5.5, Fable 5.1 y Mythos 5.1 devuelven 400 ante forced tool use; Gemini 3 devuelve 400 cuando al turno actual le faltan sus thought signatures; los validadores v3 a v11 de mistral-common rechazan cualquier call ID que no sea de nueve letras y dígitos, lo que atrapa a los propios IDs de Ollama incluso después de que vLLM los recorta. En local, Ollama 0.30.6 ignoró tool_choice none, required, una función forzada y parallel_tool_calls false, todo con HTTP 200. Claude descarta thinking blocks entre modelos y cuentas, y editar tools a mitad de sesión los invalida. Nuestra propia cotización x402 cobra los tool results pero no las definiciones de tools, y emite un 402 para requests que el upstream documenta como inválidos. Siete pasos para un gateway cuyo fallback sobreviva a un tool loop.

22 min de lectura →

Un schema, cuatro dialectos: auditamos los structured outputs

Los agentes confían en strict: true para obtener JSON que parsee y cumpla el schema. OpenAI, Anthropic y Gemini aceptan cada uno un subconjunto distinto de JSON Schema: minimum se aplica en dos y es un 400 en el tercero, la recursión funciona en dos y falla en Anthropic, y el propio schema de ejemplo de Gemini es rechazado por los otros dos. El endpoint compatible con OpenAI de Anthropic ignora response_format y strict por completo, Ollama y vLLM nunca leen el flag, LiteLLM convierte las restricciones no soportadas en descripciones sin revalidar por defecto, y OpenRouter enruta a un modelo de fallback aunque vaya a ignorar el schema. En local, Ollama 0.30.6 aplicó 12 de 16 keywords y descartó en silencio multipleOf, format email, uniqueItems y allOf, todo con HTTP 200, mientras los aplicados hicieron que el modelo respondiera green cuando se le dijo blue. Nuestra propia cotización x402 ignora el schema: un request de 154 KB que es casi todo schema se cotiza a los mismos $0.01 que uno sin schema, mientras el mismo texto en el mensaje se cotiza a $0.09. Siete pasos para un gateway que venda una garantía que pueda cumplir.

19 min de lectura →

Pagar por pensamientos que no ves: reasoning tokens y la reserva

Los modelos de reasoning cobran por texto que nadie lee. OpenAI, Anthropic y Google cobran el reasoning oculto como output y lo descuentan del mismo tope que la respuesta, y cuando el tope se agota a mitad del razonamiento el agente paga por una respuesta vacía. En Claude Opus 5.5 y Fable 5.1 el thinking no se puede apagar, y GPT-6 Astra devuelve HTTP 400 para effort none. Rastreamos un solo valor, reasoning_effort high, por OpenAI, las capas de compatibilidad de Gemini y Anthropic, LiteLLM, OpenRouter y Ollama, y obtuvimos siete comportamientos distintos, desde un budget de 4.096 tokens hasta ser ignorado en silencio. En local, una respuesta de seis caracteres costó 917 output tokens con thinking y 38 sin él; un tope de 256 tokens no devolvió nada y cobró los 256. Después sondeamos nuestra propia cotización walk-up de x402: lee max_tokens pero ignora max_completion_tokens, no está acotada al límite de output del modelo y cotiza un modelo inexistente. Lo que un gateway de pago por llamada les debe a sus agentes: reasoning tokens en el recibo, una tabla de effort honesta, un piso de reasoning y settlement upto.

16 min de lectura →