{"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-yearn","version":"1.0.0"},"tools":[{"name":"getVaultsWithTokens","title":"Search Vaults by Token","description":"Show the vaults with the given tokens.","inputSchema":{"type":"object","properties":{"tokensOnChains":{"type":"array","items":{"type":"object","properties":{"chainName":{"type":"string","enum":["ethereum","base","arbitrum","polygon","optimism"],"description":"Chain name"},"tokenSymbols":{"type":"array","items":{"type":"string"},"description":"Array of token symbols to search for. 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."}},"required":["chainName","tokenSymbols"],"additionalProperties":false},"description":"Array of chains and tokens to check the vaults 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"},"token":{"type":"string","description":"Token symbol searched"},"vaults":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Vault display name"},"address":{"type":"string","description":"Vault contract address"},"symbol":{"type":"string","description":"Vault token symbol"},"chainId":{"type":"number","description":"EVM chain ID"},"underlyingToken":{"type":"string","description":"Name of the underlying token"},"underlyingTokenAddress":{"type":"string","description":"Address of the underlying token"},"underlyingTokenSymbol":{"type":"string","description":"Symbol of the underlying token"},"version":{"type":"string","description":"Vault version (V2 or V3)"},"tvl":{"type":"number","description":"Total value locked in USD"},"apy":{"type":"number","description":"Annual percentage yield"},"isRetired":{"type":"boolean","description":"Whether the vault is retired"}},"required":["name","address","symbol","chainId","underlyingToken","underlyingTokenAddress","underlyingTokenSymbol","version","tvl","apy","isRetired"],"additionalProperties":false},"description":"Matching vaults"}},"required":["chain","token","vaults"],"additionalProperties":false},{"type":"object","properties":{"chain":{"type":"string","description":"Chain name"},"token":{"description":"Token symbol searched","type":"string"},"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":"getVaultsWithChains","title":"Search Vaults by Chain","description":"Show the vaults on the given chains.","inputSchema":{"type":"object","properties":{"chainNames":{"type":"array","items":{"type":"string","enum":["ethereum","base","arbitrum","polygon","optimism"]},"description":"Array of chain names to check the vaults 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"},"vaults":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Vault display name"},"address":{"type":"string","description":"Vault contract address"},"symbol":{"type":"string","description":"Vault token symbol"},"chainId":{"type":"number","description":"EVM chain ID"},"underlyingToken":{"type":"string","description":"Name of the underlying token"},"underlyingTokenAddress":{"type":"string","description":"Address of the underlying token"},"underlyingTokenSymbol":{"type":"string","description":"Symbol of the underlying token"},"version":{"type":"string","description":"Vault version (V2 or V3)"},"tvl":{"type":"number","description":"Total value locked in USD"},"apy":{"type":"number","description":"Annual percentage yield"},"isRetired":{"type":"boolean","description":"Whether the vault is retired"}},"required":["name","address","symbol","chainId","underlyingToken","underlyingTokenAddress","underlyingTokenSymbol","version","tvl","apy","isRetired"],"additionalProperties":false},"description":"Vaults on this chain"}},"required":["chain","vaults"],"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":"getVaultWithAddresses","title":"Get Vaults by Address","description":"Get vaults with the given addresses.","inputSchema":{"type":"object","properties":{"vaultsOnChains":{"type":"array","items":{"type":"object","properties":{"chainName":{"type":"string","enum":["ethereum","base","arbitrum","polygon","optimism"],"description":"Chain name"},"vaultAddresses":{"type":"array","items":{"type":"string"},"description":"Array of vault addresses to get information about."}},"required":["chainName","vaultAddresses"],"additionalProperties":false},"description":"Array of chains and vault addresses to get information about."}},"required":["vaultsOnChains"],"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"},"address":{"type":"string","description":"Vault address queried"},"vault":{"type":"object","properties":{"name":{"type":"string","description":"Vault display name"},"address":{"type":"string","description":"Vault contract address"},"symbol":{"type":"string","description":"Vault token symbol"},"chainId":{"type":"number","description":"EVM chain ID"},"underlyingToken":{"type":"string","description":"Name of the underlying token"},"underlyingTokenAddress":{"type":"string","description":"Address of the underlying token"},"underlyingTokenSymbol":{"type":"string","description":"Symbol of the underlying token"},"version":{"type":"string","description":"Vault version (V2 or V3)"},"tvl":{"type":"number","description":"Total value locked in USD"},"apy":{"type":"number","description":"Annual percentage yield"},"isRetired":{"type":"boolean","description":"Whether the vault is retired"}},"required":["name","address","symbol","chainId","underlyingToken","underlyingTokenAddress","underlyingTokenSymbol","version","tvl","apy","isRetired"],"additionalProperties":false,"description":"Vault details"}},"required":["chain","address","vault"],"additionalProperties":false},{"type":"object","properties":{"chain":{"type":"string","description":"Chain name"},"address":{"description":"Vault address queried","type":"string"},"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":"getVaultsWithNamesOrSymbols","title":"Search Vaults by Name","description":"Get vaults with the given names or symbols.","inputSchema":{"type":"object","properties":{"vaultsOnChains":{"type":"array","items":{"type":"object","properties":{"chainName":{"type":"string","enum":["ethereum","base","arbitrum","polygon","optimism"],"description":"Chain name"},"vaultNamesOrSymbols":{"type":"array","items":{"type":"string"},"description":"Array of vault names or symbols. Names for example: \"USDC-1 yVault\", \"WETH yVault\", \"Curve USDC-crvUSD Factory yVault\", \"Aave V3 Lido WETH Lender\", \"Sky Rewards USDS Compounder\". Symbols for example: \"DAI\", \"vAMMV2-WETH/OP\", \"sUSDS\", \"eWETH-2\", \"crvUSD\"."}},"required":["chainName","vaultNamesOrSymbols"],"additionalProperties":false},"description":"Array of chains and vault names or symbols to get information about."}},"required":["vaultsOnChains"],"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"},"nameOrSymbol":{"type":"string","description":"Vault name or symbol searched"},"vaults":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Vault display name"},"address":{"type":"string","description":"Vault contract address"},"symbol":{"type":"string","description":"Vault token symbol"},"chainId":{"type":"number","description":"EVM chain ID"},"underlyingToken":{"type":"string","description":"Name of the underlying token"},"underlyingTokenAddress":{"type":"string","description":"Address of the underlying token"},"underlyingTokenSymbol":{"type":"string","description":"Symbol of the underlying token"},"version":{"type":"string","description":"Vault version (V2 or V3)"},"tvl":{"type":"number","description":"Total value locked in USD"},"apy":{"type":"number","description":"Annual percentage yield"},"isRetired":{"type":"boolean","description":"Whether the vault is retired"}},"required":["name","address","symbol","chainId","underlyingToken","underlyingTokenAddress","underlyingTokenSymbol","version","tvl","apy","isRetired"],"additionalProperties":false},"description":"Matching vaults"}},"required":["chain","nameOrSymbol","vaults"],"additionalProperties":false},{"type":"object","properties":{"chain":{"type":"string","description":"Chain name"},"nameOrSymbol":{"description":"Vault name or symbol searched","type":"string"},"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":"getPortfolio","title":"Get Portfolio","description":"Get all positions.","inputSchema":{"type":"object","properties":{"chainNames":{"type":"array","items":{"type":"string","enum":["ethereum","base","arbitrum","polygon","optimism"]},"description":"Array of chain names to check the portfolio for."},"userAddress":{"type":"string","description":"The EVM address of the user."}},"required":["chainNames","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":{"chain":{"type":"string","description":"Chain name"},"positions":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Vault display name"},"address":{"type":"string","description":"Vault contract address"},"symbol":{"type":"string","description":"Vault token symbol"},"chainId":{"type":"number","description":"EVM chain ID"},"underlyingToken":{"type":"string","description":"Name of the underlying token"},"underlyingTokenAddress":{"type":"string","description":"Address of the underlying token"},"underlyingTokenSymbol":{"type":"string","description":"Symbol of the underlying token"},"version":{"type":"string","description":"Vault version (V2 or V3)"},"tvl":{"type":"number","description":"Total value locked in USD"},"apy":{"type":"number","description":"Annual percentage yield"},"isRetired":{"type":"boolean","description":"Whether the vault is retired"},"balance":{"type":"string","description":"Vault token balance in a human-readable decimal format (e.g. '1.5')"},"balanceInToken":{"type":"string","description":"Balance converted to underlying token amount"},"tokenSymbol":{"type":"string","description":"Underlying token symbol"}},"required":["name","address","symbol","chainId","underlyingToken","underlyingTokenAddress","underlyingTokenSymbol","version","tvl","apy","isRetired","balance","balanceInToken","tokenSymbol"],"additionalProperties":false},"description":"User positions in vaults on this chain"}},"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":"deposit","title":"Deposit to Vault","description":"Deposit funds into a vault. The user can specify any token to deposit and it will be automatically swapped. If multiple vaults with a given name or symbol are found, then you need to clarify with the user which vault he wants.","inputSchema":{"type":"object","properties":{"chainName":{"type":"string","enum":["ethereum","base","arbitrum","polygon","optimism"],"description":"Chain name"},"vaultAddressOrName":{"type":"string","description":"Address or name of the vault. If the address was not specified, pass the name of the vault."},"tokenAddress":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The address of any token the user wants to deposit into the vault. If not specified, pass null to deposit the underlying token into the vault."},"amount":{"type":"string","description":"Amount to deposit in decimal format"},"userAddress":{"type":"string","description":"The EVM address of the user."}},"required":["chainName","vaultAddressOrName","tokenAddress","amount","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","title":"Withdraw from Vault","description":"Withdraw funds from a vault. The user can specify any token he wants to receive after withdrawal and it will be automatically swapped.","inputSchema":{"type":"object","properties":{"chainName":{"type":"string","enum":["ethereum","base","arbitrum","polygon","optimism"],"description":"Chain name"},"vaultAddressOrName":{"type":"string","description":"Address or name of the vault. If the address was not specified, pass the name of the vault."},"tokenOutAddress":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The address of any token the user wants to receive after withdrawing from the vault. If not specified, pass null to withdraw to the underlying token in the vault."},"amount":{"type":"string","description":"Amount to withdraw in decimal format. Pass -1 to withdraw all"},"userAddress":{"type":"string","description":"The EVM address of the user."}},"required":["chainName","vaultAddressOrName","tokenOutAddress","amount","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":"getDescriptionYearn","title":"Yearn Description","description":"Get detailed information about Yearn features and how to use them.","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":"Detailed Yearn protocol features and usage instructions"}},"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}]}}]}