MPP Session Payments
The Machine Payment Protocol (MPP) enables session-based micropayments on the Tempo blockchain. Unlike x402 where each API call is a separate payment, MPP opens a session with a deposit budget — your agent makes multiple requests against that budget, and the session settles when done. This guide walks through the full session lifecycle: pre-authorize, open, charge, close, and track.Prerequisites
MPP vs x402
| x402 | MPP | |
|---|---|---|
| Payment model | Pay-per-request | Session with deposit |
| Best for | Occasional API calls | Streaming, multi-request workflows |
| Chain | Base (USDC), Tempo (pathUSD) | Tempo (pathUSD) |
| Settlement | Immediate per call | On session close |
| Unused funds | N/A | Returned to agent |
How MPP Works
| Step | What happens |
|---|---|
| 1 | Agent calls an MPP-enabled service, gets a 402 challenge |
| 2 | Agent pre-authorizes the session deposit through Conto policies |
| 3 | Agent opens a session with a deposit budget |
| 4 | Agent makes requests — each consumes part of the deposit |
| 5 | Session closes — unused deposit is returned |
| 6 | Agent records the final settled amount in Conto |
Step 1: Set Up MPP Policies
Create the policy
Go to Policies → New Policy.
| Field | Value |
|---|---|
| Name | MPP Session Guardrails |
| Policy Type | MPP_CONTROLS |
Add rules
Rule 1: Cap session deposit
No single session can have a deposit greater than $25.Rule 2: Cap per-request charge
No individual request within a session can charge more than $1.00.Rule 3: Limit concurrent sessions
Agent can have at most 3 open sessions at once.
| Field | Value |
|---|---|
| Rule Type | MPP_SESSION_BUDGET |
| Operator | LTE |
| Value | 25 |
| Action | ALLOW |
| Field | Value |
|---|---|
| Rule Type | MPP_MAX_PER_REQUEST |
| Operator | LTE |
| Value | 1.00 |
| Action | ALLOW |
| Field | Value |
|---|---|
| Rule Type | MPP_MAX_CONCURRENT_SESSIONS |
| Operator | LTE |
| Value | 3 |
| Action | ALLOW |
Step 2: Pre-Authorize the Session
When your agent needs to open an MPP session, first check policies:If Authorized
If Denied
Step 3: Open the Session
After Conto authorizes, open the MPP session with the service. The session deposit is locked on-chain:Step 4: Make Requests
Each request to the MPP service consumes part of the deposit:Step 5: Close and Settle
When your agent is done, close the session. Unused deposit is returned:| Session Summary | Amount |
|---|---|
| Initial deposit | $10.00 |
| Total charged | $1.25 |
| Returned to agent | $8.75 |
Step 6: Record in Conto
Record the settled amount so Conto can track spending:Step 7: Monitor Spending
Check MPP Budget
View MPP Services
Dashboard
Go to Analytics to see MPP-specific metrics: session frequency, average session cost, per-service breakdown, and deposit utilization (how much of each deposit is actually used).Full Integration Example
Complete TypeScript flow for an MPP session:MPP Policy Reference
All available MPP-specific policy rules:| Rule Type | What It Controls |
|---|---|
MPP_MAX_PER_REQUEST | Max charge per individual request in a session |
MPP_PRICE_CEILING | Hard ceiling on any MPP payment |
MPP_MAX_PER_ENDPOINT | Budget per specific endpoint |
MPP_MAX_PER_SERVICE | Budget per service domain |
MPP_SESSION_BUDGET | Maximum deposit per session |
MPP_MAX_SESSION_DEPOSIT | Hard cap on session deposit |
MPP_MAX_CONCURRENT_SESSIONS | Max open sessions at once |
MPP_MAX_SESSION_DURATION | Maximum session length |
MPP_ALLOWED_SERVICES | Allowlist of service domains |
MPP_BLOCKED_SERVICES | Blocklist of service domains |
Troubleshooting
Pre-authorize denied — 'exceeds concurrent session limit'
Pre-authorize denied — 'exceeds concurrent session limit'
Session deposit higher than wallet balance
Session deposit higher than wallet balance
The deposit is locked on-chain when the session opens. If your wallet has 20 session, it fails. Check your wallet balance and request a smaller deposit.
Settled amount doesn't match expected charges
Settled amount doesn't match expected charges
The service determines final settlement. If charges seem wrong, check the session details with the service provider. Conto records whatever you report — make sure you’re recording the settlement amount from the close response.
MPP only works on Tempo — can I use it on Base?
MPP only works on Tempo — can I use it on Base?
MPP is currently supported only on the Tempo blockchain (chain ID 4217). For paid APIs on Base or Ethereum, use the x402 protocol instead.
Next Steps
x402 Payments
Per-request API payments on Base and Tempo
MPP SDK Reference
Full API reference for MPP endpoints
Advanced Policies
All MPP policy rule types and value formats
Recipes
Copy-paste MPP recipes