Session-based micropayments via Tempo blockchain, co-authored by Stripe and Tempo.
Flow
Agent sends request with no auth header
Server returns HTTP 402 with both x402 and MPP payment challenges
Agent authorizes payment via Tempo wallet
Agent retries with Authorization: Payment <credential> header
Server verifies via mppx SDK, processes request, returns receipt in Payment-Receipt header
Install Tempo CLI
bash
# Install the Tempo launchercurl -fsSL https://tempo.xyz/install | bash# Or install binaries directlycurl -sL https://github.com/tempoxyz/wallet/releases/latest/download/tempo-wallet-$(uname -s | tr A-Z a-z)-$(uname -m | sed 's/x86_64/amd64/') -o ~/.tempo/bin/tempo-walletcurl -sL https://github.com/tempoxyz/wallet/releases/latest/download/tempo-request-$(uname -s | tr A-Z a-z)-$(uname -m | sed 's/x86_64/amd64/') -o ~/.tempo/bin/tempo-requestchmod +x ~/.tempo/bin/tempo-*# Set up your wallet (opens browser for passkey auth)tempo wallet login# Fund your wallettempo wallet fund
tempo request -X POST \ --json '{"model": "deepseek-v3.2", "messages": [{"role": "user", "content": "Write a haiku"}], "max_tokens": 50, "stream": true}' \ https://api.surplusintelligence.ai/v1/chat/completions# List active sessionstempo wallet sessions list# Close session and settle on-chaintempo wallet sessions close https://www.surplusintelligence.ai
Available Models
Live model list with current prices: GET https://api.surplusintelligence.ai/v1/models
Or browse: GET https://api.surplusintelligence.ai/v1/prices
How It Differs from x402
x402
MPP
Chain
Base (USDC)
Tempo
Settlement
One on-chain tx per request
Session-based, bulk settlement
Best for
Single requests, simple agents
Streaming, high-frequency calls
Both protocols are advertised in the same 402 response — agents pick their preferred protocol.
Pricing
Agents are pre-charged based on max_tokens. Set max_tokens to the minimum you need to avoid overpaying. The cost estimate is shown in the 402 challenge response.
Configuration (Server)
The MPP server uses the operator wallet as the payment recipient. The challenge-signing secret is loaded from AWS Secrets Manager via the MPP_SECRET_ARN environment variable.