用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/Demerzels-lab/elsamultiskillagent --skill sponge-wallet命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
The philosophical layer for AI agents.
Agents can sign plugins, rotate credentials without losing identity, and publicly attest to behavior.
A relaxing resource-gathering RPG where AI agents collect resources, trade with NPCs, and manage and build their world at their own pace.
正在显示 SKILL.md
基于 SOC 职业分类
| name | sponge-wallet |
| version | 1.0.0 |
| description | Manage crypto wallets, transfers, swaps, and balances via the Sponge Wallet API. |
| homepage | https://wallet.paysponge.com |
| user-invocable | true |
| metadata | {"openclaw":{"emoji":"🧽","category":"finance","primaryEnv":"SPONGE_API_KEY","requires":{"env":["SPONGE_API_KEY"]}}} |
SPONGE WALLET API QUICK REFERENCE v1.0.0
Base: https://api.wallet.paysponge.com
Auth: Authorization: Bearer <SPONGE_API_KEY>
Docs: This file is canonical (skills guide + params)
Key endpoints:
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)
GET /api/balances -> get balances
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
POST /api/x402/payments -> create x402 payment
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.
apiKey once. 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_..."
}
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 loginStep 1 — Start registration
curl -sS -X POST "$SPONGE_API_URL/api/agents/register" \
-H "Content-Type: application/json" \
-d '{"name":"YourAgentName"}'
Response includes:
verificationUriComplete (claim URL for the human owner)claimCode, deviceCode, expiresIn, interval, claimTextStep 2 — Send the claim URL to the human owner They log in, optionally post the tweet text, and approve the agent.
Step 3 — Poll for completion
curl -sS -X POST "$SPONGE_API_URL/api/oauth/device/token" \
-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.
Phase 1 — Request device code
curl -sS -X POST "$SPONGE_API_URL/api/oauth/device/authorization" \
-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 "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
-H "Authorization: Bearer $SPONGE_API_KEY" \
-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.
| Tool | Method | Path | Params/Body |
|---|---|---|---|
get_balance | GET | /api/balances | Query: chain, allowedChains, onlyUsdc |
get_solana_tokens | GET | /api/solana/tokens | Query: chain |
search_solana_tokens | GET | /api/solana/tokens/search | Query: query, limit |
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 |
get_transaction_status | GET |
Note: request bodies use camelCase (e.g., inputToken, slippageBps).
curl -sS -X POST "$SPONGE_API_URL/api/agents/register" \
-H "Content-Type: application/json" \
-d '{"name":"YourAgentName"}'
Share the claim URL with your human, then poll for the token and store the apiKey.
curl -sS "$SPONGE_API_URL/api/balances?chain=base" \
-H "Authorization: Bearer $SPONGE_API_KEY" \
-H "Accept: application/json"
curl -sS -X POST "$SPONGE_API_URL/api/transfers/evm" \
-H "Authorization: Bearer $SPONGE_API_KEY" \
-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 "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 "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 "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 "Accept: application/json"
Test keys (sponge_test_*): sepolia, base-sepolia, solana-devnet, tempo
Live keys (sponge_live_*): ethereum, base, solana
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.
/api/transactions/status/{txHash}Query: chain |
get_transaction_history | GET | /api/transactions/history | Query: limit, chain |
request_funding | POST | /api/funding-requests | Body: amount, reason, chain, currency |
withdraw_to_main_wallet | POST | /api/wallets/withdraw-to-main | Body: chain, amount, currency |
create_x402_payment | POST | /api/x402/payments | Body: chain, to, token, amount, decimals, valid_for_seconds, resource_url, resource_description, fee_payer, http_method |