Standalone follow-on; sequenced after #34 and #208. Created now (2026-07-07) to keep the MPP story visible; do not start before #34 lands.
Context (verified 2026-07-07)
MPP — the Machine Payments Protocol (Tempo + Stripe, spec at mpp.dev, built on the "Payment" HTTP authentication scheme proposed to the IETF) — is backwards-compatible with x402: the x402 exact flow maps directly onto MPP's charge intent, and on EVM both sign the SAME EIP-3009 transferWithAuthorization. Servers can emit both challenges in one 402 response (WWW-Authenticate: Payment alongside PAYMENT-REQUIRED) and accept either credential format. Sources: developers.cloudflare.com/agents/agentic-payments/mpp/ (back-compat statement), mpp.dev/mpp-vs-x402, github.com/tempoxyz/mpp-specs.
So once Deckard speaks x402 exact (#34), MPP charge interop is nearly free: the signature and the signing-time budget check are the identical code path — only the HTTP envelope differs.
Scope
Extend the agent-side client (#208) to also:
Non-goals
Acceptance
The #208 client fetches a paid resource from an MPP-charge server fixture using the same policy/budget path as x402; the deny/budget behavior is byte-identical; docs explain MPP in plain words once ("MPP — a payment protocol agents use over HTTP; its one-time charges are compatible with x402").
Standalone follow-on; sequenced after #34 and #208. Created now (2026-07-07) to keep the MPP story visible; do not start before #34 lands.
Context (verified 2026-07-07)
MPP — the Machine Payments Protocol (Tempo + Stripe, spec at mpp.dev, built on the "Payment" HTTP authentication scheme proposed to the IETF) — is backwards-compatible with x402: the x402
exactflow maps directly onto MPP'schargeintent, and on EVM both sign the SAME EIP-3009transferWithAuthorization. Servers can emit both challenges in one 402 response (WWW-Authenticate: PaymentalongsidePAYMENT-REQUIRED) and accept either credential format. Sources: developers.cloudflare.com/agents/agentic-payments/mpp/ (back-compat statement), mpp.dev/mpp-vs-x402, github.com/tempoxyz/mpp-specs.So once Deckard speaks x402 exact (#34), MPP
chargeinterop is nearly free: the signature and the signing-time budget check are the identical code path — only the HTTP envelope differs.Scope
Extend the agent-side client (#208) to also:
WWW-Authenticate: Paymentchallenges,Authorization: Paymentcredentials,Payment-Receiptresponses,reusing the same daemon authorize+sign wire and budget ledger. No new signer code. Dep question (official Rust SDK
tempoxyz/mpp-rsexists, typed Challenge/Credential/Receipt) is decided the Spike: x402 build shape — hand-rolled EIP-3009 vs x402-rs, and prove the fully-local facilitator loop #206 way: evidence first, hand-roll by default.Non-goals
Acceptance
The #208 client fetches a paid resource from an MPP-charge server fixture using the same policy/budget path as x402; the deny/budget behavior is byte-identical; docs explain MPP in plain words once ("MPP — a payment protocol agents use over HTTP; its one-time charges are compatible with x402").