DeFiMind
Server Details
Live LP analytics — Uniswap V2/V3, Balancer, Curve stableswap: PnL, health, slippage, depeg risk.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
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.
Tool Definition Quality
Average 4.1/5 across 10 of 10 tools scored. Lowest: 3.5/5.
Tools are mostly distinct by protocol and action (Analyze, Simulate, Check, etc.), but the three 'Analyze' tools (BalancerLP, Position, StableswapLP) and three 'Simulate' tools could cause minor confusion if the agent overlooks the protocol-specific names.
All tool names follow a consistent PascalCase VerbNoun pattern (e.g., AnalyzeBalancerLP, CheckPoolHealth), with verbs clearly indicating the action and nouns specifying the target. Only 'AnalyzePosition' is slightly generic but still fits the pattern.
With 10 tools, the server is well-scoped for a DeFi analysis domain. It covers multiple protocols and operations without being overwhelming or too sparse.
The tool set covers core analysis and simulation for LP positions across Balancer, Uniswap V2/V3, and Curve, plus pool health and slippage. Minor gaps exist (e.g., no general price feed tool), but it's largely complete for its stated purpose.
Available Tools
11 toolsAnalyzeBalancerLPAInspect
Analyze a 2-asset Balancer weighted-pool LP position's PnL. Decomposes impermanent loss using the weighted-pool formula where the base token's weight affects IL magnitude. Values are denominated in opp-token units per BalancerImpLoss's convention; fee income is not attributed in v1 because Balancer pools only expose vault-level fees with no per-LP attribution.
| Name | Required | Description | Default |
|---|---|---|---|
| rpc_url | Yes | An Ethereum (or L2) JSON-RPC URL used to read live pool state. Required; supplied by you per call (BYO-RPC) and may carry your provider key. The endpoint stores and logs nothing — the URL is never persisted or written to logs. | |
| chain_id | No | Optional guard. If supplied and the RPC reports a different chain id, the call is rejected. Defaults to 1 (Ethereum mainnet) conceptually; omit to skip the check. | |
| pool_type | Yes | Which protocol the pool at pool_address belongs to. This tool accepts only balancer (2-asset weighted pool). | |
| lp_init_amt | Yes | Pool shares held by this position, in human units. | |
| block_number | No | Optional block number to pin the read to a historical block. Omit to read the latest block. | |
| pool_address | Yes | On-chain address of the pool/pair to analyze (Uniswap V2/V3 pair, Balancer weighted pool, or Curve stableswap pool). Required. Lowercase, uppercase, or checksum casing all work. | |
| entry_opp_amt | Yes | Amount of opp (second) token originally deposited. | |
| entry_base_amt | Yes | Amount of base (first) token originally deposited. | |
| holding_period_days | No | Optional holding period in days. If supplied, real_apr is annualized from net_pnl. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully covers behavioral traits: values are denominated in opp-token units per BalancerImpLoss convention, fee income is not attributed, and the RPC URL is not persisted. These details add crucial context beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single paragraph of three sentences, efficient but slightly dense. It front-loads the primary purpose and then adds caveats. No wasted words, but could be better structured with separation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 9 parameters, no output schema, and no annotations, the description covers purpose, denomination convention, fee limitation, and RPC privacy. It lacks output format hints, but the key behavioral aspects are addressed, making it fairly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 meaningful context for rpc_url (privacy and BYO-RPC) and clarifies pool_type restriction. This elevates it above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool analyzes a 2-asset Balancer weighted-pool LP position's PnL and decomposes impermanent loss. It specifies the formula convention and distinguishes from siblings like AnalyzeStableswapLP by naming Balancer specifically.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool over alternatives. While it states 'This tool accepts only balancer', it does not compare to siblings like SimulateBalancerMove or AnalyzePosition. The context is implicit but not actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
AnalyzePositionAInspect
Analyze why a Uniswap V2 or V3 LP position is gaining or losing money. Decomposes PnL into impermanent loss, accumulated fees, and net result, with optional real APR if a holding period is supplied. Returns current value, hold value, IL percentage, fee income, net PnL, real APR, and a diagnosis label.
| Name | Required | Description | Default |
|---|---|---|---|
| rpc_url | Yes | An Ethereum (or L2) JSON-RPC URL used to read live pool state. Required; supplied by you per call (BYO-RPC) and may carry your provider key. The endpoint stores and logs nothing — the URL is never persisted or written to logs. | |
| chain_id | No | Optional guard. If supplied and the RPC reports a different chain id, the call is rejected. Defaults to 1 (Ethereum mainnet) conceptually; omit to skip the check. | |
| lwr_tick | No | Lower tick of the position (V3 positions only; null for V2). | |
| upr_tick | No | Upper tick of the position (V3 positions only; null for V2). | |
| pool_type | Yes | Which protocol the pool at pool_address belongs to. This tool accepts uniswap_v2 | uniswap_v3. | |
| entry_x_amt | Yes | Amount of token0 originally deposited at position entry. | |
| entry_y_amt | Yes | Amount of token1 originally deposited at position entry. | |
| lp_init_amt | Yes | LP token amount held by the position (position size in human units). | |
| block_number | No | Optional block number to pin the read to a historical block. Omit to read the latest block. | |
| pool_address | Yes | On-chain address of the pool/pair to analyze (Uniswap V2/V3 pair, Balancer weighted pool, or Curve stableswap pool). Required. Lowercase, uppercase, or checksum casing all work. | |
| holding_period_days | No | Optional holding period in days. If supplied, real_apr is annualized from net_pnl. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that the tool returns current value, hold value, IL percentage, fee income, net PnL, real APR, and a diagnosis label. However, it does not disclose any side effects, authentication needs, rate limits, or potential failures beyond implying it reads live pool state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single paragraph that efficiently conveys purpose, decomposition, and outputs without extraneous words. It is front-loaded with the main action and could be slightly more structured but remains concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 11 parameters (6 required) and no output schema, the description is reasonably complete. It lists all output components and explains the purpose. While it does not detail return types or units, it covers the essential context for an agent to understand the tool's functionality.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema itself fully describes all 11 parameters. The description adds overall purpose and output context but does not provide additional semantic detail for individual parameters beyond what the schema already offers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: analyzing why a Uniswap V2 or V3 LP position is gaining or losing money. It specifies the key decompositions (impermanent loss, fees, net result) and lists the outputs. This distinguishes it from sibling tools like AnalyzeBalancerLP and AnalyzeStableswapLP by explicitly mentioning Uniswap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for Uniswap LP positions but does not explicitly state when to use this tool versus alternatives like AnalyzeBalancerLP or AnalyzeStableswapLP. It lacks guidance on when not to use or specific prerequisites, providing only implied context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
AnalyzeStableswapLPAInspect
Analyze a 2-asset Curve-style Stableswap LP position's PnL using the amplified-invariant IL formula where small depegs can produce surprisingly large IL at high A. Values are in peg-numeraire (tokens valued 1:1); fee income is not attributed in v1 (pool-global only); positions whose implied alpha is in the unreachable regime return None on il_percentage, net_pnl, and real_apr.
| Name | Required | Description | Default |
|---|---|---|---|
| rpc_url | Yes | An Ethereum (or L2) JSON-RPC URL used to read live pool state. Required; supplied by you per call (BYO-RPC) and may carry your provider key. The endpoint stores and logs nothing — the URL is never persisted or written to logs. | |
| chain_id | No | Optional guard. If supplied and the RPC reports a different chain id, the call is rejected. Defaults to 1 (Ethereum mainnet) conceptually; omit to skip the check. | |
| pool_type | Yes | Which protocol the pool at pool_address belongs to. This tool accepts only stableswap (2-asset plain Curve pool). | |
| lp_init_amt | Yes | LP tokens held by this position, in human units. | |
| block_number | No | Optional block number to pin the read to a historical block. Omit to read the latest block. | |
| pool_address | Yes | On-chain address of the pool/pair to analyze (Uniswap V2/V3 pair, Balancer weighted pool, or Curve stableswap pool). Required. Lowercase, uppercase, or checksum casing all work. | |
| entry_amounts | Yes | Per-token entry amounts in pool insertion order. Exactly 2 entries (2-asset pools only in v1). | |
| holding_period_days | No | Optional holding period in days. If supplied, real_apr is annualized from net_pnl. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden and discloses key behaviors: IL formula used, valuation in peg-numeraire, fee attribution not included, and unreachable regime returning None on certain metrics. It does not mention any destructive actions or auth needs, but as a read-only analysis tool, this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single paragraph that efficiently conveys multiple pieces of information: purpose, formula, caveats, and return behaviors. It is concise but could be slightly more structured for easier scanning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given complexity and absence of output schema, the description covers the purpose, method, and notable behaviors well. It mentions return fields (il_percentage, net_pnl, real_apr) but only in the context of the unreachable regime, lacking a full list of output fields. Overall, it is fairly complete for an analysis tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds some context (e.g., peg-numeraire, fee exclusion) but does not provide additional parameter-level semantics beyond what the schema already offers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool analyzes a 2-asset Curve-style Stableswap LP position's PnL using the amplified-invariant IL formula. It specifies the resource (Stableswap LP), action (analyze PnL), and method (amplified-invariant IL formula), distinguishing it from sibling tools like AnalyzeBalancerLP or AnalyzePosition.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context for when to use this tool, mentioning small depegs and high A values, and lists limitations such as fee exclusion and unreachable regime. However, it does not explicitly state when not to use it or name alternatives, which would be helpful given multiple sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
AssessDepegRiskAInspect
Quantify a 2-asset Curve-style Stableswap LP position's exposure to a stablecoin depeg. Computes IL at multiple depeg levels (default 2%, 5%, 10%, 20%, 50%) via the closed-form stableswap-invariant expansion, with an optional V2 constant-product benchmark at each level. Some depeg levels are physically unreachable at high A — unreachable scenarios return null on il_pct, lp_value_at_depeg, and hold_value_at_depeg; the V2 benchmark stays populated.
| Name | Required | Description | Default |
|---|---|---|---|
| rpc_url | Yes | An Ethereum (or L2) JSON-RPC URL used to read live pool state. Required; supplied by you per call (BYO-RPC) and may carry your provider key. The endpoint stores and logs nothing — the URL is never persisted or written to logs. | |
| chain_id | No | Optional guard. If supplied and the RPC reports a different chain id, the call is rejected. Defaults to 1 (Ethereum mainnet) conceptually; omit to skip the check. | |
| pool_type | Yes | Which protocol the pool at pool_address belongs to. This tool accepts only stableswap (2-asset plain Curve pool). | |
| compare_v2 | No | If true (default), each scenario reports the equivalent V2 constant-product IL at the same price deviation. | |
| lp_init_amt | Yes | LP tokens held, in human units. Must be > 0. | |
| block_number | No | Optional block number to pin the read to a historical block. Omit to read the latest block. | |
| depeg_levels | No | Depeg magnitudes as fractions in (0, 1). Default [0.02, 0.05, 0.10, 0.20, 0.50]. | |
| pool_address | Yes | On-chain address of the pool/pair to analyze (Uniswap V2/V3 pair, Balancer weighted pool, or Curve stableswap pool). Required. Lowercase, uppercase, or checksum casing all work. | |
| depeg_token_name | No | Optional. Symbol of the asset assumed to depeg (e.g. 'USDC', 'DAI'). Must be one of the two tokens in the pool. If omitted, the pool's first token is used. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that some depeg levels are physically unreachable at high A and explains the resulting null fields. It also states the RPC URL is not stored/logged. With no annotations provided, the description adequately covers behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is mostly concise and front-loaded with the main purpose. Slight redundancy (e.g., default depeg levels repeated in both description and schema) prevents a perfect score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 9 parameters and no output schema, the description covers inputs, constraints, and behavioral quirks well. However, the output format is not described (beyond mentioning fields that may be null), leaving some ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 value by explaining default depeg levels, the effect of compare_v2, and unreachable scenario behavior, which goes beyond the schema's basic parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool quantifies IL exposure to a stablecoin depeg for a 2-asset Curve Stableswap LP, lists default depeg levels, and mentions the closed-form computation. It is distinct from sibling tools like AnalyzeStableswapLP by focusing specifically on depeg risk assessment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance is provided. The description implies usage for depeg risk on 2-asset stableswap pools, but does not mention alternatives or prerequisites (e.g., knowing the pool's amplification coefficient). Minimal guidance beyond scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
BuildStateTwinAInspect
Read a pool's on-chain state once and return it as a serialized State Twin (JSON): the protocol-specific snapshot plus a content_hash, in the wire form a client rehydrates locally. Use this to pull a single managed-RPC twin, then run any number of counterfactuals (price moves, IL, slippage) client-side, off this server. Covers Uniswap V2/V3, Balancer 2-asset weighted, and Curve 2-asset plain stableswap pools. The endpoint stores and logs nothing — your rpc_url is never persisted.
| Name | Required | Description | Default |
|---|---|---|---|
| rpc_url | Yes | An Ethereum (or L2) JSON-RPC URL used to read live pool state. Required; supplied by you per call (BYO-RPC) and may carry your provider key. The endpoint stores and logs nothing — the URL is never persisted or written to logs. | |
| chain_id | No | Optional guard. If supplied and the RPC reports a different chain id, the call is rejected. Omit to skip the check. | |
| lwr_tick | No | uniswap_v3 only — lower tick of the position range to snapshot. Omit for the pool's full active-liquidity range. Ignored for other pool types. | |
| upr_tick | No | uniswap_v3 only — upper tick of the position range to snapshot. Omit for the pool's full active-liquidity range. Ignored for other pool types. | |
| pool_type | Yes | Which protocol the pool at pool_address belongs to: 'uniswap_v2' | 'uniswap_v3' | 'balancer' (2-asset weighted) | 'stableswap' (2-asset plain Curve). All four are supported — this tool spans every snapshot type. | |
| block_number | No | Optional block number to pin the read to a historical block. Omit to read the latest block. | |
| pool_address | Yes | On-chain address of the pool/pair to snapshot. Required. Lowercase, uppercase, or checksum casing all work. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses key behaviors: reads once, persists nothing, logs nothing, uses BYO-RPC. Lacks details on error handling or edge cases, but sufficient for a read-only tool with no annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three efficient sentences: functionality+output, usage guidance, scope+privacy. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers main aspects: input, output, use case, privacy. Without output schema, describing the wire format helps. Could add output field details but fine overall.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% parameter descriptions. The tool description adds minimal new info beyond schema (e.g., supported pool types already in enum). Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads on-chain state and returns a serialized State Twin JSON with content_hash. It specifies supported pool types and differentiates from sibling tools that analyze or simulate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to use this for pulling a single twin then running counterfactuals client-side. Does not mention when not to use or alternatives, but context is clear given sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
CalculateSlippageAInspect
Calculate slippage and price-impact decomposition for a proposed swap on a Uniswap V2 or V3 pool. Returns spot vs execution price, slippage percentage, slippage cost in output-token units, and price impact. Also returns the maximum trade size that stays within 1% slippage for V2 pools; V3 returns null for that field because tick-crossing math has not yet been inverted.
| Name | Required | Description | Default |
|---|---|---|---|
| rpc_url | Yes | An Ethereum (or L2) JSON-RPC URL used to read live pool state. Required; supplied by you per call (BYO-RPC) and may carry your provider key. The endpoint stores and logs nothing — the URL is never persisted or written to logs. | |
| chain_id | No | Optional guard. If supplied and the RPC reports a different chain id, the call is rejected. Defaults to 1 (Ethereum mainnet) conceptually; omit to skip the check. | |
| lwr_tick | No | Lower tick of the position (V3 only; null for V2). | |
| upr_tick | No | Upper tick of the position (V3 only; null for V2). | |
| amount_in | No | Amount of token_in to trade, in human units. Must be > 0. | |
| pool_type | Yes | Which protocol the pool at pool_address belongs to. This tool accepts uniswap_v2 | uniswap_v3. | |
| amounts_in | No | Optional batch form of 'amount_in': an array of values to evaluate in a single call. The pool is read once and the result is an array with one entry per element, in input order. Supply EITHER 'amount_in' (single) OR 'amounts_in' (batch), not both. Max 256 entries. | |
| block_number | No | Optional block number to pin the read to a historical block. Omit to read the latest block. | |
| pool_address | Yes | On-chain address of the pool/pair to analyze (Uniswap V2/V3 pair, Balancer weighted pool, or Curve stableswap pool). Required. Lowercase, uppercase, or checksum casing all work. | |
| token_in_name | Yes | Symbol of the input token for the trade (e.g. 'USDC', 'WETH'). Must be one of the two tokens in the pool. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It transparently explains that V3 returns null for the max trade size field due to unimplemented math. It lists the return components (spot vs execution price, slippage percentage, etc.) without hiding limitations. Authentication, rate limits, or side effects are not mentioned, but the tool appears read-only.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary purpose. It is concise and free of unnecessary details, every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 10 parameters, no output schema, and no annotations, the description provides a solid overview of return values and V2/V3 behavioral differences. It does not cover error scenarios or constraints like batching limits, but the core use case is well explained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds context about the V2/V3 distinction and the meaning of return fields, but does not significantly enhance parameter-level meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Calculate slippage and price-impact decomposition for a proposed swap on a Uniswap V2 or V3 pool.' It specifies the resource (swap pool), action (calculate decomposition), and distinguishes from sibling tools that analyze LP positions or detect risks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates that the tool is for Uniswap V2/V3 pools and notes that for V3 pools, the max trade size field is null. However, it lacks explicit guidance on when to use this tool versus alternatives like SimulatePriceMove or CheckPoolHealth. The context provided is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
CheckPoolHealthAInspect
Snapshot pool-level health metrics for a Uniswap V2 or V3 pool: TVL in token0 numeraire, reserves, accumulated fees, LP concentration, and swap activity. Answers 'is this a pool I would deposit into?' at the pool level (not position level). num_swaps and fee_accrual_rate_recent are V2-only; V3 returns null for these because V3 has no per-swap history array. A single-block live snapshot also returns null for the LP-concentration and swap metrics (unrecoverable from state alone).
| Name | Required | Description | Default |
|---|---|---|---|
| rpc_url | Yes | An Ethereum (or L2) JSON-RPC URL used to read live pool state. Required; supplied by you per call (BYO-RPC) and may carry your provider key. The endpoint stores and logs nothing — the URL is never persisted or written to logs. | |
| chain_id | No | Optional guard. If supplied and the RPC reports a different chain id, the call is rejected. Defaults to 1 (Ethereum mainnet) conceptually; omit to skip the check. | |
| pool_type | Yes | Which protocol the pool at pool_address belongs to. This tool accepts uniswap_v2 | uniswap_v3. | |
| block_number | No | Optional block number to pin the read to a historical block. Omit to read the latest block. | |
| pool_address | Yes | On-chain address of the pool/pair to analyze (Uniswap V2/V3 pair, Balancer weighted pool, or Curve stableswap pool). Required. Lowercase, uppercase, or checksum casing all work. | |
| recent_window | No | Rolling window size for fee_accrual_rate_recent, in swap counts. Default 20. V2-only; ignored for V3. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that num_swaps and fee_accrual_rate_recent are V2-only and that V3 returns null for those, plus that single-block snapshots return null for LP-concentration and swap metrics. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single paragraph that front-loads the purpose and lists key metrics. While somewhat lengthy, every sentence adds value. It could be more structured but remains reasonably concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 returned metrics (TVL, reserves, fees, LP concentration, swap activity) and explains null cases for V3 and single-block snapshots. For a tool with 6 parameters and complex behavior, this is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed parameter descriptions. The tool description adds context about V2-only behavior and null returns, but does not significantly enhance parameter semantics beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool snapshots pool-level health metrics for Uniswap V2 or V3 pools, answering a specific question ('is this a pool I would deposit into?') and distinguishes from sibling tools focused on other protocols like Balancer or Curve.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description specifies when to use the tool (for V2/V3 pools) and clarifies scope (pool-level, not position-level). It notes V2-only fields and null behavior for V3, providing clear context, though it does not explicitly contrast with sibling tools or state 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.
DetectRugSignalsAInspect
Detect rug-pull signals on a Uniswap V2 or V3 pool via three threshold checks: suspiciously low TVL, top-LP concentration above a limit, and inactive-pool-with-liquidity. Composes over CheckPoolHealth and returns per-signal booleans plus a count-based risk level (low/medium/high/critical). The inactive-with-liquidity signal is V2-only; V3 pools report False for it with a note in details.
| Name | Required | Description | Default |
|---|---|---|---|
| rpc_url | Yes | An Ethereum (or L2) JSON-RPC URL used to read live pool state. Required; supplied by you per call (BYO-RPC) and may carry your provider key. The endpoint stores and logs nothing — the URL is never persisted or written to logs. | |
| chain_id | No | Optional guard. If supplied and the RPC reports a different chain id, the call is rejected. Defaults to 1 (Ethereum mainnet) conceptually; omit to skip the check. | |
| pool_type | Yes | Which protocol the pool at pool_address belongs to. This tool accepts uniswap_v2 | uniswap_v3. | |
| tvl_floor | No | Minimum acceptable TVL in token0 numeraire. Values at or below fire the tvl_suspiciously_low signal. Default 10.0 is nominal; override for your pair. | |
| block_number | No | Optional block number to pin the read to a historical block. Omit to read the latest block. | |
| pool_address | Yes | On-chain address of the pool/pair to analyze (Uniswap V2/V3 pair, Balancer weighted pool, or Curve stableswap pool). Required. Lowercase, uppercase, or checksum casing all work. | |
| lp_concentration_threshold | No | Top-LP share (strict-greater-than) that triggers the concentration signal. In (0, 1]; default 0.90; pass 1.0 to disable. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses behavior: three checks, composition over CheckPoolHealth, V2-only signal, non-persistence of rpc_url, and output format. This is transparent for a read-only analysis tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences that are front-loaded with purpose, followed by composition and V2/V3 distinction. Every sentence adds value with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given complexity (7 params, no output schema), description explains signals, risk level, and V2/V3 differences. Lacks explicit return structure but provides sufficient context for an agent to understand usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed parameter descriptions. The tool description adds overall context but does not significantly enhance parameter meaning beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool detects rug-pull signals on a Uniswap V2 or V3 pool via three specific threshold checks. It distinguishes from sibling tools like CheckPoolHealth by noting composition and from others by specifying Uniswap focus.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description implies usage context (detecting rug-pull signals) but does not explicitly state when to use this tool versus alternatives or provide exclusions. No guidance on when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
SimulateBalancerMoveAInspect
Project a 2-asset Balancer weighted-pool LP position's value at a hypothetical price change from the CURRENT pool state. The shock is applied to the base-token price in opp units; IL depends on both the shock magnitude and the pool's weights. Returns new value in opp-numeraire, IL at the simulated price, and percentage change.
| Name | Required | Description | Default |
|---|---|---|---|
| rpc_url | Yes | An Ethereum (or L2) JSON-RPC URL used to read live pool state. Required; supplied by you per call (BYO-RPC) and may carry your provider key. The endpoint stores and logs nothing — the URL is never persisted or written to logs. | |
| chain_id | No | Optional guard. If supplied and the RPC reports a different chain id, the call is rejected. Defaults to 1 (Ethereum mainnet) conceptually; omit to skip the check. | |
| pool_type | Yes | Which protocol the pool at pool_address belongs to. This tool accepts only balancer (2-asset weighted pool). | |
| lp_init_amt | Yes | Pool shares held by this position, in human units. Must be > 0. | |
| block_number | No | Optional block number to pin the read to a historical block. Omit to read the latest block. | |
| pool_address | Yes | On-chain address of the pool/pair to analyze (Uniswap V2/V3 pair, Balancer weighted pool, or Curve stableswap pool). Required. Lowercase, uppercase, or checksum casing all work. | |
| price_change_pct | No | Fractional price change from current spot. Must be > -1.0. Example: -0.30 models a 30% drop in base-in-opp terms. | |
| price_change_pcts | No | Optional batch form of 'price_change_pct': an array of values to evaluate in a single call. The pool is read once and the result is an array with one entry per element, in input order. Supply EITHER 'price_change_pct' (single) OR 'price_change_pcts' (batch), not both. Max 256 entries. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It explains that the tool reads live pool state via RPC, does not persist URLs, and returns projected values. It does not explicitly state it is read-only, but the simulation nature implies no state mutation. Good disclosure of behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no waste. The first sentence states the primary purpose, and the second details the outputs. It is front-loaded and every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 8 parameters, no output schema, and moderate complexity, the description covers the key aspects: what it does, return values (value, IL, % change), and the RPC interaction. It lacks details on error handling or the numeraire, but it is largely complete given the context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 little param-specific meaning beyond the schema; it mentions shock magnitude and pool weights but does not elaborate on individual parameters like rpc_url or chain_id. The schema already documents these thoroughly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool projects a 2-asset Balancer weighted-pool LP position's value under a hypothetical price change. It specifies the action (project), resource (LP position value), and scope (Balancer weighted-pool, 2-asset), effectively distinguishing it from siblings like SimulateStableswapMove.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies it is used for Balancer weighted-pools and hypothetical price changes. It does not explicitly state when not to use or mention alternatives, but the sibling tools provide differentiation. A clear context is given, but lack of exclusion criteria prevents a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
SimulatePriceMoveAInspect
Project a Uniswap V2 or V3 LP position's value at a hypothetical price change from the CURRENT pool state (not from entry). A price_change_pct of -0.30 asks 'what if price drops 30% from here'. Returns new value, IL at the simulated price, and percentage change in position value. Fee projection is not modeled (always null).
| Name | Required | Description | Default |
|---|---|---|---|
| rpc_url | Yes | An Ethereum (or L2) JSON-RPC URL used to read live pool state. Required; supplied by you per call (BYO-RPC) and may carry your provider key. The endpoint stores and logs nothing — the URL is never persisted or written to logs. | |
| chain_id | No | Optional guard. If supplied and the RPC reports a different chain id, the call is rejected. Defaults to 1 (Ethereum mainnet) conceptually; omit to skip the check. | |
| lwr_tick | No | Lower tick of the position (V3 only; null for V2). | |
| upr_tick | No | Upper tick of the position (V3 only; null for V2). | |
| pool_type | Yes | Which protocol the pool at pool_address belongs to. This tool accepts uniswap_v2 | uniswap_v3. | |
| block_number | No | Optional block number to pin the read to a historical block. Omit to read the latest block. | |
| pool_address | Yes | On-chain address of the pool/pair to analyze (Uniswap V2/V3 pair, Balancer weighted pool, or Curve stableswap pool). Required. Lowercase, uppercase, or checksum casing all work. | |
| position_size_lp | Yes | LP tokens held by the position, in human units. Must be > 0. | |
| price_change_pct | No | Fractional price change from current price. Must be > -1.0. Example: -0.30 models a 30% drop. | |
| price_change_pcts | No | Optional batch form of 'price_change_pct': an array of values to evaluate in a single call. The pool is read once and the result is an array with one entry per element, in input order. Supply EITHER 'price_change_pct' (single) OR 'price_change_pcts' (batch), not both. Max 256 entries. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It explains that the simulation uses current pool state, does not model fees (always null), and requires parameters like price_change_pct > -1.0. However, it does not explicitly state that the operation is read-only or non-destructive, which is important for safe agent use.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise paragraph with front-loaded purpose. Every sentence serves a purpose: stating the action, clarifying the baseline, giving an example, listing key returns, and noting fee absence. No waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 10 parameters (4 required), no output schema, and moderate complexity (batch option, V2/V3 distinction), the description covers essential aspects: current state projection, fee exclusion, batch batch capability, and key return values. It lacks explicit output structure (fields/types), but the listed returns provide sufficient guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 little beyond the schema: it reiterates constraints (e.g., price_change_pct > -1.0) already in the schema, and notes fee projection is null (a return, not parameter). No new meaning is added for parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool simulates the value of a Uniswap V2 or V3 LP position under a hypothetical price change from the current pool state. It uses specific verbs ('project') and identifies the resource, distinguishing it from sibling tools like `SimulateBalancerMove` and `SimulateStableswapMove`.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for Uniswap V2/V3 LP positions via the mention of pool_type and the context from sibling names, but does not explicitly state when to use this tool over alternatives (e.g., 'use for Uniswap, not Balancer'). The guidance is clear within context but lacks explicit when-not or alternative references.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
SimulateStableswapMoveAInspect
Project a 2-asset Curve-style Stableswap LP position's value at a hypothetical depeg from the CURRENT pool state. The shock multiplies the pool's current alpha by (1 + price_change_pct); at high A, large shocks may be physically unreachable and in that case new_value, il_at_new_price, and value_change_pct are returned as null. Values are in peg-numeraire.
| Name | Required | Description | Default |
|---|---|---|---|
| rpc_url | Yes | An Ethereum (or L2) JSON-RPC URL used to read live pool state. Required; supplied by you per call (BYO-RPC) and may carry your provider key. The endpoint stores and logs nothing — the URL is never persisted or written to logs. | |
| chain_id | No | Optional guard. If supplied and the RPC reports a different chain id, the call is rejected. Defaults to 1 (Ethereum mainnet) conceptually; omit to skip the check. | |
| pool_type | Yes | Which protocol the pool at pool_address belongs to. This tool accepts only stableswap (2-asset plain Curve pool). | |
| lp_init_amt | Yes | LP tokens held by this position, in human units. Must be > 0. | |
| block_number | No | Optional block number to pin the read to a historical block. Omit to read the latest block. | |
| pool_address | Yes | On-chain address of the pool/pair to analyze (Uniswap V2/V3 pair, Balancer weighted pool, or Curve stableswap pool). Required. Lowercase, uppercase, or checksum casing all work. | |
| price_change_pct | No | Fractional shock applied to current alpha. Must be > -1.0. Simulated alpha = current_alpha * (1 + price_change_pct). | |
| price_change_pcts | No | Optional batch form of 'price_change_pct': an array of values to evaluate in a single call. The pool is read once and the result is an array with one entry per element, in input order. Supply EITHER 'price_change_pct' (single) OR 'price_change_pcts' (batch), not both. Max 256 entries. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses that the shock multiplies current alpha by (1+price_change_pct) and that large shocks may return null for some fields. Adds behavioral context beyond a simple 'simulate' statement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no fluff. First sentence states purpose, second explains the shock mechanism and edge case. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given complexity (8 params, no output schema), the description covers purpose, shock mechanism, null behavior, and units. Lacks explicit return structure but is sufficient for an agent to understand the tool's scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds value by explaining the shock formula and null return condition, providing context beyond the schema's individual parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool projects a 2-asset Curve-style Stableswap LP position's value at a hypothetical depeg from the current pool state. It uses a specific verb and resource, and distinguishes from sibling tools like SimulateBalancerMove.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for depeg scenarios but does not explicitly state when to use this tool versus alternatives like AssessDepegRisk or SimulatePriceMove. No direct when-to-use or when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!