Install
openclaw skills install riskagentAI-powered crypto trading agent and LLM gateway via natural language. Use when the user wants to trade crypto, check portfolio balances, view token prices, t...
openclaw skills install riskagentExecute crypto trading and DeFi operations using natural language. Two integration options:
@bankr/cli for a batteries-included terminal experiencehttps://api.bankr.bot directly from any language or toolBoth use the same API key and the same async job workflow under the hood.
Before using either option, you need a Bankr API key. Two ways to get one:
Option A: Headless email login (recommended for agents)
Two-step flow — send OTP, then verify and complete setup. See "First-Time Setup" below for the full guided flow with user preference prompts.
# Step 1 — send OTP to email
bankr login email user@example.com
# Step 2 — verify OTP and generate API key (options based on user preferences)
bankr login email user@example.com --code 123456 --accept-terms --key-name "My Agent" --read-write
This creates a wallet, accepts terms, and generates an API key — no browser needed. Before running step 2, ask the user whether they need read-only or read-write access, LLM gateway, and their preferred key name.
Option B: Bankr Terminal
bk_...)Both options automatically provision EVM wallets (Base, Ethereum, Polygon, Unichain) and a Solana wallet — no manual wallet setup needed.
bun install -g @bankr/cli
Or with npm:
npm install -g @bankr/cli
When the user asks to log in with an email, walk them through this flow:
Step 1 — Send verification code
bankr login email <user-email>
Step 2 — Ask the user for the OTP code they received via email.
Step 3 — Before completing login, ask the user about their preferences:
--accept-terms unless the user has explicitly confirmed.--read-write) — enables swaps, transfers, orders, token launches, leverage, Polymarket bets--llm) — multi-model API at llm.bankr.bot (currently limited to beta testers). Skip if user doesn't need it.--key-name) — a display name for the API key (e.g. "My Agent", "Trading Bot")Step 4 — Construct and run the step 2 command with the user's choices:
# Example with all options
bankr login email <user-email> --code <otp> --accept-terms --key-name "My Agent" --read-write --llm
# Example read-only, no LLM
bankr login email <user-email> --code <otp> --accept-terms --key-name "Research Bot"
| Option | Description |
|---|---|
--code <otp> | OTP code received via email (step 2) |
--accept-terms | Accept Terms of Service without prompting (required for new users) |
--key-name <name> | Display name for the API key (e.g. "My Agent"). Prompted if omitted |
--read-write | Enable write operations: swaps, transfers, orders, token launches, leverage, Polymarket bets. Without this flag, the key is read-only (portfolio, balances, prices, research only) |
--llm | Enable LLM gateway access (multi-model API at llm.bankr.bot). Currently limited to beta testers |
Any option not provided on the command line will be prompted interactively by the CLI, so you can mix headless and interactive as needed.
If the user already has an API key:
bankr login --api-key bk_YOUR_KEY_HERE
If they need to create one at the Bankr Terminal:
bankr login --url — prints the terminal URLbk_... keybankr login --api-key bk_THE_KEYIf your LLM gateway key differs from your API key, pass --llm-key during login or run bankr config set llmKey YOUR_LLM_KEY afterward. When not set, the API key is used for both. See references/llm-gateway.md for full details.
bankr whoami
bankr prompt "What is my balance?"
No CLI installation required — call the API directly with curl, fetch, or any HTTP client.
All requests require an X-API-Key header:
curl -X POST "https://api.bankr.bot/agent/prompt" \
-H "X-API-Key: bk_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"prompt": "What is my ETH balance?"}'
# 1. Submit a prompt — returns a job ID
JOB=$(curl -s -X POST "https://api.bankr.bot/agent/prompt" \
-H "X-API-Key: $BANKR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"prompt": "What is my ETH balance?"}')
JOB_ID=$(echo "$JOB" | jq -r '.jobId')
# 2. Poll until terminal status
while true; do
RESULT=$(curl -s "https://api.bankr.bot/agent/job/$JOB_ID" \
-H "X-API-Key: $BANKR_API_KEY")
STATUS=$(echo "$RESULT" | jq -r '.status')
[ "$STATUS" = "completed" ] || [ "$STATUS" = "failed" ] || [ "$STATUS" = "cancelled" ] && break
sleep 2
done
# 3. Read the response
echo "$RESULT" | jq -r '.response'
Every prompt response includes a threadId. Pass it back to continue the conversation:
# Start — the response includes a threadId
curl -X POST "https://api.bankr.bot/agent/prompt" \
-H "X-API-Key: $BANKR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"prompt": "What is the price of ETH?"}'
# → {"jobId": "job_abc", "threadId": "thr_XYZ", ...}
# Continue — pass threadId to maintain context
curl -X POST "https://api.bankr.bot/agent/prompt" \
-H "X-API-Key: $BANKR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"prompt": "And what about SOL?", "threadId": "thr_XYZ"}'
Omit threadId to start a new conversation. CLI equivalent: bankr prompt --continue (reuses last thread) or bankr prompt --thread <id>.
| Endpoint | Method | Description |
|---|---|---|
/agent/prompt | POST | Submit a prompt (async, returns job ID) |
/agent/job/{jobId} | GET | Check job status and results |
/agent/job/{jobId}/cancel | POST | Cancel a running job |
/agent/balances | GET | Wallet balances across chains (sync, optional ?chains= filter) |
/agent/sign | POST | Sign messages/transactions (sync) |
/agent/submit | POST | Submit raw transactions (sync) |
For full API details (request/response schemas, job states, rich data, polling strategy), see:
Reference: references/api-workflow.md | references/sign-submit-api.md
| Command | Description |
|---|---|
bankr login | Authenticate with the Bankr API (interactive menu) |
bankr login email <address> | Send OTP to email (headless step 1) |
bankr login email <address> --code <otp> [options] | Verify OTP and complete setup (headless step 2) |
bankr login --api-key <key> | Login with an existing API key directly |
bankr login --api-key <key> --llm-key <key> | Login with separate LLM gateway key |
bankr login --url | Print Bankr Terminal URL for API key generation |
bankr logout | Clear stored credentials |
bankr whoami | Show current authentication info |
bankr prompt <text> | Send a prompt to the Bankr AI agent |
bankr prompt --continue <text> | Continue the most recent conversation thread |
bankr prompt --thread <id> <text> | Continue a specific conversation thread |
bankr status <jobId> | Check the status of a running job |
bankr cancel <jobId> | Cancel a running job |
bankr balances | Show wallet token balances across all chains |
bankr balances --chain <chains> | Filter by chain(s): base, polygon, mainnet, unichain, solana (comma-separated) |
bankr balances --json | Output raw JSON balances |
bankr skills | Show all Bankr AI agent skills with examples |
| Command | Description |
|---|---|
bankr config get [key] | Get config value(s) |
bankr config set <key> <value> | Set a config value |
bankr --config <path> <command> | Use a custom config file path |
Valid config keys: apiKey, apiUrl, llmKey, llmUrl
Default config location: ~/.bankr/config.json. Override with --config or BANKR_CONFIG env var.
| Variable | Description |
|---|---|
BANKR_API_KEY | API key (overrides stored key) |
BANKR_API_URL | API URL (default: https://api.bankr.bot) |
BANKR_LLM_KEY | LLM gateway key (falls back to BANKR_API_KEY if not set) |
BANKR_LLM_URL | LLM gateway URL (default: https://llm.bankr.bot) |
Environment variables override config file values. Config file values override defaults.
| Command | Description |
|---|---|
bankr llm models | List available LLM models |
bankr llm credits | Check credit balance |
bankr llm credits add <amount> [--token <addr>] [-y] | Top up LLM credits from wallet |
bankr llm credits auto [--enable/--disable] [--amount] [--threshold] [--tokens] | View or configure auto top-up |
bankr llm setup openclaw [--install] | Generate or install OpenClaw config |
bankr llm setup opencode [--install] | Generate or install OpenCode config |
bankr llm setup claude | Show Claude Code environment setup |
bankr llm setup cursor | Show Cursor IDE setup instructions |
bankr llm claude [args...] | Launch Claude Code via the Bankr LLM Gateway |
For straightforward requests that complete quickly:
bankr prompt "What is my ETH balance?"
bankr prompt "What's the price of Bitcoin?"
The CLI handles the full submit-poll-complete workflow automatically. You can also use the shorthand — any unrecognized command is treated as a prompt:
bankr What is the price of ETH?
For prompts containing $ or special characters that the shell would expand:
# Interactive mode — no shell expansion issues
bankr prompt
# Then type: Buy $50 of ETH on Base
# Or pipe input
echo 'Buy $50 of ETH on Base' | bankr prompt
Continue a multi-turn conversation with the agent:
# First prompt — starts a new thread automatically
bankr prompt "What is the price of ETH?"
# → Thread: thr_ABC123
# Continue the conversation (agent remembers the ETH context)
bankr prompt --continue "And what about BTC?"
bankr prompt -c "Compare them"
# Resume any thread by ID
bankr prompt --thread thr_ABC123 "Show me ETH chart"
Thread IDs are automatically saved to config after each prompt. The --continue / -c flag reuses the last thread.
For advanced use or long-running operations:
# Submit and get job ID
bankr prompt "Buy $100 of ETH"
# → Job submitted: job_abc123
# Check status of a specific job
bankr status job_abc123
# Cancel if needed
bankr cancel job_abc123
The Bankr LLM Gateway is a unified API for Claude, Gemini, GPT, and other models — multi-provider access, cost tracking, automatic failover, and SDK compatibility through a single endpoint.
Base URL: https://llm.bankr.bot | Dashboard: bankr.bot/llm | API Keys: bankr.bot/api
llmKey if configured, otherwise falls back to your API keybankr llm credits add 25 or at bankr.bot/llm?tab=credits before making any LLM calls, or you will get a 402 errorbankr llm credits | Top up: bankr llm credits add <amount> | Auto top-up: bankr llm credits auto --enable --amount 25 --tokens USDCbankr/ (e.g. bankr/claude-sonnet-4.6). In direct API calls, use bare IDs (e.g. claude-sonnet-4.6)bankr llm models # List available models
bankr llm credits # Check credit balance
bankr llm credits add 25 # Top up $25 credits (USDC)
bankr llm credits auto --enable --amount 25 --tokens USDC # Auto top-up
bankr llm setup openclaw --install # Install Bankr provider into OpenClaw
bankr llm setup claude # Print Claude Code env vars
bankr llm claude # Launch Claude Code through gateway
For full details — setup paths, model list, provider config, SDK examples, key management, and troubleshooting — see:
Reference: references/llm-gateway.md
Reference: references/token-trading.md
bankr balances or GET /agent/balances)bankr balances --chain base,solana or GET /agent/balances?chains=base,solanaReference: references/portfolio.md
Reference: references/market-research.md
Reference: references/transfers.md
Reference: references/nft-operations.md
Reference: references/polymarket.md
Reference: references/leverage-trading.md
Reference: references/token-deployment.md
Reference: references/automation.md
Reference: references/arbitrary-transaction.md
| Chain | Native Token | Best For | Gas Cost |
|---|---|---|---|
| Base | ETH | Memecoins, general trading | Very Low |
| Polygon | MATIC | Gaming, NFTs, frequent trades | Very Low |
| Ethereum | ETH | Blue chips, high liquidity | High |
| Solana | SOL | High-speed trading | Minimal |
| Unichain | ETH | Newer L2 option | Very Low |
Dedicated Agent Wallet: When building autonomous agents, create a separate Bankr account rather than using your personal wallet. This isolates agent funds — if a key is compromised, only the agent wallet is exposed. Fund it with limited amounts and replenish as needed.
API Key Types: Bankr uses a single key format (bk_...) with capability flags (agentApiEnabled, llmGatewayEnabled). You can optionally configure a separate LLM Gateway key via bankr config set llmKey or BANKR_LLM_KEY — useful when you want independent revocation or different permissions for agent vs LLM access.
Read-Only API Keys: Keys with readOnly: true filter all write tools (swaps, transfers, staking, token launches, etc.) from agent sessions. The /agent/sign and /agent/submit endpoints return 403. Ideal for monitoring bots and research agents.
IP Whitelisting: Set allowedIps on your API key to restrict usage to specific IPs. Requests from non-whitelisted IPs are rejected with 403 at the auth layer.
Rate Limits: 100 messages/day (standard), 1,000/day (Bankr Club), or custom per key. Resets 24h from first message (rolling window). LLM Gateway uses a credit-based system.
Key safety rules:
BANKR_API_KEY, BANKR_LLM_KEY), never in source code~/.bankr/ and .env to .gitignore — the CLI stores credentials in ~/.bankr/config.jsonwaitForConfirmation: true with /agent/submit — transactions execute immediately with no confirmation promptReference: references/safety.md
# Check balance
bankr prompt "What is my ETH balance on Base?"
# Check price
bankr prompt "What's the current price of PEPE?"
# Then trade
bankr prompt "Buy $20 of PEPE on Base"
# Direct balance check (no AI agent, instant response)
bankr balances
bankr balances --chain base
bankr balances --chain base,solana
bankr balances --json
# Via AI agent (natural language, richer context)
bankr prompt "Show my complete portfolio"
# Chain-specific
bankr prompt "What tokens do I have on Base?"
# Token-specific
bankr prompt "Show my ETH across all chains"
# DCA strategy
bankr prompt "DCA $100 into ETH every week"
# Stop loss protection
bankr prompt "Set stop loss for my ETH at $2,500"
# Limit order
bankr prompt "Buy ETH if price drops to $3,000"
# Price and analysis
bankr prompt "Do technical analysis on ETH"
# Trending tokens
bankr prompt "What tokens are trending on Base?"
# Compare tokens
bankr prompt "Compare ETH vs SOL"
Bankr uses an asynchronous job-based API:
threadId), get job ID and thread IDthreadId for multi-turn conversationsThe bankr prompt command handles this automatically. When using the REST API directly, implement the poll loop yourself (see Option 2 above or the reference below). For manual job control via CLI, use bankr status <jobId> and bankr cancel <jobId>.
For details on the API structure, job states, polling strategy, and error handling, see:
Reference: references/api-workflow.md
For direct signing and transaction submission, Bankr also provides synchronous endpoints:
These endpoints return immediately (no polling required) and are ideal for:
Reference: references/sign-submit-api.md
Common issues and fixes:
bankr login or check bankr whoami (CLI), or verify your X-API-Key header (REST API)For comprehensive error troubleshooting, setup instructions, and debugging steps, see:
Reference: references/error-handling.md
~/.bankr/ to .gitignoreSee references/safety.md for comprehensive safety guidance.
bankr balances (direct, no AI processing)bankr balances --chain base (single chain)Solana (LaunchLab):
EVM (Clanker):
Direct message signing without AI processing:
# Sign a plain text message
curl -X POST "https://api.bankr.bot/agent/sign" \
-H "X-API-Key: $API_KEY" \
-H "Content-Type: application/json" \
-d '{"signatureType": "personal_sign", "message": "Hello, Bankr!"}'
# Sign EIP-712 typed data (permits, orders)
curl -X POST "https://api.bankr.bot/agent/sign" \
-H "X-API-Key: $API_KEY" \
-H "Content-Type: application/json" \
-d '{"signatureType": "eth_signTypedData_v4", "typedData": {...}}'
# Sign a transaction without broadcasting
curl -X POST "https://api.bankr.bot/agent/sign" \
-H "X-API-Key: $API_KEY" \
-H "Content-Type: application/json" \
-d '{"signatureType": "eth_signTransaction", "transaction": {"to": "0x...", "chainId": 8453}}'
Direct transaction submission without AI processing:
# Submit a raw transaction
curl -X POST "https://api.bankr.bot/agent/submit" \
-H "X-API-Key: $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"transaction": {"to": "0x...", "chainId": 8453, "value": "1000000000000000000"},
"waitForConfirmation": true
}'
Reference: references/sign-submit-api.md
# Verify installation
which bankr
# Reinstall if needed
bun install -g @bankr/cli
CLI:
# Check current auth
bankr whoami
# Re-authenticate
bankr login
# Check LLM key specifically
bankr config get llmKey
REST API:
# Test your API key
curl -s "https://api.bankr.bot/_health" -H "X-API-Key: $BANKR_API_KEY"
See references/error-handling.md for comprehensive troubleshooting.
bankr whoami to verify auth (CLI) or test with a curl to /_health (REST API)bankr prompt "What is my balance?" or POST /agent/prompt)Pro Tip: The most common issue is not specifying the chain for tokens. When in doubt, always include "on Base" or "on Ethereum" in your prompt.
Security: Keep your API key private. Never commit your config file to version control. Only trade amounts you can afford to lose.
Quick Win: Start by checking your portfolio (bankr prompt "Show my portfolio") to see what's possible, then try a small $5-10 trade on Base to get familiar with the flow.
Agents can create and manage public profile pages at bankr.bot/agents. Profiles showcase project metadata, team info, token data (chart + market cap), weekly fee revenue, shipped products, and a Twitter activity feed.
Eligibility: You must have deployed a token through Bankr (Doppler or Clanker) or be a fee beneficiary on the token to create a profile. The token address is verified against your deployment history and beneficiary records.
approved: false and become publicly visible after admin approvalbankr profile # View own profile
bankr profile create # Interactive creation wizard
bankr profile create --name "My Agent" --token 0x... --twitter myagent
bankr profile update --description "Updated description"
bankr profile delete # Delete own profile (with confirmation)
bankr profile add-update # Add a project update
bankr profile add-update --title "v2 Launch" --content "Shipped new features"
All commands support --json for structured output (enables programmatic use).
All endpoints require API key authentication via X-API-Key header.
| Method | Path | Description |
|---|---|---|
GET | /agent/profile | Get own profile |
POST | /agent/profile | Create profile |
PUT | /agent/profile | Update profile fields |
DELETE | /agent/profile | Delete own profile |
POST | /agent/profile/update | Add a project update |
Create profile:
curl -X POST "https://api.bankr.bot/agent/profile" \
-H "X-API-Key: $BANKR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"projectName": "My Agent", "tokenAddress": "0x...", "description": "An AI trading agent"}'
Add a project update:
curl -X POST "https://api.bankr.bot/agent/profile/update" \
-H "X-API-Key: $BANKR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"title": "v2 Launch", "content": "Shipped swap optimization and new UI"}'
See references/agent-profiles.md for the full integration guide.