# mpp v0.6.0 - Table of Contents

> Elixir implementation of the Machine Payments Protocol (MPP) — HTTP 402
payment middleware for AI agents and machine-to-machine commerce. Supports
Stripe, Tempo, and generic EVM payment methods with pluggable architecture.

## Pages

- [MPP](readme.md)
- [Changelog](changelog.md)
- [LICENSE](license.md)
- [Security Policy](security.md)

## Modules

- [MPP](MPP.md): Elixir implementation of the [Machine Payments Protocol](https://mpp.dev) (MPP).
- [MPP.Amount](MPP.Amount.md): Amount and decimal helpers for converting human-readable amounts to base units.
- [MPP.BodyDigest](MPP.BodyDigest.md): SHA-256 body digest computation and verification.
- [MPP.Challenge](MPP.Challenge.md): Payment challenge — the 402 response that tells a client what to pay.
- [MPP.Client.MultiProvider](MPP.Client.MultiProvider.md): Wraps multiple payment providers and dispatches to the first match.
- [MPP.Client.PaymentProvider](MPP.Client.PaymentProvider.md): Behaviour for client-side payment providers.
- [MPP.Client.Transport](MPP.Client.Transport.md): Behaviour for client-side transports that bridge a protocol response/request pair
and the MPP payment flow.
- [MPP.Client.Transport.HTTP](MPP.Client.Transport.HTTP.md): HTTP implementation of `MPP.Client.Transport` over `Req`.
- [MPP.Credential](MPP.Credential.md): Payment credential — the client's response to a 402 challenge.
- [MPP.Demo.Method](MPP.Demo.Method.md): Demo payment method — accepts a magic token for local testing.
- [MPP.Demo.Router](MPP.Demo.Router.md): Demo router for `mix mpp.demo` — serves a protected endpoint behind MPP.
- [MPP.Errors](MPP.Errors.md): RFC 9457 Problem Details for MPP payment errors.
- [MPP.Headers](MPP.Headers.md): Parse and format the three MPP protocol headers.
- [MPP.Intents.Charge](MPP.Intents.Charge.md): Charge intent request schema — the "Intent = Schema" half of MPP.
- [MPP.JCS](MPP.JCS.md): RFC 8785 JSON Canonicalization Scheme (JCS) — MPP subset.
- [MPP.Mcp](MPP.Mcp.md): MCP (Model Context Protocol) payment transport helpers.
- [MPP.Method](MPP.Method.md): Behaviour for pluggable payment method verification.
- [MPP.Methods.EVM](MPP.Methods.EVM.md): Generic EVM payment method — verifies on-chain ERC-20 or native ETH transfers.
- [MPP.Methods.Stripe](MPP.Methods.Stripe.md): Stripe payment method — verifies payment via Stripe PaymentIntent with SPT.
- [MPP.Methods.Tempo](MPP.Methods.Tempo.md): Tempo payment method — verifies payment via on-chain TIP-20 token transfer.
- [MPP.Methods.Tempo.FeePayerPolicy](MPP.Methods.Tempo.FeePayerPolicy.md): Sponsor (fee-payer) gas-economics policy for Tempo transactions.
- [MPP.Methods.Tempo.SessionReceipt](MPP.Methods.Tempo.SessionReceipt.md): Session-intent receipt for Tempo — returned in the `Payment-Receipt` header
for session/pay-as-you-go payments.
- [MPP.Plug](MPP.Plug.md): Plug middleware implementing the MPP 402 payment handshake.
- [MPP.Plug.Config](MPP.Plug.Config.md): Validated configuration for `MPP.Plug`.
- [MPP.Plug.MethodEntry](MPP.Plug.MethodEntry.md): Per-method configuration within a multi-method endpoint.
- [MPP.Receipt](MPP.Receipt.md): Payment receipt — proof-of-payment returned in the `Payment-Receipt` header.
- [MPP.Tempo.ConCacheStore](MPP.Tempo.ConCacheStore.md): Built-in ETS-based dedup store using ConCache (TTL-enabled ETS wrapper by Saša Jurić).
- [MPP.Tempo.Store](MPP.Tempo.Store.md): Behaviour for transaction dedup stores used by `MPP.Methods.Tempo`.
- [MPP.Verifier](MPP.Verifier.md): Transport-neutral payment credential verification.

## Mix Tasks

- [mix mpp.demo](Mix.Tasks.Mpp.Demo.md): Starts a local HTTP server demonstrating the full MPP 402 payment flow.
- [mix mpp.manifest](Mix.Tasks.Mpp.Manifest.md): Generates a static `api_manifest.json` from the library's descripex annotations.

