get_proxy is the tool that decides whether the rest of the session is wasted — the address you were handed is often not where the logic lives, and read_contract against the wrong one fails in a way that reads like a network problem. The read path is complete but literal: read_contract asks you to spell out inner struct types rather than infer them from the ABI it can already fetch.
An onchain read client with ten tools: contract state and metadata, event logs, transactions, token balances and blocks, each scoped to a named network.
- Contract state read by method with explicit input and output types, including the inner types of a tuple or nested struct
- The proxy address behind a contract, its ABI, and its verified source code
- Event logs for a network filtered by address, topic, optional topics and a block range
- An event topic signature built from the event name and its argument types, which is what the log filter needs
- Transaction history for an address, optionally narrowed to one contract, one method id or a starting block
- Full detail on a single transaction by hash, and on a block by number or hash
- Every token balance held by an address on a given network
A Bankless API token in BANKLESS_API_TOKEN, and npx on your PATH.
One command plus a key — npx @bankless/onchain-mcp, then supply credentials
