Email Guard MCP
Email safety for AI agents: scan inbound for prompt-injection/phishing + outbound for secret leaks.
Connector by mlawsonking · GitHub account verified by the MCP Registry
Install
Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.
npx agentmarket install connector/mlawsonking-email-guard-mcp
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list and install config. Checked Oct 25, 2026.
- Tools
- 29 read · 0 write · 0 delete · 2 not yet classified
- Secrets
- None asked for
- Install scripts
- Not scanned yet
- Runs as
- Node.js package
Tools by what they do 31
Read from the source code; the running server may list different tools.
Read 29 · Look things up without changing anything.
audit_depscheck_domain_authcheck_ipcheck_passwordcheck_sanctionedcheck_urlcheck_vulnsdns_lookupdomain_infoextract_webget_feedhttp_inspect
Show 17 more tools
list_rulespackage_inforead_urlresolve_namescan_codescan_contentscan_diffscan_inboundscan_outboundscan_secretsscreen_paymentscreen_tokenssl_checktyposquat_scanunfurl_urlvalidate_emailverify_package
Not yet classified 2 · We could not tell from the name and description.
screen_addressstructured_data
Tools (31)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
audit_depsAudit a set of npm or PyPI dependencies in one call. Give it a list of names, or the text of a package.json (its dependencies and devDependencies), or the text of a requirements.txt. Returns a per-package report (exists, vulns, malicious, deprecated, verdict, flags) and a summary. Direct entries only: no lockfile is parsed and no transitive dependency is resolved, so this is not a full-tree audit and a vulnerable grandchild dependency will not appear. First 40 names, the rest are dropped and truncated is set. A version range is reduced to the digits inside it, so ^4.17.20 is checked as 4.17.20…
check_domain_authCheck what a domain publishes for email authentication: SPF and DMARC records and policy, MX, domain age from RDAP, and whether it is a known disposable/throwaway domain. Accepts a domain or an email address, and returns an authPosture of weak or enforced. Read the scope carefully: this is what the domain PUBLISHES in DNS. It is not a verdict on any individual message, it does not prove a sender is who they claim, and DKIM is not checked at all, because a DKIM record lives at <selector>._domainkey.<domain> and the selector cannot be derived from a domain name. No signature is verified anywhere…
check_ipReputation for an IP address: Tor exit node, Spamhaus listing, ASN and owner, reverse DNS, datacenter or residential. Needs the network. Private and loopback addresses are answered locally.
check_passwordCheck whether a password appears in the Have I Been Pwned breach corpus. The password never leaves the machine: only the first 5 characters of its SHA-1 are sent (k-anonymity), and the match is done locally.
check_sanctionedFast OFAC sanctions check for a crypto address or ENS name, with no on-chain lookup and no scam lists. Matches against the union of every EVM-format OFAC SDN list (ETH, ARB, BSC, ETC, USDC, USDT), which applies to all EVM chains because OFAC lists addresses by currency rather than by chain. Only EVM (0x) addresses are covered: the Bitcoin, Tron, Solana, Monero and other non-EVM sanctioned addresses are on the SDN list and are not checked here. sanctioned:false means the address is absent from those EVM lists and nothing more. If the lists cannot be loaded, sanctioned is null and the verdict is…
check_urlAssess a URL before fetching or showing it: structure, lookalike brand domains, punycode, embedded credentials, abuse-prone TLDs, plus domain age. The structural half is local; domain age needs RDAP.
check_vulnsKnown vulnerabilities and malware advisories for a package, optionally for one version, from the OSV.dev database. This is the one tool here that is correct for all seven ecosystems it accepts (npm, PyPI, Go, crates.io, RubyGems, Maven, NuGet), because it queries OSV directly and never touches a registry. It therefore cannot tell you whether the package exists, who publishes it, or whether it is maintained. An empty list means OSV held nothing for that name and version, not that the package is safe: OSV only knows what has been reported. A failed lookup returns an error and never an empty list…
dns_lookupLook up DNS records for a domain (A, AAAA, MX, NS, TXT, CNAME, SOA, CAA, SRV) and report whether SPF and DMARC are published. Uses this machine's resolver, so the answers are whatever it returns, cache and all. A record type whose query failed is listed in checks_skipped rather than reported as absent.
domain_infoRegistration facts for a domain from RDAP, the JSON successor to WHOIS: creation and expiry dates, age in days, registrar, status, nameservers. Age is the useful signal, since a domain registered days ago is a common fraud marker. Coverage depends on the registry: some ccTLDs publish little or nothing through RDAP.
extract_webPull specific values out of a web page with CSS selectors. Pass selectors as {key: "css"}. Suffix a selector with @attr for an attribute and with [] for every match, so "a.item[]@href" returns an array of links. href, src, data-src and poster values are resolved to absolute URLs. Static HTML only: nothing is executed, and a selector that matches nothing returns null or an empty array rather than an error.
get_feedFetch an RSS or Atom feed and return its items as JSON: title, link, date, author, categories, snippet. Whatever the feed publishes is what you get, including its idea of dates and ordering. A page that is not a feed is reported as such rather than parsed into an empty list.
http_inspectRequest a URL and report the final status, the full redirect chain, every response header, and which security headers are present (HSTS, CSP, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy). Presence is all this checks: a CSP that allows everything still counts as present. A 404 or a 500 is a result, not an error. GET only, and redirects stop at 5 hops.
list_rulesList the rule catalog so you can see the coverage and the gaps: rule id, category, severity, language. The grouped hardcoded-* entry stands in for the secret and PII ruleset. Fully local.
package_infoRegistry metadata for an npm or PyPI package: latest version, first and last publish dates, age, weekly downloads, deprecation, license, repository and description. Use it to judge whether a dependency is maintained. It makes no security judgement and runs no vulnerability lookup. Weekly downloads come from api.npmjs.org or pypistats.org and the field is simply absent when those are unavailable, so a missing weekly_downloads is not a zero. License and repository are whatever the publisher declared, unverified.
read_urlFetch a web page and return its main readable content as Markdown, with navigation, ads and boilerplate stripped. HTML only: any other content type is refused rather than guessed at. No JavaScript is executed, so a page that builds its text in the browser comes back with little or nothing, and the response says so.
Show 16 more tools
resolve_nameResolve an ENS name to an address and screen that address against the OFAC EVM sanctions lists and the scam/abuse blocklists. Resolution is namehash, then the mainnet ENS registry resolver, then a direct addr() call. There is no ENSIP-10/CCIP-Read, so offchain and L2 names (Basenames, .cb.id, gasless subnames) report resolved:false here even though a wallet resolves them. It does NOT detect lookalike or homoglyph names: no confusable check and no ENSIP-15 normalization, so a spoofed name that resolves to a clean address comes back clean. A failed registry call is reported as a failed lookup, n…
scan_codeScan a code snippet for the vulnerability classes that show up most in generated code: injection, SSRF, hardcoded secrets, weak crypto, unsafe deserialization, disabled TLS, XSS. Regex rules matched line by line — no parser, no data flow, no taint tracking. JS/TS and Python only. Fully local.
scan_contentScan untrusted text for prompt-injection patterns and Unicode obfuscation before an agent acts on it. Deterministic known-pattern matching plus hidden-character detection, not a classifier: novel phrasing is not covered. Pass text directly, or a url to fetch and scan.
scan_diffScan only the added lines of a unified diff, reporting findings against the new file line numbers. Use this on a patch before committing so untouched code does not drown the result. Fully local.
scan_inboundScan an INBOUND email before an agent acts on it. Parses the message, matches subject and body against known prompt-injection and hijack patterns (including zero-width, bidi and hidden-HTML payloads), compares sender headers (Reply-To and Return-Path domain mismatch, an address hidden in the display name, a 24-name brand list matched as a substring of the display name), and scores the links. The injection scan is deterministic known-pattern matching, not a classifier: novel phrasing, a brand off that list, or a lookalike domain that contains the brand string is not flagged. SPF, DKIM and DMARC…
scan_outboundScan an OUTBOUND email before an agent sends it. Runs 22 credential patterns (AWS, GitHub, OpenAI, Anthropic, Google, Slack, Stripe, Twilio, npm, JWT, PEM private-key blocks, and api_key/secret/password/token assignments) and 3 PII patterns (email address, US SSN, Luhn-valid card number) over subject, plain-text body and HTML, and returns a redacted copy. It also flags deliverability problems that burn a sender domain (spam-trigger words, ALL CAPS subject, excessive exclamation, missing List-Unsubscribe, image-heavy, many links) and recipient risk (disposable domain, or no MX record which mean…
scan_secretsFind API keys, tokens, private keys and PII in text and return a redacted copy with the secret VALUES removed. Fully local: the text never leaves the machine. Matches 22 known credential formats plus generic assignments; a secret in an unknown format is not detected.
screen_addressThe pre-send check for an agent about to send funds to a crypto address. Takes an EVM address or an ENS name and returns safe, caution or block from three inputs: the OFAC EVM sanctions lists, the ethereum-lists and ScamSniffer scam blocklists, and an on-chain read (brand-new and unused address, which is the shape of a scam drop address, or a contract). Sanctions coverage is EVM-format address lists only, so Bitcoin, Tron, Solana and Monero sanctioned addresses are not checked; it applies to every EVM chain, because OFAC lists addresses by currency rather than by chain. If a list fails to load…
screen_paymentCheck an x402 endpoint or merchant URL before paying it. The structural half is local: punycode host, raw-IP host, credentials in the URL, abuse-prone TLD, known shorteners, excessive subdomains, nonstandard port, and a substring match against 14 brand names flagged when the brand is not the registrable domain, so paypal.com.secure-pay.xyz is caught. There is no edit distance and no homoglyph mapping, so an ASCII typo like paypa1.com is not caught by that rule. Domain age needs RDAP and the destination after redirects needs a fetch; the intermediate hops are not analysed. Offline it still retu…
screen_tokenCheck a token contract before an agent buys, swaps or approves it: is it a HONEYPOT (you can buy but not sell), does it have an extreme sell tax, is it on a scam/abuse blocklist. The buy+sell simulation comes from api.honeypot.is, which supports Ethereum and Base only and answers 400 "Invalid chain" for polygon, arbitrum and optimism, so the honeypot and tax fields cannot be populated there. It also has no result for tokens with no liquidity pool, which is exactly the population most likely to be a rug. When no simulation ran the verdict is never safe: it is caution, or block if the blocklist …
ssl_checkOpen a TLS connection to a host on port 443 and report its certificate: issuer, subject, validity window, days remaining, SANs, protocol, and whether it validates against the system trust store. Port 443 only, and this reads one certificate rather than grading the configuration the way a full TLS scanner would.
structured_dataPull a page's machine-readable structured data: JSON-LD (schema.org), OpenGraph and Twitter card tags, plus the schema.org types declared. This is the page describing itself, so treat prices, ratings and availability as claims. JSON-LD that does not parse is skipped rather than repaired.
typosquat_scanGenerate lookalike names around an npm or PyPI package and report which ones are actually registered and which look recent enough to be suspicious. The variants are heuristic and ASCII only: single-character deletions, adjacent transpositions, doubled letters, the swaps l/1, o/0, rn/m, -/_, ./-, i/l and s/z, and the name with every hyphen or underscore dropped. Up to 20 variants, no Unicode homoglyphs, no prefix or suffix squats such as name-js or python-name, so an empty result is not evidence that nobody is squatting the name. "suspicious" means only that the variant is registered and is eit…
unfurl_urlRead a URL's declared metadata for a link preview: title, description, preview image, site name, favicon, canonical URL, language. This is what the page says about itself in its own meta tags, not a verified fact about it. Cheaper than read_url when you only need to know what a link is.
validate_emailValidate an email address: syntax, a live MX or A lookup on the domain, and disposable, role and free-provider flags. Returns a deliverability call and a 0 to 1 quality score. There is no SMTP probe, so this says the domain can receive mail, never that the specific mailbox exists. The disposable list is fetched and falls back to a small built-in set when it cannot be reached, so a false "not disposable" is possible.
verify_packageThe pre-install guard for npm and PyPI. Call it before installing or recommending a package. Returns safe, caution or danger from deterministic checks: is the name registered, does OSV hold vulnerability or malware advisories for it, how old is it, weekly downloads, deprecation, license. If the name is not in the registry, likely_hallucination is set and npm names come with a "did you mean" list (PyPI names get an empty list). That flag means "not in this registry" and cannot tell an AI-invented name from a typo, a rename, or a package that only lives in a private registry. The slopsquat and t…
Signals
- Stars
- 1
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Aug 12, 2026 (2 months ago)
- Last release
- Aug 10, 2026 (2 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- Registry name
io.github.mlawsonking/email-guard-mcp- Version
- 1.3.0
- Auth
- No auth
- Packages
- npm email-guard-mcp
- License
- MIT
- Repository
- github.com/mlawsonking/MCP
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
More from mlawsonking
- 0.562score
Agent Guards
mlawsonking
All six agent guard suites in one local MCP server, with optional cloud intelligence.
ConnectorBFreshness: BLocal★ 1Claude Code +5 - 0.562score
Payment Guard MCP
mlawsonking
Pre-send risk check for AI agents that move money — screen an address or payment URL before sending.
ConnectorBFreshness: BLocal★ 1Claude Code +5 - 0.562score
Web Tools MCP
mlawsonking
10 no-LLM web tools: URL to Markdown, metadata, JSON-LD, MX, scrape, RSS, DNS, RDAP, SSL, HTTP.
ConnectorBFreshness: BLocal★ 1Claude Code +5 - 0.562score
Package Guard MCP
mlawsonking
Supply-chain guard for AI coding agents: verify packages, check vulns/malware, detect typosquats.
ConnectorBFreshness: BLocal★ 1Claude Code +5 - 0.562score
Agent Firewall MCP
mlawsonking
Input/output safety for AI agents: known-pattern injection and obfuscation scan, URL/IP, secrets.
ConnectorBFreshness: BLocal★ 1Claude Code +5 - 0.552score
Code Guard MCP
mlawsonking
Security scan for AI-generated code: injection, SSRF, secrets, weak crypto, unsafe deserialization.
ConnectorBFreshness: BLocal★ 1↓ 33/wkClaude Code +5
Cite this page
Email Guard MCP. Agent Mart. https://agentmart.dev/connectors/mlawsonking-email-guard-mcp (last updated 2026-10-24)