Skip to main content
Glama

Server Details

Non-custodial DeFi for AI agents: swaps, concentrated liquidity (V3/V4) zaps + ranges, 5 EVM chains

Status
Healthy
Last Tested
Transport
Streamable HTTP
URL
Repository
DeFiRe-business/swapwizard-mcp
GitHub Stars
7
Server Listing
mcp-swapwizard

Glama MCP Gateway

Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.

MCP client
Glama
MCP server

Full call logging

Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.

Tool access control

Enable or disable individual tools per connector, so you decide what your agents can and cannot do.

Managed credentials

Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.

Usage analytics

See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.

100% free. Your data is private.
Tool DescriptionsA

Average 4.6/5 across 11 of 11 tools scored.

Server CoherenceA
Disambiguation5/5

Each tool has a clearly distinct purpose: health check, setup guide, chain/dex list, pool discovery, pool analysis, swap quoting (with per-use-case variant), LP position listing, and single-transaction LP entry/exit. No significant overlap.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (analyze_pool, get_swap_quote, list_user_lp_positions, etc.). Even 'zap_into_lp_position' and 'zap_out_of_lp_position' maintain the pattern with verbs 'zap_into' and 'zap_out_of'.

Tool Count5/5

11 tools is well-scoped for a DeFi liquidity management server covering health, discovery, quoting, and LP operations. Each tool earns its place without redundancy.

Completeness4/5

Covers core workflows: pool discovery, analysis, swap quotes, LP position management, and single-transaction zap in/out. Missing is a direct token approval tool, but instructions for approvals are embedded in relevant tools. Minor gap but highly functional.

Available Tools

11 tools
analyze_poolAInspect

Maps to GET /pools/analyze/:id. Returns real-time momentum data for a specific pool from GeckoTerminal: multi-timeframe volume (5m, 15m, 30m, 1h, 6h), price changes (5m–24h), buy/sell transaction counts, unique traders (24h), and reserve in USD. Data is cached for 10 minutes; stale entries are refreshed on-demand. Use the numeric id field returned by search_liquidity_pools.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPool numeric ID (from the id field in search_liquidity_pools response)
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses caching behavior ('cached for 10 minutes; stale entries are refreshed on-demand') and specifies the returned data fields. It does not mention error handling or rate limits, but the disclosed behavior is valuable and non-obvious.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, front-loaded with endpoint mapping, then data details, then caching and usage tip. Every sentence contributes information without redundancy, making it concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having no output schema, the description lists the key return fields (volume, price changes, transactions, traders, reserve) and explains caching behavior. It also provides usage context via the search prerequisite, making it complete for a single-parameter read-only tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the parameter description already states 'Pool numeric ID (from the id field in search_liquidity_pools response)'. The description repeats this same information without adding new semantics, so it meets the baseline of 3 but does not exceed it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool 'Returns real-time momentum data for a specific pool from GeckoTerminal' and maps to a specific endpoint 'GET /pools/analyze/:id'. It lists specific data categories (volume, price changes, transactions, traders, reserve), distinguishing it from search_liquidity_pools and other siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context by instructing to 'Use the numeric id field returned by search_liquidity_pools', implying a prerequisite and usage sequence. It does not explicitly mention alternatives or when not to use, but the context is sufficient for a 4.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_api_healthAInspect

Maps to GET /health. Returns service availability. Use to confirm the API is responsive before attempting operations.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden. It discloses the endpoint mapping and that it returns service availability, which is sufficient for a simple health check. It does not elaborate on response structure or potential failure modes, but the low complexity limits the need.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short, focused sentences. Front-loaded with the endpoint, then the return value, and finally usage guidance. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (no parameters, no output schema), the description is fully adequate. It states what the tool does, how to use it, and when to call it. The context is complete for an agent to select and invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the description need not add parameter details. Baseline for no parameters is 4. The description's mention of the health endpoint complements the schema's emptiness.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool maps to GET /health and returns service availability, which is a specific verb and resource. It is easily distinguished from sibling tools that handle DeFi operations like quotes and LP positions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states 'Use to confirm the API is responsive before attempting operations,' giving clear when-to-use guidance and implying it should precede other operations. No alternatives are needed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_clean_quoteAInspect

Maps to POST /quote with excludePositions=true. Shortcut to get_swap_quote that prices the swap as if the caller's own LP position were not in the pool, for concentrated-liquidity positions in the active tick range. Use when an agent holds a significant position in the pool it is about to trade against (rebalancing, exit, treasury sizing) and needs a quote unaffected by its own liquidity. Returns the same router/callData/value execution fields as get_swap_quote, and likewise supports an optional affiliateCode (registered affiliate wallet address) forwarded to the API. EXECUTION FLOW: same as get_swap_quote — approve (wait for confirmation), fresh quote, then send tx to the router contract (requires private key or wallet signer). ⚠️ PRICE IMPACT: The response includes a priceImpact field. Agents MUST present this value to the user and request explicit confirmation before executing. ⚠️ ZERO OUTPUT: If the swap amount is too small relative to the token pair price ratio, the API returns HTTP 400 with "swap amount too small: output rounds to zero for this pair". Increase the amount or use a different pair.

ParametersJSON Schema
NameRequiredDescriptionDefault
sideYesQuote direction
ownerYesWallet address whose LP positions will be excluded from pool state during quoting
amountYesAmount as stringified uint256 in token decimals
rpcUrlNoCustom RPC endpoint URL for position discovery.
chainIdYesEVM chain ID (e.g. 56 for BSC)
tokenInYesInput token address (0x0000...0000 for native coin)
tokenOutYesOutput token address
slippageBpsNoSlippage tolerance in basis points (default: 100 = 1%)
affiliateCodeNoOptional affiliate wallet address registered on-chain with SwapWizard — forwarded to the API so the affiliate fee for this operation is paid to that address. Omit if you have no affiliate.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It thoroughly discloses the execution flow (approve, fresh quote, send tx), the requirement of a private key/signer, the priceImpact field that must be presented to the user, and the HTTP 400 zero-output error case. This goes well beyond basic descriptions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is longer than average but well-structured: purpose first, then usage, execution flow, and clearly highlighted warnings. Every sentence contributes value; warnings are appropriately prominent. Slightly verbose but justified by the complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While no output schema exists, the description references get_swap_quote for return fields, which is acceptable given the sibling context. It covers key edge cases (zero output) and human oversight requirements (priceImpact). It could be more complete if it listed the exact response fields or prerequisites, but the sibling reference and warnings make it fairly comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, providing full parameter details. The description adds minimal extra parameter meaning: it mentions affiliateCode is forwarded and owner is the excluded wallet, but these are already in the schema. No additional syntax or format insights.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the tool maps to POST /quote with excludePositions=true and is a shortcut to get_swap_quote that excludes the caller's own LP position. It distinguishes itself from get_swap_quote by the exclusion behavior and focused LP-avoidance use case.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use: 'Use when an agent holds a significant position in the pool it is about to trade against (rebalancing, exit, treasury sizing) and needs a quote unaffected by its own liquidity.' It also contrasts with the standard get_swap_quote, implying when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_setup_guideAInspect

Returns the complete setup and usage guide for SwapWizard. Call this FIRST before using any other tool. Covers: required configuration (API key, Alchemy RPC URL, private key), how to use poolId correctly, step-by-step operational flows for swap/zap in/zap out/analyze, transaction execution details, and approval rules.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It transparently states what the tool returns (a guide) and enumerates the topics covered (configuration, operational flows, transaction details, approval rules). It does not claim any side effects or mutations, and the 'call first' instruction implies a safe, non-destructive operation. Lacks explicit mention of read-only or lack of side effects, but that is likely obvious for a guide tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise, consisting of two sentences. The first sentence gives the purpose immediately, and the second lists high-value content areas without unnecessary filler. Front-loaded with 'Call this FIRST,' which is the most critical information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-parameter, no-output-schema tool, the description is complete. It clearly explains what the guide covers and instructs on when to call it. It even provides a mini-table of contents (configuration, poolId usage, operational flows, transaction execution, approval rules) which leaves no ambiguity about what the agent will learn.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the baseline is 4. The description adds no parameter details, but none are needed. The schema coverage is effectively 100% (no parameters).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns the complete setup and usage guide for SwapWizard, using a specific verb and resource. It distinguishes itself from sibling tools by declaring itself the introductory/guide tool, unlike the specific action tools (swap, zap, etc.).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly instructs 'Call this FIRST before using any other tool,' providing clear when-to-use guidance. This distinguishes it from alternatives and establishes it as the prerequisite step, which is exactly the kind of usage direction needed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_supported_chainsAInspect

Maps to GET /chains. Lists supported EVM chains with chain IDs and native gas tokens: Ethereum, Arbitrum, Base, Polygon, BNB Chain.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It explicitly states the HTTP mapping to GET /chains, implying a read-only operation, and specifies what is returned (chain IDs and native gas tokens). It does not mention auth or rate limits, but for a public list endpoint this is acceptable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no wasted words, and the key information is front-loaded with the API mapping and purpose. Perfectly sized for the tool's simplicity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Low complexity with no parameters and no output schema. The description sufficiently conveys the tool's purpose and the nature of its response. Minor gap: no mention of response format or whether all chains are always included, but these are not critical for a simple list tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters, so the baseline is 4. The description adds value by explaining the return payload (chains with IDs and gas tokens), which is more than the empty schema alone could provide.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it lists supported EVM chains with chain IDs and native gas tokens, using a specific verb and resource. Provides examples (Ethereum, Arbitrum, Base, Polygon, BNB Chain) and distinguishes from sibling tool get_supported_dexes by focusing on chains versus DEXs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage when chain information is needed but does not explicitly contrast with alternatives like get_supported_dexes. No explicit when-or-when-not guidance, but the simplicity of the tool makes the intended use reasonably clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_supported_dexesAInspect

Returns the AMMs / DEX sources SwapWizard routes across per chain. Each DEX includes its display name and slug (e.g. "uniswap-v3") — use the slug as the 'project' filter in search_liquidity_pools to filter pools by protocol.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainIdNoEVM chain ID to filter results. If omitted, returns protocols for all supported chains.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states that each DEX includes its display name and slug, giving insight into the return structure. It doesn't mention side effects or limitations, but as a read-only list tool, the disclosed behavior is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long, with no wasted words. The first sentence states the purpose, the second explains the slug format and cross-tool usage. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with one optional parameter and no output schema, the description is sufficiently complete. It covers the purpose, the output content, and how the output connects to another tool. No critical information is missing for an agent to select and invoke this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already provides 100% coverage for the single parameter (chainId) with a description of its behavior. The tool description adds no additional parameter semantics beyond the schema, so a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Returns the AMMs / DEX sources SwapWizard routes across per chain.' It uses a specific verb ('returns') and identifies the resource (AMMs/DEX sources). It also distinguishes itself from the sibling tool search_liquidity_pools by explaining that the returned slugs are used as filters there.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit guidance on how to use the output: 'use the slug as the ‘project’ filter in search_liquidity_pools to filter pools by protocol.' This contextualizes the tool relative to a sibling. However, it doesn't explicitly state when to call this tool instead of others, though the relationship is implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_swap_quoteAInspect

Maps to POST /quote. Returns the best swap quote across all integrated DEX protocols, with router, callData, value, price impact, route summary, and gas estimate in one response. Surplus and positive slippage are returned to the user in the same transaction. Supports an optional affiliateCode (registered affiliate wallet address) forwarded to the API so the affiliate fee is paid on-chain to that address. Supports an excludePositions parameter that prices the swap excluding the caller's own LP position from pool state. Returns signable data only; never signs or broadcasts. EXECUTION FLOW: (1) If the input token is non-native, send an ERC-20 approve to the router and WAIT for on-chain confirmation. (2) Call this tool again for a fresh quote (quotes expire). (3) Send the tx to the router contract: to=router, data=callData, value=value. This requires a private key or wallet signer. ⚠️ PRICE IMPACT: The response includes a priceImpact field. Agents MUST present this value to the user and request explicit confirmation before executing. High price impact means the user will receive significantly less value than expected. ⚠️ ZERO OUTPUT: If the swap amount is too small relative to the token pair price ratio, the API returns HTTP 400 with "swap amount too small: output rounds to zero for this pair". Increase the amount or use a different pair.

ParametersJSON Schema
NameRequiredDescriptionDefault
sideYesQuote direction
amountYesAmount as stringified uint256 in token decimals
chainIdYesEVM chain ID (e.g. 56 for BSC)
tokenInYesInput token address (0x0000...0000 for native coin)
tokenOutYesOutput token address
slippageBpsNoSlippage tolerance in basis points (default: 100 = 1%)
affiliateCodeNoOptional affiliate wallet address registered on-chain with SwapWizard — forwarded to the API so the affiliate fee for this operation is paid to that address. Omit if you have no affiliate.
excludePositionsNoPositions to subtract from pool state during simulation — for a clean quote that excludes self-impact. Get these from list_user_lp_positions.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so excellently. It discloses that the tool returns signable data only and never signs/broadcasts, warns about quotes expiring, requires on-chain approval confirmation, mandates user confirmation for price impact, and explains the zero-output error case. These are critical behavioral traits beyond the basic function.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but every sentence earns its place. It is front-loaded with the core purpose, then flows into execution steps and warnings in a clearly numbered section. The structure (EXECUTION FLOW, PRICE IMPACT, ZERO OUTPUT) makes it scannable and appropriately sized for a complex swap tool with 8 parameters and no annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite no output schema, the description lists the key response fields (router, callData, value, price impact, route summary, gas estimate). It covers prerequisites (approval), lifecycle (quotes expire), safety (price impact confirmation), and error handling (zero output 400). This is a complete contextual picture for an agent to invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds extra meaning for affiliateCode (how to get one, on-chain fee payment) and excludePositions (how to obtain from list_user_lp_positions, purpose of excluding self-impact). It also clarifies that amounts are stringified uint256 and native coin is zero address, but those are in schema. Overall, it supplements but does not fully replace schema knowledge.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource: 'Returns the best swap quote across all integrated DEX protocols.' It lists the concrete response fields (router, callData, value, price impact, etc.) and distinguishes this quote tool from siblings like get_clean_quote by emphasizing the complete execution payload. The purpose is immediately clear and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a detailed execution flow with explicit steps: approve ERC-20, call again for fresh quote, send tx with router/callData/value. It also notes the need for private key or wallet signer. It references list_user_lp_positions for excludePositions, but does not explicitly contrast with get_clean_quote or state when NOT to use this tool. Thus it gives strong context without explicit exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_user_lp_positionsAInspect

Maps to GET /positions. Reads all LP positions a wallet holds on a given chain by calling the SwapWizard API, which discovers positions across all supported protocols: Uniswap V2/V3/V4, Aerodrome, Thena, SushiSwap, PancakeSwap, Algebra, Balancer, Curve, and all Solidly forks. Each position includes positionId, nftManager, dexName, liquidityKind, token addresses, amounts, fees, in-range status, APR, and USD values. EXIT SIGNAL: each position also carries momentumSignal for its pool — "exit" means the pool's volume is dying or LPs are leaving (consider zapping out), "watch"/"entry" mean momentum is still alive. When momentumSignal is ABSENT, the pool has dropped out of the momentum ranking (momentum exhausted) — also a reason to review and likely exit the position. momentumScore is the composite strength. Use this to drive exit decisions, mirroring the entry signal from search_liquidity_pools. The API uses Alchemy's NFT APIs for optimal position discovery — pass an Alchemy RPC URL via rpcUrl for fastest results. Without an Alchemy key, the API falls back to on-chain scanning which may be slower and newly created positions may take longer to appear. IMPORTANT: Always call this BEFORE zap_out_of_lp_position — pass the returned positionId, nftManager, dexName, and liquidityKind directly to zap_out_of_lp_position.

ParametersJSON Schema
NameRequiredDescriptionDefault
ownerYesWallet address to query positions for
rpcUrlNoCustom RPC endpoint URL. If the URL is from Alchemy, the API auto-extracts the key for accelerated NFT-based position discovery.
chainIdYesEVM chain ID
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden and does so well: it discloses read-only nature ('Reads'), fallback behavior/slowness without Alchemy, the semantics of momentumSignal (including absence meaning momentum exhausted), and the full list of returned fields. No contradictions with annotations (none provided).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but well-structured with clear sections (purpose, protocols, response fields, EXIT SIGNAL, performance note, IMPORTANT integration note). Every sentence carries practical information, though a few phrases feel slightly repetitive (e.g., 'Reads' and 'reads all LP positions'). Overall, it earns its length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description fully compensates by enumerating returned fields, explaining the momentum/exits semantics, describing failure/fallback behavior, and giving explicit integration instructions with zap_out_of_lp_position. It is complete enough for an agent to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds extra context for rpcUrl (performance implications and Alchemy key auto-extraction) and clarifies how returned parameters feed into zap_out_of_lp_position. However, owner and chainId are not expanded beyond the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Maps to GET /positions. Reads all LP positions a wallet holds on a given chain', clearly identifying the verb (reads/lists), resource (LP positions), and scope (wallet+chain). It also distinguishes itself from siblings by explicitly tying its exit signal to search_liquidity_pools and instructing to call it before zap_out_of_lp_position.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit guidance is given: 'Use this to drive exit decisions, mirroring the entry signal from search_liquidity_pools' and 'IMPORTANT: Always call this BEFORE zap_out_of_lp_position'. This tells the agent when to use it, what it pairs with, and the correct order of operations relative to another tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_liquidity_poolsAInspect

Maps to GET /pools. Discovers liquidity pools across supported AMMs and chains, returning id, poolId, symbol, underlyingTokens (token addresses), fee tier, protocol, dexKind, APY, apyBase (fee-only APY excluding reward emissions), TVL (USD), 24h/7d volume (USD), stablecoin flags, and hooksAddress (custom hook contract for Uniswap V4 / PancakeSwap Infinity pools; null when the pool has no hook — hooks can add custom fees or transfer restrictions). KEY PARAMETERS: Use trending: true to get only pools currently trending, optionally with timeframe ("5m", "1h", "6h", "24h") to select the ranking window — default is 5m. Trending results include feeAprEstimate: fee APR (%) annualized from the selected timeframe's volume window over the pool reserve (null outside trending mode or when the fee tier is unknown). NOTE: feeAprEstimate extrapolates a short window to a year — for short timeframes on hot pools it can be extreme and short-lived; the apy field is the stable 24h-based metric.

MOMENTUM SIGNAL (1h/6h/24h windows, powered by on-chain DEX trade data): each trending pool carries momentumSignal — "entry" (volume accelerating with healthy LP flow — a pool worth entering), "watch" (in the ranking but not yet actionable), or "exit" (dying volume or LPs leaving). Supporting fields: momentumScore (composite acceleration x size x flow quality), momentumRatioH1/H6/H24 (volume vs the previous equal window), momentumTakersH6 (unique traders 6h), lpMintsH6/lpBurnsH6 and lpNetFlowH6 (inflow/outflow/flat — are LPs adding or pulling liquidity). The 5m window carries the signal as HOURLY CONTEXT (last hourly cycle, not the last 5 minutes), since 5m is real-time GeckoTerminal data. Each pool also carries suggestedRangePct: a suggested concentrated-liquidity range (± percent) balancing fee density against time-in-range — ~0.5% for stable pairs, tens of percent for volatile/memecoin pairs — pass it to zap_into_lp_position. To ENTER the hottest profitable pool: trending: true, timeframe: "6h", signal: "entry", sortBy: "signal", sortOrder: "desc" returns entry-signal pools ranked by APR. (Use timeframe "6h" for sustained traction / LP-yield strategies, "1h" for faster reaction.) To check whether to EXIT, read momentumSignal on list_user_lp_positions instead.

Use hookless: true to exclude pools with a custom hook contract. Use sortBy ("apy", "tvl", "volume1d", "volume7d", "signal") with sortOrder to control ranking — default is tvl desc. Use topPerVenue to limit to top N pools per DEX by APY. Supports filtering by protocol/DEX, tokens, pool type, stablecoin status, and free-text search, with pagination. Required upstream step before zap_into_lp_position. IMPORTANT: The response contains two ID fields — poolId (string) must be passed AS-IS to zap_into_lp_position and zap_out_of_lp_position (do NOT construct or modify it), and id (number) is used only for analyze_pool.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number, 0-based (default: 0)
searchNoSearch by symbol or project name
signalNoFilter by momentum signal. Comma-separated list allowed (e.g. 'entry' or 'entry,watch'). Only effective with trending=true. Combine with sortBy=signal&sortOrder=desc to get entry pools ranked by APR.
sortByNoSort field (default: tvl). 'signal' (trending only) groups pools by momentum signal entry→watch→exit (sortOrder=asc reverses) and within each group by APR descending — i.e. the entry pools with the highest APR first.
tokensNoComma-separated token addresses to filter pools by
chainIdYesEVM chain ID (e.g. 56 for BSC, 1 for Ethereum)
dexKindNoFilter by DEX kind (e.g. UNIV3_SR02)
projectNoFilter by protocol/DEX name (e.g. uniswap-v3, pancakeswap-v3, aerodrome-v2)
hooklessNoIf true, exclude pools with a custom hook contract (Uniswap V4 / PancakeSwap Infinity). Hooks can add custom fees or transfer restrictions.
pageSizeNoResults per page, max 200 (default: 50)
poolTypeNoFilter by pool type
trendingNoIf true, return only currently trending pools (with momentumSignal and suggestedRangePct on each result)
sortOrderNoSort direction (default: desc)
timeframeNoTrending ranking window (default: 5m). Only applies with trending=true. Sent to the API as trendingDuration; also selects the volume window for feeAprEstimate. Use 6h for sustained LP-yield traction, 1h for faster reaction; 5m is real-time GeckoTerminal with the signal as hourly context.
stableOnlyNoShow only stablecoin pairs
topPerVenueNoLimit to top N pools per venue by APY
semiStableOnlyNoShow only pools with exactly one stablecoin
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of disclosing behavior. It explains edge cases like feeAprEstimate being null outside trending mode and extrapolated/extreme on short timeframes, the semantics of momentumSignal (entry/watch/exit), and the critical caveat that 5m window signal is actually hourly context. It also warns about hookless pools and emphasizes poolId must be passed unchanged.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but each sentence contributes actionable value. It is structured with clear sections (overview, KEY PARAMETERS, MOMENTUM SIGNAL) and front-loads the most critical (return fields, key parameters, and usage recipes) before deeper detail. The length is justified by the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no output schema and no annotations, the description is remarkably complete. It covers all major return fields, parameter interactions, edge cases, and cross-tool integration. It even explains how suggestedRangePct feeds into zap_into_lp_position and how id vs poolId are used, leaving no important context unanswered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Although schema coverage is 100%, the description adds substantial meaning beyond the schema. It explains how to combine signal, sortBy, sortOrder, and timeframe for actionable results, defines the behavior of feeAprEstimate relative to timeframe, clarifies the ID fields, and gives concrete examples like topPerVenue and hookless. This goes well beyond the baseline for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource pair ('Maps to GET /pools. Discovers liquidity pools across supported AMMs and chains') and lists concrete return fields. It clearly differentiates from siblings by explicitly noting that poolId must be passed to zap_into_lp_position, id is only for analyze_pool, and list_user_lp_positions handles exit checks.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit when-to-use guidance, including a recipe for entering ('trending: true, timeframe: "6h", signal: "entry", sortBy: "signal", sortOrder: "desc"') and directs users to list_user_lp_positions for exit checks. It also explains when to prefer 1h vs 6h timeframes and calls itself a 'Required upstream step before zap_into_lp_position'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

zap_into_lp_positionAInspect

Maps to POST /addliquidity/quote. Builds a single-transaction zap to enter an LP position from ANY input token — the deposit token does NOT have to be one of the pool's underlying tokens. SwapWizard handles all intermediate swaps, the LP mint, and price-range setup in a single transaction. FULL CONCENTRATED LIQUIDITY SUPPORT: for CL pools (Uniswap V3/V4, PancakeSwap V3/Infinity CL, Aerodrome Slipstream, SushiSwap V3, Algebra forks like Camelot/THENA/QuickSwap, Fluid, Balancer V3) you can set a custom price range via tickLower/tickUpper — omit them for the protocol's default range. Classic pools (Curve, Balancer V2, Uniswap V2, Solidly) are also supported. Surplus returned to the user. Supports an optional affiliateCode (registered affiliate wallet address) forwarded to the API so the affiliate fee is paid on-chain to that address. IMPORTANT: The poolId parameter MUST come verbatim from the poolId field in the search_liquidity_pools response — do NOT construct or modify it. EXECUTION FLOW: (1) If the deposit token is non-native, send an ERC-20 approve to the router and WAIT for on-chain confirmation. (2) Call this tool again for a fresh quote (quotes expire). (3) Send the tx to the router contract: to=router, data=callData, value=value. This requires a private key or wallet signer. ⚠️ PRICE IMPACT: The response includes a priceImpact field. Agents MUST present this value to the user and request explicit confirmation before executing. ⚠️ ZERO OUTPUT: If an internal swap amount is too small, the API returns HTTP 400 with "swap amount too small: output rounds to zero". Increase the deposit amount.

ParametersJSON Schema
NameRequiredDescriptionDefault
poolIdYesPool identifier from search_liquidity_pools (e.g. 'pancakeswap-v3:0x36696...')
senderNoWallet address of the sender (for simulation)
chainIdYesEVM chain ID
depositsYesTokens and amounts to deposit
tickLowerNoCustom lower tick for concentrated liquidity
tickUpperNoCustom upper tick for concentrated liquidity
affiliateCodeNoOptional affiliate wallet address registered on-chain with SwapWizard — forwarded to the API so the affiliate fee for this operation is paid to that address. Omit if you have no affiliate.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden, and it exceeds expectations. It discloses the execution flow (approve, re-quote, send), the requirement for a private key or wallet signer, the priceImpact field requiring user confirmation, the 'swap amount too small' error case, and that quotes expire. It also notes that surplus is returned to the user. This is highly transparent behavior disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but well-structured with labeled sections (EXECUTION FLOW, PRICE IMPACT, ZERO OUTPUT) and uses warning symbols. It front-loads the core purpose and API mapping. The length is justified by the tool's complexity, but it contains some redundancy (e.g., 'single-transaction' repeated) and could be slightly tighter.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (7 params, no output schema, no annotations), the description covers most essential context: supported pool types, execution prerequisites, potential errors, and safety warnings. However, it does not describe the full response structure (only mentions priceImpact and implies callData/value via instructions). This is a minor gap since the tool's output is central to its use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds significant meaning beyond the schema. It emphasizes that poolId must come verbatim from search_liquidity_pools and must not be modified, which is a critical constraint not fully captured in the schema. It also elaborates on tickLower/tickUpper behavior and affiliateCode's on-chain payment logic. This adds clear value over the schema alone, though the description could have covered a few more edge cases (e.g., deposits schema semantics).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states what the tool does with a specific verb and resource: 'Builds a single-transaction zap to enter an LP position from ANY input token.' It also differentiates from the sibling tool zap_out_of_lp_position by using 'enter' vs 'exit', and describes the exact endpoint (POST /addliquidity/quote). This leaves no ambiguity about the tool's purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides extensive usage context: it explains that the tool works with any input token, supports both CL and classic pools, and gives explicit instructions on when to provide tickLower/tickUpper (custom range) and when to omit them (default range). It also warns about quote expiry and the need for a fresh quote before transaction. However, it does not explicitly compare to alternatives like get_swap_quote or list_user_lp_positions, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

zap_out_of_lp_positionAInspect

Maps to POST /removeliquidity/quote. Builds a single-transaction zap to exit an LP position into ANY output token — you can withdraw into any token, not just the pool's underlying tokens. SwapWizard handles LP burn, fee collection, and intermediate swaps in a single transaction. Supports an optional affiliateCode (registered affiliate wallet address) forwarded to the API so the affiliate fee is paid on-chain to that address. REQUIRED WORKFLOW: First call list_user_lp_positions, then pass the returned fields (positionId, nftManager, dexName, liquidityKind) here along with sender, poolId, and withdrawals. EXECUTION FLOW: (1) APPROVE — For NFT-based positions, call setApprovalForAll(router, true) on the nftManager contract (do NOT use approve(router, tokenId)). For PCS Infinity BIN, call approveForAll(router, true). For classic LP pools (Curve, Balancer, Uniswap V2, Solidly), approve the LP token as a standard ERC-20. (2) WAIT for the approve tx to be confirmed on-chain. (3) Call this tool again for a fresh quote (quotes expire). (4) Send the tx to the router contract: to=router, data=callData, value=value. This requires a private key or wallet signer. ⚠️ PRICE IMPACT: The response includes a priceImpact field. Agents MUST present this value to the user and request explicit confirmation before executing.

ParametersJSON Schema
NameRequiredDescriptionDefault
poolIdNoPool identifier from search_liquidity_pools — pass if available.
senderYesWallet address of the position owner.
chainIdYesEVM chain ID
dexNameNoDEX project name from list_user_lp_positions (e.g. 'Uniswap V3', 'PancakeSwap V3', 'curve-dex').
percentNoPercentage of position to remove (default: 100). For classic LP pools (UniV2, Solidly, Curve, Balancer) use 99 instead of 100 to avoid reverts from LP balance race conditions between RPC nodes.
nftManagerNoNFT position manager contract address from list_user_lp_positions. Required for CL positions (Uniswap V3/V4, PancakeSwap V3/Infinity CL, SushiSwap V3, Algebra).
positionIdYesPosition identifier from list_user_lp_positions. For CL positions: NFT token ID. For classic pools: LP token contract address.
withdrawalsYesTokens to receive after removal
affiliateCodeNoOptional affiliate wallet address registered on-chain with SwapWizard — forwarded to the API so the affiliate fee for this operation is paid to that address. Omit if you have no affiliate.
liquidityKindNoLiquidity kind from list_user_lp_positions (e.g. UNIV3, UNIV4, ALGEBRA, SLIPSTREAM, PCS_INF_CL, CURVE, UNIV2, SOLIDLY).
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full behavioral disclosure. It reveals operational traits: handles LP burn, fee collection, and swaps in one transaction; requires approvals depending on position type; quotes expire; requires a private key; and mandates presenting priceImpact to the user for confirmation. It also warns about potential reverts with 100% for classic pools. This goes far beyond a simple functional statement.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but well-structured with clear headings (REQUIRED WORKFLOW, EXECUTION FLOW) and numbered steps. Every sentence adds critical information, from the API mapping to the price impact warning. No fluff or repetition—each part earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (10 parameters, no output schema), the description is remarkably complete. It covers prerequisites, step-by-step execution, approval variations, quote freshness, the price impact field, and a specific warning about classic pools. It leaves no major operational questions unanswered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Although schema coverage is 100%, the description adds significant value beyond the schema. It clarifies that positionId, nftManager, dexName, and liquidityKind come from list_user_lp_positions, explains the percent parameter's edge cases (99 vs 100 to avoid race conditions), and details how affiliateCode is forwarded. This extra context makes parameter usage unambiguous.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Builds a single-transaction zap to exit an LP position into ANY output token.' It clearly distinguishes from sibling tools like zap_into_lp_position (entering) and list_user_lp_positions (listing positions). It also mentions the API endpoint and the ability to withdraw into any token, which removes ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides an explicit REQUIRED WORKFLOW: first call list_user_lp_positions, then pass the returned fields. It details the EXECUTION FLOW with approval steps, waiting for confirmation, fresh quotes, and sending the transaction. It also gives alternatives and exclusions (e.g., do NOT use approve(router, tokenId) for NFT positions, use 99% for classic pools). This fully guides when and how to use the tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Servers

View all MCP Servers

Try in Browser

Your Connectors

Sign in to create a connector for this server.