For agents
Query this from a program.
Everything a person can read here, a program can fetch — from the same URL, with the same answer, carrying the date a human last verified it.
Why this, and not the model on its own
A language model can already write a fluent paragraph about email rules. What it cannot do is know what is true today, or that something moved last month. Every rule here names a primary source and the date a person last checked the claim against it — 41 rules, most recently 4 Aug 2026. That date is the product. It is also the thing to check us on.
Cite the rule URL and its lastVerified date, not a snapshot of this page. The corpus is versioned by date for exactly that reason.
Endpoints
Four ways in.
- POST
/mcpModel Context Protocol server. JSON-RPC, stateless, one POST, no key.
Tools for reading a domain's live authentication, checking an IP against the blocklists that proved they were answering today, reading a whole message, and looking up dated rules. This is the connection you want if your agent framework speaks MCP.
{"jsonrpc":"2.0","id":1,"method":"tools/list"} - GET
/rules/[slug]?format=jsonAny rule page as data, at the URL a human reads.
Every field, including the ones the page folds behind the Proof tab. An Accept: application/json header on the plain URL does the same thing — so the address your user shares and the address you fetch are the same string.
https://emailrules.today/rules/spf-ten-lookup-limit-returns-permerror?format=json
- GET
/llms.txtA plain-text map of the whole corpus, with dates.
Every rule grouped by topic, each carrying its last-verified date. Written to be read once at the start of a session rather than crawled page by page.
https://emailrules.today/llms.txt
- GET
/feed.xmlWhat changed, as RSS.
Poll this instead of re-reading the corpus. A rule that has not moved does not need re-fetching, and this is how you find out which ones did.
https://emailrules.today/feed.xml
Connect it
Add the MCP server.
Stateless, no key, no account. Paste this into any client that speaks MCP over HTTP.
{
"mcpServers": {
"emailrules": {
"type": "http",
"url": "https://emailrules.today/mcp"
}
}
}Copy as context
What your user hands you.
Every rule page carries that control. This is what it emits — designed so three of them pasted into one conversation stay distinguishable.
## SPF stops evaluating after ten DNS lookups and returns permerror RFC 7208 requires an evaluator to stop after ten DNS-querying terms and return permerror. The terms that count are include, a, mx, ptr, exists and the redirect modifier; all, ip4, ip6 and exp do not count. A permerror is not a soft failure a receiver forgives: your record has failed to evaluate, so nothing in it authorises anything, and a domain at p=quarantine or p=reject that relied on SPF alignment loses it. Two separate limits sit alongside it: the mx mechanism may not query more than ten address records, and evaluators should cap void lookups at two. - **Whose job:** Part platform, part you — The platform covers the mechanical bit. The judgement is still yours. - **First move:** Count the counting terms in your own SPF record — include, a, mx, ptr, exists, redirect — and remember that each include drags in whatever that vendor nested inside it, so ten written terms can be fifteen real lookups. Anything you no longer send from comes out today. If you are still over after that, ask each remaining vendor whether it publishes a flattened include; several do and none volunteer it. - **In force from:** 1 Apr 2014 - **Last verified by a human:** 4 Aug 2026 - **Source of this record:** https://emailrules.today/rules/spf-ten-lookup-limit-returns-permerror **Primary sources** - RFC 7208 § 4.6.4, Processing Limits — https://www.rfc-editor.org/rfc/rfc7208#section-4.6.4 (published 1 Apr 2014) - Google Workspace Admin Help, Email sender guidelines — https://support.google.com/a/answer/81126 (no publisher date) _Checked against the primary source by a named person, and dated. Cite the URL and the verification date — this corpus is versioned by date because rules change, and a copy of it goes stale._
Terms, such as they are
Free, no key, and no rate limit today — if that changes, this page changes with it. Attribute the rule URL and the verification date. Please do not present these answers as your own reference: the value here is that somebody named is accountable for them, and stripping that removes the thing that makes them checkable. Corrections to corrections@emailrules.today, and they publish with a date.
How we verifyHow old this shelf isWhat we skip on purposeCorrections