MCP · OpenAPI · llms.txt

DeepCounterfeit for AI agents

Give your agent a brand-impersonation check. Before it helps a user buy, list, promote or launch a token, it can ask DeepCounterfeit whether the coin is posing as a real company, its “official” token or its tokenized stock.

MCP endpoint

https://deepcounterfeit.com/mcp

Remote MCP server over Streamable HTTP (JSON responses, stateless). Protocol versions 2024-11-05 through 2025-11-25. Read-only tools. Without a key you're on the Free tier. Add Authorization: Bearer <API key> for your plan's real-time access. Get a key (14-day real-time trial).

Connect your agent

One command (drop the header for the Free tier):

claude mcp add --transport http deepcounterfeit https://deepcounterfeit.com/mcp \
  --header "Authorization: Bearer YOUR_API_KEY"

Without a key: Settings → Connectors → Add custom connector, paste https://deepcounterfeit.com/mcp.

With a key: add this to claude_desktop_config.json (uses the mcp-remote bridge, needs Node.js), then restart Claude:

{
  "mcpServers": {
    "deepcounterfeit": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://deepcounterfeit.com/mcp",
               "--header", "Authorization: Bearer ${DC_API_KEY}"],
      "env": { "DC_API_KEY": "YOUR_API_KEY" }
    }
  }
}

Add to ~/.cursor/mcp.json (or .cursor/mcp.json in a project):

{
  "mcpServers": {
    "deepcounterfeit": {
      "url": "https://deepcounterfeit.com/mcp",
      "headers": { "Authorization": "Bearer YOUR_API_KEY" }
    }
  }
}

ChatGPT (plans with developer mode): Settings → Apps & Connectors → Advanced settings → enable Developer mode → Create. Enter https://deepcounterfeit.com/mcp as the MCP server URL and choose No authentication.

ChatGPT connectors don't send custom API-key headers, so this runs on the Free tier for now. We also expose search and fetch tools for ChatGPT's connector and deep-research conventions.

Responses API, hosted MCP tool:

from openai import OpenAI
client = OpenAI()
resp = client.responses.create(
    model="YOUR_MODEL",
    tools=[{
        "type": "mcp",
        "server_label": "deepcounterfeit",
        "server_url": "https://deepcounterfeit.com/mcp",
        "headers": {"Authorization": "Bearer YOUR_API_KEY"},
        "require_approval": "never",
    }],
    input="Is the token 21gwoStzKtpHaDVPF2wV5TCUm4tVw82hzCT8w3Lnpump a real Anthropic coin?",
)
print(resp.output_text)

OpenAI Agents SDK (Python):

from agents import Agent, Runner
from agents.mcp import MCPServerStreamableHttp

async with MCPServerStreamableHttp(
    name="deepcounterfeit",
    params={"url": "https://deepcounterfeit.com/mcp",
            "headers": {"Authorization": "Bearer YOUR_API_KEY"}},
) as dc:
    agent = Agent(name="Token safety", mcp_servers=[dc],
                  instructions="Before recommending any token, call check_token or check_name.")
    result = await Runner.run(agent, "Any high-risk fake Coinbase coins this week?")
    print(result.final_output)

Plain JSON-RPC over HTTP POST:

curl -s https://deepcounterfeit.com/mcp \
  -H "Content-Type: application/json" -H "Accept: application/json, text/event-stream" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
       "params":{"name":"check_name","arguments":{"name":"SpaceX Official","symbol":"SPACEX"}}}' 

Tools

All tools are read-only. Responses are JSON (MCP structuredContent plus a text copy). Times are UTC (ISO 8601). * = required.

check_token · Check a token for brand impersonation

Look up a deployed token by contract/mint address and report whether it impersonates a real company, its "official" token or its tokenized stock (e.g. a fake SpaceX, Coinbase or NVDAx coin). Returns verdict (likely_impersonation | brand_mention_watch | not_in_index), matched brands, risk score 0-100 with reasons (creator bought supply at launch, same-block bundles, creator cash-out, serial launcher), creator wallet and explorer links. Use before buying, listing or promoting a token. "not_in_index" only means no brand match was recorded, not that the token is safe. Without an API key: brand match and coin only (flagged as likely impersonation), no risk score, creator wallet or forensics.

ParameterTypeDescription
address *stringToken mint (Solana) or contract address (0x... on BNB Chain, Base, Robinhood Chain).
chainstring · solana | bsc | base | robinhoodOptional chain filter.

check_name · Check a token name/ticker before launch or purchase

Run the impersonation detector on a token name and/or ticker symbol without needing an address. Tells you whether a coin called e.g. "SpaceX Official" ($SPACEX) or "TSLAx" would be flagged as impersonating a brand, which brand, and why. Use for pre-launch name checks, or when a user mentions a coin by name and you have no address. Does not assess creator behaviour.

ParameterTypeDescription
namestringToken name, e.g. "Coinbase Official Token".
symbolstringTicker symbol without $, e.g. "COIN".
descriptionstringOptional token description text.

search_alerts · Search impersonation alerts

List recent impersonation coins, newest first, filtered by brand, chain, time and severity. Use to answer "are there fake <brand> tokens?", to monitor a brand, or to collect cases for a takedown. Free tier returns alerts older than 24 h only (max 20).

ParameterTypeDescription
brandstringBrand id, name, or ticker, e.g. "spacex", "SpaceX", "TSLA". See list_brands.
chainstring · solana | bsc | base | robinhood
sincestringStart time: relative ("24h", "7d", "30m"), ISO 8601 ("2026-10-01") or unix seconds.
severitystring · high | medium | lowhigh = risk 70+, medium = 50-69.
min_riskinteger
include_watchbooleanAlso include watch-tier brand mentions (memes), not just impersonation alerts.
limitinteger

get_brand_report · Brand impersonation report

Summarise impersonation activity against one brand over a window: number of fake coins, traded volume, breakdown by chain/match type/severity, repeat creator wallets, how many creators bought 50%+ of supply, and the top cases with evidence. Pro/Wholesale keys also get the takedown-ready PDF link.

ParameterTypeDescription
brand *stringBrand id, name or ticker, e.g. "anthropic", "Coinbase", "NVDA".
daysnumberLook-back window in days.

list_brands · List watched brands

List the brands on the watchlist (companies, tokenized stocks, crypto projects, private companies) with ids, tickers and all-time alert counts, most-targeted first. Use to find a brand id or check whether a brand is covered.

ParameterTypeDescription
querystringOptional substring of name, id, alias or ticker.
categorystringOptional: sp500, xstock, crypto, private, foreign, consumer, media, finance, sports, stock.
limitinteger

get_stats · Impersonation statistics

Aggregate numbers for a window: alerts, high-severity count, brands hit, by chain, by match type, top brands, data-source health and coverage. Use for overviews, trend questions and to check data freshness.

ParameterTypeDescription
daysnumberWindow in days (1 = last 24 h).

Example arguments

check_token  {"address": "21gwoStzKtpHaDVPF2wV5TCUm4tVw82hzCT8w3Lnpump"}
check_name  {"name": "SpaceX Official", "symbol": "SPACEX"}
search_alerts  {"brand": "coinbase", "since": "7d", "severity": "high"}
get_brand_report  {"brand": "anthropic", "days": 30}
list_brands  {"query": "tesla"}
get_stats  {"days": 1}

Auth & rate limits

Send your key as Authorization: Bearer <key> (or X-API-Key). No key means the Free tier, limited per IP. An invalid key returns HTTP 401. Going over the limit returns a tool error (MCP) or HTTP 429 (REST).

PlanCallsData
Free $05 / min24 h delayed. Without a key: brand match + coin only (no risk score, creator wallet or forensics)
Starter $29/mo60 / minReal-time
Pro / API $149/mo300 / minReal-time
Wholesale data license $1,500/mo1200 / minReal-time

Evidence PDFs (get_brand_report → evidence_pdf) are included on Pro and Wholesale. See pricing.

REST, OpenAPI & discovery

curl "https://deepcounterfeit.com/v1/agent/check-name?name=Coinbase%20Official&symbol=COIN"

Pay per call (x402)

Live Agents without a key can pay $0.01 USDC per call for real-time results. Payments settle through the public PayAI x402 facilitator.

NetworkAssetStatus
Base eip155:8453USDC 0x8335…2913Live
Polygon eip155:137USDC 0x3c49…3359Live
Arbitrum eip155:42161USDC 0xaf88…5831Live
Avalanche eip155:43114USDC 0xB97E…8a6ELive
Solana solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpUSDC EPjFWd…Dt1vLive
Ethereum · BNB Chain · Robinhood ChainUSDCComing soon

With x402, an agent with no account or key gets a real-time answer for a small USDC payment. The server replies 402 Payment Required with a PAYMENT-REQUIRED header, the agent's wallet signs the payment, and the request is retried with a PAYMENT-SIGNATURE header. Endpoints: GET /v1/x402/token/{address} (real-time check_token) and GET /v1/x402/alerts (real-time alerts, up to 50). Live status: /v1/x402/status. Any x402 v2 client works, e.g. @x402/fetch or the x402 Python SDK.

# 1) Ask: returns 402 + a PAYMENT-REQUIRED header listing the accepted networks
curl -i https://deepcounterfeit.com/v1/x402/token/21gwoStzKtpHaDVPF2wV5TCUm4tVw82hzCT8w3Lnpump
# 2) Your x402 client signs a USDC payment for one option and retries with a PAYMENT-SIGNATURE header

Good to know

  • Live with on-chain creator forensics: pump.fun (Solana); Meteora DBC (bags.fm, Believe and others) (Solana); Raydium LaunchLab · letsbonk · StonkFun (Solana); four.meme (BNB Chain); Flap.sh (BNB Chain); Clanker (incl. Bankr) (Base); Zora coins (Base); Pons V2 (Robinhood Chain). Live status: /status.
  • not_in_index means no brand match was recorded. It is not a safety rating.
  • Results are automated evidence for human review, not legal findings or investment advice. Agents should say so when relaying them.