Verified on Algorand mainnet

Mandate Flow — Mainnet Test

Autonomous USDC micropayments via AVM mandate contract — non-custodial, zero human approval

What this demonstrates

AVM-enforced limits

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.

Non-custodial keys

Each agent generates and holds its own signing key. No rekeying, no custody service. The mandate delegates authority without transferring ownership.

Optimistic broadcast

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.

x402 protocol

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.

Per-payment results

Report unavailable

Test methodology

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.

Network

Algorand mainnet

Protocol

x402 over HTTP

Mandate contract

App 3498110794

Integrate in minutes

TypeScript SDK
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({ ... }),
});

x402 HTTP flow

  1. 1.Agent calls endpoint → server returns 402 Payment Required
  2. 2.Client signs an Algorand USDC transfer, attaches as x-payment header
  3. 3.Server validates mandate limits via AVM, broadcasts transaction
  4. 4.HTTP 200 + response payload returned in ~734ms
  5. 5.On-chain confirmed in ~3.3s, verifiable on Pera Explorer

Native Claude integration

Add the MCP server to Claude Desktop — no payment code required.

MCP setup guide →