MPP Implementation Observations

April 24, 2026 · View on GitHub

Protocol: Machine Payments Protocol (MPP)
Spec: github.com/tempoxyz/mpp-specs
Maintainers: Tempo + Stripe
Built: 2026-04-24


1. Accept-Payment Header Is Elegant Discovery

MPP uses the Accept-Payment HTTP header to advertise payment methods. The agent reads the header, sees what's available, and knows where to send money. No session setup, no capability negotiation. One GET request gives the agent everything it needs.

Compare to ACP (create session → check status → discover handlers) or UCP (create_checkout → read available_methods). MPP's approach is the most HTTP-native.

2. Charge Intent Is the Simplest Payment Flow

Two HTTP calls: discover payment methods, submit a charge. No session lifecycle, no Allowance negotiation, no delegate payment step. The agent decides to pay, and it pays.

The tradeoff: no protocol-level spending constraints. ACP has Allowance (per-session budget cap). MPP has nothing — the charge amount is whatever the agent sends.

3. Authorize Intent Separates Hold from Charge

MPP's authorize intent (on development branch, PR #226) introduces a two-phase flow: authorize → charge. This enables subscription-style payments and payment holds. It's the most flexible payment model of any protocol, but also the most complex.

The open question (from our MPP #211 comment): what's the aggregate committed exposure when an agent holds active authorize intents at multiple servers? The spec doesn't address cross-server composition.

4. No Cross-Merchant Budget Tracking

Same gap as every other protocol. An agent can submit charges to multiple merchants independently. Each charge succeeds or fails based on the agent's wallet balance, not a protocol-enforced budget. MPP has no budget concept.

5. MPP vs x402

Both are settlement protocols, but different models:

  • x402: pay-per-request, stateless, ERC-20 permits, facilitator settles
  • MPP: intent-based, can be stateful (authorize), Tempo settles, supports multiple intents (charge, authorize, subscription, stream)

x402 is simpler for API access. MPP is more flexible for complex payment flows.