{"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-convex","version":"1.0.0"},"tools":[{"name":"getDescriptionConvex","description":"Get detailed description of the Convex protocol and supported operations.","inputSchema":{"type":"object","properties":{},"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":"object","properties":{"description":{"type":"string","description":"Convex protocol description and supported operations"}},"required":["description"],"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":"getSupportedChains","description":"Get the list of supported blockchain networks for Convex protocol.","inputSchema":{"type":"object","properties":{},"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":"object","properties":{"chains":{"type":"array","items":{"type":"string"},"description":"List of supported chain names"}},"required":["chains"],"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":"deposit","description":"Deposit tokens to a Convex pool or vault. The user can specify any token to deposit into the pool or vault and it will be automatically zapped to the pool or vault coin.","inputSchema":{"type":"object","properties":{"convexTokenId":{"type":"number","description":"The numeric ID of the Convex pool or vault to deposit into."},"tokenInAddress":{"type":"string","description":"The address of token to deposit into."},"tokenInAmount":{"type":"string","description":"The amount of LP tokens to deposit in human-readable decimal format (e.g. '1.5'). Use \"-1\" for all balance."},"slippage":{"default":0.03,"description":"The slippage tolerance in percentage. For example, 0.01 for 0.01%","type":"number"},"userAddress":{"type":"string","description":"The EVM address of the user performing the action."}},"required":["convexTokenId","tokenInAddress","tokenInAmount","slippage","userAddress"],"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":"depositAndStake","description":"Deposit and stake tokens to a Convex pool or vault. The user can specify any token to deposit into the pool or vault and it will be automatically zapped to the pool or vault coin. Use this function by default for deposit. If the user specifies that they don't want to stake, use the \"deposit\" function instead. Do NOT use this function if the user only asks to \"stake\" without mentioning \"deposit\". Use the \"stake\" function instead.","inputSchema":{"type":"object","properties":{"chainName":{"type":"string","enum":["ethereum"],"description":"The blockchain network"},"convexTokenId":{"type":"number","description":"The numeric ID of the Convex pool or vault to deposit and stake into."},"tokenInAddress":{"type":"string","description":"The address of token to deposit and stake into."},"tokenInAmount":{"type":"string","description":"The amount of token in human-readable decimal format (e.g. '1.5'). Use \"-1\" for all balance."},"slippage":{"default":0.03,"description":"The slippage tolerance in percentage. For example, 0.01 for 0.01%","type":"number"},"userAddress":{"type":"string","description":"The EVM address of the user performing the action."}},"required":["chainName","convexTokenId","tokenInAddress","tokenInAmount","slippage","userAddress"],"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":"stake","description":"Stake tokens to earn rewards. Use this function when the user asks to \"stake\" tokens, even if they don't explicitly say \"LP tokens\". NEGATIVE CONSTRAINT: Do NOT use this function if the user request contains \"deposit\" or \"add liquidity\" intent. In that case, use the \"depositAndStake\" function instead.","inputSchema":{"type":"object","properties":{"chainName":{"type":"string","enum":["ethereum"],"description":"The blockchain network"},"convexTokenId":{"type":"number","description":"The numeric ID of the Convex pool or vault to stake into."},"tokenInAmount":{"type":"string","description":"The amount of token in human-readable decimal format (e.g. '1.5'). Use \"-1\" for all balance."},"slippage":{"default":0.03,"description":"The slippage tolerance in percentage. For example, 0.01 for 0.01%","type":"number"},"userAddress":{"type":"string","description":"The EVM address of the user performing the action."}},"required":["chainName","convexTokenId","tokenInAmount","slippage","userAddress"],"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":"withdraw","description":"Withdraw a percentage of the user's UNSTAKED Convex tokens back to the underlying Curve tokens. The user can specify any token to receive after withdrawal and it will be automatically zapped to this token.","inputSchema":{"type":"object","properties":{"chainName":{"type":"string","enum":["ethereum"],"description":"Chain name."},"convexTokenId":{"type":"number","description":"The numeric ID of the Convex pool or vault to withdraw from."},"tokenOutAddress":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The address of the token to receive after withdrawal. If null, the underlying Curve LP token will be received. If provided, a zap will be performed to convert to this token."},"amountInPercentage":{"type":"string","description":"Amount of unstaked tokens to withdraw in percentage between 0 and 100. Pass -1 to withdraw all."},"userAddress":{"type":"string","description":"The EVM address of the user performing the action."}},"required":["chainName","convexTokenId","tokenOutAddress","amountInPercentage","userAddress"],"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 a percentage of the user's staked Convex tokens. The tokens remain as Convex tokens (not converted back to Curve tokens). This also claims any pending CRV, CVX, and extra rewards.","inputSchema":{"type":"object","properties":{"chainName":{"type":"string","enum":["ethereum"],"description":"Chain name."},"convexTokenId":{"type":"number","description":"The numeric ID of the Convex pool or vault to unstake from."},"amountInPercentage":{"type":"string","description":"Amount of staked tokens to unstake in percentage between 0 and 100. Pass -1 to unstake all."},"userAddress":{"type":"string","description":"The EVM address of the user performing the action."}},"required":["chainName","convexTokenId","amountInPercentage","userAddress"],"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":"unstakeAndWithdraw","description":"Unstake and withdraw a percentage of the user's staked Convex tokens back to the underlying Curve tokens in one transaction. This also claims any pending CRV, CVX, and extra rewards. The user can specify any token to receive after withdrawal and it will be automatically zapped to this token.","inputSchema":{"type":"object","properties":{"chainName":{"type":"string","enum":["ethereum"],"description":"Chain name."},"convexTokenId":{"type":"number","description":"The numeric ID of the Convex pool or vault to withdraw from."},"tokenOutAddress":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The address of the token to receive after withdrawal. If null, the underlying Curve LP token will be received. If provided, a zap will be performed to convert to this token."},"amountInPercentage":{"type":"string","description":"Amount of staked tokens to unstake and withdraw in percentage between 0 and 100. Pass -1 to withdraw all."},"userAddress":{"type":"string","description":"The EVM address of the user performing the action."}},"required":["chainName","convexTokenId","tokenOutAddress","amountInPercentage","userAddress"],"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 CRV and CVX rewards earned from staking in a Convex pool or vault. This will claim CRV rewards, CVX rewards and any extra reward tokens (e.g. FXS, SPELL, etc.).","inputSchema":{"type":"object","properties":{"chainName":{"type":"string","enum":["ethereum"],"description":"Chain name."},"convexTokenId":{"type":"number","description":"The numeric ID of the Convex pool or vault to claim rewards from."},"userAddress":{"type":"string","description":"The EVM address of the user performing the action."}},"required":["chainName","convexTokenId","userAddress"],"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":"getPortfolio","description":"Show all positions in the user's portfolio on the given chain: Convex Liquidity Pools (LP) tokens and Convex Lending Vaults (LV) tokens. Importantly, this tool will also include any Curve token that the user has in their wallet but has not yet deposited on Convex.","inputSchema":{"type":"object","properties":{"chainName":{"type":"string","enum":["ethereum"],"description":"Chain name."},"positionTypes":{"anyOf":[{"type":"array","items":{"type":"string","enum":["LP","LV"]}},{"type":"null"}],"description":"List of position types to include in the result. By default pass null to include all types (LP and LV)."},"userAddress":{"type":"string","description":"The EVM address of the user."}},"required":["chainName","positionTypes","userAddress"],"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":"object","properties":{"chain":{"type":"string","description":"Chain name"},"positions":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","description":"Position type (LP or LV)"},"typeLabel":{"type":"string","description":"Human-readable position type label"},"id":{"type":"number","description":"Convex pool/vault numeric ID"},"name":{"type":"string","description":"Pool or vault display name"},"curveId":{"type":"string","description":"Curve pool/vault identifier"},"curveName":{"type":"string","description":"Curve pool/vault name"},"curveTokenAddress":{"type":"string","description":"Curve LP token contract address"},"coins":{"type":"array","items":{"type":"object","properties":{"symbol":{"type":"string","description":"Token symbol"},"address":{"type":"string","description":"Token contract address"}},"required":["symbol","address"],"additionalProperties":false},"description":"Underlying pool coins"},"tvl":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Total value locked in USD"},"apr":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Annual percentage rate"},"apy":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Annual percentage yield"},"usdPrice":{"type":"number","description":"Token price in USD"},"isInactive":{"type":"boolean","description":"Whether the pool/vault is inactive or shutdown"},"userBalance":{"description":"User balance breakdown (present when user address was provided)","type":"object","properties":{"staked":{"type":"string","description":"Staked token amount in human-readable decimal format (e.g. '1.5')"},"usdStaked":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"USD value of staked tokens"},"unstaked":{"type":"string","description":"Unstaked token amount in human-readable decimal format (e.g. '1.5')"},"usdUnstaked":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"USD value of unstaked tokens"},"total":{"type":"string","description":"Total token amount in human-readable decimal format (e.g. '1.5')"},"usdTotal":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"USD value of total tokens"},"underlying":{"type":"string","description":"Underlying Curve token amount in human-readable decimal format (e.g. '1.5')"},"usdUnderlying":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"USD value of underlying tokens"}},"required":["staked","usdStaked","unstaked","usdUnstaked","total","usdTotal","underlying","usdUnderlying"],"additionalProperties":false},"claimableRewards":{"description":"Pending rewards (present when user has staked position)","type":"object","properties":{"crv":{"type":"string","description":"Claimable CRV amount in human-readable decimal format (e.g. '1.5')"},"cvx":{"type":"string","description":"Claimable CVX amount in human-readable decimal format (e.g. '1.5')"},"extra":{"type":"array","items":{"type":"object","properties":{"symbol":{"type":"string","description":"Extra reward token symbol"},"amount":{"type":"string","description":"Extra reward amount in human-readable decimal format (e.g. '1.5')"}},"required":["symbol","amount"],"additionalProperties":false},"description":"Additional reward tokens"}},"required":["crv","cvx","extra"],"additionalProperties":false}},"required":["type","typeLabel","id","name","curveId","curveName","curveTokenAddress","coins","tvl","apr","apy","usdPrice","isInactive"],"additionalProperties":false},"description":"User Convex positions with balances"},"totalPositions":{"type":"number","description":"Total number of positions found"},"depositablePositions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number","description":"Convex pool/vault numeric ID"},"name":{"type":"string","description":"Pool or vault display name"},"type":{"type":"string","description":"Position type (LP or LV)"},"underlyingBalance":{"type":"string","description":"Underlying Curve token balance in human-readable decimal format (e.g. '1.5')"},"usdUnderlying":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"USD value of underlying balance"}},"required":["id","name","type","underlyingBalance","usdUnderlying"],"additionalProperties":false},"description":"Curve tokens in wallet that could be deposited on Convex"}},"required":["chain","positions","totalPositions","depositablePositions"],"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":"getPoolsAndVaultsWithToken","description":"Show all opportunities for the given underlying tokens on Convex, sorted by APR yield. The result will include both Convex Liquidity Pools (LP) and Convex Lending Vaults (LV). For each opportunity, also shows whether the user has any Curve tokens in their wallet that they could deposit on Convex.","inputSchema":{"type":"object","properties":{"chainName":{"type":"string","enum":["ethereum"],"description":"Chain name."},"tokenSymbols":{"type":"array","items":{"type":"string"},"description":"List of underlying token symbols to search for, for example [\"CRV\", \"ETH\", \"USDT\"]. If the user asks for the native token or the wrapped version of the native token, do not duplicate the token because it will be handled automatically for both versions."},"positionTypes":{"anyOf":[{"type":"array","items":{"type":"string","enum":["LP","LV"]}},{"type":"null"}],"description":"List of position types to include in the result. By default pass null to include all types (LP and LV)."},"sortBy":{"default":"apr","description":"Sort results by APR or TVL.","type":"string","enum":["apr","tvl"]},"userAddress":{"type":"string","description":"The EVM address of the user."}},"required":["chainName","tokenSymbols","positionTypes","sortBy","userAddress"],"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":{"token":{"type":"string","description":"Searched token symbol"},"pools":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","description":"Position type (LP or LV)"},"typeLabel":{"type":"string","description":"Human-readable position type label"},"id":{"type":"number","description":"Convex pool/vault numeric ID"},"name":{"type":"string","description":"Pool or vault display name"},"curveId":{"type":"string","description":"Curve pool/vault identifier"},"curveName":{"type":"string","description":"Curve pool/vault name"},"curveTokenAddress":{"type":"string","description":"Curve LP token contract address"},"coins":{"type":"array","items":{"type":"object","properties":{"symbol":{"type":"string","description":"Token symbol"},"address":{"type":"string","description":"Token contract address"}},"required":["symbol","address"],"additionalProperties":false},"description":"Underlying pool coins"},"tvl":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Total value locked in USD"},"apr":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Annual percentage rate"},"apy":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Annual percentage yield"},"usdPrice":{"type":"number","description":"Token price in USD"},"isInactive":{"type":"boolean","description":"Whether the pool/vault is inactive or shutdown"},"userBalance":{"description":"User balance breakdown (present when user address was provided)","type":"object","properties":{"staked":{"type":"string","description":"Staked token amount in human-readable decimal format (e.g. '1.5')"},"usdStaked":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"USD value of staked tokens"},"unstaked":{"type":"string","description":"Unstaked token amount in human-readable decimal format (e.g. '1.5')"},"usdUnstaked":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"USD value of unstaked tokens"},"total":{"type":"string","description":"Total token amount in human-readable decimal format (e.g. '1.5')"},"usdTotal":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"USD value of total tokens"},"underlying":{"type":"string","description":"Underlying Curve token amount in human-readable decimal format (e.g. '1.5')"},"usdUnderlying":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"USD value of underlying tokens"}},"required":["staked","usdStaked","unstaked","usdUnstaked","total","usdTotal","underlying","usdUnderlying"],"additionalProperties":false},"claimableRewards":{"description":"Pending rewards (present when user has staked position)","type":"object","properties":{"crv":{"type":"string","description":"Claimable CRV amount in human-readable decimal format (e.g. '1.5')"},"cvx":{"type":"string","description":"Claimable CVX amount in human-readable decimal format (e.g. '1.5')"},"extra":{"type":"array","items":{"type":"object","properties":{"symbol":{"type":"string","description":"Extra reward token symbol"},"amount":{"type":"string","description":"Extra reward amount in human-readable decimal format (e.g. '1.5')"}},"required":["symbol","amount"],"additionalProperties":false},"description":"Additional reward tokens"}},"required":["crv","cvx","extra"],"additionalProperties":false}},"required":["type","typeLabel","id","name","curveId","curveName","curveTokenAddress","coins","tvl","apr","apy","usdPrice","isInactive"],"additionalProperties":false},"description":"Matching pools/vaults sorted by yield"}},"required":["token","pools"],"additionalProperties":false},{"type":"object","properties":{"token":{"type":"string","description":"Searched token symbol"},"error":{"type":"string","description":"Error message"}},"required":["token","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":"getPoolsAndVaultsWithChain","description":"Show all opportunities for the given chain on Convex, sorted by APR yield. The result will include both Convex Liquidity Pools (LP) and Convex Lending Vaults (LV). For each opportunity, also shows whether the user has any Curve tokens in their wallet that they could deposit on Convex.","inputSchema":{"type":"object","properties":{"chainName":{"type":"string","enum":["ethereum"],"description":"Chain name."},"positionTypes":{"anyOf":[{"type":"array","items":{"type":"string","enum":["LP","LV"]}},{"type":"null"}],"description":"List of position types to include in the result. By default pass null to include all types (LP and LV)."},"sortBy":{"default":"apr","description":"Sort results by APR or TVL.","type":"string","enum":["apr","tvl"]},"userAddress":{"type":"string","description":"The EVM address of the user."}},"required":["chainName","positionTypes","sortBy","userAddress"],"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":{"type":"object","properties":{"type":{"type":"string","description":"Position type (LP or LV)"},"typeLabel":{"type":"string","description":"Human-readable position type label"},"id":{"type":"number","description":"Convex pool/vault numeric ID"},"name":{"type":"string","description":"Pool or vault display name"},"curveId":{"type":"string","description":"Curve pool/vault identifier"},"curveName":{"type":"string","description":"Curve pool/vault name"},"curveTokenAddress":{"type":"string","description":"Curve LP token contract address"},"coins":{"type":"array","items":{"type":"object","properties":{"symbol":{"type":"string","description":"Token symbol"},"address":{"type":"string","description":"Token contract address"}},"required":["symbol","address"],"additionalProperties":false},"description":"Underlying pool coins"},"tvl":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Total value locked in USD"},"apr":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Annual percentage rate"},"apy":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Annual percentage yield"},"usdPrice":{"type":"number","description":"Token price in USD"},"isInactive":{"type":"boolean","description":"Whether the pool/vault is inactive or shutdown"},"userBalance":{"description":"User balance breakdown (present when user address was provided)","type":"object","properties":{"staked":{"type":"string","description":"Staked token amount in human-readable decimal format (e.g. '1.5')"},"usdStaked":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"USD value of staked tokens"},"unstaked":{"type":"string","description":"Unstaked token amount in human-readable decimal format (e.g. '1.5')"},"usdUnstaked":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"USD value of unstaked tokens"},"total":{"type":"string","description":"Total token amount in human-readable decimal format (e.g. '1.5')"},"usdTotal":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"USD value of total tokens"},"underlying":{"type":"string","description":"Underlying Curve token amount in human-readable decimal format (e.g. '1.5')"},"usdUnderlying":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"USD value of underlying tokens"}},"required":["staked","usdStaked","unstaked","usdUnstaked","total","usdTotal","underlying","usdUnderlying"],"additionalProperties":false},"claimableRewards":{"description":"Pending rewards (present when user has staked position)","type":"object","properties":{"crv":{"type":"string","description":"Claimable CRV amount in human-readable decimal format (e.g. '1.5')"},"cvx":{"type":"string","description":"Claimable CVX amount in human-readable decimal format (e.g. '1.5')"},"extra":{"type":"array","items":{"type":"object","properties":{"symbol":{"type":"string","description":"Extra reward token symbol"},"amount":{"type":"string","description":"Extra reward amount in human-readable decimal format (e.g. '1.5')"}},"required":["symbol","amount"],"additionalProperties":false},"description":"Additional reward tokens"}},"required":["crv","cvx","extra"],"additionalProperties":false}},"required":["type","typeLabel","id","name","curveId","curveName","curveTokenAddress","coins","tvl","apr","apy","usdPrice","isInactive"],"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":"getLiquidityPools","description":"Find information about liquidity pools on Convex, searching by either their numeric IDs or their names. The result will also include whether the user has any Curve tokens in their wallet that they could deposit on Convex. ALWAYS use this function to find the ID of a Convex LP token.","inputSchema":{"type":"object","properties":{"chainName":{"type":"string","enum":["ethereum"],"description":"Chain name."},"convexLpIdsOrNames":{"type":"array","items":{"type":"string"},"description":"A list of strings with either the numeric IDs or the names of the Convex LP tokens to get information about. The name of a Convex LP token consists of the symbols of the pool coins delimited by the plus sign, for example \"ETH+stETH\", \"USDC+USDT\" or \"crvUSD+tBTC+wstETH\". The match is case-insensitive."},"userAddress":{"type":"string","description":"The EVM address of the user."}},"required":["chainName","convexLpIdsOrNames","userAddress"],"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":{"type":{"type":"string","description":"Position type (LP or LV)"},"typeLabel":{"type":"string","description":"Human-readable position type label"},"id":{"type":"number","description":"Convex pool/vault numeric ID"},"name":{"type":"string","description":"Pool or vault display name"},"curveId":{"type":"string","description":"Curve pool/vault identifier"},"curveName":{"type":"string","description":"Curve pool/vault name"},"curveTokenAddress":{"type":"string","description":"Curve LP token contract address"},"coins":{"type":"array","items":{"type":"object","properties":{"symbol":{"type":"string","description":"Token symbol"},"address":{"type":"string","description":"Token contract address"}},"required":["symbol","address"],"additionalProperties":false},"description":"Underlying pool coins"},"tvl":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Total value locked in USD"},"apr":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Annual percentage rate"},"apy":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Annual percentage yield"},"usdPrice":{"type":"number","description":"Token price in USD"},"isInactive":{"type":"boolean","description":"Whether the pool/vault is inactive or shutdown"},"userBalance":{"description":"User balance breakdown (present when user address was provided)","type":"object","properties":{"staked":{"type":"string","description":"Staked token amount in human-readable decimal format (e.g. '1.5')"},"usdStaked":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"USD value of staked tokens"},"unstaked":{"type":"string","description":"Unstaked token amount in human-readable decimal format (e.g. '1.5')"},"usdUnstaked":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"USD value of unstaked tokens"},"total":{"type":"string","description":"Total token amount in human-readable decimal format (e.g. '1.5')"},"usdTotal":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"USD value of total tokens"},"underlying":{"type":"string","description":"Underlying Curve token amount in human-readable decimal format (e.g. '1.5')"},"usdUnderlying":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"USD value of underlying tokens"}},"required":["staked","usdStaked","unstaked","usdUnstaked","total","usdTotal","underlying","usdUnderlying"],"additionalProperties":false},"claimableRewards":{"description":"Pending rewards (present when user has staked position)","type":"object","properties":{"crv":{"type":"string","description":"Claimable CRV amount in human-readable decimal format (e.g. '1.5')"},"cvx":{"type":"string","description":"Claimable CVX amount in human-readable decimal format (e.g. '1.5')"},"extra":{"type":"array","items":{"type":"object","properties":{"symbol":{"type":"string","description":"Extra reward token symbol"},"amount":{"type":"string","description":"Extra reward amount in human-readable decimal format (e.g. '1.5')"}},"required":["symbol","amount"],"additionalProperties":false},"description":"Additional reward tokens"}},"required":["crv","cvx","extra"],"additionalProperties":false}},"required":["type","typeLabel","id","name","curveId","curveName","curveTokenAddress","coins","tvl","apr","apy","usdPrice","isInactive"],"additionalProperties":false},{"type":"object","properties":{"query":{"type":"string","description":"Searched ID or name"},"error":{"type":"string","description":"Error message"}},"required":["query","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":"getLendingVaults","description":"Find information about lending vaults on Convex, searching by either their numeric IDs or their names. The result will also include whether the user has any Curve tokens in their wallet that they could deposit on Convex. ALWAYS use this function to find the ID of a Convex LV token.","inputSchema":{"type":"object","properties":{"chainName":{"type":"string","enum":["ethereum"],"description":"Chain name."},"convexLvIdsOrNames":{"type":"array","items":{"type":"string"},"description":"A list of strings with either the numeric IDs or the names of the Convex Lending Vault (LV) tokens to get information about. The name of a Convex LV token is just the symbol of the token used as collateral, for example \"sUSDe\", \"WETH\" or \"WBTC\". The match is case-insensitive."},"userAddress":{"type":"string","description":"The EVM address of the user."}},"required":["chainName","convexLvIdsOrNames","userAddress"],"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":{"type":{"type":"string","description":"Position type (LP or LV)"},"typeLabel":{"type":"string","description":"Human-readable position type label"},"id":{"type":"number","description":"Convex pool/vault numeric ID"},"name":{"type":"string","description":"Pool or vault display name"},"curveId":{"type":"string","description":"Curve pool/vault identifier"},"curveName":{"type":"string","description":"Curve pool/vault name"},"curveTokenAddress":{"type":"string","description":"Curve LP token contract address"},"coins":{"type":"array","items":{"type":"object","properties":{"symbol":{"type":"string","description":"Token symbol"},"address":{"type":"string","description":"Token contract address"}},"required":["symbol","address"],"additionalProperties":false},"description":"Underlying pool coins"},"tvl":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Total value locked in USD"},"apr":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Annual percentage rate"},"apy":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Annual percentage yield"},"usdPrice":{"type":"number","description":"Token price in USD"},"isInactive":{"type":"boolean","description":"Whether the pool/vault is inactive or shutdown"},"userBalance":{"description":"User balance breakdown (present when user address was provided)","type":"object","properties":{"staked":{"type":"string","description":"Staked token amount in human-readable decimal format (e.g. '1.5')"},"usdStaked":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"USD value of staked tokens"},"unstaked":{"type":"string","description":"Unstaked token amount in human-readable decimal format (e.g. '1.5')"},"usdUnstaked":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"USD value of unstaked tokens"},"total":{"type":"string","description":"Total token amount in human-readable decimal format (e.g. '1.5')"},"usdTotal":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"USD value of total tokens"},"underlying":{"type":"string","description":"Underlying Curve token amount in human-readable decimal format (e.g. '1.5')"},"usdUnderlying":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"USD value of underlying tokens"}},"required":["staked","usdStaked","unstaked","usdUnstaked","total","usdTotal","underlying","usdUnderlying"],"additionalProperties":false},"claimableRewards":{"description":"Pending rewards (present when user has staked position)","type":"object","properties":{"crv":{"type":"string","description":"Claimable CRV amount in human-readable decimal format (e.g. '1.5')"},"cvx":{"type":"string","description":"Claimable CVX amount in human-readable decimal format (e.g. '1.5')"},"extra":{"type":"array","items":{"type":"object","properties":{"symbol":{"type":"string","description":"Extra reward token symbol"},"amount":{"type":"string","description":"Extra reward amount in human-readable decimal format (e.g. '1.5')"}},"required":["symbol","amount"],"additionalProperties":false},"description":"Additional reward tokens"}},"required":["crv","cvx","extra"],"additionalProperties":false}},"required":["type","typeLabel","id","name","curveId","curveName","curveTokenAddress","coins","tvl","apr","apy","usdPrice","isInactive"],"additionalProperties":false},{"type":"object","properties":{"query":{"type":"string","description":"Searched ID or name"},"error":{"type":"string","description":"Error message"}},"required":["query","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}]}}]}