Safe or Scam

Crypto scam checks (tokens, sites, wallets), chain reads, web page to Markdown, email checks.

Should I use this

Quality & Safety

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

Findings (1)

  • LOWTool 'check_website' description lacks action verbin check_website

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,150Tokens (tool definitions)
~898 BTypical response size
Moderate attention impact (0.90% 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": {
    "safe-or-scam": {
      "url": "https://scam-check.safe-or-scam.workers.dev/mcp"
    }
  }
}

Remote endpoints

https://scam-check.safe-or-scam.workers.dev/mcpstreamable-http

What it can do

Tool inventory

Tools (8)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢check_token(address, chain)

Is this crypto token a scam? Honeypot buy/sell simulation, hidden taxes, mint/freeze authority, hidden owner, blacklist, whale concentration, liquidity lock. Returns red/yellow/green with reasons. EVM chains + Solana.

Input Schema

{
  "type": "object",
  "properties": {
    "address": {
      "type": "string",
      "description": "Token contract address (0x...) or Solana mint"
    },
    "chain": {
      "type": "string",
      "enum": [
        "ethereum",
        "bsc",
        "base",
        "arbitrum",
        "polygon",
        "optimism",
        "avalanche",
        "solana"
      ],
      "description": "Chain: ethereum, bsc, base, arbitrum, polygon, optimism, avalanche, solana"
    }
  },
  "required": [
    "address",
    "chain"
  ]
}
🟢check_website(url)

Is this website a crypto scam or phishing page? Phishing databases, domain age, look-alikes of 45+ crypto brands (MetaMask, Phantom, Binance...), seed-phrase requests, wallet-drainer code. Returns red/yellow/green with reasons.

Input Schema

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "description": "Website address, e.g. example.com or https://example.com/path"
    }
  },
  "required": [
    "url"
  ]
}
🟡check_wallet(address, chain)

Is it safe to send crypto to this address, and is this wallet exposed? Checks scam, phishing, theft, sanctions and mixer links; risky or malicious token approvals (who can drain the wallet); contract vs personal wallet; brand-new 'poisoned' look-alike addresses. Returns red/yellow/green with reasons. EVM chains + Solana.

Input Schema

{
  "type": "object",
  "properties": {
    "address": {
      "type": "string",
      "description": "Wallet address (0x...) or Solana address"
    },
    "chain": {
      "type": "string",
      "enum": [
        "ethereum",
        "bsc",
        "base",
        "arbitrum",
        "polygon",
        "optimism",
        "avalanche",
        "solana"
      ],
      "description": "Chain: ethereum, bsc, base, arbitrum, polygon, optimism, avalanche, solana"
    }
  },
  "required": [
    "address",
    "chain"
  ]
}
🟢get_wallet_balances(address, chain, tokens)

Get a wallet's balances: native coin (ETH, BNB, POL, AVAX, SOL) and tokens. Solana: every SPL token held. EVM: popular tokens on the chain plus any token addresses you pass. Also returns transactions sent and whether the address is a contract.

Input Schema

{
  "type": "object",
  "properties": {
    "address": {
      "type": "string",
      "description": "Wallet address (0x...) or Solana address"
    },
    "chain": {
      "type": "string",
      "enum": [
        "ethereum",
        "bsc",
        "base",
        "arbitrum",
        "polygon",
        "optimism",
        "avalanche",
        "solana"
      ],
      "description": "Chain: ethereum, bsc, base, arbitrum, polygon, optimism, avalanche, solana"
    },
    "tokens": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Optional extra EVM token addresses to include (max 20)"
    }
  },
  "required": [
    "address",
    "chain"
  ]
}
🟢get_transaction(hash, chain)

Look up a transaction by hash: success/failed/pending, confirmations, time, sender, receiver, value, fee, method, decoded token and NFT transfers, and token approvals it granted (flags unlimited approvals). Solana: balance changes per account.

Input Schema

{
  "type": "object",
  "properties": {
    "hash": {
      "type": "string",
      "description": "Transaction hash (0x...) or Solana signature"
    },
    "chain": {
      "type": "string",
      "enum": [
        "ethereum",
        "bsc",
        "base",
        "arbitrum",
        "polygon",
        "optimism",
        "avalanche",
        "solana"
      ],
      "description": "Chain: ethereum, bsc, base, arbitrum, polygon, optimism, avalanche, solana"
    }
  },
  "required": [
    "hash",
    "chain"
  ]
}
🟢get_token_info(address, chain)

Read a token's on-chain details: name, symbol, decimals, total supply. Solana: supply, decimals, mint authority and freeze authority.

Input Schema

{
  "type": "object",
  "properties": {
    "address": {
      "type": "string",
      "description": "Token contract address (0x...) or Solana mint"
    },
    "chain": {
      "type": "string",
      "enum": [
        "ethereum",
        "bsc",
        "base",
        "arbitrum",
        "polygon",
        "optimism",
        "avalanche",
        "solana"
      ],
      "description": "Chain: ethereum, bsc, base, arbitrum, polygon, optimism, avalanche, solana"
    }
  },
  "required": [
    "address",
    "chain"
  ]
}
🟢read_webpage(url, max_chars)

Fetch any public web page and return clean Markdown of its main content (headings, lists, links, code), plus title and description. Strips menus, footers, ads and scripts so it is ready for an LLM. Not charged if the page can't be fetched.

Input Schema

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "description": "Page address, e.g. https://example.com/article"
    },
    "max_chars": {
      "type": "number",
      "description": "Max characters to return (500-100000, default 20000)"
    }
  },
  "required": [
    "url"
  ]
}
🟢check_email(email)

Check an email address before sending or signing someone up: valid format, domain exists and accepts mail (MX), throwaway/disposable domain, typo suggestions (gmial.com → gmail.com), role addresses (info@, support@), SPF/DMARC. Returns valid / risky / invalid with reasons.

Input Schema

{
  "type": "object",
  "properties": {
    "email": {
      "type": "string",
      "description": "Email address to check"
    }
  },
  "required": [
    "email"
  ]
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded8 tools