// Blog

Technical notes for AI agent builders

Tutorials, comparisons and design patterns for building autonomous agents that self-fund, call 345+ models and orchestrate MCP Tools.

One schema, four dialects: auditing structured outputs for agents

Agents rely on strict: true to get JSON that parses and matches the schema. OpenAI, Anthropic and Gemini each accept a different subset of JSON Schema: minimum is enforced by two and a 400 on the third, recursion works on two and fails on Anthropic, and Gemini's own example schema is rejected by both others. Anthropic's OpenAI-compatible endpoint ignores response_format and strict entirely, Ollama and vLLM never read the flag, LiteLLM turns unsupported constraints into descriptions without re-validating by default, and OpenRouter routes a fallback model even when it will ignore the schema. Locally, Ollama 0.30.6 enforced 12 of 16 keywords and silently dropped multipleOf, format email, uniqueItems and allOf, all with HTTP 200, while the enforced ones made the model answer green when told blue. Our own x402 quote ignores the schema: a 154 KB request that is almost all schema is quoted the same $0.01 as one with no schema, while the same text in the message is quoted $0.09. Seven steps for a gateway that sells a guarantee it can keep.

19 min read →

Paying for thoughts you never see: reasoning tokens and the reserve

Reasoning models bill for text nobody reads. OpenAI, Anthropic and Google all charge hidden reasoning as output and count it against the same cap as the answer, and when the cap runs out mid-thought the agent pays for an empty response. On Claude Opus 5.5 and Fable 5.1 thinking cannot be turned off at all, and GPT-6 Astra returns HTTP 400 for effort none. We traced one value, reasoning_effort high, through OpenAI, Gemini's and Anthropic's compatibility layers, LiteLLM, OpenRouter and Ollama and got seven different behaviors, from a 4,096-token budget to silently ignored. Locally, a six-character answer cost 917 output tokens with thinking on and 38 with it off; a 256-token cap returned nothing and billed all 256. Then we probed our own x402 walk-up quote: it reads max_tokens but ignores max_completion_tokens, is not clamped to the model's output limit, and quotes an unknown model. What a pay-per-call gateway owes its agents: reasoning tokens on the receipt, an honest effort table, a reasoning floor, and upto settlement.

16 min read →

Agentic week: what the server gets to decide

Between 25 September and 2 October, Cloudflare opened its Monetization Gateway beta and started charging per inference over x402. From Finland, though, the x402 path answers 403 before it ever shows a price. Solana got x402 batch-settlement, including a mode where the seller signs the meter and can take up to the full deposit. A pull request found that the x402 paywall had shipped a May build in every release since, which we confirmed in the published 2.28.0 package. And the MCP Python and TypeScript SDKs fixed OAuth clients that let a server choose where credentials went. In every case, the open question is what the client lets the server decide.

14 min read →

Auditing Open Responses: passing the suite isn't honoring the spec

Open Responses is the multi-provider spec built on OpenAI's Responses API, backed by Ollama, vLLM, OpenRouter, Hugging Face and others. We read both releases, the OpenAPI and the 17-test compliance suite, ran it against Ollama 0.30.6, then sent the requests it never sends. Six of the 16 server tests passed, nothing from the April release did, and the server silently ignored allowed_tools, tool_choice, truncation: "disabled" and previous_response_id, answering 200 every time. The spec also has no cache-write tokens, no cost field and no 402, and its WebSocket mode does not fit per-call x402.

15 min read →

Auditing Nevermined's nvm:erc4337: x402 with an off-chain meter

Nevermined's nvm:erc4337 scheme puts credits, plans and ERC-4337 session keys behind x402's headers. We read the spec, both SDKs and the contracts, probed the live facilitator, and censused every live plan and every event of the registry, agreement, credit and vault contracts on Base and Tempo, plus a 30-day sandbox sample. The 402 carries no amount, the access token is minted and signed by Nevermined's backend, the default token is a reusable bearer credential, and 372 of 373 live plans keep the credit ledger off-chain: 37 on-chain burns in ten and a half months, the last on 28 April.

16 min read →

Auditing World AgentKit: proof of human for x402 agents

AgentKit lets an x402 server cap free access per unique human instead of per wallet, using World ID and an on-chain registry called AgentBook. We read the contract and SDK, censused every registration on World Chain and Base, and ran the published packages locally. The cryptography holds. The humanId is one public pseudonym across every site, registration needs no consent from the agent, the client signs challenges for any origin, and the free-trial counter can be multiplied by respelling the path.

16 min read →

Squads and Swig can pay x402 now: auditing Solana's smart-wallet path

Since May, the x402 exact scheme on Solana has an opt-in second verification path that lets smart wallets pay through a CPI transfer. On Solana that means the wallet's own spending limits run inside the payment, something EVM x402 cannot do. We audited the spec, the TypeScript and Go facilitators, and three live deployments, and found a phantom allowlist entry, an inverted fee ceiling and diverging sponsor policies.

16 min read →

Smart Sessions vs x402: where ERC-7579 session keys meet the payment

Rhinestone and Biconomy's Smart Sessions is the leading session-key module for ERC-7579 smart accounts. It offers exactly the primitives an x402-paying agent needs. But it was built for the ERC-4337 userOp world, and x402 settlement lives in two places it only half-covers. We read the deployed contracts and audits to find the gaps.

14 min read →