Skip to main content
MPP is a machine-to-machine payment protocol for ongoing relationships between two services — think AI agent paying an API, or one service retaining another. Instead of a new authentication + payment per call (like x402), MPP opens a session with a pre-deposited budget; the consumer signs vouchers for each unit of work; the session reconciles at close. Best when you have recurring, high-frequency micropayments between the same two parties.

When to pick MPP vs. alternatives

Anatomy

One-shot payment (simplest case)

For a single micropayment without opening a session:
Useful for first call to a new service. For subsequent calls, open a session.

Open a session

Response:
The deposit_amount is held from the agent’s wallet. Any unspent balance returns on close.

Sign a voucher

Each unit of work within the session produces a voucher:
Returns a signed voucher that the service verifies to confirm it’s authorized to deliver and be paid. Sessions enforce budget_remaining — once it hits zero, voucher requests return INSUFFICIENT_BALANCE.

Stream session costs

Useful when you want live metrics during a long session:
Server-sent events stream back with each voucher:

Close a session

Settlement is atomic:
  1. All signed vouchers finalize
  2. Total paid amount debits from the agent’s wallet (vs. the deposit hold)
  3. Unspent deposit returns to the agent’s wallet
  4. Session transitions to closed

Service-side: verify a receipt

When a consumer shows you a voucher, verify it:
Returns { valid: true, session_id, amount, issued_at, expires_at } or a failure reason (replay, expired, revoked).

Discover MPP services

Returns MPP-enabled services with published pricing. Or probe a specific service:

Analytics + reconciliation

Per-tenant summary:
Returns transfer volume, fees, session count, budget utilization. Receipt-level reconciliation:

Provision a wallet for MPP

If an agent doesn’t have an MPP-capable wallet yet:
Provisions a Tempo wallet (MPP-native, supports voucher signing).

Endpoints

Lifecycle states

Session: openactiveclosed | exhausted (budget ran out) | error

When not to use MPP

  • One-off calls — overhead of opening a session isn’t worth it; use x402
  • Human buyers — MPP is machine-to-machine; for humans use UCP / ACP
  • Fixed-price subscriptions — use AP2 mandates instead