Skip to main content
Glama
austintgriffith

eth-mcp

eth-mcp

MCP server that enables AI agents to build and deploy Ethereum applications using Scaffold-ETH.

The AI is the planner. The MCP server is the executor.


Quick Start

Add to your Cursor MCP config (~/.cursor/mcp.json):

{
  "mcpServers": {
    "eth-mcp": {
      "command": "npx",
      "args": ["-y", "eth-mcp@latest"]
    }
  }
}

Restart Cursor. Done! Now ask your AI:

"Build me a swapping app with a 1% tax token on Base"


Related MCP server: multivon-mcp

What This Does

eth-mcp is a Model Context Protocol (MCP) server that:

  1. Clones and configures Scaffold-ETH projects - Foundry + Next.js stack

  2. Manages long-running processes - Anvil fork, contract deployment, frontend

  3. Provides file access - Read/write project files

  4. Exposes logs and status - Resources for agent polling

  5. Includes Web3 knowledge - Guides for incentive design and Solidity patterns

  6. DeFi address registry - Token and protocol addresses across 5 chains

  7. DeFi yield tools - Query live APY/TVL data from DefiLlama

This enables AI agents to go from natural language to running dApp without manual intervention.


eth-mcp is designed to work alongside companion MCP servers for a complete Ethereum development experience. We strongly recommend installing all three:

MCP Server

Purpose

Essential For

eth-mcp

Build, deploy, run local dev

Core functionality

mcp-server-ens

ENS name resolution

Resolving .eth names (vitalik.eth → 0x...)

@blockscout/mcp-server

Blockchain exploration

Tx analysis, contract ABIs, on-chain data

Add all three to your ~/.cursor/mcp.json:

{
  "mcpServers": {
    "eth-mcp": {
      "command": "npx",
      "args": ["-y", "eth-mcp@latest"]
    },
    "ens": {
      "command": "npx",
      "args": ["-y", "mcp-server-ens"]
    },
    "blockscout": {
      "command": "npx",
      "args": ["-y", "@blockscout/mcp-server"]
    }
  }
}

Division of Responsibilities

Task

eth-mcp

ENS MCP

Blockscout

Scaffold project

Deploy contracts

Run local fork

Start frontend

Resolve vitalik.eth

Get ENS records (avatar, socials)

Check mainnet balances

Analyze transactions

Get contract ABIs

Look up token addresses

✅ (registry)

✅ (live)

Query live yield data

Example Workflow

1. Use ENS MCP to resolve "vitalik.eth" to get the address
2. Use Blockscout to check their USDC balance and recent transactions
3. Use eth-mcp to scaffold a project that interacts with their address
4. Use eth-mcp to write and deploy contracts locally
5. Use Blockscout to verify mainnet state your fork is based on
6. Use eth-mcp to start frontend and test

Why All Three?

  • eth-mcp handles the local development loop: scaffolding, forking, deploying, hot-reloading

  • ENS MCP handles name resolution: converting human-readable .eth names to addresses

  • Blockscout handles blockchain exploration: reading mainnet state, analyzing transactions, fetching ABIs

The AI agent orchestrates all three, choosing the right tool for each task.


Alternative Installation (from source)

# Clone the repo
git clone https://github.com/austintgriffith/eth-mcp
cd eth-mcp

# Install dependencies
npm install

# Build
npm run build

Configure MCP Client (local)

Add to your MCP settings:

{
  "mcpServers": {
    "eth-mcp": {
      "command": "node",
      "args": ["/path/to/eth-mcp/dist/index.js"]
    }
  }
}

MCP Tools

Stack Management

Tool

Description

stack_init

Clone Scaffold-ETH, configure for chain

stack_install

Install dependencies (yarn install)

stack_start

Start components: fork, deploy, frontend

stack_stop

Stop running components

stack_status

Get health report and URLs

Process Management

Tool

Description

process_list

List all managed processes

process_logs

Get stdout/stderr for a process

process_stop

Stop a specific process

Project Files

Tool

Description

project_readFile

Read a project file

project_writeFile

Write content to a file

project_listFiles

List directory contents


MCP Resources

Resources for polling status and logs:

Resource URI

Description

resource://stack/status

Current stack health

resource://stack/config

Stack configuration

resource://process/fork/stdout

Anvil fork output

resource://process/fork/stderr

Anvil fork errors

resource://process/frontend/stdout

Next.js output

resource://process/frontend/stderr

Next.js errors

resource://contracts/deployed

Deployed contract addresses


Example Agent Workflow

Here's how an AI agent would build a tax token swap app:

Agent: "Build a swapping app with a 1% tax token on Base"

1. stack_init({ template: "scaffold-eth", chain: "base", workspacePath: "/tmp/tax-swap" })
   → Clones scaffold-eth-2, configures for Base

2. stack_install()
   → Runs yarn install

3. project_writeFile({ path: "packages/foundry/contracts/TaxToken.sol", content: "..." })
   → Creates the tax token contract

4. project_writeFile({ path: "packages/foundry/script/Deploy.s.sol", content: "..." })
   → Updates deploy script

5. stack_start({ components: ["fork", "deploy", "frontend"] })
   → Starts Anvil fork of Base
   → Deploys contracts
   → Starts Next.js

6. stack_status()
   → Returns: { urls: { rpc: "http://localhost:8545", frontend: "http://localhost:3000" } }

7. project_writeFile({ path: "packages/nextjs/app/page.tsx", content: "..." })
   → Creates swap UI on home page

Result: Running app at http://localhost:3000

Supported Chains

Chain

ID

Fork RPC

mainnet

1

Public RPC

base

8453

Public RPC

optimism

10

Public RPC

arbitrum

42161

Public RPC

polygon

137

Public RPC

sepolia

11155111

Public RPC


Documentation for AI Agents

The docs/ folder contains guides that help AI agents understand Web3 development:

  • WEB3_DEVELOPMENT_GUIDE.md - Mental model shift, incentive thinking, security patterns

  • SOLIDITY_PATTERNS.md - Common contract patterns and templates

  • DEFI_BUILDING_BLOCKS.md - DeFi primitives and composability

AI agents should read these before building complex applications.


Protocol Packs

Example protocol integrations in protocol-packs/:

uniswap-v4-tax-swap

Placeholder implementation of:

  • TaxToken.sol - ERC-20 with 1% transfer tax

  • TaxSwapHook.sol - Uniswap V4 hook for tax handling

  • SwapUI.tsx - React swap interface

This shows structure, not full implementation. V4 is still in development.


Safety

The server enforces several safety constraints:

Command Allowlist:

  • Only git, yarn, npm, pnpm, npx, forge, anvil, cast, node

Private Key Protection:

  • Sanitizes output to remove private keys

  • Blocks access to .env files

  • Filters sensitive environment variables

No Mainnet Writes:

  • Local development only

  • Fork-based testing


Architecture

┌─────────────────────────────────────────────────────────────┐
│                      AI Agent                               │
│  ┌─────────────────────────────────────────────────────┐   │
│  │  "Build me a swapping app with a 1% tax token"      │   │
│  └─────────────────────────────────────────────────────┘   │
└─────────────────────────┬───────────────────────────────────┘
                          │ MCP Protocol
┌─────────────────────────▼───────────────────────────────────┐
│                       eth-mcp                               │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌──────────┐   │
│  │  Stack   │  │ Process  │  │ Project  │  │Resources │   │
│  │  Tools   │  │ Manager  │  │  Tools   │  │          │   │
│  └────┬─────┘  └────┬─────┘  └────┬─────┘  └────┬─────┘   │
└───────┼─────────────┼─────────────┼─────────────┼──────────┘
        │             │             │             │
┌───────▼─────────────▼─────────────▼─────────────▼──────────┐
│                     Workspace                               │
│  ┌─────────────────────────────────────────────────────┐   │
│  │               scaffold-eth-2                         │   │
│  │  ┌───────────────┐  ┌───────────────────────────┐   │   │
│  │  │   Foundry     │  │        Next.js            │   │   │
│  │  │  (Contracts)  │  │       (Frontend)          │   │   │
│  │  └───────────────┘  └───────────────────────────┘   │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
│  ┌─────────────────┐  ┌─────────────────────────────────┐  │
│  │  Anvil Fork     │  │     http://localhost:3000       │  │
│  │  (Base chain)   │  │         (Running app)           │  │
│  └─────────────────┘  └─────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────┘

Development

# Watch mode
npm run dev

# Type check
npm run typecheck

# Run server directly
npm start

Limitations (v1)

  • Local development only (no mainnet deployment)

  • Single workspace at a time

  • Basic error recovery

  • Placeholder protocol pack implementations


License

MIT

Available Tools

34 tools
addresses_findTokenA

Search for a token symbol across all chains. Useful when you need to find where a token exists. Returns all chains where the token is available with addresses.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesToken symbol to search for (e.g., USDC, WETH, wstETH)

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description carries the burden of disclosing behavior. It explains the tool returns 'all chains where the token is available with addresses,' making the output clear. No destructive or sensitive behavior is indicated, and the description does not contradict any annotation (none provided).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the core action, no superfluous words. Every sentence contributes to understanding the tool's purpose and output.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one parameter, no output schema), the description is complete. It covers what the tool does, when to use it, and what it returns, leaving no ambiguity for an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the description adds little beyond the schema's parameter description: 'Token symbol to search for (e.g., USDC, WETH, wstETH).' The description restates the purpose but does not add new constraints or formatting details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the action is 'search for a token symbol across all chains,' specifying a clear verb, resource, and scope. It distinguishes from siblings like addresses_getToken (likely for specific token details) and addresses_listTokens (listing all tokens) by focusing on cross-chain search by symbol.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description includes a usage hint: 'Useful when you need to find where a token exists.' This provides context for when to use the tool, though it does not explicitly mention when not to use it or name alternatives among the listed sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

addresses_getProtocolA

Get contract addresses for a DeFi protocol on a specific chain. Examples:

  • uniswapV3 on Base: returns factory, router, quoterV2, positionManager

  • aaveV3 on Arbitrum: returns pool, poolDataProvider, oracle

  • moonwell on Base: returns comptroller, mWETH, mUSDbC, flagshipETH vault

Supported protocols by chain:

  • All chains: uniswapV3, uniswapV4, aaveV3, chainlink, permit2, universalRouter, multicall, create2, safe, entryPoint, oneInch, zeroX, pyth

  • Base: aerodrome, moonwell, morpho, chainlinkAutomation

  • Optimism: velodrome

  • Arbitrum: gmx, camelot, pendle

  • Mainnet: uniswapV2, sushiswap, curve, lido, compoundV3, eigenLayer, morphoBlue

Infrastructure (same address all chains):

  • permit2: Universal token approvals (0x000000000022D473030F116dDEE9F6B43aC78BA3)

  • multicall: Batch read calls (0xcA11bde05977b3631167028862bE2a173976CA11)

  • entryPoint: ERC-4337 Account Abstraction (v06, v07)

  • safe: Gnosis Safe multisig (proxyFactory, singleton)

ParametersJSON Schema
NameRequiredDescriptionDefault
chainYesChain name (mainnet, base, optimism, arbitrum, polygon)
protocolYesProtocol name (uniswapV3, aaveV3, moonwell, etc.)

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, but description fully explains the tool returns contract addresses, gives concrete examples, and notes that infrastructure protocols have same address on all chains. No mention of authentication or rate limits, but sufficient for a read-only tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with clear purpose sentence, then examples, then organized lists of supported protocols. Slightly long but front-loaded and each part adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, but description effectively explains return values with examples and distinguishes between per-chain protocols and infrastructure that is same across chains. Covers the complexity well.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but description adds value by listing specific valid protocol names per chain and giving example return values, extending beyond the schema's simple property descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states 'Get contract addresses for a DeFi protocol on a specific chain.' Provides examples and lists supported protocols per chain, distinguishing it from sibling tools like addresses_getToken and addresses_listProtocols.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Extensive examples and supported protocol lists per chain give clear context, but lacks explicit when-not-to-use or alternatives beyond listing protocols.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

addresses_getTokenA

Get a token's contract address on a specific chain. Examples:

  • WETH on Base: returns 0x4200000000000000000000000000000000000006

  • USDC on Arbitrum: returns 0xaf88d065e77c8cC2239327C5EDb3A432268e5831

  • wstETH on Optimism: returns 0x1F32b1c2345538c0c6f582fCB022739c4A194Ebb

Supported chains: mainnet, base, optimism, arbitrum, polygon Common tokens: WETH, USDC, USDT, DAI, WBTC, wstETH, rETH, cbETH

ParametersJSON Schema
NameRequiredDescriptionDefault
chainYesChain name (mainnet, base, optimism, arbitrum, polygon)
symbolYesToken symbol (WETH, USDC, DAI, etc.)

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses supported chains and common tokens, but does not mention behavior for invalid token symbols, rate limits, or error handling. Since no annotations are provided, the description carries the full burden and is minimally adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Very concise, with purpose stated upfront, followed by clear examples and lists. Every sentence adds value, and the structure is easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple lookup tool, the description covers purpose, parameters with examples, supported chains, and common tokens. It does not specify the return format (implied address string) or error cases, but is otherwise complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for both parameters. Description adds value with examples and a curated list of supported chains and common tokens, enhancing understanding beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states 'Get a token's contract address on a specific chain' with examples and supported chains. Does not explicitly differentiate from sibling tools like addresses_findToken, but the purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage for looking up token addresses by symbol and chain, but provides no explicit guidance on when to use this tool vs siblings (e.g., addresses_findToken, addresses_listTokens) or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

addresses_getWhaleA

Get whale addresses for funding test wallets with tokens on Anvil forks.

WHEN TO USE: When users need tokens (USDC, WETH, DAI) to test their DeFi apps.

Returns protocol contract addresses (Morpho, Aave) that hold large token balances. Protocol contracts are more reliable than EOAs because they hold funds as their core function.

Also returns one-shot cast commands to transfer tokens from the whale to a recipient.

Example usage flow:

  1. User builds a USDC vault on Base

  2. Call addresses_getWhale({ chain: "base", token: "USDC" })

  3. Get Morpho Blue whale (0xBBBB...) with ~131M USDC

  4. Provide user with cast commands to fund their wallet

ParametersJSON Schema
NameRequiredDescriptionDefault
chainYesChain name (mainnet, base, optimism, arbitrum, polygon)
tokenYesToken symbol (USDC, WETH, DAI, etc.)
amountNoOptional: Amount in token's smallest unit (e.g., 10000000000 for 10k USDC)
recipientNoOptional: Recipient address to include in funding commands

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It explains the output (returns addresses and cast commands) but does not disclose behavioral traits such as whether the tool is read-only, idempotent, or requires specific permissions. The description implies it is safe (no destructive actions mentioned), but this is not explicit. Given the lack of annotations, a score of 3 is appropriate as the description is adequate but not fully transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (WHEN TO USE, returns, example flow). It is reasonably concise, though the example flow could be shortened without losing clarity. Every sentence adds value, and the structure aids quick understanding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no output schema, the description adequately explains return values (protocol contract addresses, cast commands). It provides enough context for an AI agent to understand how to use the output. However, it could be more complete by specifying the exact response format or field names. Still, it is sufficient for most use cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers all 4 parameters with descriptions (100% coverage), so baseline is 3. The description adds value by explaining the context of 'amount' (smallest unit) and 'recipient' (included in funding commands), and the example flow illustrates how parameters are used together. This goes beyond mere schema repetition, earning a 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: getting whale addresses for funding test wallets. It uses specific verbs ('get', 'returns') and resources ('whale addresses', 'protocol contract addresses'), and the example flow reinforces the purpose. It naturally distinguishes from siblings like addresses_listWhales by emphasizing the use case of funding test wallets.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a clear 'WHEN TO USE' section with a concrete scenario ('users need tokens to test DeFi apps'). It also explains why protocol contracts are preferred. However, it lacks explicit when-not-to-use guidance or comparison to sibling tools like addresses_listWhales or addresses_getToken, which could help the agent choose between them.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

addresses_listProtocolsA

List all known DeFi protocols and their addresses on a specific chain.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainYesChain name (mainnet, base, optimism, arbitrum, polygon)

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description must cover behavioral traits. Only states it lists data; does not mention whether it's read-only, if pagination exists, or response shape. Basic transparency but insufficient detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with no repetition or filler. Front-loaded purpose. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (1 required param, no output schema), the description is fairly complete. It explains what the tool does and the needed input. Could mention return format but not necessary.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a clear description of the 'chain' parameter. The tool description does not add any additional meaning beyond what the schema already provides. Baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states 'List all known DeFi protocols and their addresses' with a specific verb and resource. Distinguishes from siblings like addresses_getProtocol and addresses_listTokens.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage for listing all protocols on a chain but does not explicitly state when to use it versus alternatives like addresses_getProtocol. Lacks exclusions or when-not advice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

addresses_listTokensA

List all known token addresses on a specific chain. Returns symbols, addresses, decimals for all tokens in the registry.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainYesChain name (mainnet, base, optimism, arbitrum, polygon)

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the transparency burden. It indicates a read operation returning specific fields, but does not disclose pagination, ordering, completeness guarantees, or any side effects. The behavior is adequately described for a list tool but lacks depth.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, no fluff. First sentence states purpose, second states return fields. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (1 param, no output schema, no annotations), the description is largely complete. It explains what is returned and the required input. However, it could mention if the list is exhaustive or if there are any limitations (e.g., chain must be supported).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a well-described chain parameter listing valid values. The description adds 'on a specific chain', which is already in the schema. Baseline 3 is appropriate as the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List' and the resource 'all known token addresses on a specific chain'. It specifies the return fields (symbols, addresses, decimals) and differentiates from sibling tools like addresses_getToken and addresses_findToken by emphasizing the 'all' scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when a full list of tokens is needed but does not explicitly state when to use alternatives such as addresses_getToken or addresses_findToken. No when-not-to-use or prerequisites are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

addresses_listWhalesA

List all available token whales on a specific chain. Shows which tokens have known whale addresses for funding test wallets.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainYesChain name (mainnet, base, optimism, arbitrum, polygon)

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It describes a read-only listing operation with no side effects. While it does not detail auth needs or data freshness, the behavior is straightforward and sufficiently transparent for a simple list retrieval.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences: the first declares the tool's primary function, the second adds a practical context. No unnecessary words or repetition. Information is front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with one parameter and no output schema, the description covers the core purpose and usage context. It does not describe the return format (e.g., array of whale objects), but for a straightforward listing, this is acceptable. More detail could be beneficial but is not critical.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single 'chain' parameter, meeting the baseline. The description adds minimal extra meaning ('on a specific chain') beyond what the schema already provides ('Chain name (mainnet, base, optimism, arbitrum, polygon)'). No additional constraints or format details are given.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states 'List all available token whales on a specific chain' with a specific verb and resource. The second sentence 'Shows which tokens have known whale addresses for funding test wallets' adds purpose context. This clearly distinguishes from siblings like 'addresses_getWhale' (specific whale) and 'addresses_listTokens' (tokens only).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for 'funding test wallets', providing context. However, it does not explicitly state when to use this tool vs alternatives (e.g., 'addresses_getWhale' for a single token), nor does it mention exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

defi_compareYieldsA

Compare yields for a specific asset across protocols on a chain. Useful for finding the best place to deposit a specific token. Example: Compare USDC yields on Base to find best lending rate.

ParametersJSON Schema
NameRequiredDescriptionDefault
assetYesAsset symbol to compare (e.g., USDC, ETH, WETH)
chainYesChain to search (mainnet, base, optimism, arbitrum, polygon)
minTvlNoMinimum TVL in USD (default: 500000)

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It describes the action but does not disclose what the tool returns (e.g., list of protocols with yield rates), whether it is read-only, or any limitations. Basic transparency but lacks detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences plus an example, with no wasted words. It is front-loaded with the primary action and efficiently includes a concrete example.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the absence of an output schema, the description should explain what is returned. It does not describe the output format (e.g., list of protocols, yields, or ranking). For a comparison tool, this is a notable gap. The description is adequate but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all three parameters. The description adds minimal value beyond the schema, only mentioning asset and chain in the example; the minTvl parameter is not described. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Compare yields') and resource ('a specific asset across protocols on a chain'), clearly distinguishing it from sibling tools like defi_getYields or defi_getProtocolTVL. The example reinforces the purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states it's 'useful for finding the best place to deposit a specific token,' providing a clear use case. It does not explicitly mention when not to use it or alternatives, but the context from sibling tools makes the differentiation clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

defi_getProtocolTVLA

Get Total Value Locked (TVL) for a DeFi protocol across all chains. Use to assess protocol health and trustworthiness. Higher TVL generally means more battle-tested.

ParametersJSON Schema
NameRequiredDescriptionDefault
protocolYesProtocol slug (e.g., aave, compound, uniswap, lido, maker)

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. Indicates a read operation ('Get') with no destructive hints. However, does not disclose return format, data freshness, or authentication requirements. Adequate for a simple read tool but could be more detailed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each valuable: action, usage context, interpretation guidance. No fluff, well-structured and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Simple tool with one parameter and no output schema. Description covers purpose and usage, but omits return value format (e.g., numeric TVL in USD). Still, it is reasonably complete for its simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%; the schema already provides parameter description with examples. Description adds 'across all chains' but that is context, not parameter guidance. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it gets TVL for a DeFi protocol across all chains, distinguishing it from siblings like defi_getTopProtocols (lists top protocols) and defi_getYields (yield data). The verb 'Get' and resource 'Total Value Locked (TVL)' are specific.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States 'Use to assess protocol health and trustworthiness,' providing context for when to use. Lacks explicit guidance on when not to use or alternatives, but the intended use case is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

defi_getTopProtocolsA

Get top DeFi protocols by TVL on a specific chain. Useful for discovering what protocols are most used on a chain.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainYesChain to query (mainnet, base, optimism, arbitrum, polygon)
limitNoNumber of results (default: 10)
categoryNoOptional category filter (e.g., lending, dex, yield, liquid-staking)

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description does not disclose behavioral traits such as read-only nature, data freshness, rate limits, or potential side effects. It only states the basic function, leaving the agent uninformed about reliability or cost.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loading the core purpose and a use case. Every sentence adds value, with no unnecessary words. It is appropriately concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (3 parameters, no output schema), the description covers the action but lacks details about the return format (e.g., list of protocol names with TVL values). It is minimally complete but could be more informative.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description does not add extra meaning or constraints beyond what the parameter descriptions already provide. Each parameter is adequately described in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and resource 'top DeFi protocols by TVL on a specific chain'. It distinguishes from siblings like defi_getProtocolTVL (which focuses on a single protocol's TVL) and defi_getYields (yield-related).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions it's 'useful for discovering what protocols are most used on a chain', but does not provide explicit when-to-use or when-not-to-use guidance, nor does it compare with alternatives like defi_getProtocolTVL.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

defi_getYieldsA

Query DefiLlama for top yield opportunities. Filter by chain, protocol, or asset. Returns APY, TVL, and pool details. Examples:

  • Get all yields on Base: { chain: "base" }

  • Get Aave yields: { protocol: "aave-v3" }

  • Get USDC yields on Arbitrum: { chain: "arbitrum", asset: "USDC" }

ParametersJSON Schema
NameRequiredDescriptionDefault
assetNoFilter by asset symbol (e.g., USDC, ETH, WETH)
chainNoFilter by chain (mainnet, base, optimism, arbitrum, polygon)
limitNoMaximum results to return (default: 20)
minTvlNoMinimum TVL in USD (default: 100000)
protocolNoFilter by protocol name (e.g., aave-v3, compound-v3, moonwell)

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It mentions return fields (APY, TVL, pool details) but lacks details on rate limits, default behavior (e.g., limit, minTvl defaults not stated in text), or any destructive potential. The 'top' implies ranking, but not explained.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise: two sentences and three examples. It front-loads the purpose. The examples are well-formatted and add clarity without being verbose. Could be tightened slightly but effective.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description covers return fields (APY, TVL, pool details). It does not mention pagination, error handling, or defaults, but the schema covers defaults (limit, minTvl). For a simple query tool, it's reasonably complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds examples showing parameter combinations but does not deepen semantic understanding beyond schema descriptions. The examples are helpful but not essential for parameter meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it queries DefiLlama for top yield opportunities with filtering by chain, protocol, or asset. This distinguishes it from sibling tools like defi_compareYields (comparing yields) and defi_getProtocolTVL (getting protocol TVL).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage scenarios via examples (e.g., 'Get all yields on Base', 'Get Aave yields'), but does not state when to avoid using this tool or mention alternatives like defi_compareYields. The examples implicitly guide selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

education_explainLessonA

Get the full explanation and code examples for a specific lesson.

Use this when a developer wants to understand the "why" behind a warning, or when you need to show them correct vs incorrect code patterns.

Includes:

  • Deep explanation of the concept

  • Code example of what NOT to do (common mistake)

  • Code example of the RIGHT way

  • Links to related documentation

ParametersJSON Schema
NameRequiredDescriptionDefault
lessonIdYesThe lesson ID to explain (e.g., 'decimals-vary', 'nothing-automatic', 'reentrancy')

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, but the description details what the tool includes (deep explanation, code examples, links), adequately covering behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with bullet points and clear, though slightly verbose (9 lines). Efficient overall.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Without an output schema, the description fully explains what the tool returns (deep explanation, code examples, links), meeting needs for a single-parameter tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the description adds context with examples for lessonId (e.g., 'decimals-vary'), enhancing meaning beyond schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves 'full explanation and code examples for a specific lesson', distinguishing it from sibling tools like education_listCategories or education_getChecklist.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It advises use 'when a developer wants to understand the why behind a warning' and includes correct vs incorrect patterns, but does not explicitly mention when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

education_getChecklistA

Get an interactive checklist of Web3 considerations for a specific category.

Use this to walk developers through important concepts as teaching moments.

Categories:

  • tokens: Decimals, approvals, transfers (CRITICAL: USDC has 6 decimals!)

  • math: Percentages, rounding, precision (CRITICAL: No floats in Solidity!)

  • automation: Triggers, keepers, incentives (CRITICAL: Nothing is automatic!)

  • security: Reentrancy, access control, oracles

  • vaults: ERC-4626, share accounting, inflation attacks

  • defi: MEV, slippage, liquidity, protocol integration

  • all: Get all lessons

Returns questions with short warnings. Use education_explainLesson for deep dives.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryYesCategory of lessons to retrieve

TDQS

A4.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description reveals it returns questions with short warnings. It does not mention side effects or destructive actions, which is appropriate for a read-only tool. Could add more detail about response structure, but sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Efficiently front-loaded with purpose, then usage, then categories list. Every line adds value; no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite no output schema, the description explicitly states what is returned (questions with warnings). It also names the sibling tool for follow-ups, covering all necessary context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single category parameter has an enum with full schema description. The description adds critical warnings for each category (e.g., USDC has 6 decimals), providing significant value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it gets an interactive checklist for a specific category, lists categories with critical warnings, and distinguishes from sibling tool education_explainLesson by noting its use for deep dives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance to walk developers through teaching moments, details each category with critical notes, and explicitly recommends education_explainLesson for deeper explanations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

education_getCriticalLessonsA

Get all CRITICAL severity lessons - the most important gotchas that cause major bugs.

These are the lessons that, if ignored, lead to:

  • Loss of user funds

  • Contract exploits

  • Catastrophic failures

ALWAYS review critical lessons before deploying any contract.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided; description mentions the tool returns all critical lessons and describes potential impacts. However, it lacks details about output format or any side effects, though the operation is read-only.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two paragraphs with the main action in the first sentence. Could be slightly more concise, but effectively front-loaded and clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no parameters and no output schema, the description adequately explains what it returns and why. Minor gap: no indication of how lessons are structured or counted, but sufficient for selection.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters, so baseline is 4. The description adds value by explaining the significance of the returned lessons beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves critical severity lessons and explains their importance. It distinguishes from sibling tools like education_explainLesson and education_listCategories by focusing on severity and deployment context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly advises reviewing critical lessons before deploying any contract, indicating when to use. Does not mention when not to use or alternative tools, but the context is clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

education_listCategoriesA

List all available lesson categories with descriptions.

Use this to understand what topics are covered and help developers choose which checklist to work through.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the burden. It describes listing categories with descriptions, which is a read-only operation. It does not mention any side effects, destructive behavior, or authentication needs. The behavior is straightforward and accurately described, so a score of 4 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description consists of two concise sentences. The first sentence states the core action, and the second adds usage context. No unnecessary words or redundancy. The information is front-loaded and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While the tool is simple with no parameters, the description does not explain the return format or structure. Since there is no output schema, the agent cannot know what the response looks like (e.g., list of objects with fields like 'id' and 'description'). Some guidance on expected output would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters, so the description does not need to add parameter-level information. Per the rubric, zero parameters leads to a baseline score of 4. The description correctly implies that no parameters are required.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'List all available lesson categories with descriptions.' The verb 'List' and object 'all available lesson categories' make the purpose explicit. It distinguishes from sibling tools like education_explainLesson (explains a specific lesson) and education_getChecklist (retrieves a checklist), making it unique.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description says 'Use this to understand what topics are covered and help developers choose which checklist to work through.' This provides clear context for when to use the tool. It does not explicitly mention when not to use it or alternative tools, but for a zero-parameter informational tool, this is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

education_suggestLessonsA

Given a project description or plan, suggest which lessons are most relevant.

Use this at the START of a project to identify potential pitfalls early.

Example inputs:

  • "Build a USDC vault with 5% APY"

  • "Create a token swap aggregator"

  • "Make a staking contract with daily rewards"

Returns the most relevant lessons based on keywords, prioritized by severity.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of lessons to return (default: 5)
descriptionYesProject description or development plan to analyze

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. Describes that it uses 'keywords' and returns results 'prioritized by severity.' This gives reasonable insight into behavior, though limitations (e.g., no matches) are not addressed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise sentences plus examples. Front-loaded with purpose and usage guidance. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a suggestion tool without output schema, description covers purpose, when to use, how it works (keywords, severity), and examples. Lacks details on return format or error cases, but sufficient for its role.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers both parameters with descriptions (100% coverage). The description adds example inputs and clarifies keyword-based matching, but does not explain the 'limit' parameter beyond its default. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states 'suggest which lessons are most relevant' given a project description. Distinguishes from sibling tools like education_explainLesson and education_getCriticalLessons by focusing on suggestions based on a project plan.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Use this at the START of a project to identify potential pitfalls early.' This provides clear context, but does not mention when not to use or alternative tools for later stages.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

frontend_lintDesignA

Scan frontend files for banned design patterns (purple gradients, glassmorphism, etc.).

Use this tool to verify frontend code follows eth-mcp design guidelines BEFORE finishing any frontend work.

Scans for:

  • Purple/violet/indigo/lavender colors (BANNED)

  • Gradient backgrounds (BANNED)

  • Glassmorphism/blur effects (BANNED)

  • Excessive shadows > shadow-md (BANNED)

  • Purple-adjacent gradient combinations (BANNED)

Returns errors and warnings with line numbers and suggested fixes.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesRelative path to file or directory to lint (e.g., 'packages/nextjs/app/page.tsx' or 'packages/nextjs/components')

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description details what patterns are checked and the output format (errors/warnings with line numbers and suggested fixes). However, with no annotations, it lacks transparency about side effects, permissions, or error handling (e.g., invalid paths).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured, starting with the purpose, then listing banned patterns in a bulleted list, and ending with the output format. Every sentence adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple parameter and no output schema, the description covers what the tool does, what it checks, and what it returns. It is mostly complete but could mention output format details or error handling for a fully comprehensive view.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers the 'path' parameter with a clear description and example. The tool description adds little beyond the schema itself, as the schema already adequately defines the parameter usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool scans frontend files for banned design patterns, listing specific patterns to check. It distinguishes itself from siblings like frontend_validateAll by focusing exclusively on design pattern violations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly tells when to use the tool ('before finishing any frontend work') and provides a clear context. However, it does not mention when not to use it or suggest alternative tools for broader validation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

frontend_validateAllA

Scan entire frontend for ALL critical rule violations.

This tool performs a comprehensive scan of your frontend code for:

CRITICAL (would block writes):

  • Hardcoded contract addresses (use useDeployedContractInfo instead)

  • Raw wagmi hooks (use scaffold-eth hooks)

  • Infinite token approvals (security risk!)

  • Old hook names (useScaffoldContractRead → useScaffoldReadContract)

  • Dangerous config changes (onlyLocalBurnerWallet: false)

WARNINGS (non-blocking):

  • Inline ABI definitions (should use deployedContracts/externalContracts)

  • Generic hardcoded addresses (may be intentional)

Use this tool to audit your codebase before deployment or to find existing issues.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoRelative path to scan (default: 'packages/nextjs')
includeWarningsNoInclude warning-level issues in results (default: true)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It details the categories of violations (critical and warnings) and their implications (e.g., 'would block writes'). This gives a good behavioral overview, though it does not specify output format or side effects beyond being a scan.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear intro, bullet points for violation types, and a usage note. It is informative without being verbose, though it could tighten slightly while retaining key details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description explains what violations are detected but does not describe the output format or how results are returned (e.g., list of issues, severity levels). Given no output schema, this omission reduces completeness for an agent needing to handle results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, but the description adds value by explaining the nature of violations and hinting at default paths (packages/nextjs). It connects parameters to real-world scenarios (e.g., includeWarnings controlling warning display), which aids parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool scans the entire frontend for critical rule violations, with specific examples of what it checks. This distinguishes it from siblings like frontend_lintDesign which focuses on design linting, and other tools that handle accounts, stacks, or addresses.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly advises to use this tool before deployment or to find existing issues, providing clear context for when to use it. However, it does not mention when not to use it or alternative tools, leaving some room for improvement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

process_listA

List all managed processes and their status. Shows process ID, command, status, PID, and start time.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It lists the data returned but does not explicitly state that the operation is read-only or non-destructive. For a list tool, this is minimally adequate but lacks explicit transparency about side effects or permissions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences: the first states the core purpose, the second lists the output fields. No wasted words, front-loaded, and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description adequately covers the return values (fields shown). For a simple list tool with no parameters, this is sufficient. Missing details like pagination or filtering are not critical for basic usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters, so parameter semantics are not needed. According to guidelines, 0 parameters yields a baseline of 4. The description adds value by specifying the output fields, but that is not parameter-related.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'List all managed processes and their status'. It specifies the fields shown (process ID, command, status, PID, start time), distinguishing it from siblings like process_stop or process_logs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives. For example, if an agent needs to stop a process or view logs, the description does not indicate that other tools should be used. Usage context is only implied by the tool name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

process_logsB

Get stdout and stderr logs for a managed process. Use tail parameter to get only the last N lines.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProcess ID (e.g., 'fork', 'frontend')
tailNoNumber of lines to return (from the end)

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It mentions log sources but does not disclose return format, limits, error behavior, or stream vs fetch semantics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with purpose, no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema; description does not specify return format (text, JSON, lines). Lacks detail on combined vs separate streams.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 100% description coverage, and description reinforces purpose (tail for last N lines) but adds minimal new meaning beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Get stdout and stderr logs for a managed process,' which specifies verb and resource. It distinguishes from sibling tools like process_list (list processes) and process_stop.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides guidance on using the 'tail' parameter to limit lines, but does not explicitly state when to use this tool vs alternatives (e.g., process_list) or provide exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

process_stopC

Stop a specific managed process by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProcess ID to stop

TDQS

C2.9/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description does not disclose any behavioral traits such as destructiveness, reversibility, required permissions, or side effects of stopping a process. This is a significant gap for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence of 7 words, front-loaded with the action and resource. It is efficient, though it could be slightly more structured with additional context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given low complexity (1 param, no output schema), the description covers the basic purpose but lacks behavioral context and usage guidance. For a mutation tool, missing information about consequences or prerequisites makes it incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% as the 'id' parameter has a description in the schema. The tool description adds no additional meaning beyond the schema, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description is clear: 'Stop a specific managed process by ID.' It specifies the action (stop), resource (managed process), and the key identifier (ID). It distinguishes from siblings like process_list and process_logs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus siblings like stack_stop or process_list. No prerequisites or alternatives mentioned. The description only states the action without context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

project_listFilesA

List files in a project directory. Path should be relative to the project root. Use to explore the project structure.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoRelative path to the directory (default: root)
recursiveNoList files recursively (default: false)

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description bears full burden. Only states basic function; lacks details on permissions, hidden files, or output format.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise sentences: purpose, path guidance, use case. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a simple listing tool with two parameters. Lacks description of output format or return values, but no output schema exists.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for both parameters. Description adds 'Path should be relative to project root' but does not elaborate beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states action (list files), resource (project directory), and purpose (explore project structure). Distinguishes from sibling tools like project_readFile and project_writeFile.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides guidance on path being relative and purpose, but does not explicitly state when not to use or mention alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

project_readFileA

Read a file from the Scaffold-ETH project. Path should be relative to the project root. Cannot read .env files or files containing private keys.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesRelative path to the file (e.g., 'packages/foundry/contracts/YourContract.sol')

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries burden. Discloses that .env and private-key files are unreadable, which is a behavioral constraint. Could add more about read-only nature or error handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise sentences that convey all necessary information without redundancy. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of the tool (one parameter, no output schema) and sibling context, the description is mostly complete. Could mention return format or error behavior, but not critical.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter (path) with 100% schema description coverage. Description adds context: 'relative to project root' and an example, enhancing understanding beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Read a file' from the Scaffold-ETH project, with a specific verb and resource. It distinguishes from siblings like project_writeFile and project_listFiles by focusing on reading.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear guidelines on path relativity and restrictions (cannot read .env or files with private keys). Does not explicitly mention when to use alternatives, but the restrictions are helpful.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

project_writeFileA

Write content to a file in the Scaffold-ETH project. Path should be relative to the project root. Cannot write to .env files or write content containing private keys. Creates parent directories if they don't exist.

IMPORTANT: After writing frontend files, you MUST review the code against critical rules. The response will include a REVIEW_REQUIRED section with instructions.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesRelative path to the file
contentYesContent to write to the file

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses behavior: creates parent directories, restricts certain content, and requires review. However, it does not mention overwrite behavior, error handling, or access control.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is highly concise: 4 sentences, no filler. Front-loaded with the main action, then constraints, then critical follow-up. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple 2-param tool with no output schema, the description covers the essential: action, constraints, and post-write review. It does not explain return values, but that is acceptable given the context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for both params. The description adds value beyond the schema: path is relative to project root, content cannot contain private keys. Baseline 3 is elevated due to extra clarification.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Write content to a file in the Scaffold-ETH project' with specific verb and resource. It distinguishes from sibling tools like project_readFile and project_listFiles by focusing on writing, and includes constraints like path relative to root.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidelines: when to use (writing files), constraints (no .env files, no private keys), and a mandatory post-write review for frontend files. It lacks explicit exclusions or alternative tools, but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

stack_checkAccountA

INTERACTIVE COMMAND - Returns instructions for the user to run manually.

'yarn account' shows the deployer address and balances but MAY prompt for the keystore password. AI tools should NOT run this command as it may hang waiting for password input.

This tool returns step-by-step instructions for the user to run in their terminal.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses interactive nature, potential password prompt, and risk of hanging. No annotations provided, so description fully covers behavioral traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with 'INTERACTIVE COMMAND', every sentence earns its place. Concise yet comprehensive.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters and no output schema, description fully explains purpose, usage constraints, and behavior. Complete for the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters, but description adds context about the command behavior (interactive, password prompt) beyond the empty schema. Baseline for 0 params is 4, and description adds value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it returns instructions for manual execution of 'yarn account'. Verb and resource are specific, and it distinguishes from other stack_ tools which likely automate actions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states AI tools should NOT run this command and provides alternative: user runs manually. Clear when-to-use and when-not-to-use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

stack_checkProductionReadinessA

Check if the project is ready for production deployment.

CRITICAL: Call this BEFORE deploying to Vercel or any production hosting.

This tool verifies:

  1. RPC Configuration - Checks if NEXT_PUBLIC_ALCHEMY_API_KEY is set (required for non-Ethereum chains)

  2. Environment files - Checks if .env.local exists with required variables

  3. Chain compatibility - Warns about chains that need custom RPC

For chains like Base, Optimism, Arbitrum, Polygon:

  • Public RPCs (mainnet.base.org) WILL fail with 429 rate limits in production

  • You MUST set up your own RPC via Alchemy (free tier available)

Returns a pass/fail checklist with specific instructions for any failed items.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It describes the tool as a 'check' returning a pass/fail checklist, implying read-only behavior but does not explicitly state absence of side effects or permission requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is well-structured with a clear title, critical note, bullet points, and additional detail. Efficient with minimal redundancy, though slightly verbose on chain details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no parameters and no output schema, the description fully explains purpose, return type (pass/fail checklist), and provides actionable insights on RPC setup. Complete for its complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has no parameters (0 params, 100% schema coverage). Per guidelines, baseline is 4 since no parameter info is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool checks production readiness for deployment, listing three specific verification areas (RPC, env files, chain compatibility). It uses imperative language and contrasts with sibling tools like stack_checkAccount.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states 'CRITICAL: Call this BEFORE deploying to Vercel or any production hosting,' providing clear when-to-use guidance. Does not mention when not to use, but context suffices.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

stack_configureExternalContractsA

Configure external contracts for the Scaffold-ETH debug UI.

Adds contract addresses and ABIs to packages/nextjs/contracts/externalContracts.ts so you can interact with external protocols (USDC, Aave, Uniswap) in the debug UI.

WHEN TO USE: When building projects that interact with external contracts:

  • Token interactions: "build a USDC vault" → add USDC with type: "ERC20"

  • DeFi integrations: "integrate with Aave" → add Aave pool with type: "AaveV3Pool"

  • DEX swaps: "swap on Uniswap" → add router with type: "UniswapV3Router"

BUNDLED ABIs (no external fetch needed):

  • ERC20: Standard tokens (USDC, DAI, WETH, etc.)

  • ERC721: NFT contracts

  • ERC4626: Tokenized vaults

  • AaveV3Pool: Aave lending pool

  • AaveV3PoolDataProvider: Aave data queries

  • UniswapV3Router: Uniswap V3 swaps

  • UniswapV3Quoter: Swap quotes

  • UniswapV2Router: V2-style DEX swaps

If a contract type is not bundled and no ABI is provided:

  • Try using Blockscout MCP to fetch the ABI

  • Or instruct the user to get the ABI from Etherscan/Blockscout manually

CHAIN IDs: Adds entries for BOTH 31337 (local fork) AND the real chainId, so contracts work during local dev and after mainnet deployment.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainNoChain name for address lookup (mainnet, base, optimism, arbitrum, polygon). Defaults to project's configured chain.
contractsYesList of external contracts to configure

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description discloses key behaviors: writes to a file, adds entries for both local fork and mainnet chain IDs, lists bundled ABIs, and fallback to external fetch. It does not explicitly state whether it overwrites or appends, but the detail is commendable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with sections and bullet points, making it scannable. While it could be slightly more concise, the examples and detail are warranted given the tool's complexity and the agent's need for precise guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the nested input schema and no output schema, the description covers the tool's operation comprehensively: file path, chain behavior, bundled ABIs, error handling for missing ABIs. It does not describe return values, which is acceptable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds significant value beyond the schema: it explains the default behavior for 'chain', the automatic address lookup when not provided, and lists the available contract types for bundled ABIs. This helps agents construct correct inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool configures external contracts for the Scaffold-ETH debug UI by adding addresses and ABIs to a specific file. It distinguishes itself from sibling tools (e.g., stack_init, stack_install) which focus on project setup, while this is about adding external contract integrations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a 'WHEN TO USE' section with concrete examples (token interactions, DeFi, DEX swaps) and mentions fallback behaviors for missing ABIs. It lacks explicit when-not-to-use or alternatives, but the context is clear enough for typical scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

stack_generateAccountA

INTERACTIVE COMMAND - Returns instructions for the user to run manually.

'yarn generate' creates an encrypted deployer keystore but REQUIRES interactive password input. AI tools CANNOT run this command - it will hang waiting for input.

This tool returns step-by-step instructions for the user to run in their terminal.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, but the description discloses the interactive behavior, requirement for password input, and that it returns instructions. It does not detail side effects or outcome storage, but sufficiently covers behavioral traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with three short, well-structured paragraphs. Every sentence adds value, and key information ('INTERACTIVE COMMAND') is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no parameters and no output schema, the description fully explains its purpose, behavior, and return value (step-by-step instructions). No gaps remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, so schema coverage is 100%. The description adds value by explaining the command without needing parameter details. Baseline for 0 params is 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns instructions for 'yarn generate' to create an encrypted deployer keystore. It distinguishes from siblings by noting it is interactive and cannot be run by AI.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to use (to generate an account) and when not to use (AI cannot run it; it returns instructions). Provides clear guidance on its interactive nature.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

stack_initA

Initialize a new Scaffold-ETH 2 project with Foundry, configured for a specific mainnet chain.

IMPORTANT: The chain parameter specifies which MAINNET to fork for local development. All development happens on a LOCAL Anvil fork (chainId 31337) - you never deploy directly to mainnet from here.

Supported chains: mainnet, base, optimism, arbitrum, polygon. NO TESTNETS - use fork workflow instead (fork gives you real mainnet state for free).

Development workflow after init:

  1. stack_install() - Install dependencies

  2. stack_start(["fork"]) - Runs: yarn fork --network

  3. stack_start(["deploy"]) - Deploy to LOCAL fork (free!)

  4. stack_start(["frontend"]) - Start frontend connected to local fork

  5. When ready: yarn generate && yarn deploy --network for mainnet

The workspace path should be an empty directory. Requires Foundry CLI tools (forge, anvil) - call stack_install_foundry first if not installed.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainYesTarget chain for forking (e.g., 'base', 'mainnet', 'optimism')
templateYesTemplate to use (only scaffold-eth supported)
workspacePathYesPath where the project should be created

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It explains that development happens on a local Anvil fork (chainId 31337) and never deploys directly to mainnet, lists supported chains, and notes prerequisites (Foundry CLI). Covers side effects and constraints well.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with important notes and numbered workflow steps. It front-loads the purpose and each section earns its place, though could be slightly more concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and 3 parameters, the description covers purpose, workflow, constraints, prerequisites, and supported chains. It is complete enough for an agent to understand and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 100% coverage on parameters. The description adds value by clarifying that 'chain' means a mainnet to fork and that template is only scaffold-eth, but does not add significant new information beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states 'Initialize a new Scaffold-ETH 2 project with Foundry' with a specific verb and resource. It clearly distinguishes from sibling tools like stack_install and stack_start by focusing on project initialization.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear context on when to use (starting a new project), what not to do ('NO TESTNETS'), and a full workflow after init. Does not explicitly compare to alternatives, but the workflow steps and warnings are sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

stack_installA

Install dependencies for the Scaffold-ETH project. This runs 'yarn install' in the workspace. Must run stack.init first.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description must disclose behavior. It states it runs 'yarn install', which implies file mutation, but does not describe potential side effects, authorization needs, or whether it is safe (e.g., non-destructive).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with the main action. Every word is relevant and there is no extraneous text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity and lack of parameters/annotations/output schema, the description adequately covers the prerequisite and core behavior. However, it could be improved by noting possible output or error states.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters and the schema has 100% coverage. The description adds no parameter info, but baseline for 0 params is 4. It does not need to explain the empty schema further.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool installs dependencies for the Scaffold-ETH project by running 'yarn install'. It uses specific verbs and resources, and distinguishes itself from sibling tools like stack_install_foundry.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions a prerequisite ('Must run stack.init first') but does not compare to alternatives like stack_install_foundry or provide scenarios for when not to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

stack_install_foundryA

Install the Foundry toolchain (forge, anvil, cast, chisel). Call this tool if stack_init or stack_start fails with "Foundry not installed" error. This downloads and runs the official Foundry installer (foundryup). Requires curl and bash to be available.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, but description discloses that it downloads and runs foundryup, requires curl and bash. Lacks mention of potential side effects, but adequate for an installer.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences, all essential. Front-loaded purpose and context, no fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers what, when, and prerequisites well. Minor gap: no mention of output or success/failure indication, but acceptable given simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist; description fully explains what the tool does without relying on schema, adding value beyond the empty schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states 'Install the Foundry toolchain (forge, anvil, cast, chisel)' and explicitly ties to failure conditions of sibling tools stack_init/stack_start, distinguishing its purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-to-use: 'Call this tool if stack_init or stack_start fails with "Foundry not installed" error.' Also mentions prerequisites (curl, bash).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

stack_startA

Start one or more stack components for LOCAL development.

Components:

  • fork: Start LOCAL Anvil fork of the chain configured during stack_init (chainId 31337) RUNS: yarn fork --network Example: If you initialized with chain "base", this runs: yarn fork --network base Anvil understands chain names and resolves them to RPC URLs automatically. This creates a local copy of mainnet state - all testing happens here for FREE.

  • deploy: Deploy contracts to the LOCAL fork (NOT to mainnet!) This is safe and costs nothing - iterate as many times as needed.

  • frontend: Start the Next.js dev server connected to the local fork

IMPORTANT: All deployment via this tool goes to localhost:8545 (the local fork). This is the development workflow - test everything locally before mainnet.

For MAINNET deployment (after testing):

  1. yarn generate - Create deployer wallet

  2. yarn deploy --network - Deploy to real mainnet

You can start multiple components at once. Order matters: fork should start before deploy.

ParametersJSON Schema
NameRequiredDescriptionDefault
componentsYesComponents to start: fork, deploy, frontend

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, description fully explains behavior: fork creates local anvil fork, deploy is safe to localhost, frontend starts dev server; mentions ordering and that all testing is free.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with bullet points and sections, but slightly lengthy; however, every sentence adds value. Front-loaded with purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, description fully covers what each component does and prerequisites (stack_init), making it complete for a development tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Adds significant value beyond schema: explains each enum option with examples (e.g., 'yarn fork --network base') and notes ordering dependency, though schema coverage is 100%.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool starts stack components for LOCAL development, listing specific components (fork, deploy, frontend) and distinguishing it from siblings like stack_stop.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to use (local development) and when not to (mainnet), provides alternative workflow for mainnet via yarn commands.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

stack_statusA

Get the current status of the Scaffold-ETH stack. Returns initialization state, component status, URLs, and deployed contracts.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description provides good transparency by explicitly listing what information is returned (initialization state, component status, URLs, deployed contracts). It implies a read-only operation with no side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences, front-loaded with the action verb 'Get' and immediately stating the resource. Every word adds value without waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters and no output schema, the description adequately covers what the tool returns. It could potentially mention prerequisites (e.g., stack initialized), but overall it is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has no parameters, and the schema coverage is 100% (empty). The description does not need to add parameter semantics, achieving the baseline of 4 for zero-parameter tools.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool gets the current status of the Scaffold-ETH stack, listing returned information types (initialization state, component status, URLs, deployed contracts). This distinguishes it from sibling tools like stack_init or stack_start.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit usage guidance is given. It is implied that the tool is used to obtain overall stack status, but no when-to-use or alternatives are mentioned, which is acceptable given the tool's straightforward nature.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

stack_stopB

Stop one or more running stack components (fork, frontend).

ParametersJSON Schema
NameRequiredDescriptionDefault
componentsYesComponents to stop

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description must disclose behavioral traits. Only states 'stop', omitting side effects, reversibility, or dependency impacts. Lacks depth for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no wasted words. However, could list components in a more structured way or add a brief note. Efficient but minimally adequate.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Simple tool with one parameter; description suffices for basic usage. Lacks output schema or return behavior details, but context signals indicate no output schema needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has full description coverage (100%) for the single parameter 'components' with enum values. Description adds no extra meaning beyond 'Components to stop'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states action (stop) and resource (stack components) with specific examples (fork, frontend). Distinguishes from sibling tools like stack_start and stack_status.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives, such as process_stop or stack_status. Missing prerequisites or context for stopping components.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A3.9/5.0
Disambiguation5/5

Each tool clearly targets a distinct aspect of the scafford-eth workflow, education, DeFi data, or address lookups. Even similar-sounding tools like addresses_getToken and addresses_findToken have different purposes (exact address vs. cross-chain search), eliminating confusion.

Naming Consistency5/5

All tool names follow a consistent 'category_verb_noun' pattern using snake_case (e.g., education_explainLesson, stack_start, defi_getProtocolTVL). This makes the tool surface highly predictable and easy for an AI to navigate.

Tool Count4/5

34 tools is on the high side, but each tool serves a necessary function within the multi-faceted scaffold-eth domain (stack management, education, DeFi, addresses, frontend, project files, processes). A few tools could be merged (e.g., stack_start could combine fork/deploy/frontend into one param), but the granularity aids clarity.

Completeness4/5

The tool set covers the full local development workflow: init, install, start/stop components, configure external contracts, check production readiness, and even education and linting. The only notable gap is automated mainnet deployment, which is intentionally left as manual instructions, so the surface feels slightly incomplete for a truly end-to-end pipeline.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/austintgriffith/eth-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server