{"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-beets","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":{"chainName":{"type":"string","enum":["sonic"],"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. For regular pools, it is optional; if not provided, the first token will be zapped alone in the pool.","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 for the chain will be used.","type":"string"},"userAddress":{"type":"string","description":"The EVM wallet address of the user"}},"required":["chainName","poolId","token0Address","token0Amount","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":"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":{"chainName":{"type":"string","enum":["sonic"],"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 of the user liquidity will be removed.","type":"string"},"slippageAsPercentage":{"description":"The maximum slippage as a percentage (e.g. 10 for 10%). If omitted, the default slippage for the chain will be used.","type":"string"},"userAddress":{"type":"string","description":"The EVM wallet address of the user"}},"required":["chainName","poolId","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":"getUserPortfolioPositions","description":"Show the top 10 liquidity positions in the user portfolio. For each position, show the tokens in the pool, the type of pool, the amounts of tokens, the APR yield, and the dollar value of the position.","inputSchema":{"type":"object","properties":{"chainName":{"type":"string","enum":["sonic"],"description":"Chain name"},"userAddress":{"type":"string","description":"The EVM wallet address of the user"}},"required":["chainName","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":{"chain":{"type":"string","description":"Chain name"},"positions":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Pool display name"},"type":{"type":"string","description":"Pool type (e.g. Weighted, Stable, Composable Stable)"},"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)"}},"required":["name","symbol","weight"],"additionalProperties":false},"description":"Tokens in the pool"},"userBalanceUsd":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"USD value of user position"},"userStakedBalanceUsd":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"USD value of user staked position"},"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)"}},"required":["name","type","tokens","userBalanceUsd","userStakedBalanceUsd","tvlUsd","apr","aprBoost","id"],"additionalProperties":false},"description":"User liquidity positions"}},"required":["chain","positions"],"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. Only includes pools with TVL > 10000. Will include also pools with tokens equivalent to the given token, e.g. if you ask for Sonic, pools with stS (staked Sonic) will be included too.","inputSchema":{"type":"object","properties":{"tokensOnChains":{"type":"array","items":{"type":"object","properties":{"chainName":{"type":"string","enum":["sonic"],"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"},"type":{"type":"string","description":"Pool type (e.g. Weighted, Stable, Composable Stable)"},"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)"}},"required":["name","symbol","weight"],"additionalProperties":false},"description":"Tokens in the pool"},"userBalanceUsd":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"USD value of user position"},"userStakedBalanceUsd":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"USD value of user staked position"},"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)"}},"required":["name","type","tokens","userBalanceUsd","userStakedBalanceUsd","tvlUsd","apr","aprBoost","id"],"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":"getBestAprForTokenPairs","description":"Show the top 10 pools with the best APR yield for the given pairs of tokens, sorted by APR. Only includes pools with TVL > 10000. Will include also pools with tokens equivalent to the given ones, e.g. if you ask for Sonic, pools with stS (staked Sonic) will be included too.","inputSchema":{"type":"object","properties":{"tokenPairsOnChains":{"type":"array","items":{"type":"object","properties":{"chainName":{"type":"string","enum":["sonic"],"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"},"type":{"type":"string","description":"Pool type (e.g. Weighted, Stable, Composable Stable)"},"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)"}},"required":["name","symbol","weight"],"additionalProperties":false},"description":"Tokens in the pool"},"userBalanceUsd":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"USD value of user position"},"userStakedBalanceUsd":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"USD value of user staked position"},"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)"}},"required":["name","type","tokens","userBalanceUsd","userStakedBalanceUsd","tvlUsd","apr","aprBoost","id"],"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, sorted by TVL. Only includes pools with TVL > 10000.","inputSchema":{"type":"object","properties":{"tokensOnChains":{"type":"array","items":{"type":"object","properties":{"chainName":{"type":"string","enum":["sonic"],"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"},"type":{"type":"string","description":"Pool type (e.g. Weighted, Stable, Composable Stable)"},"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)"}},"required":["name","symbol","weight"],"additionalProperties":false},"description":"Tokens in the pool"},"userBalanceUsd":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"USD value of user position"},"userStakedBalanceUsd":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"USD value of user staked position"},"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)"}},"required":["name","type","tokens","userBalanceUsd","userStakedBalanceUsd","tvlUsd","apr","aprBoost","id"],"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, sorted by TVL. Only includes pools with TVL > 10000.","inputSchema":{"type":"object","properties":{"tokenPairsOnChains":{"type":"array","items":{"type":"object","properties":{"chainName":{"type":"string","enum":["sonic"],"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"},"type":{"type":"string","description":"Pool type (e.g. Weighted, Stable, Composable Stable)"},"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)"}},"required":["name","symbol","weight"],"additionalProperties":false},"description":"Tokens in the pool"},"userBalanceUsd":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"USD value of user position"},"userStakedBalanceUsd":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"USD value of user staked position"},"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)"}},"required":["name","type","tokens","userBalanceUsd","userStakedBalanceUsd","tvlUsd","apr","aprBoost","id"],"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 specific pools, including the APR yield, the TVL, and any positions in the pools belonging to the user.","inputSchema":{"type":"object","properties":{"poolsOnChains":{"type":"array","items":{"type":"object","properties":{"chainName":{"type":"string","enum":["sonic"],"description":"Chain name"},"poolIds":{"type":"array","items":{"type":"string"},"description":"Array of pool IDs to get information about."}},"required":["chainName","poolIds"],"additionalProperties":false},"description":"Array of chains and pool IDs to get information about."},"userAddress":{"type":"string","description":"The EVM wallet address of the user"}},"required":["poolsOnChains","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"},"poolId":{"type":"string","description":"Pool ID"},"pool":{"type":"object","properties":{"name":{"type":"string","description":"Pool display name"},"type":{"type":"string","description":"Pool type (e.g. Weighted, Stable, Composable Stable)"},"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)"}},"required":["name","symbol","weight"],"additionalProperties":false},"description":"Tokens in the pool"},"userBalanceUsd":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"USD value of user position"},"userStakedBalanceUsd":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"USD value of user staked position"},"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)"}},"required":["name","type","tokens","userBalanceUsd","userStakedBalanceUsd","tvlUsd","apr","aprBoost","id"],"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 specific pools by their names, including the APR yield and the TVL.","inputSchema":{"type":"object","properties":{"poolsOnChains":{"type":"array","items":{"type":"object","properties":{"chainName":{"type":"string","enum":["sonic"],"description":"Chain name"},"poolNames":{"type":"array","items":{"type":"string"},"description":"Array of pool names to search for, for example \"Staked Sonic Symphony\", \"Boosted Angular Symphony\", \"Fresh Beets\". The search is case-insensitive, with partial matches allowed."}},"required":["chainName","poolNames"],"additionalProperties":false},"description":"Array of chains and pool names to get information about."}},"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"},"type":{"type":"string","description":"Pool type (e.g. Weighted, Stable, Composable Stable)"},"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)"}},"required":["name","symbol","weight"],"additionalProperties":false},"description":"Tokens in the pool"},"userBalanceUsd":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"USD value of user position"},"userStakedBalanceUsd":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"USD value of user staked position"},"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)"}},"required":["name","type","tokens","userBalanceUsd","userStakedBalanceUsd","tvlUsd","apr","aprBoost","id"],"additionalProperties":false,"description":"Pool details"}},"required":["chain","poolName","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":"stake","description":"Stake Sonic tokens (S) and obtain in return staked Sonic tokens (stS). Only Sonic tokens (S) can be staked, if user specified any other tokens - return him the error \"Only Sonic tokens (S) can be staked\".","inputSchema":{"type":"object","properties":{"chainName":{"type":"string","enum":["sonic"],"description":"Chain name"},"amount":{"type":"string","description":"Amount of tokens to stake in human-readable decimal format (e.g. '1.5')"},"userAddress":{"type":"string","description":"The EVM wallet address of the user"}},"required":["chainName","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":"unStake","description":"Initiate the undelegation process for staked Sonic tokens (stS). This action effectively \"surrenders\" stS tokens from the user to the protocol and locks them for a 14-day waiting period. After 14 days, a separate \"withdraw\" call is required to reclaim the corresponding Sonic tokens.","inputSchema":{"type":"object","properties":{"chainName":{"type":"string","enum":["sonic"],"description":"Chain name"},"amount":{"type":"string","description":"Amount of stS tokens to undelegate in human-readable decimal format (e.g. '1.5')"},"userAddress":{"type":"string","description":"The EVM wallet address of the user"}},"required":["chainName","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","description":"Withdraw Sonic tokens (S) for the withdraw request identified by the provided ID","inputSchema":{"type":"object","properties":{"chainName":{"type":"string","enum":["sonic"],"description":"Chain name"},"withdrawId":{"type":"string","description":"ID of the withdraw request to process"},"userAddress":{"type":"string","description":"The EVM wallet address of the user"}},"required":["chainName","withdrawId","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":"withdrawAll","description":"Withdraw Sonic tokens (S) from all withdraw requests that have completed the 14-day waiting period","inputSchema":{"type":"object","properties":{"chainName":{"type":"string","enum":["sonic"],"description":"Chain name"},"userAddress":{"type":"string","description":"The EVM wallet address of the user"}},"required":["chainName","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":"getTotalSonicInProtocol","description":"Gets the total amount of Sonic tokens (S) in the protocol, including staked (delegated) and undelegated (pool) tokens","inputSchema":{"type":"object","properties":{"chainName":{"type":"string","enum":["sonic"],"description":"Chain name"}},"required":["chainName"],"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":{"totalSonic":{"type":"string","description":"Total Sonic in protocol in human-readable decimal format (e.g. '1.5')"},"unit":{"type":"string","description":"Token unit"}},"required":["totalSonic","unit"],"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":"getTotalStakedSonicInProtocol","description":"Protocol function that gets the total amount of Sonic tokens (S) staked in the protocol; this includes only staked tokens, not pool tokens","inputSchema":{"type":"object","properties":{"chainName":{"type":"string","enum":["sonic"],"description":"Chain name"}},"required":["chainName"],"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":{"totalStakedSonic":{"type":"string","description":"Total staked Sonic in protocol in human-readable decimal format (e.g. '1.5')"},"unit":{"type":"string","description":"Token unit"}},"required":["totalStakedSonic","unit"],"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":"getProtocolStakedSonicToSonicExchangeRate","description":"Protocol function that gets how much is worth a staked Sonic token (stS) in Sonic tokens (S); this is defined to be equal to the share conversion rate","inputSchema":{"type":"object","properties":{"chainName":{"type":"string","enum":["sonic"],"description":"Chain name"}},"required":["chainName"],"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":{"rate":{"type":"string","description":"Exchange rate in human-readable decimal format (e.g. '1.05')"}},"required":["rate"],"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":"getProtocolSonicToStakedSonicExchangeRate","description":"Protocol function that gets how much is worth a Sonic token (S) in stakedSonic tokens (stS); this is defined to be equal to the inverse of the share conversion rate","inputSchema":{"type":"object","properties":{"chainName":{"type":"string","enum":["sonic"],"description":"Chain name"}},"required":["chainName"],"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":{"rate":{"type":"string","description":"Exchange rate in human-readable decimal format (e.g. '1.05')"}},"required":["rate"],"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":"getOpenWithdrawRequests","description":"Get the list of open withdrawals for the user. A withdrawal is open if it is either ready to be withdrawn or waiting for the 14-day period to elapse. The withdrawal ID will be shown for each withdrawal.","inputSchema":{"type":"object","properties":{"chainName":{"type":"string","enum":["sonic"],"description":"Chain name"},"userAddress":{"type":"string","description":"The EVM wallet address of the user"}},"required":["chainName","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":{"id":{"type":"number","description":"Withdrawal request ID"},"amount":{"type":"string","description":"Sonic amount in human-readable decimal format (e.g. '1.5')"},"unit":{"type":"string","description":"Token unit"},"isReady":{"type":"boolean","description":"Whether the withdrawal is ready to claim"},"timeRemaining":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Human-readable time remaining until ready (null when ready)"},"readyTime":{"type":"string","description":"ISO 8601 timestamp when withdrawal becomes claimable"}},"required":["id","amount","unit","isReady","timeRemaining","readyTime"],"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":"getNextWithdrawal","description":"Get details of the withdrawal request that is closest to being ready to be withdrawn. This is useful for checking how long before a user can withdraw.","inputSchema":{"type":"object","properties":{"chainName":{"type":"string","enum":["sonic"],"description":"Chain name"},"userAddress":{"type":"string","description":"The EVM wallet address of the user"}},"required":["chainName","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":{"id":{"type":"number","description":"Withdrawal request ID"},"amount":{"type":"string","description":"Sonic amount in human-readable decimal format (e.g. '1.5')"},"unit":{"type":"string","description":"Token unit"},"isReady":{"type":"boolean","description":"Whether the withdrawal is ready to claim"},"timeRemaining":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Human-readable time remaining until ready (null when ready)"},"readyTime":{"type":"string","description":"ISO 8601 timestamp when withdrawal becomes claimable"}},"required":["id","amount","unit","isReady","timeRemaining","readyTime"],"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":"getStakingApr","description":"Get the annualized yield from stS tokens in the form of an APR (annual percentage rate)","inputSchema":{"type":"object","properties":{"chainName":{"type":"string","enum":["sonic"],"description":"Chain name"}},"required":["chainName"],"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":{"apr":{"type":"number","description":"Annual percentage rate for stS staking"}},"required":["apr"],"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":"getStakedSonicBalance","description":"Get the account balance of staked Sonic tokens (stS).","inputSchema":{"type":"object","properties":{"chainName":{"type":"string","enum":["sonic"],"description":"Chain name"},"userAddress":{"type":"string","description":"The EVM wallet address of the user"}},"required":["chainName","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":{"balance":{"type":"string","description":"stS token balance in human-readable decimal format (e.g. '1.5')"},"balanceInSonic":{"type":"string","description":"Equivalent Sonic (S) value in human-readable decimal format (e.g. '1.5')"}},"required":["balance","balanceInSonic"],"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":"getBeetsCapabilities","description":"Get information about what Beets LST can do and example prompts.","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":"string","description":"Beets LST capabilities and example prompts"}},"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}]}}]}