ScrapeMole Onchain

Pay-per-call x402 Base/Ethereum prices, DEX, ENS, gas, tokens, holders, balances, txs.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
97%
Naming quality
78%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (1)

  • LOWTool 'tx' name length outside 3-30 rangein tx

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,844Tokens (tool definitions)
~915 BTypical response size
Moderate attention impact (1.44% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "onchain": {
      "url": "https://onchain.scrapemole.workers.dev/mcp"
    }
  }
}

Remote endpoints

https://onchain.scrapemole.workers.dev/mcpstreamable-http

What it can do

Tool inventory

Tools (8)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢price(symbols, chain)

Use when you need a trustworthy USD price for crypto assets (ETH, BTC, cbBTC, SOL, LINK, AAVE, stablecoins), fiat FX rates (EUR, GBP, JPY…) or metals (XAU, XAG): reads the Chainlink price feed contracts directly from Base or Ethereum in one multicall and returns price, last update time, age in seconds, a stale flag and the feed address so the value is verifiable on-chain. Up to 10 symbols per call. Paid tool: x402 USDC on Base, $0.002 per successful call; call without payment to receive the PaymentRequired object.

Input Schema

{
  "type": "object",
  "properties": {
    "symbols": {
      "type": "string",
      "description": "Comma-separated asset symbols (max 10), e.g. \"ETH,BTC,USDC,EUR\". GET / lists all supported symbols per chain."
    },
    "chain": {
      "type": "string",
      "description": "Chain to read the feeds from.",
      "enum": [
        "base",
        "ethereum"
      ],
      "default": "base"
    }
  },
  "required": [
    "symbols"
  ],
  "additionalProperties": false
}
🟢token(address, chain)

Use when you have a token contract address and need to know what it is: reads name, symbol, decimals and totalSupply straight from the contract (one multicall) on Base or Ethereum, confirms there is contract code at the address, and adds a Chainlink USD price when one exists for the symbol. Answers 404 (not charged) when the address is not a token. Paid tool: x402 USDC on Base, $0.001 per successful call; call without payment to receive the PaymentRequired object.

Input Schema

{
  "type": "object",
  "properties": {
    "address": {
      "type": "string",
      "description": "Token contract address (0x…)."
    },
    "chain": {
      "type": "string",
      "description": "Chain.",
      "enum": [
        "base",
        "ethereum"
      ],
      "default": "base"
    }
  },
  "required": [
    "address"
  ],
  "additionalProperties": false
}
🟢balances(address, chain, tokens, includeZero)

Use when you need what a wallet or contract holds: reads the native ETH balance and ERC-20 balances (a default set of major tokens, or up to 20 token symbols/addresses you pass) for one address on Base or Ethereum in a single multicall, with human-readable amounts and USD values from Chainlink feeds, plus a total. Zero balances are omitted unless asked. Paid tool: x402 USDC on Base, $0.003 per successful call; call without payment to receive the PaymentRequired object.

Input Schema

{
  "type": "object",
  "properties": {
    "address": {
      "type": "string",
      "description": "Wallet or contract address (0x…)."
    },
    "chain": {
      "type": "string",
      "description": "Chain.",
      "enum": [
        "base",
        "ethereum"
      ],
      "default": "base"
    },
    "tokens": {
      "type": "string",
      "description": "Comma-separated token symbols (from the default list) or 0x token addresses, max 20. Default: major tokens of the chain."
    },
    "includeZero": {
      "type": "string",
      "description": "Also list zero balances (true/false).",
      "default": "false"
    }
  },
  "required": [
    "address"
  ],
  "additionalProperties": false
}
🟢tx(hash, chain)

Use when you need to confirm or explain a transaction (e.g. verify a payment arrived): fetches the transaction, its receipt and block from Base or Ethereum and returns success/failed/pending, confirmations, timestamp, from, to, native value, gas used and fee, the 4-byte method selector, contract created, and every ERC-20 Transfer log decoded with token symbol and human amount. 404 (not charged) if the hash is unknown. Paid tool: x402 USDC on Base, $0.002 per successful call; call without payment to receive the PaymentRequired object.

Input Schema

{
  "type": "object",
  "properties": {
    "hash": {
      "type": "string",
      "description": "Transaction hash (0x + 64 hex)."
    },
    "chain": {
      "type": "string",
      "description": "Chain.",
      "enum": [
        "base",
        "ethereum"
      ],
      "default": "base"
    }
  },
  "required": [
    "hash"
  ],
  "additionalProperties": false
}
🟢ens(name, address)

Use before sending funds or when you only have a human-readable name: resolves ENS names (.eth and DNS names on ENS, including offchain/wildcard resolvers via CCIP-Read such as *.cb.id) and Basenames (*.base.eth, read directly on Base) to a checksummed address; or, given an address, returns its primary ENS name and primary Basename, each forward-verified (the name must resolve back to the address). Names are normalized per ENSIP-15. Unresolvable names are not charged. Paid tool: x402 USDC on Base, $0.001 per successful call; call without payment to receive the PaymentRequired object.

Input Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "ENS name or Basename to resolve, e.g. vitalik.eth or jesse.base.eth. Give name or address."
    },
    "address": {
      "type": "string",
      "description": "Address to reverse-resolve (0x… 40 hex). Give name or address."
    }
  },
  "required": [],
  "additionalProperties": false
}
🟢gas(chain)

Use before sending a transaction or to tell a user what it will cost: reads eth_feeHistory over the last 20 blocks (10th/50th/90th percentile tips), the next base fee and gas price, on Base also the L1 data fee upper bound from the OP-stack GasPriceOracle, and prices typical actions (ETH transfer 21k gas, ERC-20 transfer 65k, DEX swap 180k) in ETH and USD (Chainlink ETH/USD). Paid tool: x402 USDC on Base, $0.001 per successful call; call without payment to receive the PaymentRequired object.

Input Schema

{
  "type": "object",
  "properties": {
    "chain": {
      "type": "string",
      "description": "Chain.",
      "enum": [
        "base",
        "ethereum"
      ],
      "default": "base"
    }
  },
  "required": [],
  "additionalProperties": false
}
🟢dex_price(token, chain)

Use when a token has no Chainlink feed (long-tail, new or memecoins) and you need its current market price: finds every Uniswap v3 pool of the token against WETH, USDC (and USDT on Ethereum) across fee tiers, reads each pool's price (slot0) and reserves in one multicall, converts to USD with Chainlink, and returns the price from the deepest pool plus all pools with their depth. Flags thin liquidity. Uniswap v3 only (Aerodrome and other DEXs not included). Paid tool: x402 USDC on Base, $0.002 per successful call; call without payment to receive the PaymentRequired object.

Input Schema

{
  "type": "object",
  "properties": {
    "token": {
      "type": "string",
      "description": "ERC-20 contract address."
    },
    "chain": {
      "type": "string",
      "description": "Chain.",
      "enum": [
        "base",
        "ethereum"
      ],
      "default": "base"
    }
  },
  "required": [
    "token"
  ],
  "additionalProperties": false
}
🟢holders(address, chain, limit)

Use when you need who holds a token (concentration, whales, treasury): returns the top N holders of an ERC-20 contract on Base or Ethereum with rank, checksummed address, raw and formatted balance, and share of total supply when the explorer provides it. Public name tags and ENS from the explorer are included as labels; no personal identity is invented and emails are stripped. Ethereum prefers Blockscout, falls back to Ethplorer. Base uses Blockscout; if that explorer blocks the request, the call returns 503 and is not charged. Paid tool: x402 USDC on Base, $0.002 per successful call; call without payment to receive the PaymentRequired object.

Input Schema

{
  "type": "object",
  "properties": {
    "address": {
      "type": "string",
      "description": "Token contract address (0x…)."
    },
    "chain": {
      "type": "string",
      "description": "Chain.",
      "enum": [
        "base",
        "ethereum"
      ],
      "default": "base"
    },
    "limit": {
      "type": "string",
      "description": "Max holders to return (1-50).",
      "default": "10"
    }
  },
  "required": [
    "address"
  ],
  "additionalProperties": false
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded8 tools