skills/sponge-wallet/SKILL.md
Crypto wallet, token swaps, cross-chain bridges, Tempo transfers, and access to paid external services (search, image gen, web scraping, AI, and more) via x402 and MPP micropayments.
npx skillsauth add enudimmud/enki-openclaw sponge-walletInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
SPONGE WALLET API QUICK REFERENCE v0.2.0
Base: https://api.wallet.paysponge.com
Auth: Authorization: Bearer <SPONGE_API_KEY>
Ver: Sponge-Version: 0.2.0 (REQUIRED on every request)
Docs: This file is canonical (skills guide + params)
Capabilities: wallet + swaps + bridges + Tempo transfers + paid external services (x402 + MPP) + trading + shopping
x402 paid services (search, image gen, scraping, AI, data, etc.):
GET /api/x402/discover -> Step 1: find services by query/category
GET /api/x402/discover/:serviceId -> Step 2: get endpoints, params, pricing (REQUIRED before fetch)
POST /api/x402/fetch -> Step 3: call service endpoint (auto-pays with USDC)
MPP paid services (same as x402 but pays with Tempo stablecoins):
POST /api/mpp/fetch -> call service endpoint (auto-pays with pathUSD on Tempo)
Wallet & tokens:
GET /api/balances -> get balances (includes Polymarket USDC.e)
POST /api/transfers/tempo -> Tempo transfer (pathUSD/AlphaUSD/BetaUSD/ThetaUSD)
POST /api/transfers/evm -> EVM transfer (ETH/USDC)
POST /api/transfers/solana -> Solana transfer (SOL/USDC)
POST /api/transactions/swap -> Solana swap
POST /api/transactions/base-swap -> Base swap (0x)
POST /api/transactions/bridge -> Bridge (deBridge)
GET /api/solana/tokens -> list SPL tokens
GET /api/solana/tokens/search -> search Jupiter token list
GET /api/transactions/status/:txHash -> transaction status
GET /api/transactions/history -> transaction history
POST /api/funding-requests -> request funding from owner
POST /api/wallets/withdraw-to-main -> withdraw to owner
Planning & proposals:
POST /api/plans/submit -> submit multi-step plan
POST /api/plans/approve -> approve and execute plan
POST /api/trades/propose -> propose single swap for approval
Trading & shopping:
POST /api/polymarket -> Polymarket prediction market trading
POST /api/hyperliquid -> Hyperliquid perps/spot trading
POST /api/checkout -> Amazon checkout (initiate purchase)
GET /api/checkout/:sessionId -> checkout status
DELETE /api/checkout/:sessionId -> cancel checkout
GET /api/checkout/history -> checkout history
POST /api/checkout/amazon-search -> search Amazon products
Auth (one-time setup):
POST /api/agents/register -> register (no auth)
POST /api/oauth/device/authorization -> device login start (humans)
POST /api/oauth/device/token -> device token poll (agents + humans)
Rules: use register (agents), never login | store key in ~/.spongewallet/credentials.json | requests are JSON
Errors: HTTP status + JSON error message
This skill is doc-only. There is no local CLI. Agents must call the Sponge Wallet REST API directly.
GET /api/x402/discover?query=... — find a serviceGET /api/x402/discover/{serviceId} — get its endpoints, params, and proxy URL (do not skip)POST /api/x402/fetch — call the endpoint using the URL and params from step 2POST /api/mpp/fetch instead of x402/fetch. Pays with pathUSD on the Tempo chain instead of USDC. Use MPP when the service accepts MPP payments or when you want to pay from your Tempo balance.If a task requires an external capability you don't have (e.g., generating images, searching the web, scraping a URL, looking up a person's email), use the x402 3-step flow or MPP flow above. There is likely a paid service available for it.
apiKey is returned once (immediately for agent-first mode, or after device approval for standard mode). If you lose it, you must re-register or re-authenticate.Store the API key in one canonical location:
~/.spongewallet/credentials.jsonRecommended file contents:
{
"apiKey": "sponge_live_...",
"claimCode": "ABCD-1234",
"claimUrl": "https://wallet.paysponge.com/device?code=ABCD-1234"
}
Optional environment export (runtime convenience):
export SPONGE_API_KEY="$(jq -r .apiKey ~/.spongewallet/credentials.json)"
https://api.wallet.paysponge.comAuthorization: Bearer <SPONGE_API_KEY>application/jsonQuick env setup:
export SPONGE_API_URL="https://api.wallet.paysponge.com"
export SPONGE_API_KEY="$(jq -r .apiKey ~/.spongewallet/credentials.json)"
register, NOT loginThere are two modes:
agentFirst: true): agent receives the API key immediately, and the human can claim later.Step 1 — Start registration (agent-first recommended)
curl -sS -X POST "$SPONGE_API_URL/api/agents/register" \
-H "Sponge-Version: 0.2.0" \
-H "Content-Type: application/json" \
-d '{
"name":"YourAgentName",
"agentFirst": true,
"testnet": true
}'
Response includes:
verificationUriComplete (claim URL for the human owner)claimCode, deviceCode, expiresIn, interval, claimTextapiKey (returned immediately in agent-first mode)Store apiKey, claimCode, and verificationUriComplete (as claimUrl) in ~/.spongewallet/credentials.json so a human can claim later if context resets.
Step 2 — Send the claim URL to the human owner They log in, optionally post the tweet text, and approve the agent.
Claim link format:
verificationUriComplete (example path: /device?code=ABCD-1234)verificationUriComplete to the human.Step 3 — Poll for completion (standard device flow only)
curl -sS -X POST "$SPONGE_API_URL/api/oauth/device/token" \
-H "Sponge-Version: 0.2.0" \
-H "Content-Type: application/json" \
-d '{
"grantType":"urn:ietf:params:oauth:grant-type:device_code",
"deviceCode":"<deviceCode>",
"clientId":"spongewallet-skill"
}'
On success, the response includes apiKey. Save it to ~/.spongewallet/credentials.json and use it as SPONGE_API_KEY.
Note: In agent-first mode, you already have the apiKey from Step 1. The device token will remain pending until the human claims.
Phase 1 — Request device code
curl -sS -X POST "$SPONGE_API_URL/api/oauth/device/authorization" \
-H "Sponge-Version: 0.2.0" \
-H "Content-Type: application/json" \
-d '{
"clientId":"spongewallet-skill",
"scope":"wallet:read wallet:write transaction:sign transaction:write"
}'
Phase 2 — Poll for token (same endpoint as agents)
curl -sS -X POST "$SPONGE_API_URL/api/oauth/device/token" \
-H "Sponge-Version: 0.2.0" \
-H "Content-Type: application/json" \
-d '{
"grantType":"urn:ietf:params:oauth:grant-type:device_code",
"deviceCode":"<deviceCode>",
"clientId":"spongewallet-skill"
}'
All tool calls are plain REST requests with JSON payloads.
Common headers (include on EVERY request)
-H "Authorization: Bearer $SPONGE_API_KEY" \
-H "Sponge-Version: 0.2.0" \
-H "Content-Type: application/json" \
-H "Accept: application/json"
Agent ID note: agentId is optional for API key auth. It is only required when using a user session (e.g., Privy-based auth) or when explicitly operating on a different agent.
| Endpoint | Method | Path | Params/Body |
|----------|--------|------|-------------|
| Get balances | GET | /api/balances | Query: chain, allowedChains, onlyUsdc |
| List SPL tokens | GET | /api/solana/tokens | Query: chain |
| Search Solana tokens | GET | /api/solana/tokens/search | Query: query, limit |
| Tempo transfer | POST | /api/transfers/tempo | Body: to, amount, token (pathUSD/AlphaUSD/BetaUSD/ThetaUSD) |
| EVM transfer | POST | /api/transfers/evm | Body: chain, to, amount, currency |
| Solana transfer | POST | /api/transfers/solana | Body: chain, to, amount, currency |
| Solana swap | POST | /api/transactions/swap | Body: chain, inputToken, outputToken, amount, slippageBps |
| Base swap | POST | /api/transactions/base-swap | Body: chain, inputToken, outputToken, amount, slippageBps |
| Bridge | POST | /api/transactions/bridge | Body: sourceChain, destinationChain, token, amount, destinationToken, recipientAddress |
| Transaction status | GET | /api/transactions/status/{txHash} | Query: chain |
| Transaction history | GET | /api/transactions/history | Query: limit, chain |
| Request funding | POST | /api/funding-requests | Body: amount, reason, chain, currency |
| x402 Step 1: Discover services | GET | /api/x402/discover | Query: type, limit, offset, query, category |
| x402 Step 2: Get service details | GET | /api/x402/discover/{serviceId} | — |
| x402 Step 3: Fetch with auto-pay | POST | /api/x402/fetch | Body: url, method, headers, body, preferred_chain |
| MPP Fetch with auto-pay | POST | /api/mpp/fetch | Body: url, method, headers, body, chain |
| Polymarket | POST | /api/polymarket | Body: action, + action-specific params (see below) |
| Hyperliquid | POST | /api/hyperliquid | Body: action, + action-specific params (see below) |
| Amazon checkout | POST | /api/checkout | Body: checkoutUrl, amazonAccountId, shippingAddress, dryRun, clearCart |
| Checkout status | GET | /api/checkout/{sessionId} | Query: agentId (optional) |
| Checkout history | GET | /api/checkout/history | Query: agentId, limit, offset |
| Amazon search | POST | /api/checkout/amazon-search | Body: query, maxResults, region |
| Submit plan | POST | /api/plans/submit | Body: title, reasoning, steps (see Planning section) |
| Approve plan | POST | /api/plans/approve | Body: plan_id |
| Propose trade | POST | /api/trades/propose | Body: input_token, output_token, amount, reason |
Note: request bodies use camelCase (e.g., inputToken, slippageBps).
CRITICAL — x402 Paid Services require ALL 3 steps in order:
GET /api/x402/discover— search for a service by query or categoryGET /api/x402/discover/{serviceId}— get the service's endpoints, parameters, pricing, and proxy URL (DO NOT SKIP THIS STEP)POST /api/x402/fetch— call the endpoint using the URL from step 2You MUST call step 2 before step 3. Step 2 returns the correct proxy URL and the endpoint parameters/instructions needed to construct the
x402_fetchrequest. Using a direct API URL will fail with auth errors.
Use submit_plan whenever you need to do 2+ related actions together (e.g., swap then bridge, buy multiple tokens, rebalance a portfolio). This groups everything into a single proposal the user can review and approve.
Workflow:
submit_plan with a title, reasoning, and ordered list of stepsapprove_plan with the plan_idStep types:
swap — requires: input_token, output_token, amount, reasontransfer — requires: chain, to, amount, currency, reasonbridge — requires: source_chain, destination_chain, token, amount, reason; optional: destination_tokenRules:
approve_planpropose_trade only for a single swap that needs explicit approval; for multi-step flows, always use submit_planThe polymarket endpoint is a unified tool. Pass action plus action-specific parameters:
| Action | Description | Required Params | Optional Params |
|--------|-------------|-----------------|-----------------|
| status | Check Polymarket account status and USDC.e balance | — | — |
| markets | Search prediction markets | — | query, limit |
| positions | View current market positions | — | — |
| orders | View open and recent orders | — | — |
| order | Place a buy/sell order | outcome, side, size, price | market_slug or token_id, order_type |
| cancel | Cancel an open order | order_id | — |
| set_allowances | Reset token approvals | — | — |
| withdraw | Withdraw USDC.e from Safe to any address | to_address, amount | — |
Order params:
market_slug: Market URL slug (e.g., "will-bitcoin-hit-100k") — use this OR token_idtoken_id: Polymarket condition token ID — use this OR market_slugoutcome: "yes" or "no"side: "buy" or "sell"size: Number of shares (e.g., 10)price: Probability price 0.0–1.0 (e.g., 0.65 = 65 cents per share)order_type: "GTC" (default), "GTD", "FOK", "FAK"Scopes: Trade actions (order, cancel, set_allowances, withdraw) require polymarket:trade scope. Read actions (status, markets, positions, orders) require polymarket:read.
Auto-provisioning: The Polymarket Safe wallet is created automatically on first use. No manual setup needed.
The hyperliquid endpoint is a unified tool for perps/spot trading on Hyperliquid DEX. Pass action plus action-specific parameters:
| Action | Description | Required Params | Optional Params |
|--------|-------------|-----------------|-----------------|
| status | Check account balances and equity | — | — |
| positions | View open perp positions (entry, PnL, liq price) | — | — |
| orders | View open orders | — | symbol |
| fills | Recent trade history | — | symbol, since, limit |
| markets | List available perp/spot markets | — | — |
| ticker | Current price for a symbol | symbol | — |
| orderbook | L2 order book | symbol | limit |
| funding | Current + predicted funding rates | — | symbol |
| order | Place limit/market/stop/TP order | symbol, side, type, amount | price, reduce_only, trigger_price, tp_sl, tif |
| cancel | Cancel an order | order_id, symbol | — |
| cancel_all | Cancel all open orders | — | symbol |
| set_leverage | Set leverage for a symbol | symbol, leverage | — |
| withdraw | Withdraw USDC from Hyperliquid | amount, destination | — |
| transfer | Move USDC between spot and perps | amount, to_perp | — |
Order params:
symbol: CCXT symbol (e.g., "BTC/USDC:USDC" for perps, "PURR/USDC" for spot)side: "buy" or "sell"type: "limit" or "market"amount: Size in base currency (e.g., "0.001" for BTC)price: Limit price (required for limit orders)reduce_only: Boolean, default falsetrigger_price: For stop-loss/take-profit orderstp_sl: "tp" (take-profit) or "sl" (stop-loss) — required if trigger_price settif: "GTC" (default), "IOC", "PO" (post-only)Scopes: Trade actions (order, cancel, cancel_all, set_leverage, withdraw) require hyperliquid:trade scope. Read actions require wallet:read.
Signing: Hyperliquid uses EVM wallet signing (EIP-712). No API keys needed — your agent's existing EVM wallet is used automatically.
Deposits: Use the bridge tool to deposit USDC to Hyperliquid: bridge(source_chain: "base", destination_chain: "hyperliquid", token: "USDC", amount: "100"). Your agent's EVM wallet address is your Hyperliquid account.
Withdrawals: Use the bridge tool to withdraw USDC from Hyperliquid: bridge(source_chain: "hyperliquid", destination_chain: "base", token: "USDC", amount: "100"). USDC is automatically moved from perps to spot before bridging.
Purchase products from Amazon using a configured Amazon account.
Prerequisites:
/api/agents/:id/amazon-accounts endpoints/api/agents/:id/shipping-addresses)Async workflow:
POST /api/checkout — returns a sessionIdGET /api/checkout/:sessionId every 10 seconds until status is completed or failedStatus progression: pending → in_progress → completed | failed | cancelled
Key options:
dryRun: true — stops before placing the order (useful for testing or previewing total cost)clearCart: true — clears the Amazon cart before adding the product (default behavior)Scopes: Checkout actions require amazon_checkout scope on the API key.
curl -sS -X POST "$SPONGE_API_URL/api/agents/register" \
-H "Sponge-Version: 0.2.0" \
-H "Content-Type: application/json" \
-d '{
"name":"YourAgentName",
"agentFirst": true,
"testnet": true
}'
Share the claim URL with your human, then store the apiKey immediately (agent-first). For standard device flow, poll for the token after approval.
curl -sS "$SPONGE_API_URL/api/balances?chain=base" \
-H "Authorization: Bearer $SPONGE_API_KEY" \
-H "Sponge-Version: 0.2.0" \
-H "Accept: application/json"
curl -sS -X POST "$SPONGE_API_URL/api/transfers/evm" \
-H "Authorization: Bearer $SPONGE_API_KEY" \
-H "Sponge-Version: 0.2.0" \
-H "Content-Type: application/json" \
-d '{
"chain":"base",
"to":"0x...",
"amount":"10",
"currency":"USDC"
}'
curl -sS -X POST "$SPONGE_API_URL/api/transactions/swap" \
-H "Authorization: Bearer $SPONGE_API_KEY" \
-H "Sponge-Version: 0.2.0" \
-H "Content-Type: application/json" \
-d '{
"chain":"solana",
"inputToken":"SOL",
"outputToken":"BONK",
"amount":"0.5",
"slippageBps":100
}'
curl -sS -X POST "$SPONGE_API_URL/api/transactions/base-swap" \
-H "Authorization: Bearer $SPONGE_API_KEY" \
-H "Sponge-Version: 0.2.0" \
-H "Content-Type: application/json" \
-d '{
"chain":"base",
"inputToken":"ETH",
"outputToken":"USDC",
"amount":"0.1",
"slippageBps":50
}'
curl -sS -X POST "$SPONGE_API_URL/api/transactions/bridge" \
-H "Authorization: Bearer $SPONGE_API_KEY" \
-H "Sponge-Version: 0.2.0" \
-H "Content-Type: application/json" \
-d '{
"sourceChain":"solana",
"destinationChain":"base",
"token":"SOL",
"amount":"0.1",
"destinationToken":"ETH"
}'
curl -sS "$SPONGE_API_URL/api/transactions/status/0xabc123...?chain=base" \
-H "Authorization: Bearer $SPONGE_API_KEY" \
-H "Sponge-Version: 0.2.0" \
-H "Accept: application/json"
curl -sS -X POST "$SPONGE_API_URL/api/polymarket" \
-H "Authorization: Bearer $SPONGE_API_KEY" \
-H "Sponge-Version: 0.2.0" \
-H "Content-Type: application/json" \
-d '{"action":"status"}'
curl -sS -X POST "$SPONGE_API_URL/api/polymarket" \
-H "Authorization: Bearer $SPONGE_API_KEY" \
-H "Sponge-Version: 0.2.0" \
-H "Content-Type: application/json" \
-d '{"action":"markets","query":"bitcoin","limit":5}'
curl -sS -X POST "$SPONGE_API_URL/api/polymarket" \
-H "Authorization: Bearer $SPONGE_API_KEY" \
-H "Sponge-Version: 0.2.0" \
-H "Content-Type: application/json" \
-d '{
"action":"order",
"market_slug":"will-bitcoin-hit-100k",
"outcome":"yes",
"side":"buy",
"size":10,
"price":0.65
}'
curl -sS -X POST "$SPONGE_API_URL/api/polymarket" \
-H "Authorization: Bearer $SPONGE_API_KEY" \
-H "Sponge-Version: 0.2.0" \
-H "Content-Type: application/json" \
-d '{"action":"positions"}'
curl -sS -X POST "$SPONGE_API_URL/api/polymarket" \
-H "Authorization: Bearer $SPONGE_API_KEY" \
-H "Sponge-Version: 0.2.0" \
-H "Content-Type: application/json" \
-d '{
"action":"withdraw",
"to_address":"0x...",
"amount":"10.00"
}'
curl -sS -X POST "$SPONGE_API_URL/api/hyperliquid" \
-H "Authorization: Bearer $SPONGE_API_KEY" \
-H "Sponge-Version: 0.2.0" \
-H "Content-Type: application/json" \
-d '{"action":"status"}'
curl -sS -X POST "$SPONGE_API_URL/api/hyperliquid" \
-H "Authorization: Bearer $SPONGE_API_KEY" \
-H "Sponge-Version: 0.2.0" \
-H "Content-Type: application/json" \
-d '{"action":"ticker","symbol":"BTC/USDC:USDC"}'
curl -sS -X POST "$SPONGE_API_URL/api/hyperliquid" \
-H "Authorization: Bearer $SPONGE_API_KEY" \
-H "Sponge-Version: 0.2.0" \
-H "Content-Type: application/json" \
-d '{
"action":"order",
"symbol":"BTC/USDC:USDC",
"side":"buy",
"type":"limit",
"amount":"0.001",
"price":"50000"
}'
curl -sS -X POST "$SPONGE_API_URL/api/hyperliquid" \
-H "Authorization: Bearer $SPONGE_API_KEY" \
-H "Sponge-Version: 0.2.0" \
-H "Content-Type: application/json" \
-d '{"action":"positions"}'
curl -sS -X POST "$SPONGE_API_URL/api/plans/submit" \
-H "Authorization: Bearer $SPONGE_API_KEY" \
-H "Sponge-Version: 0.2.0" \
-H "Content-Type: application/json" \
-d '{
"title":"Rebalance to USDC",
"reasoning":"Taking profit on SOL position and bridging to Base",
"steps":[
{"type":"swap","input_token":"SOL","output_token":"USDC","amount":"10","reason":"Take profit on SOL"},
{"type":"bridge","source_chain":"solana","destination_chain":"base","token":"USDC","amount":"100","reason":"Move USDC to Base"}
]
}'
curl -sS -X POST "$SPONGE_API_URL/api/plans/approve" \
-H "Authorization: Bearer $SPONGE_API_KEY" \
-H "Sponge-Version: 0.2.0" \
-H "Content-Type: application/json" \
-d '{"plan_id":"<plan_id>"}'
curl -sS -X POST "$SPONGE_API_URL/api/trades/propose" \
-H "Authorization: Bearer $SPONGE_API_KEY" \
-H "Sponge-Version: 0.2.0" \
-H "Content-Type: application/json" \
-d '{
"input_token":"USDC",
"output_token":"SOL",
"amount":"500",
"reason":"Accumulating SOL at current prices"
}'
curl -sS -X POST "$SPONGE_API_URL/api/checkout" \
-H "Authorization: Bearer $SPONGE_API_KEY" \
-H "Sponge-Version: 0.2.0" \
-H "Content-Type: application/json" \
-d '{
"checkoutUrl":"https://www.amazon.com/dp/B0EXAMPLE",
"dryRun":true,
"clearCart":true
}'
curl -sS "$SPONGE_API_URL/api/checkout/<sessionId>" \
-H "Authorization: Bearer $SPONGE_API_KEY" \
-H "Sponge-Version: 0.2.0" \
-H "Accept: application/json"
curl -sS "$SPONGE_API_URL/api/checkout/history?limit=10" \
-H "Authorization: Bearer $SPONGE_API_KEY" \
-H "Sponge-Version: 0.2.0" \
-H "Accept: application/json"
curl -sS -X POST "$SPONGE_API_URL/api/checkout/amazon-search" \
-H "Authorization: Bearer $SPONGE_API_KEY" \
-H "Sponge-Version: 0.2.0" \
-H "Content-Type: application/json" \
-d '{"query":"wireless mouse","maxResults":5}'
x402 gives you access to a catalog of paid APIs. If you need a capability you don't have natively (web search, image generation, web scraping, data enrichment, AI models, etc.), use x402 to discover and call a service.
Always follow this 3-step workflow: discover → get service details → fetch.
IMPORTANT: Always use the URL from step 2. Do NOT use direct API URLs — most services are proxied through paysponge and direct URLs will fail with auth errors.
curl -sS "$SPONGE_API_URL/api/x402/discover?limit=10" \
-H "Authorization: Bearer $SPONGE_API_KEY" \
-H "Sponge-Version: 0.2.0" \
-H "Accept: application/json"
Returns available x402-enabled services from the Bazaar catalog. Supports semantic search via the query parameter (vector embeddings rank results by relevance). Combine with category to narrow results.
# Search by natural language description
curl -sS "$SPONGE_API_URL/api/x402/discover?query=web+scraping+and+crawling" \
-H "Authorization: Bearer $SPONGE_API_KEY" \
-H "Sponge-Version: 0.2.0" \
-H "Accept: application/json"
# Filter by category
curl -sS "$SPONGE_API_URL/api/x402/discover?category=search" \
-H "Authorization: Bearer $SPONGE_API_KEY" \
-H "Sponge-Version: 0.2.0" \
-H "Accept: application/json"
Available categories: search, image, llm, crawl, data, predict, parse, prospect, person_search, crypto_data
Each result includes: id, name, description, category, endpointCount.
The discover response does NOT include endpoint paths, parameters, or the proxy URL needed for x402_fetch. You MUST call step 2 next.
Once you have a service id from step 1 (e.g., ctg_abc123), call GET /api/x402/discover/{serviceId} to get the service's endpoints, parameters, pricing, and the correct proxy URL:
curl -sS "$SPONGE_API_URL/api/x402/discover/ctg_abc123" \
-H "Authorization: Bearer $SPONGE_API_KEY" \
-H "Sponge-Version: 0.2.0" \
-H "Accept: application/json"
This returns everything you need to construct the x402_fetch call:
method: HTTP method (GET, POST, etc.)path: Endpoint path to append to the service URLdescription: What the endpoint doesprice / currency: Cost per callparameters: JSON schema for query/path/body params — tells you exactly what to sendinstructions: Free-text usage guide with examplesWithout this step, you don't know what endpoints exist, what parameters they accept, or what URL to use.
Construct the URL as: service url from step 2 + endpoint path from step 2. Then call x402_fetch:
curl -sS -X POST "$SPONGE_API_URL/api/x402/fetch" \
-H "Authorization: Bearer $SPONGE_API_KEY" \
-H "Sponge-Version: 0.2.0" \
-H "Content-Type: application/json" \
-d '{
"url":"https://paysponge.com/exa/search",
"method":"POST",
"body":{"query":"best pizza in NYC","text":true},
"preferred_chain":"base"
}'
The x402_fetch tool handles the entire payment flow automatically:
payment_made and payment_detailscurl -sS -X POST "$SPONGE_API_URL/api/transfers/tempo" \
-H "Authorization: Bearer $SPONGE_API_KEY" \
-H "Sponge-Version: 0.2.0" \
-H "Content-Type: application/json" \
-d '{
"to":"0x...",
"amount":"10",
"token":"pathUSD"
}'
Supported tokens: pathUSD (default), AlphaUSD, BetaUSD, ThetaUSD.
MPP (Machine Payments Protocol) works just like x402 but pays with Tempo stablecoins (pathUSD) instead of USDC. Use the same 3-step discover flow as x402 to find services and get their endpoints, then call mpp_fetch instead of x402_fetch.
When to use MPP vs x402:
POST /api/x402/fetch) when paying with USDC on Base/Solana/EthereumPOST /api/mpp/fetch) when paying with pathUSD on Tempo, or when the service accepts MPP paymentsWorkflow — same discover steps as x402, different fetch endpoint:
GET /api/x402/discover?query=... — find a service (same as x402)GET /api/x402/discover/{serviceId} — get endpoints, params, and proxy URL (do not skip)POST /api/mpp/fetch — call the endpoint using the URL from step 2 (auto-pays with pathUSD on Tempo)curl -sS -X POST "$SPONGE_API_URL/api/mpp/fetch" \
-H "Authorization: Bearer $SPONGE_API_KEY" \
-H "Sponge-Version: 0.2.0" \
-H "Content-Type: application/json" \
-d '{
"url":"https://paysponge.com/exa/search",
"method":"POST",
"body":{"query":"best pizza in NYC","text":true},
"chain":"tempo"
}'
Parameters:
url (required): The proxy URL from step 2 + endpoint pathmethod (optional): HTTP method — GET, POST, PUT, DELETE, PATCH (defaults to GET)headers (optional): Additional headers to send with the requestbody (optional): Request body for POST/PUT/PATCH requestschain (optional): tempo (testnet) or tempo-mainnet (defaults to your key's available Tempo chain)The mpp_fetch tool handles the entire payment flow automatically:
payment_made and payment_detailsTest keys (sponge_test_*): sepolia, base-sepolia, solana-devnet, tempo
Live keys (sponge_live_*): ethereum, base, solana, tempo-mainnet
Errors return JSON with an error message and HTTP status:
{"error":"message"}
| Status | Meaning | Common Cause | |--------|---------|--------------| | 400 | Bad Request | Missing/invalid fields | | 401 | Unauthorized | Missing or invalid API key | | 403 | Forbidden | Address not in allowlist or permission denied | | 404 | Not Found | Resource does not exist | | 409 | Conflict | Duplicate action | | 429 | Rate Limited | Too many requests (back off + retry) | | 500 | Server Error | Transient; retry later |
~/.spongewallet/credentials.json and restrict file permissions.Built for agents.
documentation
Post tweets to @HelvetiVault with validation and posting rules enforcement. Supports text, threads, and media. Enforces daily limits and content guidelines.
tools
# Scrapling Skill - Advanced Web Scraping ## Overview Scrapling is a modern web scraping framework with: - **Adaptive element finding** — Survives website redesigns - **Anti-bot bypass** — Handles Cloudflare Turnstile - **MCP Server** — Token-optimized content extraction for AI - **Multiple fetchers** — HTTP (fast) or browser-based (stealth) ## Installation Already installed in venv at `~/.openclaw/workspace/skills/scrapling/venv/` **Dependencies:** - Python 3.10+ - Chromium browser (instal
development
Identify plants, detect diseases, and provide biodynamic care recommendations using Pl@ntNet API. Supports image URLs and local files. Returns species name, confidence score, care tips aligned with lunar calendar, and treatment recommendations.
tools
Get lunar phases, biodynamic calendar (Michel Gros method), and holistic environmental readings. Use when discussing moon influence, planting calendars, biodynamic agriculture, or requesting environmental/holistic context.