Agent Preflight: OFAC, DNS, Email Auth, Domain, Email & URL

$0.01/call via x402: OFAC wallet screen, DNS, email auth, domain age, email verify, URL unshorten.

Should I use this

Quality & Safety

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

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,718Tokens (tool definitions)
~1.1 KBTypical response size
Moderate attention impact (1.34% 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": {
    "agent-preflight": {
      "url": "https://sdn-screen-x402.sdnscreen.workers.dev/mcp"
    }
  }
}

Remote endpoints

https://sdn-screen-x402.sdnscreen.workers.dev/mcpstreamable-http

What it can do

Tool inventory

Tools (6)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢ofac_wallet_screen(address)

Screens a crypto wallet address (EVM, BTC, TRON, SOL, XMR and every other chain OFAC lists) against all Digital Currency Addresses on the US Treasury OFAC SDN list. Returns sanctioned true/false, verdict block/no_match, SDN entity name, sdnType, programs and the list publish date. Use when an agent is about to send funds to, pay, or accept funds from an unfamiliar wallet. $0.01 USDC on Base. Paid tool: call it once to get the x402 PaymentRequired object, then retry with params._meta["x402/payment"].

Input Schema

{
  "type": "object",
  "properties": {
    "address": {
      "type": "string",
      "minLength": 20,
      "maxLength": 128,
      "pattern": "^[A-Za-z0-9:_-]+$",
      "description": "Wallet address. EVM 0x... (case-insensitive), BTC 1.../3.../bc1..., TRON T..., Solana base58, etc."
    }
  },
  "required": [
    "address"
  ],
  "additionalProperties": false
}
🟢dns_lookup(name, type)

Resolves live DNS records for any domain or hostname via 1.1.1.1: A, AAAA, CNAME, MX, NS, TXT, SOA and CAA in one call (type=ALL), or a single type incl. SRV, PTR, DS, DNSKEY, HTTPS. Clean JSON with TTLs, NXDOMAIN flag and DNSSEC-authenticated bit. A URL or email address is reduced to its host. Use when an agent needs to verify a domain, find mail servers or nameservers, or read TXT/SPF records. $0.01 USDC on Base. Paid tool: call it once to get the x402 PaymentRequired object, then retry with params._meta["x402/payment"].

Input Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 3,
      "maxLength": 253,
      "description": "Domain or hostname, e.g. example.com. A full URL or email address is accepted and reduced to its host. Alias: domain.",
      "examples": [
        "example.com"
      ]
    },
    "type": {
      "type": "string",
      "enum": [
        "ALL",
        "A",
        "AAAA",
        "CNAME",
        "MX",
        "NS",
        "TXT",
        "SOA",
        "CAA",
        "SRV",
        "PTR",
        "DS",
        "DNSKEY",
        "HTTPS"
      ],
      "default": "ALL",
      "description": "ALL (default: A, AAAA, CNAME, MX, NS, TXT, SOA, CAA) or one record type."
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false
}
🟢email_auth_check(domain, selector)

Checks a domain's email authentication: parses SPF (+all, ?all, multiple records, over 10 DNS lookups), DMARC (p, sp, pct, rua), DKIM keys (your selector or 15 common ones) and MX, then returns an A-F grade, 0-100 score and coded issues (spf_missing, dmarc_p_none, ...). Use when an agent must judge if a domain can be spoofed, debug deliverability, or vet a sender/vendor domain. $0.01 USDC on Base. Paid tool: call it once to get the x402 PaymentRequired object, then retry with params._meta["x402/payment"].

Input Schema

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "minLength": 3,
      "maxLength": 253,
      "description": "Email domain, e.g. example.com. A URL or email address is reduced to its domain.",
      "examples": [
        "example.com"
      ]
    },
    "selector": {
      "type": "string",
      "maxLength": 63,
      "pattern": "^[A-Za-z0-9._-]+$",
      "description": "Optional DKIM selector to check authoritatively (in addition to the common list: google, selector1, selector2, default, k1, k2, s1, s2, dkim, mail, mandrill, pm, zoho, protonmail, fm1)."
    }
  },
  "required": [
    "domain"
  ],
  "additionalProperties": false
}
🟢whois_domain_age(domain)

Looks up a domain in its registry's RDAP server (the ICANN successor to WHOIS, found via the IANA bootstrap): registration date, age in days/years, newlyRegistered (<30 days), expiry, last change, registrar name + IANA ID, EPP status, nameservers and DNSSEC. No personal contact data. Use when an agent must judge if a domain, sender or vendor is brand-new (a phishing/fraud signal). Unsupported TLDs return 400, uncharged. $0.01 USDC. Paid tool: call it once to get the x402 PaymentRequired object, then retry with params._meta["x402/payment"].

Input Schema

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "minLength": 3,
      "maxLength": 253,
      "description": "Domain, e.g. example.com. A URL, hostname or email address is reduced to its registrable domain. Alias: name.",
      "examples": [
        "example.com"
      ]
    }
  },
  "required": [
    "domain"
  ],
  "additionalProperties": false
}
🟢email_mx_verify(email)

Checks an email address without sending mail or opening SMTP: syntax, domain exists, MX records (or RFC 5321 A/AAAA fallback), RFC 7505 null MX, MX host resolves, disposable-domain list (~9.9k domains), role account (info@, support@) and free provider. Verdict deliverable_domain, risky, undeliverable or unknown. Cannot prove the mailbox itself exists. Use when an agent validates a signup, lead or contact email before using it. $0.01 USDC. Paid tool: call it once to get the x402 PaymentRequired object, then retry with params._meta["x402/payment"].

Input Schema

{
  "type": "object",
  "properties": {
    "email": {
      "type": "string",
      "minLength": 6,
      "maxLength": 254,
      "examples": [
        "[email protected]"
      ],
      "description": "Email address to check, e.g. [email protected]"
    }
  },
  "required": [
    "email"
  ],
  "additionalProperties": false
}
🟢url_unshorten(url)

Follows a URL's HTTP redirects hop by hop (max 10, page bodies never read) and returns the final URL, status, the full chain and heuristic safety flags: shortener_used, cross_domain_redirect, https_downgrade, ip_address_host, punycode_host, userinfo_in_url, high_abuse_tld, credential_keyword_after_redirect, loops. Risk low/medium/high. Use before an agent clicks, fetches or forwards an unfamiliar or shortened link. Not a malware-reputation lookup. $0.01 USDC. Paid tool: call it once to get the x402 PaymentRequired object, then retry with params._meta["x402/payment"].

Input Schema

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "minLength": 4,
      "maxLength": 2048,
      "examples": [
        "https://bit.ly/3x402"
      ],
      "description": "http(s) URL to expand. A bare host gets https:// added. Private/loopback hosts are refused."
    }
  },
  "required": [
    "url"
  ],
  "additionalProperties": false
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded6 tools