What is MPP?

MPP, the Machine Payments Protocol, is an open, IETF-track standard that lets software pay for web services per request through HTTP's native authentication headers. A paid endpoint answers with 402 Payment Required and a WWW-Authenticate: Payment challenge; the client answers with a signed stablecoin payment; the server verifies, settles on chain, and returns a signed receipt.

No accounts, no API keys, no subscriptions. For the broader story of why machine payments exist and how x402 fits alongside MPP, see What is x402? MPP is one of the two wires underneath Agentic Finance; the vocabulary (challenge, credential, receipt, facilitator, settlement) is defined in the glossary.

ON THIS PAGE
01 / THE HANDSHAKE

How one MPP payment works.

Two HTTP round trips, typically a couple of seconds. Because it rides the standard WWW-Authenticate / Authorization machinery defined in RFC 9110 - the same one behind every login prompt on the web - payment becomes just another HTTP auth scheme.

01

The client requests a paid resource

A plain HTTP request, no credentials attached. The server answers 402 Payment Required with a WWW-Authenticate: Payment challenge naming the price, the asset, the chain, and a one-time challenge id.

02

The client signs and retries

It signs a payment authorization for exactly that amount with its own wallet key and repeats the identical request, carrying the signed credential in an Authorization: Payment header. The key never leaves the client.

03

The server verifies, runs, then settles

The credential is checked against the challenge, the request runs, and the payment settles only when the response succeeds, so a failed call is not charged. The exception is a Tempo credential the client broadcast itself (push mode): that transfer is already on chain before the request runs.

04

The response carries a receipt

A signed Payment-Receipt header returns with the result - a verifiable record that this exact payment bought this exact answer.

●on the wire
# 1. the client asks, without paying
POST /api/hash

# 2. the server quotes a price (one challenge per method and chain)
HTTP/1.1 402 Payment Required
WWW-Authenticate: Payment id="8w5V62E3…", realm="agent402.tools",
  method="evm", intent="charge", request="eyJhbW91bnQiOiIxMDAwIi…",
  expires="…", opaque="eyJ4NDAyIjoi…"

# 3. the client signs and retries
POST /api/hash
Authorization: Payment eyJjaGFsbGVuZ2UiOn…

# 4. verified, the handler runs, then the payment settles
HTTP/1.1 200 OK
Payment-Receipt: eyJtZXRob2QiOiJldm0i…
{ "algo": "sha256", "hex": "…" }
02 / COMPARISON

MPP vs x402, side by side.

Two dialects of the same idea: pay-per-request over HTTP 402, settled in stablecoins, no accounts. They differ in which headers carry the handshake, not in economics. A server can speak both from the same URL at the same price - that is how Agent402 runs today, one paywall, two wire formats. Settlement itself now branches: MPP's evm method still shares x402's exact settlement path, but Agent402 also speaks MPP's own tempo method natively - a genuinely separate settlement mechanism (Tempo's own relay), not a translation of the other two. (Facilitator, settlement and receipt are defined in the glossary.)

 x402MPP
Payment terms ride inPAYMENT-REQUIRED header (base64 JSON offer)WWW-Authenticate: Payment challenge
Payment rides inX-PAYMENT headerAuthorization: Payment header
Proof of settlementPAYMENT-RESPONSE headerSigned Payment-Receipt header
OriginCoinbase (x402.org)Tempo (paymentauth.org, IETF-track)
SettlementEIP-3009 stablecoin authorization, verified by a facilitatorDepends on the method: MPP's evm method settles identically (EIP-3009, same facilitator); its tempo method settles natively via Tempo's own relay - a different mechanism entirely, same price
03 / IS IT REAL?

Where MPP settles today.

Every paid endpoint on Agent402.Tools is dual-stack: the same 402 carries an x402 offer and an MPP challenge, a stock mppx client works unmodified, and a real purchase settles over the native MPP wire every day as part of the service's paid canary - so "MPP works here" is continuously re-proven on mainnet, not demonstrated once. Other x402 sellers have begun advertising MPP as an alternate rail as well.

Reference tooling: tempoxyz/mpp on GitHub. Spec: the Payment auth scheme at paymentauth.org.

04 / START HERE

New to MPP? Try these routes first.

20 fast, low-priced routes across web search, crypto and market data, macro and SEC filings, DNS and network, weather and utilities. Every one answers in one call, returns JSON, and the routes offer the tempo challenge (USDC.e on Tempo) as well as the evm one. The same list is in /llms.txt and marked x-mpp-flagship in /openapi.json.

RoutePriceWhat it returns
GET /api/search-lite$0.008Web search: up to five ranked results with title, URL and snippet.
POST /api/extract$0.010Read one known URL as clean markdown, with title, byline and word count.
GET /api/crypto-price$0.001Spot price, 24h change, volume and market cap for several coins in one call.
POST /api/sol-price$0.001USD price for up to 50 Solana token mints, with liquidity and the block read.
POST /api/perp-funding$0.002Current perpetual funding rate, annualized, plus recent hourly prints.
POST /api/defi-yields$0.002DeFi yield pools filtered by chain, project, token and TVL, sorted by APY or TVL.
POST /api/kalshi-markets$0.002Open prediction markets with yes/no prices, volume and resting size at the best price.
GET /api/fx-rate$0.002Convert an amount between two currencies at the reference rate, with its date.
GET /api/treasury-yield-curve$0.005The latest US Treasury yield curve, eleven tenors in percent.
GET /api/unemployment-rate$0.005Latest US unemployment rate plus a trailing monthly series.
GET /api/edgar-company-lookup$0.001Resolve a stock ticker to its SEC CIK and registered name, the key to every EDGAR call.
GET /api/dns$0.001DNS records for a domain: A, AAAA, MX, TXT, NS or CNAME.
POST /api/asn-info$0.001ASN, prefix, country and registry for an IP address or hostname.
POST /api/tls-cert$0.001A host's TLS certificate: issuer, validity window, days left, SANs.
GET /api/weather-current$0.002Current conditions anywhere on Earth, metric or imperial.
GET /api/block-number$0.001Latest block number on Ethereum, Base, Polygon, Arbitrum or Optimism.
POST /v1/judge$0.001A typed judgment about any content (choice, score or yes/no) with probabilities; model-backed.
POST /api/time-convert$0.001Convert between epoch, ISO 8601 and any IANA timezone.
POST /api/hash$0.001SHA-256, SHA-512, SHA-1 or MD5 of a text, in hex and base64.
GET /api/uuid$0.001Fresh UUIDs (v4 or v7): the simplest paid call to test an MPP client.
pay GET /api/crypto-price with mppx
import { Mppx, tempo, evm } from "mppx/client";
import { privateKeyToAccount } from "viem/accounts";

const account = privateKeyToAccount(process.env.AGENT_KEY);
const mppx = Mppx.create({ methods: [tempo.charge({ account }), evm.charge({ account })] });

// $0.001 per call; the first request returns 402, mppx pays and retries.
const res = await mppx.fetch("https://agent402.tools/api/crypto-price?coins=BTC,ETH&currency=usd");
console.log(res.status, res.headers.get("payment-receipt"), await res.json());
05 / ACCEPT IT

How do I accept MPP payments on my own API?

If you already speak x402, a translation layer can add MPP without touching settlement: answer 402s with an additional WWW-Authenticate: Payment challenge derived from your existing offer, and re-encode inbound Authorization: Payment credentials into your existing verification path. Agent402's implementation of exactly that pattern is open source (AGPL) in its server repository, and the mppx tooling in tempoxyz/mpp provides the client and codec primitives.

SELL

List your API, both wires included

Serve x402, register your origin, and MPP dual-stack support ships free alongside it. No signup, nothing deducted from your price.

List your API →
BUY

Pay in either dialect

An mppx client and an @x402/fetch client both work unmodified against every paid route on Agent402 - the buyer's client picks.

Add to your agent →
06 / QUESTIONS

Questions people and agents ask.

What is the Machine Payments Protocol (MPP)?

MPP is an open, IETF-track protocol that lets software pay for web services per request using HTTP's standard authentication mechanism. A paid endpoint answers an unpaid request with status 402 and a WWW-Authenticate: Payment challenge naming a price; the client answers with a signed stablecoin payment in an Authorization: Payment header; the server verifies it, runs the request, settles the payment on-chain, and returns the result with a signed Payment-Receipt header. No account, API key, or subscription is involved.

How is MPP different from x402?

They are two dialects of the same idea - pay-per-request over HTTP 402, settled in stablecoins. x402 (from Coinbase) carries payment terms in a PAYMENT-REQUIRED header and the payment in a PAYMENT-SIGNATURE header; MPP carries the same handshake through the web's standard auth headers (WWW-Authenticate / Authorization, the mechanism defined in RFC 9110), which makes it a natural fit for the IETF standards track. A server can speak both from the same URL at the same price, and dual-stack servers exist today.

Is MPP a finished standard?

It is IETF-track and in active development - the Payment HTTP authentication scheme is documented at paymentauth.org with the reference implementation in the tempoxyz/mpp repository. Live services accept MPP payments on mainnet today, so the wire format is real and settling, but as with any draft-stage protocol, details can still evolve.

Where can I see MPP working right now?

Every paid endpoint on Agent402.Tools is dual-stack: the same 402 response carries both an x402 offer and a WWW-Authenticate: Payment challenge, a stock mppx client works unmodified, and settled responses return a signed Payment-Receipt. A real purchase settles over the native MPP wire daily as part of the service's paid canary, so the claim is continuously re-proven, not a demo that worked once.

How do I accept MPP payments on my own API?

If you already speak x402, a translation layer can add MPP without touching settlement: answer 402s with an additional WWW-Authenticate: Payment challenge derived from your existing offer, and re-encode inbound Authorization: Payment credentials into your existing verification path. Agent402's implementation of exactly that pattern is open source (AGPL) in its server repository, and the mppx tooling in tempoxyz/mpp provides the client and codec primitives.

402

Now put it to work.

Agent402 speaks x402 and MPP on the same routes at the same price. Free to list, free to browse.

List your API - free → WHAT IS x402?