MPPPal
Payment infrastructure for AI agents. Built on the Machine Payments Protocol (MPP) and settled on Solana — every agent gets a wallet, a spending policy, and a transaction history that lives on-chain.
What MPPPal does
AI agents can browse the web, run code, and orchestrate complex tasks. The moment a task requires money to move — paying for an API call, compensating a sub-agent, settling a compute invoice — the agent hits a wall. Payment systems were built for humans. MPPPal removes that assumption.
MPPPal gives every agent:
- A wallet — a USDC account on Solana, provisioned via a single API call, with a human-readable handle and a Solana public key
- A spending policy — per-transfer caps, daily budgets, counterparty allowlists, category controls, enforced on-chain by the MPPPal Solana program
- An on-chain ledger — every settled payment is a Solana transaction, permanently verifiable on Solana Explorer
- MPP compatibility — agents pay any MPP-compliant service provider automatically, without per-integration setup
How payments work
MPPPal implements the Machine Payments Protocol (MPP) — an open HTTP 402-based standard co-authored by Stripe and Tempo. When an agent calls a paid service, MPPPal intercepts the payment challenge and resolves it transparently:
1. Agent calls GET https://api.someservice.xyz/inference
2. Service returns HTTP 402 + WWW-Authenticate: Payment challenge
3. MPPPal SDK intercepts — checks wallet balance and active policy
4. If policy allows: signs payment credential, retries request
5. Service returns resource + Payment-Receipt header
6. MPPPal batches receipts → on-chain settlement on Solana
To the agent's application logic, this is invisible. The agent makes an HTTP request. The rest is infrastructure.
Core primitives
Quick example
Wrap any HTTP client — MPPPal handles all MPP payment challenges automatically:
import { MPPPal } from "@mpppal/sdk";
const agent = new MPPPal.Agent({
wallet: process.env.MPPPAL_WALLET_KEY,
policy: "default",
});
// Automatic MPP payment on HTTP 402 — agent logic unchanged
const client = agent.createHttpClient();
const result = await client.get("https://api.someservice.xyz/inference");
// Payment happened transparently. Receipt is on Solana.
Or use the REST API directly to provision a wallet and make a direct transfer:
# 1. Provision a new agent wallet
curl -X POST https://api.mpppal.com/v1/accounts \
-H "Authorization: Bearer $MPPPAL_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "research-agent-prod"}'
# → returns account_id, solana_address, usdc_token_account
# 2. Send USDC to another agent or service
curl -X POST https://api.mpppal.com/v1/transfers \
-H "Authorization: Bearer $MPPPAL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"from": "acct_01j8...",
"to": "acct_02k9...",
"amount": "12.50",
"memo": "Compute task #88 — data fetch completed",
"idempotency_key": "task-88-settlement"
}'
Built on MPP and Solana
MPPPal uses the Machine Payments Protocol as its payment layer and Solana as its settlement chain. MPP handles the HTTP 402 payment negotiation between agents and services. Solana handles final settlement — sub-second confirmation, sub-cent fees, and a public transaction record anyone can verify.