# io.github.Nodeflare-app/nodeflare-mcp (npm · nodeflare-mcp)

Blockchain JSON-RPC on 23 EVM chains for AI agents - free tier, API key, or x402 pay-per-call.

- Trust score: 81/100 (high trust)
- Change this week: +1
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- npm · `nodeflare-mcp`: 81/100 (this document), [markdown](https://verifymcp.io/servers/nodeflare-app-nodeflare-mcp/nodeflare-mcp.md), [page](https://verifymcp.io/servers/nodeflare-app-nodeflare-mcp/nodeflare-mcp)

## Channel facts

- Registry: `npm`
- Package: `nodeflare-mcp`
- Version: `0.8.0`
- Transport: `stdio`

## Trust breakdown

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. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Supply Chain Security**: 87/100
  - No malware found by supply-chain analysis.
  - Only part of the dependency tree could be resolved (113 of 117), so this covers what we could see, not the whole tree.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (113 of 117), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 97/100
  - Source repository is publicly reachable at the declared URL.
  - Cryptographically verified build provenance (signed, bound to Nodeflare-app/nodeflare-mcp).
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 5 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 82/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 2669 tokens (~127/item across 21 items; 21 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add nodeflare-app-nodeflare-mcp -- npx -y nodeflare-mcp
```

### Codex

```bash
codex mcp add nodeflare-app-nodeflare-mcp -- npx -y nodeflare-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "nodeflare-app-nodeflare-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "nodeflare-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add nodeflare-app-nodeflare-mcp --command npx --arg -y --arg nodeflare-mcp
```

### Hermes

```yaml
mcp_servers:
  nodeflare-app-nodeflare-mcp:
    command: "npx"
    args: ["-y", "nodeflare-mcp"]
```

### Other

```json
{
  "mcpServers": {
    "nodeflare-app-nodeflare-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "nodeflare-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 81, +1)

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

### 2026-08-02 (score 80, +75)

- [security improvement] Install scripts: unverified → pass
- [security improvement] Provenance: unverified → pass
- [security improvement] Known CVEs: unverified → partial
- [security improvement] Malware scan: unverified → pass
- [security] The attested source repository moved: Nodeflare-app/nodeflare-mcp
- [functional regression] Security disclosure: fail → unverified
- [functional regression] Schema quality: pass → fail
- [functional improvement] Tool coverage: unverified → 100
- [functional improvement] License: unverified → pass
- [functional improvement] Schema quality: unverified → 100
- [functional improvement] Dependency health: unverified → partial
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] MCP protocol: unverified → pass
- [functional improvement] Stability: unverified → 0.23
- [functional] Schema quality: good → excellent
- [functional] Licence: MIT
- [functional] Package version: 0.2.0 → 0.8.0

### 2026-08-01 (score 5, 0)

- [functional] Package version: 0.2.0 → 0.8.0

### 2026-07-31 (score 5, −57)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 62, −18)

- [security regression] Malware scan: pass → unverified

### 2026-07-27 (score 80, +38)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-26 (score 42)

First indexed and scored.

## MCP tools (21)

### `list_chains` (~28 tokens)

List the 23 EVM chains NodeFlare serves, with chain IDs and endpoint URLs.

### `get_block_number` (~83 tokens)

Get the latest block number on a chain (decimal and hex).

Input parameters:

- `chain` (string, required): Chain to query. Accepts a slug (eth, base, arb, op, robinhood…), a common name (ethereum, arbitrum, optimism, bsc), or a numeric chain ID (1, 8453). Call list_chains for all valid values.

### `get_balance` (~123 tokens)

Get the native-token balance of an address — raw wei plus a human-readable amount in the chain's native currency. The address may be an ENS name (e.g. 'vitalik.eth').

Input parameters:

- `address` (string, required): 0x-address or ENS name
- `chain` (string, required): Chain to query. Accepts a slug (eth, base, arb, op, robinhood…), a common name (ethereum, arbitrum, optimism, bsc), or a numeric chain ID (1, 8453). Call list_chains for all valid values.

### `get_transaction_receipt` (~100 tokens)

Get the receipt of a transaction by hash (status, logs, gas used).

Input parameters:

- `chain` (string, required): Chain to query. Accepts a slug (eth, base, arb, op, robinhood…), a common name (ethereum, arbitrum, optimism, bsc), or a numeric chain ID (1, 8453). Call list_chains for all valid values.
- `hash` (string, required): 0x-transaction hash

### `eth_call` (~125 tokens)

Execute a read-only contract call (eth_call) and return the raw result.

Input parameters:

- `chain` (string, required): Chain to query. Accepts a slug (eth, base, arb, op, robinhood…), a common name (ethereum, arbitrum, optimism, bsc), or a numeric chain ID (1, 8453). Call list_chains for all valid values.
- `data` (string, required): ABI-encoded calldata (0x…)
- `from` (string): Optional caller address or ENS name
- `to` (string, required): Contract address or ENS name

### `get_logs` (~167 tokens)

Fetch contract event logs (eth_getLogs). Heavy method: needs NODEFLARE_API_KEY or an x402 wallet (X402_PRIVATE_KEY) — costs ~$0.001 via x402.

Input parameters:

- `address` (string): Contract address filter
- `chain` (string, required): Chain to query. Accepts a slug (eth, base, arb, op, robinhood…), a common name (ethereum, arbitrum, optimism, bsc), or a numeric chain ID (1, 8453). Call list_chains for all valid values.
- `fromBlock` (string, required): Hex block number or tag, e.g. '0x112a880' or 'latest'
- `toBlock` (string, required): Hex block number or tag
- `topics` (array): Topic filters

### `rpc_call` (~138 tokens)

Make any JSON-RPC call on any supported chain. Heavy methods (eth_getLogs, trace_*, debug_*) need NODEFLARE_API_KEY or an x402 wallet.

Input parameters:

- `chain` (string, required): Chain to query. Accepts a slug (eth, base, arb, op, robinhood…), a common name (ethereum, arbitrum, optimism, bsc), or a numeric chain ID (1, 8453). Call list_chains for all valid values.
- `method` (string, required): JSON-RPC method name, e.g. 'eth_gasPrice'
- `params` (array): JSON-RPC params array

### `get_transaction` (~101 tokens)

Get a transaction by its hash (from, to, value, input, block, gas).

Input parameters:

- `chain` (string, required): Chain to query. Accepts a slug (eth, base, arb, op, robinhood…), a common name (ethereum, arbitrum, optimism, bsc), or a numeric chain ID (1, 8453). Call list_chains for all valid values.
- `hash` (string, required): 0x-transaction hash

### `get_block` (~141 tokens)

Get a block by number or tag (e.g. 'latest', 'finalized', or a hex number). Set fullTransactions to include full tx objects instead of hashes.

Input parameters:

- `block` (string): Hex block number or tag ('latest', 'finalized', 'safe', 'earliest')
- `chain` (string, required): Chain to query. Accepts a slug (eth, base, arb, op, robinhood…), a common name (ethereum, arbitrum, optimism, bsc), or a numeric chain ID (1, 8453). Call list_chains for all valid values.
- `fullTransactions` (boolean): Include full transaction objects

### `get_gas_price` (~100 tokens)

Get current gas pricing on a chain: base gas price and the suggested priority fee (EIP-1559), both in wei (hex).

Input parameters:

- `chain` (string, required): Chain to query. Accepts a slug (eth, base, arb, op, robinhood…), a common name (ethereum, arbitrum, optimism, bsc), or a numeric chain ID (1, 8453). Call list_chains for all valid values.

### `get_token_balance` (~122 tokens)

Get an ERC-20 token balance for an address, returned both raw and human-readable (uses the token's decimals and symbol).

Input parameters:

- `address` (string, required): Holder address or ENS name to check
- `chain` (string, required): Chain to query. Accepts a slug (eth, base, arb, op, robinhood…), a common name (ethereum, arbitrum, optimism, bsc), or a numeric chain ID (1, 8453). Call list_chains for all valid values.
- `token` (string, required): ERC-20 contract address

### `get_token_metadata` (~103 tokens)

Get ERC-20 token metadata: name, symbol, decimals and total supply (raw + human-readable).

Input parameters:

- `chain` (string, required): Chain to query. Accepts a slug (eth, base, arb, op, robinhood…), a common name (ethereum, arbitrum, optimism, bsc), or a numeric chain ID (1, 8453). Call list_chains for all valid values.
- `token` (string, required): ERC-20 contract address

### `resolve_ens` (~79 tokens)

Resolve an ENS name to an address (forward), or a 0x-address to its primary ENS name (reverse). ENS is read from Ethereum mainnet.

Input parameters:

- `name` (string, required): An ENS name like 'vitalik.eth' to resolve to an address, or a 0x-address to reverse-resolve to its primary ENS name

### `get_multichain_balances` (~330 tokens)

Get native + ERC-20 token balances for one address across many of the 23 EVM chains in a SINGLE call — including young chains (Robinhood, Plasma, Ink) that Alchemy/Moralis omit. With an x402 wallet (X402_PRIVATE_KEY) this is paid per request (~$0.0003/chain); otherwise it uses the free public tier.

Input parameters:

- `address` (string, required): 0x-address to look up
- `chains` (array): Chains to include — slug, name, or chain ID; defaults to all 23
- `discover` (boolean): Auto-discover the ERC-20 tokens the address holds via Transfer logs. Needs an x402 wallet (heavy method). Comprehensive on young chains; large chains cap the scan — narrow with fromBlock.
- `fromBlock` (string): Start block for discovery (hex or 'earliest'); narrow the window on high-history chains
- `includeDust` (boolean): Discovery only: keep dust balances below 1e-9 units. Default false.
- `includeSpam` (boolean): Discovery only: keep tokens with no DefiLlama price (likely spam/airdrops) on price-covered chains. Default false.
- `minUsd` (number): Discovery only: drop discovered tokens worth less than this USD value on price-covered chains (default 0.01, filters near-worthless spam). Set 0 to keep any priced token.
- `tokens` (object): ERC-20 contract addresses per chain, e.g. { base: ['0x833589…'] }

### `get_token_allowances` (~129 tokens)

ERC-20 approvals a wallet has granted (what it approved and for how much) across many of the 23 EVM chains in ONE call — including young chains (Robinhood, Plasma, Ink) that revoke.cash-style tools skip. Scans Approval logs, reads the live allowance, drops revoked ones, flags unlimited approvals. Heavy: needs NODEFLARE_API_KEY or X402_PRIVATE_KEY.

Input parameters:

- `address` (string, required): 0x owner/approver address to look up
- `chains` (array): Chains to include — slug/name/ID; defaults to all 23

### `get_wallet_report` (~129 tokens)

The full agent-ready 'know this wallet' report in ONE call: native + ERC-20 balances (USD-priced), a rolled-up total + top holdings, AND the active token approvals (revoke risk) across many of the 23 EVM chains — including young chains big indexers skip. The approvals half is heavy: needs NODEFLARE_API_KEY or X402_PRIVATE_KEY (balances/USD come back either way).

Input parameters:

- `address` (string, required): 0x-address to report on
- `chains` (array): Chains to include — slug/name/ID; defaults to all 23

### `check_token_safety` (~139 tokens)

Risk-check an ERC-20 before trading it: metadata, contract + ownership status, upgradeable-proxy detection, holder concentration, and a transfer/honeypot simulation → risk signals + a score. The deep checks (concentration, honeypot) are heavy: needs NODEFLARE_API_KEY or X402_PRIVATE_KEY. Works on young chains (Zircuit, Robinhood, Plasma, Ink) that big indexers leave empty.

Input parameters:

- `chain` (string, required): Chain — slug (eth, base, robinhood…), name, or chain ID
- `token` (string, required): 0x ERC-20 contract address to check

### `simulate_transaction` (~144 tokens)

Transaction pre-flight on one chain: will this tx revert (and why), how much gas, and which tokens/ETH move? The asset-change tracing is heavy: needs NODEFLARE_API_KEY or X402_PRIVATE_KEY (revert/gas come back either way). Built for agents checking a tx before broadcasting.

Input parameters:

- `chain` (string, required): Chain — slug/name/ID
- `data` (string): 0x calldata (default 0x)
- `from` (string): Optional 0x sender address
- `to` (string, required): 0x target/contract address
- `value` (string): Hex wei to send (default 0x0)

### `onchain_answer` (~151 tokens)

Onchain Answer Engine: ask a plain-English question about any wallet or token across the 23 EVM chains and get back a CITED verdict in one call — 'is token 0x… on <chain> a scam?', 'what does wallet 0x… hold?'. NodeFlare plans the on-chain lookups, runs them on its own nodes, and synthesizes a sourced answer. Paid: needs NODEFLARE_API_KEY or X402_PRIVATE_KEY (no free anonymous tier — it runs on a GPU).

Input parameters:

- `question` (string, required): Natural-language question about a wallet or token, e.g. 'Is token 0xdAC17…ec7 on eth a scam?'

### `get_token_price` (~157 tokens)

Current USD price of an ERC-20 token from DefiLlama (free, keyless): price + symbol + confidence, or null for unlisted/thin-market tokens. Well-covered chains only (eth, base, bnb, arb, op, avax, polygon, linea, mantle, sonic, unichain, sei, cronos).

Input parameters:

- `chain` (string, required): Chain to query. Accepts a slug (eth, base, arb, op, robinhood…), a common name (ethereum, arbitrum, optimism, bsc), or a numeric chain ID (1, 8453). Call list_chains for all valid values.
- `token` (string, required): 0x ERC-20 contract address

### `compare_gas` (~80 tokens)

Compare current gas price ACROSS chains in one call — gwei per chain, cheapest first, so an agent can pick where to transact. Defaults to the majors (eth, base, arb, op, bnb, polygon); pass chains to override.

Input parameters:

- `chains` (array): Chains to compare — slug/name/ID; defaults to the majors

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/nodeflare-app-nodeflare-mcp/nodeflare-mcp#diagnostics

## Score history

- 2026-08-03: 81
- 2026-08-02: 80
- 2026-08-01: 5
- 2026-07-31: 5
- 2026-07-30: 62
- 2026-07-28: 80
- 2026-07-27: 80
- 2026-07-26: 42

## Links

- npm package: https://www.npmjs.com/package/nodeflare-mcp
- Socket report: https://socket.dev/npm/package/nodeflare-mcp
- Repository: https://github.com/Nodeflare-app/nodeflare-mcp
- Changelog RSS feed: https://verifymcp.io/servers/nodeflare-app-nodeflare-mcp/nodeflare-mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/nodeflare-app-nodeflare-mcp/nodeflare-mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/nodeflare-app-nodeflare-mcp/nodeflare-mcp
