Connects Claude to Arcadia Finance's concentrated liquidity platform on Uniswap and Aerodrome. Exposes read tools for account health, PnL, LP strategy recommendations, lending pool APYs, and points leaderboards. Write tools return unsigned transactions for the full lifecycle: approve tokens, create accounts, deposit collateral, add liquidity with optional leverage, borrow against positions, rebalance, deleverage, and atomic close operations. Includes flash-action composability like deposit-swap-mint-leverage in one transaction. Useful when you need an agent to manage leveraged LP positions or analyze DeFi portfolio health without leaving the chat.
Public tool metadata for what this MCP can expose to an agent.
read.account.infoGet full overview of an Arcadia account: health factor, collateral value, debt, deposited assets, liquidation price, and automation status. Health factor = 1 - (used_margin / liquidation_value): 1 = no debt (safest), >0 = healthy, 0 = liquidation threshold, <0 = past liquidati...2 paramsGet full overview of an Arcadia account: health factor, collateral value, debt, deposited assets, liquidation price, and automation status. Health factor = 1 - (used_margin / liquidation_value): 1 = no debt (safest), >0 = healthy, 0 = liquidation threshold, <0 = past liquidati...
chain_idnumberaccount_addressstringread.account.historyGet historical collateral and debt values for an Arcadia account over time. Returns a time series of snapshots (timestamp, collateral_value, debt_value, net_value). Each value is the account's net value in USD (human-readable, not raw units). Useful for charting account perfor...3 paramsGet historical collateral and debt values for an Arcadia account over time. Returns a time series of snapshots (timestamp, collateral_value, debt_value, net_value). Each value is the account's net value in USD (human-readable, not raw units). Useful for charting account perfor...
daysnumberchain_idnumberaccount_addressstringread.account.pnlGet PnL (cost basis) and yield earned for an Arcadia account. Returns lifetime totals: cost basis vs current value (negative cost_basis = net profit withdrawn), net transfers per token, total yield earned in USD and per token. cost_basis, current_value, cost_diff are in USD (h...2 paramsGet PnL (cost basis) and yield earned for an Arcadia account. Returns lifetime totals: cost basis vs current value (negative cost_basis = net profit withdrawn), net transfers per token, total yield earned in USD and per token. cost_basis, current_value, cost_diff are in USD (h...
chain_idnumberaccount_addressstringread.pool.listList all Arcadia lending pools: TVL, utilization, available liquidity. Key fields: interest_rate = current borrow cost, lending_apy = lender yield. All rates are decimal fractions (1.0 = 100%, 0.06 = 6%). For APY history on a specific pool, use read.pool.info.1 paramsList all Arcadia lending pools: TVL, utilization, available liquidity. Key fields: interest_rate = current borrow cost, lending_apy = lender yield. All rates are decimal fractions (1.0 = 100%, 0.06 = 6%). For APY history on a specific pool, use read.pool.info.
chain_idnumberread.pool.infoGet detailed info for a single lending pool including APY history over time. Useful for analyzing rate trends and comparing pools. Use read.pool.list to discover pool addresses.3 paramsGet detailed info for a single lending pool including APY history over time. Useful for analyzing rate trends and comparing pools. Use read.pool.list to discover pool addresses.
daysnumberchain_idnumberpool_addressstringread.asset.listList supported collateral assets on Arcadia. Returns compact list (address, symbol, decimals, type). Use search to filter by symbol substring. For USD prices, use read.asset.prices.2 paramsList supported collateral assets on Arcadia. Returns compact list (address, symbol, decimals, type). Use search to filter by symbol substring. For USD prices, use read.asset.prices.
searchstringchain_idnumberread.asset.pricesGet USD prices for one or more asset addresses. Pass a single address or comma-separated addresses. Returns a price map keyed by address.2 paramsGet USD prices for one or more asset addresses. Pass a single address or comma-separated addresses. Returns a price map keyed by address.
chain_idnumberasset_addressesstringread.strategy.listGet Arcadia LP strategies. Use featured_only=true for curated top strategies (recommended first call). Returns a paginated list with 7d avg APY for each strategy's default range. Increase limit or use offset for pagination. All APY values are decimal fractions (1.0 = 100%, 0.0...4 paramsGet Arcadia LP strategies. Use featured_only=true for curated top strategies (recommended first call). Returns a paginated list with 7d avg APY for each strategy's default range. Increase limit or use offset for pagination. All APY values are decimal fractions (1.0 = 100%, 0.0...
limitnumberoffsetnumberchain_idnumberfeatured_onlybooleanread.strategy.infoGet full detail for a specific LP strategy by ID — includes APY per range width (narrower range = higher APY but more rebalancing cost/risk), pool info, and configuration. Use read.strategy.list to discover strategy IDs. All APY values are decimal fractions (1.0 = 100%, 0.05 =...2 paramsGet full detail for a specific LP strategy by ID — includes APY per range width (narrower range = higher APY but more rebalancing cost/risk), pool info, and configuration. Use read.strategy.list to discover strategy IDs. All APY values are decimal fractions (1.0 = 100%, 0.05 =...
chain_idnumberstrategy_idnumberread.strategy.recommendationGet a rebalancing recommendation for an Arcadia account — suggests asset changes to optimize yield. Uses 1d APY (not 7d like read.strategy.list), so recommended strategies may differ from the list ranking. APY values are decimal fractions (0.05 = 5%). weekly_earning_difference...2 paramsGet a rebalancing recommendation for an Arcadia account — suggests asset changes to optimize yield. Uses 1d APY (not 7d like read.strategy.list), so recommended strategies may differ from the list ranking. APY values are decimal fractions (0.05 = 5%). weekly_earning_difference...
chain_idnumberaccount_addressstringread.point_leaderboardGet the Arcadia points leaderboard (paginated). For a specific wallet's points balance, use read.wallet.points.2 paramsGet the Arcadia points leaderboard (paginated). For a specific wallet's points balance, use read.wallet.points.
limitnumberoffsetnumberread.guidesGet Arcadia workflow guides and reference documentation. Call this before multi-step workflows (opening LP positions, enabling automation, closing positions) or when you need contract addresses, asset manager addresses, or strategy parameters. Topics: overview (addresses + too...1 paramsGet Arcadia workflow guides and reference documentation. Call this before multi-step workflows (opening LP positions, enabling automation, closing positions) or when you need contract addresses, asset manager addresses, or strategy parameters. Topics: overview (addresses + too...
topicstringoverview · automation · strategies · selectionread.wallet.balancesGet native ETH and ERC20 token balances for a wallet address. Reads directly from chain via RPC multicall. Use before write.account.add_liquidity or write.account.deposit to verify the wallet has sufficient tokens. Returns both raw balance (smallest unit/wei) and formatted (hu...3 paramsGet native ETH and ERC20 token balances for a wallet address. Reads directly from chain via RPC multicall. Use before write.account.add_liquidity or write.account.deposit to verify the wallet has sufficient tokens. Returns both raw balance (smallest unit/wei) and formatted (hu...
chain_idnumberwallet_addressstringtoken_addressesarrayread.wallet.allowancesCheck ERC20 token allowances for a spender address. Use before write.wallet.approve to avoid redundant approvals — skip approving if the current allowance is already sufficient.4 paramsCheck ERC20 token allowances for a spender address. Use before write.wallet.approve to avoid redundant approvals — skip approving if the current allowance is already sufficient.
chain_idnumberowner_addressstringspender_addressstringtoken_addressesarrayread.wallet.accountsList all Arcadia accounts owned by a wallet address. Returns a summary of each account (address, name). Call read.account.info with a specific account_address for full details like health factor, collateral, and debt.2 paramsList all Arcadia accounts owned by a wallet address. Returns a summary of each account (address, name). Call read.account.info with a specific account_address for full details like health factor, collateral, and debt.
chain_idnumberwallet_addressstringread.wallet.pointsGet Arcadia points balance for a specific wallet address.1 paramsGet Arcadia points balance for a specific wallet address.
wallet_addressstringread.asset_manager.intentsList all available automation intents with their tool names, required parameters, and supported chains. Use this to discover which automations can be configured and what each one does. Each intent has a corresponding write.asset_manager.{id} tool that returns encoded args. To...1 paramsList all available automation intents with their tool names, required parameters, and supported chains. Use this to discover which automations can be configured and what each one does. Each intent has a corresponding write.asset_manager.{id} tool that returns encoded args. To...
chain_idnumberwrite.account.createBuild an unsigned transaction to create a new Arcadia account via the Factory contract. account_version: 3 with creditor → V3 margin account (can borrow/leverage). account_version: 0 or 4 → V4 spot account (no borrowing, creditor is ignored, any ERC20 allowed). Returns the pre...5 paramsBuild an unsigned transaction to create a new Arcadia account via the Factory contract. account_version: 3 with creditor → V3 margin account (can borrow/leverage). account_version: 0 or 4 → V4 spot account (no borrowing, creditor is ignored, any ERC20 allowed). Returns the pre...
saltnumberchain_idnumbercreditorstringwallet_addressstringaccount_versionnumberwrite.account.depositBuild an unsigned transaction to deposit assets into an Arcadia account as collateral. Supports ERC20 tokens and ERC721 NFTs (LP positions). NOT needed before write.account.add_liquidity — that tool deposits from wallet atomically. Ensure the account is approved first (call re...7 paramsBuild an unsigned transaction to deposit assets into an Arcadia account as collateral. Supports ERC20 tokens and ERC721 NFTs (LP positions). NOT needed before write.account.add_liquidity — that tool deposits from wallet atomically. Ensure the account is approved first (call re...
chain_idnumberasset_idsarrayasset_typesarrayasset_amountsarrayaccount_addressstringaccount_versionnumberasset_addressesarraywrite.account.withdrawBuild an unsigned transaction to withdraw assets from an Arcadia account to the owner's wallet. Only the account owner can withdraw. Will revert if the account has debt and withdrawal would make it undercollateralized. Does not support max_uint256 — pass exact amounts from rea...7 paramsBuild an unsigned transaction to withdraw assets from an Arcadia account to the owner's wallet. Only the account owner can withdraw. Will revert if the account has debt and withdrawal would make it undercollateralized. Does not support max_uint256 — pass exact amounts from rea...
chain_idnumberasset_idsarrayasset_typesarrayasset_amountsarrayaccount_addressstringaccount_versionnumberasset_addressesarraywrite.account.borrowBuild an unsigned transaction to borrow from an Arcadia lending pool against account collateral. NOT needed for leveraged LP — write.account.add_liquidity handles borrowing internally when leverage > 0. Only works with margin accounts (created with a creditor/lending pool). Sp...5 paramsBuild an unsigned transaction to borrow from an Arcadia lending pool against account collateral. NOT needed for leveraged LP — write.account.add_liquidity handles borrowing internally when leverage > 0. Only works with margin accounts (created with a creditor/lending pool). Sp...
tostringamountstringchain_idnumberpool_addressstringaccount_addressstringwrite.account.repayRepay debt to an Arcadia lending pool using tokens from the wallet (requires ERC20 allowance). To repay using account collateral instead (no wallet tokens needed), use write.account.deleverage. Check allowance first (read.wallet.allowances), then approve the pool if needed (wr...4 paramsRepay debt to an Arcadia lending pool using tokens from the wallet (requires ERC20 allowance). To repay using account collateral instead (no wallet tokens needed), use write.account.deleverage. Check allowance first (read.wallet.allowances), then approve the pool if needed (wr...
amountstringchain_idnumberpool_addressstringaccount_addressstringwrite.account.add_liquidityMulti-step flash-action: atomically combines [deposit from wallet] + [use account collateral] + [swap to optimal ratio] + [mint LP] + [borrow if leveraged] in ONE transaction. Do NOT call write.account.deposit separately. Capital sources: wallet tokens (deposits array), existi...8 paramsMulti-step flash-action: atomically combines [deposit from wallet] + [use account collateral] + [swap to optimal ratio] + [mint LP] + [borrow if leveraged] in ONE transaction. Do NOT call write.account.deposit separately. Capital sources: wallet tokens (deposits array), existi...
chain_idnumberdepositsarrayleveragenumberslippagenumberpositionsarraywallet_addressstringaccount_addressstringuse_account_assetsbooleanwrite.account.remove_liquidityFlash-action: PARTIALLY decreases liquidity from an LP position. The position remains open with reduced liquidity; underlying tokens stay in the account. For FULL position exit (burn LP + swap + repay + withdraw), use write.account.close instead — it batches everything into on...5 paramsFlash-action: PARTIALLY decreases liquidity from an LP position. The position remains open with reduced liquidity; underlying tokens stay in the account. For FULL position exit (burn LP + swap + repay + withdraw), use write.account.close instead — it batches everything into on...
asset_idnumberchain_idnumberadjustmentstringasset_addressstringaccount_addressstringwrite.account.swapFlash-action: swaps assets within an Arcadia account in one atomic transaction. The backend finds the optimal swap route. NOTE: If you are closing a position (swap + repay + withdraw), prefer write.account.close which batches everything atomically. Only use this tool for stand...6 paramsFlash-action: swaps assets within an Arcadia account in one atomic transaction. The backend finds the optimal swap route. NOTE: If you are closing a position (swap + repay + withdraw), prefer write.account.close which batches everything atomically. Only use this tool for stand...
asset_tostringchain_idnumberslippagenumberamount_instringasset_fromstringaccount_addressstringwrite.account.deleverageMulti-step flash-action: sells account collateral to the debt token and repays in one atomic transaction — no wallet tokens needed. To repay from wallet tokens instead, use write.account.repay. NOTE: If you are closing a position (remove LP + swap + repay + withdraw), prefer w...7 paramsMulti-step flash-action: sells account collateral to the debt token and repays in one atomic transaction — no wallet tokens needed. To repay from wallet tokens instead, use write.account.repay. NOTE: If you are closing a position (remove LP + swap + repay + withdraw), prefer w...
chain_idnumbercreditorstringslippagenumberamount_instringnumerairestringasset_fromstringaccount_addressstringwrite.account.stakeFlash-action: stake, unstake, or claim rewards for an LP position in one atomic transaction. Use the `action` parameter to select the operation. `asset_address` is the position manager contract — pass the non-staked PM address when staking, or the staked PM address when unstak...5 paramsFlash-action: stake, unstake, or claim rewards for an LP position in one atomic transaction. Use the `action` parameter to select the operation. `asset_address` is the position manager contract — pass the non-staked PM address when staking, or the staked PM address when unstak...
actionstringstake · unstake · claimasset_idnumberchain_idnumberasset_addressstringaccount_addressstringwrite.account.closeAtomic flash-action that closes an Arcadia account position in ONE transaction. Combines up to 3 steps atomically: [burn LP position] + [swap all tokens to a single target asset] + [repay debt]. Tokens remain in the account after closing — use write.account.withdraw to send th...6 paramsAtomic flash-action that closes an Arcadia account position in ONE transaction. Combines up to 3 steps atomically: [burn LP position] + [swap all tokens to a single target asset] + [repay debt]. Tokens remain in the account after closing — use write.account.withdraw to send th...
assetsarraychain_idnumberslippagenumberclose_lp_onlybooleanreceive_assetsarrayaccount_addressstringwrite.wallet.approveBuild an unsigned approval transaction. For ERC20 tokens: generates approve(spender, amount). For ERC721/ERC1155 NFTs (e.g. LP positions): generates setApprovalForAll(operator, true). Required before write.account.deposit or write.account.add_liquidity (when depositing from wa...5 paramsBuild an unsigned approval transaction. For ERC20 tokens: generates approve(spender, amount). For ERC721/ERC1155 NFTs (e.g. LP positions): generates setApprovalForAll(operator, true). Required before write.account.deposit or write.account.add_liquidity (when depositing from wa...
amountstringchain_idnumberasset_typestringerc20 · erc721 · erc1155default: erc20token_addressstringspender_addressstringwrite.asset_manager.rebalancerEncode args for the rebalancer automation. When the LP position goes out of range, Arcadia's bot repositions it centered on the current price. All pending fees and staking rewards are claimed and compounded into the new position. Strategy config: 'default' (all params at defau...10 paramsEncode args for the rebalancer automation. When the LP position goes out of range, Arcadia's bot repositions it centered on the current price. All pending fees and staking rewards are claimed and compounded into the new position. Strategy config: 'default' (all params at defau...
enabledbooleanchain_idnumberdex_protocolstringslipstream · slipstream_v2 · staked_slipstream · staked_slipstream_v2 · uniV3 · uniV4strategy_hookstringcompound_leftoversstringall · none · token0 · token1default: allmax_rebalance_timeintegermin_rebalance_timeintegertrigger_lower_ratiointegertrigger_upper_ratiointegeroptimal_token0_ratiointegerwrite.asset_manager.compounderEncode args for the standalone compounder automation. Claims accumulated LP trading fees and reinvests them back into the position (compound interest). LP fees only — does NOT claim staking rewards like AERO; use write.asset_manager.compounder_staked for staked positions earni...3 paramsEncode args for the standalone compounder automation. Claims accumulated LP trading fees and reinvests them back into the position (compound interest). LP fees only — does NOT claim staking rewards like AERO; use write.asset_manager.compounder_staked for staked positions earni...
enabledbooleanchain_idnumberdex_protocolstringslipstream · slipstream_v2 · staked_slipstream · staked_slipstream_v2 · uniV3 · uniV4write.asset_manager.compounder_stakedEncode args for compounder coupled with CowSwap for staked LP positions (e.g. staked Slipstream/Aerodrome). Staked positions earn staking emission rewards (e.g. AERO, OP, or any configured emission token) — not LP fees. Claims these staking rewards, swaps them to a target toke...5 paramsEncode args for compounder coupled with CowSwap for staked LP positions (e.g. staked Slipstream/Aerodrome). Staked positions earn staking emission rewards (e.g. AERO, OP, or any configured emission token) — not LP fees. Claims these staking rewards, swaps them to a target toke...
enabledbooleanchain_idnumberbuy_tokenstringsell_tokensarraydex_protocolstringslipstream · slipstream_v2 · staked_slipstream · staked_slipstream_v2 · uniV3 · uniV4write.asset_manager.yield_claimerEncode args for the standalone yield claimer automation. Periodically claims pending fees/emissions and sends them to a designated recipient (wallet, another account, or any address). Returns { asset_managers, statuses, datas } — pass to write.account.set_asset_managers. Combi...4 paramsEncode args for the standalone yield claimer automation. Periodically claims pending fees/emissions and sends them to a designated recipient (wallet, another account, or any address). Returns { asset_managers, statuses, datas } — pass to write.account.set_asset_managers. Combi...
enabledbooleanchain_idnumberdex_protocolstringslipstream · slipstream_v2 · staked_slipstream · staked_slipstream_v2 · uniV3 · uniV4fee_recipientstringwrite.asset_manager.yield_claimer_cowswapEncode args for yield claimer coupled with CowSwap. Claims LP fees, then swaps the claimed tokens to a target token via CowSwap batch auctions (MEV-protected). For staked LPs, sell_tokens is the staking reward token list (e.g. [AERO_address]). For non-staked LPs, sell_tokens i...6 paramsEncode args for yield claimer coupled with CowSwap. Claims LP fees, then swaps the claimed tokens to a target token via CowSwap batch auctions (MEV-protected). For staked LPs, sell_tokens is the staking reward token list (e.g. [AERO_address]). For non-staked LPs, sell_tokens i...
enabledbooleanchain_idnumberbuy_tokenstringsell_tokensarraydex_protocolstringslipstream · slipstream_v2 · staked_slipstream · staked_slipstream_v2 · uniV3 · uniV4fee_recipientstringwrite.asset_manager.cow_swapperEncode args for standalone direct CowSwap mode. Enables the CowSwapper to swap any ERC20 → ERC20 via CoW Protocol batch auctions (MEV-protected). Unlike compounder_staked or yield_claimer_cowswap, this is NOT coupled to any other automation — each swap requires an additional s...2 paramsEncode args for standalone direct CowSwap mode. Enables the CowSwapper to swap any ERC20 → ERC20 via CoW Protocol batch auctions (MEV-protected). Unlike compounder_staked or yield_claimer_cowswap, this is NOT coupled to any other automation — each swap requires an additional s...
enabledbooleanchain_idnumberwrite.asset_manager.merkl_operatorEncode args for the Merkl operator automation. Claims external Merkl protocol incentive rewards into the account — additional rewards paid by token teams on top of regular LP fees. Enable when the pool has active Merkl campaigns (check APY breakdown in read.strategy.list). Alw...3 paramsEncode args for the Merkl operator automation. Claims external Merkl protocol incentive rewards into the account — additional rewards paid by token teams on top of regular LP fees. Enable when the pool has active Merkl campaigns (check APY breakdown in read.strategy.list). Alw...
enabledbooleanchain_idnumberreward_recipientstringwrite.account.set_asset_managersBuild an unsigned setAssetManagers transaction from encoded intent args. Takes the { asset_managers, statuses, datas } arrays returned by write.asset_manager.* intent tools and builds a single unsigned tx targeting the account. To combine multiple automations in one tx, concat...5 paramsBuild an unsigned setAssetManagers transaction from encoded intent args. Takes the { asset_managers, statuses, datas } arrays returned by write.asset_manager.* intent tools and builds a single unsigned tx targeting the account. To combine multiple automations in one tx, concat...
datasarraychain_idnumberstatusesarrayasset_managersarrayaccount_addressstringdev.sendDEV ONLY — Sign and broadcast an unsigned transaction using a local private key (PK env var). For production, use a dedicated wallet MCP server (Fireblocks, Safe, Turnkey, etc.) instead of this tool. Takes the transaction object returned by any write.* tool and submits it onch...4 paramsDEV ONLY — Sign and broadcast an unsigned transaction using a local private key (PK env var). For production, use a dedicated wallet MCP server (Fireblocks, Safe, Turnkey, etc.) instead of this tool. Takes the transaction object returned by any write.* tool and submits it onch...
tostringdatastringvaluestringchain_idnumberMCP server for Arcadia Finance, a platform for concentrated liquidity on Uniswap and Aerodrome with automated rebalancing, compounding, yield optimization, and leverage, or single-sided liquidity into lending pools. Read protocol data and build unsigned transactions for LP management, borrowing, deposits, and more.
Designed for AI agents (Claude, Cursor, etc.) to interact with Arcadia onchain.
| Tool | Description |
|---|---|
read.account.info | Account overview: health factor, collateral, debt, positions, liquidation price, automation status. |
read.account.history | Historical account value over time. |
read.account.pnl | PnL and yield data for an account. |
read.wallet.accounts | List all Arcadia accounts owned by a wallet address. |
read.wallet.balances | On-chain ERC20 balances and native ETH for a wallet address. |
read.wallet.allowances | Check ERC20 token allowances for a spender. Use before write.wallet.approve to avoid redundant approvals. |
read.wallet.points | Points balance for a specific wallet address. |
read.asset.list | Supported collateral assets with addresses, types, decimals. |
read.asset.prices | USD prices for one or more asset addresses. |
read.pool.list | All lending pools: TVL, APY, utilization, liquidity. |
read.pool.info | Single pool detail with APY history over time. |
read.point_leaderboard | Paginated Arcadia points leaderboard. |
read.strategy.list | LP strategies with APY, underlyings, pool info. Supports featured filter and pagination. |
read.strategy.info | Full detail for a specific LP strategy: APY per range width, pool config. |
read.strategy.recommendation | Rebalancing recommendation for an account. |
read.guides | Reference guides: automation setup, strategy selection, strategy templates. |
read.asset_manager.intents | Available automation intents with tool names, required params, and supported chains. |
All write tools return unsigned transactions as { to, data, value, chainId }.
| Tool | Description |
|---|---|
write.wallet.approve | Approve an ERC20 token for spending. Required before depositing into an account. Call read.wallet.allowances first to check if already approved. |
write.pool.deposit | Lend the pool's underlying asset into an ERC-4626 tranche to earn interest. Mints tranche shares to the receiver. |
write.pool.redeem | Redeem tranche shares back into the underlying asset (lender exit). |
write.account.create | Create a new Arcadia account via Factory. |
write.account.deposit | Deposit ERC20 tokens into an account. |
write.account.withdraw | Withdraw assets from an account. |
write.account.borrow | Borrow from a lending pool. |
write.account.repay | Repay debt to a lending pool from wallet. |
write.account.add_liquidity | Flash-action: deposit + swap + mint LP + optional leverage, atomically. |
write.account.remove_liquidity | Remove/decrease LP position liquidity. |
write.account.swap | Swap assets within an account (backend-routed). |
write.account.deleverage | Repay debt by selling collateral (swap + repay in one tx). |
write.account.close | Atomic close: burn LP + swap + repay debt in one tx. |
write.account.stake | Stake, unstake, or claim rewards for LP positions. |
write.asset_manager.rebalancer | Encode rebalancer automation args (strategy config, triggers, compound mode). |
write.asset_manager.compounder | Encode standalone compounder args. |
write.asset_manager.compounder_staked | Encode compounder + CowSwap coupled args (sell rewards, buy target token). |
write.asset_manager.yield_claimer | Encode yield claimer args (claim fees to recipient). |
write.asset_manager.yield_claimer_cowswap | Encode yield claimer + CowSwap coupled args. |
write.asset_manager.cow_swapper | Encode direct CowSwap mode args (Base only). |
write.asset_manager.merkl_operator | Encode Merkl operator args (claim external rewards). |
write.account.set_asset_managers | Build unsigned setAssetManagers tx from encoded intent args. Combine multiple intents by merging arrays. |
Always registered but requires PK env var to function.
| Tool | Description |
|---|---|
dev.send | Sign and broadcast an unsigned transaction using a local private key (PK env var). Not for production — use a dedicated wallet MCP server instead. |
All write tools return unsigned transactions as { to, data, value, chainId }. This server does NOT sign or broadcast — your agent or application is responsible for that.
Wallet MCP servers (recommended for production): Pair this server with a wallet MCP server that handles signing:
| Wallet MCP | Provider | Model |
|---|---|---|
| MCP Wallet Signer | Community | Non-custodial, routes to browser wallet (MetaMask, Rabby) |
| Coinbase AgentKit | Coinbase | Wallet-agnostic, supports multiple providers |
| Phantom MCP | Phantom | Embedded wallet |
| Privy MCP | Privy | Wallet infrastructure |
| Safe MCP | Community | Multi-sig via Safe |
Or use your existing wallet setup (Fireblocks, Dfns, Turnkey, Biconomy, Dynamic) and pass the unsigned tx object to your provider's signing method.
viem/ethers in your agent:
import { createWalletClient, http } from "viem";
import { privateKeyToAccount } from "viem/accounts";
import { base } from "viem/chains";
const account = privateKeyToAccount("0x...");
const client = createWalletClient({ account, chain: base, transport: http() });
// tx = result from any write.* tool
const hash = await client.sendTransaction(tx);
Built-in dev.send tool (development only):
The server includes a dev-only signing tool that reads a private key from the PK environment variable. Set PK via a .env file or your MCP client config:
# .env in the server directory (never commit — already gitignored)
PK=0xYourPrivateKeyHex
RPC_URL_BASE=https://base-mainnet.g.alchemy.com/v2/your-key
The server loads .env automatically on startup. Works with any MCP client (Claude Desktop, Claude Code, VSCode, Cursor). MCP client env block settings take precedence if both are set.
Not for production — use a dedicated wallet MCP server (Fireblocks, Turnkey, Safe) instead.
Prerequisites: Node.js >= 22
yarn install
yarn build
Environment variables:
| Variable | Required | Default | Transport | Description |
|---|---|---|---|---|
RPC_URL_BASE | No | Public RPC | Both | RPC URL for Base (8453). |
RPC_URL_UNICHAIN | No | Public RPC | Both | RPC URL for Unichain (130). |
RPC_URL_OPTIMISM | No | Public RPC | Both | RPC URL for Optimism (10). |
PK | No | — | Both | Private key (hex) for dev-only dev.send tool. |
TRANSPORT | No | stdio | — | Transport mode: stdio or http. |
PORT | No | 3000 | HTTP | Listen port for HTTP transport. |
ALLOWED_ORIGINS | No | https://mcp.arcadia.finance | HTTP | Comma-separated allowed Origin headers (CORS / DNS rebinding). |
RATE_LIMIT_RPM | No | 60 | HTTP | Max requests per minute per session. |
Supported chains: Base (8453), Unichain (130), Optimism (10)
Remote (no install needed):
{
"mcpServers": {
"arcadia-finance": {
"url": "https://mcp.arcadia.finance/mcp"
}
}
}
Via npx (local stdio):
{
"mcpServers": {
"arcadia-finance": {
"command": "npx",
"args": ["-y", "@arcadia-finance/mcp-server"],
"env": {
"RPC_URL_BASE": "https://base-mainnet.g.alchemy.com/v2/your-key"
}
}
}
}
Claude Code:
# Remote
claude mcp add arcadia-finance --transport http https://mcp.arcadia.finance/mcp
# Local
claude mcp add arcadia-finance -- npx -y @arcadia-finance/mcp-server
From source (local development):
{
"mcpServers": {
"arcadia-finance": {
"command": "node",
"args": ["/absolute/path/to/mcp-server/dist/index.js"],
"env": {
"RPC_URL_BASE": "https://base-mainnet.g.alchemy.com/v2/your-key"
}
}
}
}
The skills/ directory contains Claude Code skills that teach AI agents how to use this MCP server effectively. To install a skill, symlink it into your Claude skills directory:
ln -s /path/to/mcp-server/skills/clamm-liquidity ~/.claude/skills/clamm-liquidity
Available skills:
| Skill | Description |
|---|---|
clamm-liquidity | Concentrated liquidity management: concepts, asset managers (rebalancers, compounders), and step-by-step workflows. |
Found a bug, missing feature, or unclear documentation while using this server? Open an issue: https://github.com/arcadia-finance/mcp-server/issues
For AI agents: If you hit a gap during task execution, open an issue with:
Pull requests for documentation fixes are welcome from agents and humans alike. All PRs require human review before merging.
yarn dev # Run with tsx (hot reload)
yarn build # Compile TypeScript
yarn test # Run tests
yarn lint # Lint with ESLint
yarn format # Check formatting with Prettier
RPC_URL_BASEsecretRPC URL for Base (8453). Falls back to public RPC if not set.
RPC_URL_UNICHAINsecretRPC URL for Unichain (130). Falls back to public RPC if not set.
RPC_URL_OPTIMISMsecretRPC URL for Optimism (10). Falls back to public RPC if not set.
PKsecretPrivate key for dev-only signing (not for production).
TRANSPORTTransport mode: stdio (default) or http.
PORTHTTP listen port (default 3000). Only used when TRANSPORT=http.
ALLOWED_ORIGINSComma-separated allowed Origin headers for CORS and DNS rebinding protection. Only used when TRANSPORT=http.
RATE_LIMIT_RPMMax requests per minute per session (default 60). Only used when TRANSPORT=http.