# Ekx Blockscout

> Reading onchain data with Blockscout across Base, Base Sepolia and Unichain — the MCP server, REST API for transactions and token transfers, contract verification, and why we prefer it over Etherscan for reads. Use when inspecting a transaction, listing token transfers, checking whether a contract is verified, or building a link to an explorer in the UI.

- Skill: `ekinoxis-evm/ekx-blockscout` (Agent Skill)
- Install (CLI): `npx skillmds@latest add ekinoxis-evm/ekx-blockscout`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ekinoxis-evm/ekx-blockscout/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: Ekinoxis-evm (https://skillmd.com/u/ekinoxis-evm)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/ekinoxis-evm/ekx-blockscout

---


# Blockscout

**Our default block explorer for reads.** Configured as an MCP server in the onchain repos.

---

## Instances

| Network | URL |
|---|---|
| Base mainnet | `https://base.blockscout.com` |
| Base Sepolia | `https://base-sepolia.blockscout.com` |
| Ethereum Sepolia | `https://eth-sepolia.blockscout.com` |
| Unichain | `https://unichain.blockscout.com` |
| Unichain Sepolia | `https://unichain-sepolia.blockscout.com` |

```bash
BLOCKSCOUT_PRO_API_KEY=    # optional — higher rate limits
```

---

## Why Blockscout over Etherscan

1. **It has an MCP server**, so Claude can read chain state directly during development.
2. **Open API, generous unauthenticated limits** — Etherscan's free tier throttles hard.
3. **Verified source is readable via API**, useful for auditing a dependency mid-task.

We still verify contracts on **both** Blockscout and Basescan — Basescan is what most
users click through to, Blockscout is what our tooling reads.

---

## REST basics

```bash
# Token transfers for an address
curl "https://base-sepolia.blockscout.com/api/v2/addresses/$ADDR/token-transfers"

# A transaction
curl "https://base-sepolia.blockscout.com/api/v2/transactions/$TXHASH"

# Is this contract verified?
curl "https://base-sepolia.blockscout.com/api/v2/smart-contracts/$ADDR"
```

The `/api/v2/` namespace is the current one. `/api?module=…` is the Etherscan-compatible
legacy shim — it works, but returns less.

---

## Verifying from Foundry

```bash
forge verify-contract <ADDR> src/Auction.sol:Auction \
  --verifier blockscout \
  --verifier-url https://base-sepolia.blockscout.com/api
```

No API key needed for Blockscout verification. See [`../ekx-foundry/SKILL.md`](../ekx-foundry/SKILL.md).

---

## Explorer links in the UI

```ts
const EXPLORER: Record<number, string> = {
  8453:  "https://base.blockscout.com",
  84532: "https://base-sepolia.blockscout.com",
};
export const txUrl = (hash: string) => `${EXPLORER[CHAIN.id]}/tx/${hash}`;
```

Always link the transaction after a write completes. Users expect to verify their own
transaction — it is the cheapest trust signal available.

---

## Gotchas

1. **Indexing lag.** A transaction is queryable on-chain before Blockscout has indexed it. Poll the RPC for the receipt ([`../ekx-viem-wagmi/SKILL.md`](../ekx-viem-wagmi/SKILL.md)), not the explorer.
2. **Instance per network.** There is no single multi-chain endpoint.
3. **Unverified contracts** return no ABI — verify as part of deploying, not later.
4. **Rate limits without a Pro key** are fine for development, thin for a production polling loop. Cache.

