One inbox, one key
Two strings can point at one inbox. [email protected] and [email protected] are a common example. Key a contact table by the raw strings and you’ll create duplicate records, split conversation history, and perhaps send the same outreach twice.
match-key-email accepts one email address and returns a value built for grouping. It lowercases the address and removes its +tag suffix. For gmail.com and googlemail.com, it also removes dots from the local part and maps both domains to gmail.com.
The endpoint costs $0.005 USDC per call through x402 on Base mainnet. Its response includes the original input, normalized address, match key, domain, and a basic syntax result.
Call the endpoint
Send the address in a JSON body:
POST /match-key-email HTTP/1.1
Host: api.agentutility.ai
Content-Type: application/json
{
"email": "[email protected]"
}
After payment, the response is:
{
"input": "[email protected]",
"normalized": "[email protected]",
"match_key": "[email protected]",
"is_valid_syntax": true,
"domain": "gmail.com"
}
Call the route again with [email protected] and you’ll receive the same match_key. An agent can look up that key before inserting another contact.
Dots are preserved outside Gmail. For example, [email protected] becomes [email protected]. The first + and everything after it are removed for every domain.
Keep the source address
Put match_key in a separate indexed column. Keep the submitted address as the value used for sending mail.
Why retain both? Plus addressing isn’t handled alike by every mail system, and a shared inbox such as [email protected] can belong to several people. A key collision marks records for linking or review. Evidence from the name, company, or account history can decide whether they should merge.
For bulk imports, group rows by match_key and compare records inside each group. An invalid is_valid_syntax result can stop the row before it reaches your CRM. A valid result means the string has email-like structure. It doesn’t establish that the domain accepts mail.
Put verification after matching
Add email-deliverability-check before an action that depends on mail arriving, such as sending paid outreach or issuing an invitation. Pass the original address. That endpoint checks MX records and returns a 0–100 score, risk level, disposable and role-account flags, plus SPF, DMARC, and DKIM details.
With an x402-aware POST helper, the branch can stay narrow:
const keyed = await paidPost(
"https://api.agentutility.ai/match-key-email",
{ email: rawEmail }
);
const candidates = await contacts.findByEmailKey(keyed.match_key);
if (willSendEmail) {
const delivery = await paidPost(
"https://api.agentutility.ai/email-deliverability-check",
{ email: rawEmail }
);
if (!delivery.can_receive_mail || delivery.risk === "high") {
await queueForReview({ rawEmail, keyed, delivery });
}
}
Each call costs $0.005 USDC, so this paired path costs $0.01. A cleanup agent that only groups imported records can stop after match-key-email and avoid the second payment.
email-deliverability-check reports verification_level: "domain_dns_no_mailbox_probe". For account recovery or any flow that grants access, send a one-time code or signed link and wait for redemption. DNS evidence can’t prove that the recipient controls [email protected].