EmailGuard
$0.02/callDeterministic email & contact data validation.
POST /api/agent-services/emailguard/validateWhat it does
Deterministic email and contact data quality scorer. Returns validity, deliverability score, risk level, normalized form, classifications, and per-rule diagnostics. Pure function, no network calls.
- RFC5322 syntax, disposable & role detection
- Typo suggestions (gnail.com → gmail.com)
- Deliverability score with per-rule evidence
Example request
POST /api/agent-services/emailguard/validate
{
"email": "alice+work@gnail.com",
"name": "Alice Example",
"mxPresent": true
}Example response (HTTP 200)
Deterministic — the same inputs always return the same audited output.
{
"valid": true,
"deliverabilityScore": 55,
"riskLevel": "medium",
"normalized": {
"localPart": "alice",
"domain": "gnail.com",
"canonical": "alice@gnail.com"
},
"classification": {
"disposable": false,
"roleBased": false,
"freeProvider": false,
"typoSuggestion": "gmail.com"
},
"checks": [
{
"rule": "rfc5322-syntax",
"pass": true,
"severity": "info",
"why": "Email must contain a valid local part and domain with a dot.",
"evidence": "parsed local=alice domain=gnail.com",
"fix": null
},
{
"rule": "typo-suggestion",
"pass": false,
"severity": "warn",
"why": "Domain is close to a popular provider and may be a typo.",
"evidence": "input domain=\"gnail.com\" suggestion=\"gmail.com\"",
"fix": "Use alice@gmail.com instead."
}
]
}Input schema
Top-level request fields. Nested shapes are shown in the example above and the OpenAPI spec.
| Field | Type | Required | Description |
|---|---|---|---|
| string | Yes | The email address to validate and score. | |
| name | string | — | Optional contact name associated with the email. |
| domain | string | — | Optional explicit domain hint (usually derived from email). |
| mxPresent | boolean | — | Caller-supplied hint whether the domain has MX records. Never performs DNS itself. |
How to call it over x402
- 1. Send the request. The first unpaid call returns HTTP 402 with an x402 payment challenge — $0.02, USDC on Base, and the recipient.
- 2. Pay per call. Your x402 client signs the USDC payment and retries automatically — no API key, no account, no subscription. New to x402?
- 3. Read the result. HTTP 200 returns the computed values plus evidence-backed findings.
With the x402 fetch client (Node / TypeScript)
import { wrapFetchWithPayment } from "@x402/fetch";
import { privateKeyToAccount } from "viem/accounts";
const account = privateKeyToAccount(process.env.AGENT_WALLET_KEY);
const pay = wrapFetchWithPayment(fetch, account); // USDC on Base
const res = await pay("https://hermesplant.com/api/agent-services/emailguard/validate", {
method: "POST",
headers: { "content-type": "application/json" },
body: JSON.stringify({
"email": "alice+work@gnail.com",
"name": "Alice Example",
"mxPresent": true
}),
});
const result = await res.json();Inspect the 402 with curl
curl -i -X POST https://hermesplant.com/api/agent-services/emailguard/validate \
-H "content-type: application/json" \
-d '{"email":"alice+work@gnail.com","name":"Alice Example","mxPresent":true}'
# → HTTP/1.1 402 Payment Required (x402 challenge: price, USDC asset, Base network, recipient)
# → sign the USDC-on-Base payment and retry to receive HTTP 200Prefer zero code? This endpoint is also exposed as a tool on the Hermes Plant MCP server, so an MCP-capable agent can call it with its own x402 wallet.
Other agent services
NPV, IRR, XIRR & DCF valuation in a single call.
LP/GP distribution waterfalls, solved exactly.
Black-Scholes option pricing with the full Greeks.
Yield, duration, convexity & loan amortization.
Portfolio risk scored straight from holdings.
Wallet AML & compliance risk screening.
Full deal underwriting — DCF, returns, sensitivity & waterfall in one call.
Score an MCP server before your agent installs it.
Catch destructive agent commands before they run.
Route risky agent actions to human approval.
Need a calculator that isn’t here yet? contact@hermesplant.com