Autonomous USDC micropayments via AVM mandate contract — non-custodial, zero human approval
100/100
Payments confirmed
5 agents × 20 payments
642ms
Enqueue p50
fire → HTTP 200 (optimistic)
5.5s
Confirm p50
fire → on-chain confirmed
53.1 tx/min
Throughput
parallel mandate streams
Per-payment caps and velocity windows are enforced directly by the mandate smart contract on Algorand's AVM — not server policy. Spending rules can't be overridden by the API host.
Each agent generates and holds its own signing key. No rekeying, no custody service. The mandate delegates authority without transferring ownership.
The API returns HTTP 200 once the transaction is broadcast (< 1s). On-chain confirmation follows asynchronously in ~3–4s. High-throughput agents don't block on Algorand round times.
Payments travel as a standard HTTP header (x-payment). Any x402-aware API endpoint becomes instantly payable — no per-integration billing setup, no OAuth, no card rails.
Enqueue latency — fire → HTTP 200
Confirm latency — fire → on-chain
Each test fires 5 sequential payments through a single mandate-registered agent using the @algo-wallet/x402-client SDK. The agent holds its own signing key — no custody service is involved.
Each payment hits a live x402-protected endpoint. The server validates the x402 proof, checks the mandate contract via AVM, and submits an atomic USDC transfer to Algorand mainnet using optimistic broadcast: the HTTP response returns immediately after the transaction is accepted by the node, not after confirmation. A background worker polls for on-chain finality.
Payments are 0.01 USDC (10,000 µUSDC) each, including the x402 toll. The mandate contract enforces per-payment caps on-chain — the API server cannot authorise payments beyond the limits set in the AVM contract.
import { AlgoAgentClient } from "@algo-wallet/x402-client";
const client = new AlgoAgentClient({
baseUrl: "https://api.ai-agentic-wallet.com",
privateKey: account.sk, // agent-held key
mandateAppId: MANDATE_APP_ID, // from /api/agents/create-mandate
});
// AVM enforces spend limits — no server trust needed
const res = await client.fetch("/your/api", {
method: "POST",
body: JSON.stringify({ ... }),
});402 Payment Requiredx-payment headerAdd the MCP server to Claude Desktop — no payment code required.
MCP setup guide →