What Chain Information Can I Retrieve Using the Arbitrum MCP Server: A Complete Guide

The Arbitrum MCP Server exposes a comprehensive suite of tools that let you query everything from static chain catalogs and ArbOS versions to real-time batch posting health, assertion status, gas prices, and raw block data.

The dewanshparashar/arbitrum-mcp repository implements a Model Context Protocol (MCP) server that bridges AI assistants with the Arbitrum ecosystem. When exploring what chain information can be retrieved using the Arbitrum MCP Server, you gain access to three distinct data layers: static metadata from the Orbit chains manifest, dynamic health metrics from RPC endpoints, and low-level blockchain state directly from the network.

Chain Catalog and Metadata Queries

Static chain information is sourced from the ChainLookupService, which maintains the latest orbit-chain manifest from the Off-chain Labs repository. This layer provides discovery and descriptive data for every public Orbit chain.

Listing All Available Chains

Retrieve a complete catalog of public Orbit chains—including Xai, Superposition, and others—together with their human-readable names. This maps to the list_chains tool, which internally calls ChainLookupService.listChainNames() in src/services/chain-lookup.ts.

{
  "method": "callTool",
  "params": { "name": "list_chains", "arguments": {} }
}

Searching Chains by Name or ID

Find specific chains using partial name matches, slugs, or numeric chain IDs. The search_chains tool leverages ChainLookupService.searchChains() to return fuzzy matches from the manifest.

{
  "method": "callTool",
  "params": { "name": "search_chains", "arguments": { "query": "xai" } }
}

Detailed Chain Records and Contract Addresses

Retrieve comprehensive JSON metadata for any chain, including its chain ID, RPC URL, explorer URL, native token details, bridge contract addresses (Ethereum bridge and token bridge), UI hints (color, logo), and boolean flags (isArbitrum, isMainnet, isTestnet, isCustom). The chain_info tool calls ChainLookupService.findChainByName(), while get_rollup_address specifically extracts the rollup contract address for contract-level queries.

{
  "method": "callTool",
  "params": { "name": "chain_info", "arguments": { "chainName": "Arbitrum One" } }
}
{
  "method": "callTool",
  "params": { "name": "get_rollup_address", "arguments": { "chainName": "Xai" } }
}

Real-Time Chain Health and Status

Dynamic operational data is fetched by the ArbitrumChainClient (src/clients/arbitrum-chain-client.ts), which communicates directly with Arbitrum RPC endpoints. This layer provides live health metrics and network status.

ArbOS Version and Software Status

Query the specific ArbOS software version running on the chain (e.g., "v2.3.1") to verify node compatibility and feature support. The arbos_version tool invokes ArbitrumChainClient.getArbOSVersion().

{
  "method": "callTool",
  "params": { "name": "arbos_version", "arguments": { "chainName": "Nova" } }
}

Batch Posting and Sequencer Health

Monitor the health of the data availability layer by retrieving the last batch posting time, current block backlog, and latest child-chain block number. The batch_posting_status tool calls ArbitrumChainClient.getBatchPostingStatus() and requires the parent RPC URL, sequencer inbox address, and bridge address for cross-layer verification.

{
  "method": "callTool",
  "params": {
    "name": "batch_posting_status",
    "arguments": {
      "chainName": "Xai",
      "parentRpcUrl": "https://eth.llamarpc.com",
      "sequencerInboxAddress": "0x....",
      "bridgeAddress": "0x...."
    }
  }
}

Assertion Status and Rollup Confirmations

Track the security state of the chain by comparing the latest created assertion against the latest confirmed assertion on the rollup contract. The assertion_status tool uses ArbitrumChainClient.getAssertionStatus() and requires the parent RPC URL and rollup contract address.

{
  "method": "callTool",
  "params": {
    "name": "assertion_status",
    "arguments": {
      "chainName": "Xai",
      "parentRpcUrl": "https://eth.llamarpc.com",
      "rollupAddress": "0x...."
    }
  }
}

Gas Prices and Network Activity

Retrieve current gas prices in both wei and Gwei to estimate transaction costs. The gas_status tool invokes ArbitrumChainClient.getGasStatus().

{
  "method": "callTool",
  "params": { "name": "gas_status", "arguments": { "chainName": "Arbitrum One" } }
}

Comprehensive Snapshots and Block Data

For complete visibility, combine multiple health metrics or fetch raw blockchain state directly.

One-Call Complete Chain Status

Retrieve a unified health snapshot bundling ArbOS version, batch posting status, assertion status, and gas prices in a single request. The comprehensive_chain_status tool calls ArbitrumChainClient.getComprehensiveChainStatus() and requires parent RPC details along with sequencer inbox, bridge, and rollup addresses.

{
  "method": "callTool",
  "params": {
    "name": "comprehensive_chain_status",
    "arguments": {
      "chainName": "Xai",
      "parentRpcUrl": "https://eth.llamarpc.com",
      "sequencerInboxAddress": "0x....",
      "bridgeAddress": "0x....",
      "rollupAddress": "0x...."
    }
  }
}

Latest Block Information

Access raw block data including hash, number, timestamp, and other header fields for the most recent block. The latest_block tool uses ArbitrumChainClient.getLatestBlock().

{
  "method": "callTool",
  "params": { "name": "latest_block", "arguments": { "chainName": "Arbitrum One" } }
}

Implementation Architecture

The retrieval capabilities are split between two core services in the dewanshparashar/arbitrum-mcp codebase.

ChainLookupService (src/services/chain-lookup.ts) maintains the class of the same name, which fetches the latest orbit-chain manifest from the Off-chain Labs repository. It exposes listChainNames(), searchChains(), and findChainByName() to resolve human-readable names into technical metadata including RPC endpoints and contract addresses.

ArbitrumChainClient (src/clients/arbitrum-chain-client.ts) implements the client class that connects directly to Arbitrum RPC endpoints. It provides getArbOSVersion(), getBatchPostingStatus(), getAssertionStatus(), getGasStatus(), getComprehensiveChainStatus(), and getLatestBlock() for live network data.

The ArbitrumMCPServer class in src/index.ts registers all tools and routes requests to the appropriate service, automatically resolving chain names to RPC URLs using the lookup service.

Summary

  • Catalog Discovery: Use list_chains and search_chains to browse the Orbit chain ecosystem via ChainLookupService.
  • Static Metadata: Retrieve RPC URLs, explorer links, bridge contracts, and token details with chain_info and get_rollup_address.
  • Software Versioning: Check node compatibility by querying arbos_version for the specific ArbOS release running on the chain.
  • Operational Health: Monitor sequencer performance, batch posting backlogs, and assertion confirmations using batch_posting_status and assertion_status.
  • Network Economics: Get real-time gas prices in wei and Gwei through gas_status.
  • Complete Snapshots: Fetch unified health reports with comprehensive_chain_status or raw blockchain state with latest_block.

Frequently Asked Questions

How do I retrieve the rollup contract address for a specific Arbitrum chain?

Call the get_rollup_address tool with the chainName argument. The server resolves the name via ChainLookupService.findChainByName() in src/services/chain-lookup.ts and returns the rollup contract address stored in the chain metadata. This address is required for querying assertion status and other rollup-specific operations.

What is the difference between ChainLookupService and ArbitrumChainClient?

ChainLookupService (src/services/chain-lookup.ts) provides static metadata by fetching and caching the official Orbit chains manifest from Off-chain Labs. It handles chain discovery, search, and descriptive data like RPC URLs and explorer links. ArbitrumChainClient (src/clients/arbitrum-chain-client.ts) provides dynamic, real-time data by connecting directly to Arbitrum RPC endpoints to query ArbOS versions, gas prices, batch posting status, and block data.

Can I query batch posting status without providing contract addresses?

No. The batch_posting_status tool requires parentRpcUrl, sequencerInboxAddress, and bridgeAddress as arguments. While the server can resolve the chain's native RPC from its name via ChainLookupService, the specific L1 contract addresses for the sequencer inbox and bridge must be provided to query the L1 state for batch verification. These addresses can be obtained first by calling chain_info for the target chain.

How do I get a complete health check of an Arbitrum chain in one request?

Use the comprehensive_chain_status tool. This single call invokes ArbitrumChainClient.getComprehensiveChainStatus() in src/clients/arbitrum-chain-client.ts and returns a unified object containing the ArbOS version, batch posting status, assertion status, and gas prices. You must provide the chainName, parentRpcUrl, and the contract addresses for sequencerInbox, bridge, and rollup to enable full cross-layer verification.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →