{"name":"io.github.szhygulin/recon-crypto-mcp","slug":"szhygulin-recon-crypto-mcp","title":"Recon Crypto MCP","description":"Self-custodial crypto portfolio: read EVM DeFi, sign on Ledger via WalletConnect.","url":"https://mcp.market/server/szhygulin-recon-crypto-mcp","rating":null,"grade":"A","score":85,"certified":false,"status":"active","category":"finance","tags":["finance"],"presence":{"score":33,"stars":4,"forks":2,"downloads_week":56,"last_push_at":"2026-09-17T17:33:00.000Z","license":"NOASSERTION"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/szhygulin/recon-crypto-mcp","website":"https://github.com/szhygulin/recon-crypto-mcp","version":"0.3.1","remotes":[],"packages":[{"registryType":"npm","registryBaseUrl":"https://registry.npmjs.org","identifier":"recon-crypto-mcp","version":"0.3.1","transport":{"type":"stdio"},"environmentVariables":[{"description":"Custom Ethereum RPC endpoint (alternative to RPC_PROVIDER + RPC_API_KEY).","name":"ETHEREUM_RPC_URL"},{"description":"Custom Arbitrum RPC endpoint.","name":"ARBITRUM_RPC_URL"},{"description":"Custom Polygon RPC endpoint.","name":"POLYGON_RPC_URL"},{"description":"Custom Base RPC endpoint.","name":"BASE_RPC_URL"},{"description":"RPC provider name: 'infura' or 'alchemy'. Used together with RPC_API_KEY.","name":"RPC_PROVIDER"},{"description":"API key for the chosen RPC_PROVIDER.","isSecret":true,"name":"RPC_API_KEY"},{"description":"Etherscan API key for contract verification lookups.","isSecret":true,"name":"ETHERSCAN_API_KEY"},{"description":"1inch Developer Portal API key. Enables 1inch quote comparison in get_swap_quote.","isSecret":true,"name":"ONEINCH_API_KEY"},{"description":"WalletConnect Cloud project ID. Required for Ledger Live signing via WalletConnect.","isSecret":true,"name":"WALLETCONNECT_PROJECT_ID"}]}],"tools":[{"name":"check_contract_security","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"check_permission_risks","description":"Enumerate privileged roles on a contract (Ownable.owner, AccessControl hints) and classify holders as EOA, Gnosis Safe multisig, or TimelockController.","write_action":false,"price_micros":0,"input_schema":null},{"name":"estimate_staking_yield","description":"Project annual yield on a hypothetical staking amount for a given protocol (Lido or EigenLayer) using current APRs.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_compound_positions","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_health_alerts","description":"Check for Aave V3 lending positions approaching liquidation. Returns positions whose health factor is below the given threshold (default 1.5).","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_ledger_status","description":"Report whether a WalletConnect session with Ledger Live is active, which wallet it's connected to, and which accounts are exposed.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_lending_positions","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_lp_positions","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_morpho_positions","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_portfolio_summary","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_protocol_risk_score","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_staking_positions","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_staking_rewards","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_swap_quote","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_token_balance","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_token_price","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_transaction_status","description":"Poll a transaction's status via the chain's RPC. Returns pending / success / failed, or unknown if the node hasn't seen it yet.","write_action":false,"price_micros":0,"input_schema":null},{"name":"pair_ledger_live","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"prepare_aave_borrow","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"prepare_aave_repay","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"prepare_aave_supply","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"prepare_aave_withdraw","description":"Build an unsigned Aave V3 withdraw transaction. Pass `amount: \"max\"` to withdraw the entire aToken balance.","write_action":false,"price_micros":0,"input_schema":null},{"name":"prepare_compound_borrow","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"prepare_compound_repay","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"prepare_compound_supply","description":"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`.","write_action":false,"price_micros":0,"input_schema":null},{"name":"prepare_compound_withdraw","description":"Build an unsigned Compound V3 withdraw transaction. Pass `amount: \"max\"` to withdraw the full supplied balance.","write_action":false,"price_micros":0,"input_schema":null},{"name":"prepare_eigenlayer_deposit","description":"Build an unsigned EigenLayer StrategyManager.depositIntoStrategy transaction. Includes an ERC-20 approve step if needed.","write_action":false,"price_micros":0,"input_schema":null},{"name":"prepare_lido_stake","description":"Build an unsigned Lido stake transaction (wraps ETH into stETH via stETH.submit). The tx's value field is the ETH amount to stake.","write_action":false,"price_micros":0,"input_schema":null},{"name":"prepare_lido_unstake","description":"Build an unsigned Lido withdrawal request transaction. Wraps `requestWithdrawals` on the Lido Withdrawal Queue and includes an approve step if needed.","write_action":false,"price_micros":0,"input_schema":null},{"name":"prepare_morpho_borrow","description":"Build an unsigned Morpho Blue borrow transaction. Requires pre-existing collateral in the market.","write_action":false,"price_micros":0,"input_schema":null},{"name":"prepare_morpho_repay","description":"Build an unsigned Morpho Blue repay transaction. Includes an approve step if needed. Explicit amount only — \"max\" is not supported.","write_action":false,"price_micros":0,"input_schema":null},{"name":"prepare_morpho_supply","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"prepare_morpho_supply_collateral","description":"Build an unsigned Morpho Blue supplyCollateral transaction — adds collateral to a market. Includes an approve step if needed.","write_action":false,"price_micros":0,"input_schema":null},{"name":"prepare_morpho_withdraw","description":"Build an unsigned Morpho Blue withdraw transaction (withdraws supplied loan token). Explicit amount only — \"max\" is not supported; query your position first.","write_action":false,"price_micros":0,"input_schema":null},{"name":"prepare_morpho_withdraw_collateral","description":"Build an unsigned Morpho Blue withdrawCollateral transaction — removes collateral from a market. Explicit amount only.","write_action":false,"price_micros":0,"input_schema":null},{"name":"prepare_native_send","description":"Build an unsigned native-coin send transaction (ETH on Ethereum/Arbitrum). Pass a human-readable amount like \"0.5\".","write_action":true,"price_micros":0,"input_schema":null},{"name":"prepare_swap","description":"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`.","write_action":false,"price_micros":0,"input_schema":null},{"name":"prepare_token_send","description":"Build an unsigned ERC-20 transfer transaction. Pass `amount: \"max\"` to send the full balance (resolved at build time).","write_action":true,"price_micros":0,"input_schema":null},{"name":"request_capability","description":"File a capability request against the recon-crypto-mcp GitHub repository when the user asks for something this server cannot do","write_action":false,"price_micros":0,"input_schema":null},{"name":"resolve_ens_name","description":"Resolve an ENS name (e.g. vitalik.eth) to an Ethereum address via mainnet ENS resolver. Returns null if unregistered.","write_action":false,"price_micros":0,"input_schema":null},{"name":"reverse_resolve_ens","description":"Reverse-resolve an Ethereum address to its primary ENS name. Returns null if no primary name is set.","write_action":false,"price_micros":0,"input_schema":null},{"name":"send_transaction","description":"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.","write_action":true,"price_micros":0,"input_schema":null},{"name":"simulate_position_change","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"simulate_transaction","description":"Run an eth_call against the chain's RPC to simulate a transaction without signing or broadcasting it.","write_action":true,"price_micros":0,"input_schema":null}],"scan":{"score":85,"grade":"A","scanned_at":"2026-09-27T22:34:32.456Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-27T22:34:32.426Z","components":{"code":{"score":25,"max":25,"notes":["133 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":6,"max":15,"notes":["static API keys via environment variables"]},"maintenance":{"score":15,"max":15,"notes":["last push 10 days ago"]},"identity":{"score":9,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"recon-crypto-mcp","version":"0.3.1","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":8,"publishedAt":"2026-04-14T05:21:42.121Z","repositoryUrl":"git+https://github.com/szhygulin/recon-crypto-mcp.git","weeklyDownloads":56}],"repo":{"found":true,"owner":"szhygulin","repo":"recon-crypto-mcp","archived":false,"pushedAt":"2026-09-17T17:33:00Z","stars":4,"forks":2,"openIssues":39,"ownerType":"Organization","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/285755565?v=4","ownerCreatedAt":"2015-07-08T20:58:40Z","license":"NOASSERTION"},"icon":{"url":"https://avatars.githubusercontent.com/u/285755565?v=4&s=128","source":"github"},"presence":{"stars":4,"forks":2,"downloadsWeek":56,"license":"NOASSERTION","lastPushAt":"2026-09-17T17:33:00.000Z","score":33}}}},"grade_history":[],"reviews":[]}