etherscan
$
npx mdskill add TermiX-official/cryptoclaw/etherscanQuery multi-chain block explorer APIs for transaction history, contract data, and gas information.
- Helps retrieve blockchain data like transactions, ABIs, and gas prices for analysis or verification.
- Integrates with Etherscan-compatible APIs including BSCScan, Polygonscan, and others across multiple chains.
- Uses API keys and specific parameters to fetch data based on user queries or agent requests.
- Presents results in structured formats such as JSON or tables for easy integration into workflows.
SKILL.md
.github/skills/etherscanView on GitHub ↗
---
name: etherscan
description: Query block explorer APIs (Etherscan, BSCScan, Polygonscan, etc.) for transactions, contracts, and gas data.
metadata:
{
"cryptoclaw":
{
"emoji": "🔍",
"requires": { "env": ["ETHERSCAN_API_KEY"] },
"primaryEnv": "ETHERSCAN_API_KEY",
},
}
---
# Multi-chain Explorer API
Query Etherscan-compatible block explorer APIs for transaction history, contract source code, ABIs, and gas data.
## Supported Explorers
| Chain | Base URL | Env Var (optional override) |
| -------- | ----------------------------------------- | ----------------------------- |
| Ethereum | `https://api.etherscan.io/api` | `ETHERSCAN_API_KEY` |
| BSC | `https://api.bscscan.com/api` | `BSCSCAN_API_KEY` or same key |
| Polygon | `https://api.polygonscan.com/api` | `POLYGONSCAN_API_KEY` |
| Arbitrum | `https://api.arbiscan.io/api` | `ARBISCAN_API_KEY` |
| Optimism | `https://api-optimistic.etherscan.io/api` | `OPTIMISM_API_KEY` |
| Base | `https://api.basescan.org/api` | `BASESCAN_API_KEY` |
All explorers accept the `apikey` parameter. Many share a single Etherscan key, but some chains require separate registration.
**Rate limit**: 5 calls/second per key.
## Modules & Actions
### Account — Transaction History
```
?module=account&action=txlist&address={addr}&startblock=0&endblock=99999999&page=1&offset=20&sort=desc&apikey={key}
```
Returns normal transactions for an address.
### Account — Token Transfers (ERC-20)
```
?module=account&action=tokentx&address={addr}&page=1&offset=20&sort=desc&apikey={key}
```
Filter by contract: add `&contractaddress={token}`
### Account — ERC-721 Transfers
```
?module=account&action=tokennfttx&address={addr}&page=1&offset=20&sort=desc&apikey={key}
```
### Account — Balance
```
?module=account&action=balance&address={addr}&tag=latest&apikey={key}
```
Returns balance in wei. Divide by 1e18 for ETH/BNB.
### Contract — Get ABI
```
?module=contract&action=getabi&address={addr}&apikey={key}
```
Returns the contract ABI as a JSON string. **Tip**: Parse the result and pass it to `read_contract` or `write_contract` for dynamic contract interaction.
### Contract — Get Source Code
```
?module=contract&action=getsourcecode&address={addr}&apikey={key}
```
Returns source code, compiler version, constructor arguments, and proxy implementation address if applicable.
### Gas Tracker (Ethereum only)
```
?module=gastracker&action=gasoracle&apikey={key}
```
Returns SafeGasPrice, ProposeGasPrice, FastGasPrice in gwei.
## Workflow: Dynamic Contract Interaction
1. User provides a contract address
2. Call `getabi` to fetch the ABI
3. Parse the ABI to list available read/write functions
4. Use `read_contract` with the ABI and function name to query
5. Use `write_contract` for state-changing calls (with user confirmation)
This enables interacting with ANY verified contract without pre-built tools.
## Usage Notes
- Always include `&apikey={key}` — requests without it are heavily rate-limited
- Use `offset` and `page` for pagination; don't fetch more than needed
- The `getabi` endpoint only works for verified contracts
- For proxy contracts, `getsourcecode` includes the implementation address — fetch that ABI too
- Cross-reference contract data with `security-check` skill for risk assessment
## Example Queries
User: "Show my recent transactions on BSC"
→ Call BSCScan `txlist` for active wallet, present last 10 with value and status
User: "Get the ABI for this contract: 0x..."
→ Call `getabi`, parse result, summarize available functions
User: "What's the current gas price on Ethereum?"
→ Call `gasoracle`, present safe/standard/fast prices