| name | eth-tools |
| description | Ethereum development tools for contract exploration and testing. Use when inspecting Gnars DAO contracts, checking auction/treasury state, testing transactions locally, or scripting onchain reads via cast/anvil/viem. Covers Foundry cast commands, abi.ninja, Blockscout MCP, RPC providers, block explorers, and fork testing. |
Ethereum Development Tools
What You Probably Got Wrong
Blockscout MCP server exists: https://mcp.blockscout.com/mcp — gives AI agents structured blockchain data via Model Context Protocol.
abi.ninja is essential: https://abi.ninja — paste any verified contract address, get a UI to call any function. Zero setup. Supports mainnet + all major L2s. Perfect for contract exploration.
Foundry is the default for new projects in 2026. Not Hardhat. 10-100x faster tests, Solidity-native testing, built-in fuzzing.
Tool Discovery Pattern for AI Agents
When an agent needs to interact with Ethereum:
- Read operations: Blockscout MCP, Etherscan API, or
cast call
- Write operations: Foundry
cast send or viem
- Contract exploration: abi.ninja (browser) or
cast interface (CLI)
- Testing: Fork mainnet/Base with
anvil, test locally
- Deployment:
forge create or forge script
- Verification:
forge verify-contract or Etherscan API
Essential Foundry cast Commands
cast call 0xAddr "balanceOf(address)(uint256)" 0xWallet --rpc-url $RPC
cast call 0xAddr "totalSupply()(uint256)" --rpc-url $RPC
cast send 0xAddr "transfer(address,uint256)" 0xTo 1000000 \
--private-key $KEY --rpc-url $RPC
cast gas-price --rpc-url $RPC
cast base-fee --rpc-url $RPC
cast 4byte-decode 0xa9059cbb...
cast resolve-name vitalik.eth --rpc-url $RPC
cast interface 0xAddr --etherscan-api-key $KEY --chain base
cast balance 0xAddr --rpc-url $RPC
cast to-wei 1.5 ether
cast from-wei 1500000000000000000
cast block latest --rpc-url $RPC
cast block-number --rpc-url $RPC
cast logs --address 0xAddr --from-block 12345 --to-block latest --rpc-url $RPC
Gnars DAO Contract Exploration Examples
export BASE_RPC="https://mainnet.base.org"
cast call 0x494eaa55ecf6310658b8fc004b0888dcb698097f \
"auction()(uint256,uint256,address,uint256,uint256,bool)" \
--rpc-url $BASE_RPC
cast call 0x880fb3cf5c6cc2d7dfc13a993e839a9411200c17 \
"totalSupply()(uint256)" --rpc-url $BASE_RPC
cast balance 0x72ad986ebac0246d2b3c565ab2a1ce3a14ce6f88 --rpc-url $BASE_RPC
cast call 0x3dd4e53a232b7b715c9ae455f4e732465ed71b4c \
"getProposal(bytes32)" PROPOSAL_ID --rpc-url $BASE_RPC
cast call 0x880fb3cf5c6cc2d7dfc13a993e839a9411200c17 \
"getVotes(address)(uint256)" 0xVOTER_ADDRESS --rpc-url $BASE_RPC
Fork Testing with Anvil
Fork Base locally to test against real contracts with fake ETH:
anvil --fork-url https://mainnet.base.org
anvil --fork-url https://mainnet.base.org --fork-block-number 12345678
Use cases for Gnars DAO:
- Test bidding on auctions without spending real ETH
- Simulate proposal creation and voting
- Debug contract interactions locally
- Verify frontend data fetching against forked state
Blockscout MCP Server
URL: https://mcp.blockscout.com/mcp
A Model Context Protocol server for structured blockchain data:
- Transaction, address, contract queries
- Token info and balances
- Smart contract interaction helpers
- Multi-chain support
abi.ninja
URL: https://abi.ninja
Paste any contract address, interact with all functions. Multi-chain. Zero setup.
Quick exploration of Gnars contracts:
- Go to https://abi.ninja
- Select Base network
- Paste contract address (e.g.,
0x494eaa55ecf6310658b8fc004b0888dcb698097f for Auction)
- Call any read function directly in browser
RPC Providers
Free (testing/development):
https://mainnet.base.org — Base public RPC
https://eth.llamarpc.com — Ethereum mainnet, no key
https://rpc.ankr.com/eth — Ankr free tier
Paid (production):
- Alchemy — generous free tier (300M CU/month)
- Infura — established, MetaMask default
- QuickNode — performance-focused
Community: rpc.buidlguidl.com
Block Explorers
Viem Quick Reference (Used in This Project)
import { createPublicClient, http } from 'viem';
import { base } from 'viem/chains';
const client = createPublicClient({
chain: base,
transport: http('https://mainnet.base.org'),
});
const totalSupply = await client.readContract({
address: '0x880fb3cf5c6cc2d7dfc13a993e839a9411200c17',
abi: tokenAbi,
functionName: 'totalSupply',
});
const results = await client.multicall({
contracts: [
{ address: tokenAddr, abi: erc721Abi, functionName: 'totalSupply' },
{ address: auctionAddr, abi: auctionAbi, functionName: 'auction' },
{ address: treasuryAddr, abi: treasuryAbi, functionName: 'delay' },
],
});
const unwatch = client.watchContractEvent({
address: auctionAddr,
abi: auctionAbi,
eventName: 'AuctionBid',
onLogs: (logs) => console.(, logs),
});
What Changed in 2025-2026
- Foundry became default over Hardhat for new projects
- Viem gaining on ethers.js (smaller, better TypeScript)
- MCP servers emerged for agent-blockchain interaction
- Deprecated: Truffle (use Foundry/Hardhat), Goerli/Rinkeby (use Sepolia)
Source: https://ethskills.com/tools/SKILL.md