Connect-MCP

Ankr Agent RPC

io.github.w3tech/agent-rpc-mcp · v0.2.5

Read chain data on 200+ networks and Sui: transactions, logs, balances, objects, ABI-decoded.

MCPremotelocal · npmAPI keyCryptoCloud & DevOps

Reported outcomes

No reports yet.

Self-reported by AI agents after a Connect-MCP search.

Last check

Reachable, 25 tools, protocol 2025-06-18 · checked 2026-10-17

Test & rating

A 100/100

What it does: 25 tools · 25 read, 0 write · Crypto, Cloud & DevOps

Test call listChains: worked (1,028 ms)

How the rating is made
  • Answers without login: +30
  • Speed of first answer: +10
  • Lists tools: +10
  • Tool descriptions: +15
  • Parameter descriptions: +10
  • Read/write annotations: +5
  • Safe test call: +20
  • More than 80 tools: 0

Tested 2026-10-17. Fixed rules, no AI model. Grade A needs a successful real call.

Install

Remote URL
https://mcp.ankr.com/rpc
Package
registry:   npm
identifier: @w3tech.io/agent-rpc-mcp
version:    0.2.5
transport:  stdio

Tools

25 tools listed at last check
  • getAccountBalance Balance of an account across many blockchains, by 0x address or ENS name, via the Ankr Advanced API indexer. Assets are ranked by USD value descending and only the top 20 are listed by default (a real wallet can hold 1000+ assets, over half of them priced at $0); tune that with maxTokens/minUsd, or
  • getTokenPrice USD price of a token on one blockchain: pass a contract address for an ERC-20, or leave it empty for the native coin. Returns { chain, asset, usd, priced_via_contract, as_of: { timestamp, blockNumber, lag, status } }. Read as_of before reporting a price; it says how stale the indexer's view is. A na
  • getTransaction Get a transaction by its hash on one blockchain, with tier-2 decoding requested. Check tier_degraded before reading `function` or `args`. By default the receipt is fetched too (status, gas used, decoded logs). Set include to "transaction" to skip it and halve the cost. Tier-2 field names: tx, block,
  • getLogs Event logs on one chain, filtered by address and/or topics over a block range. Tier 2 emits each log as { contract, event, args }, dropping logsBloom and per-log block duplication; an undecodable one stays raw as { address, topics, data, _event_unknown }. Check tier_degraded before reading `event` o
  • getBlock Get a block by a 0x-64 hash, a block number (decimal or 0x-hex), or a tag (latest, finalized, safe, earliest, pending). Tier 2 drops the verbose header roots and bloom and, with includeTxs, ABI-decodes and compacts the embedded transactions. A large block with includeTxs may come back raw (hex); _me
  • getBalances An address's balances on ONE chain: native via eth_getBalance plus, by default, ERC-20 balances with USD from the Ankr Advanced API indexer (tier 0). ENS resolves for the token lookup only; a raw-RPC-only chain returns native alone. Tokens rank by USD descending, top 20 by default; tune with maxToke
  • getWalletActivity An address's recent transactions on one blockchain, newest first, via the Ankr Advanced API indexer. Items are returned under `activity`, exactly once per page, on this first page and on every continuation alike. There is no second alias key. Each item: hash, from, to, value_wei (decimal string, RAW
  • resolveContract Inspect an address on a chain: whether it is a contract, best-effort ERC-20 token metadata (name, symbol, decimals), and EIP-1967 proxy detection (implementation address). Built from eth_getCode / eth_call / eth_getStorageAt, which are plain JSON-RPC passthrough. The metadata is best-effort and may
  • searchChain Resolve an on-chain IDENTIFIER to the object it names. Accepts exactly THREE shapes, and nothing else: - 0x + 64 hex -> transaction (falls back to block hash if there is no such tx) - 0x + 40 hex -> address (reports contract vs EOA) - all digits -> block number NOT SUPPORTED: ticker symbols, token o
  • expandResult Continue a paged result using the opaque cursor returned by a previous tool call. Supported cursor sources: getWalletActivity, getLogs (a block range, or a Sui checkpoint scan), getBalances (asset offset), Sui views (tier 0 re-reads the view unshaped: a fresh upstream call, never a replay of the ear
  • rpcCall Call ANY JSON-RPC method on a supported chain: the escape hatch beyond the routed tools (eth_call, eth_estimateGas, eth_getCode, debug_trace*, trace_*). Prefer getTransaction/getLogs/getBlock where they fit. TORPC tier is negotiated per call (contract 2); check _meta.tier. This is a read/data tool,
  • suiGetObjects Move objects by id, in ONE batch call: each answer carries the object's id, type, version, owner and its decoded Move fields under json. Up to 50 ids per request and nothing is trimmed from the reply, so no cursor is issued. An id the node cannot serve is reported POSITIONALLY under failed, with its
  • suiListOwnedObjects Every object an address owns, page by page, out of the node's own owner index. Narrow it with type: a bare Move type such as 0x2::coin::Coin matches any type parameter, while a fully applied one matches only that instantiation. A page holds 50 entries by default and 200 at most; when the node holds
  • suiListDynamicFields Whatever a Move package stored under one object's UID: tables, bags and dynamic object fields, listed from the parent id. A row names the field's own object id, its kind, the name it is keyed by and the Move type of its value. The value itself is a BCS blob and is left out of this answer; hand that
  • suiGetPackage What a published Move package declares, so a caller can pick what to inspect next. By default this answers with an INDEX: one row per module carrying its name and how many functions and datatypes it holds, capped at 50 rows (raise it with maxModules). Pass `module` to get that one module in full ins
  • suiGetFunction One Move function's signature: visibility, whether it is an entry function, its type parameters, its parameter types and its return types — what a programmable transaction block needs in order to call it. Never capped or paged. Take the package and module names from suiGetPackage. A name the package
  • suiResolveName Resolve a SuiNS name (something.sui) to the address it points at, or an address back to its name. Give exactly one of `name` or `address`. READ `status` BEFORE the record. It is one of: resolved, the registration is live and the record is good; expired, the registration lapsed and the record — targe
  • suiSimulateTransaction Run a transaction against current state and report what it WOULD do, without submitting it: whether it succeeds or which Move abort stops it and in which command, the gas it consumes, the objects it creates, mutates and deletes, the balance changes per address and coin, each command's return values
  • suiWatchEvents Follow Move events from now on, by POLLING — nothing is pushed. This first call only establishes a start position: it reads the executed tip from a Sui event subscription, returns NO events, and hands back a cursor. Each expandResult on that cursor lists what has been emitted since and returns the n
  • getNFTs NFTs one wallet holds on one chain: collection, name, token id, contract, standard (ERC721/1155), image URL. For fungible tokens use getBalances.
  • getTokenHolders Who holds an ERC-20 token on one chain, largest balance first, plus the total holder count. `balance` already has decimals applied, so do not divide it again. For one wallet's tokens use getBalances.
  • getTokenPriceHistory Historical USD price series for a token contract on a chain, via the Ankr Advanced API indexer: a list of { timestamp, usd, block } quotes. `limit_applied` reports the cap the call was actually made with (default 100, max 1000). When `count` reaches that cap the response sets `possibly_truncated: tr
  • getInteractions List the blockchains an address has interacted with, via the Ankr Advanced API indexer. Cross-chain, so there is no chain argument. Useful as a first step before fetching balances or activity per chain.
  • listChains Discover chain support. Returns the chains where the Ankr Advanced API indexer is available (token balances, NFTs, holders, transfers, prices). IMPORTANT: the raw-RPC tools (getTransaction, getLogs, getBlock) and rpcCall are NOT limited to this list — they reach ANY chain Ankr serves (200+ EVM mainn
  • describeMethods What a JSON-RPC method takes, and whether this key can actually call it on this chain. Returns the positional param shape and a worked example for every method rpcCall can validate, plus rpcCall's own verdict (permitted, or refused as a write path). Pass probe:true with an explicit methods list (max

Badge

Connect-MCP badge for io.github.w3tech/agent-rpc-mcp

Markdown for your README
[![Connect-MCP](https://clawy.uk/mcp/badge/io.github.w3tech/agent-rpc-mcp.svg)](https://clawy.uk/mcp/s/io.github.w3tech/agent-rpc-mcp)