Standards
A standard reaches the implemented list once the mechanism works end to end and a resolver outside our network agrees. Never before, and never on the strength of a single domain.
Implemented
Observable with dig against any of our nameservers; each answers authoritatively for every zone we serve.
| Standard | What we do |
|---|---|
Authoritative DNS RFC 1034, 1035 | We answer for our own zones over UDP and TCP, with the authoritative bit set. No recursion, no forwarding. |
DNS over TCP RFC 7766 | A first-class transport, not a fallback. Required for answers that do not fit a UDP packet, which signed responses often will not. |
EDNS(0) RFC 6891 | We advertise a 1232-byte payload, the DNS Flag Day 2020 figure, and honour the requester's, truncating with TC rather than sending a packet that will be fragmented or dropped. |
Negative caching RFC 2308 | NODATA and NXDOMAIN are distinguished, each carrying the zone SOA in the authority section so a resolver knows how long to remember the absence. |
AAAA records RFC 3596 | IPv6 addresses are ordinary records on every plan, and our nameservers answer over IPv6 as well as IPv4. |
TXT records RFC 1035, 6763 | Publishable under any hostname you hold, through the API. Up to ten records per hostname; a value longer than 255 bytes is split across several character-strings, up to 2048 bytes in total, which is what a 2048-bit DKIM key needs. |
HTTPS and SVCB RFC 9460 | Served in ServiceMode, with the parameters validated rather than passed through: the list has to be in ascending key order with no duplicates, and `mandatory` may not name a key the record does not carry. AliasMode is refused, because it exists to alias a zone apex and a hostname here is never an apex. This is also the only way to publish an Encrypted ClientHello config, which has no other delivery mechanism in DNS. |
MX RFC 1035, 7505 | Publishable under any hostname you hold. The null MX is accepted too, at preference 0 with a root exchange, which is the only way a name can say it accepts no mail at all. |
SRV RFC 2782 | Served, with the owner name validated as _<service>._<proto>. The service and protocol live in the name rather than the rdata, so a record at any other name is one no client will look up. |
SSHFP RFC 4255, 6594 | An SSH host key fingerprint in DNS, SHA-1 or SHA-256, so a client can verify the key on first connect rather than trusting it. On a signed zone that verification is worth something, which is why it is offered beside DNSSEC rather than on its own. |
CAA RFC 8659 | Every domain we operate publishes one, naming the CAs we use plus an address for violation reports. We do not restrict the challenge type, so your own HTTP-01 keeps working. You can publish CAA on your own hostname too, and it replaces ours for that name - a CA reads the closest set and ignores the rest, so what you write is what applies. |
NSEC3, ECDSAP256SHA256 RFC 5155, 6605 | We sign with ECDSA P-256 and SHA-256 (algorithm 13), and run NSEC3 at zero iterations with no salt, which is current guidance. |
TLSA RFC 6698 | Served, with the owner name validated as _<port>._<proto>. You can publish one on a signed domain whose DS the registry has accepted; on any other we refuse it with a 409. A TLSA record says which certificate to trust, and in a zone a resolver treats as unsigned, anything that can forge the answer can forge the binding with it - so accepting one there would read as protection and provide none. The refusal is only possible because signing is not optional here. |
Unknown record types RFC 3597 | Opaque rdata is served verbatim with the correct type code, which is how DNSSEC records reach the wire without the nameserver parsing them. |
ACME DNS-01 RFC 8555 | The DNS half of the challenge. A per-hostname credential publishes _acme-challenge TXT records, which is what wildcards and machines on private networks need. |
ACME client RFC 8555 | For hostnames registered as certificate: "managed" we run the client ourselves - order, DNS-01 challenge, finalize, and renewal - and hand the certificate back over the API. Nothing is pushed to you. |
dns-persist-01 draft-ietf-acme-dns-persist-01 | One standing TXT record at _validation-persist names a CA and an ACME account, and every later issuance for that name checks it, instead of a token published and deleted each time. We serve the record, and for a managed certificate we publish it ourselves and use the method wherever a CA offers it - which means renewals after the first need no DNS write at all. Let's Encrypt offers it in staging and not yet in production, so today it is exercised there and falls back to DNS-01 everywhere else. The record is released with the hostname: a standing authorization never outlives the name it covers. |
ACME Renewal Information (ARI) RFC 9773 | Managed renewals ask the CA when to renew and take a random instant inside the window it suggests, rather than renewing at a fixed fraction of the lifetime. Renewals coordinated this way do not consume issuance limits, and the jitter keeps every certificate on a domain from coming due in the same minute. |
acme-dns protocol acme-dns | Our DNS-01 API speaks it, so a client built for acme-dns works against a credential we mint. No recipe we publish needs one any more: Caddy and cert-manager use modules we maintain, lego and Traefik their built-in httpreq provider, and certbot a hook script. lego and Traefik auto-register against acme-dns when their storage is empty, which we do not support, and that is the reason to prefer httpreq there. |
RRL Response Rate Limiting | Per-client-prefix budgets for answers and errors, with truncated-response slipping so a legitimate resolver behind a noisy prefix still gets served over TCP. |
OAuth 2.0 and OpenID Connect, as a client RFC 6749, OIDC Core | Google sign-in verifies the id_token audience and requires a verified email. Email sign-in links are single-use and expire. This is us consuming somebody else's authorization; the entry below is us being one. |
Model Context Protocol, as a server MCP 2025-06-18 | An MCP server at /mcp over the Streamable HTTP transport, so an agent can mint a hostname, repoint it and diagnose it mid-task rather than needing a person to have written the config first. Stateless and POST-only, because a tools-only server never initiates anything and so has no stream to resume. The protocol version is negotiated at initialize and carried on every request after it; one we do not speak is refused rather than guessed at. |
OAuth 2.1 authorization server RFC 7591, 7636, 7009, 8414, 8628, 8707, 9728 | How /mcp authenticates a connector, because Claude and ChatGPT can be given a URL and nothing else. Clients register themselves (7591) and are never auto-approved - anyone can register, so consent is always a screen somebody reads. PKCE is S256 only (7636). A token names the resource it was issued for and is refused anywhere else (8707), which is why an access token cannot be used as an API key. Refresh rotates and revocation takes the whole family with it (7009). A machine with no browser on it uses the device flow (8628): it prints a short code, a person approves it from a browser elsewhere, and nothing is decided on the machine. Both discovery documents are published (8414, 9728), and a 401 carries WWW-Authenticate so a client that has only been given a URL can find them. OAuth 2.1 is an IETF draft that consolidates these; the RFCs are what is implemented. |
Machine-readable API OpenAPI 3.1 | The whole v1 API is described at /openapi.json, and the same reference is published as plain text for language models at /llms-full.txt. |
DNSSEC RFC 4033, 4034, 4035 | Every domain we register is signed and its DS published at the registry before it serves a hostname. Both are admission gates: a domain with an unsigned zone, or a signed zone whose DS is not live, does not enter service. That second half is the one usually missed - a signed zone nobody can find the DS for is not protected, and a resolver has no way to know it was meant to be. |
What we are evaluating
Under consideration, not committed; nothing here has a date. If any of it decides whether DNSMint fits, ask us.
| Standard | What it waits on |
|---|---|
DNS over TLS and QUIC RFC 7858, 9250 | Waiting on resolvers rather than on us, and the number is the argument. Measurement at OARC 45 found 44 probes behind resolvers using encrypted transport to authoritative servers - almost all Quad9 - and zero using QUIC. If we shipped DoT tomorrow Quad9 would use it and everyone else would keep sending plaintext over UDP, so an observer reads the rest and learns the same things about the same customers. Encrypting a rounding error of an observable channel buys no privacy. What changes this is resolver adoption, not our appetite, so we watch it rather than pre-build for it. |
DNS-anchored agent identity DNSid | An identity for an agent published in DNS rather than in a registry someone else operates. We already run authoritative DNS for the name, so this is closer to us than to anyone selling a directory. What holds it up is not the DNS work - it is that an identity record is only worth as much as the accountability behind whoever registered it, and we have not answered that question yet. |
dns-account-01 ACME | A challenge scoped to an ACME account rather than to a name, which removes the last reason a shared validation record is worth attacking. Small change on our side and pointless before a CA validates it, so this waits on Let's Encrypt shipping support rather than on us. |
Deliberately not
| Standard | Why not |
|---|---|
CDS, CDNSKEY, DNSSEC bootstrapping RFC 7344, 8078, 9615 | We submit DS records through the registrar API instead. These exist to remove the registrar from key rotation, and rotation is already one API call every few years. |
Zone transfers (AXFR, IXFR) RFC 5936, 1995 | There are no secondaries to transfer to. Nameservers replicate from the control plane's database and serve from memory, so a zone transfer would be a second, weaker path to the same data. |
DNS over HTTPS RFC 8484, 9539 | Refused, and not on preference. RFC 9539 - the experimental RFC for encrypted recursive-to-authoritative DNS - excludes DoH by name, because a client has to know the path part of the endpoint URL and a resolver has no way to discover it. A DoH listener on a nameserver of ours would be one that nothing on the internet knows how to find. DoH is a stub-to-resolver protocol and we do not occupy that position. |
Dynamic DNS updates RFC 2136 | Records change through the authenticated HTTP API, which is scoped per hostname and per key. UPDATE would be a second write path with a weaker authorisation model. |
Delegating a subdomain to your nameservers - | We refuse NS records below a zone apex. A delegation means the answers stop being ours to stand behind, and every abuse and reputation control we have assumes they are. |
Built on top of us
We implement none of these. Each needs only a hostname that resolves and a certificate that matches it; see use cases.
| Standard | What it needs from us |
|---|---|
Model Context Protocol, for a server of your own MCP | Separate from the one we run, which is listed above. A remote MCP server is an HTTPS endpoint a client keeps. Mint a hostname, serve the transport from it, and move the server between machines or regions with one PUT - clients holding the URL keep working, because the address was never in the name. |
MCP discovery over DNS draft-morrison-mcp-dns-discovery | An IETF draft advertising an MCP server in a TXT record at _mcp under a domain: endpoint, transport, an Ed25519 key and a capability profile, as a resolver-cached bootstrap that skips the HTTPS round trip. It requests no new record type, so the DNS half already works here: POST a TXT record named _mcp on a hostname and it is served. A draft rather than an RFC. A record carrying a key is longer than one 255-byte string, which the TXT API handles by splitting it across several. |
Agent2Agent A2A | Discovery starts with an Agent Card served over HTTPS, at /.well-known/agent-card.json since v1.0 and the older /.well-known/agent.json for clients that have not caught up. The hostname is part of that contract rather than a deployment detail, so repointing it does not invalidate a cached card. |
Agent Name Service ANS | An OWASP specification with a v2 draft at the IETF. It resolves an agent name to an endpoint, and a minted hostname is an endpoint a registration can name. The v2 draft expects records published under the agent hostname, including TLSA - those are the record types we serve. |
Workload identity SPIFFE, SPIRE | SPIRE puts a DNS name in the certificate it issues, with spire-server entry create -dns. A workload can hold a SPIFFE ID and a minted hostname at once: the ID says which workload it is inside a trust domain, the hostname is how anything outside that domain reaches it. We are not a trust domain and do not issue SVIDs. |
Well-known URIs RFC 8615 | Every discovery convention above resolves to a path under a host you control. That is the same requirement stated four ways, and it is why the hostname outliving the address matters more than any of the individual specs. |