> ## Documentation Index
> Fetch the complete documentation index at: https://docs.etherscan.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Etherscan Flow

> An installable agent skill that traces, verifies, and visualizes onchain money flows into an import-ready case file on [etherscan.io/flow](https://etherscan.io/flow).

[Etherscan Flow](https://github.com/etherscan/skills/tree/main/skills/etherscan-flow) is an agent skill that turns your agent into an onchain investigator for tracing, verifying, and visualizing onchain money flows. Give it a transaction hash, an address, a resolvable entity, a draft case, or a source URL, and it queries live Etherscan API data and returns a single import-ready Flow Case file of nodes and edges. Every address, amount, and transaction hash is grounded in a real API response.

<Frame>
  <img src="https://mintcdn.com/etherscan/yaW251JzNAHBk6pN/images/etherscan-flow.png?fit=max&auto=format&n=yaW251JzNAHBk6pN&q=85&s=39c631b795dabe0d6045b3e9fda76fd1" alt="An Etherscan Flow Case visualized on the canvas: wallet and contract nodes connected by labeled fund-flow edges" width="3648" height="2837" data-path="images/etherscan-flow.png" />
</Frame>

It runs in two modes, plus a document-import path:

* **Strict trace:** start from a transaction hash or address and follow the money.
* **Business/entity profile:** start from a DAO, protocol, or business, resolve it to verified addresses, then summarize income, spending, and totals.
* **Document import:** paste a draft case, notes, or a link you typed, and it verifies every address and claim against the live API.

Where the general [Etherscan Orchestrator](/build-with-ai/skills/etherscan) routes a task to the right Etherscan interface, Etherscan Flow owns a full multi-step investigation workflow on top of the API.

## Get started

<Steps>
  <Step title="Install the skill">
    <Tabs>
      <Tab title="Claude Code CLI / Codex CLI">
        Add the skill with the [skills.sh](https://skills.sh) CLI. `-g` installs it globally (user-level, so it is available in every project) and `-a '*'` installs it for every agent you have set up (Claude Code, Codex, and others):

        ```bash theme={null}
        npx skills add https://github.com/etherscan/skills --skill etherscan-flow -g -a '*' -y
        ```

        Or clone the repo and move the folder into your agent's skills directory, `~/.claude/skills/` or `~/.codex/skills/`:

        ```bash theme={null}
        git clone https://github.com/etherscan/skills.git etherscan-skills
        cp -r etherscan-skills/skills/etherscan-flow ~/.claude/skills/
        ```
      </Tab>

      <Tab title="Claude Desktop">
        Claude Desktop installs a skill from a ZIP you upload. Zip must contain exactly one SKILL.md file.

        1. Download the [Etherscan skills repo](https://github.com/etherscan/skills/archive/refs/heads/main.zip), unzip it, and compress just the `skills-main/skills/etherscan-flow` folder into `etherscan-flow.zip`.

           ```
           skills-main/
           └── skills/
               ├── etherscan/
               ├── etherscan-flow/     ← zip this folder
               └── etherscan-transaction-debugger/
           ```

        2. In Claude Desktop, go to **Settings > Skills > Add > Upload a skill** and select the `etherscan-flow.zip` file.

                   <Frame>
                     <img src="https://mintcdn.com/etherscan/yaW251JzNAHBk6pN/images/claude-desktop-flow-upload.png?fit=max&auto=format&n=yaW251JzNAHBk6pN&q=85&s=b56e552339c3ff23b9dbc153e03e73d6" alt="Claude Desktop Settings > Skills, uploading the Etherscan Flow skill ZIP" data-og-width="2300" width="2300" data-og-height="1480" height="1480" data-path="images/claude-desktop-flow-upload.png" data-optimize="true" data-opv="3" srcset="https://mintcdn.com/etherscan/yaW251JzNAHBk6pN/images/claude-desktop-flow-upload.png?w=280&fit=max&auto=format&n=yaW251JzNAHBk6pN&q=85&s=bede9ef3808511ed5f0373acab0ee520 280w, https://mintcdn.com/etherscan/yaW251JzNAHBk6pN/images/claude-desktop-flow-upload.png?w=560&fit=max&auto=format&n=yaW251JzNAHBk6pN&q=85&s=49b1cbf5d1c2e4af310fe33efdc1c422 560w, https://mintcdn.com/etherscan/yaW251JzNAHBk6pN/images/claude-desktop-flow-upload.png?w=840&fit=max&auto=format&n=yaW251JzNAHBk6pN&q=85&s=f3512f76ea40acba9929811ec46b4db8 840w, https://mintcdn.com/etherscan/yaW251JzNAHBk6pN/images/claude-desktop-flow-upload.png?w=1100&fit=max&auto=format&n=yaW251JzNAHBk6pN&q=85&s=d785ee5cd80e5ebfd5726671af3c440e 1100w, https://mintcdn.com/etherscan/yaW251JzNAHBk6pN/images/claude-desktop-flow-upload.png?w=1650&fit=max&auto=format&n=yaW251JzNAHBk6pN&q=85&s=11394ed882cc817cfcbd2e4733fa4d1a 1650w, https://mintcdn.com/etherscan/yaW251JzNAHBk6pN/images/claude-desktop-flow-upload.png?w=2500&fit=max&auto=format&n=yaW251JzNAHBk6pN&q=85&s=3040a509f738bec28504d86609a2fc67 2500w" />
                   </Frame>

        3. The Etherscan Flow skill is now ready to be used.

                   <Frame>
                     <img src="https://mintcdn.com/etherscan/yaW251JzNAHBk6pN/images/claude-desktop-flow-active.png?fit=max&auto=format&n=yaW251JzNAHBk6pN&q=85&s=903c8afe400cbd43d656991a3acaed67" alt="Claude Desktop Etherscan Flow skill is toggled on" width="2268" height="1640" data-path="images/claude-desktop-flow-active.png" />
                   </Frame>
      </Tab>
    </Tabs>
  </Step>

  <Step title="Run your first trace">
    Describe the case in plain language.

    ```text theme={null}
    trace this scam 0x<txhash>. use etherscan-flow skill
    ```

    The agent pulls live transactions, follows the money hop by hop, and returns an import-ready Flow Case.
  </Step>
</Steps>

## Provide an API key

Etherscan Flow calls the Etherscan API, which needs an [API key](/set-up-your-api-key). The skill resolves one in this order, first usable match wins:

1. The Etherscan [CLI](/build-with-ai/cli) config
2. The Etherscan [MCP](/build-with-ai/mcp) connection
3. An inline `apikey=` in your request
4. The `ETHERSCAN_API_KEY` environment variable
5. A local key file

Resolving through the CLI or MCP keeps the key out of the chat transcript.

## Example Usage

Paste a hash or address and ask to investigate:

```text theme={null}
trace this scam 0x<txhash>
follow the money from this victim wallet 0x<address>
this is the scammer address 0x<address>, find the victims
build a case for this hack 0x<address> apikey=YOUR_KEY
```

Or profile a DAO, protocol, or business from a verified scope:

```text theme={null}
show ENS DAO as a business
show ENS DAO as a business using these treasury, controller, and timelock addresses: 0x<address> 0x<address>
map income and spending for this protocol treasury 0x<address>
show where this DAO gets income and how it spends money, with totals, apikey=YOUR_KEY 0x<address>
```

Or import a draft, notes, or any link and have every claim verified onchain:

```text theme={null}
extract the flows from this gist and build the case: https://gist.github.com/<user>/<id> apikey=YOUR_KEY
someone reported this scam on X — verify it and build the case: https://x.com/<user>/status/<id>
build a case from the addresses in this article: https://<news-site>/<path>
here's my draft case JSON — validate it and produce a verified version: <pasted draft>
```

## Run without approving every call

A single trace can make many API calls (up to 100), so your agent may prompt you to approve each one. That prompt comes from your agent's own permission system, not from Etherscan Flow.

You can safely approve them all at once: every call is a read-only `GET` to a single host, `api.etherscan.io`, so nothing is written or spent. To set that up in Claude Code, Codex, or Claude.ai, see [Stop it asking permission for every call](https://github.com/etherscan/skills/blob/main/skills/etherscan-flow/README.md#stop-it-asking-permission-for-every-call).

## Output

You get a single Flow Case JSON file. Open [etherscan.io/flow](https://etherscan.io/flow), choose Import, and paste it: the schema maps one to one, with no reformatting.

<Note>
  Roles, labels, and notes in a case are an agent's inference over public Etherscan data, not Etherscan verdicts, accusations, or legal findings.
</Note>
