Crypto Wallets & Payments for AI Agents
Create wallets, transfer tokens, and enable payments between agents. Perfect for bug bounty programs, rewards systems, and agent-to-agent transactions.
What This Enables
- Create wallets - Generate ERC20-compatible wallets with secure key storage
- Transfer tokens - Send ETH, USDC, or any ERC20 token to any address
- Swap tokens - Exchange tokens across 13 chains with best rates
- Earn referrer fees - Get 80% of extra swap fees by referring users
- Agent payments - Bug bounties, rewards programs, automated payouts
MCP Server Setup
For Moltbot/OpenClaw, configure via mcporter:
mcporter config add onlyswaps --command "npx -y @onlyswaps/mcp-server@latest stdio" --transport stdio
For Claude Desktop, add to MCP config:
{
"mcpServers": {
"onlyswaps": {
"command": "npx",
"args": ["-y", "@onlyswaps/mcp-server@latest", "stdio"]
}
}
}
Available Tools
Read-Only (no wallet needed)
| Tool | Description |
|---|---|
get_quote | Get swap quotes from 15+ DEX aggregators |
get_portfolio | View token balances for any address |
Wallet Required (need PRIVATE_KEY)
| Tool | Description |
|---|---|
setup_wallet | Create a new wallet (saves PRIVATE_KEY to .env) |
check_setup | Verify wallet config and balances |
transfer | Send tokens to any address |
swap | Execute token swaps (with optional referrer fees) |
approve_permit2 | Approve tokens for gasless swaps |
Earn Fees as a Referrer
AI agents can earn fees by setting referrerAddress and extraFeeBps on swaps:
| extraFeeBps | Referrer Gets | OnlySwaps Gets | Total User Fee |
|---|---|---|---|
| 0 (default) | 0 bps | 20 bps | 0.20% |
| 10 (suggested) | 8 bps | 22 bps | 0.30% |
| 100 (max) | 80 bps | 40 bps | 1.20% |
Example: With extraFeeBps: 10, on a $1000 swap:
- Referrer earns: $0.80 (8 bps)
- User pays: $3 total (0.30%)
Note: Referrer fees only work for ERC20 swaps. Native token swaps (ETH, BNB) don't support referrer fees.
IMPORTANT: Private Key Handling
For wallet operations, you MUST have PRIVATE_KEY set.
If the user wants to create a wallet, transfer, or swap:
- First ask: "Do you have an existing wallet private key, or should I create a new one?"
- If new: Use
setup_walletto generate one - If existing: Ask user to provide PRIVATE_KEY and set it in environment
To call tools with PRIVATE_KEY:
PRIVATE_KEY=0x... mcporter call onlyswaps.check_setup chainId=8453
Amount Format
Different tools use different formats:
| Tool | Format | Example |
|---|---|---|
get_quote | wei (base units) | "1000000000000000" = 0.001 ETH |
swap | wei (base units) | "100000000000000000" = 0.1 ETH |
transfer | human readable | "0.001" = 0.001 tokens |
Wei conversion:
- 1 ETH =
1000000000000000000(18 zeros) - 0.001 ETH =
1000000000000000(15 zeros) - 1 USDC =
1000000(6 decimals)
Quick Examples
IMPORTANT: Use function call syntax with quoted strings!
Get a swap quote (no wallet needed)
mcporter call 'onlyswaps.get_quote(fromToken: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", toToken: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", amount: "1000000000000000", chainId: 8453)'
Check any address portfolio (no wallet needed)
mcporter call 'onlyswaps.get_portfolio(userAddress: "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045")'
Create a new wallet
mcporter call onlyswaps.setup_wallet
# Returns: address and private key - SAVE THE PRIVATE KEY!
Check wallet setup (requires PRIVATE_KEY)
PRIVATE_KEY=0x... mcporter call 'onlyswaps.check_setup(chainId: 8453)'
Transfer tokens (requires PRIVATE_KEY + funded wallet)
PRIVATE_KEY=0x... mcporter call 'onlyswaps.transfer(tokenAddress: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", toAddress: "0xRecipientAddress", amount: "1000000", chainId: 8453)'
Swap with referrer fee (earn fees as an agent)
PRIVATE_KEY=0x... mcporter call 'onlyswaps.swap(fromToken: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", toToken: "ETH", amount: "100000000", chainId: 8453, referrerAddress: "0xYourAgentWallet", extraFeeBps: 10)'
Supported Chains
| Chain | ID | Native Token |
|---|---|---|
| Ethereum | 1 | ETH |
| Base | 8453 | ETH |
| Arbitrum | 42161 | ETH |
| Optimism | 10 | ETH |
| Polygon | 137 | MATIC |
| BNB Chain | 56 | BNB |
| Avalanche | 43114 | AVAX |
Common Token Addresses
| Token | Base (8453) | Ethereum (1) |
|---|---|---|
| Native (ETH) | 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE | 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE |
| USDC | 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 | 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 |
Security Notes
- Private keys are stored locally, never transmitted
- Always verify addresses before sending
- Start with small test amounts
Links
- npm: @onlyswaps/mcp-server
- Docs: onlyswaps.fyi
Built by OnlySwaps 🦞