Recon Crypto MCP
NPM · RECON-CRYPTO-MCP · SCANNED SEP 20
Self-custodial crypto portfolio: read EVM DeFi, sign on Ledger via WalletConnect.
Available components
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
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
claude mcp add szhygulin-recon-crypto-mcp -- npx -y recon-crypto-mcp
{
"mcpServers": {
"szhygulin-recon-crypto-mcp": {
"command": "npx",
"args": [
"-y",
"recon-crypto-mcp"
]
}
}
} {
"servers": {
"szhygulin-recon-crypto-mcp": {
"command": "npx",
"args": [
"-y",
"recon-crypto-mcp"
]
}
}
} codex mcp add szhygulin-recon-crypto-mcp -- npx -y recon-crypto-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"szhygulin-recon-crypto-mcp": {
"type": "local",
"command": [
"npx",
"-y",
"recon-crypto-mcp"
],
"enabled": true
}
}
} openclaw mcp add szhygulin-recon-crypto-mcp --command npx --arg -y --arg recon-crypto-mcp
mcp_servers:
szhygulin-recon-crypto-mcp:
command: "npx"
args: ["-y", "recon-crypto-mcp"] {
"McpServers": {
"szhygulin-recon-crypto-mcp": {
"Transport": "stdio",
"Command": "npx",
"Arguments": [
"-y",
"recon-crypto-mcp"
]
}
}
} assistant mcp add szhygulin-recon-crypto-mcp -t stdio -c npx -a -y recon-crypto-mcp
{
"mcpServers": {
"szhygulin-recon-crypto-mcp": {
"command": "npx",
"args": [
"-y",
"recon-crypto-mcp"
]
}
}
} 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.
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 →
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 →
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.
| Name | Type | Req | Description |
|---|---|---|---|
| address | string | yes | – |
| chain | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| address | string | yes | – |
| chain | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | number | yes | Human-readable decimal amount of the staked asset (ETH for lido, LST for eigenlayer). Example: 1.5 for 1.5 ETH. |
| protocol | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| chains | array | – | – |
| wallet | string | yes | – |
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).
| Name | Type | Req | Description |
|---|---|---|---|
| threshold | number | – | – |
| wallet | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| chains | array | – | – |
| wallet | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| chains | array | – | – |
| wallet | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| chain | string | – | – |
| marketIds | array | – | – |
| wallet | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| chains | array | – | – |
| wallet | string | – | – |
| wallets | array | – | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| protocol | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| chains | array | – | – |
| wallet | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| period | string | – | – |
| wallet | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| acknowledgeHighSlippage | boolean | – | Opt-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. |
| amount | string | yes | Human-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. |
| fromChain | string | yes | – |
| fromToken | – | yes | – |
| fromTokenDecimals | integer | – | Optional decimals hint for fromToken if on-chain lookup fails (rare). Native is 18. |
| slippageBps | integer | – | Slippage 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… |
| toChain | – | yes | – |
| toToken | – | yes | – |
| wallet | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| chain | string | – | – |
| token | – | yes | – |
| wallet | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| chain | string | yes | – |
| token | – | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| chain | string | yes | – |
| txHash | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | string | yes | Human-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. |
| asset | string | yes | – |
| chain | string | – | – |
| wallet | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | string | yes | Human-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. |
| approvalCap | string | – | Cap 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.… |
| asset | string | yes | – |
| chain | string | – | – |
| wallet | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | string | yes | Human-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. |
| approvalCap | string | – | Cap 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.… |
| asset | string | yes | – |
| chain | string | – | – |
| wallet | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | string | yes | Human-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. |
| asset | string | yes | – |
| chain | string | – | – |
| wallet | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | string | yes | Human-readable decimal amount of the market base token, NOT raw wei/base units. Example: "100" for 100 USDC. |
| chain | string | – | – |
| market | string | yes | – |
| wallet | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | string | yes | Human-readable decimal amount of the market base token, NOT raw wei/base units. Example: "100" for 100 USDC. |
| approvalCap | string | – | Cap 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.… |
| chain | string | – | – |
| market | string | yes | – |
| wallet | string | yes | – |
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`.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | string | yes | Human-readable decimal amount of `asset`, NOT raw wei/base units. Example: "10" for 10 USDC. Pass "max" for full-balance withdraw. |
| approvalCap | string | – | Cap 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.… |
| asset | string | yes | – |
| chain | string | – | – |
| market | string | yes | Comet market address (e.g. cUSDCv3). Discover via get_compound_positions or the Compound registry. |
| wallet | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | string | yes | Human-readable decimal amount of `asset`, NOT raw wei/base units. Example: "10" for 10 USDC. Pass "max" for full-balance withdraw. |
| asset | string | yes | – |
| chain | string | – | – |
| market | string | yes | Comet market address (e.g. cUSDCv3). Discover via get_compound_positions or the Compound registry. |
| wallet | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | string | yes | Human-readable decimal amount of `token`, NOT raw wei/base units. Example: "0.5" for 0.5 stETH. |
| approvalCap | string | – | Cap 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.… |
| strategy | string | yes | – |
| token | – | yes | – |
| wallet | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| amountEth | string | yes | Human-readable ETH amount, NOT raw wei. Example: "0.5" for 0.5 ETH. |
| wallet | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| amountStETH | string | yes | Human-readable stETH amount, NOT raw wei. Example: "0.5" for 0.5 stETH (18 decimals). |
| approvalCap | string | – | Cap 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.… |
| wallet | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | string | yes | Human-readable decimal amount, NOT raw wei/base units. Example: "10" for 10 USDC. Pass "max" for full-balance withdraw/repay. |
| chain | string | – | – |
| marketId | string | yes | – |
| wallet | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | string | yes | Human-readable decimal amount, NOT raw wei/base units. Example: "10" for 10 USDC. Pass "max" for full-balance withdraw/repay. |
| approvalCap | string | – | Cap 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.… |
| chain | string | – | – |
| marketId | string | yes | – |
| wallet | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | string | yes | Human-readable decimal amount, NOT raw wei/base units. Example: "10" for 10 USDC. Pass "max" for full-balance withdraw/repay. |
| approvalCap | string | – | Cap 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.… |
| chain | string | – | – |
| marketId | string | yes | – |
| wallet | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | string | yes | Human-readable decimal amount, NOT raw wei/base units. Example: "10" for 10 USDC. Pass "max" for full-balance withdraw/repay. |
| approvalCap | string | – | Cap 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.… |
| chain | string | – | – |
| marketId | string | yes | – |
| wallet | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | string | yes | Human-readable decimal amount, NOT raw wei/base units. Example: "10" for 10 USDC. Pass "max" for full-balance withdraw/repay. |
| chain | string | – | – |
| marketId | string | yes | – |
| wallet | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | string | yes | Human-readable decimal amount, NOT raw wei/base units. Example: "10" for 10 USDC. Pass "max" for full-balance withdraw/repay. |
| chain | string | – | – |
| marketId | string | yes | – |
| wallet | string | yes | – |
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".
| Name | Type | Req | Description |
|---|---|---|---|
| amount | string | yes | Human-readable native-asset amount, NOT raw wei. Example: "0.5" for 0.5 ETH (or 0.5 MATIC on polygon). |
| chain | string | – | – |
| to | string | yes | – |
| wallet | string | yes | – |
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`.
| Name | Type | Req | Description |
|---|---|---|---|
| acknowledgeHighSlippage | boolean | – | Opt-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. |
| amount | string | yes | Human-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. |
| fromChain | string | yes | – |
| fromToken | – | yes | – |
| fromTokenDecimals | integer | – | Optional decimals hint for fromToken if on-chain lookup fails (rare). Native is 18. |
| slippageBps | integer | – | Slippage 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… |
| toChain | – | yes | – |
| toToken | – | yes | – |
| wallet | string | yes | – |
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).
| Name | Type | Req | Description |
|---|---|---|---|
| amount | string | yes | Human-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. |
| chain | string | – | – |
| to | – | yes | – |
| token | string | yes | – |
| wallet | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| agentName | string | – | MCP client identifier (e.g. 'Claude Code', 'Cursor'). Helps triage. |
| category | string | – | Rough bucket to help triage. |
| context | object | – | – |
| description | string | yes | What 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. |
| summary | string | yes | One-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.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| address | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| confirmed | boolean | yes | Must 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… |
| handle | string | yes | Opaque 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.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | – |
| amountUsd | number | yes | – |
| asset | string | yes | – |
| chain | string | – | – |
| wallet | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| chain | string | – | – |
| data | string | – | Hex-encoded calldata. Omit for a plain value transfer. |
| from | string | – | msg.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… |
| to | – | yes | – |
| value | string | – | Value 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.
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.