Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Recon Crypto MCP

NPM · RECON-CRYPTO-MCP · SCANNED SEP 20

Self-custodial crypto portfolio: read EVM DeFi, sign on Ledger via WalletConnect.

Available components

0 this week 79 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security89
  • No malware found by supply-chain analysis.Pass
  • CVE check failed: a known high-severity CVE affects uuid 8.3.2, reached via @lifi/sdk > @solana/web3.js > jayson > uuid. A fixed version is available. View diagnostics → Fail
  • No install/post-install scripts declared.Pass
  • 80 of 268 dependencies flagged as unhealthy (2 deprecated). View diagnostics → Partial
Provenance & Transparency74
  • Repository check failed: the declared repository URL redirects; it must resolve directly. See how to fix → View diagnostics → Fail
  • Cryptographically verified build provenance (signed, bound to szhygulin/recon-crypto-mcp). View diagnostics → Pass
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 159 days ago).Pass
  • Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability65
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 6683 tokens (~151/item across 44 items; 44 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management83
  • Stability observed for 25 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage77
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 31% of tool parameters carry a description.Partial
Tool Safety75
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 0 of 7 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "prepare_aave_withdraw" implies "withdraw" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
  • An AI judge read all 45 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

How do I install the Recon Crypto MCP server?

Recon Crypto MCP runs locally as an npm package, launched with npx -y recon-crypto-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · recon-crypto-mcp

# add to Claude Code
claude mcp add szhygulin-recon-crypto-mcp -- npx -y recon-crypto-mcp
// .cursor/mcp.json
{
  "mcpServers": {
    "szhygulin-recon-crypto-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "recon-crypto-mcp"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "szhygulin-recon-crypto-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "recon-crypto-mcp"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add szhygulin-recon-crypto-mcp -- npx -y recon-crypto-mcp
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "szhygulin-recon-crypto-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "recon-crypto-mcp"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add szhygulin-recon-crypto-mcp --command npx --arg -y --arg recon-crypto-mcp
# ~/.hermes/config.yaml
mcp_servers:
  szhygulin-recon-crypto-mcp:
    command: "npx"
    args: ["-y", "recon-crypto-mcp"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "szhygulin-recon-crypto-mcp": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "recon-crypto-mcp"
      ]
    }
  }
}
# add to Vellum
assistant mcp add szhygulin-recon-crypto-mcp -t stdio -c npx -a -y recon-crypto-mcp
// mcp.json
{
  "mcpServers": {
    "szhygulin-recon-crypto-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "recon-crypto-mcp"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 19 Sept 26 −3
    • Stability: pass → 0.80 functional
  • 18 Sept 26 +1
    • Stability: 0.97 → pass security
  • 16 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.

  • 14 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.

  • 13 Sept 26 −3
    • Stability: pass → 0.83 functional
  • 12 Sept 26 +1
    • Stability: 0.97 → pass security
    • Security disclosure: unverified → pass functional
  • 11 Sept 26 0
    • Security disclosure: pass → unverified functional
  • 10 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 20 Sept 2026 · Analysed npm/recon-crypto-mcp@0.3.1

Provenance Verified

A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.

Result Verified
Ecosystem npm
Reason Verified
Discovered via Registry attestation endpoint
Source repo szhygulin/recon-crypto-mcp
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/szhygulin/recon-crypto-mcp/.github/workflows/publish.yml@refs/tags/v0.3.1
Rekor log index 1292984371
Predicate type https://slsa.dev/provenance/v1
Subject digest sha512:c090a61f4db97686c6976d81e2046af04610d4766e7e6f439d8be2af6d5023adc7e141f359f6847bca88a56b7fd12e5bc0588a4a99827d834488d327f

Background: How many MCP packages publish verified provenance →

Vulnerabilities 2 findings
ID CVE Severity Vector Fix available
GHSA-528h-pc64-c93x CVE-2026-71429 medium CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H yes
GHSA-w5hq-g745-h8pq CVE-2026-41907 high CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N yes

Background: What a vulnerability scan can and cannot prove →

Dependencies 268 packages
Packages resolved 268
Deprecated 2
Stale 78
No linked repository 2
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 44 exposed · ~5,755 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
check_contract_security ~64

Check Etherscan verification status, EIP-1967 proxy pattern, implementation/admin slots, and the presence of dangerous admin functions (mint, pause, upgradeTo, etc.) for a given contract.

NameTypeReqDescription
addressstringyes
chainstringyes

No output schema declared.

No examples provided.

check_permission_risks ~60

Enumerate privileged roles on a contract (Ownable.owner, AccessControl hints) and classify holders as EOA, Gnosis Safe multisig, or TimelockController.

NameTypeReqDescription
addressstringyes
chainstringyes

No output schema declared.

No examples provided.

estimate_staking_yield ~82

Project annual yield on a hypothetical staking amount for a given protocol (Lido or EigenLayer) using current APRs.

NameTypeReqDescription
amountnumberyesHuman-readable decimal amount of the staked asset (ETH for lido, LST for eigenlayer). Example: 1.5 for 1.5 ETH.
protocolstringyes

No output schema declared.

No examples provided.

get_compound_positions ~77

Fetch Compound V3 (Comet) positions for a wallet across supported markets (cUSDCv3, cUSDTv3, cWETHv3, etc.). Returns base-token supplied/borrowed, per-asset collateral, and USD totals.

NameTypeReqDescription
chainsarray
walletstringyes

No output schema declared.

No examples provided.

get_health_alerts ~52

Check for Aave V3 lending positions approaching liquidation. Returns positions whose health factor is below the given threshold (default 1.5).

NameTypeReqDescription
thresholdnumber
walletstringyes

No output schema declared.

No examples provided.

get_ledger_status ~227

Report whether a WalletConnect session with Ledger Live is active, which wallet it's connected to, and which accounts are exposed. Returns `accounts: 0x…[]` — the list of wallet addresses the user has connected. Call this FIRST whenever the user refers to their wallet(s) by position or nickname instead of by address — e.g. "my wallet", "the first address", "account 2", "second wallet" — so you can resolve the reference to a concrete 0x… before invoking any prepare_* / swap / send / portfolio tool that takes a `wallet` argument. Do NOT ask the user to paste an address if it's already in `accounts` here. SECURITY: the returned `wallet`/`peerUrl` are self-reported by the paired app. Before the FIRST send_transaction of a session, state the paired wallet name + URL back to the user and ask them to confirm it matches their Ledger Live install — any WalletConnect peer can claim to be 'Ledger Live'. The physical Ledger device's on-screen confirmation is the final check.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_lending_positions ~68

Fetch all Aave V3 lending/borrowing positions for a wallet. Returns collateral, debt (both in USD and per-asset), health factor, LTV, and liquidation threshold across Ethereum and Arbitrum.

NameTypeReqDescription
chainsarray
walletstringyes

No output schema declared.

No examples provided.

get_lp_positions ~67

Fetch all Uniswap V3 liquidity-provider positions for a wallet. Returns token pair, current token amounts, fee tier, in-range status, uncollected fees (lower bound), and an approximate impermanent-loss estimate.

NameTypeReqDescription
chainsarray
walletstringyes

No output schema declared.

No examples provided.

get_morpho_positions ~110

Fetch Morpho Blue positions for a wallet. If `marketIds` is omitted, the server auto-discovers the wallet's markets by scanning Morpho Blue event logs (may take several seconds on a cold call). Pass explicit `marketIds` (bytes32 each, keccak256 of MarketParams) as a fast path. Returns per-market supplied/borrowed assets and collateral.

NameTypeReqDescription
chainstring
marketIdsarray
walletstringyes

No output schema declared.

No examples provided.

get_portfolio_summary ~70

Aggregate a complete portfolio view: native balances, top ERC-20 holdings, Aave V3 positions, Uniswap V3 LP positions, and staking — with USD totals and per-chain breakdown.

NameTypeReqDescription
chainsarray
walletstring
walletsarray

No output schema declared.

No examples provided.

get_protocol_risk_score ~67

Return a 0-100 risk score for a DeFi protocol, combining TVL size, 30-day TVL trend, contract age, audit count (DefiLlama), and Immunefi bug-bounty status. Higher = safer.

NameTypeReqDescription
protocolstringyes

No output schema declared.

No examples provided.

get_staking_positions ~65

Fetch Lido (stETH/wstETH) and EigenLayer staking positions for a wallet across supported chains. Returns per-protocol staked amounts, USD value, APR, and EigenLayer delegation target.

NameTypeReqDescription
chainsarray
walletstringyes

No output schema declared.

No examples provided.

get_staking_rewards ~65

Estimate staking rewards earned over a given period (7d/30d/90d/1y) using the current APR as a proxy. This is an estimate, not an on-chain rewards query.

NameTypeReqDescription
periodstring
walletstringyes

No output schema declared.

No examples provided.

get_swap_quote ~299

Get a LiFi aggregator quote for a token swap (same-chain) or bridge (cross-chain). Returns expected output, fees, execution time, and the underlying tool selected. No transaction is built.

NameTypeReqDescription
acknowledgeHighSlippagebooleanOpt-in flag required when slippageBps > 100 (1%). Forces the caller to state that an unusually-high slippage is intentional — the default rejects the tx to protect the user from MEV sandwich attacks.
amountstringyesHuman-readable decimal amount of fromToken, NOT raw wei/base units. Example: "1.5" for 1.5 USDC, "0.01" for 0.01 ETH. The tool resolves decimals on-chain and converts internally.
fromChainstringyes
fromTokenyes
fromTokenDecimalsintegerOptional decimals hint for fromToken if on-chain lookup fails (rare). Native is 18.
slippageBpsintegerSlippage tolerance in basis points (50 = 0.5%, 100 = 1%). Default ~50. Hard-capped at 500 (5%) — anything higher is almost always a sandwich-bait misconfiguration. If a legitimate thin-liquidity rout…
toChainyes
toTokenyes
walletstringyes

No output schema declared.

No examples provided.

get_token_balance ~80

Fetch a wallet's balance of any ERC-20 token or the chain's native coin. Pass `token: "native"` for ETH (or chain-native asset) or an ERC-20 contract address. Returns amount, decimals, symbol, and USD value.

NameTypeReqDescription
chainstring
tokenyes
walletstringyes

No output schema declared.

No examples provided.

get_token_price ~87

Fetch the USD price of a token via DefiLlama. Pass `token: "native"` for the chain's native asset (ETH on ethereum/arbitrum, MATIC on polygon) or an ERC-20 contract address. Prefer this over get_swap_quote for pure price lookups — no wallet or liquidity simulation needed.

NameTypeReqDescription
chainstringyes
tokenyes

No output schema declared.

No examples provided.

get_transaction_status ~52

Poll a transaction's status via the chain's RPC. Returns pending / success / failed, or unknown if the node hasn't seen it yet.

NameTypeReqDescription
chainstringyes
txHashstringyes

No output schema declared.

No examples provided.

pair_ledger_live ~50

Initiate a WalletConnect v2 pairing session with Ledger Live. Returns a URI and ASCII QR code — paste into Ledger Live's WalletConnect screen to complete pairing. The session persists for future transactions.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

prepare_aave_borrow ~125

Build an unsigned Aave V3 borrow transaction (variable rate — stable rate is deprecated and reverts on production markets). The borrower must already have sufficient collateral supplied.

NameTypeReqDescription
amountstringyesHuman-readable decimal amount of `asset`, NOT raw wei/base units. Example: "1.5" for 1.5 USDC, "0.01" for 0.01 ETH. Pass "max" for full-balance withdraw/repay.
assetstringyes
chainstring
walletstringyes

No output schema declared.

No examples provided.

prepare_aave_repay ~223

Build an unsigned Aave V3 repay transaction. If an ERC-20 approve() is required first, it is returned as the outer tx and repay is in `.next`. Pass `amount: "max"` to repay the full debt.

NameTypeReqDescription
amountstringyesHuman-readable decimal amount of `asset`, NOT raw wei/base units. Example: "1.5" for 1.5 USDC, "0.01" for 0.01 ETH. Pass "max" for full-balance withdraw/repay.
approvalCapstringCap on the ERC-20 approval preceding this action. Omit for "unlimited" (standard DeFi UX — fewer follow-up approvals). Pass "exact" to approve only what this action pulls. Pass a decimal string (e.g.…
assetstringyes
chainstring
walletstringyes

No output schema declared.

No examples provided.

prepare_aave_supply ~222

Build an unsigned Aave V3 supply transaction. If an ERC-20 approve() is required first, it is returned as the outer tx and the supply tx is embedded in `.next`. Both must be signed for the supply to succeed.

NameTypeReqDescription
amountstringyesHuman-readable decimal amount of `asset`, NOT raw wei/base units. Example: "1.5" for 1.5 USDC, "0.01" for 0.01 ETH. Pass "max" for full-balance withdraw/repay.
approvalCapstringCap on the ERC-20 approval preceding this action. Omit for "unlimited" (standard DeFi UX — fewer follow-up approvals). Pass "exact" to approve only what this action pulls. Pass a decimal string (e.g.…
assetstringyes
chainstring
walletstringyes

No output schema declared.

No examples provided.

prepare_aave_withdraw ~117

Build an unsigned Aave V3 withdraw transaction. Pass `amount: "max"` to withdraw the entire aToken balance.

NameTypeReqDescription
amountstringyesHuman-readable decimal amount of `asset`, NOT raw wei/base units. Example: "1.5" for 1.5 USDC, "0.01" for 0.01 ETH. Pass "max" for full-balance withdraw/repay.
assetstringyes
chainstring
walletstringyes

No output schema declared.

No examples provided.

prepare_compound_borrow ~97

Build an unsigned Compound V3 borrow transaction — encoded as withdraw(baseToken) beyond the user's supplied balance. Base token is resolved on-chain from the Comet.

NameTypeReqDescription
amountstringyesHuman-readable decimal amount of the market base token, NOT raw wei/base units. Example: "100" for 100 USDC.
chainstring
marketstringyes
walletstringyes

No output schema declared.

No examples provided.

prepare_compound_repay ~187

Build an unsigned Compound V3 repay transaction — encoded as supply(baseToken) against an outstanding borrow. Includes an approve step if needed. Pass `amount: "max"` for a full repay.

NameTypeReqDescription
amountstringyesHuman-readable decimal amount of the market base token, NOT raw wei/base units. Example: "100" for 100 USDC.
approvalCapstringCap on the ERC-20 approval preceding this action. Omit for "unlimited" (standard DeFi UX — fewer follow-up approvals). Pass "exact" to approve only what this action pulls. Pass a decimal string (e.g.…
chainstring
marketstringyes
walletstringyes

No output schema declared.

No examples provided.

prepare_compound_supply ~224

Build an unsigned Compound V3 supply transaction (base token or collateral). If an ERC-20 approve() is required first, it is returned as the outer tx with supply in `.next`.

NameTypeReqDescription
amountstringyesHuman-readable decimal amount of `asset`, NOT raw wei/base units. Example: "10" for 10 USDC. Pass "max" for full-balance withdraw.
approvalCapstringCap on the ERC-20 approval preceding this action. Omit for "unlimited" (standard DeFi UX — fewer follow-up approvals). Pass "exact" to approve only what this action pulls. Pass a decimal string (e.g.…
assetstringyes
chainstring
marketstringyesComet market address (e.g. cUSDCv3). Discover via get_compound_positions or the Compound registry.
walletstringyes

No output schema declared.

No examples provided.

prepare_compound_withdraw ~127

Build an unsigned Compound V3 withdraw transaction. Pass `amount: "max"` to withdraw the full supplied balance.

NameTypeReqDescription
amountstringyesHuman-readable decimal amount of `asset`, NOT raw wei/base units. Example: "10" for 10 USDC. Pass "max" for full-balance withdraw.
assetstringyes
chainstring
marketstringyesComet market address (e.g. cUSDCv3). Discover via get_compound_positions or the Compound registry.
walletstringyes

No output schema declared.

No examples provided.

prepare_eigenlayer_deposit ~171

Build an unsigned EigenLayer StrategyManager.depositIntoStrategy transaction. Includes an ERC-20 approve step if needed.

NameTypeReqDescription
amountstringyesHuman-readable decimal amount of `token`, NOT raw wei/base units. Example: "0.5" for 0.5 stETH.
approvalCapstringCap on the ERC-20 approval preceding this action. Omit for "unlimited" (standard DeFi UX — fewer follow-up approvals). Pass "exact" to approve only what this action pulls. Pass a decimal string (e.g.…
strategystringyes
tokenyes
walletstringyes

No output schema declared.

No examples provided.

prepare_lido_stake ~79

Build an unsigned Lido stake transaction (wraps ETH into stETH via stETH.submit). The tx's value field is the ETH amount to stake.

NameTypeReqDescription
amountEthstringyesHuman-readable ETH amount, NOT raw wei. Example: "0.5" for 0.5 ETH.
walletstringyes

No output schema declared.

No examples provided.

prepare_lido_unstake ~167

Build an unsigned Lido withdrawal request transaction. Wraps `requestWithdrawals` on the Lido Withdrawal Queue and includes an approve step if needed.

NameTypeReqDescription
amountStETHstringyesHuman-readable stETH amount, NOT raw wei. Example: "0.5" for 0.5 stETH (18 decimals).
approvalCapstringCap on the ERC-20 approval preceding this action. Omit for "unlimited" (standard DeFi UX — fewer follow-up approvals). Pass "exact" to approve only what this action pulls. Pass a decimal string (e.g.…
walletstringyes

No output schema declared.

No examples provided.

prepare_morpho_borrow ~92

Build an unsigned Morpho Blue borrow transaction. Requires pre-existing collateral in the market.

NameTypeReqDescription
amountstringyesHuman-readable decimal amount, NOT raw wei/base units. Example: "10" for 10 USDC. Pass "max" for full-balance withdraw/repay.
chainstring
marketIdstringyes
walletstringyes

No output schema declared.

No examples provided.

prepare_morpho_repay ~185

Build an unsigned Morpho Blue repay transaction. Includes an approve step if needed. Explicit amount only — "max" is not supported.

NameTypeReqDescription
amountstringyesHuman-readable decimal amount, NOT raw wei/base units. Example: "10" for 10 USDC. Pass "max" for full-balance withdraw/repay.
approvalCapstringCap on the ERC-20 approval preceding this action. Omit for "unlimited" (standard DeFi UX — fewer follow-up approvals). Pass "exact" to approve only what this action pulls. Pass a decimal string (e.g.…
chainstring
marketIdstringyes
walletstringyes

No output schema declared.

No examples provided.

prepare_morpho_supply ~192

Build an unsigned Morpho Blue supply transaction (deposits loan token for yield). Market params are resolved on-chain from the market id. Includes an approve step if needed.

NameTypeReqDescription
amountstringyesHuman-readable decimal amount, NOT raw wei/base units. Example: "10" for 10 USDC. Pass "max" for full-balance withdraw/repay.
approvalCapstringCap on the ERC-20 approval preceding this action. Omit for "unlimited" (standard DeFi UX — fewer follow-up approvals). Pass "exact" to approve only what this action pulls. Pass a decimal string (e.g.…
chainstring
marketIdstringyes
walletstringyes

No output schema declared.

No examples provided.

prepare_morpho_supply_collateral ~182

Build an unsigned Morpho Blue supplyCollateral transaction — adds collateral to a market. Includes an approve step if needed.

NameTypeReqDescription
amountstringyesHuman-readable decimal amount, NOT raw wei/base units. Example: "10" for 10 USDC. Pass "max" for full-balance withdraw/repay.
approvalCapstringCap on the ERC-20 approval preceding this action. Omit for "unlimited" (standard DeFi UX — fewer follow-up approvals). Pass "exact" to approve only what this action pulls. Pass a decimal string (e.g.…
chainstring
marketIdstringyes
walletstringyes

No output schema declared.

No examples provided.

prepare_morpho_withdraw ~106

Build an unsigned Morpho Blue withdraw transaction (withdraws supplied loan token). Explicit amount only — "max" is not supported; query your position first.

NameTypeReqDescription
amountstringyesHuman-readable decimal amount, NOT raw wei/base units. Example: "10" for 10 USDC. Pass "max" for full-balance withdraw/repay.
chainstring
marketIdstringyes
walletstringyes

No output schema declared.

No examples provided.

prepare_morpho_withdraw_collateral ~97

Build an unsigned Morpho Blue withdrawCollateral transaction — removes collateral from a market. Explicit amount only.

NameTypeReqDescription
amountstringyesHuman-readable decimal amount, NOT raw wei/base units. Example: "10" for 10 USDC. Pass "max" for full-balance withdraw/repay.
chainstring
marketIdstringyes
walletstringyes

No output schema declared.

No examples provided.

prepare_native_send ~99

Build an unsigned native-coin send transaction (ETH on Ethereum/Arbitrum). Pass a human-readable amount like "0.5".

NameTypeReqDescription
amountstringyesHuman-readable native-asset amount, NOT raw wei. Example: "0.5" for 0.5 ETH (or 0.5 MATIC on polygon).
chainstring
tostringyes
walletstringyes

No output schema declared.

No examples provided.

prepare_swap ~302

Prepare an unsigned swap or bridge transaction via LiFi aggregator. Same-chain swaps use the best DEX route; cross-chain swaps use a bridge + DEX combo. The returned tx can be sent via `send_transaction`.

NameTypeReqDescription
acknowledgeHighSlippagebooleanOpt-in flag required when slippageBps > 100 (1%). Forces the caller to state that an unusually-high slippage is intentional — the default rejects the tx to protect the user from MEV sandwich attacks.
amountstringyesHuman-readable decimal amount of fromToken, NOT raw wei/base units. Example: "1.5" for 1.5 USDC, "0.01" for 0.01 ETH. The tool resolves decimals on-chain and converts internally.
fromChainstringyes
fromTokenyes
fromTokenDecimalsintegerOptional decimals hint for fromToken if on-chain lookup fails (rare). Native is 18.
slippageBpsintegerSlippage tolerance in basis points (50 = 0.5%, 100 = 1%). Default ~50. Hard-capped at 500 (5%) — anything higher is almost always a sandwich-bait misconfiguration. If a legitimate thin-liquidity rout…
toChainyes
toTokenyes
walletstringyes

No output schema declared.

No examples provided.

prepare_token_send ~108

Build an unsigned ERC-20 transfer transaction. Pass `amount: "max"` to send the full balance (resolved at build time).

NameTypeReqDescription
amountstringyesHuman-readable decimal amount, NOT raw wei/base units. Example: "10" for 10 USDC. Decimals resolved from the token contract. Pass "max" to send the full balance.
chainstring
toyes
tokenstringyes
walletstringyes

No output schema declared.

No examples provided.

request_capability ~286

File a capability request against the recon-crypto-mcp GitHub repository when the user asks for something this server cannot do (e.g. an unsupported protocol, chain, token, or missing tool). USE ONLY AFTER confirming no existing tool can accomplish the task. By default this returns a pre-filled GitHub issue URL — NO data is transmitted; the user must click through to submit. If the operator has configured RECON_FEEDBACK_ENDPOINT, it posts directly to that proxy instead. Rate-limited per install (30s between calls, 3/hour, 10/day, 7-day dedupe on identical summaries). Write clear, actionable summaries — this lands in a real issue tracker read by humans.

NameTypeReqDescription
agentNamestringMCP client identifier (e.g. 'Claude Code', 'Cursor'). Helps triage.
categorystringRough bucket to help triage.
contextobject
descriptionstringyesWhat the user asked for, what the agent tried, what's missing, and why the existing tools don't cover it. Include protocol name, chain, contract addresses, and a concrete example if relevant.
summarystringyesOne-line title of the missing capability (used as the GitHub issue title). E.g. 'Support Aerodrome LP positions on Base' or 'Add Pendle PT/YT position reader'.

No output schema declared.

No examples provided.

resolve_ens_name ~45

Resolve an ENS name (e.g. vitalik.eth) to an Ethereum address via mainnet ENS resolver. Returns null if unregistered.

NameTypeReqDescription
namestringyes

No output schema declared.

No examples provided.

reverse_resolve_ens ~39

Reverse-resolve an Ethereum address to its primary ENS name. Returns null if no primary name is set.

NameTypeReqDescription
addressstringyes

No output schema declared.

No examples provided.

send_transaction ~237

Forward an already-prepared transaction to Ledger Live via WalletConnect for user signing. The user must review and approve the tx in Ledger Live and on their Ledger device; this call blocks until the user signs or rejects. You MUST pass `confirmed: true` — the agent is affirming that the user has seen and acknowledged the decoded preview.

NameTypeReqDescription
confirmedbooleanyesMust be literally `true`. The agent is affirming that the user has seen and acknowledged the decoded preview returned by the preceding prepare_* call. This is a schema-enforced contract — omitting it…
handlestringyesOpaque handle returned by a prepare_* tool in the `handle` field of the UnsignedTx. Raw calldata is NOT accepted — the handle is the only way to name a tx for signing, so the tx the user previewed is…

No output schema declared.

No examples provided.

simulate_position_change ~85

Simulate the effect of adding or removing collateral, or borrowing/repaying debt on an Aave V3 position. Returns the projected health factor and collateral/debt totals. No transaction is sent.

NameTypeReqDescription
actionstringyes
amountUsdnumberyes
assetstringyes
chainstring
walletstringyes

No output schema declared.

No examples provided.

simulate_transaction ~319

Run an eth_call against the chain's RPC to simulate a transaction without signing or broadcasting it. Returns `{ ok, returnData?, revertReason? }`. Use this BEFORE prepare_*/send_transaction to verify a contract call does what you expect — e.g. does wrapping ETH by sending to WETH9's fallback succeed, does a custom calldata revert, what selector gets hit. For state-dependent calls (WETH deposit credits msg.sender, ERC-20 transfer debits msg.sender), pass the user's wallet as `from`. Prepared transactions are also re-simulated automatically at send_transaction time — this tool lets the agent check ahead. NEVER call this on a tx that depends on an approval you just submitted but haven't yet waited on: the approval must be included on-chain (poll get_transaction_status until confirmed) before the dependent tx will simulate correctly — otherwise you get a misleading 'insufficient allowance' revert.

NameTypeReqDescription
chainstring
datastringHex-encoded calldata. Omit for a plain value transfer.
fromstringmsg.sender to simulate from. Omit for a state-independent call; include the user's wallet when the target contract's behavior depends on the caller (e.g. WETH9.deposit credits msg.sender, ERC-20 tran…
toyes
valuestringValue to send with the call, in wei as a decimal string. Omit for 0. Example: "500000000000000000" for 0.5 ETH.

No output schema declared.

No examples provided.

Common questions

What is the Recon Crypto MCP server?

Recon Crypto MCP is listed in the public MCP registry as io.github.szhygulin/recon-crypto-mcp. Self-custodial crypto portfolio: read EVM DeFi, sign on Ledger via WalletConnect. This page covers its npm package (recon-crypto-mcp).

Is the Recon Crypto MCP server safe to use?

Recon Crypto MCP scores 79 out of 100 on VerifyMCP. We recorded 2 known advisories against it as of 20 September 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the Recon Crypto MCP server expose?

Recon Crypto MCP exposes 44 tools: get_lending_positions, get_lp_positions, get_health_alerts, simulate_position_change, check_contract_security, and 39 more. Their descriptions and schemas cost roughly 5,755 tokens of context every time the server is loaded.

Is the Recon Crypto MCP server still maintained?

Recon Crypto MCP is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the Recon Crypto MCP server under?

Recon Crypto MCP declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.