<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.31 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-morrison-mcp-dns-discovery-00" category="info" submissionType="independent" version="3">
  <!-- xml2rfc v2v3 conversion 3.32.0 -->
  <front>
    <title abbrev="MCP DNS Discovery">Discovery of Model Context Protocol Servers via DNS TXT Records</title>
    <seriesInfo name="Internet-Draft" value="draft-morrison-mcp-dns-discovery-00"/>
    <author fullname="Blake Morrison">
      <organization>Alter Meridian Pty Ltd</organization>
      <address>
        <postal>
          <city>Cronulla, NSW</city>
          <country>Australia</country>
        </postal>
        <email>blake@truealter.com</email>
      </address>
    </author>
    <date year="2026" month="April"/>
    <abstract>
      <?line 60?>

<t>This document defines a DNS-based mechanism for the discovery of
Model Context Protocol (MCP) servers.  A TXT resource record
published at the underscore-prefixed label <tt>_mcp.&lt;domain&gt;</tt> advertises
the presence, endpoint URL, transport protocol, cryptographic
identity, and capability profile of an MCP server associated with a
domain name.  The mechanism complements existing HTTPS-based discovery
(<tt>.well-known/mcp/server-card.json</tt>) by providing a lightweight,
resolver-cached bootstrap that requires no HTTPS round-trip.  The
design follows the precedent established by DKIM <xref target="RFC6376"/>, SPF
<xref target="RFC7208"/>, DMARC <xref target="RFC7489"/>, and MTA-STS <xref target="RFC8461"/>, all of which use
DNS TXT records at underscore-prefixed labels to advertise
domain-scoped policy and service metadata.</t>
    </abstract>
  </front>
  <middle>
    <?line 75?>

<section anchor="status-of-this-memo">
      <name>Status of This Memo</name>
      <t>This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79.</t>
      <t>Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF).  Note that other groups may also distribute
working documents as Internet-Drafts.  The list of current
Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.</t>
      <t>Internet-Drafts are draft documents valid for a maximum of six
months and may be updated, replaced, or obsoleted by other documents
at any time.  It is inappropriate to use Internet-Drafts as
reference material or to cite them other than as "work in progress."</t>
      <t>This Internet-Draft will expire on October 6, 2026.</t>
    </section>
    <section anchor="copyright-notice">
      <name>Copyright Notice</name>
      <t>Copyright (c) 2026 IETF Trust and the persons identified as the
document authors.  All rights reserved.</t>
      <t>This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info) in effect on the date of
publication of this document.  Please review these documents
carefully, as they describe your rights and restrictions with
respect to this document.</t>
    </section>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>Model Context Protocol (MCP) <xref target="MCP"/> is an open protocol for
structured interaction between AI agents and tool-providing servers.
An MCP client that wishes to invoke tools, access resources, or
issue prompts against a server must first discover the server's
endpoint URL, transport, and authentication requirements.  As of
April 2026, MCP clients discover servers through three mechanisms:
manual configuration (the user pastes a URL), registry lookup
(centralized catalogues of known servers), and HTTPS-based endpoint
discovery via <tt>.well-known/mcp/server-card.json</tt> as proposed in
MCP SEP-1649 <xref target="SEP-1649"/> and SEP-1960 <xref target="SEP-1960"/>.</t>
      <t>None of these mechanisms satisfies the emerging requirement that any
domain on the public internet may host an MCP server and that any
MCP client may discover that server without prior knowledge or
manual configuration.  Manual configuration does not scale.  Registry
lookup introduces a centralized intermediary.  HTTPS-based discovery
requires an HTTPS round-trip to every candidate domain before the
client knows whether an MCP server exists there at all.</t>
      <t>DNS provides a natural solution.  The DNS is the internet's
universal, decentralized, cached name-resolution layer.  Every
internet-connected client already has a DNS resolver.  DNS TXT
records at underscore-prefixed labels are the established convention
for advertising domain-scoped service metadata, with successful
precedents spanning two decades:</t>
      <ul spacing="normal">
        <li>
          <t>DKIM <xref target="RFC6376"/> publishes Ed25519/RSA public keys at
<tt>&lt;selector&gt;._domainkey.&lt;domain&gt;</tt> for email authentication.</t>
        </li>
        <li>
          <t>SPF <xref target="RFC7208"/> publishes sender policy at the domain apex.</t>
        </li>
        <li>
          <t>DMARC <xref target="RFC7489"/> publishes alignment and reporting policy at
<tt>_dmarc.&lt;domain&gt;</tt>.</t>
        </li>
        <li>
          <t>MTA-STS <xref target="RFC8461"/> publishes mail transport security policy at
<tt>_mta-sts.&lt;domain&gt;</tt>, with a split design: DNS advertises
presence and a policy identifier; HTTPS carries the full policy.</t>
        </li>
      </ul>
      <t>This document proposes an analogous mechanism for MCP.  A TXT
resource record at <tt>_mcp.&lt;domain&gt;</tt> advertises the minimum
information a client needs to bootstrap an MCP session: the
endpoint URL and protocol version.  Optional fields declare the
transport protocol, a cryptographic public key for endpoint
pinning, an epoch counter for key rotation, capability hints,
attestation scope, and priority for multi-server failover.</t>
      <t>The design deliberately splits responsibility between DNS and HTTPS.
DNS advertises presence, endpoint location, and transport metadata.
HTTPS (via the Server Card defined in SEP-1649 <xref target="SEP-1649"/>) carries
the full capability manifest.  This split mirrors MTA-STS and avoids
both the 255-byte TXT record stuffing anti-pattern and the
performance penalty of an HTTPS round-trip for every discovery
attempt.</t>
      <t>The mechanism is general.  It applies to any MCP server: tool
providers, resource servers, identity endpoints, prompt libraries,
and any future MCP primitive.  It does not prescribe the semantics
of the tools or resources behind the endpoint.  A domain that
publishes <tt>_mcp.&lt;domain&gt;</tt> declares only that an MCP server exists
and where to find it.</t>
      <t>The approach is deliberately conservative.  A dedicated DNS resource
record type (e.g., a hypothetical "MCP" RR type) was considered and
rejected.  SPF registered a dedicated RR type (type 99) in 2006;
it was formally deprecated in <xref target="RFC7208"/> because no DNS software
ecosystem adopted it.  Matrix's reliance on SRV records
(<tt>_matrix._tcp.&lt;domain&gt;</tt>) has proven problematic for CDN-fronted
deployments, prompting active proposals to remove SRV entirely.
TXT records at underscore-prefixed labels are the only DNS-based
service advertisement mechanism that is universally supported by
authoritative servers, recursive resolvers, CDN-fronted domains,
and DNS management interfaces as of 2026.</t>
      <t>The HTTPS RR type defined in <xref target="RFC9460"/> is a promising future
direction but does not yet enjoy universal resolver support or
management UI exposure.  This document does not preclude a future
HTTPS RR-based alternative; it establishes the TXT-based mechanism
as the baseline for immediate deployment.</t>
      <section anchor="requirements-language">
        <name>Requirements Language</name>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY",
and "OPTIONAL" in this document are to be interpreted as described
in BCP 14 <xref target="RFC8174">RFC2119</xref> when, and only when, they appear in
all capitals, as shown here.</t>
      </section>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <dl>
        <dt>MCP</dt>
        <dd>
          <t>Model Context Protocol, as specified by the Agentic AI Foundation
<xref target="MCP"/>.</t>
        </dd>
        <dt>Discovery Record</dt>
        <dd>
          <t>A DNS TXT resource record published at the <tt>_mcp</tt> label under a
Policy Domain, conforming to the syntax defined in Section 3.</t>
        </dd>
        <dt>Server Card</dt>
        <dd>
          <t>A JSON metadata document served at
<tt>.well-known/mcp/server-card.json</tt> per MCP SEP-1649 <xref target="SEP-1649"/>,
describing the full capabilities and authentication requirements
of an MCP server.</t>
        </dd>
        <dt>Policy Domain</dt>
        <dd>
          <t>The domain name under which a Discovery Record is published.
For the record <tt>_mcp.example.com</tt>, the Policy Domain is
<tt>example.com</tt>.</t>
        </dd>
        <dt>Origin Domain</dt>
        <dd>
          <t>The domain name extracted from an identifier (email address, URL,
handle, or similar) that triggers the discovery procedure.</t>
        </dd>
        <dt>Epoch</dt>
        <dd>
          <t>A monotonic non-negative integer published in the Discovery Record
that increments on every key rotation event.  Used to bind
signed claims to a specific key generation and to enable
epoch-based revocation.</t>
        </dd>
        <dt>Attestation Scope</dt>
        <dd>
          <t>The set of claim types that an MCP server declares it is
authorized to issue, published via the <tt>attest</tt> field.</t>
        </dd>
      </dl>
    </section>
    <section anchor="record-format">
      <name>Record Format</name>
      <section anchor="dns-location">
        <name>DNS Location</name>
        <t>The Discovery Record is a DNS TXT resource record <xref target="RFC1035"/>
published at the label <tt>_mcp</tt> prepended to the Policy Domain:</t>
        <t><tt>
_mcp.&lt;policy-domain&gt;. IN TXT "&lt;record-value&gt;"
</tt></t>
        <t>The underscore prefix conforms to the conventions established in
<xref target="RFC8552"/> for globally scoped, underscore-prefixed DNS node names.</t>
        <t>Multiple TXT resource records MAY be published at the same DNS
name.  When multiple records exist, each MUST independently conform
to the syntax defined in this section.  Clients MUST evaluate all
returned records and select among them using the <tt>priority</tt> field
as described below.</t>
      </section>
      <section anchor="abnf-grammar">
        <name>ABNF Grammar</name>
        <t>The record value is a semicolon-delimited sequence of key-value
pairs.  The following ABNF [RFC5234] defines the syntax:</t>
        <t>```
mcp-record    = version *( ";" SP field )
version       = "v=mcp1"
field         = url-field / proto-field / pk-field /
                epoch-field / cap-field / attest-field /
                scope-field / priority-field / ttl-field /
                ext-field / unknown-field</t>
        <t>url-field     = "url=" https-uri
proto-field   = "proto=" proto-value
pk-field      = "pk=" algo ":" base64url
epoch-field   = "epoch=" 1<em>DIGIT
cap-field     = "cap=" cap-csv
attest-field  = "attest=" attest-csv
scope-field   = "scope=" scope-csv
priority-field = "priority=" 1</em>DIGIT
ttl-field     = "ttl=" 1*DIGIT
ext-field     = "ext=" https-uri
unknown-field = token "=" *VCHAR</t>
        <t>https-uri     = "https://" <em>VCHAR
algo          = "ed25519"
base64url     = 1</em>( ALPHA / DIGIT / "-" / "<em>" )
proto-value   = "streamable-http" / "sse" / "stdio-url" /
                token
cap-csv       = cap-token *( "," cap-token )
cap-token     = token
attest-csv    = attest-token *( "," attest-token )
attest-token  = token
scope-csv     = scope-token *( "," scope-token )
scope-token   = "tools" / "resources" / "prompts" /
                "sampling" / "identity" / token
token         = 1*( ALPHA / DIGIT / "-" / "</em>" )
```</t>
      </section>
      <section anchor="field-definitions">
        <name>Field Definitions</name>
        <section anchor="v-required">
          <name>v (REQUIRED)</name>
          <t>Protocol version identifier.  MUST be the literal string <tt>mcp1</tt>.
MUST appear as the first field in the record.  Clients MUST reject
any record whose <tt>v</tt> field is absent, is not the first field, or
contains a value other than <tt>mcp1</tt>.</t>
          <t>This version gate enables future incompatible revisions of the
record format.  A future version <tt>mcp2</tt> would indicate breaking
changes to field semantics or discovery flow.</t>
        </section>
        <section anchor="url-required">
          <name>url (REQUIRED)</name>
          <t>The HTTPS URL of the MCP server endpoint.  MUST use the <tt>https</tt>
scheme.  MUST be a syntactically valid URI per RFC 3986.  This is
the entry point for MCP session establishment.</t>
          <t>Clients MUST NOT attempt to connect to URLs using schemes other
than <tt>https</tt>.  Servers MUST present a valid TLS certificate for
the hostname in the URL.</t>
        </section>
        <section anchor="proto-optional">
          <name>proto (OPTIONAL)</name>
          <t>The transport protocol used by the MCP server.  Default value:
<tt>streamable-http</tt>.  Defined values:</t>
          <ul spacing="normal">
            <li>
              <t><tt>streamable-http</tt> -- HTTP-based streaming transport (default).</t>
            </li>
            <li>
              <t><tt>sse</tt> -- Server-Sent Events transport.</t>
            </li>
            <li>
              <t><tt>stdio-url</tt> -- URL pointing to a signed launch descriptor for
a stdio-based server (descriptor format out of scope).</t>
            </li>
          </ul>
          <t>Implementations SHOULD support at least <tt>streamable-http</tt>.
Unknown values MUST cause the client to skip this record and
proceed to the next record by priority, or to HTTPS fallback.</t>
        </section>
        <section anchor="pk-optional">
          <name>pk (OPTIONAL)</name>
          <t>Ed25519 public key for endpoint verification, encoded as
<tt>ed25519:&lt;base64url&gt;</tt> where <tt>&lt;base64url&gt;</tt> is the raw 32-byte
public key encoded per <xref target="RFC4648"/> Section 5, without padding.</t>
          <t>When present, the <tt>pk</tt> field provides a cryptographic binding
between the DNS record and the MCP server.  Clients MUST verify
that the key matches at least one of the following:</t>
          <ol spacing="normal" type="1"><li>
              <t>A key in the server's TLS certificate SubjectPublicKeyInfo.</t>
            </li>
            <li>
              <t>The signing key used in HTTP Message Signatures <xref target="RFC9421"/> on
MCP responses.</t>
            </li>
            <li>
              <t>The key declared in the Server Card <xref target="SEP-1649"/> served by the
endpoint.</t>
            </li>
          </ol>
          <t>If verification fails, the client MUST treat the server as
untrusted and SHOULD NOT proceed with the MCP session.</t>
        </section>
        <section anchor="epoch-optional">
          <name>epoch (OPTIONAL)</name>
          <t>A monotonic non-negative integer that increments on every key
rotation.  Default value: <tt>0</tt>.</t>
          <t>Signed claims or attestations issued by the MCP server carry a key
identifier (kid) of the form <tt>&lt;algo&gt;:&lt;pk&gt;#&lt;epoch&gt;</tt>.  Verifiers
resolve the Discovery Record, extract the current epoch, and apply
the following rules:</t>
          <ul spacing="normal">
            <li>
              <t>Claims with <tt>epoch == current</tt> are valid (subject to temporal
checks).</t>
            </li>
            <li>
              <t>Claims with <tt>epoch &lt; current</tt> are revoked unless the claim's
expiry timestamp predates the rotation event.</t>
            </li>
            <li>
              <t>Claims with <tt>epoch &gt; current</tt> MUST be rejected as either
forgeries or evidence of a stale verifier DNS cache.</t>
            </li>
          </ul>
          <t>The epoch field enables epoch-based revocation without external
Certificate Revocation Lists (CRLs) or Online Certificate Status
Protocol (OCSP) infrastructure.  Incrementing the epoch revokes
all outstanding claims issued under prior epochs, subject to the
grace period defined by each claim's expiry.</t>
        </section>
        <section anchor="cap-optional">
          <name>cap (OPTIONAL)</name>
          <t>Capability tier advertised by the server, expressed as a
comma-separated list of tokens.  This field provides a coarse hint
to clients about the functional scope of the server.</t>
          <t>No normative semantics are defined for specific capability values
in this document.  Protocol extensions MAY define capability tokens
and their semantics.  Clients that do not recognize a capability
token MUST ignore it.</t>
        </section>
        <section anchor="attest-optional">
          <name>attest (OPTIONAL)</name>
          <t>A comma-separated list of attestation types that the MCP server
declares it is authorized to issue.  The value enumerates claim
types that downstream verifiers will accept from this issuer.</t>
          <t>Defined values (extensible):</t>
          <ul spacing="normal">
            <li>
              <t><tt>employ</tt> -- Current employment affiliation.</t>
            </li>
            <li>
              <t><tt>contract</tt> -- Contractual or freelance engagement.</t>
            </li>
            <li>
              <t><tt>alumnus</tt> -- Former affiliation.</t>
            </li>
            <li>
              <t><tt>director</tt> -- Board or directorial role.</t>
            </li>
            <li>
              <t><tt>member</tt> -- Generic membership (professional body, association).</t>
            </li>
            <li>
              <t><tt>contrib</tt> -- Verified contribution without formal affiliation.</t>
            </li>
          </ul>
          <t>Verifiers MUST reject any attestation claim whose type is not
present in the issuer's <tt>attest</tt> field.  This provides a
structural defense against capability creep: the domain's
published attestation scope is the upper bound on what its
claims can assert.</t>
          <t>Forward compatibility: unknown attestation values MUST be ignored,
not rejected.  A verifier encountering <tt>attest=employ,fellow</tt>
where <tt>fellow</tt> is undefined treats the record as
<tt>attest=employ</tt> and proceeds.</t>
        </section>
        <section anchor="scope-optional">
          <name>scope (OPTIONAL)</name>
          <t>Comma-separated list of MCP primitives supported by the server.
Defined values:</t>
          <ul spacing="normal">
            <li>
              <t><tt>tools</tt> -- The server exposes callable tools.</t>
            </li>
            <li>
              <t><tt>resources</tt> -- The server exposes readable resources.</t>
            </li>
            <li>
              <t><tt>prompts</tt> -- The server exposes prompt templates.</t>
            </li>
            <li>
              <t><tt>sampling</tt> -- The server supports LLM sampling requests.</t>
            </li>
            <li>
              <t><tt>identity</tt> -- The server supports identity resolution queries.</t>
            </li>
          </ul>
          <t>Unknown values MUST be ignored.  This field is advisory; the
authoritative capability set is declared during the MCP
<tt>initialize</tt> handshake.</t>
        </section>
        <section anchor="priority-optional">
          <name>priority (OPTIONAL)</name>
          <t>A non-negative integer.  Default value: <tt>10</tt>.  When multiple
Discovery Records exist at the same DNS name, clients MUST sort
records by <tt>priority</tt> in ascending order and attempt connection
to lower-valued records first.</t>
          <t>This field enables multi-server failover without external load
balancing.  If connection to the highest-priority server fails,
the client proceeds to the next record.</t>
        </section>
        <section anchor="ttl-optional">
          <name>ttl (OPTIONAL)</name>
          <t>Advisory TTL in seconds for client-side caching of the parsed
Discovery Record metadata.  Clients MAY use this value to avoid
repeated DNS lookups when the DNS TTL is shorter than desired.
The DNS TTL itself remains authoritative for cache expiry of the
raw DNS response; the <tt>ttl</tt> field applies to post-parse metadata
caching only.</t>
        </section>
        <section anchor="ext-optional">
          <name>ext (OPTIONAL)</name>
          <t>An HTTPS URL pointing to a protocol-extension document.  The
format and semantics of the extension document are defined by
the protocol extension, not by this specification.</t>
          <t>This field enables protocol-specific extensions (identity
protocols, payment protocols, agent-to-agent negotiation) to
attach additional metadata without consuming space in the DNS
TXT record.  The extension document MUST be served over HTTPS.
Clients that do not recognize or support the extension MUST
ignore this field.</t>
        </section>
      </section>
      <section anchor="forward-compatibility">
        <name>Forward Compatibility</name>
        <t>Implementations MUST ignore unknown fields.  A parser encountering
a field name that it does not recognize MUST skip that field and
continue parsing the remaining fields.  This rule ensures that
future extensions to the record format do not break existing
implementations.</t>
        <t>Breaking changes to the semantics of existing fields require a
version bump (e.g., <tt>v=mcp2</tt>).</t>
      </section>
      <section anchor="multi-string-concatenation">
        <name>Multi-String Concatenation</name>
        <t>DNS TXT resource records are limited to 255 bytes per
character-string <xref target="RFC1035"/>.  When a Discovery Record exceeds 255
bytes, the record MUST be split across multiple character-strings
within a single TXT RDATA, which the DNS resolver concatenates
per <xref target="RFC7208"/> Section 3.3.</t>
        <t>Example of a multi-string record:</t>
        <t><tt>
_mcp.example.com. IN TXT (
  "v=mcp1; url=https://mcp.example.com; "
  "pk=ed25519:LongBase64UrlEncodedPublicKeyValueHere; "
  "epoch=3; attest=employ,contract,alumnus; scope=tools,identity"
)
</tt></t>
        <t>Parsers MUST concatenate all character-strings within a single TXT
RDATA before parsing the semicolon-delimited fields.  Parsers
MUST NOT treat each character-string as an independent record.</t>
      </section>
    </section>
    <section anchor="discovery-procedure">
      <name>Discovery Procedure</name>
      <t>This section defines the step-by-step algorithm that an MCP client
follows to discover an MCP server associated with a given domain.</t>
      <section anchor="input">
        <name>Input</name>
        <t>The procedure takes a single input: an Origin Domain.  The Origin
Domain is typically extracted from an identifier encountered during
agent operation -- an email address (<tt>user@example.com</tt> yields
<tt>example.com</tt>), a URL (<tt>https://example.com/path</tt> yields
<tt>example.com</tt>), a handle (<tt>~user@example.com</tt> yields
<tt>example.com</tt>), or a bare domain.</t>
      </section>
      <section anchor="algorithm">
        <name>Algorithm</name>
        <ol spacing="normal" type="1"><li>
            <t><strong>Normalize.</strong>  Convert the Origin Domain to its canonical form:
lowercase per [RFC4343], apply IDNA2008 processing where the
domain contains non-ASCII labels.</t>
          </li>
          <li>
            <t><strong>Construct query name.</strong>  Prepend the label <tt>_mcp.</tt> to the
normalized Origin Domain, yielding <tt>_mcp.&lt;origin&gt;.</tt>.</t>
          </li>
          <li>
            <t><strong>Query DNS.</strong>  Issue a DNS query for <tt>_mcp.&lt;origin&gt;. IN TXT</tt>
via the client's configured recursive resolver.  Clients
SHOULD prefer DNS-over-HTTPS (DoH) or DNS-over-TLS (DoT) to
protect query privacy (see Section 6).</t>
          </li>
          <li>
            <t><strong>Handle DNS response.</strong>  </t>
            <t>
a. If the response is NOERROR with one or more TXT records,
   proceed to step 5.  </t>
            <t>
b. If the response is NXDOMAIN or NOERROR with zero TXT
   records, proceed to step 8 (HTTPS fallback).  </t>
            <t>
c. If the response is SERVFAIL or the query times out, the
   client MAY retry with exponential backoff or proceed to
   step 8.</t>
          </li>
          <li>
            <t><strong>Parse records.</strong>  For each TXT RDATA in the response:  </t>
            <t>
a. Concatenate all character-strings within the RDATA.  </t>
            <t>
b. Split the concatenated string on the <tt>";"</tt> delimiter,
   trimming leading and trailing whitespace from each field.  </t>
            <t>
c. Verify that the first field is <tt>v=mcp1</tt>.  If not, discard
   this record.  </t>
            <t>
d. Extract all recognized fields.  Ignore unknown fields per
   Section 3.7.  </t>
            <t>
e. Verify that the <tt>url</tt> field is present and contains a
   syntactically valid HTTPS URL.  If not, discard this
   record.</t>
          </li>
          <li>
            <t><strong>Sort by priority.</strong>  Collect all valid records.  Sort by
<tt>priority</tt> in ascending order (lowest value first).  Records
with equal priority MAY be tried in any order.</t>
          </li>
          <li>
            <t><strong>Connect.</strong>  For each record in priority order:  </t>
            <t>
a. Establish a TLS connection to the host in the <tt>url</tt> field.  </t>
            <t>
b. If the record contains a <tt>pk</tt> field, verify the key per
   Section 3.3.4.  On failure, skip to the next record.  </t>
            <t>
c. Initiate the MCP session using the transport declared in
   <tt>proto</tt> (defaulting to <tt>streamable-http</tt>).  </t>
            <t>
d. If the MCP <tt>initialize</tt> handshake succeeds, discovery is
   complete.  </t>
            <t>
e. If connection or handshake fails, proceed to the next
   record.  If all records are exhausted, proceed to step 8.</t>
          </li>
          <li>
            <t><strong>HTTPS fallback.</strong>  Attempt HTTPS-based discovery by fetching
<tt>https://&lt;origin&gt;/.well-known/mcp/server-card.json</tt> per
SEP-1649 <xref target="SEP-1649"/>, or <tt>https://&lt;origin&gt;/.well-known/mcp</tt>
per SEP-1960 <xref target="SEP-1960"/>.  If fallback succeeds, proceed with
the MCP session.  If fallback fails, discovery has failed.</t>
          </li>
        </ol>
      </section>
      <section anchor="caching">
        <name>Caching</name>
        <t>Clients SHOULD cache the parsed Discovery Record metadata for the
duration of the DNS TTL.  When the Discovery Record includes a
<tt>ttl</tt> field, clients MAY extend their metadata cache to that
duration, but MUST re-validate the underlying DNS record when the
DNS TTL expires.</t>
        <t>Clients that have previously connected to an MCP server and
verified its <tt>pk</tt> SHOULD cache the verified key binding and
re-validate it on subsequent connections (Trust On First Use, with
periodic re-verification against DNS).</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="dns-response-integrity">
        <name>DNS Response Integrity</name>
        <t>DNS responses are subject to forgery through cache poisoning,
on-path interception, and resolver compromise.  A forged Discovery
Record could redirect clients to a malicious MCP server.</t>
        <t>Operators SHOULD sign their zones with DNSSEC [RFC4033] [RFC4034]
[RFC4035].  Clients SHOULD request DNSSEC validation from their
recursive resolver (the AD flag) and SHOULD treat responses that
fail DNSSEC validation as equivalent to NXDOMAIN.  When the parent
zone is unsigned, DNSSEC provides no protection; clients MUST rely
on the TLS and key-pinning mechanisms described below.</t>
        <t>DNSSEC deployment remains uneven.  This specification does not
require DNSSEC because doing so would exclude a significant fraction
of potential deployers.  Instead, DNSSEC is RECOMMENDED as a
defense-in-depth layer, with TLS as the primary authentication
mechanism.</t>
      </section>
      <section anchor="tls-as-primary-authentication">
        <name>TLS as Primary Authentication</name>
        <t>The <tt>url</tt> field MUST use the <tt>https</tt> scheme.  The MCP server MUST
present a valid TLS certificate for the hostname in the URL,
issued by a certificate authority trusted by the client.</t>
        <t>TLS authenticates the server to the client and provides
confidentiality and integrity for the MCP session.  Even if the
DNS record is forged, an attacker cannot present a valid TLS
certificate for the legitimate server's hostname without
compromising the WebPKI trust chain.</t>
      </section>
      <section anchor="key-pinning-via-the-pk-field">
        <name>Key Pinning via the pk Field</name>
        <t>The optional <tt>pk</tt> field provides an additional layer of
authentication independent of the WebPKI.  When present, the client
verifies that the server's Ed25519 key matches the key declared in
DNS.</t>
        <t>This binding is valuable in two scenarios:</t>
        <ol spacing="normal" type="1"><li>
            <t><strong>Certificate authority compromise.</strong>  If a CA issues a
fraudulent certificate for the server's hostname, the <tt>pk</tt>
binding detects the discrepancy because the attacker does not
possess the correct Ed25519 private key.</t>
          </li>
          <li>
            <t><strong>Attestation verification.</strong>  Signed artifacts (attestations,
identity claims, x402 payment receipts) issued by the server
can be verified against the <tt>pk</tt> in DNS, providing a
verification path that does not depend on the TLS session.</t>
          </li>
        </ol>
        <t>Key pinning introduces a risk of key loss.  If the operator loses
the private key corresponding to the published <tt>pk</tt>, legitimate
clients will reject the server.  Operators MUST maintain secure
key backups and SHOULD implement the key rotation procedure
described below.</t>
      </section>
      <section anchor="key-rotation">
        <name>Key Rotation</name>
        <t>Key rotation follows the overlapping-key pattern established by
DKIM:</t>
        <ol spacing="normal" type="1"><li>
            <t>Generate a new Ed25519 keypair.</t>
          </li>
          <li>
            <t>Update the MCP server to accept both the old and new keys.</t>
          </li>
          <li>
            <t>Publish a new Discovery Record with the updated <tt>pk</tt> and
incremented <tt>epoch</tt>.</t>
          </li>
          <li>
            <t>Wait for at least 2x the DNS TTL to allow cached records to
expire.</t>
          </li>
          <li>
            <t>Remove the old key from the MCP server.</t>
          </li>
        </ol>
        <t>During the overlap window (steps 2-4), clients with cached old
records and clients with fresh new records both succeed.  The
<tt>epoch</tt> field enables verifiers to detect stale claims: a claim
signed with <tt>epoch=N</tt> is revoked once the Discovery Record shows
<tt>epoch=N+1</tt>, unless the claim's expiry predates the rotation event.</t>
        <t>Operators SHOULD NOT rotate keys more frequently than once per DNS
TTL period.  Frequent rotation increases the risk of verification
failures during the overlap window.</t>
      </section>
      <section anchor="replay-and-freshness">
        <name>Replay and Freshness</name>
        <t>Discovery Records are public and cacheable.  An attacker who
observes a Discovery Record can replay it, but this provides no
advantage: the record contains no secrets, and replaying a
legitimate record simply directs clients to the legitimate server.</t>
        <t>The <tt>epoch</tt> field provides freshness for signed artifacts.  A
verifier that encounters a claim with an epoch lower than the
current Discovery Record epoch knows the signing key has been
rotated and can apply epoch-based revocation.</t>
        <t>MCP servers that issue signed attestations SHOULD include a nonce
and timestamp in each attestation.  Verifiers SHOULD reject
attestations older than a policy-defined maximum age (e.g., 300
seconds for session-bound attestations).</t>
      </section>
      <section anchor="denial-of-service">
        <name>Denial of Service</name>
        <t>An attacker who can inject DNS responses (absent DNSSEC) could
publish a Discovery Record pointing to an attacker-controlled
server, or could inject NXDOMAIN to suppress discovery.  The TLS
requirement mitigates server impersonation (the attacker cannot
obtain a valid certificate), but suppression of discovery cannot
be mitigated at the DNS layer alone.</t>
        <t>Clients SHOULD implement the HTTPS fallback described in Section 4
to reduce the impact of DNS-layer suppression.</t>
      </section>
      <section anchor="zone-control-and-record-authenticity">
        <name>Zone Control and Record Authenticity</name>
        <t>The <tt>_mcp.</tt> label is under the Policy Domain's own DNS zone.
Publication of the Discovery Record is therefore an authenticated
act: only an entity with write access to the zone can create or
modify the record.  This matches the trust model of DKIM, MTA-STS,
and DMARC, where the zone holder's control of the DNS record is
the root of authority.</t>
        <t>Delegated subdomains (e.g., <tt>_mcp.dept.example.com</tt>) inherit the
trust properties of the subdomain's zone.  If <tt>dept.example.com</tt>
is delegated to a separate zone with its own set of nameservers,
the operator of that zone controls its Discovery Record
independently.  Clients MUST NOT assume that a Discovery Record at
a subdomain is authorized by the parent domain's zone operator.</t>
      </section>
      <section anchor="attestation-scope-as-security-boundary">
        <name>Attestation Scope as Security Boundary</name>
        <t>The <tt>attest</tt> field provides a structural defense against capability
creep.  By publishing the set of attestation types it will issue,
a domain establishes an upper bound that verifiers can enforce.
An MCP server that publishes <tt>attest=employ,contract</tt> cannot
legitimately issue a <tt>director</tt> attestation, and verifiers MUST
reject such claims even if the cryptographic signature is valid.</t>
        <t>This mechanism transforms the DNS record into a capability
declaration: the domain operator explicitly consents to a bounded
set of claim types, and verifiers enforce that boundary.  The
operator can expand or contract the <tt>attest</tt> set at any time by
updating the DNS record; the change takes effect at DNS TTL
expiry.</t>
      </section>
      <section anchor="multi-server-key-consistency">
        <name>Multi-Server Key Consistency</name>
        <t>When multiple Discovery Records are published at the same DNS name
(for failover), the records MAY declare different <tt>pk</tt> values (one
per server) or the same <tt>pk</tt> value (shared key).  Operators using
distinct keys per server MUST ensure that all servers share the
same <tt>epoch</tt>.  A split-epoch configuration (where different servers
advertise different epoch values) creates ambiguous revocation
semantics and MUST be avoided.</t>
      </section>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <section anchor="dns-query-metadata">
        <name>DNS Query Metadata</name>
        <t>DNS queries are visible to the recursive resolver, and potentially
to on-path observers between the client and the resolver.  A client
resolving <tt>_mcp.example.com</tt> reveals to its resolver that it
intends to interact with <tt>example.com</tt> via MCP.</t>
        <t>Clients concerned with query metadata leakage SHOULD use
DNS-over-HTTPS (DoH) [RFC8484] or DNS-over-TLS (DoT) [RFC7858]
and SHOULD prefer resolvers that publish strong privacy policies
(e.g., no query logging, GDPR compliance).</t>
      </section>
      <section anchor="discovery-record-content">
        <name>Discovery Record Content</name>
        <t>The Discovery Record itself is public by design.  It contains no
per-user information.  The fields describe the MCP server's
endpoint, transport, and capabilities -- all of which are
properties of the domain operator, not of any individual user.</t>
        <t>Operators who wish to keep the existence of their MCP server
private SHOULD NOT publish a Discovery Record and SHOULD rely on
out-of-band configuration or authenticated HTTPS-based discovery.</t>
      </section>
      <section anchor="individual-privacy">
        <name>Individual Privacy</name>
        <t>The Discovery Record is a domain-level record.  This specification
does not define per-user DNS records and explicitly discourages
them.  Individual identity resolution, where applicable, occurs
at the MCP application layer behind the server endpoint, subject
to application-level consent and access control mechanisms that
are outside the scope of this document.</t>
        <t>A domain that publishes a Discovery Record does not reveal
anything about the individuals associated with that domain.  The
server behind the endpoint determines what information, if any,
is disclosed about individuals, and under what conditions.</t>
      </section>
      <section anchor="caching-and-linkability">
        <name>Caching and Linkability</name>
        <t>Clients that cache Discovery Record metadata (including <tt>pk</tt>
bindings) should be aware that cached state can be used for
cross-session linkability if the cache is not partitioned by
context.  Implementations SHOULD partition Discovery Record
caches by the requesting context (e.g., per-conversation or
per-user) to prevent cross-context tracking.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="underscored-dns-node-name-registration">
        <name>Underscored DNS Node Name Registration</name>
        <t>This document requests IANA to register the following entry in the
"Underscored and Globally Scoped DNS Node Names" registry
established by <xref target="RFC8552"/>:</t>
        <t><tt>
+--------+------------+-----------------------------+
| RR Type| _NODE NAME | Reference                   |
+--------+------------+-----------------------------+
| TXT    | _mcp       | [this document], Section 3  |
+--------+------------+-----------------------------+
</tt></t>
        <t>The <tt>_mcp</tt> label is used to publish Discovery Records for Model
Context Protocol servers as defined in Section 3 of this document.</t>
      </section>
      <section anchor="no-new-rr-type">
        <name>No New RR Type</name>
        <t>This document does not request registration of a new DNS resource
record type.  The Discovery Record uses the existing TXT RR type.
The historical experience of SPF <xref target="RFC7208"/>, which registered a
dedicated RR type 99 that was subsequently deprecated due to lack
of deployment, strongly argues against proposing a new RR type for
MCP discovery.  TXT records are universally supported by DNS
operators, resolvers, management interfaces, and CDN-fronted
services.</t>
      </section>
      <section anchor="version-registry">
        <name>Version Registry</name>
        <t>This document defines the version tag <tt>v=mcp1</tt>.  Future versions
of the Discovery Record format (e.g., <tt>v=mcp2</tt>) SHOULD be
coordinated with the Agentic AI Foundation's MCP specification
process <xref target="MCP"/>.  This document recommends that the Agentic AI
Foundation establish a version registry for the <tt>v=mcpN</tt> tag,
with IETF liaison for cross-registry coordination if an IETF
working group is chartered for MCP discovery.</t>
      </section>
    </section>
    <section anchor="examples">
      <name>Examples</name>
      <t>This section provides non-normative examples of Discovery Records
for common deployment scenarios.</t>
      <section anchor="minimal-record">
        <name>Minimal Record</name>
        <t>The simplest valid Discovery Record contains only the version and
endpoint URL:</t>
        <t><tt>
_mcp.example.com. IN TXT "v=mcp1; url=https://mcp.example.com"
</tt></t>
        <t>A client discovering this record connects to
<tt>https://mcp.example.com</tt> using the default <tt>streamable-http</tt>
transport with no authentication requirement and no key pinning.
This is appropriate for public MCP servers offering openly
available tools.</t>
      </section>
      <section anchor="identity-bound-record">
        <name>Identity-Bound Record</name>
        <t>A server that issues signed attestations and participates in
identity resolution publishes a full record with key pinning,
epoch tracking, and attestation scope:</t>
        <t><tt>
_mcp.truealter.com. IN TXT (
  "v=mcp1; url=https://mcp.truealter.com; "
  "proto=streamable-http; "
  "pk=ed25519:dGhpcyBpcyBhIHNhbXBsZSBrZXk; "
  "epoch=3; cap=E4; "
  "attest=employ,contract,alumnus,member; "
  "scope=tools,resources,prompts,identity; "
  "ext=https://truealter.com/.well-known/alter-ext.json"
)
</tt></t>
        <t>Clients connecting to this server:</t>
        <ol spacing="normal" type="1"><li>
            <t>Verify the Ed25519 key against the TLS session or HTTP
Message Signatures.</t>
          </li>
          <li>
            <t>Know that signed claims carry <tt>kid=ed25519:dGhpc...#3</tt> and
can be revoked by incrementing the epoch.</t>
          </li>
          <li>
            <t>Can fetch the extension document for protocol-specific
metadata (e.g., identity resolution, payment addresses).</t>
          </li>
          <li>
            <t>Know the server supports identity resolution
(<tt>scope=...identity</tt>) and that it is authorized to issue
employment, contract, alumnus, and membership attestations.</t>
          </li>
        </ol>
      </section>
      <section anchor="multi-server-failover">
        <name>Multi-Server Failover</name>
        <t>An operator running geographically redundant MCP servers publishes
multiple records with distinct priorities:</t>
        <t><tt>
_mcp.bigcorp.com. IN TXT "v=mcp1; url=https://mcp-us.bigcorp.com; priority=10; pk=ed25519:USKeyHere; epoch=5"
_mcp.bigcorp.com. IN TXT "v=mcp1; url=https://mcp-eu.bigcorp.com; priority=20; pk=ed25519:EUKeyHere; epoch=5"
_mcp.bigcorp.com. IN TXT "v=mcp1; url=https://mcp-ap.bigcorp.com; priority=30; pk=ed25519:APKeyHere; epoch=5"
</tt></t>
        <t>Clients sort by priority and attempt the US endpoint first,
failing over to EU, then AP.  All three servers share the same
epoch, ensuring consistent revocation semantics.  The <tt>pk</tt> values
MAY differ across servers (each server holds its own keypair) or
MAY be identical (shared key, centralized signing).</t>
      </section>
      <section anchor="handle-scoped-record">
        <name>Handle-Scoped Record</name>
        <t>A subdomain-scoped record enables sovereign individuals who
operate their own domain to publish a personal MCP endpoint:</t>
        <t><tt>
_mcp.blake.alter.dev. IN TXT "v=mcp1; url=https://alter.dev/~blake/mcp; scope=identity; pk=ed25519:PersonalKeyHere; epoch=1"
</tt></t>
        <t>This record declares that identity queries for <tt>blake</tt> within the
<tt>alter.dev</tt> domain should be directed to
<tt>https://alter.dev/~blake/mcp</tt>.  Handle-scoped records are
optional and are intended for the specific use case of individuals
who operate their own identity endpoint.  The common case -- where
individuals are resolved through an organizational MCP server --
requires only a single record at the organizational domain.</t>
      </section>
    </section>
    <section anchor="interoperability">
      <name>Interoperability</name>
      <section anchor="relationship-to-https-rr-rfc-9460">
        <name>Relationship to HTTPS RR (RFC 9460)</name>
        <t>The SVCB/HTTPS DNS record type <xref target="RFC9460"/> provides service binding
with extensible key-value parameters, and could in principle carry
MCP discovery metadata.  However, as of 2026, HTTPS RR deployment
is uneven, DNS management interfaces expose it inconsistently, and
no MCP-specific SvcParamKey has been registered.</t>
        <t>This specification uses TXT records for Phase 1 deployment.  A
future revision MAY define an MCP-specific SvcParamKey for
HTTPS RR, enabling operators to publish MCP metadata alongside
HTTPS service parameters.  Such a revision would be appropriate
once HTTPS RR resolver and management tooling reaches the
deployment level currently enjoyed by TXT records.</t>
      </section>
      <section anchor="relationship-to-did-methods">
        <name>Relationship to DID Methods</name>
        <t>The W3C Decentralized Identifier (DID) ecosystem includes methods
that resolve via DNS.  <tt>did:web</tt> resolves to
<tt>https://&lt;domain&gt;/.well-known/did.json</tt>.  <tt>did:dns</tt> is in early
development.</t>
        <t>The Discovery Record is not a DID method and does not produce DID
Documents.  However, the <tt>pk</tt> field in a Discovery Record can
serve as a verification method reference in a DID Document, and a
<tt>did:web</tt> document can reference the MCP endpoint declared in the
Discovery Record.  The two mechanisms are complementary:
DID provides a general-purpose identifier framework; the Discovery
Record provides MCP-specific endpoint discovery.</t>
      </section>
      <section anchor="relationship-to-well-knownmcp">
        <name>Relationship to .well-known/mcp</name>
        <t>The <tt>.well-known/mcp</tt> endpoint proposed in SEP-1960 <xref target="SEP-1960"/>
and the Server Card proposed in SEP-1649 <xref target="SEP-1649"/> are the
HTTPS-based discovery mechanisms for MCP.  This specification
defines the DNS-based discovery layer and explicitly designates
the <tt>.well-known/mcp</tt> endpoint as the fallback when DNS discovery
fails or returns no result.</t>
        <t>The intended deployment is layered: DNS provides the fast,
cacheable bootstrap; the Server Card provides the full metadata.
Operators SHOULD publish both a Discovery Record and a Server
Card.  Clients SHOULD attempt DNS discovery first and fall back
to HTTPS discovery.</t>
      </section>
      <section anchor="relationship-to-agent-identity-and-discovery-aid">
        <name>Relationship to Agent Identity and Discovery (AID)</name>
        <t>The Agent Identity and Discovery protocol <xref target="AID"/> uses
<tt>_agent.&lt;domain&gt;</tt> TXT records with a <tt>v=aid1</tt> version tag to
provide cross-protocol meta-discovery (MCP, A2A, OpenAPI, and
others).  The <tt>_mcp.</tt> record defined in this document is
MCP-specific and provides richer MCP-native fields (epoch, attest,
scope, proto).</t>
        <t>The two mechanisms are complementary.  <tt>_agent.&lt;domain&gt;</tt> is the
cross-protocol meta layer; <tt>_mcp.&lt;domain&gt;</tt> is the MCP-specific
refinement.  A domain MAY publish both records.  A client that
discovers MCP support via <tt>_agent.&lt;domain&gt;</tt> MAY subsequently
query <tt>_mcp.&lt;domain&gt;</tt> for detailed MCP metadata.</t>
      </section>
      <section anchor="relationship-to-google-agent-to-agent-protocol-a2a">
        <name>Relationship to Google Agent-to-Agent Protocol (A2A)</name>
        <t>The Google Agent-to-Agent Protocol (A2A) uses
<tt>/.well-known/agent-card.json</tt> for HTTPS-based agent discovery.
A2A does not currently define a DNS-based discovery mechanism.</t>
        <t>The <tt>_mcp.</tt> Discovery Record is MCP-specific and does not apply
to A2A endpoints.  However, the <tt>_mcp.</tt> pattern is structurally
generalizable: a future <tt>_a2a.&lt;domain&gt;</tt> TXT record could follow
the same conventions (version prefix, URL field, key pinning,
priority) to provide DNS-based discovery for A2A servers.  This
document does not define such a record but notes the pattern's
applicability.</t>
      </section>
      <section anchor="coexistence-with-sep-1959">
        <name>Coexistence with SEP-1959</name>
        <t>MCP SEP-1959 <xref target="SEP-1959"/> proposes DNS-based MCP server identity
verification using a TXT record format with fields including
<tt>auth</tt>, <tt>transport</tt>, and <tt>sec</tt>.  This document defines a
complementary but more general mechanism.  The key differences
are:</t>
        <ul spacing="normal">
          <li>
            <t>This document defines <tt>epoch</tt> for key-lifecycle management,
which SEP-1959 does not address.</t>
          </li>
          <li>
            <t>This document defines <tt>attest</tt> for attestation scope bounding,
which SEP-1959 does not address.</t>
          </li>
          <li>
            <t>This document defines a formal ABNF grammar and explicit
forward-compatibility rules.</t>
          </li>
        </ul>
        <t>The authors intend to coordinate with the SEP-1959 author to
merge or align the two proposals.  Where the field semantics
overlap (version, URL, transport, key), convergence on a single
field vocabulary is desirable.</t>
      </section>
    </section>
    <section anchor="implementation-status">
      <name>Implementation Status</name>
      <t>This section records the status of known implementations at the
time of publication, per [RFC7942].</t>
      <t>ALTER (https://truealter.com) maintains a reference implementation
comprising:</t>
      <ul spacing="normal">
        <li>
          <t>A live Discovery Record at <tt>_mcp.truealter.com</tt> exercising the
full field set including <tt>pk</tt>, <tt>epoch</tt>, <tt>attest</tt>, and <tt>ext</tt>.</t>
        </li>
        <li>
          <t>An MCP server responding to discovery-initiated connections
with tool, resource, and identity-resolution capabilities.</t>
        </li>
        <li>
          <t>A verification CLI (<tt>alter-dns check &lt;domain&gt;</tt>) that resolves
Discovery Records, validates key bindings, and reports endpoint
reachability.</t>
        </li>
      </ul>
      <t>The implementation targets MCP specification version 2025-11 and
uses <tt>streamable-http</tt> as the default transport.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC1035" target="https://www.rfc-editor.org/info/rfc1035" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.1035.xml">
          <front>
            <title>Domain names - implementation and specification</title>
            <author fullname="P. Mockapetris" initials="P." surname="Mockapetris"/>
            <date month="November" year="1987"/>
            <abstract>
              <t>This RFC is the revised specification of the protocol and format used in the implementation of the Domain Name System. It obsoletes RFC-883. This memo documents the details of the domain name client - server communication.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="13"/>
          <seriesInfo name="RFC" value="1035"/>
          <seriesInfo name="DOI" value="10.17487/RFC1035"/>
        </reference>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC4648" target="https://www.rfc-editor.org/info/rfc4648" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4648.xml">
          <front>
            <title>The Base16, Base32, and Base64 Data Encodings</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <date month="October" year="2006"/>
            <abstract>
              <t>This document describes the commonly used base 64, base 32, and base 16 encoding schemes. It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters in encoded data, use of different encoding alphabets, and canonical encodings. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4648"/>
          <seriesInfo name="DOI" value="10.17487/RFC4648"/>
        </reference>
        <reference anchor="RFC7208" target="https://www.rfc-editor.org/info/rfc7208" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7208.xml">
          <front>
            <title>Sender Policy Framework (SPF) for Authorizing Use of Domains in Email, Version 1</title>
            <author fullname="S. Kitterman" initials="S." surname="Kitterman"/>
            <date month="April" year="2014"/>
            <abstract>
              <t>Email on the Internet can be forged in a number of ways. In particular, existing protocols place no restriction on what a sending host can use as the "MAIL FROM" of a message or the domain given on the SMTP HELO/EHLO commands. This document describes version 1 of the Sender Policy Framework (SPF) protocol, whereby ADministrative Management Domains (ADMDs) can explicitly authorize the hosts that are allowed to use their domain names, and a receiving host can check such authorization.</t>
              <t>This document obsoletes RFC 4408.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7208"/>
          <seriesInfo name="DOI" value="10.17487/RFC7208"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC8461" target="https://www.rfc-editor.org/info/rfc8461" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8461.xml">
          <front>
            <title>SMTP MTA Strict Transport Security (MTA-STS)</title>
            <author fullname="D. Margolis" initials="D." surname="Margolis"/>
            <author fullname="M. Risher" initials="M." surname="Risher"/>
            <author fullname="B. Ramakrishnan" initials="B." surname="Ramakrishnan"/>
            <author fullname="A. Brotman" initials="A." surname="Brotman"/>
            <author fullname="J. Jones" initials="J." surname="Jones"/>
            <date month="September" year="2018"/>
            <abstract>
              <t>SMTP MTA Strict Transport Security (MTA-STS) is a mechanism enabling mail service providers (SPs) to declare their ability to receive Transport Layer Security (TLS) secure SMTP connections and to specify whether sending SMTP servers should refuse to deliver to MX hosts that do not offer TLS with a trusted server certificate.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8461"/>
          <seriesInfo name="DOI" value="10.17487/RFC8461"/>
        </reference>
        <reference anchor="RFC8552" target="https://www.rfc-editor.org/info/rfc8552" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8552.xml">
          <front>
            <title>Scoped Interpretation of DNS Resource Records through "Underscored" Naming of Attribute Leaves</title>
            <author fullname="D. Crocker" initials="D." surname="Crocker"/>
            <date month="March" year="2019"/>
            <abstract>
              <t>Formally, any DNS Resource Record (RR) may occur under any domain name. However, some services use an operational convention for defining specific interpretations of an RRset by locating the records in a DNS branch under the parent domain to which the RRset actually applies. The top of this subordinate branch is defined by a naming convention that uses a reserved node name, which begins with the underscore character (e.g., "_name"). The underscored naming construct defines a semantic scope for DNS record types that are associated with the parent domain above the underscored branch. This specification explores the nature of this DNS usage and defines the "Underscored and Globally Scoped DNS Node Names" registry with IANA. The purpose of this registry is to avoid collisions resulting from the use of the same underscored name for different services.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="222"/>
          <seriesInfo name="RFC" value="8552"/>
          <seriesInfo name="DOI" value="10.17487/RFC8552"/>
        </reference>
        <reference anchor="RFC9421" target="https://www.rfc-editor.org/info/rfc9421" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9421.xml">
          <front>
            <title>HTTP Message Signatures</title>
            <author fullname="A. Backman" initials="A." role="editor" surname="Backman"/>
            <author fullname="J. Richer" initials="J." role="editor" surname="Richer"/>
            <author fullname="M. Sporny" initials="M." surname="Sporny"/>
            <date month="February" year="2024"/>
            <abstract>
              <t>This document describes a mechanism for creating, encoding, and verifying digital signatures or message authentication codes over components of an HTTP message. This mechanism supports use cases where the full HTTP message may not be known to the signer and where the message may be transformed (e.g., by intermediaries) before reaching the verifier. This document also describes a means for requesting that a signature be applied to a subsequent HTTP message in an ongoing HTTP exchange.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9421"/>
          <seriesInfo name="DOI" value="10.17487/RFC9421"/>
        </reference>
        <reference anchor="MCP" target="https://modelcontextprotocol.io">
          <front>
            <title>Model Context Protocol Specification</title>
            <author>
              <organization>Agentic AI Foundation</organization>
            </author>
            <date year="2026"/>
          </front>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC6376" target="https://www.rfc-editor.org/info/rfc6376" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6376.xml">
          <front>
            <title>DomainKeys Identified Mail (DKIM) Signatures</title>
            <author fullname="D. Crocker" initials="D." role="editor" surname="Crocker"/>
            <author fullname="T. Hansen" initials="T." role="editor" surname="Hansen"/>
            <author fullname="M. Kucherawy" initials="M." role="editor" surname="Kucherawy"/>
            <date month="September" year="2011"/>
            <abstract>
              <t>DomainKeys Identified Mail (DKIM) permits a person, role, or organization that owns the signing domain to claim some responsibility for a message by associating the domain with the message. This can be an author's organization, an operational relay, or one of their agents. DKIM separates the question of the identity of the Signer of the message from the purported author of the message. Assertion of responsibility is validated through a cryptographic signature and by querying the Signer's domain directly to retrieve the appropriate public key. Message transit from author to recipient is through relays that typically make no substantive change to the message content and thus preserve the DKIM signature.</t>
              <t>This memo obsoletes RFC 4871 and RFC 5672. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="76"/>
          <seriesInfo name="RFC" value="6376"/>
          <seriesInfo name="DOI" value="10.17487/RFC6376"/>
        </reference>
        <reference anchor="RFC7489" target="https://www.rfc-editor.org/info/rfc7489" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7489.xml">
          <front>
            <title>Domain-based Message Authentication, Reporting, and Conformance (DMARC)</title>
            <author fullname="M. Kucherawy" initials="M." role="editor" surname="Kucherawy"/>
            <author fullname="E. Zwicky" initials="E." role="editor" surname="Zwicky"/>
            <date month="March" year="2015"/>
            <abstract>
              <t>Domain-based Message Authentication, Reporting, and Conformance (DMARC) is a scalable mechanism by which a mail-originating organization can express domain-level policies and preferences for message validation, disposition, and reporting, that a mail-receiving organization can use to improve mail handling.</t>
              <t>Originators of Internet Mail need to be able to associate reliable and authenticated domain identifiers with messages, communicate policies about messages that use those identifiers, and report about mail using those identifiers. These abilities have several benefits: Receivers can provide feedback to Domain Owners about the use of their domains; this feedback can provide valuable insight about the management of internal operations and the presence of external domain name abuse.</t>
              <t>DMARC does not produce or encourage elevated delivery privilege of authenticated email. DMARC is a mechanism for policy distribution that enables increasingly strict handling of messages that fail authentication checks, ranging from no action, through altered delivery, up to message rejection.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7489"/>
          <seriesInfo name="DOI" value="10.17487/RFC7489"/>
        </reference>
        <reference anchor="RFC9460" target="https://www.rfc-editor.org/info/rfc9460" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9460.xml">
          <front>
            <title>Service Binding and Parameter Specification via the DNS (SVCB and HTTPS Resource Records)</title>
            <author fullname="B. Schwartz" initials="B." surname="Schwartz"/>
            <author fullname="M. Bishop" initials="M." surname="Bishop"/>
            <author fullname="E. Nygren" initials="E." surname="Nygren"/>
            <date month="November" year="2023"/>
            <abstract>
              <t>This document specifies the "SVCB" ("Service Binding") and "HTTPS" DNS resource record (RR) types to facilitate the lookup of information needed to make connections to network services, such as for HTTP origins. SVCB records allow a service to be provided from multiple alternative endpoints, each with associated parameters (such as transport protocol configuration), and are extensible to support future uses (such as keys for encrypting the TLS ClientHello). They also enable aliasing of apex domains, which is not possible with CNAME. The HTTPS RR is a variation of SVCB for use with HTTP (see RFC 9110, "HTTP Semantics"). By providing more information to the client before it attempts to establish a connection, these records offer potential benefits to both performance and privacy.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9460"/>
          <seriesInfo name="DOI" value="10.17487/RFC9460"/>
        </reference>
        <reference anchor="SEP-1649" target="https://github.com/modelcontextprotocol/modelcontextprotocol/issues/1649">
          <front>
            <title>MCP Server Cards</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="SEP-1959" target="https://github.com/modelcontextprotocol/modelcontextprotocol/issues/1959">
          <front>
            <title>DNS-Based MCP Server Identity Verification</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="SEP-1960" target="https://github.com/modelcontextprotocol/modelcontextprotocol/issues/1960">
          <front>
            <title>.well-known/mcp Discovery Endpoint</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="SEP-2127" target="https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2127">
          <front>
            <title>MCP Server Cards (PR)</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="AID" target="https://datatracker.ietf.org/doc/draft-nemethi-aid-agent-identity-discovery/">
          <front>
            <title>Agent Identity &amp; Discovery</title>
            <author surname="Nemethi">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="SERRA" target="https://datatracker.ietf.org/doc/draft-serra-mcp-discovery-uri/02/">
          <front>
            <title>MCP Discovery URI</title>
            <author surname="Serra">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
      </references>
    </references>
    <?line 1019?>

<section anchor="discovery-pseudocode">
      <name>Discovery Pseudocode</name>
      <t>The following pseudocode illustrates the discovery algorithm
defined in Section 4.  It is non-normative.</t>
      <t>```
function discover_mcp(origin_domain):
    # Step 1: Normalize
    domain = normalize(origin_domain)  # lowercase, IDNA2008</t>
      <artwork><![CDATA[
# Step 2: Construct query name
qname = "_mcp." + domain

# Step 3: Query DNS
response = dns_query(qname, type=TXT, prefer=DoH)

# Step 4: Handle response
if response.status == NXDOMAIN or response.answers == []:
    return https_fallback(domain)

if response.status == SERVFAIL:
    if retry_with_backoff(qname, type=TXT):
        # retry succeeded, proceed
        pass
    else:
        return https_fallback(domain)

# Step 5: Parse records
valid_records = []
for rdata in response.answers:
    text = concatenate_strings(rdata)
    fields = parse_semicolon_fields(text)

    if fields[0] != "v=mcp1":
        continue  # discard non-mcp1 records

    record = extract_fields(fields)

    if not is_valid_https_url(record.url):
        continue  # discard malformed records

    valid_records.append(record)

if valid_records == []:
    return https_fallback(domain)

# Step 6: Sort by priority
valid_records.sort(key=lambda r: r.priority)

# Step 7: Connect
for record in valid_records:
    try:
        session = tls_connect(record.url)

        if record.pk is not None:
            if not verify_key(session, record.pk):
                continue  # key mismatch, try next

        mcp = mcp_initialize(session, record.proto)
        return mcp  # discovery complete

    except ConnectionError:
        continue  # try next record

# Step 8: All records failed
return https_fallback(domain)
]]></artwork>
      <t>function https_fallback(domain):
    # Try .well-known/mcp/server-card.json (SEP-1649)
    card_url = "https://" + domain +
               "/.well-known/mcp/server-card.json"
    card = https_get(card_url)
    if card is not None:
        return mcp_connect_from_card(card)</t>
      <artwork><![CDATA[
# Try .well-known/mcp (SEP-1960)
manifest_url = "https://" + domain + "/.well-known/mcp"
manifest = https_get(manifest_url)
if manifest is not None:
    return mcp_connect_from_manifest(manifest)

return None  # discovery failed ```
]]></artwork>
    </section>
    <section anchor="change-log">
      <name>Change Log</name>
      <t>draft-morrison-mcp-dns-discovery-00 (April 2026):</t>
      <ul spacing="normal">
        <li>
          <t>Initial submission.</t>
        </li>
        <li>
          <t>Defines <tt>_mcp.&lt;domain&gt;</tt> TXT record format with ABNF grammar.</t>
        </li>
        <li>
          <t>Defines discovery procedure with HTTPS fallback.</t>
        </li>
        <li>
          <t>Defines <tt>pk</tt>, <tt>epoch</tt>, <tt>attest</tt>, <tt>scope</tt>, <tt>cap</tt>, <tt>priority</tt>,
<tt>ttl</tt>, and <tt>ext</tt> fields.</t>
        </li>
        <li>
          <t>Registers <tt>_mcp</tt> in the underscored DNS node name registry.</t>
        </li>
      </ul>
      <?line 1116?>

</section>
    <section anchor="normative-references">
      <name>Normative References</name>
      <ul spacing="normal">
        <li>
          <t><xref target="RFC1035"/> Mockapetris, P., "Domain Names - Implementation and
Specification", STD 13, RFC 1035, DOI 10.17487/RFC1035,
November 1987.</t>
        </li>
        <li>
          <t><xref target="RFC2119"/> Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119,
March 1997.</t>
        </li>
        <li>
          <t><xref target="RFC4648"/> Josefsson, S., "The Base16, Base32, and Base64 Data
Encodings", RFC 4648, DOI 10.17487/RFC4648, October 2006.</t>
        </li>
        <li>
          <t>[RFC5234] Crocker, D., Ed. and P. Overell, "Augmented BNF for
Syntax Specifications: ABNF", STD 68, RFC 5234,
DOI 10.17487/RFC5234, January 2008.</t>
        </li>
        <li>
          <t><xref target="RFC7208"/> Kitterman, S., "Sender Policy Framework (SPF) for
Authorizing Use of Domains in Email, Version 1", RFC 7208,
DOI 10.17487/RFC7208, April 2014.</t>
        </li>
        <li>
          <t><xref target="RFC8174"/> Leiba, B., "Ambiguity of Uppercase vs Lowercase in
RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017.</t>
        </li>
        <li>
          <t><xref target="RFC8461"/> Margolis, D., Risher, M., Ramakrishnan, B.,
Brotman, A., and J. Jones, "SMTP MTA Strict Transport
Security (MTA-STS)", RFC 8461, DOI 10.17487/RFC8461,
September 2018.</t>
        </li>
        <li>
          <t><xref target="RFC8552"/> Crocker, D., "Scoped Interpretation of DNS Resource
Records through 'Underscored' Naming of Attribute Leaves",
BCP 222, RFC 8552, DOI 10.17487/RFC8552, March 2019.</t>
        </li>
        <li>
          <t><xref target="RFC9421"/> Backman, A., Richer, J., and M. Sporny, "HTTP
Message Signatures", RFC 9421, DOI 10.17487/RFC9421,
February 2024.</t>
        </li>
        <li>
          <t><xref target="MCP"/> Agentic AI Foundation, "Model Context Protocol
Specification", https://modelcontextprotocol.io, 2026.</t>
        </li>
      </ul>
    </section>
    <section anchor="informative-references">
      <name>Informative References</name>
      <ul spacing="normal">
        <li>
          <t>[RFC4033] Arends, R., Austein, R., Larson, M., Massey, D.,
and S. Rose, "DNS Security Introduction and Requirements",
RFC 4033, DOI 10.17487/RFC4033, March 2005.</t>
        </li>
        <li>
          <t>[RFC4034] Arends, R., Austein, R., Larson, M., Massey, D.,
and S. Rose, "Resource Records for the DNS Security
Extensions", RFC 4034, DOI 10.17487/RFC4034, March 2005.</t>
        </li>
        <li>
          <t>[RFC4035] Arends, R., Austein, R., Larson, M., Massey, D.,
and S. Rose, "Protocol Modifications for the DNS Security
Extensions", RFC 4035, DOI 10.17487/RFC4035, March 2005.</t>
        </li>
        <li>
          <t>[RFC4343] Eastlake 3rd, D., "Domain Name System (DNS) Case
Insensitivity Clarification", RFC 4343,
DOI 10.17487/RFC4343, January 2006.</t>
        </li>
        <li>
          <t><xref target="RFC6376"/> Crocker, D., Ed., Hansen, T., Ed., and M.
Kucherawy, Ed., "DomainKeys Identified Mail (DKIM)
Signatures", STD 76, RFC 6376, DOI 10.17487/RFC6376,
September 2011.</t>
        </li>
        <li>
          <t><xref target="RFC7489"/> Kucherawy, M., Ed. and E. Zwicky, Ed., "Domain-
based Message Authentication, Reporting, and Conformance
(DMARC)", RFC 7489, DOI 10.17487/RFC7489, March 2015.</t>
        </li>
        <li>
          <t>[RFC7858] Hu, Z., Zhu, L., Heidemann, J., Mankin, A.,
Wessels, D., and P. Hoffman, "Specification for DNS over
Transport Layer Security (TLS)", RFC 7858,
DOI 10.17487/RFC7858, May 2016.</t>
        </li>
        <li>
          <t>[RFC7942] Sheffer, Y. and A. Farrel, "Improving Awareness
of Running Code: The Implementation Status Section",
BCP 205, RFC 7942, DOI 10.17487/RFC7942, July 2016.</t>
        </li>
        <li>
          <t>[RFC8484] Hoffman, P. and P. McManus, "DNS Queries over
HTTPS (DoH)", RFC 8484, DOI 10.17487/RFC8484,
October 2018.</t>
        </li>
        <li>
          <t><xref target="RFC9460"/> Schwartz, B., Bishop, M., and E. Nygren, "Service
Binding and Parameter Specification via the DNS (SVCB and
HTTPS Resource Records)", RFC 9460, DOI 10.17487/RFC9460,
November 2023.</t>
        </li>
        <li>
          <t><xref target="SEP-1649"/> "MCP Server Cards", Agentic AI Foundation,
https://github.com/modelcontextprotocol/modelcontextprotocol/issues/1649</t>
        </li>
        <li>
          <t><xref target="SEP-1959"/> "DNS-Based MCP Server Identity Verification",
Agentic AI Foundation,
https://github.com/modelcontextprotocol/modelcontextprotocol/issues/1959</t>
        </li>
        <li>
          <t><xref target="SEP-1960"/> ".well-known/mcp Discovery Endpoint", Agentic AI
Foundation,
https://github.com/modelcontextprotocol/modelcontextprotocol/issues/1960</t>
        </li>
        <li>
          <t><xref target="SEP-2127"/> "MCP Server Cards (PR)", Agentic AI Foundation,
https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2127</t>
        </li>
        <li>
          <t><xref target="AID"/> Nemethi, et al., "Agent Identity and Discovery",
Internet-Draft draft-nemethi-aid-agent-identity-discovery,
https://datatracker.ietf.org/doc/draft-nemethi-aid-agent-identity-discovery/</t>
        </li>
        <li>
          <t><xref target="SERRA"/> Serra, et al., "MCP Discovery URI", Internet-Draft
draft-serra-mcp-discovery-uri,
https://datatracker.ietf.org/doc/draft-serra-mcp-discovery-uri/</t>
        </li>
      </ul>
    </section>
    <section anchor="authors-addresses">
      <name>Authors' Addresses</name>
      <t>Blake Morrison
Alter Meridian Pty Ltd
Cronulla, NSW 2230
Australia</t>
      <t>Email: blake@truealter.com
URI: https://truealter.com</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA7V9+3PbyLHu7/NXzNVW3aU2pCzJ8ktebx1akneVtWUdSd7N
yZbLhEiQQgQCDABK5lbq/O23v+6eB0jI6+QmqUoig8A8enr6+U3PYDAwTdbk
6aHdOs7qcXmXVitbTu27cpLm9qgsmvRzY8+rsinHZW4v04reqO1dltjjs0t7
9Zcre5GOy2pSb5nk+rpK76ild0fn/KtvcctMynGRzKmbSZVMm8G8rKqsLovB
fLwYTIp6MHGvDnZ3zSRp6M393f2ng90DM6Z/zcpqdWizYlqabFEd2qZa1s3+
7u6L3X1jkmVzU1aHxtoB/dfa6TLPpbPXeXKb0lykM/6xrGZJkf2eNFlZHNph
3qSVfZdW2SRLCnverOzbZsIvjrOGujyqyoKaS/r27PJXeV4uiwajGdIQqiTP
En6czpMsP7TX6PG/aHhpgqZ3xuXcmKKs5tThXYoxXrw52tt9/ET/3N/be6F/
Hjw9eK5/PtvfdX8+33t24P48eLrn/nzyZF//fHGwz0+J6Ic8EreeDy3hIh1n
02zMFNjiLwIBlUI0uVlaNNnYDk/tG5rwhN+W5pNqljaH9qZpFvXho0dzdDOW
XhbayU5W8rthIY3B4rXJ8PTxs6duwgfPX/j5PN3Fn5cn54O9pwcv1iZFrCVM
aI8S5rquMc2y5mZ5DeJ3Dq/7YVbXy7R+hD5d9y+erHVPXD14ndTpxEYDOZ2A
VsQ6vxAftSn7bx0YjcYPTGgUBrZzn+b54LYo74tHtKfC1rMnxWRRZkXznxjQ
010d0P7e/rMvL5TtnV9s/xvHsKBd+QjdUpPD0+N258y9YV3+byyJNhm+XlYi
Ls7SedrcZJ2DJFZOaLuPb2lTZ2kz3aFt8oik2iMRaIV8OkiyySBB74NMew+i
7RET6+JiuEmpsFwfLk6/OEaiaZX8KyOs8aHIWy9rl1X2aHf/kTGDwcAm15Bn
48aYq5ustvTlcg4yTtJpVqS1ZYk/uGbun6fjGxKj9dzSprbNTWonkfYwD4ie
Hk1129aiQ3Zo3Vh/VGldLqtxSn9AkZjF8jrP6hvqJWm4aRI/9D79lg4WFQ3m
M/2UJ9fUw+gTzWfn+0lJwrf4YWSTCbXcZHVaG3xIb9dpMU77NtVNQOR92yft
kRT1oqwa69ipb8fVatGUsypZ3GRj4xavb5NiYsfJIrnOcrASfTDN8hQqkvQF
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
Q1tN1R7vQE4KKSY764BuekdB7/YI/IOEbXxBzx+dt/uas3Za0Nn5kp5gEhcJ
heIU2sjZ3dEDbY0iMLTinDcRztEVQbz45I49XOBdMt2l4LgFq7BjtK6ija/L
xGqo3xVnlkpECRgNv0iJmia5S7JWOQj2CdxVyhya9Gs1bMX0FNvSlZ9ilx62
zjhbcPAhK0xXbYbY2OVK9w7lCjJEM+xLoV5vxfR9+YFWlZF49Vs3wn/decvW
J+7EJVcXXluxzdOYkx9vFuPVa/z35vSns5vrv7yu/3r5uvrrX27Xj2CigPDJ
gT798nnMvlSc0Xfjs5nh8kctweFPa7ruPjevops7w7xaoG5+ihP1jBD3Bz2j
eAaDdx10JXMpLcFw/BJOFcSYqxipE+Fr4JTCDeUieRt19Bjx8TMNSnirXfxe
CruNbrNJm+A7OzvfPPaoDTXlHbbgehVwHK3qXAwPOaKXGU+vxsHGEfipnGJq
H+ZHN8HtEO3T6ZY6nJMelEyR+DzwE/yqwiXoqzeSRaeJ+ton2+HmxgdrPTHa
ZB7MCs9Y1nGW3NYbChrF27cjhvtGQ62cp/VR5mopWKlZ6iLqbGQgP0gKEIfF
IsHj97rZKC3P291HU/WoTMbFbPx+vs5m9PLiq6Q5OUPx+y/96ZtXe7v0j7Bt
P1z+nK7knLTszydb/0Jv6fKB3vbbvZ18+Hf0liwe6O1xu7fh+WZvrd1drx2x
apV0YUztZYgG8DmpPsNYWHkoFOvkA8feCzs811uK5VrXjWA3x9aNFknk0Lj6
tpIWaOI6fnHBtaubOCJfGw7uc6TbHfx3XfUY7KAbCwnT2mcUFVWGOL/Rg1yy
nWDzR0H+fuu6UcV0aOxTjogO1DuNNKJLDrqLLlWFObRUDVKlQO3HkRnG5SwE
ASeBQYxz4o8bh0CgQgdy3ktuOVobI0c9IZHvk/TuywzkX3v0v/wdOMqd+g8a
JOKic+1+jZf2/K0XwR7yJehENjmJ5rIBfFSYOx1FBzTNyA9p5OYfojaS9pNz
pKMvzQHOg65QaxnYAzIepMwcXklNJb4DxINvXbUWQGj5PDdZuNGCGcR3Nxds
49Y85Vi1grmhwUCClKYVmat83gKyXI6eAHVWzZIi+z3R8UZp1MEgXG0rMAVX
ESDchslZ8nYL4fi7XG3Oc3BRNsab5SL0b+Swn79SrIey3bhDTMtZX/5y9PqR
/BqlQNkJDbeNebfBXaXmigHrWWFXFDDcogEzkSRDw26nBLIFfwOxVIylogfU
f9vNjYsn/VTep5JI8vej9cM8gidiMndoo/+FS9akdhmr1iKIJ76AnMwMMrxp
HKG4z+Xd+BwT+DnCfUUhApdNbp8O4ZhE7KWDC89vwCx78cVlwK9pBRlXRj6u
WSmnuLrHgriAI0FfZJHa/JqviGQMCOuNGiCFZogL6uduIcMy4aztkq+J8oO6
91HW4H8YBlD6ZfBJNrY7AuVhzkq5lMShZKKLAK1G3QWGB/AcbqcT4y4i4E4n
Kx+fHiMxeVNOamHhXx8f2eP4cmX1c6RKML2+bcPlh/6k31ybYKnm6gIj94fz
AxbQhMnhfXo9cr+1/UF3DWLL7KZP5Eim+35S1IyLZchelQNIQPMuFxo8eygd
g3BZwvOUQTJxo1v3GL+O382xmrV1vF88lN5fsdCNEJUsAR8nasPrtdfKB0ml
CRqP608dNROo5A1sgZ66L12uJko/tKplb0BgVdLiiEaUeYFclXO+HHyvVocG
w4lANHpl6mCxrGSjBxaYgsURQXnZjjq583u+lda2CyNu59XW2XHtMK2GZdeP
2Ibmonvluw7cugK1rTLiG9+s30OvyIPuI8YRHcPVy12pvSiQ52/PjNpRzOFa
bi8VsI0ekvjCxN3tHw6IyEdeIbDDlbh8TFhuj8VdUQxCpu1HfoXuFq/gI1lC
8+CRpRO529ovp/QG89bDqMOd0C+7iBx9h6hFuK14A2vuhCyj6x9I6ybavEHz
m8c0nUneIoFWj8DnIBQf+jBef/8BK3Ks0gd5uJEwsN7w1F0S8sX3fLG83+iD
j6zUzOgTVw2KruWN1ZzWPRrdvUqyyd6oFQQmmal01VCnbx7EHYR594gt+3a4
P+wDj1MMz09FM/NFH/W2cxkUSOpN0/Y1ZF4IZbVpbeb4cJ+tsvGNXNY4KLQ2
okAReq7YOzvNfaOXa/OQt5UD/0gwQfRvUEsgqqaDAsK6LzeuPda6uvEkTMWz
dSaEs6phObS4MdTO8KFOOZuutNa4uJbzg8bbHDAajdMcRnAk66OEOJnQLHCO
v2VvdPPnj2UJw3boyiAKH4Zi7LT6yqFf86ayZjvwxR9EtRGmGp1y0kyqX0X7
iFoKqjUYJM4W6xSE8eHZmCu7dPkGG/rO9DqBEkwfrufeUOTatjt5Bant8aL0
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
oWWs/X+10qaGZntoO7O25v8B70beNOm2AAA=

-->

</rfc>
