Sponge is the financial infrastructure for the agent economy. Master keys create and manage agent wallets; scoped agent keys execute wallet actions — transfers, swaps, card issuance, x402/MPP payments, Hyperliquid/Polymarket trades.
Official docs:
https://docs.paysponge.com
When to Use
Use this skill when you need to:
- Provision a new agent wallet from a master account
- List, inspect, or rotate the agent keys in a Sponge platform
- Move funds between Sponge wallets or onto external addresses
- Issue or fetch a Sponge Card / virtual card for an agent
- Pay an x402- or MPP-enabled endpoint on behalf of an agent
Prerequisites
Connect the Sponge connector at app.vm0.ai/connectors.
Troubleshooting: If requests fail, run
zero doctor check-connector --env-name SPONGE_MASTER_KEYorzero doctor check-connector --url https://api.wallet.paysponge.com/api/agents --method GET
Environment Variables
| Variable | Description |
|---|---|
SPONGE_MASTER_KEY |
Platform-level master key (prefix sponge_master_...). Used for control-plane operations and for fetching scoped agent keys. |
The master key is the only credential vm0 stores. Agent keys are looked up at runtime through the master key — never hard-code them.
How to Use
Base URL: https://api.wallet.paysponge.com
All Sponge endpoints use a Bearer header: Authorization: Bearer <master-or-agent-key>.
1. List agents on the platform
curl -s -X GET "https://api.wallet.paysponge.com/api/agents" --header "Authorization: Bearer $SPONGE_MASTER_KEY" | jq '.agents[] | {id, name, description}'
2. Create a new agent
Write to /tmp/sponge_agent.json:
{
"name": "trading-bot-1",
"description": "Created by vm0 agent",
"dailySpendingLimit": "100"
}
curl -s -X POST "https://api.wallet.paysponge.com/api/agents" --header "Authorization: Bearer $SPONGE_MASTER_KEY" --header "Content-Type: application/json" -d @/tmp/sponge_agent.json | jq '{agentId: .agent.id, apiKey}'
The response includes a scoped apiKey — store it; this is the only chance to read it.
3. Fetch (or rotate) an agent's API key
Replace <agent-id> with the agent id from step 2.
curl -s -X GET "https://api.wallet.paysponge.com/api/agents/<agent-id>/api-key" --header "Authorization: Bearer $SPONGE_MASTER_KEY"
Rotate:
curl -s -X POST "https://api.wallet.paysponge.com/api/agents/<agent-id>/api-key/regenerate" --header "Authorization: Bearer $SPONGE_MASTER_KEY"
4. Get current agent (acts as a token health check)
When called with an agent key the endpoint returns the agent identity; when called with a master key it errors. Use it to verify a key before using it.
curl -s -X GET "https://api.wallet.paysponge.com/api/agents/me" --header "Authorization: Bearer <agent-key>"
5. Read agent wallet balances
Use the agent key returned from step 2 — the master key cannot move funds.
curl -s -X GET "https://api.wallet.paysponge.com/api/wallet/balances" --header "Authorization: Bearer <agent-key>"
6. Send an EVM transfer
Replace <agent-key> with the agent's runtime key.
Write to /tmp/sponge_transfer.json:
{
"chain": "base",
"token": "USDC",
"to": "0x0000000000000000000000000000000000000000",
"amount": "1.00"
}
curl -s -X POST "https://api.wallet.paysponge.com/api/transfers/evm" --header "Authorization: Bearer <agent-key>" --header "Content-Type: application/json" -d @/tmp/sponge_transfer.json
7. Fetch a paid endpoint via x402 auto-pay
Sponge handles 402-payment-required upstream APIs automatically when you proxy the call through x402/fetch.
Write to /tmp/sponge_x402.json:
{
"url": "https://api.example.com/paid-resource",
"method": "GET",
"maxAmount": "0.50"
}
curl -s -X POST "https://api.wallet.paysponge.com/api/x402/fetch" --header "Authorization: Bearer <agent-key>" --header "Content-Type: application/json" -d @/tmp/sponge_x402.json
Guidelines
- Treat
SPONGE_MASTER_KEYas the control-plane credential — never embed it in agent runtime traffic. Use it to mint or look up a scoped agent key, then switch. - Agent keys are scoped to a single agent — one per persona, never shared across agents.
- Set
dailySpendingLimit,weeklySpendingLimit, ormonthlySpendingLimiton agent creation to bound autonomous spend. - Prefer the official SDKs (
@paysponge/sdkTypeScript /payspongePython) for non-trivial flows — they handle pagination, polling, and bridge state transitions. - For sustained agent-to-API spend, prefer the MPP or x402 flow over manual card issuance — fewer round trips and better failure handling.