{"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-meteoraDlmm","version":"1.0.0"},"tools":[{"name":"getPositionsList","title":"View DLMM Positions","description":"View user DLMM positions.","inputSchema":{"type":"object","properties":{"chainName":{"type":"string","enum":["solana"],"description":"Chain name"},"userAddress":{"type":"string","description":"The Solana 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":{"poolAddress":{"type":"string","description":"Pool address"},"tokenA":{"type":"string","description":"Base token address"},"tokenB":{"type":"string","description":"Quote token address"},"amountTokenA":{"type":"number","description":"Base token amount in human-readable decimal format"},"amountTokenB":{"type":"number","description":"Quote token amount in human-readable decimal format"},"feeA":{"type":"number","description":"Accumulated base token fees"},"feeB":{"type":"number","description":"Accumulated quote token fees"},"isOutOfRange":{"type":"boolean","description":"Whether the position is out of range"}},"required":["poolAddress","tokenA","tokenB","amountTokenA","amountTokenB","feeA","feeB","isOutOfRange"],"additionalProperties":false},"description":"User DLMM positions and balances"}},"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":"getPoolsList","title":"Top DLMM Pools","description":"View top 10 Meteora DLMM pools.","inputSchema":{"type":"object","properties":{"chainName":{"type":"string","enum":["solana"],"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":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Pool name"},"binStep":{"type":"number","description":"Bin step"},"baseFeePercentage":{"type":"string","description":"Base fee percentage"},"tradeVolume24h":{"type":"number","description":"24h trade volume"},"fees24h":{"type":"string","description":"24h fees"},"apr":{"type":"number","description":"Annual percentage rate"},"tvl":{"type":"string","description":"Total value locked"}},"required":["name","binStep","baseFeePercentage","tradeVolume24h","fees24h","apr","tvl"],"additionalProperties":false},"description":"Top DLMM pools by liquidity"}},"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":"getPoolAddress","title":"Resolve Pool Address","description":"Resolve the DLMM pool address by providing base and quote token addresses.","inputSchema":{"type":"object","properties":{"chainName":{"type":"string","enum":["solana"],"description":"Chain name"},"baseToken":{"type":"string","description":"The base token address of the DLMM pool"},"quoteToken":{"type":"string","description":"The quote token address of the DLMM pool"}},"required":["chainName","baseToken","quoteToken"],"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":{"poolAddress":{"type":"string","description":"Resolved DLMM pool address"}},"required":["poolAddress"],"additionalProperties":false,"description":"Resolved DLMM pool address for the token pair"}},"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":"getTokenPairDlmm","title":"Resolve Token Pair","description":"Resolve the base and quote token addresses by providing DLMM pool address.","inputSchema":{"type":"object","properties":{"chainName":{"type":"string","enum":["solana"],"description":"Chain name"},"poolAddress":{"type":"string","description":"The address of the DLMM pool"}},"required":["chainName","poolAddress"],"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":{"baseToken":{"type":"string","description":"Base token mint address"},"quoteToken":{"type":"string","description":"Quote token mint address"}},"required":["baseToken","quoteToken"],"additionalProperties":false,"description":"Base and quote token mints for the pool"}},"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":"addImbalanceLiquidity","title":"Add Imbalanced Liquidity","description":"Add customized amounts of base and quote tokens to an existing Meteora DLMM position. Use getPoolAddress to resolve the pool address before proceeding. Use getTokenPairDlmm to resolve tokens if only pool address is provided.","inputSchema":{"type":"object","properties":{"chainName":{"type":"string","enum":["solana"],"description":"Chain name"},"strategy":{"type":"string","enum":["spot","curve","bidask"],"description":"Distribution strategy"},"poolAddress":{"description":"Specific pool address. Use getPoolAddress to resolve if not known","type":"string"},"baseToken":{"description":"The base token address of the DLMM pool","type":"string"},"quoteToken":{"description":"The quote token address of the DLMM pool","type":"string"},"baseTokenAmount":{"type":"string","description":"Amount of base tokens to deposit in human-readable decimal format (e.g. '1.5'). Use \"0\" if not provided, \"-1\" for all balance"},"quoteTokenAmount":{"type":"string","description":"Amount of quote tokens to deposit in human-readable decimal format (e.g. '1.5'). Use \"0\" if not provided, \"-1\" for all balance"},"userAddress":{"type":"string","description":"The Solana wallet address of the user"}},"required":["chainName","strategy","baseTokenAmount","quoteTokenAmount","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":{"transaction":{"type":"string","description":"Base64-encoded serialized VersionedTransaction"}},"required":["transaction"],"additionalProperties":false},"description":"Solana 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":"createBalancePosition","title":"Create Balanced Position","description":"Create a balanced 50:50 liquidity position in Meteora DLMM by depositing a single token. Use getPoolAddress to resolve the pool address. Use getTokenPairDlmm to resolve tokens if only pool address is provided.","inputSchema":{"type":"object","properties":{"chainName":{"type":"string","enum":["solana"],"description":"Chain name"},"strategy":{"type":"string","enum":["spot","curve","bidask"],"description":"Distribution strategy"},"poolAddress":{"description":"Specific pool address. Use getPoolAddress to resolve if not known","type":"string"},"baseToken":{"description":"The base token address of the DLMM pool","type":"string"},"quoteToken":{"description":"The quote token address of the DLMM pool","type":"string"},"tokenIn":{"type":"string","description":"The address of the token to be deposited"},"amount":{"type":"string","description":"Amount of tokens to deposit in human-readable decimal format (e.g. '1.5'). Use \"-1\" for all balance"},"bins":{"type":"string","description":"The number of bins to be created"},"userAddress":{"type":"string","description":"The Solana wallet address of the user"}},"required":["chainName","strategy","tokenIn","amount","bins","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":{"transaction":{"type":"string","description":"Base64-encoded serialized VersionedTransaction"}},"required":["transaction"],"additionalProperties":false},"description":"Solana 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":"addBalanceLiquidity","title":"Add Balanced Liquidity","description":"Add balanced 50:50 liquidity to an existing Meteora DLMM position by depositing a single token. Use getPoolAddress to resolve the pool address. Use getTokenPairDlmm to resolve tokens if only pool address is provided.","inputSchema":{"type":"object","properties":{"chainName":{"type":"string","enum":["solana"],"description":"Chain name"},"poolAddress":{"description":"Specific pool address. Use getPoolAddress to resolve if not known","type":"string"},"baseToken":{"description":"The base token address of the DLMM pool","type":"string"},"quoteToken":{"description":"The quote token address of the DLMM pool","type":"string"},"tokenIn":{"type":"string","description":"The address of the token to be deposited"},"amount":{"type":"string","description":"Amount of tokens to deposit in human-readable decimal format (e.g. '1.5'). Use \"-1\" for all balance"},"strategy":{"type":"string","enum":["spot","curve","bidask"],"description":"Distribution strategy"},"userAddress":{"type":"string","description":"The Solana wallet address of the user"}},"required":["chainName","tokenIn","amount","strategy","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":{"transaction":{"type":"string","description":"Base64-encoded serialized VersionedTransaction"}},"required":["transaction"],"additionalProperties":false},"description":"Solana 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":"claimFees","title":"Claim Trading Fees","description":"Collect accumulated trading fees from your Meteora DLMM position without removing liquidity.","inputSchema":{"type":"object","properties":{"chainName":{"type":"string","enum":["solana"],"description":"Chain name"},"baseToken":{"type":"string","description":"The base token address of the DLMM pool"},"quoteToken":{"type":"string","description":"The quote token address of the DLMM pool"},"userAddress":{"type":"string","description":"The Solana wallet address of the user"}},"required":["chainName","baseToken","quoteToken","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":{"transaction":{"type":"string","description":"Base64-encoded serialized VersionedTransaction"}},"required":["transaction"],"additionalProperties":false},"description":"Solana 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":"createImbalancePosition","title":"Create Imbalanced Position","description":"Create imbalanced DLMM position. Use getPoolAddress to resolve the pool address. Use getTokenPairDlmm to resolve tokens if only pool address is provided.","inputSchema":{"type":"object","properties":{"chainName":{"type":"string","enum":["solana"],"description":"Chain name"},"strategy":{"type":"string","enum":["spot","curve","bidask"],"description":"Distribution strategy"},"poolAddress":{"type":"string","description":"The address of the DLMM pool"},"baseToken":{"type":"string","description":"The base token address of the DLMM pool"},"quoteToken":{"type":"string","description":"The quote token address of the DLMM pool"},"baseTokenAmount":{"type":"string","description":"Amount of base tokens to deposit in human-readable decimal format (e.g. '1.5'). Use \"0\" if not provided, \"-1\" for all balance"},"quoteTokenAmount":{"type":"string","description":"Amount of quote tokens to deposit in human-readable decimal format (e.g. '1.5'). Use \"0\" if not provided, \"-1\" for all balance"},"bins":{"type":"string","description":"The number of bins to be created"},"userAddress":{"type":"string","description":"The Solana wallet address of the user"}},"required":["chainName","strategy","poolAddress","baseToken","quoteToken","baseTokenAmount","quoteTokenAmount","bins","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":{"transaction":{"type":"string","description":"Base64-encoded serialized VersionedTransaction"}},"required":["transaction"],"additionalProperties":false},"description":"Solana 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":"getBinSteps","title":"Calculate Bin Step","description":"Calculate bin step based on minimal and maximum price.","inputSchema":{"type":"object","properties":{"chainName":{"type":"string","enum":["solana"],"description":"Chain name"},"minPrice":{"type":"string","description":"Minimum price in human-readable decimal format"},"maxPrice":{"type":"string","description":"Maximum price in human-readable decimal format"},"fee":{"type":"string","description":"The fee percentage for the DLMM pool"}},"required":["chainName","minPrice","maxPrice","fee"],"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":{"binStep":{"type":"number","description":"Suggested bin step for the price range and fee"}},"required":["binStep"],"additionalProperties":false,"description":"Suggested bin step for the price range and fee"}},"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":"createPool","title":"Create DLMM Pool","description":"Create new Meteora DLMM pool. Use getBinSteps if user provided min and max price and not provided bin_step.","inputSchema":{"type":"object","properties":{"chainName":{"type":"string","enum":["solana"],"description":"Chain name"},"baseToken":{"type":"string","description":"The base token address of the DLMM pool"},"quoteToken":{"type":"string","description":"The quote token address of the DLMM pool"},"bin_step":{"type":"string","description":"The bin step of the DLMM pool. Set to \"0\" if not provided"},"fee":{"type":"string","description":"The fee percentage for the DLMM pool. Do not convert it"},"initPrice":{"type":"string","description":"The initial price of the pool in human-readable decimal format. Set to \"-1\" to use the default price"},"userAddress":{"type":"string","description":"The Solana wallet address of the user"}},"required":["chainName","baseToken","quoteToken","bin_step","fee","initPrice","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":{"transaction":{"type":"string","description":"Base64-encoded serialized VersionedTransaction"}},"required":["transaction"],"additionalProperties":false},"description":"Solana 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":"createPositionByPrice","title":"Create Position by Price Range","description":"Create imbalanced position by specifying the token price. Use getPoolAddress to resolve the pool address. Use getTokenPairDlmm to resolve tokens if only pool address is provided.","inputSchema":{"type":"object","properties":{"chainName":{"type":"string","enum":["solana"],"description":"Chain name"},"poolAddress":{"description":"Specific pool address. Use getPoolAddress to resolve if not known","type":"string"},"baseToken":{"description":"The base token address of the DLMM pool","type":"string"},"quoteToken":{"description":"The quote token address of the DLMM pool","type":"string"},"tokenIn":{"type":"string","description":"The address of the token to be deposited"},"minPrice":{"type":"string","description":"Minimum price in human-readable decimal format"},"maxPrice":{"type":"string","description":"Maximum price in human-readable decimal format"},"amount":{"type":"string","description":"Amount of tokens to deposit in human-readable decimal format (e.g. '1.5'). Use \"-1\" for all balance"},"strategy":{"type":"string","enum":["spot","curve","bidask"],"description":"Distribution strategy"},"userAddress":{"type":"string","description":"The Solana wallet address of the user"}},"required":["chainName","tokenIn","minPrice","maxPrice","amount","strategy","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":{"transaction":{"type":"string","description":"Base64-encoded serialized VersionedTransaction"}},"required":["transaction"],"additionalProperties":false},"description":"Solana 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","title":"Remove Liquidity","description":"Remove a percentage of liquidity from your Meteora DLMM position. Set to 100% to close the position. Use getPoolAddress to resolve the pool address. Use getTokenPairDlmm to resolve tokens if only pool address is provided.","inputSchema":{"type":"object","properties":{"chainName":{"type":"string","enum":["solana"],"description":"Chain name"},"poolAddress":{"description":"Specific pool address. Use getPoolAddress to resolve if not known","type":"string"},"baseToken":{"description":"The base token address of the DLMM pool","type":"string"},"quoteToken":{"description":"The quote token address of the DLMM pool","type":"string"},"percentageToRemove":{"type":"string","description":"Percentage of liquidity to remove (1-100)"},"userAddress":{"type":"string","description":"The Solana wallet address of the user"}},"required":["chainName","percentageToRemove","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":{"transaction":{"type":"string","description":"Base64-encoded serialized VersionedTransaction"}},"required":["transaction"],"additionalProperties":false},"description":"Solana 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":"getPoolDetails","title":"Get Pool Details","description":"Receive detailed information (TVL, APR, 24h fee, 24h volume) about a specific liquidity pool. Use getPoolAddress to resolve the pool address.","inputSchema":{"type":"object","properties":{"chainName":{"type":"string","enum":["solana"],"description":"Chain name"},"poolAddress":{"type":"string","description":"The address of the DLMM pool"}},"required":["chainName","poolAddress"],"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":{"address":{"type":"string","description":"Pool address"},"name":{"type":"string","description":"Pool name"},"liquidity":{"type":"string","description":"Total liquidity"},"fees24h":{"type":"number","description":"24h fees"},"apr":{"type":"number","description":"Annual percentage rate"},"binStep":{"type":"number","description":"Bin step"},"tradeVolume24h":{"type":"number","description":"24h trade volume"},"baseFeePercentage":{"type":"string","description":"Base fee percentage"}},"required":["address","name","liquidity","fees24h","apr","binStep","tradeVolume24h","baseFeePercentage"],"additionalProperties":false,"description":"Pool TVL, APR, fees, volume, and related stats"}},"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}]}}]}