# Scrollscan MCP

> Scrollscan gives your AI agent direct access to the Scroll L2 blockchain data. Check Ether balances, track every type of token transfer—ERC20, ERC721, and ERC1155—and inspect contract ABIs on demand. You don't need to jump between explorers; you just ask your agent.

## Overview
- **Category:** developer-tools
- **Price:** Free
- **Tags:** scroll-l2, ethereum, block-explorer, smart-contracts, web3

## Description

Scrollscan gives your AI client direct access to all data flowing through the Scroll L2 blockchain. Forget jumping between explorer tabs just to check a few details; you ask your agent, and it pulls the raw chain data instantly.

### **Checking Balances**

You need to know how much Ether is sitting in a wallet? You can use `get_account_balance` to grab the current ETH balance for one address. If you're auditing multiple wallets or checking several accounts at once, pull in `get_account_balance_multi`; it saves you from running dozens of separate calls.

For tokens, it’s similar but more detailed. You can check a specific ERC20 contract's balance for an address using `get_token_balance`, or calculate the total circulating supply of any given token with `get_token_supply`. If you want to know about all the ETH floating around on Scroll generally, use `get_eth_supply` to get that figure. You also can track market movement by checking the current Ether price via `get_eth_price`.

### **Tracking Token Movements**

When it comes to tokens, you're not limited to just standard ERC20 transfers. Your agent pulls transfer events for every type of digital asset. To see all recorded movements for basic ERC20 tokens by an address, run `get_erc20_token_tx`. For single-edition NFTs (ERC721), use `get_erc721_token_tx` to map out where those unique assets moved. If you're dealing with multi-standard contracts that handle both ERC20 and NFTs, `get_erc1155_token_tx` tracks those complex transfers.

### **Understanding Contract Logic**

Sometimes you gotta know what the smart contract is actually doing—it’s not enough to just see a transaction. You can pull the Application Binary Interface (ABI) for verified contracts using `get_contract_abi`. This details all the functions available, telling you exactly how the code is structured. If that isn't enough, you can retrieve the entire source code of a verified contract address with `get_contract_source_code`, letting you see the raw logic behind it.

### **Tracing Transaction History**

To build a full audit trail, your agent pulls transaction data in layers. You get standard, user-initiated actions using `get_normal_tx_list` for an address. For deeper dives into what happened *inside* the contract, you can list all internal transactions with `get_internal_tx_list`, or narrow that down further by a block range using `get_internal_tx_list_by_block_range`, or even find them by hash using `get_internal_tx_list_by_hash`. You always gotta check the outcome: you can verify if a transaction finished processing and what the result was using `get_tx_receipt_status`, or confirm it successfully went through the network with `get_tx_status`. Every single transaction detail, including all event logs generated by smart contracts for analysis, is available via `get_logs`.

### **Low-Level Network Mechanics**

For deep protocol work, your agent accesses raw blockchain state data. You can find the current block number with `proxy_block_number`, or check what block number corresponds to a specific time using `get_block_number_by_time`. Need to know how much gas you're gonna spend? Run `proxy_estimate_gas` for an estimate, or get the current cost of gas on the network with `proxy_gas_price`. You can also check what kind of reward miners are getting using `get_block_reward`, and even list every block number mined by a specific address using `get_mined_blocks`. If you want to look at all the raw data attached to a single block, use `proxy_get_block_by_number` or grab all details for a transaction hash with `proxy_get_transaction_by_hash`, and finally, get the complete outcome of that transaction using `proxy_get_transaction_receipt`. You can even simulate a contract call—seeing what would happen without actually spending gas—using `proxy_call`, or reading specific pieces of data stored in a contract at a particular slot with `proxy_get_storage_at`.

## Tools

### check_verify_status
Checks if a contract's source code has been verified on the blockchain explorer.

### get_account_balance_multi
Gets the Ether balance for several addresses at once, saving multiple API calls.

### get_account_balance
Retrieves the current Ether balance for a single specified address.

### get_block_countdown
Estimates how many blocks are left until a target block number is reached.

### get_block_number_by_time
Determines the block number that corresponds to a specific timestamp.

### get_block_reward
Calculates the reward received for mining a given block number.

### get_contract_abi
Fetches the Application Binary Interface (ABI) for verified smart contracts, detailing their functions.

### get_contract_source_code
Retrieves the full source code of a verified contract address.

### get_erc1155_token_tx
Gets transfer event records for ERC1155 tokens associated with a given address.

### get_erc20_token_tx
Retrieves all recorded transfer events for ERC20 standard tokens linked to an address.

### get_erc721_token_tx
Tracks the movement of single-edition NFTs (ERC721) by address.

### get_eth_price
Provides the current last market price for Ether.

### get_eth_supply
Calculates the total amount of Ether circulating on the Scroll network.

### get_internal_tx_list_by_block_range
Retrieves internal transaction lists filtered by a range of block numbers.

### get_internal_tx_list_by_hash
Finds internal transactions related to a specific transaction hash.

### get_internal_tx_list
Lists all internal transactions that occurred for a specific address.

### get_logs
Retrieves event logs generated by smart contracts for analysis.

### get_mined_blocks
Lists all block numbers mined by a specific address.

### get_normal_tx_list
Gets the list of standard, user-initiated transactions for an address.

### get_token_balance
Determines the token balance for a specific ERC20 contract and address.

### get_token_supply
Calculates the total supply of an ERC20 token based on its contract address.

### get_tx_receipt_status
Checks the processing status and result of a transaction receipt.

### get_tx_status
Verifies if a transaction has been successfully processed by the network.

### proxy_block_number
Gets the current block number of the chain (eth_blockNumber).

### proxy_call
Simulates a contract call without actually spending gas (eth_call).

### proxy_estimate_gas
Estimates how much gas is needed for a specific transaction type.

### proxy_gas_price
Gets the current estimated cost of gas on the network (eth_gasPrice).

### proxy_get_block_by_number
Fetches all data associated with a specific block number.

### proxy_get_code
Retrieves the compiled bytecode for a contract address (eth_getCode).

### proxy_get_storage_at
Reads a specific piece of storage data from a contract at a given slot.

### proxy_get_transaction_by_hash
Retrieves all details for a transaction using its unique hash (eth_getTransactionByHash).

### proxy_get_transaction_receipt
Gets the final receipt and outcome of a completed transaction.

### verify_source_code
Verify Source Code

## Prompt Examples

**Prompt:** 
```
What is the ETH balance of address 0x1234567890abcdef1234567890abcdef12345678?
```

**Response:** 
```
I've checked the balance for that address. It currently holds 1.25 ETH on the Scroll L2 network.
```

**Prompt:** 
```
Show me the last 5 normal transactions for 0xabcdef...
```

**Response:** 
```
I've retrieved the transaction list using `get_normal_tx_list`. Here are the 5 most recent transactions, including hashes, block numbers, and values.
```

**Prompt:** 
```
Get the ERC20 token transfer events for address 0x123... on contract 0x456...
```

**Response:** 
```
Searching for ERC20 transfers... I found several transfer events for that token contract associated with your address. Would you like the details for the most recent one?
```

## Capabilities

### Query Account Balances
Find the Ether balance for one or many addresses using `get_account_balance` and `get_account_balance_multi`.

### Track Specific Token Transfers
Get transfer events for ERC20, ERC721 (NFTs), and ERC1155 tokens by address using dedicated tools like `get_erc20_token_tx`.

### Inspect Smart Contract Logic
Retrieve the ABI or source code for verified contracts to understand their functions via `get_contract_abi` and `get_contract_source_code`.

### Trace Transaction History
Fetch detailed transaction lists (normal, internal) and check receipt status using tools like `get_normal_tx_list` or `get_internal_tx_list`.

### Query Low-Level Network State
Access raw blockchain data points, such as block numbers by time (`get_block_number_by_time`) or current gas prices (`proxy_gas_price`).

## Use Cases

### Auditing a Failed NFT Transfer
A client reports an NFT didn't transfer correctly. You ask your agent to use `get_erc721_token_tx` for the address, then check the transaction receipt using `get_tx_receipt_status`. The agent finds the specific event log (`get_logs`) that shows where the transfer failed, solving the issue immediately.

### Tracing a Complex DeFi Interaction
You need to know how funds moved through a lending protocol. You start by getting the initial balance using `get_account_balance`. Then you run `get_internal_tx_list` to see the background calls, finally cross-referencing with `proxy_call` to confirm the final state.

### Researching New Token Contracts
You find a new token address. First, you run `check_verify_status` to see if it's legitimate. Then, you use `get_contract_abi` and `get_contract_source_code` to understand the rules and logic of that contract before writing any code against it.

### Calculating Total Market Liquidity
You need a full view of token movement. You use `get_token_supply` for all major tokens, check the current ETH price via `get_eth_price`, and then aggregate multiple ERC20 transfers using `get_erc20_token_tx` to calculate total circulating value.

## Benefits

- You track every token type—ERC20, ERC721, and ERC1155—without using multiple tools. Just ask your agent for transfers across all standards, letting tools like `get_erc*_token_tx` handle the complexity.
- Debugging contracts is faster than ever. Instead of just seeing a failure, you can pull the ABI (`get_contract_abi`) and even simulate calls with `proxy_call` to see *why* it failed.
- You get full transaction visibility by separating normal transfers from internal activity. Use `get_normal_tx_list` alongside `get_internal_tx_list` for a complete picture of an account's history.
- The server lets you read low-level state directly: check the total supply (`get_token_supply`), or find out how many blocks are left until block 10,000 using `get_block_countdown`.
- It provides efficiency by batch processing. Need to check five wallet balances? Use `get_account_balance_multi` instead of running the single balance tool five times.

## How It Works

The bottom line is: you tell your AI what data you need, and it runs the specific blockchain function required to get that answer.

1. Subscribe to the server and input your Scrollscan API key into your AI client's environment variables.
2. Ask your agent a specific question, like 'What was the ETH balance of address X at block Y?'
3. Your agent calls the relevant tool (e.g., `get_account_balance`), which pulls the data and returns a structured result to your chat window.

## Frequently Asked Questions

**How do I track all token types with Scrollscan MCP Server?**
You don't have to pick one. The agent can run multiple tools—specifically `get_erc20_token_tx`, `get_erc721_token_tx`, and `get_erc1155_token_tx`—to give you a complete view of all token movements for an address.

**What is the difference between `get_normal_tx_list` and `get_internal_tx_list`?**
`get_normal_tx_list` shows transactions initiated by external users. `get_internal_tx_list` tracks background activity—calls made by one smart contract to another during a single transaction.

**How do I check if an address holds multiple types of tokens?**
You must use specific tools for each type. Check standard balances with `get_token_balance` (ERC20), and then separately run the NFT or multi-standard tools like `get_erc721_token_tx`.

**Do I need to worry about gas prices when using proxy tools?**
No, but you should check. Always query `proxy_gas_price` or use `proxy_estimate_gas` first. This tells your agent the current cost estimate before it attempts a transaction call.

**If I need multiple balances, should I use `get_account_balance` or `get_account_balance_multi`?**
Use `get_account_balance_multi`. This tool handles fetching Ether balances for a list of addresses in one call. Trying to loop through individual calls with `get_account_balance` is inefficient and will hit rate limits faster.

**How do I verify if a contract even exists before trying to get its ABI using `get_contract_abi`?**
You can use the general proxy tools like `eth_getCode`. This function checks for deployed code at a specific address. If it returns null or empty data, the contract probably doesn't exist or hasn't fully initialized yet.

**Can I pinpoint block activity if I only know the exact timestamp using `get_block_number_by_time`?**
Yes. This tool takes a Unix timestamp and returns the corresponding block number that was mined at or nearest to that time. It’s useful for analyzing historical data when you don't have the block hash readily available.

**What is the best way to check if a transaction succeeded, using `get_tx_status`?**
The `get_tx_status` tool checks the final receipt status of a transaction. It confirms whether the transaction was successfully processed by the network (success/failure) and provides key details about the gas used.

**How do I check the balance of multiple wallets at once?**
You can use the `get_account_balance_multi` tool. Simply provide a comma-separated list of addresses, and the agent will return the Ether balance for each one in a single request.

**Can I track NFT transfers for a specific address?**
Yes! Use the `get_erc721_token_tx` tool for standard NFTs or `get_erc1155_token_tx` for multi-token standards. Provide the wallet address and the contract address to see all relevant transfer events.

**How do I get the ABI for a verified contract?**
Use the `get_contract_abi` tool with the target contract address. If the source code is verified on Scrollscan, the agent will retrieve the complete ABI for you.