get_domain_report
One domain's stored assessment: the verdict, the date it was reached, the findings with their sources, and the permanent report link.
domain, language
Ask your assistant whether a website is a scam and it answers with our verdict, when we reached it, the named sources behind it, and a link to the published report. Free and keyless, one domain at a time. Read-only, and it never starts an analysis you did not ask for.
Add this address to your assistant as a remote MCP server (Streamable HTTP). No account, no key, no sign-up.
https://desenmascara.me/mcp/v1The free tier answers get_domain_report and check_before_payment, up to 30 requests a minute per address. Searching across domains needs an API key (below).
One domain's stored assessment: the verdict, the date it was reached, the findings with their sources, and the permanent report link.
domain, language
For an AI agent about to pay on a site: one action — do_not_pay, stop_and_ask_user or no_fraud_found — with the reasons, the report link and a hash of the evidence. Anything unsettled, including a domain never assessed, is stop_and_ask_user. The same answer as the Agent Trust API below.
domain, amount?, currency?, category?
Domains your account can see whose name matches a query, each with its verdict, assessment time and report link. Requires an API key.
query, limit, cursor, language
For payment platforms and agent builders that do not speak MCP: the same pre-payment answer over plain HTTPS. With an API key, a merchant we have never assessed is queued for analysis; without one, the free tier and its per-address limit apply.
curl -X POST https://desenmascara.me/api/v1/agent/merchant-check/ \
-H "X-API-Key: $DESENMASCARA_API_KEY" -H "Content-Type: application/json" \
-d '{"domain": "example-shop.com", "amount": 150, "currency": "EUR", "category": "footwear"}'
{
"schema": "agent-trust/1.0",
"domain": "example-shop.com",
"recommendation": "BLOCK",
"reason": "Published as fraudulent, with evidence in the report.",
"verdict": "FRAUDULENT",
"risk_score": 97.0,
"assessed_at": "2026-10-15T21:47:03+00:00",
"reasons": ["Domain registered 2 days ago"],
"report_url": "https://desenmascara.me/analisis/…",
"evidence_sha256": "658140d0ac2bc4b2…",
"evidence_sha256_covers": ["domain", "verdict", "risk_score", "assessed_at",
"assessed_by", "evidence", "report_url", "revision"],
"context": {"amount": 150.0, "currency": "EUR", "category": "footwear"},
"elapsed_ms": 87
}Published as fraudulent with evidence, or the site hides instructions aimed at AI agents. Do not pay.
Risk signals, no verdict, an assessment over six months old, or a merchant never assessed. Hand the decision to the person.
No fraud found when assessed. Not a guarantee of the payment.
evidence_sha256 is the SHA-256 of the canonical JSON (sorted keys, no whitespace) of the fields listed in evidence_sha256_covers. Store it with the transaction.
A verdict nobody can verify is an assertion. Every finding carries the source that made it, that source's own date, and a reference you can follow — whether the source is a public feed or our own corpus of analysed domains. Your assistant can cite us; your reviewer can audit the citation.
{
"domain": "trusthvast.com",
"verdict": "FRAUDULENT",
"risk_score": 90,
"confidence": null,
"decision_source": "automated",
"assessed_at": "2026-06-26T01:55:03+00:00",
"explanation": "Presents itself as a crypto trading platform
promising 45% ROI in short periods. The domain is very young
(105 days) and hosted on an IP address associated with a
100% risky fraud-infrastructure cluster. Social media icons
do not link to real profiles...",
"evidence": [
{
"label": "Hosted on an address where 108 of 115 domains
we have analysed are flagged (94%)",
"source": "desenmascara.me corpus",
"observed_at": "2026-06-26T01:55:03+00:00",
"reference": "163.61.188.2",
"kind": "infrastructure_cluster"
}
],
"report_url": "https://desenmascara.me/analisis/86592e63-..."
}{
"domain": "binancefxpro.com",
"verdict": "FRAUDULENT",
"risk_score": 95,
"evidence": [
{
"label": "Listed on DestroyList, the curated phishing
feed maintained by PhishDestroy",
"source": "PhishDestroy DestroyList",
"source_url": "https://raw.githubusercontent.com/...",
"observed_at": "2026-09-09T06:15:59+00:00",
"reference": "binancefxpro.com",
"kind": "threat_feed"
}
]
}Most of the design here is about refusing to say more than we know. An assistant cannot see a page to judge it for itself, so everything it repeats is on us.
This service publishes verdicts about real businesses, so it also publishes its corrections. When a threat feed withdraws a listing, our verdict withdraws with it, and the report says why. When a human reviewer overrules the pipeline, the tool reports the human's verdict and the human's reasoning, not the one they overruled. Every published report keeps its earlier versions at their own permanent links, so you can see whether we changed our mind and when. An assistant that repeats us inherits all of that.
Search rides on an existing paid plan. There is no separate MCP purchase, price or credit: these tools read assessments that already exist and never spend an AI call.
Keys and allowlisting are issued by hand today, which is why this part is a conversation rather than a button. It is also why we would like to hear what you are building: the first integrations shape the second release.
| Citizen | Reports, plus search across your account's own history |
|---|---|
| Startup / Enterprise | Reports, plus search across the full corpus |
For keyed access: a stdio adapter you run beside your assistant, with its own pinned dependencies. Configuration is environment variables; the key never appears in a tool argument, where a model could read it back.
Verified against Claude Code and the official Python SDK client.
Requesting a new analysis of a domain we have never seen is the next release, and that one does spend credits — which is exactly why it is separated from this one. Dated history and immutable report versions follow it.