API Reference
Complete reference for all 18 Bundie MCP tools - inputs, outputs, and usage.
The Bundie EVM MCP server (@bundie/evm-mcp) registers 18 tools. Tool names use underscores (e.g. yields_check).
Tools that act on a chain take a required chainId — there is no default. Pass one of the supported chain IDs, e.g. 42161 (Arbitrum, hub), 8453 (Base), 534352 (Scroll). When OAuth is enabled, walletAddress can be omitted and is resolved from your signed-in session.
Read Tools
yields_check
Browse current DeFi yield opportunities across EVM chains with APY and risk data.
| Param | Type | Required | Description |
|---|---|---|---|
token | string | No | Filter by token symbol (e.g., USDC, USDT) |
minApy | number | No | Minimum APY (decimal, e.g., 0.05 for 5%) |
chain | string | No | Filter by chain name (e.g., base, arbitrum, scroll) |
sortBy | "apy" | "name" | No | Sort field (default: apy) |
limit | number | No | Max results (default: 10) |
yields_risk_scores
Get detailed risk scores and risk component breakdown for all yield protocols. Shows security, liquidity, maturity, and centralization scores.
| Param | Type | Required | Description |
|---|---|---|---|
token | string | No | Filter by token symbol (e.g., USDC) |
chain | string | No | Filter by chain name (e.g., base, arbitrum) |
minRisk | number | No | Minimum overall risk score (0-100, higher = safer) |
sortBy | "risk" | "apy" | No | Sort by risk score or APY (default: risk) |
limit | number | No | Max results (default: 10) |
portfolio_view
Check current positions, allocation breakdown, and weighted APY for a wallet.
| Param | Type | Required | Description |
|---|---|---|---|
walletAddress | string | No | Ethereum address (0x...). Omit if signed in via OAuth |
chainId | number | Yes | Chain ID (e.g., 42161 Arbitrum, 8453 Base, 534352 Scroll) |
wallet_balance
Check the token balance of a wallet on a specific chain.
| Param | Type | Required | Description |
|---|---|---|---|
walletAddress | string | No | Wallet address to check (0x...). Omit if signed in via OAuth |
asset | string | No | Token symbol (USDC, USDT) or address (0x...) (default: USDC) |
chainId | number | Yes | Chain ID to query |
wallet_get_deposit_address
Resolve any address linked to your Bundie account to your smart-wallet deposit address. The same address receives funds on every supported EVM chain.
| Param | Type | Required | Description |
|---|---|---|---|
walletAddress | string | No | Any address linked to your Bundie account (0x...). Omit if signed in via OAuth |
sourceChain | string | No | Chain you're sending from (e.g., "arbitrum", "base") — display only; the deposit address is the same on every chain |
wallet_wait_for_deposit
Poll a wallet's balance until it reaches a minimum threshold. Useful after generating a deposit address or onramp link.
| Param | Type | Required | Description |
|---|---|---|---|
walletAddress | string | No | Wallet to watch (0x...). Omit if signed in via OAuth |
chainId | number | Yes | Chain to watch (e.g., 42161 Arbitrum, 8453 Base) |
minAmount | string | Yes | Minimum amount to wait for, human-readable (e.g., "1" for 1 USDC) |
asset | string | No | Token to watch — USDC or USDT (default: USDC) |
timeoutSeconds | number | No | Max seconds to wait (default: 600, capped at 1800) |
bridge_status
Check the status of a Relay Protocol bridge request. Returns current status, estimated completion time, and transaction hashes.
| Param | Type | Required | Description |
|---|---|---|---|
requestId | string | Yes | Bridge request ID returned by bridge |
yields_buy
Generate a payment link to buy crypto (USDC/USDT) with a credit card or bank transfer via Ramp Network or Transak. The user clicks the link, completes payment, and receives crypto in their wallet.
| Param | Type | Required | Description |
|---|---|---|---|
walletAddress | string | Yes | Wallet address to receive the crypto (0x...) |
fiatAmount | number | No | Amount in fiat currency (default: 100) |
fiatCurrency | string | No | Fiat currency code (USD, EUR, GBP, etc.) (default: USD) |
cryptoCurrency | string | No | Crypto to buy — USDC or USDT (default: USDC) |
network | string | No | Network to receive on: base, ethereum, polygon, arbitrum (default: base) |
Write Tools
vault_deposit
Deposit assets into your Bundie Account. The Account holds funds on its chain that can then be allocated to yield strategies.
| Param | Type | Required | Description |
|---|---|---|---|
walletAddress | string | No | Your wallet address. Omit if signed in via OAuth |
asset | string | Yes | Token symbol (USDC, USDT) or address (0x...) |
amount | string | Yes | Human-readable amount (e.g., "100.5") |
chainId | number | Yes | Chain ID (e.g., 42161, 8453, 534352) |
vault_withdraw
Withdraw assets from your Bundie Account back to your wallet or a specified address.
| Param | Type | Required | Description |
|---|---|---|---|
walletAddress | string | No | Your wallet address. Omit if signed in via OAuth |
asset | string | Yes | Token symbol or address |
amount | string | Yes | Human-readable amount |
recipientAddress | string | No | Withdraw to a different address |
chainId | number | Yes | Chain ID |
strategy_deposit
Deposit into a specific cross-chain yield strategy by protocol ID. Use yields_check first to find protocol IDs.
| Param | Type | Required | Description |
|---|---|---|---|
walletAddress | string | No | Your wallet address. Omit if signed in via OAuth |
protocolId | string | Yes | Protocol UUID from yields_check |
amount | string | Yes | Human-readable amount |
asset | string | No | Token symbol (default: USDC) |
chainId | number | Yes | Chain ID |
strategy_withdraw
Withdraw from a specific strategy position. Use portfolio_view to see your position indices.
| Param | Type | Required | Description |
|---|---|---|---|
walletAddress | string | No | Your wallet address. Omit if signed in via OAuth |
positionIndex | number | Yes | Position index from portfolio_view |
amount | string | Yes | Human-readable amount |
asset | string | No | Token symbol (default: USDC) |
destinationChain | number | Yes | Chain ID to receive funds |
chainId | number | Yes | Source chain ID where the position lives |
bridge
Bridge USDC or USDT between any supported chains via Relay Protocol. Returns a requestId that can be tracked with bridge_status.
| Param | Type | Required | Description |
|---|---|---|---|
walletAddress | string | No | Wallet initiating the bridge (0x...). Omit if signed in via OAuth |
amount | string | Yes | Human-readable amount (e.g., "100.5") |
asset | string | No | Token to bridge — USDC or USDT (default: USDC) |
sourceChain | string | Yes | Source chain name or ID: ethereum, optimism, arbitrum, base, polygon, scroll, mode, linea, tempo |
destinationChain | string | Yes | Destination chain name or ID |
AI Tools
wallet_analyze
Full AI wallet analysis - risk profile, on-chain behavior, DeFi positions, idle assets.
| Param | Type | Required | Description |
|---|---|---|---|
walletAddress | string | No | Wallet to analyze (0x...). Omit if signed in via OAuth |
Note: Takes 1-3 minutes for new wallets. Results cached for 7 days.
wallet_recommend
AI-recommended diversified yield bundle. Analyzes the wallet first (if not cached), then runs a Bull/Bear/Moderator debate to select optimal strategies.
| Param | Type | Required | Description |
|---|---|---|---|
walletAddress | string | No | Wallet to recommend for (0x...). Omit if signed in via OAuth |
tokens | string[] | No | Filter by tokens (e.g., ["USDC"]) |
chains | number[] | No | Filter by chain IDs (e.g., [8453, 42161]) |
minRiskScore | number | No | Min risk score (0-100, higher = safer) (default: 70) |
maxRiskScore | number | No | Max risk score |
bundleSize | number | No | Strategies per bundle (1-10, default: 3) |
excludeUSX | boolean | No | Exclude USX token |
portfolio_rebalance
Compare current positions against optimal allocation, with optional auto-execute.
| Param | Type | Required | Description |
|---|---|---|---|
walletAddress | string | No | Your wallet address. Omit if signed in via OAuth |
chainId | number | Yes | Chain ID |
autoExecute | boolean | No | Execute rebalance automatically (default: false) |
wallet_migrate
Find yield migration opportunities - compare external DeFi positions against Bundie.
| Param | Type | Required | Description |
|---|---|---|---|
walletAddress | string | No | Wallet to check (0x...). Omit if signed in via OAuth |
Note: Requires a prior wallet analysis. Run wallet_analyze first.
State Tool
portfolio_preferences
Set yield selection rules for the session. Applied to all subsequent wallet_recommend and portfolio_rebalance calls.
| Param | Type | Required | Description |
|---|---|---|---|
walletAddress | string | No | Wallet address. Omit if signed in via OAuth |
maxAllocationPerProtocol | number | No | Max % in any single protocol |
auditedOnly | boolean | No | Only audited protocols |
minRiskScore | number | No | Min risk score (0-100) |
maxRiskScore | number | No | Max risk score |
excludeChains | number[] | No | Chain IDs to exclude |
excludeProtocols | string[] | No | Protocol names to exclude |
preferredTokens | string[] | No | Preferred token symbols |
Natural Language Mapping
| User says | Preference set |
|---|---|
| "only audited protocols" | auditedOnly: true |
| "max 30% in one place" | maxAllocationPerProtocol: 30 |
| "nothing below 75 risk" | minRiskScore: 75 |
| "only USDC" | preferredTokens: ["USDC"] |
| "no Optimism" | excludeChains: [10] |
Connection Setup
Hosted (recommended)
{
"mcpServers": {
"bundie": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://mcp.bundie.fi/evm"]
}
}
}Self-Hosted
{
"mcpServers": {
"bundie": {
"command": "npx",
"args": ["-y", "@bundie/evm-mcp"],
"env": {
"BACKEND_URL": "https://backend.bundie.fi",
"BACKEND_API_KEY": "your-key",
"ANALYZER_URL": "https://ai.bundie.fi",
"ANALYZER_API_KEY": "your-key"
}
}
}
}Contact info@bundie.fi for self-hosted API keys.