Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
defimind-ai avatar

DeFiMind

  • Updated July 8, 2026
  • defimind-ai/defimind-mcp

DeFiMind's MCP server.

About

DeFiMind's MCP server. Analyze **live** Uniswap V2/V3, Balancer, and. DeFiMind's MCP server. Analyze **live** Uniswap V2/V3, Balancer, and Curve stableswap pools - positions, price moves, pool health, rug signals, slippage, and depeg risk - or build a portable **State Twin** for off-MCP analysis, from any MCP-compatible AI client. Reads real chain state via a caller-supplied RPC; the endpoint itself is authless. [![License: Apache-2.0](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](LICENSE)

  • DeFiMind's MCP server. Analyze **live** Uniswap V2/V3, Balancer, and
  • Curve stableswap pools - positions, price moves, pool health, rug
  • signals, slippage, and depeg risk - or build a portable **State Twin**
  • for off-MCP analysis, from any MCP-compatible AI client. Reads real chain
  • state via a caller-supplied RPC; the endpoint itself is authless.

DeFiMind by the numbers

  • Exposes 11 verified tools (MCP introspection)
  • Data as of Jul 9, 2026 (Skillselion catalog sync)
terminal
claude mcp add --transport http defimind-mcp https://mcp.defimind.ai/mcp

Add your badge

Show developers this MCP server is listed on Skillselion. Paste this into your README.

Listed on Skillselion
TransportHTTP
AuthNone
Tools11
Last updatedJuly 8, 2026
Repositorydefimind-ai/defimind-mcp

How do agents access defimind-mcp capabilities without custom integration code?

DeFiMind's MCP server. Analyze **live** Uniswap V2/V3, Balancer, and

Who is it for?

Developers wiring defimind-mcp into Cursor, Claude Desktop, or other MCP clients.

Skip if: Teams that need features outside the documented defimind-mcp tool surface.

What you get

Configured MCP host can call defimind-mcp tools with schemas from the server README.

By the numbers

  • [object Object]
At a glance

DeFiMind capabilities & compatibility

Capabilities
defimind's mcp server. analyze **live** uniswap · curve stableswap pools positions, price moves, · signals, slippage, and depeg risk or build a p · for off mcp analysis, from any mcp compatible ai
Use cases
api development · orchestration
Runs
Runs locally
Pricing
Free
From the docs

What DeFiMind says it does

https://mcp.defimind.ai/mcp
README.md
https://mcp.defimind.ai/mcp
README.md

Tools 11

Public tool metadata - what this server can do for an agent.

AnalyzePosition11 params

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.

  • lp_init_amtnumberrequiredLP token amount held by the position (position size in human units).
  • entry_x_amtnumberrequiredAmount of token0 originally deposited at position entry.
  • entry_y_amtnumberrequiredAmount of token1 originally deposited at position entry.
  • lwr_tickinteger | nullLower tick of the position (V3 positions only; null for V2).
  • upr_tickinteger | nullUpper tick of the position (V3 positions only; null for V2).
  • holding_period_daysnumber | nullOptional holding period in days. If supplied, real_apr is annualized from net_pnl.
  • pool_addressstringrequiredOn-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.
  • rpc_urlstringrequiredAn 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.
  • pool_typestringrequiredWhich protocol the pool at pool_address belongs to. This tool accepts uniswap_v2 | uniswap_v3.
  • chain_idintegerOptional 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.
  • block_numberintegerOptional block number to pin the read to a historical block. Omit to read the latest block.
AnalyzeBalancerLP9 params

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.

  • lp_init_amtnumberrequiredPool shares held by this position, in human units.
  • entry_base_amtnumberrequiredAmount of base (first) token originally deposited.
  • entry_opp_amtnumberrequiredAmount of opp (second) token originally deposited.
  • holding_period_daysnumber | nullOptional holding period in days. If supplied, real_apr is annualized from net_pnl.
  • pool_addressstringrequiredOn-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.
  • rpc_urlstringrequiredAn 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.
  • pool_typestringrequiredWhich protocol the pool at pool_address belongs to. This tool accepts only balancer (2-asset weighted pool).
  • chain_idintegerOptional 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.
  • block_numberintegerOptional block number to pin the read to a historical block. Omit to read the latest block.
AnalyzeStableswapLP8 params

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.

  • lp_init_amtnumberrequiredLP tokens held by this position, in human units.
  • entry_amountsarrayrequiredPer-token entry amounts in pool insertion order. Exactly 2 entries (2-asset pools only in v1).
  • holding_period_daysnumber | nullOptional holding period in days. If supplied, real_apr is annualized from net_pnl.
  • pool_addressstringrequiredOn-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.
  • rpc_urlstringrequiredAn 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.
  • pool_typestringrequiredWhich protocol the pool at pool_address belongs to. This tool accepts only stableswap (2-asset plain Curve pool).
  • chain_idintegerOptional 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.
  • block_numberintegerOptional block number to pin the read to a historical block. Omit to read the latest block.
SimulatePriceMove10 params

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).

  • price_change_pctnumberFractional price change from current price. Must be > -1.0. Example: -0.30 models a 30% drop.
  • position_size_lpnumberrequiredLP tokens held by the position, in human units. Must be > 0.
  • lwr_tickinteger | nullLower tick of the position (V3 only; null for V2).
  • upr_tickinteger | nullUpper tick of the position (V3 only; null for V2).
  • pool_addressstringrequiredOn-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.
  • rpc_urlstringrequiredAn 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.
  • pool_typestringrequiredWhich protocol the pool at pool_address belongs to. This tool accepts uniswap_v2 | uniswap_v3.
  • chain_idintegerOptional 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.
  • block_numberintegerOptional block number to pin the read to a historical block. Omit to read the latest block.
  • price_change_pctsarrayOptional 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.
SimulateBalancerMove8 params

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.

  • price_change_pctnumberFractional price change from current spot. Must be > -1.0. Example: -0.30 models a 30% drop in base-in-opp terms.
  • lp_init_amtnumberrequiredPool shares held by this position, in human units. Must be > 0.
  • pool_addressstringrequiredOn-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.
  • rpc_urlstringrequiredAn 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.
  • pool_typestringrequiredWhich protocol the pool at pool_address belongs to. This tool accepts only balancer (2-asset weighted pool).
  • chain_idintegerOptional 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.
  • block_numberintegerOptional block number to pin the read to a historical block. Omit to read the latest block.
  • price_change_pctsarrayOptional 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.
SimulateStableswapMove8 params

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.

  • price_change_pctnumberFractional shock applied to current alpha. Must be > -1.0. Simulated alpha = current_alpha * (1 + price_change_pct).
  • lp_init_amtnumberrequiredLP tokens held by this position, in human units. Must be > 0.
  • pool_addressstringrequiredOn-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.
  • rpc_urlstringrequiredAn 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.
  • pool_typestringrequiredWhich protocol the pool at pool_address belongs to. This tool accepts only stableswap (2-asset plain Curve pool).
  • chain_idintegerOptional 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.
  • block_numberintegerOptional block number to pin the read to a historical block. Omit to read the latest block.
  • price_change_pctsarrayOptional 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.
CheckPoolHealth6 params

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).

  • recent_windowinteger | nullRolling window size for fee_accrual_rate_recent, in swap counts. Default 20. V2-only; ignored for V3.
  • pool_addressstringrequiredOn-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.
  • rpc_urlstringrequiredAn 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.
  • pool_typestringrequiredWhich protocol the pool at pool_address belongs to. This tool accepts uniswap_v2 | uniswap_v3.
  • chain_idintegerOptional 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.
  • block_numberintegerOptional block number to pin the read to a historical block. Omit to read the latest block.
DetectRugSignals7 params

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.

  • lp_concentration_thresholdnumber | nullTop-LP share (strict-greater-than) that triggers the concentration signal. In (0, 1]; default 0.90; pass 1.0 to disable.
  • tvl_floornumber | nullMinimum acceptable TVL in token0 numeraire. Values at or below fire the tvl_suspiciously_low signal. Default 10.0 is nominal; override for your pair.
  • pool_addressstringrequiredOn-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.
  • rpc_urlstringrequiredAn 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.
  • pool_typestringrequiredWhich protocol the pool at pool_address belongs to. This tool accepts uniswap_v2 | uniswap_v3.
  • chain_idintegerOptional 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.
  • block_numberintegerOptional block number to pin the read to a historical block. Omit to read the latest block.
CalculateSlippage10 params

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.

  • amount_innumberAmount of token_in to trade, in human units. Must be > 0.
  • lwr_tickinteger | nullLower tick of the position (V3 only; null for V2).
  • upr_tickinteger | nullUpper tick of the position (V3 only; null for V2).
  • pool_addressstringrequiredOn-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.
  • rpc_urlstringrequiredAn 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.
  • pool_typestringrequiredWhich protocol the pool at pool_address belongs to. This tool accepts uniswap_v2 | uniswap_v3.
  • chain_idintegerOptional 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.
  • block_numberintegerOptional block number to pin the read to a historical block. Omit to read the latest block.
  • token_in_namestringrequiredSymbol of the input token for the trade (e.g. 'USDC', 'WETH'). Must be one of the two tokens in the pool.
  • amounts_inarrayOptional 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.
AssessDepegRisk9 params

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.

  • lp_init_amtnumberrequiredLP tokens held, in human units. Must be > 0.
  • depeg_levelsarray | nullDepeg magnitudes as fractions in (0, 1). Default [0.02, 0.05, 0.10, 0.20, 0.50].
  • compare_v2boolean | nullIf true (default), each scenario reports the equivalent V2 constant-product IL at the same price deviation.
  • pool_addressstringrequiredOn-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.
  • rpc_urlstringrequiredAn 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.
  • pool_typestringrequiredWhich protocol the pool at pool_address belongs to. This tool accepts only stableswap (2-asset plain Curve pool).
  • chain_idintegerOptional 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.
  • block_numberintegerOptional block number to pin the read to a historical block. Omit to read the latest block.
  • depeg_token_namestringOptional. 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.
BuildStateTwin7 params

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.

  • pool_addressstringrequiredOn-chain address of the pool/pair to snapshot. Required. Lowercase, uppercase, or checksum casing all work.
  • rpc_urlstringrequiredAn 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.
  • pool_typestringrequiredWhich 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.
  • chain_idintegerOptional guard. If supplied and the RPC reports a different chain id, the call is rejected. Omit to skip the check.
  • block_numberintegerOptional block number to pin the read to a historical block. Omit to read the latest block.
  • lwr_tickintegeruniswap_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_tickintegeruniswap_v3 only — upper tick of the position range to snapshot. Omit for the pool's full active-liquidity range. Ignored for other pool types.
README.md

defimind-mcp

DeFiMind's MCP server. Analyze live Uniswap V2/V3, Balancer, and Curve stableswap pools — positions, price moves, pool health, rug signals, slippage, and depeg risk — or build a portable State Twin for off-MCP analysis, from any MCP-compatible AI client. Reads real chain state via a caller-supplied RPC; the endpoint itself is authless.

License: Apache-2.0 MCP Python arXiv smithery badge

Endpoint: https://mcp.defimind.ai/mcp (streamable-HTTP, authless).

Install

Claude Desktop

Settings → Integrations → Add server. URL: https://mcp.defimind.ai/mcp

Claude Code

claude mcp add --transport http defimind https://mcp.defimind.ai/mcp

Cursor

Settings → MCP → Add new MCP server. Name: defimind · Type: http · URL: https://mcp.defimind.ai/mcp

Smithery

Listed at smithery.ai/servers/ic3moore/defimind — connect via the Smithery gateway from any supported client.

Tools

The endpoint ships 11 tools over live Uniswap V2/V3, Balancer weighted (2-asset), and Curve stableswap (2-asset) pools. Two surfaces:

  • 10 reactive primitives — one question, one answer, one chain read. Four of them also take a vector input (e.g. price_change_pcts[], amounts_in[]) to sweep a whole grid/curve in one call.
  • BuildStateTwin — returns a portable State Twin (the pool's state as JSON) that a client rehydrates locally to run unlimited counterfactuals off the MCP, zero further RPC.

Every call takes pool_address, rpc_url, and pool_type, plus an optional chain_id guard and block_number pin — nothing is stored. Each reactive tool is protocol-specific and advertises only the pool_type values it accepts; pointing one at an unsupported type returns a clean error before any chain read.

Full reference — params, returns, and a verified example per tool: docs/TOOLS.md.

Scope: the Balancer tools cover 2-asset weighted pools; the stableswap tools cover 2-asset plain Curve pools (rate-bearing pools — metapools, LSD — are a later release). A stableswap tool pointed at a 3-coin or rate-bearing pool fails cleanly.

Uniswap V2/V3

AnalyzePosition

PnL decomposition for an LP position — impermanent loss, fees, and net.

"Analyze my position in the V3 USDC/ETH pool."

SimulatePriceMove

"What if price moves X%?" — projected reserves, position value, and IL.

"If ETH drops 20%, what happens to my V3 ETH/DAI position?"

CheckPoolHealth

TVL, reserves, LP concentration, and recent activity for a pool.

"Is this V3 pool healthy?"

DetectRugSignals

Threshold-based rug flags on a pool's on-chain state.

"Any rug signals on this V2 pair?"

CalculateSlippage

Slippage, price impact, and max trade size for a given trade.

"How much slippage on a 50 ETH buy in this V3 pool?"

Balancer (2-asset weighted)

AnalyzeBalancerLP

PnL decomposition for a 2-asset Balancer weighted-pool position, using the weighted-pool IL formula where the token weight shapes IL magnitude.

"How is my 80/20 BAL/WETH Balancer position doing?"

SimulateBalancerMove

"What if the base token moves X%?" — projected value and IL on a 2-asset weighted pool, weight-aware.

"If BAL drops 30%, what happens to my BAL/WETH Balancer LP?"

Curve stableswap (2-asset plain)

AnalyzeStableswapLP

PnL decomposition for a 2-asset Curve stableswap position via the amplified-invariant IL formula — small depegs can produce outsized IL at high A.

"Analyze my position in the crvUSD/USDC pool."

SimulateStableswapMove

"What if the peg shifts X%?" — projected value and IL on a 2-asset stableswap pool. At high A, large shocks may be physically unreachable (returned as null).

"What happens to my USDC/DAI Curve LP if USDC depegs 2%?"

AssessDepegRisk

IL across a ladder of depeg levels (default 2%, 5%, 10%, 20%, 50%) for a 2-asset stableswap position, with an optional constant-product benchmark.

"How exposed is my crvUSD/USDC position to a depeg?"

State twin builder (all four pool types)

BuildStateTwin

Reads a pool once and returns a portable State Twin — the pool's state as JSON (__type__ + fields + a content_hash). A client rehydrates it locally and runs unlimited counterfactuals (price moves, IL, slippage) off the MCP, with zero further RPC — build once, run N. Spans all four pool types. See the twin round-trip in docs/TOOLS.md and the defimind package.

"Build me a reusable twin of the USDC/ETH 0.05% pool."

(Honest gap: it's a single-block STATE twin — history-derived health metrics stay server-side reads inside CheckPoolHealth/DetectRugSignals.)

How it works

defimind-mcp reads live Uniswap V2/V3, Balancer, and Curve stableswap pool state through a caller-supplied RPC endpoint (BYO-RPC, passed per tool call). The endpoint is authless — no API key, no account. Nothing is logged or stored; each call pulls state, runs the analysis, and returns a typed result.

The analytics are powered by open-source DeFiPy — the same primitives, twin, and tools that run against synthetic recipes, now pointed at real pools. The math is open; the reports are paid.

Roadmap

  • v0.2 — Balancer & Stableswap live reads ✓ shipped. The 5 Balancer/Stableswap tools went live on DeFiPy 2.2's LiveProviders (2-asset weighted + 2-asset plain Curve).
  • v0.2.2 — honest schemas, vectors & the twin builder ✓ shipped. Per-tool pool_type enums; vectorized scenario inputs on the four scenario tools; and BuildStateTwin — the 11th tool — for portable, off-MCP twin analysis.
  • N-asset & rate-bearing pools — 3-asset Balancer, N-coin and rate-bearing (metapool/LSD) Curve, once the upstream DeFiPy primitives extend past 2 assets.
  • Distribution polish — OCI-package listing, DNS-verified namespace, and OIDC auto-publish.

Develop

python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"

Run the server over streamable HTTP (binds to $PORT, default 8080):

PORT=8080 python -m defimind_mcp.server      # endpoint at http://localhost:8080/mcp

Or over stdio for a local MCP Inspector smoke-test:

python -m defimind_mcp.server --stdio
npx @modelcontextprotocol/inspector python -m defimind_mcp.server --stdio

Tests (offline — fake provider + real twin/primitives):

pytest tests/

Live-RPC gate (real mainnet Uniswap V2/V3, Balancer, and Curve pools; needs your own RPC):

DEFIMIND_TEST_RPC_URL="https://eth-mainnet.example/v2/<key>" pytest tests/test_live.py -v

License

Apache-2.0. See LICENSE and NOTICE.

This project adapts code from DeFiPy (Apache-2.0).

See also

Recommended MCP Servers

FAQ

What does defimind-mcp do?

DeFiMind's MCP server.

When should I use defimind-mcp?

DeFiMind's MCP server. Analyze **live** Uniswap V2/V3, Balancer, and

Is defimind-mcp safe to install?

Review the Security Audits panel on this page before installing in production.

Developer Toolsintegrations

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.