name: mpp-agent description: Pay HTTP 402 APIs via Machine Payments Protocol (MPP). version: 0.1.0 author: Teknium (teknium1), Hermes Agent license: MIT platforms: [linux, macos] metadata: hermes: tags: [Payments, MPP, HTTP-402, Tempo, Stripe] related_skills: [stripe-link-cli, stripe-projects]
MPP Agent Skill
Wraps the Machine Payments Protocol (MPP, https://mpp.dev) clients so Hermes can pay for per-request API access against servers that respond with HTTP 402 Payment Required.
Three client options, all distributed via npm. Pick the lightest one that solves the user's need. Gated [linux, macos] while the broader payments tooling matures on Windows.
When to Use
- A merchant API returns
HTTP 402with awww-authenticateheader — and the user wants to actually pay it, not just log the response. - The user asks to "pay per request", "set up an agent wallet", "use Tempo / Privy / AgentCash", or wants to discover MPP-priced services.
- A Stripe Link spend has produced a Shared Payment Token (SPT) and the agent needs to attach it to the 402 challenge — in that flow, prefer
link-cli mpp pay(see thestripe-link-cliskill).
Choosing a client
| Tool | When | Setup |
|---|---|---|
link-cli |
User already has Stripe Link set up, or the 402 challenge advertises method="stripe" |
see the stripe-link-cli skill |
| Tempo Wallet | MPP services with spend controls, service discovery | tempo wallet login |
| Privy Agent CLI | Multi-chain wallets, browser-based funding | privy-agent-wallets login |
| AgentCash | 300+ pre-priced APIs via one USDC.e balance | npx agentcash onboard |
mppx |
Dev + debugging, smallest dep surface | npm install -g mppx then mppx account create |
Default: if the user already has Stripe Link configured or the 402 challenge specifies method="stripe", use link-cli mpp pay (the stripe-link-cli skill). Otherwise mppx for one-off paid calls and debugging, and Tempo Wallet when the user wants persistent spend controls.
Prerequisites
- Node.js 20+ on
PATH - A funded wallet (Tempo / Privy / AgentCash) OR an
mppxaccount - For Tempo / Privy / AgentCash: follow their respective onboarding skills:
https://tempo.xyz/SKILL.mdhttps://agents.privy.io/skill.mdhttps://agentcash.dev/skill.md
Use web_extract to fetch any of those SKILL.md files if the user picks one.
Procedure (mppx, fastest path)
Run all commands through the terminal tool.
1. Install + create an account
npm install -g mppx
mppx account create
Store the resulting account credentials wherever the CLI tells you (the CLI writes them under its own config — do not paste them into the agent transcript).
2. Inspect the merchant's 402 challenge
If the user gives you a URL, probe it first to confirm it actually speaks MPP:
curl -i <url>
A real MPP 402 looks like:
HTTP/1.1 402 Payment Required
www-authenticate: tempo amount=0.1 currency=...
3. Pay the request
mppx <url>
For non-GET methods or request bodies:
mppx <url> --method POST --data '<json>'
mppx handles the 402 challenge/credential dance automatically and prints the merchant's actual response on success.
4. Verify the receipt
mppx attaches the receipt header automatically. To inspect:
mppx <url> -v
Procedure (Tempo Wallet)
The Tempo Wallet skill at https://tempo.xyz/SKILL.md is the canonical reference; fetch it with web_extract and follow it. Headline:
tempo wallet login
tempo wallet pay <url>
Spend controls and service discovery live in the wallet UI at https://wallet.tempo.xyz.
Pitfalls
HTTP 402withoutmethod="stripe"cannot be paid by Stripe Link. If the challenge advertises only Tempo / other methods, usemppx(or whichever wallet matches) — Link will reject it. Conversely, if it advertisesmethod="stripe", prefer Link via thestripe-link-cliskill so the spend goes through the user's approved card.- Multiple challenges in one header.
www-authenticatemay list several methods (e.g.tempo, stripe). The Link CLI'smpp decodewill pick the Stripe one;mppxwill pick Tempo. There's no single "right" client — pick by which wallet the user has funded. - Zero-amount challenges. Some MPP endpoints charge
$0.00and just want a proof credential. These work without a funded wallet. Don't refuse them as "broken." - Wallet keys never enter agent context. All four clients store keys under their own config dirs (or generate per-session ephemeral keypairs, in Privy's case). Do not
cat/read_filethem. - Server-side MPP is a different skill. If the user wants to ADD 402 to their own API, this skill is wrong — point them at https://mpp.dev/quickstart/server and the
mppx/nextjs/mppx/hono/mppx/express/mppx/elysiamiddlewares. A dedicatedmpp-serverskill may land later.
Verification
mppx --version && mppx account list
Exit code 0 means installed and an account exists.