Get the FREE Ultimate OpenClaw Setup Guide →
R

Sponge Wallet

Flagged

@rishabluthra

{"isSafe":false,"isSuspicious":true,"riskLevel":"high","findings":[{"category":"prompt_injection","severity":"high","description":"The toolkit exposes high-impact financial operations (evm_transfer, solana_transfer, withdraw_to_main_wallet, request_funding) that can be invoked via wallet.mjs with JSON arguments. In a setup where an AI agent or user prompt can influence the tool invocation, this creates a risk of prompt-injection abuse leading to unauthorized transfers or fund movements.","evidence":"Tools include evm_transfer, solana_transfer, withdraw_to_main_wallet, and request_funding in the Wallet & Balance, Transfers, and Funding/Withdrawals sections."},{"category":"data_exfiltration","severity":"medium","description":"Paid API workflows (Sponge x402) include tasks like crawl and parse that fetch external URLs and documents. Depending on implementation, this could cause user data or documents to be sent to external services. Explicit data handling/consent controls are not described.","evidence":"Sponge Paid APIs show tasks such as {\"task\":\"crawl\",\"url\":\"https://example.com\"} and {\"task\":\"parse\",\"document_url\":\"https://example.com/doc.pdf\"}."},{"category":"data_exfiltration","severity":"medium","description":"Credentials are stored to ~/.spongewallet/credentials.json automatically. If these credentials are plaintext or not adequately protected, they risk local leakage or exposure on a compromised host. Consider secure storage (OS keychain, encrypted vault) and strict file permissions.","evidence":"Credentials are saved to ~/.spongewallet/credentials.json automatically."},{"category":"system_harm","severity":"high","description":"Direct on-chain operations (transfers, withdrawals) are available as tools. If an attacker or a misbehaving prompt gains control, funds could be moved without proper safeguards. Requires strong authentication, auditing, and possibly confirmation prompts or a read-only mode.","evidence":"Wallet tools include evm_transfer, solana_transfer, withdraw_to_main_wallet, and get_transaction_status; misused could move funds."},{"category":"suspicious_url","severity":"low","description":"Examples include placeholder domains (https://example.com) for crawl/parse tasks. Not inherently harmful, but these placeholders should be replaced with explicit, trusted endpoints in production to avoid confusion or leakage.","evidence":"Occurrences of https://example.com in the Paid APIs workflow."}],"summary":"Overall, the content primarily defines a feature-rich crypto-wallet skill with legitimate capabilities. However, it introduces high-risk elements (transfer/withdraw operations) that could be abused via prompt injection, and it involves external API calls and credential storage that warrant stronger safeguards. Recommendations include: strict input validation and permissioning for transfer-related tools, hardened authentication and approval workflows, audit logging, read-only or sandbox modes by default, secure credential storage (e.g., OS keychain, encrypted vault with restricted permissions), and explicit user consent for any data exfiltration or external API interactions."}

npx machina-cli add skill @rishabluthra/sponge-wallet --openclaw
Files (1)
SKILL.md
5.0 KB

Sponge Wallet Skill

Multi-chain crypto wallet with transfers, swaps, and paid API access.

Authentication

IMPORTANT: If any tool returns "Not authenticated" or "Invalid API key", run the login flow.

Login is two-phase (because Claude Code runs commands non-interactively):

Phase 1 — Start the device flow (returns a URL and code as JSON):

node <skill-path>/scripts/wallet.mjs login

Show the verification_url and user_code to the user. Tell them to open the URL in their browser and enter the code.

Phase 2 — After the user confirms they have approved, poll for the token:

node <skill-path>/scripts/wallet.mjs login --poll <device_code> <interval> <expires_in>

Use the device_code, interval, and expires_in values from Phase 1 output.

Credentials are saved to ~/.spongewallet/credentials.json automatically.

Credential resolution order:

  1. SPONGE_API_KEY environment variable (if set, skips stored credentials)
  2. ~/.spongewallet/credentials.json (saved by login)

Other auth commands:

  • node wallet.mjs whoami — show current auth status
  • node wallet.mjs logout — remove stored credentials

How to Execute

node <skill-path>/scripts/wallet.mjs <tool_name> '<json_args>'

Output is JSON with status: "success" or status: "error".

Available Tools

Wallet & Balance

ToolDescriptionRequiredOptional
get_balanceCheck balances across chainschain
get_solana_tokensDiscover all SPL tokens in walletchain
search_solana_tokensSearch Jupiter token databasequerylimit

Transfers

ToolDescriptionRequiredOptional
evm_transferTransfer ETH/USDC on Ethereum/Basechain, to, amount, currency
solana_transferTransfer SOL/USDC on Solanachain, to, amount, currency

Swaps

ToolDescriptionRequiredOptional
solana_swapSwap tokens via Jupiterchain, input_token, output_token, amountslippage_bps

Transactions

ToolDescriptionRequiredOptional
get_transaction_statusCheck tx statustransaction_hash, chain
get_transaction_historyView past transactionslimit, chain

Funding & Withdrawals

ToolDescriptionRequiredOptional
request_fundingRequest funds from owneramount, chain, currency
withdraw_to_main_walletReturn funds to ownerchain, amountcurrency

Paid APIs (Sponge x402)

ToolDescriptionRequiredOptional
spongeUnified paid API interfacetaskSee REFERENCE.md
create_x402_paymentCreate x402 payment payloadchain, to, amounttoken, decimals

Chain Reference

Test keys (sponge_test_*): sepolia, base-sepolia, solana-devnet, tempo Live keys (sponge_live_*): ethereum, base, solana

Common Workflows

Check Balance → Transfer → Verify

node wallet.mjs get_balance '{"chain":"base"}'
node wallet.mjs evm_transfer '{"chain":"base","to":"0x...","amount":"10","currency":"USDC"}'
node wallet.mjs get_transaction_status '{"transaction_hash":"0x...","chain":"base"}'

Swap Tokens on Solana

node wallet.mjs search_solana_tokens '{"query":"BONK"}'
node wallet.mjs solana_swap '{"chain":"solana","input_token":"SOL","output_token":"BONK","amount":"0.5"}'

Sponge Paid APIs

node wallet.mjs sponge '{"task":"search","query":"AI research papers"}'
node wallet.mjs sponge '{"task":"image","prompt":"sunset over mountains"}'
node wallet.mjs sponge '{"task":"predict","semantic_search":"will-trump-win-2028"}'
node wallet.mjs sponge '{"task":"crawl","url":"https://example.com"}'
node wallet.mjs sponge '{"task":"parse","document_url":"https://example.com/doc.pdf"}'
node wallet.mjs sponge '{"task":"prospect","apollo_query":"Stripe","apollo_endpoint":"companies"}'

Error Handling

ErrorResolution
Not authenticatedRun node wallet.mjs login
Invalid API keyRun node wallet.mjs login to re-authenticate
Chain 'X' is not allowedUse correct key type (test vs live) for the chain
Insufficient balanceUse request_funding
Address not in allowlistAdd recipient in the dashboard

See REFERENCE.md for detailed parameter docs.

Source

git clone https://clawhub.ai/rishabluthra/sponge-walletView on GitHub

Overview

Sponge Wallet is a multi-chain crypto wallet that supports transferring tokens, swapping on DEXes, and checking balances across chains. It also provides access to paid APIs via x402 micropayments, including search, image generation, web scraping, and more, secured by a two-phase login flow.

How This Skill Works

Actions are performed by running node <skill-path>/scripts/wallet.mjs with a specific tool and JSON arguments. Authentication uses a two-phase device flow to obtain a token, which is stored at ~/.spongewallet/credentials.json unless SPONGE_API_KEY is provided to bypass stored credentials. The toolkit exposes tools for balance, transfers, swaps, transactions, funding, and paid APIs (sponge, create_x402_payment) and always returns a JSON object with status.

When to Use It

  • You need to check balances across one or more chains before making a transfer or swap.
  • You want to transfer ETH/USDC on Ethereum/Base or SOL/USDC on Solana to another address.
  • You need to swap tokens on a DEX (e.g., Solana via Jupiter) as part of a workflow.
  • You require paid API services (search, image generation, web scraping, etc.) and must pay via x402 micropayments.
  • You want to verify a transaction status or review transaction history after sending funds.

Quick Start

  1. Step 1: Run node <skill-path>/scripts/wallet.mjs whoami to ensure you are authenticated.
  2. Step 2: Use a tool like get_balance or evm_transfer with properly scoped JSON arguments.
  3. Step 3: For paid APIs, create an x402 payment with create_x402_payment or invoke sponge for the task.

Best Practices

  • Authenticate first using the two-phase device flow and verify status with whoami before performing actions.
  • Always specify the exact chain and token/currency in transfers to avoid cross-chain mistakes.
  • Check balances with get_balance prior to transfers or swaps to prevent failures.
  • After sending funds, promptly check status with get_transaction_status to confirm success.
  • When using paid APIs, create and manage x402 payments (via sponge or create_x402_payment) and monitor outcomes.

Example Use Cases

  • node wallet.mjs get_balance '{"chain":"base"}'
  • node wallet.mjs evm_transfer '{"chain":"base","to":"0x...","amount":"10","currency":"USDC"}'
  • node wallet.mjs solana_swap '{"chain":"solana","input_token":"SOL","output_token":"USDC","amount":"5"}'
  • node wallet.mjs get_transaction_status '{"transaction_hash":"0x...","chain":"base"}'
  • node wallet.mjs sponge '{"task":"image-gen","prompt":"sunset over mountains"}'

Frequently Asked Questions

Add this skill to your agents
Sponsor this space

Reach thousands of developers