{"protocolVersion":"2025-06-18","capabilities":{"tools":{"listChanged":false}},"agentGuidance":{"description":"General guidance for external AI agents using this MCP server. Read before selecting a project endpoint, requesting tool schemas, or calling protocol tools.","skillUrl":"https://erc8004.heyanon.ai/mcp/skill.md"},"serverInfo":{"name":"heyanon-erc8004-balancer","version":"1.0.0"},"tools":[{"name":"addLiquidity","description":"Add liquidity to a pool. For regular pools, you can provide any combination of amounts for the tokens; you can even provide only one token, and it will be zapped in the pool alone. For Gyro pools, you must always provide just one token; the other token will be transferred from your wallet to the pool in the same proportion as the pool tokens.","inputSchema":{"type":"object","properties":{"userAddress":{"type":"string","description":"The EVM wallet address of the user"},"chainName":{"type":"string","enum":["ethereum","arbitrum","base","avalanche","gnosis","polygon","optimism","plasma"],"description":"Chain name"},"poolId":{"type":"string","description":"ID of the pool to add liquidity to, starting with \"0x\""},"token0Address":{"type":"string","description":"Address of the first token to add."},"token0Amount":{"type":"string","description":"Amount of the first token to add in human-readable decimal format (e.g. '1.5')"},"token1Address":{"description":"Optional: Address of the second token to add. Not needed for Gyro pools.","type":"string"},"token1Amount":{"description":"Optional: Amount of the second token to add in human-readable decimal format (e.g. '1.5')","type":"string"},"slippageAsPercentage":{"description":"The maximum slippage as a percentage (e.g. 10 for 10%). If omitted, the default slippage will be used.","type":"string"}},"required":["userAddress","chainName","poolId","token0Address","token0Amount"],"additionalProperties":false},"outputSchema":{"type":"object","anyOf":[{"type":"object","properties":{"project":{"type":"string","description":"Protocol identifier"},"operation":{"type":"string","description":"Operation that produced this response"},"note":{"type":"string","description":"Human-readable summary of the action"},"transactions":{"type":"array","items":{"type":"object","properties":{"chainId":{"type":"number","description":"EVM chain ID"},"transaction":{"type":"object","properties":{"target":{"type":"string","description":"Target contract address"},"data":{"type":"string","description":"ABI-encoded calldata"},"value":{"description":"Native token value in wei","type":"string"}},"required":["target","data"],"additionalProperties":false,"description":"EVM transaction parameters"}},"required":["chainId","transaction"],"additionalProperties":false},"description":"EVM transactions to sign and broadcast"}},"required":["project","operation","transactions"],"additionalProperties":false},{"type":"object","properties":{"project":{"type":"string","description":"Protocol identifier"},"operation":{"type":"string","description":"Operation that produced this response"},"error":{"type":"string","description":"Error message"}},"required":["project","operation","error"],"additionalProperties":false}]}},{"name":"removeLiquidity","description":"Remove liquidity from a pool and return the tokens to the user. The amount of liquidity to be removed is specified as a percentage of the user liquidity (default is 100%). The liquidity will be removed in the same proportions as the pool tokens.","inputSchema":{"type":"object","properties":{"userAddress":{"type":"string","description":"The EVM wallet address of the user"},"chainName":{"type":"string","enum":["ethereum","arbitrum","base","avalanche","gnosis","polygon","optimism","plasma"],"description":"Chain name"},"poolId":{"type":"string","description":"ID of the pool to remove liquidity from, starting with \"0x\""},"removalPercentage":{"description":"Amount of liquidity to remove, as a percentage (e.g. 50 for 50%). If omitted, all liquidity will be removed.","type":"string"},"slippageAsPercentage":{"description":"The maximum slippage as a percentage (e.g. 10 for 10%). If omitted, the default slippage will be used.","type":"string"}},"required":["userAddress","chainName","poolId"],"additionalProperties":false},"outputSchema":{"type":"object","anyOf":[{"type":"object","properties":{"project":{"type":"string","description":"Protocol identifier"},"operation":{"type":"string","description":"Operation that produced this response"},"note":{"type":"string","description":"Human-readable summary of the action"},"transactions":{"type":"array","items":{"type":"object","properties":{"chainId":{"type":"number","description":"EVM chain ID"},"transaction":{"type":"object","properties":{"target":{"type":"string","description":"Target contract address"},"data":{"type":"string","description":"ABI-encoded calldata"},"value":{"description":"Native token value in wei","type":"string"}},"required":["target","data"],"additionalProperties":false,"description":"EVM transaction parameters"}},"required":["chainId","transaction"],"additionalProperties":false},"description":"EVM transactions to sign and broadcast"}},"required":["project","operation","transactions"],"additionalProperties":false},{"type":"object","properties":{"project":{"type":"string","description":"Protocol identifier"},"operation":{"type":"string","description":"Operation that produced this response"},"error":{"type":"string","description":"Error message"}},"required":["project","operation","error"],"additionalProperties":false}]}},{"name":"getUserPortfolioPositions","description":"Show the top 10 liquidity positions in the user portfolio.","inputSchema":{"type":"object","properties":{"userAddress":{"type":"string","description":"The EVM wallet address of the user"},"chainNames":{"type":"array","items":{"type":"string","enum":["ethereum","arbitrum","base","avalanche","gnosis","polygon","optimism","plasma"],"description":"Chain name"},"description":"Array of chain names to check the user portfolio on."}},"required":["userAddress","chainNames"],"additionalProperties":false},"outputSchema":{"type":"object","anyOf":[{"type":"object","properties":{"project":{"type":"string","description":"Protocol identifier"},"operation":{"type":"string","description":"Operation that produced this response"},"note":{"type":"string","description":"Human-readable summary of the action"},"data":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"chain":{"type":"string","description":"Chain name"},"positions":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Pool display name"},"chain":{"type":"string","description":"Chain identifier"},"type":{"type":"string","description":"Pool type (e.g. Weighted, Stable, Gyroe, CoW AMM)"},"tokens":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Token name"},"symbol":{"type":"string","description":"Token symbol"},"weight":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Token weight in pool (null for unweighted pools)"},"address":{"type":"string","description":"Token contract address"}},"required":["name","symbol","weight","address"],"additionalProperties":false},"description":"Tokens in the pool"},"userBalanceUsd":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"USD value of user position"},"staking":{"type":"boolean","description":"Whether pool supports staking"},"userStakedBalanceUsd":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"USD value of user staked position"},"stakingRewards":{"anyOf":[{},{"type":"null"}],"description":"Staking rewards data"},"tvlUsd":{"type":"number","description":"Total value locked in USD"},"apr":{"type":"number","description":"Annual percentage rate"},"aprBoost":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Additional APR from staking boost"},"id":{"type":"string","description":"Pool ID (0x-prefixed)"},"version":{"type":"number","description":"Protocol version (1, 2, or 3)"}},"required":["name","chain","type","tokens","userBalanceUsd","staking","userStakedBalanceUsd","stakingRewards","tvlUsd","apr","aprBoost","id","version"],"additionalProperties":false},"description":"User liquidity positions"}},"required":["chain","positions"],"additionalProperties":false},{"type":"object","properties":{"chain":{"type":"string","description":"Chain name"},"error":{"type":"string","description":"Error message"}},"required":["chain","error"],"additionalProperties":false}]}}},"required":["project","operation","data"],"additionalProperties":false},{"type":"object","properties":{"project":{"type":"string","description":"Protocol identifier"},"operation":{"type":"string","description":"Operation that produced this response"},"error":{"type":"string","description":"Error message"}},"required":["project","operation","error"],"additionalProperties":false}]}},{"name":"getBestAprForTokens","description":"Show the top 10 pools with the best APR yield for the given tokens, sorted by APR. Will include also pools with tokens equivalent to the given token, e.g. if you ask for ETH, pools with WETH (Wrapped Ethereum) will be included too. If the user asks, then filter the pools by type (Weighted, Stable, Gyroe, CoW AMM) or version (V1, V2, V3).","inputSchema":{"type":"object","properties":{"tokensOnChains":{"type":"array","items":{"type":"object","properties":{"chainName":{"type":"string","enum":["ethereum","arbitrum","base","avalanche","gnosis","polygon","optimism","plasma"],"description":"Chain name"},"tokenSymbols":{"type":"array","items":{"type":"string"},"description":"Array of token symbols to search for."}},"required":["chainName","tokenSymbols"],"additionalProperties":false},"description":"Array of chains and tokens to check the best APR yield for."}},"required":["tokensOnChains"],"additionalProperties":false},"outputSchema":{"type":"object","anyOf":[{"type":"object","properties":{"project":{"type":"string","description":"Protocol identifier"},"operation":{"type":"string","description":"Operation that produced this response"},"note":{"type":"string","description":"Human-readable summary of the action"},"data":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"chain":{"type":"string","description":"Chain name"},"tokens":{"type":"array","items":{"type":"string"},"description":"Searched token symbols"},"pools":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Pool display name"},"chain":{"type":"string","description":"Chain identifier"},"type":{"type":"string","description":"Pool type (e.g. Weighted, Stable, Gyroe, CoW AMM)"},"tokens":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Token name"},"symbol":{"type":"string","description":"Token symbol"},"weight":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Token weight in pool (null for unweighted pools)"},"address":{"type":"string","description":"Token contract address"}},"required":["name","symbol","weight","address"],"additionalProperties":false},"description":"Tokens in the pool"},"userBalanceUsd":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"USD value of user position"},"staking":{"type":"boolean","description":"Whether pool supports staking"},"userStakedBalanceUsd":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"USD value of user staked position"},"stakingRewards":{"anyOf":[{},{"type":"null"}],"description":"Staking rewards data"},"tvlUsd":{"type":"number","description":"Total value locked in USD"},"apr":{"type":"number","description":"Annual percentage rate"},"aprBoost":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Additional APR from staking boost"},"id":{"type":"string","description":"Pool ID (0x-prefixed)"},"version":{"type":"number","description":"Protocol version (1, 2, or 3)"}},"required":["name","chain","type","tokens","userBalanceUsd","staking","userStakedBalanceUsd","stakingRewards","tvlUsd","apr","aprBoost","id","version"],"additionalProperties":false},"description":"Matching pools sorted by APR"}},"required":["chain","tokens","pools"],"additionalProperties":false},{"type":"object","properties":{"chain":{"type":"string","description":"Chain name"},"error":{"type":"string","description":"Error message"}},"required":["chain","error"],"additionalProperties":false}]}}},"required":["project","operation","data"],"additionalProperties":false},{"type":"object","properties":{"project":{"type":"string","description":"Protocol identifier"},"operation":{"type":"string","description":"Operation that produced this response"},"error":{"type":"string","description":"Error message"}},"required":["project","operation","error"],"additionalProperties":false}]}},{"name":"getPoolsForChains","description":"Show the top 10 pools for the given chains. If the user asks, then filter the pools by type (Weighted, Stable, Gyroe, CoW AMM) or version (V1, V2, V3)","inputSchema":{"type":"object","properties":{"chainNames":{"type":"array","items":{"type":"string","enum":["ethereum","arbitrum","base","avalanche","gnosis","polygon","optimism","plasma"],"description":"Chain name"},"description":"Array of chain names to check the pools for."}},"required":["chainNames"],"additionalProperties":false},"outputSchema":{"type":"object","anyOf":[{"type":"object","properties":{"project":{"type":"string","description":"Protocol identifier"},"operation":{"type":"string","description":"Operation that produced this response"},"note":{"type":"string","description":"Human-readable summary of the action"},"data":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"chain":{"type":"string","description":"Chain name"},"pools":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Pool display name"},"chain":{"type":"string","description":"Chain identifier"},"type":{"type":"string","description":"Pool type (e.g. Weighted, Stable, Gyroe, CoW AMM)"},"tokens":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Token name"},"symbol":{"type":"string","description":"Token symbol"},"weight":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Token weight in pool (null for unweighted pools)"},"address":{"type":"string","description":"Token contract address"}},"required":["name","symbol","weight","address"],"additionalProperties":false},"description":"Tokens in the pool"},"userBalanceUsd":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"USD value of user position"},"staking":{"type":"boolean","description":"Whether pool supports staking"},"userStakedBalanceUsd":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"USD value of user staked position"},"stakingRewards":{"anyOf":[{},{"type":"null"}],"description":"Staking rewards data"},"tvlUsd":{"type":"number","description":"Total value locked in USD"},"apr":{"type":"number","description":"Annual percentage rate"},"aprBoost":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Additional APR from staking boost"},"id":{"type":"string","description":"Pool ID (0x-prefixed)"},"version":{"type":"number","description":"Protocol version (1, 2, or 3)"}},"required":["name","chain","type","tokens","userBalanceUsd","staking","userStakedBalanceUsd","stakingRewards","tvlUsd","apr","aprBoost","id","version"],"additionalProperties":false},"description":"Top pools sorted by TVL"}},"required":["chain","pools"],"additionalProperties":false},{"type":"object","properties":{"chain":{"type":"string","description":"Chain name"},"error":{"type":"string","description":"Error message"}},"required":["chain","error"],"additionalProperties":false}]}}},"required":["project","operation","data"],"additionalProperties":false},{"type":"object","properties":{"project":{"type":"string","description":"Protocol identifier"},"operation":{"type":"string","description":"Operation that produced this response"},"error":{"type":"string","description":"Error message"}},"required":["project","operation","error"],"additionalProperties":false}]}},{"name":"getBestAprForChains","description":"Show the top 10 pools with the best APR yield for the given chains, sorted by APR. If the user asks, then filter the pools by type (Weighted, Stable, Gyroe, CoW AMM) or version (V1, V2, V3)","inputSchema":{"type":"object","properties":{"chainNames":{"type":"array","items":{"type":"string","enum":["ethereum","arbitrum","base","avalanche","gnosis","polygon","optimism","plasma"],"description":"Chain name"},"description":"Array of chain names to check the best APR yield for."}},"required":["chainNames"],"additionalProperties":false},"outputSchema":{"type":"object","anyOf":[{"type":"object","properties":{"project":{"type":"string","description":"Protocol identifier"},"operation":{"type":"string","description":"Operation that produced this response"},"note":{"type":"string","description":"Human-readable summary of the action"},"data":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"chain":{"type":"string","description":"Chain name"},"pools":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Pool display name"},"chain":{"type":"string","description":"Chain identifier"},"type":{"type":"string","description":"Pool type (e.g. Weighted, Stable, Gyroe, CoW AMM)"},"tokens":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Token name"},"symbol":{"type":"string","description":"Token symbol"},"weight":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Token weight in pool (null for unweighted pools)"},"address":{"type":"string","description":"Token contract address"}},"required":["name","symbol","weight","address"],"additionalProperties":false},"description":"Tokens in the pool"},"userBalanceUsd":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"USD value of user position"},"staking":{"type":"boolean","description":"Whether pool supports staking"},"userStakedBalanceUsd":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"USD value of user staked position"},"stakingRewards":{"anyOf":[{},{"type":"null"}],"description":"Staking rewards data"},"tvlUsd":{"type":"number","description":"Total value locked in USD"},"apr":{"type":"number","description":"Annual percentage rate"},"aprBoost":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Additional APR from staking boost"},"id":{"type":"string","description":"Pool ID (0x-prefixed)"},"version":{"type":"number","description":"Protocol version (1, 2, or 3)"}},"required":["name","chain","type","tokens","userBalanceUsd","staking","userStakedBalanceUsd","stakingRewards","tvlUsd","apr","aprBoost","id","version"],"additionalProperties":false},"description":"Top pools sorted by TVL"}},"required":["chain","pools"],"additionalProperties":false},{"type":"object","properties":{"chain":{"type":"string","description":"Chain name"},"error":{"type":"string","description":"Error message"}},"required":["chain","error"],"additionalProperties":false}]}}},"required":["project","operation","data"],"additionalProperties":false},{"type":"object","properties":{"project":{"type":"string","description":"Protocol identifier"},"operation":{"type":"string","description":"Operation that produced this response"},"error":{"type":"string","description":"Error message"}},"required":["project","operation","error"],"additionalProperties":false}]}},{"name":"getBestAprForTokenPairs","description":"Show the top 10 pools with the best APR yield for the given pairs of tokens, sorted by APR. Will include also pools with tokens equivalent to the given ones, e.g. if you ask for ETH, pools with WETH (Wrapped Ethereum) will be included too. If the user asks, then filter the pools by type (Weighted, Stable, Gyroe, CoW AMM) or version (V1, V2, V3).","inputSchema":{"type":"object","properties":{"tokenPairsOnChains":{"type":"array","items":{"type":"object","properties":{"chainName":{"type":"string","enum":["ethereum","arbitrum","base","avalanche","gnosis","polygon","optimism","plasma"],"description":"Chain name"},"tokenPairs":{"type":"array","items":{"type":"object","properties":{"token0Symbol":{"type":"string","description":"Symbol of the first token to search for."},"token1Symbol":{"type":"string","description":"Symbol of the second token to search for."}},"required":["token0Symbol","token1Symbol"],"additionalProperties":false},"description":"Array of pairs of tokens. The order does not matter, so do not duplicate pairs."}},"required":["chainName","tokenPairs"],"additionalProperties":false},"description":"Array of chains and token pairs to check the best APR yield for."}},"required":["tokenPairsOnChains"],"additionalProperties":false},"outputSchema":{"type":"object","anyOf":[{"type":"object","properties":{"project":{"type":"string","description":"Protocol identifier"},"operation":{"type":"string","description":"Operation that produced this response"},"note":{"type":"string","description":"Human-readable summary of the action"},"data":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"chain":{"type":"string","description":"Chain name"},"tokenPair":{"type":"object","properties":{"token0Symbol":{"type":"string","description":"First token symbol"},"token1Symbol":{"type":"string","description":"Second token symbol"}},"required":["token0Symbol","token1Symbol"],"additionalProperties":false,"description":"Searched token pair"},"pools":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Pool display name"},"chain":{"type":"string","description":"Chain identifier"},"type":{"type":"string","description":"Pool type (e.g. Weighted, Stable, Gyroe, CoW AMM)"},"tokens":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Token name"},"symbol":{"type":"string","description":"Token symbol"},"weight":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Token weight in pool (null for unweighted pools)"},"address":{"type":"string","description":"Token contract address"}},"required":["name","symbol","weight","address"],"additionalProperties":false},"description":"Tokens in the pool"},"userBalanceUsd":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"USD value of user position"},"staking":{"type":"boolean","description":"Whether pool supports staking"},"userStakedBalanceUsd":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"USD value of user staked position"},"stakingRewards":{"anyOf":[{},{"type":"null"}],"description":"Staking rewards data"},"tvlUsd":{"type":"number","description":"Total value locked in USD"},"apr":{"type":"number","description":"Annual percentage rate"},"aprBoost":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Additional APR from staking boost"},"id":{"type":"string","description":"Pool ID (0x-prefixed)"},"version":{"type":"number","description":"Protocol version (1, 2, or 3)"}},"required":["name","chain","type","tokens","userBalanceUsd","staking","userStakedBalanceUsd","stakingRewards","tvlUsd","apr","aprBoost","id","version"],"additionalProperties":false},"description":"Matching pools sorted by APR"}},"required":["chain","tokenPair","pools"],"additionalProperties":false},{"type":"object","properties":{"chain":{"type":"string","description":"Chain name"},"error":{"type":"string","description":"Error message"}},"required":["chain","error"],"additionalProperties":false}]}}},"required":["project","operation","data"],"additionalProperties":false},{"type":"object","properties":{"project":{"type":"string","description":"Protocol identifier"},"operation":{"type":"string","description":"Operation that produced this response"},"error":{"type":"string","description":"Error message"}},"required":["project","operation","error"],"additionalProperties":false}]}},{"name":"getPoolsWithTokens","description":"Show the top 10 pools with the given tokens. If the user asks, then filter the pools by type (Weighted, Stable, Gyroe, CoW AMM) or version (V1, V2, V3).","inputSchema":{"type":"object","properties":{"tokensOnChains":{"type":"array","items":{"type":"object","properties":{"chainName":{"type":"string","enum":["ethereum","arbitrum","base","avalanche","gnosis","polygon","optimism","plasma"],"description":"Chain name"},"tokenSymbols":{"type":"array","items":{"type":"string"},"description":"Array of token symbols to search for."}},"required":["chainName","tokenSymbols"],"additionalProperties":false},"description":"Array of chains and tokens to check the pools for."}},"required":["tokensOnChains"],"additionalProperties":false},"outputSchema":{"type":"object","anyOf":[{"type":"object","properties":{"project":{"type":"string","description":"Protocol identifier"},"operation":{"type":"string","description":"Operation that produced this response"},"note":{"type":"string","description":"Human-readable summary of the action"},"data":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"chain":{"type":"string","description":"Chain name"},"tokens":{"type":"array","items":{"type":"string"},"description":"Searched token symbols"},"pools":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Pool display name"},"chain":{"type":"string","description":"Chain identifier"},"type":{"type":"string","description":"Pool type (e.g. Weighted, Stable, Gyroe, CoW AMM)"},"tokens":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Token name"},"symbol":{"type":"string","description":"Token symbol"},"weight":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Token weight in pool (null for unweighted pools)"},"address":{"type":"string","description":"Token contract address"}},"required":["name","symbol","weight","address"],"additionalProperties":false},"description":"Tokens in the pool"},"userBalanceUsd":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"USD value of user position"},"staking":{"type":"boolean","description":"Whether pool supports staking"},"userStakedBalanceUsd":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"USD value of user staked position"},"stakingRewards":{"anyOf":[{},{"type":"null"}],"description":"Staking rewards data"},"tvlUsd":{"type":"number","description":"Total value locked in USD"},"apr":{"type":"number","description":"Annual percentage rate"},"aprBoost":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Additional APR from staking boost"},"id":{"type":"string","description":"Pool ID (0x-prefixed)"},"version":{"type":"number","description":"Protocol version (1, 2, or 3)"}},"required":["name","chain","type","tokens","userBalanceUsd","staking","userStakedBalanceUsd","stakingRewards","tvlUsd","apr","aprBoost","id","version"],"additionalProperties":false},"description":"Matching pools sorted by APR"}},"required":["chain","tokens","pools"],"additionalProperties":false},{"type":"object","properties":{"chain":{"type":"string","description":"Chain name"},"error":{"type":"string","description":"Error message"}},"required":["chain","error"],"additionalProperties":false}]}}},"required":["project","operation","data"],"additionalProperties":false},{"type":"object","properties":{"project":{"type":"string","description":"Protocol identifier"},"operation":{"type":"string","description":"Operation that produced this response"},"error":{"type":"string","description":"Error message"}},"required":["project","operation","error"],"additionalProperties":false}]}},{"name":"getPoolsWithTokenPairs","description":"Show the top 10 pools with the given pairs of tokens. If the user asks, then filter the pools by type (Weighted, Stable, Gyroe, CoW AMM) or version (V1, V2, V3).","inputSchema":{"type":"object","properties":{"tokenPairsOnChains":{"type":"array","items":{"type":"object","properties":{"chainName":{"type":"string","enum":["ethereum","arbitrum","base","avalanche","gnosis","polygon","optimism","plasma"],"description":"Chain name"},"tokenPairs":{"type":"array","items":{"type":"object","properties":{"token0Symbol":{"type":"string","description":"Symbol of the first token to search for."},"token1Symbol":{"type":"string","description":"Symbol of the second token to search for."}},"required":["token0Symbol","token1Symbol"],"additionalProperties":false},"description":"Array of pairs of tokens. The order does not matter, so do not duplicate pairs."}},"required":["chainName","tokenPairs"],"additionalProperties":false},"description":"Array of chains and token pairs to check the pools with the given pairs of tokens for."}},"required":["tokenPairsOnChains"],"additionalProperties":false},"outputSchema":{"type":"object","anyOf":[{"type":"object","properties":{"project":{"type":"string","description":"Protocol identifier"},"operation":{"type":"string","description":"Operation that produced this response"},"note":{"type":"string","description":"Human-readable summary of the action"},"data":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"chain":{"type":"string","description":"Chain name"},"tokenPair":{"type":"object","properties":{"token0Symbol":{"type":"string","description":"First token symbol"},"token1Symbol":{"type":"string","description":"Second token symbol"}},"required":["token0Symbol","token1Symbol"],"additionalProperties":false,"description":"Searched token pair"},"pools":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Pool display name"},"chain":{"type":"string","description":"Chain identifier"},"type":{"type":"string","description":"Pool type (e.g. Weighted, Stable, Gyroe, CoW AMM)"},"tokens":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Token name"},"symbol":{"type":"string","description":"Token symbol"},"weight":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Token weight in pool (null for unweighted pools)"},"address":{"type":"string","description":"Token contract address"}},"required":["name","symbol","weight","address"],"additionalProperties":false},"description":"Tokens in the pool"},"userBalanceUsd":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"USD value of user position"},"staking":{"type":"boolean","description":"Whether pool supports staking"},"userStakedBalanceUsd":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"USD value of user staked position"},"stakingRewards":{"anyOf":[{},{"type":"null"}],"description":"Staking rewards data"},"tvlUsd":{"type":"number","description":"Total value locked in USD"},"apr":{"type":"number","description":"Annual percentage rate"},"aprBoost":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Additional APR from staking boost"},"id":{"type":"string","description":"Pool ID (0x-prefixed)"},"version":{"type":"number","description":"Protocol version (1, 2, or 3)"}},"required":["name","chain","type","tokens","userBalanceUsd","staking","userStakedBalanceUsd","stakingRewards","tvlUsd","apr","aprBoost","id","version"],"additionalProperties":false},"description":"Matching pools sorted by APR"}},"required":["chain","tokenPair","pools"],"additionalProperties":false},{"type":"object","properties":{"chain":{"type":"string","description":"Chain name"},"error":{"type":"string","description":"Error message"}},"required":["chain","error"],"additionalProperties":false}]}}},"required":["project","operation","data"],"additionalProperties":false},{"type":"object","properties":{"project":{"type":"string","description":"Protocol identifier"},"operation":{"type":"string","description":"Operation that produced this response"},"error":{"type":"string","description":"Error message"}},"required":["project","operation","error"],"additionalProperties":false}]}},{"name":"getPoolInfoFromPoolIds","description":"Get information about a specific pool and any positions in the pool belonging to the user.","inputSchema":{"type":"object","properties":{"userAddress":{"type":"string","description":"The EVM wallet address of the user"},"poolsOnChains":{"type":"array","items":{"type":"object","properties":{"chainName":{"type":"string","enum":["ethereum","arbitrum","base","avalanche","gnosis","polygon","optimism","plasma"],"description":"Chain name"},"poolIds":{"type":"array","items":{"type":"string"},"description":"Array of pool IDs to get information for."}},"required":["chainName","poolIds"],"additionalProperties":false},"description":"Array of chains and pool IDs to get information for."}},"required":["userAddress","poolsOnChains"],"additionalProperties":false},"outputSchema":{"type":"object","anyOf":[{"type":"object","properties":{"project":{"type":"string","description":"Protocol identifier"},"operation":{"type":"string","description":"Operation that produced this response"},"note":{"type":"string","description":"Human-readable summary of the action"},"data":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"chain":{"type":"string","description":"Chain name"},"poolId":{"type":"string","description":"Pool ID"},"pool":{"type":"object","properties":{"name":{"type":"string","description":"Pool display name"},"chain":{"type":"string","description":"Chain identifier"},"type":{"type":"string","description":"Pool type (e.g. Weighted, Stable, Gyroe, CoW AMM)"},"tokens":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Token name"},"symbol":{"type":"string","description":"Token symbol"},"weight":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Token weight in pool (null for unweighted pools)"},"address":{"type":"string","description":"Token contract address"}},"required":["name","symbol","weight","address"],"additionalProperties":false},"description":"Tokens in the pool"},"userBalanceUsd":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"USD value of user position"},"staking":{"type":"boolean","description":"Whether pool supports staking"},"userStakedBalanceUsd":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"USD value of user staked position"},"stakingRewards":{"anyOf":[{},{"type":"null"}],"description":"Staking rewards data"},"tvlUsd":{"type":"number","description":"Total value locked in USD"},"apr":{"type":"number","description":"Annual percentage rate"},"aprBoost":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Additional APR from staking boost"},"id":{"type":"string","description":"Pool ID (0x-prefixed)"},"version":{"type":"number","description":"Protocol version (1, 2, or 3)"}},"required":["name","chain","type","tokens","userBalanceUsd","staking","userStakedBalanceUsd","stakingRewards","tvlUsd","apr","aprBoost","id","version"],"additionalProperties":false,"description":"Pool details"}},"required":["chain","poolId","pool"],"additionalProperties":false},{"type":"object","properties":{"chain":{"type":"string","description":"Chain name"},"error":{"type":"string","description":"Error message"}},"required":["chain","error"],"additionalProperties":false}]}}},"required":["project","operation","data"],"additionalProperties":false},{"type":"object","properties":{"project":{"type":"string","description":"Protocol identifier"},"operation":{"type":"string","description":"Operation that produced this response"},"error":{"type":"string","description":"Error message"}},"required":["project","operation","error"],"additionalProperties":false}]}},{"name":"getPoolInfoFromPoolNames","description":"Get information about a specific pool by its name.","inputSchema":{"type":"object","properties":{"poolsOnChains":{"type":"array","items":{"type":"object","properties":{"chainName":{"type":"string","enum":["ethereum","arbitrum","base","avalanche","gnosis","polygon","optimism","plasma"],"description":"Chain name"},"poolNames":{"type":"array","items":{"type":"string"},"description":"Names of the pools to search for, for example \"Aave GHO/USDT/USDC\", \"Gyro eBTC-Aave USDCn\", \"osETH/wETH-BPT\", \"ECLP-stdeUSD-deUSD\". The search is case-insensitive, with partial matches allowed."}},"required":["chainName","poolNames"],"additionalProperties":false},"description":"Array of chains and pool names to get information for."}},"required":["poolsOnChains"],"additionalProperties":false},"outputSchema":{"type":"object","anyOf":[{"type":"object","properties":{"project":{"type":"string","description":"Protocol identifier"},"operation":{"type":"string","description":"Operation that produced this response"},"note":{"type":"string","description":"Human-readable summary of the action"},"data":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"chain":{"type":"string","description":"Chain name"},"poolName":{"type":"string","description":"Pool name"},"pool":{"type":"object","properties":{"name":{"type":"string","description":"Pool display name"},"chain":{"type":"string","description":"Chain identifier"},"type":{"type":"string","description":"Pool type (e.g. Weighted, Stable, Gyroe, CoW AMM)"},"tokens":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Token name"},"symbol":{"type":"string","description":"Token symbol"},"weight":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Token weight in pool (null for unweighted pools)"},"address":{"type":"string","description":"Token contract address"}},"required":["name","symbol","weight","address"],"additionalProperties":false},"description":"Tokens in the pool"},"userBalanceUsd":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"USD value of user position"},"staking":{"type":"boolean","description":"Whether pool supports staking"},"userStakedBalanceUsd":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"USD value of user staked position"},"stakingRewards":{"anyOf":[{},{"type":"null"}],"description":"Staking rewards data"},"tvlUsd":{"type":"number","description":"Total value locked in USD"},"apr":{"type":"number","description":"Annual percentage rate"},"aprBoost":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Additional APR from staking boost"},"id":{"type":"string","description":"Pool ID (0x-prefixed)"},"version":{"type":"number","description":"Protocol version (1, 2, or 3)"}},"required":["name","chain","type","tokens","userBalanceUsd","staking","userStakedBalanceUsd","stakingRewards","tvlUsd","apr","aprBoost","id","version"],"additionalProperties":false,"description":"Pool details"}},"required":["chain","poolName","pool"],"additionalProperties":false},{"type":"object","properties":{"chain":{"type":"string","description":"Chain name"},"poolName":{"type":"string","description":"Pool name"},"pools":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Pool display name"},"chain":{"type":"string","description":"Chain identifier"},"type":{"type":"string","description":"Pool type (e.g. Weighted, Stable, Gyroe, CoW AMM)"},"tokens":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Token name"},"symbol":{"type":"string","description":"Token symbol"},"weight":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Token weight in pool (null for unweighted pools)"},"address":{"type":"string","description":"Token contract address"}},"required":["name","symbol","weight","address"],"additionalProperties":false},"description":"Tokens in the pool"},"userBalanceUsd":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"USD value of user position"},"staking":{"type":"boolean","description":"Whether pool supports staking"},"userStakedBalanceUsd":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"USD value of user staked position"},"stakingRewards":{"anyOf":[{},{"type":"null"}],"description":"Staking rewards data"},"tvlUsd":{"type":"number","description":"Total value locked in USD"},"apr":{"type":"number","description":"Annual percentage rate"},"aprBoost":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Additional APR from staking boost"},"id":{"type":"string","description":"Pool ID (0x-prefixed)"},"version":{"type":"number","description":"Protocol version (1, 2, or 3)"}},"required":["name","chain","type","tokens","userBalanceUsd","staking","userStakedBalanceUsd","stakingRewards","tvlUsd","apr","aprBoost","id","version"],"additionalProperties":false},"description":"Multiple matching pools when name is ambiguous"}},"required":["chain","poolName","pools"],"additionalProperties":false},{"type":"object","properties":{"chain":{"type":"string","description":"Chain name"},"error":{"type":"string","description":"Error message"}},"required":["chain","error"],"additionalProperties":false}]}}},"required":["project","operation","data"],"additionalProperties":false},{"type":"object","properties":{"project":{"type":"string","description":"Protocol identifier"},"operation":{"type":"string","description":"Operation that produced this response"},"error":{"type":"string","description":"Error message"}},"required":["project","operation","error"],"additionalProperties":false}]}},{"name":"stake","description":"Stake your liquidity in the pool.","inputSchema":{"type":"object","properties":{"userAddress":{"type":"string","description":"The EVM wallet address of the user"},"chainName":{"type":"string","enum":["ethereum","arbitrum","base","avalanche","gnosis","polygon","optimism","plasma"],"description":"Chain name"},"poolId":{"type":"string","description":"ID of the pool to stake liquidity, starting with \"0x\""},"stakePercentage":{"description":"Amount of liquidity to stake, as a percentage (e.g. 50 for 50%). If omitted, all liquidity will be staked.","type":"string"}},"required":["userAddress","chainName","poolId"],"additionalProperties":false},"outputSchema":{"type":"object","anyOf":[{"type":"object","properties":{"project":{"type":"string","description":"Protocol identifier"},"operation":{"type":"string","description":"Operation that produced this response"},"note":{"type":"string","description":"Human-readable summary of the action"},"transactions":{"type":"array","items":{"type":"object","properties":{"chainId":{"type":"number","description":"EVM chain ID"},"transaction":{"type":"object","properties":{"target":{"type":"string","description":"Target contract address"},"data":{"type":"string","description":"ABI-encoded calldata"},"value":{"description":"Native token value in wei","type":"string"}},"required":["target","data"],"additionalProperties":false,"description":"EVM transaction parameters"}},"required":["chainId","transaction"],"additionalProperties":false},"description":"EVM transactions to sign and broadcast"}},"required":["project","operation","transactions"],"additionalProperties":false},{"type":"object","properties":{"project":{"type":"string","description":"Protocol identifier"},"operation":{"type":"string","description":"Operation that produced this response"},"error":{"type":"string","description":"Error message"}},"required":["project","operation","error"],"additionalProperties":false}]}},{"name":"unstake","description":"Unstake your liquidity from the pool.","inputSchema":{"type":"object","properties":{"userAddress":{"type":"string","description":"The EVM wallet address of the user"},"chainName":{"type":"string","enum":["ethereum","arbitrum","base","avalanche","gnosis","polygon","optimism","plasma"],"description":"Chain name"},"poolId":{"type":"string","description":"ID of the pool to unstake liquidity, starting with \"0x\""},"unstakePercentage":{"description":"Amount of liquidity to unstake, as a percentage (e.g. 50 for 50%). If omitted, all liquidity will be unstaked.","type":"string"}},"required":["userAddress","chainName","poolId"],"additionalProperties":false},"outputSchema":{"type":"object","anyOf":[{"type":"object","properties":{"project":{"type":"string","description":"Protocol identifier"},"operation":{"type":"string","description":"Operation that produced this response"},"note":{"type":"string","description":"Human-readable summary of the action"},"transactions":{"type":"array","items":{"type":"object","properties":{"chainId":{"type":"number","description":"EVM chain ID"},"transaction":{"type":"object","properties":{"target":{"type":"string","description":"Target contract address"},"data":{"type":"string","description":"ABI-encoded calldata"},"value":{"description":"Native token value in wei","type":"string"}},"required":["target","data"],"additionalProperties":false,"description":"EVM transaction parameters"}},"required":["chainId","transaction"],"additionalProperties":false},"description":"EVM transactions to sign and broadcast"}},"required":["project","operation","transactions"],"additionalProperties":false},{"type":"object","properties":{"project":{"type":"string","description":"Protocol identifier"},"operation":{"type":"string","description":"Operation that produced this response"},"error":{"type":"string","description":"Error message"}},"required":["project","operation","error"],"additionalProperties":false}]}},{"name":"claimRewards","description":"Claim rewards for staking from the pool.","inputSchema":{"type":"object","properties":{"userAddress":{"type":"string","description":"The EVM wallet address of the user"},"chainName":{"type":"string","enum":["ethereum","arbitrum","base","avalanche","gnosis","polygon","optimism","plasma"],"description":"Chain name"},"poolId":{"type":"string","description":"ID of the pool to claim rewards from, starting with \"0x\""}},"required":["userAddress","chainName","poolId"],"additionalProperties":false},"outputSchema":{"type":"object","anyOf":[{"type":"object","properties":{"project":{"type":"string","description":"Protocol identifier"},"operation":{"type":"string","description":"Operation that produced this response"},"note":{"type":"string","description":"Human-readable summary of the action"},"transactions":{"type":"array","items":{"type":"object","properties":{"chainId":{"type":"number","description":"EVM chain ID"},"transaction":{"type":"object","properties":{"target":{"type":"string","description":"Target contract address"},"data":{"type":"string","description":"ABI-encoded calldata"},"value":{"description":"Native token value in wei","type":"string"}},"required":["target","data"],"additionalProperties":false,"description":"EVM transaction parameters"}},"required":["chainId","transaction"],"additionalProperties":false},"description":"EVM transactions to sign and broadcast"}},"required":["project","operation","transactions"],"additionalProperties":false},{"type":"object","properties":{"project":{"type":"string","description":"Protocol identifier"},"operation":{"type":"string","description":"Operation that produced this response"},"error":{"type":"string","description":"Error message"}},"required":["project","operation","error"],"additionalProperties":false}]}},{"name":"getPendingRewards","description":"Get rewards for staking from the pool.","inputSchema":{"type":"object","properties":{"userAddress":{"type":"string","description":"The EVM wallet address of the user"},"poolsOnChains":{"type":"array","items":{"type":"object","properties":{"chainName":{"type":"string","enum":["ethereum","arbitrum","base","avalanche","gnosis","polygon","optimism","plasma"],"description":"Chain name"},"poolIds":{"type":"array","items":{"type":"string"},"description":"Array of pool IDs to get information for."}},"required":["chainName","poolIds"],"additionalProperties":false},"description":"Array of chains and pool IDs to check the rewards for."}},"required":["userAddress","poolsOnChains"],"additionalProperties":false},"outputSchema":{"type":"object","anyOf":[{"type":"object","properties":{"project":{"type":"string","description":"Protocol identifier"},"operation":{"type":"string","description":"Operation that produced this response"},"note":{"type":"string","description":"Human-readable summary of the action"},"data":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"chain":{"type":"string","description":"Chain name"},"poolId":{"type":"string","description":"Pool ID"},"rewards":{"type":"array","items":{"type":"object","properties":{"address":{"type":"string","description":"Reward token address"},"symbol":{"type":"string","description":"Reward token symbol"},"amount":{"type":"string","description":"Reward amount in human-readable decimal format (e.g. '1.5')"},"decimals":{"type":"number","description":"Token decimals"}},"required":["address","symbol","amount","decimals"],"additionalProperties":false},"description":"Pending reward tokens"}},"required":["chain","poolId","rewards"],"additionalProperties":false},{"type":"object","properties":{"chain":{"type":"string","description":"Chain name"},"error":{"type":"string","description":"Error message"}},"required":["chain","error"],"additionalProperties":false}]}}},"required":["project","operation","data"],"additionalProperties":false},{"type":"object","properties":{"project":{"type":"string","description":"Protocol identifier"},"operation":{"type":"string","description":"Operation that produced this response"},"error":{"type":"string","description":"Error message"}},"required":["project","operation","error"],"additionalProperties":false}]}}]}