Skip to main content
Glama

dApp & Link Check (Crypto)

crypto_dapp_check
Read-onlyIdempotent

Open a crypto page — a dApp, airdrop, claim or mint link — and report what it asks a wallet to do. DechoNet opens it in an isolated Chromium (Seoul) with a test wallet that holds nothing (EVM, Solana and TRON): it presses the page's "Connect wallet" button once (or one "Claim" button when there is none) and the test wallet in a wallet picker once; it types nothing and submits no form, and the test wallet connects with a burn address and refuses every signature and transaction. Reported: each wallet request in order with what approving it would allow (unlimited token approvals, setApprovalForAll, Permit/Permit2 signatures, transfers, Solana transactions, TRON approvals and account-permission changes), drainer-kit code markers in the page scripts, a connect button that sends the visitor to another site, and the phishing link check verdict of the same link (including whether it is the brand's own domain). Verdicts: danger, suspicious, official, no_signals, unreachable. no_signals means none of these were seen and is not a statement that the page is harmless: drainers that wait for a second press, show nothing to an automated browser or ask only after a sign-in can go unseen, and on new drainer samples few were caught by wallet requests alone (figures on dechonet.com/methodology); 'unchecked' lists what was not looked at. Every call opens the page (no cached answer), so it takes longer than the other checks, and it has a per-minute rate limit and a daily limit shared by all callers. Only the host, the verdict and the kinds of request are kept (90 days); no API key.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "url": "<url>"
    },
    "name": "crypto_dapp_check"
  }
}

Input Schema

NameRequiredDescriptionDefault
urlYesAddress of the page to open (https://…; a bare domain is opened over https)

Output Schema

NameRequiredDescriptionDefault
hostNoThe host the page ended on
signalsYes
verdictYesno_signals: none of the checks saw a warning sign — not a statement that the page is harmless (see unchecked)
receiptsNoSigned observation receipts behind this result, one per lookup: when, from where and under which rules version DechoNet observed it. Each url shows the record and checks its Ed25519 signature.
renderedYesFalse when the page could not be opened with the test wallet (then little was seen)
requestsYesWallet requests the page made, in order
uncheckedYes
phishingVerdictNoThe phishing link check verdict for the same link

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.4/5.0
Behavior5/5

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

Well beyond the supplied annotations, the description details the execution environment (isolated Chromium in Seoul, empty test wallet across EVM/Solana/TRON), the exact interaction budget (one Connect press, one wallet-picker click, no typing, no form submission), and that every signature/transaction is refused. It also discloses limits and data handling: no caching, per-minute plus shared daily rate limits, 90-day retention of host/verdict/request kinds, and no API key required.

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?

Purpose and interaction model are front-loaded, and the caveat about no_signals plus the 'unchecked' list are correctly placed after the verdict vocabulary. A few clauses are dense but each carries operational weight (partial-detection caveat, methodology pointer, rate limits); a slightly tighter phrasing of the no_signals paragraph would earn a 5.

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 high-complexity, open-web tool with real rate limits, the definition covers environment, interaction limits, verdict taxonomy, detection blind spots, persistence, and cost. Return values are partly covered by the output schema, and the safety posture is already carried by the annotations.

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% and the single url parameter is fully documented in the schema (https, bare domain upgraded to https). The description adds no extra parameter meaning — it does not discuss how the URL is normalized or what happens with non-HTML targets. With the schema doing all the work on one parameter, the 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?

The opening sentence gives a specific verb and object ('Open a crypto page — a dApp, airdrop, claim or mint link — and report what it asks a wallet to do'), which is far more precise than the tool name alone. It also separates itself from a plain link check by noting the phishing verdict is only one part of a broader wallet-request report.

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 use case is unmistakable: when you need to know what a dApp/link would ask a wallet to approve, before signing. Cost and constraint context is given ('takes longer than the other checks', per-minute and daily limits), which helps an agent decide whether to spend the call. It stops short of explicit routing — it never says to use phishing_link_check or crypto_check_before_sign instead when only part of this output is needed.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources