<?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 tocindent="yes"?>
<?rfc strict="yes"?>
<?rfc compact="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc docmapping="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-li-atp-01" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.32.0 -->
  <front>
    <title abbrev="ATP">Agent Transfer Protocol (ATP)</title>
    <seriesInfo name="Internet-Draft" value="draft-li-atp-01"/>
    <author initials="X." surname="Li" fullname="Xiang Li">
      <organization>Nankai University</organization>
      <address>
        <postal>
          <street>Tongyan Road</street>
          <city>Tianjin</city>
          <code>300350</code>
          <country>China</country>
        </postal>
        <email>lixiang@nankai.edu.cn</email>
      </address>
    </author>
    <author initials="L." surname="Sun" fullname="Lu Sun">
      <organization>Nankai University</organization>
      <address>
        <postal>
          <street>Tongyan Road</street>
          <city>Tianjin</city>
          <code>300350</code>
          <country>China</country>
        </postal>
        <email>sunlu25@mail.nankai.edu.cn</email>
      </address>
    </author>
    <author initials="Y." surname="Qiu" fullname="Yuqi Qiu">
      <organization>Nankai University</organization>
      <address>
        <postal>
          <street>Tongyan Road</street>
          <city>Tianjin</city>
          <code>300350</code>
          <country>China</country>
        </postal>
        <email>qiuyuqi@mail.nankai.edu.cn</email>
      </address>
    </author>
    <author initials="Z." surname="Xu" fullname="Zuyao Xu">
      <organization>Nankai University</organization>
      <address>
        <postal>
          <street>Tongyan Road</street>
          <city>Tianjin</city>
          <code>300350</code>
          <country>China</country>
        </postal>
        <email>xuzuyao@mail.nankai.edu.cn</email>
      </address>
    </author>
    <date year="2026" month="March" day="29"/>
    <area>art</area>
    <workgroup>Internet Engineering Task Force</workgroup>
    <keyword>agent communication</keyword>
    <keyword>autonomous agents</keyword>
    <keyword>messaging protocol</keyword>
    <keyword>ATP</keyword>
    <keyword>Internet of Agents</keyword>
    <abstract>
      <?line 77?>

<t>The Agent Transfer Protocol (ATP) is a communication protocol designed for autonomous agents to exchange messages, requests, and events in a secure, structured manner. ATP supports the emerging Internet of Agents (IoA) paradigm, where autonomous agents operate across four deployment scenarios: household (small scale), service (medium scale), enterprise (large scale), cloud provider (huge scale), and etc.</t>
      <t>ATP employs a two-tier architecture where agents connect to the global Internet through ATP servers, enabling server-mediated communication for proper routing, security enforcement, and resource management. The protocol provides DNS-based service discovery using SVCB records, mandatory authentication via Agent Transfer Sender (ATS) policies and Agent Transfer Keys (ATK), and support for multiple interaction patterns including asynchronous messaging, synchronous request/response, and event-driven streaming.</t>
      <t>This specification defines the discovery mechanism, identity model, authentication framework, transport layer, and message semantics for ATP.</t>
    </abstract>
  </front>
  <middle>
    <?line 85?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The evolution of the Internet has always centered around the theme of "connection":</t>
      <ul spacing="normal">
        <li>
          <t><strong>Person-to-Person</strong>: Email and instant messaging connect people with people</t>
        </li>
        <li>
          <t><strong>Person-to-Service</strong>: Web pages and mobile apps connect people with services</t>
        </li>
        <li>
          <t><strong>Thing-to-Thing</strong>: IoT devices connect the physical world</t>
        </li>
      </ul>
      <t><strong>The next trend is emerging: agents will become part of Internet infrastructure.</strong></t>
      <t>With the advancement of artificial intelligence technology, autonomous agents are moving from concept to large-scale application:</t>
      <ul spacing="normal">
        <li>
          <t>Households deploy intelligent assistants to act on behalf of users for daily tasks</t>
        </li>
        <li>
          <t>Enterprises deploy customer service bots and operations agents to automate business processes</t>
        </li>
        <li>
          <t>Cloud providers offer agent-based capabilities including AI services and IoT coordination</t>
        </li>
      </ul>
      <t>When agents are ubiquitous, they need to communicate with each other - this requires a communication protocol designed specifically for agents.</t>
      <t><strong>The Agent Transfer Protocol (ATP) is proposed as a communication protocol design reference for the era of Internet of Agents.</strong></t>
      <section anchor="motivation">
        <name>Motivation</name>
        <t>The emergence of autonomous agents represents a fundamental shift in how digital services are delivered and consumed. We are entering the era of the <strong>Internet of Agents (IoA)</strong>, where autonomous agents will become ubiquitous in both personal and commercial environments.</t>
        <t>The Agent Transfer Protocol (ATP) is a communication protocol designed for autonomous agents to exchange messages, requests, and events across the Internet. ATP enables secure, structured agent-to-agent communication through a server-mediated architecture that provides routing, security enforcement, and resource management.</t>
        <t>This document describes the motivation, architecture, and technical specifications of ATP. We first present the vision of the Internet of Agents (IoA) and the four deployment scenarios that ATP supports. We then describe the design goals, terminology, and core components of the protocol, including discovery, identity, authentication, transport, and message semantics.</t>
        <section anchor="the-vision-of-internet-of-agents">
          <name>The Vision of Internet of Agents</name>
          <t>In the near future, autonomous agents will be deployed across four primary deployment scenarios, each serving distinct needs and scales:</t>
          <t><strong>Household (Small Scale)</strong>: Every household will deploy personal agent systems—either as physical robots or dedicated home servers—that manage daily tasks, coordinate schedules, and interact with external services on behalf of family members. Each household member will have their own agent account, enabling personalized interactions while maintaining shared context.</t>
          <t><strong>Service (Medium Scale)</strong>: Commercial organizations will deploy agent services to automate customer interactions, process transactions, and provide intelligent assistance. These service agents handle high-volume interactions with customers worldwide.</t>
          <t><strong>Enterprise (Large Scale)</strong>: Large corporations and organizations will deploy internal agent systems to streamline business operations, from HR and IT support to development and operations automation.</t>
          <t><strong>Cloud Provider (Huge Scale)</strong>: Major technology providers will operate multi-tenant agent platforms serving millions of global users, providing AI services, data management, IoT coordination, and machine learning capabilities across continents.</t>
        </section>
        <section anchor="four-deployment-scenarios">
          <name>Four Deployment Scenarios</name>
          <t>The agent ecosystem spans four distinct deployment scenarios, each with different scale requirements:</t>
          <ul spacing="normal">
            <li>
              <t><strong>Household Agents (Small)</strong>: A household domain (e.g., <tt>family.example.com</tt>) hosts a few personal agent identities:
              </t>
              <ul spacing="normal">
                <li>
                  <t><tt>parent1@family.example.com</tt> - Agent for first parent</t>
                </li>
                <li>
                  <t><tt>parent2@family.example.com</tt> - Agent for second parent</t>
                </li>
                <li>
                  <t><tt>home@family.example.com</tt> - Home automation coordination agent</t>
                </li>
              </ul>
            </li>
            <li>
              <t><strong>Service Agents (Medium)</strong>: Service providers operate multiple specialized agents:
              </t>
              <ul spacing="normal">
                <li>
                  <t><tt>service-bot@company.com</tt> - General customer service agent</t>
                </li>
                <li>
                  <t><tt>shop-bot@retailer.com</tt> - Shopping assistant agent</t>
                </li>
                <li>
                  <t><tt>support@tech-company.com</tt> - Technical support agent</t>
                </li>
              </ul>
            </li>
            <li>
              <t><strong>Enterprise Agents (Large)</strong>: Organizations deploy agents for various business functions:
              </t>
              <ul spacing="normal">
                <li>
                  <t><tt>hr@enterprise.com</tt> - Human resources assistant</t>
                </li>
                <li>
                  <t><tt>dev@enterprise.com</tt> - Development workflow agent</t>
                </li>
                <li>
                  <t><tt>ops@enterprise.com</tt> - IT operations agent</t>
                </li>
              </ul>
            </li>
            <li>
              <t><strong>Cloud Provider Agents (Huge)</strong>: Global platforms serve diverse user bases:
              </t>
              <ul spacing="normal">
                <li>
                  <t><tt>user-us@cloud-provider.com</tt> - North American user services</t>
                </li>
                <li>
                  <t><tt>user-eu@cloud-provider.com</tt> - European user services</t>
                </li>
                <li>
                  <t><tt>user-cn@cloud-provider.com</tt> - Asian user services</t>
                </li>
                <li>
                  <t><tt>ai-service@cloud-provider.com</tt> - AI/ML service endpoints</t>
                </li>
                <li>
                  <t><tt>iot@cloud-provider.com</tt> - IoT device coordination</t>
                </li>
              </ul>
            </li>
          </ul>
        </section>
        <section anchor="why-atp-is-needed">
          <name>Why ATP is Needed</name>
          <t>Existing protocols cannot adequately meet the requirements of the Internet of Agents era:</t>
          <table anchor="_table-requirements">
            <name>Requirements for Internet of Agents and Limitations of Existing Protocols</name>
            <thead>
              <tr>
                <th align="left">Requirement</th>
                <th align="left">Description</th>
                <th align="left">Limitations of Existing Protocols</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <strong>Multi-tenant Identity</strong></td>
                <td align="left">Each domain hosts multiple agent identities (from 2-5 in households to millions on cloud platforms)</td>
                <td align="left">Email supports multi-user but lacks identity management for automated scenarios</td>
              </tr>
              <tr>
                <td align="left">
                  <strong>Structured Data Exchange</strong></td>
                <td align="left">JSON/CBOR payloads for automated processing</td>
                <td align="left">HTTP can transport JSON but lacks native agent semantics</td>
              </tr>
              <tr>
                <td align="left">
                  <strong>Strong Security Guarantees</strong></td>
                <td align="left">Mandatory authentication and integrity verification for automated operations</td>
                <td align="left">TLS only protects transport; application-layer authentication depends on implementation</td>
              </tr>
              <tr>
                <td align="left">
                  <strong>Multiple Interaction Patterns</strong></td>
                <td align="left">Asynchronous messaging, synchronous request/response, event-driven streaming</td>
                <td align="left">Typically requires combining multiple protocols (e.g., HTTP + WebSocket)</td>
              </tr>
              <tr>
                <td align="left">
                  <strong>Scalable Discovery</strong></td>
                <td align="left">Cross-internet agent location and authentication</td>
                <td align="left">Relies on centralized directory services or additional infrastructure</td>
              </tr>
              <tr>
                <td align="left">
                  <strong>Context Awareness</strong></td>
                <td align="left">Stateful multi-turn dialogues and complex workflow coordination</td>
                <td align="left">No native support; must be implemented at application layer</td>
              </tr>
              <tr>
                <td align="left">
                  <strong>Variable Scale Support</strong></td>
                <td align="left">Efficient handling from household to cloud platform scenarios</td>
                <td align="left">Typically optimized for specific scales, difficult to accommodate all</td>
              </tr>
            </tbody>
          </table>
          <t><strong>Therefore, agents need their own communication protocol.</strong></t>
          <t>This vision requires a communication infrastructure that supports:</t>
          <ol spacing="normal" type="1"><li>
              <t><strong>Multi-tenant Identity</strong>: Each domain hosts multiple agent identities, from a few agents in households to thousands in cloud platforms, requiring scalable identity management and routing.</t>
            </li>
            <li>
              <t><strong>Structured Data Exchange</strong>: Agents communicate using structured payloads (JSON, CBOR) rather than unstructured text, enabling automated processing and decision-making.</t>
            </li>
            <li>
              <t><strong>Strong Security Guarantees</strong>: Agent communication involves automated actions on behalf of users, demanding mandatory authentication and integrity verification to prevent unauthorized operations.</t>
            </li>
            <li>
              <t><strong>Multiple Interaction Patterns</strong>: Beyond simple messaging, agents need:
              </t>
              <ul spacing="normal">
                <li>
                  <t>Synchronous request/response for RPC-style interactions</t>
                </li>
                <li>
                  <t>Event-driven streaming for real-time updates</t>
                </li>
                <li>
                  <t>Asynchronous messaging for notifications and broadcasts</t>
                </li>
              </ul>
            </li>
            <li>
              <t><strong>Scalable Discovery</strong>: Agents must locate and authenticate each other across the global internet using existing, proven infrastructure.</t>
            </li>
            <li>
              <t><strong>Context Awareness</strong>: Agents maintain state across interactions, support multi-turn dialogues, and coordinate complex workflows involving multiple parties.</t>
            </li>
            <li>
              <t><strong>Variable Scale Support</strong>: The protocol must efficiently handle scenarios ranging from small household deployments (2-5 agents) to massive cloud platforms (millions of users), with appropriate resource allocation and routing strategies for each scale.</t>
            </li>
          </ol>
          <t>ATP addresses these requirements by providing a modern, secure, and extensible protocol built upon existing internet infrastructure while introducing agent-specific semantics.</t>
          <t>ATP is designed so that it can interoperate with application-layer agent interaction protocols. While protocols such as A2A and MCP define rich semantics for agent capabilities, task management, and tool invocation, ATP provides the underlying cross-domain transport infrastructure with DNS-native discovery and mandatory security guarantees. ATP's payload is opaque by design, enabling it to carry messages from any application-layer agent protocol.</t>
        </section>
        <section anchor="internet-of-agents-architecture">
          <name>Internet of Agents Architecture</name>
          <t>The Internet of Agents (IoA) follows a two-tier architecture where agents connect to the global internet through ATP servers. This design ensures proper resource allocation, security enforcement, and efficient routing.</t>
          <figure anchor="fig-ioa-architecture">
            <name>Internet of Agents (IoA) Architecture: Four deployment scenarios showing Household (Small), Service (Medium), Enterprise (Large), and Cloud Provider (Huge) ATP server categories</name>
            <artwork type="ascii-art"><![CDATA[
                          Internet of Agents (IoA)

        ╔══════════════════════════════════════════════════════════════╗
        ║                           INTERNET                           ║
        ╚══════════════════════════════════════════════════════════════╝
             │               │                 │                 │
             │               │                 │                 │
     ┌───────┴────────┐ ┌────┴────┐ ┌──────────┴──────────┐      │
     │      ATP       │ │   ATP   │ │         ATP         │      │
     │     Server     │ │ Server  │ │        Server       │      │
     │   Household    │ │ Service │ │      Enterprise     │      │
     │    (Small)     │ │(Medium) │ │       (Large)       │      │
     └─────┬──────────┘ └────┬────┘ └───────────┬─────────┘      │
           │                 │                  │                │
           │                 │                  │                │
     ┌─────┼─────┐     ┌─────┼─────┐     ┌──────┼──────┐         │
     │     │     │     │     │     │     │      │      │         │
     │     │     │     │     │     │     │      │      │         │
   ┌─┴─┐ ┌─┴─┐ ┌─┴─┐ ┌─┴─┐ ┌─┴─┐ ┌─┴─┐ ┌─┴─┐  ┌─┴─┐  ┌─┴─┐       │
   │P1 │ │P2 │ │H1 │ │S1 │ │S2 │ │S3 │ │E1 │  │E2 │  │E3 │       │
   └───┘ └───┘ └───┘ └───┘ └───┘ └───┘ └───┘  └───┘  └───┘       │
  Parent1 Parent2 Home  Bot1 Bot2 Shop  HR    Dev   Ops          │
                                   ┌─────────────────────────────┘
                ┌──────────────────┴──────────────────┐
                │              ATP Server             │
                │            Cloud Provider           │
                │                (Huge)               │
                └──────────────────┬──────────────────┘
             ┌─────┬─────┬─────┬───┴───┬─────┬─────┬─────┐
             │     │     │     │       │     │     │     │
             │     │     │     │       │     │     │     │
           ┌─┴─┐ ┌─┴─┐ ┌─┴─┐ ┌─┴─┐   ┌─┴─┐ ┌─┴─┐ ┌─┴─┐ ┌─┴─┐
           │US │ │EU │ │CN │ │AI │   │DB │ │IoT│ │ML │ │API│
           └───┘ └───┘ └───┘ └───┘   └───┘ └───┘ └───┘ └───┘
           User  User  User   AI     Data   IoT   ML   API

Household (Small): Personal/Family agents (Parent1/2, Home Assistant)
Service (Medium): Commercial service agents (Service Bot1/2, Shopping)
Enterprise (Large): Corporate agents (HR Bot, Dev Bot, Ops Bot)
Cloud Provider (Huge): Multi-tenant cloud serving global users
    (US, EU, CN, AI, Data, IoT, ML, API)
]]></artwork>
          </figure>
          <t>In this architecture:</t>
          <ul spacing="normal">
            <li>
              <t><strong>ATP Servers</strong> act as gateways for agents, handling:
              </t>
              <ul spacing="normal">
                <li>
                  <t>Resource allocation and scheduling for local agents</t>
                </li>
                <li>
                  <t>Outbound connection management and routing</t>
                </li>
                <li>
                  <t>Inbound traffic filtering and security enforcement</t>
                </li>
                <li>
                  <t>Policy enforcement (ATS/ATK validation)</t>
                </li>
                <li>
                  <t>Message queuing and delivery guarantees</t>
                </li>
              </ul>
            </li>
            <li>
              <t><strong>Agents</strong> operate within their ATP Server's domain:
              </t>
              <ul spacing="normal">
                <li>
                  <t>All outbound communication goes through their local ATP Server</t>
                </li>
                <li>
                  <t>All inbound communication arrives via their ATP Server</t>
                </li>
                <li>
                  <t>Agents benefit from server-side security and filtering</t>
                </li>
                <li>
                  <t>Multiple agents share server resources efficiently</t>
                </li>
              </ul>
            </li>
            <li>
              <t><strong>Scale Considerations</strong>:
              </t>
              <ul spacing="normal">
                <li>
                  <t><strong>Household (Small)</strong>: 2-10 agents, minimal resource requirements</t>
                </li>
                <li>
                  <t><strong>Service (Medium)</strong>: 10-100 agents, moderate traffic handling</t>
                </li>
                <li>
                  <t><strong>Enterprise (Large)</strong>: 100-1000+ agents, high availability requirements</t>
                </li>
                <li>
                  <t><strong>Cloud Provider (Huge)</strong>: Millions of users, global distribution, multi-region deployment</t>
                </li>
              </ul>
            </li>
          </ul>
          <t>This architecture reflects the reality that in the Internet of Agents era, every household and organization will deploy an ATP server (or manager) to coordinate local agent activities, manage network connections, and provide security boundaries.</t>
        </section>
      </section>
      <section anchor="design-goals">
        <name>Design Goals</name>
        <ol spacing="normal" type="1"><li>
            <t><strong>Security-first</strong>: Authentication and integrity verification are mandatory, not optional.</t>
          </li>
          <li>
            <t><strong>Structured semantics</strong>: Native support for multiple interaction patterns (message, request/response, event/subscription).</t>
          </li>
          <li>
            <t><strong>DNS-based discovery</strong>: Leverage existing DNS infrastructure for agent discovery and service location.</t>
          </li>
          <li>
            <t><strong>Transport agnostic</strong>: Support multiple transport protocols (HTTPS, QUIC) for flexibility and performance.</t>
          </li>
          <li>
            <t><strong>Backward compatible</strong>: Coexist with existing internet infrastructure and standards.</t>
          </li>
          <li>
            <t><strong>Extensible</strong>: Support capability discovery and protocol negotiation for future evolution.</t>
          </li>
          <li>
            <t><strong>Multi-tenant support</strong>: Efficiently handle multiple agents per domain, similar to multi-user email systems.</t>
          </li>
          <li>
            <t><strong>Server-mediated communication</strong>: All agent communication <bcp14>MUST</bcp14> flow through ATP servers for proper routing, security enforcement, and resource management. This design reflects the reality that agents operate within managed domains (households, organizations, cloud services) that require centralized coordination.</t>
          </li>
        </ol>
      </section>
      <section anchor="terminology">
        <name>Terminology</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <?line -18?>

<t>This document uses the following terms:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Agent</strong>: An autonomous software entity capable of communication, decision-making, and task execution.</t>
          </li>
          <li>
            <t><strong>Agent ID</strong>: A unique identifier in the format <tt>local@domain</tt> that identifies a specific agent.</t>
          </li>
          <li>
            <t><strong>ATP Server</strong>: A server implementing the ATP protocol and handling agent communication. The ATP Server acts as a gateway for agents within its domain, providing resource allocation, connection management, security enforcement, and message routing. All agent communication <bcp14>MUST</bcp14> flow through their respective ATP servers.</t>
          </li>
          <li>
            <t><strong>ATP Client</strong>: An agent or application initiating ATP communication.</t>
          </li>
          <li>
            <t><strong>ATP Transfer</strong>: The process of transferring messages between ATP servers across the Internet.</t>
          </li>
          <li>
            <t><strong>ATS</strong>: Agent Transfer Sender policy - a DNS record defining authorized senders for a domain.</t>
          </li>
          <li>
            <t><strong>ATK</strong>: Agent Transfer Key - a DNS record publishing cryptographic keys for message signature verification.</t>
          </li>
          <li>
            <t><strong>SVCB</strong>: Service Binding - DNS record type defined in <xref target="RFC9460"/> for service discovery.</t>
          </li>
          <li>
            <t><strong>ALPN</strong>: Application-Layer Protocol Negotiation - TLS extension for protocol negotiation.</t>
          </li>
        </ul>
      </section>
      <section anchor="protocol-stack-overview">
        <name>Protocol Stack Overview</name>
        <figure anchor="fig-protocol-stack">
          <name>ATP Protocol Stack: Four-layer architecture with Discovery (DNS SVCB), Transport (HTTPS/QUIC), Message Format (JSON/CBOR), and Application Semantics</name>
          <artwork type="ascii-art"><![CDATA[
+-------------------------------------------------+
|              Application Semantics              |
|     message / request-response / event-stream   |
+-------------------------------------------------+
|             Message Format (JSON/CBOR)          |
|           envelope + payload + signature        |
+-------------------------------------------------+
|            Transport Layer (HTTPS/QUIC)         |
|              TLS 1.3+ / ALPN negotiation        |
+-------------------------------------------------+
|               Discovery (DNS SVCB)              |
|            _atp.<domain> SVCB records           |
+-------------------------------------------------+
]]></artwork>
        </figure>
        <t>ATP is built upon a layered protocol stack that leverages existing Internet infrastructure while introducing agent-specific semantics. The stack consists of four layers, from bottom to top:</t>
        <t><strong>Discovery Layer</strong>: Uses DNS SVCB records <xref target="RFC9460"/> to enable agents to locate and discover ATP services for any given domain. The discovery query targets <tt>_atp.&lt;domain&gt;</tt> to retrieve service endpoint information including hostname, port, and supported protocols.</t>
        <t><strong>Transport Layer</strong>: Supports multiple transport protocols for flexibility and performance:</t>
        <ul spacing="normal">
          <li>
            <t><strong>HTTPS</strong>: Primary transport protocol, enabling deployment behind existing CDNs, load balancers, and firewalls. Uses TLS 1.3+ for encryption and ALPN for protocol negotiation.</t>
          </li>
          <li>
            <t><strong>QUIC</strong>: Optional transport protocol <xref target="RFC9000"/> for low-latency scenarios, providing 0-RTT handshakes and connection migration capabilities.</t>
          </li>
        </ul>
        <t><strong>Message Format Layer</strong>: Defines the structure of ATP messages using structured data encodings:</t>
        <ul spacing="normal">
          <li>
            <t><strong>JSON</strong>: Recommended encoding <xref target="RFC8259"/> with Content-Type <tt>application/atp+json</tt></t>
          </li>
          <li>
            <t><strong>CBOR</strong>: Optional encoding <xref target="RFC8949"/> for bandwidth-constrained environments with Content-Type <tt>application/atp+cbor</tt></t>
          </li>
        </ul>
        <t>Messages consist of an envelope (containing from, to, timestamp, nonce, type) and a payload, with a cryptographic signature for integrity and authenticity.</t>
        <t><strong>Application Semantics Layer</strong>: Provides three interaction patterns for different use cases:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Message</strong>: Asynchronous, fire-and-forget communication</t>
          </li>
          <li>
            <t><strong>Request/Response</strong>: Synchronous RPC-style interactions</t>
          </li>
          <li>
            <t><strong>Event/Subscription</strong>: Streaming and publish-subscribe patterns</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="discovery-mechanism">
      <name>Discovery Mechanism</name>
      <section anchor="dns-svcb-record-format">
        <name>DNS SVCB Record Format</name>
        <t>ATP uses DNS SVCB (Service Binding) records <xref target="RFC9460"/> for agent discovery. The SVCB record provides the hostname, port, protocol version, and optional connection hints for the ATP service. The DNS query follows the standard DNS protocol <xref target="RFC1034"/><xref target="RFC1035"/>.</t>
        <section anchor="record-name">
          <name>Record Name</name>
          <t>The standard SVCB query name for ATP discovery is:</t>
          <sourcecode type="dns"><![CDATA[
_atp.<domain>
]]></sourcecode>
          <t>Where <tt>&lt;domain&gt;</tt> is the domain portion of the recipient Agent ID.</t>
        </section>
        <section anchor="record-format">
          <name>Record Format</name>
          <sourcecode type="dns"><![CDATA[
_atp.<domain>. IN SVCB <priority> <target> (
    port=<port-number>
    alpn=<protocol-identifier>
    [ipv4hint=<ipv4-address>]
    [ipv6hint=<ipv6-address>]
    [atp-capabilities=<capability-list>]
)
]]></sourcecode>
        </section>
        <section anchor="example">
          <name>Example</name>
          <sourcecode type="dns"><![CDATA[
_atp.example.com. IN SVCB 1 agent.example.com. (
    port=7443
    alpn="atp/1"
    ipv4hint=192.0.2.1,192.0.2.2
    ipv6hint=2001:db8::1,2001:db8::2
    atp-capabilities="message,request,event"
    atp-auth="ats,atk"
)
]]></sourcecode>
        </section>
        <section anchor="parameters">
          <name>Parameters</name>
          <ul spacing="normal">
            <li>
              <t><strong>port</strong>: TCP/UDP port number for the ATP service. If not specified, the default port is 7443.</t>
            </li>
            <li>
              <t><strong>alpn</strong>: Application-layer protocol negotiation identifier. Supported values:
              </t>
              <ul spacing="normal">
                <li>
                  <t><tt>atp/1</tt> - ATP version 1</t>
                </li>
                <li>
                  <t><tt>atp-json</tt> - ATP with JSON payload encoding</t>
                </li>
                <li>
                  <t><tt>atp-cbor</tt> - ATP with CBOR payload encoding</t>
                </li>
                <li>
                  <t><tt>atp+proto</tt> - ATP with Protocol Buffers encoding</t>
                </li>
              </ul>
            </li>
            <li>
              <t><strong>ipv4hint</strong> (optional): Comma-separated list of IPv4 addresses for faster connection establishment.</t>
            </li>
            <li>
              <t><strong>ipv6hint</strong> (optional): Comma-separated list of IPv6 addresses for faster connection establishment.</t>
            </li>
            <li>
              <t><strong>atp-capabilities</strong> (optional): Comma-separated list of supported protocol capabilities.</t>
            </li>
            <li>
              <t><strong>atp-auth</strong> (optional): Comma-separated list of supported authentication mechanisms. Supported values include <tt>ats</tt> (ATS policy validation), <tt>atk</tt> (ATK signature verification), <tt>mtls</tt> (mutual TLS). This parameter enables clients to determine the server's authentication requirements before connection establishment.</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="discovery-process">
        <name>Discovery Process</name>
        <t>The ATP client performs the following steps to discover the recipient's ATP service:</t>
        <ol spacing="normal" type="1"><li>
            <t><strong>Extract Domain</strong>: Parse the recipient Agent ID to extract the domain portion. The domain portion is derived from the <tt>local@domain</tt> Agent ID format — the same domain that hosts the agent's identity also hosts the ATP service discovery records.</t>
          </li>
          <li>
            <t><strong>DNS SVCB Query</strong>: Query the SVCB record for <tt>_atp.&lt;domain&gt;</tt>.</t>
          </li>
          <li>
            <t><strong>Address Resolution</strong>: Resolve the target hostname to IP addresses using A/AAAA records. Implementations <bcp14>MUST</bcp14> query both A and AAAA records and <bcp14>SHOULD</bcp14> prefer IPv6 addresses when available.</t>
          </li>
          <li>
            <t><strong>Connection Establishment</strong>: Establish a secure connection to the resolved endpoint using the specified port.</t>
          </li>
        </ol>
      </section>
      <section anchor="capability-discovery">
        <name>Capability Discovery</name>
        <t>Agents can advertise their capabilities to enable protocol negotiation and feature discovery.</t>
        <t>When both DNS-based and HTTP-based capability information are available, the HTTP-based response <bcp14>MUST</bcp14> take precedence, as it can be updated more frequently than DNS records. DNS-based capabilities serve as an initial hint for connection establishment and protocol negotiation; HTTP-based capabilities provide the authoritative and current capability set.</t>
        <section anchor="dns-based-capability-advertisement">
          <name>DNS-Based Capability Advertisement</name>
          <t>Capabilities can be included in the SVCB record using the <tt>atp-capabilities</tt> parameter:</t>
          <sourcecode type="dns"><![CDATA[
_atp.example.com. IN SVCB 1 agent.example.com. (
    port=7443
    alpn="atp/1"
    atp-capabilities="message,request,event,payment,search"
)
]]></sourcecode>
        </section>
        <section anchor="http-based-capability-query">
          <name>HTTP-Based Capability Query</name>
          <t>Agents can query capabilities via an HTTP endpoint:</t>
          <sourcecode type="http"><![CDATA[
GET /.well-known/atp/v1/capabilities
Host: agent.example.com
Accept: application/json
]]></sourcecode>
          <t><strong>Response</strong>:</t>
          <sourcecode type="json"><![CDATA[
{
  "version": "1.0",
  "capabilities": ["message", "request", "event", "payment", "search"],
  "protocols": ["atp/1", "atp-json"],
  "max_payload_size": 1048576,
  "rate_limits": {
    "messages_per_second": 100,
    "requests_per_minute": 1000
  },
  "metadata_url": "https://agent.example.com/.well-known/agent.json"
}
]]></sourcecode>
          <t>The <tt>metadata_url</tt> field (<bcp14>OPTIONAL</bcp14>) points to an external agent description document that provides additional metadata about agents at this server. The format of the referenced document is out of scope for this specification. This field enables zero-cost cross-ecosystem discovery without binding ATP to any specific agent description standard.</t>
        </section>
      </section>
    </section>
    <section anchor="identity-model">
      <name>Identity Model</name>
      <section anchor="agent-identifier-format">
        <name>Agent Identifier Format</name>
        <t>Agent identifiers follow the standard email address format but with extended semantics for agent communication.</t>
        <sourcecode type="abnf"><![CDATA[
agent-id    = local-part "@" domain
local-part  = 1*63( ALPHA / DIGIT / "." / "-" / "_" / "+" )
domain      = sub-domain *("." sub-domain)
sub-domain  = ; as defined in RFC 5321
]]></sourcecode>
        <t>The <tt>local-part</tt> identifies a specific agent within the domain, and the <tt>domain</tt> identifies the ATP server responsible for routing messages to that agent. ATP uses a restricted character set compared to RFC 5321 to ensure safe handling across diverse agent implementations.</t>
        <t>A key design feature of ATP is that each domain hosts multiple agent identities using the <tt>local@domain</tt> format, similar to how email domains host multiple user mailboxes. This multi-tenant identity model is fundamental to ATP's architecture:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Households</strong>: <tt>parent1@family.example.com</tt>, <tt>parent2@family.example.com</tt>, <tt>home@family.example.com</tt></t>
          </li>
          <li>
            <t><strong>Services</strong>: <tt>support@company.com</tt>, <tt>billing@company.com</tt>, <tt>shop-bot@company.com</tt></t>
          </li>
          <li>
            <t><strong>Enterprises</strong>: <tt>hr@enterprise.com</tt>, <tt>dev@enterprise.com</tt>, <tt>ops@enterprise.com</tt></t>
          </li>
          <li>
            <t><strong>Cloud Providers</strong>: <tt>user-us@cloud.com</tt>, <tt>user-eu@cloud.com</tt>, <tt>ai-service@cloud.com</tt></t>
          </li>
        </ul>
        <t>Unlike centralized agent discovery systems that assign globally unique identifiers, ATP's <tt>local@domain</tt> model allows each domain administrator to independently manage their agent namespace. This mirrors the email ecosystem's proven scalability: no central registry is needed, and identity management is delegated to domain owners.</t>
        <section anchor="examples">
          <name>Examples</name>
          <ul spacing="normal">
            <li>
              <t><tt>a1@example.com</tt> - Individual agent</t>
            </li>
            <li>
              <t><tt>chatbot@service.org</tt> - Service agent</t>
            </li>
            <li>
              <t><tt>billing.taskbot@example.com</tt> - Task-specific agent with hierarchical naming</t>
            </li>
            <li>
              <t><tt>weather-agent-v2@provider.net</tt> - Versioned agent identifier</t>
            </li>
          </ul>
        </section>
        <section anchor="local-part-semantics">
          <name>Local-part Semantics</name>
          <t>The <tt>local-part</tt> uses alphanumeric characters, period (<tt>.</tt>), hyphen (<tt>-</tt>), underscore (<tt>_</tt>), and plus (<tt>+</tt>). The maximum length of the local-part is 63 characters.</t>
          <t>Domains <bcp14>MUST</bcp14> support case-insensitive matching of local-parts, similar to email systems.</t>
        </section>
        <section anchor="domain-requirements">
          <name>Domain Requirements</name>
          <t>The domain portion <bcp14>MUST</bcp14> be a valid Internationalized Domain Name (IDN) as defined in <xref target="RFC5890"/>. ATP servers <bcp14>MUST</bcp14> support both ASCII and UTF-8 encoded domain names.</t>
        </section>
      </section>
      <section anchor="delegation">
        <name>Delegation</name>
        <t>Domains can delegate agent handling to external ATP servers using DNS CNAME records or SVCB alias mode.</t>
        <section anchor="cname-delegation">
          <name>CNAME Delegation</name>
          <sourcecode type="dns"><![CDATA[
_atp.user.example.com. IN CNAME _atp.provider.net.
]]></sourcecode>
          <t>This allows users to maintain their identity (<tt>@user.example.com</tt>) while using third-party ATP services.</t>
        </section>
        <section anchor="svcb-alias-mode">
          <name>SVCB Alias Mode</name>
          <sourcecode type="dns"><![CDATA[
_atp.delegated.example.com. IN SVCB 0 _atp.target.org.
]]></sourcecode>
          <t>SVCB alias mode provides a more modern delegation mechanism with additional metadata capabilities.</t>
        </section>
      </section>
    </section>
    <section anchor="security-framework">
      <name>Security Framework</name>
      <section anchor="transport-layer-security">
        <name>Transport Layer Security</name>
        <t>All ATP connections <bcp14>MUST</bcp14> use TLS 1.3 <xref target="RFC8446"/> or higher. TLS 1.2 <bcp14>MAY</bcp14> be used for backward compatibility, but its use is <bcp14>NOT RECOMMENDED</bcp14>.</t>
        <section anchor="tls-requirements">
          <name>TLS Requirements</name>
          <ul spacing="normal">
            <li>
              <t><strong>Mandatory Encryption</strong>: All ATP traffic <bcp14>MUST</bcp14> be encrypted using TLS.</t>
            </li>
            <li>
              <t><strong>Certificate Validation</strong>: Clients <bcp14>MUST</bcp14> validate server certificates against trusted Certificate Authorities (CAs).</t>
            </li>
            <li>
              <t><strong>Cipher Suites</strong>: Servers <bcp14>SHOULD</bcp14> support modern cipher suites (e.g., TLS_AES_128_GCM_SHA256).</t>
            </li>
            <li>
              <t><strong>Forward Secrecy</strong>: Ephemeral key exchange (ECDHE) <bcp14>MUST</bcp14> be used.</t>
            </li>
          </ul>
        </section>
        <section anchor="mutual-tls">
          <name>Mutual TLS</name>
          <t>For server-to-server communication, ATP servers <bcp14>SHOULD</bcp14> support mutual TLS (mTLS) authentication. For environments where ATS IP-based validation is the primary sender verification mechanism, mTLS provides an additional layer of transport-level authentication. ATP servers <bcp14>MAY</bcp14> require mTLS for all connections in high-security deployments.</t>
        </section>
      </section>
      <section anchor="agent-transfer-sender-policy-ats">
        <name>Agent Transfer Sender Policy (ATS)</name>
        <t>The Agent Transfer Sender policy (ATS) defines which entities are authorized to send ATP messages on behalf of a domain. ATS is designed specifically for agent communication with strict enforcement.</t>
        <section anchor="ats-record-format">
          <name>ATS Record Format</name>
          <t>ATS policies are published as DNS TXT records at the following location:</t>
          <sourcecode type="dns"><![CDATA[
ats._atp.<domain>. IN TXT "v=atp1 <policy-directives>"
]]></sourcecode>
        </section>
        <section anchor="example-ats-records">
          <name>Example ATS Records</name>
          <t><strong>Simple IP-based policy</strong>:</t>
          <sourcecode type="dns"><![CDATA[
ats._atp.example.com. IN TXT "v=atp1 allow=ip:192.0.2.0/24"
]]></sourcecode>
          <t><strong>Multi-source policy</strong>:</t>
          <sourcecode type="dns"><![CDATA[
ats._atp.example.com. IN TXT "v=atp1 allow=ip:192.0.2.0/24 allow=domain:agent-provider.com include:ats._atp.trusted-partner.net"
]]></sourcecode>
          <t><strong>Permissive policy</strong>:</t>
          <sourcecode type="dns"><![CDATA[
ats._atp.example.com. IN TXT "v=atp1 allow=all"
]]></sourcecode>
          <t><strong>Restrictive policy</strong>:</t>
          <sourcecode type="dns"><![CDATA[
ats._atp.example.com. IN TXT "v=atp1 deny=all allow=ip:192.0.2.10"
]]></sourcecode>
        </section>
        <section anchor="policy-directives">
          <name>Policy Directives</name>
          <t>ATS policy directives are evaluated in order, with later directives overriding earlier ones when conflicts occur.</t>
          <ul spacing="normal">
            <li>
              <t><strong><tt>v=atp1</tt></strong>: Version identifier (<bcp14>REQUIRED</bcp14>). Indicates ATP version 1 policy format.</t>
            </li>
            <li>
              <t><strong><tt>allow=ip:&lt;cidr&gt;</tt></strong>: Authorize messages from specific IP address ranges.</t>
            </li>
            <li>
              <t><strong><tt>allow=domain:&lt;domain&gt;</tt></strong>: Authorize messages from agents at the specified domain.</t>
            </li>
            <li>
              <t><strong><tt>allow=all</tt></strong>: Authorize messages from any source (<bcp14>NOT RECOMMENDED</bcp14>).</t>
            </li>
            <li>
              <t><strong><tt>deny=ip:&lt;cidr&gt;</tt></strong>: Explicitly deny messages from specific IP ranges.</t>
            </li>
            <li>
              <t><strong><tt>deny=domain:&lt;domain&gt;</tt></strong>: Explicitly deny messages from agents at the specified domain.</t>
            </li>
            <li>
              <t><strong><tt>deny=all</tt></strong>: Deny all sources (must be followed by specific <tt>allow</tt> directives).</t>
            </li>
            <li>
              <t><strong><tt>include:&lt;record&gt;</tt></strong>: Include policy from another ATS record.</t>
            </li>
            <li>
              <t><strong><tt>redirect=&lt;domain&gt;</tt></strong>: Redirect policy evaluation to another domain.</t>
            </li>
            <li>
              <t><strong><tt>exp=&lt;domain&gt;</tt></strong>: Specify a domain for explanation text (human-readable).</t>
            </li>
          </ul>
        </section>
        <section anchor="ats-query-process">
          <name>ATS Query Process</name>
          <t>When an ATP server receives a message claiming to be from <tt>sender@domain.com</tt>, it performs the following ATS verification:</t>
          <ol spacing="normal" type="1"><li>
              <t><strong>Query ATS Record</strong>: Query the DNS TXT record for <tt>ats._atp.domain.com</tt>.</t>
            </li>
            <li>
              <t><strong>Extract IP</strong>: Determine the source IP address of the incoming connection.</t>
            </li>
            <li>
              <t><strong>Policy Evaluation</strong>: Evaluate the ATS policy against the source IP and sender domain.</t>
            </li>
            <li>
              <t><strong>Authorization Decision</strong>:
              </t>
              <ul spacing="normal">
                <li>
                  <t>If policy evaluation results in <tt>PASS</tt>, accept the message.</t>
                </li>
                <li>
                  <t>If policy evaluation results in <tt>FAIL</tt>, reject the message with HTTP 403 and error body <tt>{"error": "ATS_VALIDATION_FAILED"}</tt>.</t>
                </li>
                <li>
                  <t>If no ATS record exists, treat as <tt>NEUTRAL</tt> (accept but flag for monitoring).</t>
                </li>
              </ul>
            </li>
          </ol>
        </section>
        <section anchor="ats-processing-algorithm">
          <name>ATS Processing Algorithm</name>
          <t>The ATS verification algorithm processes policy directives as follows:</t>
          <sourcecode type="text"><![CDATA[
result = NEUTRAL

FOR EACH directive in policy:
    IF directive is 'allow=ip:<cidr>' AND source_ip matches <cidr>:
        result = PASS
    ELSE IF directive is 'deny=ip:<cidr>' AND source_ip matches <cidr>:
        result = FAIL
    ELSE IF directive is 'allow=domain:<domain>' AND sender_domain matches <domain>:
        result = PASS
    ELSE IF directive is 'deny=domain:<domain>' AND sender_domain matches <domain>:
        result = FAIL
    ELSE IF directive is 'allow=all':
        result = PASS
    ELSE IF directive is 'deny=all':
        result = FAIL
    ELSE IF directive is 'include:<record>':
        include_result = query_ats(<record>)
        IF include_result is PASS or FAIL:
            result = include_result

RETURN result
]]></sourcecode>
        </section>
        <section anchor="ats-error-codes">
          <name>ATS Error Codes</name>
          <t>ATS validation errors are returned as HTTP responses with structured JSON error bodies:</t>
          <ul spacing="normal">
            <li>
              <t><strong>403 Forbidden</strong> with body: <tt>{"error": "ATS_VALIDATION_FAILED", "detail": "Sender not authorized by ATS policy"}</tt></t>
            </li>
            <li>
              <t><strong>502 Bad Gateway</strong> with body: <tt>{"error": "ATS_TEMPORARY_FAILURE", "detail": "DNS lookup timeout for ATS record"}</tt></t>
            </li>
            <li>
              <t><strong>403 Forbidden</strong> with body: <tt>{"error": "ATS_RECORD_INVALID", "detail": "ATS record syntax error"}</tt></t>
            </li>
          </ul>
        </section>
        <section anchor="cloud-deployment-considerations">
          <name>Cloud Deployment Considerations</name>
          <t>In cloud environments where agents share IP addresses (e.g., CDN, serverless platforms, container orchestration), IP-based ATS policies may be insufficient. Deployments in such environments <bcp14>SHOULD</bcp14>:</t>
          <ol spacing="normal" type="1"><li>
              <t>Use <tt>allow=domain:&lt;domain&gt;</tt> directives instead of IP-based directives where possible.</t>
            </li>
            <li>
              <t>Combine ATS with mutual TLS for stronger sender verification.</t>
            </li>
            <li>
              <t>Rely on ATK signature verification as the primary authentication mechanism, with ATS as an additional signal.</t>
            </li>
          </ol>
          <t>Note: ATS is designed as a first-pass filter, not a sole authentication mechanism. ATK signature verification provides cryptographic proof of sender identity regardless of network topology.</t>
        </section>
        <section anchor="ats-best-practices">
          <name>ATS Best Practices</name>
          <ul spacing="normal">
            <li>
              <t><strong>Start Restrictive</strong>: Begin with a restrictive policy and gradually add authorized sources.</t>
            </li>
            <li>
              <t><strong>Use Includes</strong>: Use <tt>include:</tt> directives to inherit policies from trusted providers.</t>
            </li>
            <li>
              <t><strong>Monitor Logs</strong>: Regularly review ATS validation logs to identify unauthorized attempts.</t>
            </li>
            <li>
              <t><strong>Gradual Deployment</strong>: Deploy ATS gradually, starting with monitoring mode before enforcement.</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="agent-transfer-key-atk">
        <name>Agent Transfer Key (ATK)</name>
        <t>The Agent Transfer Key (ATK) record publishes cryptographic public keys used for message signature verification. ATK is mandatory in ATP and uses modern cryptographic algorithms.</t>
        <section anchor="atk-record-format">
          <name>ATK Record Format</name>
          <t>ATK records are published as DNS TXT records at the following location:</t>
          <sourcecode type="dns"><![CDATA[
<selector>.atk._atp.<domain>. IN TXT "v=atp1 <key-parameters>"
]]></sourcecode>
          <t>Where <tt>&lt;selector&gt;</tt> is an identifier for the specific key (e.g., <tt>default</tt>, <tt>2026q1</tt>, <tt>rotated-key</tt>).</t>
        </section>
        <section anchor="example-atk-records">
          <name>Example ATK Records</name>
          <t><strong>Ed25519 key (<bcp14>RECOMMENDED</bcp14>)</strong>:</t>
          <sourcecode type="dns"><![CDATA[
default.atk._atp.example.com. IN TXT "v=atp1 k=ed25519 p=MCowBQYDK2VwAyEAtLJ5VqH7K+R5VZ8cD9XwY3J2mN8K+R5VZ8cD9XwY3J2m"
]]></sourcecode>
          <t><strong>RSA key (3072-bit)</strong>:</t>
          <sourcecode type="dns"><![CDATA[
legacy.atk._atp.example.com. IN TXT "v=atp1 k=rsa p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA..."
]]></sourcecode>
          <t><strong>ECDSA key (P-256)</strong>:</t>
          <sourcecode type="dns"><![CDATA[
p256.atk._atp.example.com. IN TXT "v=atp1 k=ecdsa n=prime256v1 p=MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE..."
]]></sourcecode>
        </section>
        <section anchor="key-parameters">
          <name>Key Parameters</name>
          <ul spacing="normal">
            <li>
              <t><strong><tt>v=atp1</tt></strong>: Version identifier (<bcp14>REQUIRED</bcp14>). Indicates ATP version 1 key format.</t>
            </li>
            <li>
              <t><strong><tt>k=&lt;algorithm&gt;</tt></strong>: Key algorithm (<bcp14>REQUIRED</bcp14>). Supported values:
              </t>
              <ul spacing="normal">
                <li>
                  <t><tt>ed25519</tt> - Ed25519 (<bcp14>RECOMMENDED</bcp14> for new deployments)</t>
                </li>
                <li>
                  <t><tt>rsa</tt> - RSA (3072-bit minimum for new keys, 2048-bit minimum accepted for verification)</t>
                </li>
                <li>
                  <t><tt>ecdsa</tt> - ECDSA (P-256, P-384, or P-521)</t>
                </li>
              </ul>
            </li>
            <li>
              <t><strong><tt>p=&lt;base64-key&gt;</tt></strong>: Base64-encoded public key (<bcp14>REQUIRED</bcp14>).</t>
            </li>
            <li>
              <t><strong><tt>n=&lt;curve-name&gt;</tt></strong>: Elliptic curve name (<bcp14>REQUIRED</bcp14> for ECDSA). Supported values: <tt>prime256v1</tt>, <tt>secp384r1</tt>, <tt>secp521r1</tt>.</t>
            </li>
            <li>
              <t><strong><tt>h=&lt;hash-alg&gt;</tt></strong>: Hash algorithm (<bcp14>OPTIONAL</bcp14>). Defaults to <tt>sha256</tt>. Supported values: <tt>sha256</tt>, <tt>sha384</tt>, <tt>sha512</tt>.</t>
            </li>
            <li>
              <t><strong><tt>s=&lt;service&gt;</tt></strong>: Service type (<bcp14>OPTIONAL</bcp14>). Indicates which ATP services use this key.</t>
            </li>
            <li>
              <t><strong><tt>t=&lt;flags&gt;</tt></strong>: Flags (<bcp14>OPTIONAL</bcp14>). Comma-separated list of flags:
              </t>
              <ul spacing="normal">
                <li>
                  <t><tt>y</tt> - Testing mode (signature validation is informational only)</t>
                </li>
                <li>
                  <t><tt>r</tt> - Key is revoked (<bcp14>MUST NOT</bcp14> be used for new signatures)</t>
                </li>
              </ul>
            </li>
            <li>
              <t><strong><tt>x=&lt;expiry&gt;</tt></strong>: Key expiry timestamp (<bcp14>OPTIONAL</bcp14>). Unix timestamp after which the key should not be used.</t>
            </li>
          </ul>
        </section>
        <section anchor="atk-query-process">
          <name>ATK Query Process</name>
          <t>When an ATP server receives a signed message, it performs the following ATK verification:</t>
          <ol spacing="normal" type="1"><li>
              <t><strong>Extract Signature Information</strong>: Parse the message signature to extract key selector, domain, signature algorithm, and signature value.</t>
            </li>
            <li>
              <t><strong>Query ATK Record</strong>: Query the DNS TXT record for <tt>&lt;selector&gt;.atk._atp.&lt;domain&gt;</tt>.</t>
            </li>
            <li>
              <t><strong>Validate Key Parameters</strong>: Verify that the key algorithm and parameters match the signature.</t>
            </li>
            <li>
              <t><strong>Canonicalization</strong>: Canonicalize the message payload according to the specified algorithm.</t>
            </li>
            <li>
              <t><strong>Signature Verification</strong>: Verify the signature using the public key from the ATK record.</t>
            </li>
            <li>
              <t><strong>Validation Decision</strong>:
              </t>
              <ul spacing="normal">
                <li>
                  <t>If signature verification succeeds, accept the message.</t>
                </li>
                <li>
                  <t>If signature verification fails, reject the message with HTTP 403 and error body <tt>{"error": "ATK_SIGNATURE_INVALID", "detail": "Signature verification failed"}</tt>.</t>
                </li>
                <li>
                  <t>If ATK record is not found, reject the message with HTTP 403 and error body <tt>{"error": "ATK_KEY_NOT_FOUND", "detail": "No ATK record found for selector"}</tt>.</t>
                </li>
              </ul>
            </li>
          </ol>
        </section>
        <section anchor="atk-key-management">
          <name>ATK Key Management</name>
          <section anchor="key-rotation">
            <name>Key Rotation</name>
            <t>Domains <bcp14>SHOULD</bcp14> rotate ATK keys periodically (e.g., every 90 days).</t>
          </section>
          <section anchor="key-revocation">
            <name>Key Revocation</name>
            <t>If a key is compromised, it <bcp14>SHOULD</bcp14> be revoked immediately by updating the ATK record to include the <tt>r</tt> flag.</t>
          </section>
        </section>
        <section anchor="atk-best-practices">
          <name>ATK Best Practices</name>
          <ul spacing="normal">
            <li>
              <t><strong>Use Ed25519</strong>: Prefer Ed25519 keys for new deployments due to their security and performance characteristics.</t>
            </li>
            <li>
              <t><strong>Key Size</strong>: For RSA keys, generate new keys with at least 3072 bits (4096-bit <bcp14>RECOMMENDED</bcp14>). Implementations <bcp14>MUST</bcp14> accept RSA keys of 2048 bits or longer for signature verification. For ECDSA, use P-256 or stronger curves.</t>
            </li>
            <li>
              <t><strong>Multiple Keys</strong>: Maintain multiple keys (current, next, previous) for smooth rotation.</t>
            </li>
            <li>
              <t><strong>DNSSEC</strong>: Sign ATK records with DNSSEC to prevent DNS spoofing attacks.</t>
            </li>
            <li>
              <t><strong>Monitoring</strong>: Monitor signature validation failures to detect potential attacks or misconfigurations.</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="message-signature">
        <name>Message Signature</name>
        <t>All ATP messages <bcp14>MUST</bcp14> be cryptographically signed to ensure integrity and authenticity.</t>
        <section anchor="signature-envelope">
          <name>Signature Envelope</name>
          <t>The signature is included in the message envelope as a <tt>signature</tt> field:</t>
          <sourcecode type="json"><![CDATA[
{
  "from": "sender@example.com",
  "to": "recipient@example.com",
  "timestamp": 1710000000,
  "nonce": "msg-12345-abcde",
  "type": "message",
  "payload": {},
  "signature": {
    "key_id": "default.atk._atp.example.com",
    "algorithm": "ed25519",
    "signature": "MEUCIQDR...",
    "headers": ["from", "to", "timestamp", "nonce", "type"],
    "timestamp": 1710000000
  }
}
]]></sourcecode>
        </section>
        <section anchor="signature-algorithm">
          <name>Signature Algorithm</name>
          <t>The signature algorithm depends on the key type:</t>
          <ul spacing="normal">
            <li>
              <t><strong>Ed25519</strong>: Sign the canonicalized message bytes directly.</t>
            </li>
            <li>
              <t><strong>RSA</strong>: Use RSASSA-PSS with SHA-256 (or stronger).</t>
            </li>
            <li>
              <t><strong>ECDSA</strong>: Use ECDSA with the specified curve and hash algorithm.</t>
            </li>
          </ul>
        </section>
        <section anchor="signature-coverage">
          <name>Signature Coverage</name>
          <t>The signature <bcp14>MUST</bcp14> cover all fields of the message envelope except the <tt>signature</tt> field itself. The <tt>headers</tt> field within the signature object is informational and lists the fields that were present at signing time; it <bcp14>MUST NOT</bcp14> be used to selectively exclude fields from signature verification.</t>
          <t>Verifiers <bcp14>MUST</bcp14> reject messages where the set of fields in the message envelope does not match the <tt>headers</tt> list in the signature object.</t>
        </section>
        <section anchor="canonicalization">
          <name>Canonicalization</name>
          <t>Messages <bcp14>MUST</bcp14> be canonicalized before signing to ensure consistent signature verification.</t>
          <t><strong>JSON Canonicalization Process</strong>:</t>
          <t>ATP uses JSON Canonicalization Scheme (JCS) <xref target="RFC8785"/> for JSON payloads:</t>
          <ol spacing="normal" type="1"><li>
              <t>Remove the <tt>signature</tt> field from the message object.</t>
            </li>
            <li>
              <t>Apply JCS canonicalization to the remaining JSON object.</t>
            </li>
            <li>
              <t>Convert the canonicalized JSON to UTF-8 bytes.</t>
            </li>
            <li>
              <t>Sign the UTF-8 bytes using the specified algorithm.</t>
            </li>
          </ol>
          <t><strong>CBOR Canonicalization Process</strong>:</t>
          <t>For CBOR payloads, ATP uses deterministic CBOR encoding as defined in RFC 8949 Section 4.2 (Core Deterministic Encoding Requirements):</t>
          <ol spacing="normal" type="1"><li>
              <t>Remove the <tt>signature</tt> field from the CBOR map.</t>
            </li>
            <li>
              <t>Re-encode the remaining map using deterministic CBOR encoding:
              </t>
              <ul spacing="normal">
                <li>
                  <t>Map keys <bcp14>MUST</bcp14> be sorted in bytewise lexicographic order of their deterministic encodings.</t>
                </li>
                <li>
                  <t>Indefinite-length items <bcp14>MUST NOT</bcp14> be used.</t>
                </li>
                <li>
                  <t>Preferred serialization rules from Section 4.1 of <xref target="RFC8949"/> <bcp14>MUST</bcp14> be applied.</t>
                </li>
              </ul>
            </li>
            <li>
              <t>Sign the resulting byte string using the specified algorithm.</t>
            </li>
          </ol>
        </section>
        <section anchor="signature-verification">
          <name>Signature Verification</name>
          <t>The recipient verifies the signature as follows:</t>
          <ol spacing="normal" type="1"><li>
              <t>Extract the <tt>signature</tt> field from the message.</t>
            </li>
            <li>
              <t>Verify that the <tt>headers</tt> list in the signature object matches the set of fields present in the message envelope (excluding <tt>signature</tt>). Reject the message if they do not match.</t>
            </li>
            <li>
              <t>Reconstruct the message object without the <tt>signature</tt> field.</t>
            </li>
            <li>
              <t>Apply the appropriate canonicalization process (JCS for JSON, deterministic encoding for CBOR).</t>
            </li>
            <li>
              <t>Verify the signature using the public key from the ATK record.</t>
            </li>
          </ol>
        </section>
        <section anchor="signature-error-handling">
          <name>Signature Error Handling</name>
          <t>If signature verification fails, the recipient <bcp14>MUST</bcp14> reject the message and <bcp14>MAY</bcp14> log the failure for monitoring.</t>
        </section>
      </section>
    </section>
    <section anchor="transport-protocol">
      <name>Transport Protocol</name>
      <section anchor="https-transport">
        <name>HTTPS Transport</name>
        <t>The primary transport for ATP is HTTPS, enabling easy deployment behind existing infrastructure such as CDNs, load balancers, and firewalls.</t>
        <section anchor="default-port">
          <name>Default Port</name>
          <t>The default port for ATP over HTTPS is <strong>7443</strong>. IANA registration for this port is requested in the IANA Considerations section of this document.</t>
          <t>Deployments <bcp14>MUST</bcp14> support custom port configuration via SVCB records. ATP servers <bcp14>MAY</bcp14> listen on alternative ports (including 443) as specified in the SVCB record's port parameter. The use of a dedicated port provides operational advantages in enterprise environments: security teams can identify and audit ATP traffic by port number without requiring deep packet inspection, and it avoids path conflicts with existing HTTPS services on port 443.</t>
        </section>
        <section anchor="endpoints">
          <name>Endpoints</name>
          <t>ATP servers <bcp14>MUST</bcp14> implement the following standard endpoints:</t>
          <section anchor="send-message-endpoint">
            <name>Send Message Endpoint</name>
            <sourcecode type="http"><![CDATA[
POST /.well-known/atp/v1/message
Content-Type: application/atp+json
]]></sourcecode>
            <t><strong>Request Body</strong>: ATP message envelope</t>
            <t><strong>Response</strong>:</t>
            <ul spacing="normal">
              <li>
                <t><strong>202 Accepted</strong>: Message accepted for delivery</t>
              </li>
              <li>
                <t><strong>400 Bad Request</strong>: Invalid message format</t>
              </li>
              <li>
                <t><strong>401 Unauthorized</strong>: Authentication failed</t>
              </li>
              <li>
                <t><strong>429 Too Many Requests</strong>: Rate limit exceeded</t>
              </li>
              <li>
                <t><strong>500 Internal Server Error</strong>: Server error</t>
              </li>
            </ul>
          </section>
          <section anchor="capability-discovery-endpoint">
            <name>Capability Discovery Endpoint</name>
            <sourcecode type="http"><![CDATA[
GET /.well-known/atp/v1/capabilities
]]></sourcecode>
            <t><strong>Response</strong>: JSON object describing server capabilities</t>
          </section>
          <section anchor="health-check-endpoint">
            <name>Health Check Endpoint</name>
            <sourcecode type="http"><![CDATA[
GET /.well-known/atp/v1/health
]]></sourcecode>
            <t><strong>Response</strong>:</t>
            <sourcecode type="json"><![CDATA[
{
  "status": "ok",
  "version": "1.0.0",
  "uptime": 86400,
  "load": 0.45
}
]]></sourcecode>
          </section>
        </section>
        <section anchor="connection-management">
          <name>Connection Management</name>
          <ul spacing="normal">
            <li>
              <t><strong>Keep-Alive</strong>: Clients <bcp14>SHOULD</bcp14> use HTTP keep-alive for multiple requests.</t>
            </li>
            <li>
              <t><strong>Timeout</strong>: Servers <bcp14>SHOULD</bcp14> implement idle timeout (<bcp14>RECOMMENDED</bcp14>: 60 seconds).</t>
            </li>
            <li>
              <t><strong>Rate Limiting</strong>: Servers <bcp14>MAY</bcp14> implement rate limiting with appropriate HTTP headers.</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="ipv6-considerations">
        <name>IPv6 Considerations</name>
        <t>ATP deployments <bcp14>SHOULD</bcp14> support IPv6 connectivity. ATP servers <bcp14>MUST</bcp14> publish both A and AAAA records when IPv6 is available. Clients <bcp14>SHOULD</bcp14> implement Happy Eyeballs <xref target="RFC8305"/> for dual-stack connection establishment.</t>
        <t>In the SVCB record, the <tt>ipv6hint</tt> parameter provides IPv6 address hints for faster connection establishment without an additional AAAA query:</t>
        <sourcecode type="dns"><![CDATA[
_atp.example.com. IN SVCB 1 agent.example.com. (
    port=7443
    alpn="atp/1"
    ipv4hint=192.0.2.1
    ipv6hint=2001:db8::1,2001:db8::2
    atp-capabilities="message,request,event"
)
]]></sourcecode>
        <t>For new ATP deployments, IPv6-only operation is a valid configuration. IPv4 support is NOT <bcp14>REQUIRED</bcp14> when the deployment environment is IPv6-capable.</t>
      </section>
      <section anchor="quic-transport-future-work">
        <name>QUIC Transport (Future Work)</name>
        <t>ATP is designed to support QUIC transport <xref target="RFC9000"/> for low-latency scenarios. The ALPN identifier for ATP over QUIC is <tt>atp/1</tt>.</t>
        <t>The full specification of QUIC transport for ATP, including message-to-stream mapping, QUIC error code registry, and 0-RTT security considerations, is deferred to a companion document. This section provides an overview of the intended design.</t>
        <section anchor="expected-benefits">
          <name>Expected Benefits</name>
          <ul spacing="normal">
            <li>
              <t><strong>0-RTT Handshake</strong>: Establish connections with zero round-trip time for resumed connections.</t>
            </li>
            <li>
              <t><strong>Multiplexing</strong>: Multiple ATP messages over a single connection without head-of-line blocking.</t>
            </li>
            <li>
              <t><strong>Connection Migration</strong>: Maintain connections across network changes.</t>
            </li>
            <li>
              <t><strong>Better Performance</strong>: Reduced latency over lossy networks.</t>
            </li>
          </ul>
        </section>
        <section anchor="security-note">
          <name>Security Note</name>
          <t>QUIC 0-RTT data is subject to replay attacks. ATP messages sent over 0-RTT <bcp14>MUST</bcp14> be idempotent, or servers <bcp14>MUST</bcp14> implement application-level replay protection in addition to the timestamp/nonce mechanism defined in this specification.</t>
        </section>
      </section>
    </section>
    <section anchor="message-format">
      <name>Message Format</name>
      <section anchor="common-fields">
        <name>Common Fields</name>
        <t>All ATP messages share a common envelope structure with the following fields:</t>
        <sourcecode type="json"><![CDATA[
{
  "from": "string",
  "to": "string",
  "cc": ["string"],
  "timestamp": "integer",
  "nonce": "string",
  "type": "string",
  "in_reply_to": "string",
  "task_id": "string",
  "context_id": "string",
  "payload": "object",
  "signature": "object",
  "routing": "object"
}
]]></sourcecode>
        <section anchor="field-definitions">
          <name>Field Definitions</name>
          <ul spacing="normal">
            <li>
              <t><strong><tt>from</tt></strong>: The Agent ID of the message sender (<bcp14>REQUIRED</bcp14>). <bcp14>MUST</bcp14> be a valid agent identifier.</t>
            </li>
            <li>
              <t><strong><tt>to</tt></strong>: The Agent ID of the primary recipient (<bcp14>REQUIRED</bcp14>). <bcp14>MUST</bcp14> be a valid agent identifier.</t>
            </li>
            <li>
              <t><strong><tt>cc</tt></strong>: Array of Agent IDs for carbon-copy recipients (<bcp14>OPTIONAL</bcp14>).</t>
            </li>
            <li>
              <t><strong><tt>timestamp</tt></strong>: Unix timestamp (seconds since epoch) when the message was created (<bcp14>REQUIRED</bcp14>). Recipients <bcp14>MUST</bcp14> reject messages with timestamps more than 300 seconds (5 minutes) in the past or more than 60 seconds in the future relative to the recipient's clock. Implementations <bcp14>SHOULD</bcp14> use NTP-synchronized clocks.</t>
            </li>
            <li>
              <t><strong><tt>nonce</tt></strong>: Cryptographically random unique identifier for the message (<bcp14>REQUIRED</bcp14>). <bcp14>MUST</bcp14> be unique per sender within the timestamp validity window. Recipients <bcp14>MUST</bcp14> maintain a cache of recently seen (sender, nonce) pairs for at least the duration of the timestamp validity window (300 seconds) and <bcp14>MUST</bcp14> reject duplicate (sender, nonce) pairs.</t>
            </li>
            <li>
              <t><strong><tt>type</tt></strong>: Message type indicator (<bcp14>REQUIRED</bcp14>). Values: <tt>message</tt>, <tt>request</tt>, <tt>response</tt>, <tt>event</tt>.</t>
            </li>
            <li>
              <t><strong><tt>in_reply_to</tt></strong>: The nonce of the original message that this message is responding to (<bcp14>OPTIONAL</bcp14>). <bcp14>REQUIRED</bcp14> for <tt>response</tt> type messages. Used for request-response correlation.</t>
            </li>
            <li>
              <t><strong><tt>task_id</tt></strong>: Identifies the task or workflow this message belongs to (<bcp14>OPTIONAL</bcp14>). All messages related to the same task <bcp14>SHOULD</bcp14> use the same task_id.</t>
            </li>
            <li>
              <t><strong><tt>context_id</tt></strong>: Identifies the conversation or session context (<bcp14>OPTIONAL</bcp14>). Used for multi-turn interactions.</t>
            </li>
            <li>
              <t><strong><tt>payload</tt></strong>: Message-specific content (<bcp14>REQUIRED</bcp14>). Structure depends on message type.</t>
            </li>
            <li>
              <t><strong><tt>signature</tt></strong>: Cryptographic signature envelope (<bcp14>REQUIRED</bcp14>).</t>
            </li>
            <li>
              <t><strong><tt>routing</tt></strong>: Routing information for multi-hop scenarios (<bcp14>OPTIONAL</bcp14>).</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="message-types">
        <name>Message Types</name>
        <t>ATP supports three primary message types, each with distinct semantics and use cases.</t>
        <section anchor="message-asynchronous">
          <name>Message (Asynchronous)</name>
          <t>The <tt>message</tt> type is used for asynchronous, fire-and-forget communication.</t>
          <sourcecode type="json"><![CDATA[
{
  "from": "a1@example.com",
  "to": "a2@example.com",
  "timestamp": 1710000000,
  "nonce": "msg-12345-abcde",
  "type": "message",
  "payload": {
    "subject": "Hello from Agent A1",
    "body": "This is an asynchronous message",
    "attachments": [
      {
        "name": "data.json",
        "content_type": "application/json",
        "data": "base64-encoded-data"
      }
    ],
    "priority": "normal"
  },
  "signature": {}
}
]]></sourcecode>
        </section>
        <section anchor="requestresponse">
          <name>Request/Response</name>
          <t>The <tt>request</tt>/<tt>response</tt> pattern supports synchronous RPC-style interactions.</t>
          <section anchor="request-format">
            <name>Request Format</name>
            <sourcecode type="json"><![CDATA[
{
  "from": "client@example.com",
  "to": "service@example.org",
  "timestamp": 1710000000,
  "nonce": "req-67890-fghij",
  "type": "request",
  "payload": {
    "action": "get_weather",
    "params": {
      "location": "New York",
      "units": "metric"
    },
    "timeout": 30,
    "correlation_id": "corr-12345"
  },
  "signature": {}
}
]]></sourcecode>
          </section>
          <section anchor="response-format">
            <name>Response Format</name>
            <sourcecode type="json"><![CDATA[
{
  "from": "service@example.org",
  "to": "client@example.com",
  "timestamp": 1710000001,
  "nonce": "resp-67890-klmno",
  "type": "response",
  "in_reply_to": "req-67890-fghij",
  "payload": {
    "status": "success",
    "data": {
      "temperature": 22,
      "conditions": "sunny",
      "humidity": 65
    },
    "correlation_id": "corr-12345"
  },
  "signature": {}
}
]]></sourcecode>
          </section>
        </section>
        <section anchor="eventsubscription">
          <name>Event/Subscription</name>
          <t>The <tt>event</tt> type supports streaming and event-driven communication.</t>
          <section anchor="subscription-request">
            <name>Subscription Request</name>
            <sourcecode type="json"><![CDATA[
{
  "from": "subscriber@example.com",
  "to": "publisher@example.org",
  "timestamp": 1710000000,
  "nonce": "sub-11111-pqrst",
  "type": "request",
  "payload": {
    "action": "subscribe",
    "event_types": ["price_update", "news", "alert"],
    "filter": {
      "symbol": "AAPL",
      "priority": ">=high"
    },
    "delivery_mode": "push",
    "subscription_id": "sub-12345"
  },
  "signature": {}
}
]]></sourcecode>
          </section>
          <section anchor="event-message">
            <name>Event Message</name>
            <sourcecode type="json"><![CDATA[
{
  "from": "publisher@example.org",
  "to": "subscriber@example.com",
  "timestamp": 1710000010,
  "nonce": "evt-22222-uvwxy",
  "type": "event",
  "payload": {
    "event_type": "price_update",
    "subscription_id": "sub-12345",
    "data": {
      "symbol": "AAPL",
      "price": 150.25,
      "timestamp": 1710000010,
      "volume": 1000000
    },
    "sequence_number": 42
  },
  "signature": {}
}
]]></sourcecode>
          </section>
        </section>
      </section>
      <section anchor="payload-encoding">
        <name>Payload Encoding</name>
        <t>ATP supports multiple payload encoding formats.</t>
        <section anchor="json-encoding">
          <name>JSON Encoding</name>
          <t>JSON <xref target="RFC8259"/> is the <bcp14>RECOMMENDED</bcp14> encoding format.</t>
          <t><strong>Content-Type</strong>: <tt>application/atp+json</tt></t>
        </section>
        <section anchor="cbor-encoding">
          <name>CBOR Encoding</name>
          <t>CBOR <xref target="RFC8949"/> is an <bcp14>OPTIONAL</bcp14> encoding format for bandwidth-constrained environments.</t>
          <t><strong>Content-Type</strong>: <tt>application/atp+cbor</tt></t>
        </section>
      </section>
      <section anchor="message-size-limits">
        <name>Message Size Limits</name>
        <t>ATP servers <bcp14>SHOULD</bcp14> enforce message size limits:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Default Maximum</strong>: 1 MB (1,048,576 bytes)</t>
          </li>
          <li>
            <t><strong>Minimum Supported</strong>: 64 KB (65,536 bytes)</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="protocol-semantics">
      <name>Protocol Semantics</name>
      <section anchor="message-asynchronous-1">
        <name>Message (Asynchronous)</name>
        <t>Asynchronous messages follow a store-and-forward model.</t>
        <section anchor="delivery-model">
          <name>Delivery Model</name>
          <figure anchor="fig-message-delivery">
            <name>Asynchronous Message Delivery Model: Submit → Transfer → Deliver flow through ATP servers</name>
            <artwork type="ascii-art"><![CDATA[
Sender Agent      ATP Server A      ATP Server B      Recipient Agent
     |                |                 |                    |
     |---[Submit]---->|                 |                    |
     |                |                 |                    |
     |                |---[Transfer]--->|                    |
     |                |                 |                    |
     |                |                 |----[Deliver]------>|
     |                |                 |                    |
]]></artwork>
          </figure>
          <t>In this model:</t>
          <ol spacing="normal" type="1"><li>
              <t>The Sender Agent submits a message to its local ATP Server A</t>
            </li>
            <li>
              <t>ATP Server A performs policy enforcement (ATS/ATK validation) and transfers the message to ATP Server B</t>
            </li>
            <li>
              <t>ATP Server B performs security checks and delivers the message to the Recipient Agent</t>
            </li>
          </ol>
          <t>Each hop (Submit/Transfer/Deliver) involves independent ATS/ATK validation for security enforcement.</t>
        </section>
        <section anchor="delivery-guarantees">
          <name>Delivery Guarantees</name>
          <t>ATP asynchronous messages provide store-and-forward delivery with the following semantics:</t>
          <ul spacing="normal">
            <li>
              <t><strong>Default</strong>: Best-effort delivery. Servers attempt delivery but do not guarantee success.</t>
            </li>
            <li>
              <t><strong>With acknowledgment</strong>: When delivery acknowledgment is requested (via <tt>payload.ack_required: true</tt>), servers provide at-least-once delivery semantics.</t>
            </li>
          </ul>
        </section>
        <section anchor="retry-policy">
          <name>Retry Policy</name>
          <t>Servers <bcp14>SHOULD</bcp14> retry failed deliveries using exponential backoff:</t>
          <ul spacing="normal">
            <li>
              <t>Initial retry interval: 1 second</t>
            </li>
            <li>
              <t>Maximum retry interval: 1 hour</t>
            </li>
            <li>
              <t>Maximum retry duration: 48 hours</t>
            </li>
            <li>
              <t>Maximum retry count: 10</t>
            </li>
          </ul>
          <t>After exhausting retries, servers <bcp14>MUST</bcp14> generate a bounce notification if the sender requested acknowledgment.</t>
        </section>
      </section>
      <section anchor="requestresponse-synchronous">
        <name>Request/Response (Synchronous)</name>
        <t>Synchronous request/response follows an RPC pattern.</t>
        <section anchor="interaction-model">
          <name>Interaction Model</name>
          <t>All agent communication <bcp14>MUST</bcp14> go through their respective ATP servers. This design ensures proper routing, security filtering, and policy enforcement.</t>
          <figure anchor="fig-request-response">
            <name>Request/Response Interaction Model: Synchronous RPC-style flow with bidirectional server-mediated communication</name>
            <artwork type="ascii-art"><![CDATA[
Client Agent     ATP Server A     ATP Server B     Service Agent
     |                |                 |                 |
     |---[Request]--->|                 |                 |
     |                |                 |                 |
     |                |---[Transfer]--->|                 |
     |                |                 |                 |
     |                |                 |---[Request]---->|
     |                |                 |                 |
     |                |                 |<--[Response]----|
     |                |                 |                 |
     |                |<--[Transfer]----|                 |
     |<--[Response]---|                 |                 |
     |                |                 |                 |
]]></artwork>
          </figure>
          <t>In this model:</t>
          <ol spacing="normal" type="1"><li>
              <t>The Client Agent submits a request to its local ATP Server A via HTTP POST</t>
            </li>
            <li>
              <t>ATP Server A performs policy enforcement (ATS/ATK validation) and transfers the request to ATP Server B</t>
            </li>
            <li>
              <t>ATP Server B performs security checks and delivers the request to the Service Agent</t>
            </li>
            <li>
              <t>The Service Agent processes the request and returns a response</t>
            </li>
            <li>
              <t>The response flows back through the same path (Service Agent → ATP Server B → ATP Server A → Client Agent)</t>
            </li>
          </ol>
          <t>Each hop (Submit/Transfer/Deliver) involves independent ATS/ATK validation for security enforcement.</t>
        </section>
        <section anchor="deadline-propagation">
          <name>Deadline Propagation</name>
          <t>For multi-hop request/response interactions, the timeout <bcp14>MUST</bcp14> be converted to an absolute deadline for relay forwarding. The absolute deadline is computed as:</t>
          <artwork><![CDATA[
deadline = sender_timestamp + timeout
]]></artwork>
          <t>When a relay forwards a request:</t>
          <ol spacing="normal" type="1"><li>
              <t>Calculate the remaining time: <tt>remaining = deadline - now</tt></t>
            </li>
            <li>
              <t>If <tt>remaining &lt;= 0</tt>, return a TIMEOUT error immediately with HTTP 504 and error body <tt>{"error": "DEADLINE_EXCEEDED", "detail": "Request deadline expired in transit"}</tt>.</t>
            </li>
            <li>
              <t>Set the forwarded request's timeout to the remaining time.</t>
            </li>
          </ol>
        </section>
        <section anchor="state-management">
          <name>State Management</name>
          <ul spacing="normal">
            <li>
              <t><strong>Stateless</strong>: Each request is independent.</t>
            </li>
            <li>
              <t><strong>Correlation ID</strong>: Clients <bcp14>MAY</bcp14> include a <tt>correlation_id</tt> to track workflows.</t>
            </li>
            <li>
              <t><strong>Idempotency</strong>: Requests <bcp14>SHOULD</bcp14> be idempotent.</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="eventsubscription-streaming">
        <name>Event/Subscription (Streaming)</name>
        <t>Event/subscription follows a publish-subscribe pattern.</t>
        <section anchor="pubsub-model">
          <name>Pub/Sub Model</name>
          <t>All event publications and subscriptions <bcp14>MUST</bcp14> go through ATP servers for proper routing and access control.</t>
          <figure anchor="fig-event-subscription">
            <name>Event/Subscription Pub/Sub Model: Bidirectional flow for subscription establishment and event notification</name>
            <artwork type="ascii-art"><![CDATA[
Publisher       ATP Server A    ATP Server B      Subscriber
     |               |               |                 |
     |----[Event]--->|               |                 |
     |               |               |                 |
     |               |--[Transfer]-->|                 |
     |               |               |                 |
     |               |               |-----[Event]---->|
     |               |               |                 |
     |               |               |<--[Subscribe]---|
     |               |               |                 |
     |               |<--[Transfer]--|                 |
     |<-[Subscribe]--|               |                 |
     |               |               |                 |
]]></artwork>
          </figure>
          <t>The event/subscription flow consists of two phases:</t>
          <t><strong>Subscription Phase</strong>: The Subscriber initiates a subscription request to its local ATP Server, which transfers the request to the Publisher's ATP Server, which then delivers it to the Publisher. This establishes the subscription relationship across the server chain.</t>
          <t><strong>Event Notification Phase</strong>: When an event occurs, the Publisher sends the event to its local ATP Server (Server B), which transfers it across the Internet to the Subscriber's ATP Server (Server A), which then delivers the notification to the Subscriber.</t>
          <t>This bidirectional flow ensures:</t>
          <ul spacing="normal">
            <li>
              <t>Proper access control at each ATP server boundary</t>
            </li>
            <li>
              <t>ATS/ATK policy enforcement for both subscription and event messages</t>
            </li>
            <li>
              <t>Subscription state management at the Publisher's server</t>
            </li>
          </ul>
        </section>
        <section anchor="subscription-lifecycle">
          <name>Subscription Lifecycle</name>
          <ul spacing="normal">
            <li>
              <t><strong>TTL</strong>: Subscriptions <bcp14>SHOULD</bcp14> include a <tt>ttl</tt> field (in seconds) in the subscribe request payload. If not specified, the default TTL is 3600 seconds (1 hour).</t>
            </li>
            <li>
              <t><strong>Renewal</strong>: Subscribers <bcp14>MUST</bcp14> renew subscriptions before TTL expiry by sending a new subscribe request with the same <tt>subscription_id</tt>.</t>
            </li>
            <li>
              <t><strong>Heartbeat</strong>: Publishing servers <bcp14>SHOULD</bcp14> send periodic heartbeat events (type: <tt>event</tt>, event_type: <tt>heartbeat</tt>) to subscribing servers. Note that heartbeat is a server-to-server mechanism, not agent-to-agent; it verifies the liveness of the subscription channel between ATP servers. Subscribing servers that do not receive a heartbeat within 2x the expected interval <bcp14>SHOULD</bcp14> re-subscribe.</t>
            </li>
            <li>
              <t><strong>Auto-expiry</strong>: Subscriptions that are not renewed within their TTL period are automatically expired. Publishers <bcp14>MUST</bcp14> stop sending events to expired subscriptions.</t>
            </li>
          </ul>
        </section>
        <section anchor="server-to-server-event-delivery">
          <name>Server-to-Server Event Delivery</name>
          <t>For push-mode event delivery, the publishing server sends events to the subscribing server's ATP message endpoint. The subscribing server's endpoint is discovered through the standard DNS SVCB discovery process using the subscriber's domain.</t>
          <t>Future versions of this specification <bcp14>MAY</bcp14> define additional transport mechanisms for real-time event delivery, including:</t>
          <ul spacing="normal">
            <li>
              <t>Server-Sent Events (SSE) for unidirectional streaming</t>
            </li>
            <li>
              <t>WebSocket for bidirectional streaming</t>
            </li>
          </ul>
          <t>These mechanisms are out of scope for the current version.</t>
        </section>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>ATP is designed with security as a first-class requirement. This section analyzes the threat model and security considerations for each component of the protocol.</t>
      <section anchor="threat-model">
        <name>Threat Model</name>
        <t>The threat model for ATP considers the following adversaries and attack vectors:</t>
        <t><strong>Network Adversaries</strong>: Passive or active attackers on the network path between agents and ATP servers, or between ATP servers. Capabilities may include:</t>
        <ul spacing="normal">
          <li>
            <t>Eavesdropping on unencrypted traffic</t>
          </li>
          <li>
            <t>Man-in-the-middle (MitM) attacks to intercept or modify communications</t>
          </li>
          <li>
            <t>Replay attacks using captured messages</t>
          </li>
          <li>
            <t>Traffic analysis to infer communication patterns</t>
          </li>
        </ul>
        <t><strong>Malicious Agents</strong>: Compromised or malicious agents that attempt to:</t>
        <ul spacing="normal">
          <li>
            <t>Send unauthorized messages on behalf of other agents (spoofing)</t>
          </li>
          <li>
            <t>Flood servers with excessive requests (DoS)</t>
          </li>
          <li>
            <t>Exploit protocol vulnerabilities to gain unauthorized access</t>
          </li>
        </ul>
        <t><strong>Rogue ATP Servers</strong>: Compromised or malicious ATP servers that may:</t>
        <ul spacing="normal">
          <li>
            <t>Fail to enforce ATS/ATK policies</t>
          </li>
          <li>
            <t>Leak sensitive message content</t>
          </li>
          <li>
            <t>Drop or delay messages selectively</t>
          </li>
        </ul>
        <t><strong>DNS Attackers</strong>: Adversaries that attempt to compromise DNS infrastructure:</t>
        <ul spacing="normal">
          <li>
            <t>DNS cache poisoning to redirect ATP traffic</t>
          </li>
          <li>
            <t>DNS spoofing to provide fraudulent SVCB records</t>
          </li>
          <li>
            <t>DNS amplification attacks</t>
          </li>
        </ul>
      </section>
      <section anchor="authentication">
        <name>Authentication</name>
        <section anchor="tls-security">
          <name>TLS Security</name>
          <t><strong>Threat</strong>: Network adversaries attempting eavesdropping or MitM attacks.</t>
          <t><strong>Mitigation</strong>:</t>
          <ul spacing="normal">
            <li>
              <t>All ATP connections <bcp14>MUST</bcp14> use TLS 1.3 <xref target="RFC8446"/> or higher</t>
            </li>
            <li>
              <t>Certificate validation against trusted Certificate Authorities is mandatory</t>
            </li>
            <li>
              <t>Cipher suites <bcp14>MUST</bcp14> provide forward secrecy (ECDHE key exchange)</t>
            </li>
            <li>
              <t>Cipher suites <bcp14>SHOULD</bcp14> use authenticated encryption (AES-GCM, ChaCha20-Poly1305)</t>
            </li>
          </ul>
          <t><strong>Residual Risk</strong>: Certificate authority compromise or mis-issuance. Deployments with high security requirements <bcp14>SHOULD</bcp14> implement certificate pinning or use DANE <xref target="RFC6698"/>.</t>
        </section>
        <section anchor="ats-agent-transfer-sender-policy">
          <name>ATS (Agent Transfer Sender Policy)</name>
          <t><strong>Threat</strong>: Malicious agents attempting to send messages on behalf of domains they do not control (spoofing).</t>
          <t><strong>Mitigation</strong>:</t>
          <ul spacing="normal">
            <li>
              <t>ATS records define authorized sending sources per domain</t>
            </li>
            <li>
              <t>Policy directives include IP ranges, domains, and explicit deny rules</t>
            </li>
            <li>
              <t>Each ATP server performs ATS validation on every incoming message</t>
            </li>
            <li>
              <t>Failed ATS validation results in immediate rejection</t>
            </li>
          </ul>
          <t><strong>Residual Risk</strong>: ATS record tampering via DNS attacks. Deployments <bcp14>SHOULD</bcp14> sign ATS records with DNSSEC <xref target="RFC4033"/>.</t>
        </section>
        <section anchor="atk-agent-transfer-key">
          <name>ATK (Agent Transfer Key)</name>
          <t><strong>Threat</strong>: Message tampering or forgery by network adversaries or malicious agents.</t>
          <t><strong>Mitigation</strong>:</t>
          <ul spacing="normal">
            <li>
              <t>ATK records publish cryptographic public keys for signature verification</t>
            </li>
            <li>
              <t>All ATP messages <bcp14>MUST</bcp14> be cryptographically signed</t>
            </li>
            <li>
              <t>Supported algorithms: Ed25519 (<bcp14>RECOMMENDED</bcp14>), RSA (3072+ bit for new keys), ECDSA (P-256+)</t>
            </li>
            <li>
              <t>Signature covers all critical message fields (from, to, timestamp, nonce, type, payload)</t>
            </li>
          </ul>
          <t><strong>Residual Risk</strong>: Key compromise. Domains <bcp14>MUST</bcp14> implement key rotation and maintain revocation procedures via the <tt>r</tt> flag in ATK records.</t>
        </section>
        <section anchor="message-signature-1">
          <name>Message Signature</name>
          <t><strong>Threat</strong>: Message modification in transit, replay attacks.</t>
          <t><strong>Mitigation</strong>:</t>
          <ul spacing="normal">
            <li>
              <t>Cryptographic signatures cover canonicalized message content</t>
            </li>
            <li>
              <t>Nonce prevents replay attacks</t>
            </li>
            <li>
              <t>Timestamp enables expiration checking</t>
            </li>
            <li>
              <t>Signature includes headers list to prevent header manipulation</t>
            </li>
          </ul>
          <t><strong>Residual Risk</strong>: Long-term key compromise enables retroactive forgery. Future work may introduce forward-secure signature schemes.</t>
        </section>
      </section>
      <section anchor="privacy">
        <name>Privacy</name>
        <section anchor="metadata-exposure">
          <name>Metadata Exposure</name>
          <t><strong>Threat</strong>: Traffic analysis revealing communication patterns, relationships, or sensitive business information.</t>
          <t><strong>Exposure</strong>:</t>
          <ul spacing="normal">
            <li>
              <t><tt>from</tt> and <tt>to</tt> fields are visible to ATP servers and network observers</t>
            </li>
            <li>
              <t><tt>timestamp</tt> reveals timing of communications</t>
            </li>
            <li>
              <t><tt>type</tt> indicates interaction pattern (message, request, response, event)</t>
            </li>
          </ul>
          <t><strong>Mitigation</strong>:</t>
          <ul spacing="normal">
            <li>
              <t>Payload content <bcp14>SHOULD</bcp14> be encrypted end-to-end when confidentiality is required</t>
            </li>
            <li>
              <t>Agents <bcp14>MAY</bcp14> use pseudonymous identifiers for sensitive communications</t>
            </li>
            <li>
              <t>ATP servers <bcp14>SHOULD</bcp14> minimize metadata logging</t>
            </li>
          </ul>
          <t><strong>Residual Risk</strong>: Metadata analysis remains possible. Applications with strong privacy requirements <bcp14>SHOULD</bcp14> implement additional obfuscation at the application layer.</t>
        </section>
        <section anchor="payload-confidentiality">
          <name>Payload Confidentiality</name>
          <t><strong>Threat</strong>: Unauthorized access to message content by ATP servers or network adversaries.</t>
          <t><strong>Mitigation</strong>:</t>
          <ul spacing="normal">
            <li>
              <t>TLS encryption protects payload in transit between hops</t>
            </li>
            <li>
              <t>Agents <bcp14>MAY</bcp14> encrypt payload content end-to-end using recipient's public key</t>
            </li>
            <li>
              <t>CBOR encoding supports embedded encrypted content</t>
            </li>
          </ul>
          <t><strong>Residual Risk</strong>: ATP servers must inspect messages for policy enforcement. Deployments handling sensitive data <bcp14>SHOULD</bcp14> implement server-side encryption with customer-managed keys.</t>
        </section>
      </section>
      <section anchor="denial-of-service">
        <name>Denial of Service</name>
        <section anchor="resource-exhaustion-attacks">
          <name>Resource Exhaustion Attacks</name>
          <t><strong>Threat</strong>: Adversaries flooding ATP servers with excessive messages or connections.</t>
          <t><strong>Attack Vectors</strong>:</t>
          <ul spacing="normal">
            <li>
              <t>Message flooding to exhaust server storage or bandwidth</t>
            </li>
            <li>
              <t>Connection exhaustion to deplete server connection pools</t>
            </li>
            <li>
              <t>Computational DoS via expensive cryptographic operations</t>
            </li>
          </ul>
          <t><strong>Mitigation</strong>:</t>
          <ul spacing="normal">
            <li>
              <t>Rate limiting based on sender reputation and domain</t>
            </li>
            <li>
              <t>Message size limits (default 1 MB maximum)</t>
            </li>
            <li>
              <t>Connection limits per sender IP and domain</t>
            </li>
            <li>
              <t>Exponential backoff for retry attempts</t>
            </li>
            <li>
              <t>Quota enforcement per agent and per domain</t>
            </li>
          </ul>
        </section>
        <section anchor="amplification-attacks">
          <name>Amplification Attacks</name>
          <t><strong>Threat</strong>: Attackers using ATP to amplify traffic toward victims.</t>
          <t><strong>Mitigation</strong>:</t>
          <ul spacing="normal">
            <li>
              <t>ATS validation prevents unauthorized relaying</t>
            </li>
            <li>
              <t>Response messages only sent to request initiators</t>
            </li>
            <li>
              <t>Subscription confirmation required before event delivery</t>
            </li>
            <li>
              <t>No broadcast or multicast mechanisms</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="dns-security">
        <name>DNS Security</name>
        <section anchor="dns-spoofing-and-cache-poisoning">
          <name>DNS Spoofing and Cache Poisoning</name>
          <t><strong>Threat</strong>: Attackers providing fraudulent DNS responses to redirect ATP traffic.</t>
          <t><strong>Mitigation</strong>:</t>
          <ul spacing="normal">
            <li>
              <t>ATP servers <bcp14>SHOULD</bcp14> validate DNS responses using DNSSEC <xref target="RFC4033"/></t>
            </li>
            <li>
              <t>SVCB records <bcp14>SHOULD</bcp14> be cached with appropriate TTL</t>
            </li>
            <li>
              <t>Multiple independent DNS resolvers <bcp14>SHOULD</bcp14> be consulted</t>
            </li>
          </ul>
          <t><strong>Residual Risk</strong>: DNSSEC adoption is not universal. Applications requiring high assurance <bcp14>SHOULD</bcp14> implement additional verification.</t>
        </section>
        <section anchor="dns-query-privacy">
          <name>DNS Query Privacy</name>
          <t><strong>Threat</strong>: DNS queries revealing which domains agents communicate with.</t>
          <t><strong>Mitigation</strong>:</t>
          <ul spacing="normal">
            <li>
              <t>DNS-over-HTTPS (DoH) or DNS-over-TLS (DoT) for query confidentiality</t>
            </li>
            <li>
              <t>DNS query caching to reduce query frequency</t>
            </li>
            <li>
              <t>Batch queries when discovering multiple domains</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="atp-server-security">
        <name>ATP Server Security</name>
        <section anchor="server-compromise">
          <name>Server Compromise</name>
          <t><strong>Threat</strong>: Compromised ATP server leaking or modifying messages.</t>
          <t><strong>Mitigation</strong>:</t>
          <ul spacing="normal">
            <li>
              <t>End-to-end message signatures detect modification</t>
            </li>
            <li>
              <t>Payload encryption protects content from server inspection</t>
            </li>
            <li>
              <t>Audit logging for security monitoring</t>
            </li>
            <li>
              <t>Regular security updates and hardening</t>
            </li>
          </ul>
        </section>
        <section anchor="multi-tenant-isolation">
          <name>Multi-tenant Isolation</name>
          <t><strong>Threat</strong>: One tenant's agents accessing or interfering with another tenant's agents.</t>
          <t><strong>Mitigation</strong>:</t>
          <ul spacing="normal">
            <li>
              <t>Strict domain-based access control</t>
            </li>
            <li>
              <t>Per-tenant quota enforcement</t>
            </li>
            <li>
              <t>Isolated processing contexts</t>
            </li>
            <li>
              <t>ATS/ATK validation per message</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="security-best-practices">
        <name>Security Best Practices</name>
        <t>Deployments <bcp14>SHOULD</bcp14> implement the following security practices:</t>
        <ol spacing="normal" type="1"><li>
            <t><strong>DNSSEC</strong>: Sign all DNS zones containing ATS and ATK records</t>
          </li>
          <li>
            <t><strong>Key Rotation</strong>: Rotate ATK keys every 90 days minimum</t>
          </li>
          <li>
            <t><strong>Monitoring</strong>: Log and alert on ATS/ATK validation failures</t>
          </li>
          <li>
            <t><strong>Certificate Management</strong>: Monitor certificate expiration and implement automated renewal</t>
          </li>
          <li>
            <t><strong>Incident Response</strong>: Maintain procedures for key revocation and emergency policy updates</t>
          </li>
          <li>
            <t><strong>Defense in Depth</strong>: Implement multiple layers of security controls</t>
          </li>
        </ol>
      </section>
      <section anchor="known-limitations">
        <name>Known Limitations</name>
        <ol spacing="normal" type="1"><li>
            <t><strong>Metadata Visibility</strong>: ATP does not hide communication metadata from ATP servers</t>
          </li>
          <li>
            <t><strong>DNS Trust</strong>: DNS security depends on DNSSEC adoption</t>
          </li>
          <li>
            <t><strong>Server Trust</strong>: ATP servers can observe unencrypted payload content</t>
          </li>
          <li>
            <t><strong>Key Management</strong>: Compromised keys enable message forgery until revocation</t>
          </li>
        </ol>
        <t>Future revisions of ATP may address these limitations through techniques such as onion routing, encrypted DNS, or decentralized trust models.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="application-layer-protocol-negotiation-alpn-protocol-identifier">
        <name>Application-Layer Protocol Negotiation (ALPN) Protocol Identifier</name>
        <t>IANA is requested to register the following ALPN protocol identifier:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Protocol</strong>: <tt>atp/1</tt></t>
          </li>
          <li>
            <t><strong>Identification Sequence</strong>: 0x61 0x74 0x70 0x2f 0x31 (<tt>atp/1</tt>)</t>
          </li>
          <li>
            <t><strong>Specification</strong>: This document</t>
          </li>
        </ul>
      </section>
      <section anchor="well-known-uri">
        <name>Well-Known URI</name>
        <t>IANA is requested to register the following well-known URI:</t>
        <ul spacing="normal">
          <li>
            <t><strong>URI Suffix</strong>: <tt>atp</tt></t>
          </li>
          <li>
            <t><strong>Change Controller</strong>: IETF</t>
          </li>
          <li>
            <t><strong>Specification</strong>: This document</t>
          </li>
        </ul>
      </section>
      <section anchor="media-types">
        <name>Media Types</name>
        <t>IANA is requested to register the following media types:</t>
        <ul spacing="normal">
          <li>
            <t><strong>application/atp+json</strong>: JSON-encoded ATP messages as defined in Section 6</t>
          </li>
          <li>
            <t><strong>application/atp+cbor</strong>: CBOR-encoded ATP messages as defined in Section 6</t>
          </li>
        </ul>
      </section>
      <section anchor="service-name-and-transport-protocol-port-number-registry">
        <name>Service Name and Transport Protocol Port Number Registry</name>
        <t>IANA is requested to register the following service:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Service Name</strong>: <tt>atp</tt></t>
          </li>
          <li>
            <t><strong>Port Number</strong>: 7443</t>
          </li>
          <li>
            <t><strong>Transport Protocol</strong>: TCP, UDP</t>
          </li>
          <li>
            <t><strong>Description</strong>: Agent Transfer Protocol</t>
          </li>
          <li>
            <t><strong>Reference</strong>: This document</t>
          </li>
        </ul>
      </section>
      <section anchor="svcb-svcparamkey-registrations">
        <name>SVCB SvcParamKey Registrations</name>
        <t>IANA is requested to register the following entries in the "Service Binding (SVCB) SvcParamKey" registry defined in <xref target="RFC9460"/>:</t>
        <table>
          <thead>
            <tr>
              <th align="left">SvcParamKey</th>
              <th align="left">Meaning</th>
              <th align="left">Format Reference</th>
              <th align="left">Change Controller</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">atp-capabilities</td>
              <td align="left">Comma-separated list of ATP protocol capabilities</td>
              <td align="left">Section 2.3 of this document</td>
              <td align="left">IETF</td>
            </tr>
            <tr>
              <td align="left">atp-auth</td>
              <td align="left">Comma-separated list of supported authentication mechanisms</td>
              <td align="left">Section 2.1 of this document</td>
              <td align="left">IETF</td>
            </tr>
          </tbody>
        </table>
        <section anchor="atp-capabilities-values">
          <name>ATP Capabilities Values</name>
          <t>The initial registered values for the <tt>atp-capabilities</tt> parameter are:</t>
          <table>
            <thead>
              <tr>
                <th align="left">Value</th>
                <th align="left">Description</th>
                <th align="left">Reference</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">message</td>
                <td align="left">Asynchronous messaging</td>
                <td align="left">Section 7.1</td>
              </tr>
              <tr>
                <td align="left">request</td>
                <td align="left">Synchronous request/response</td>
                <td align="left">Section 7.2</td>
              </tr>
              <tr>
                <td align="left">event</td>
                <td align="left">Event/subscription streaming</td>
                <td align="left">Section 7.3</td>
              </tr>
            </tbody>
          </table>
          <t>Additional values may be registered via Specification Required <xref target="RFC8126"/> policy.</t>
        </section>
        <section anchor="atp-auth-values">
          <name>ATP Auth Values</name>
          <t>The initial registered values for the <tt>atp-auth</tt> parameter are:</t>
          <table>
            <thead>
              <tr>
                <th align="left">Value</th>
                <th align="left">Description</th>
                <th align="left">Reference</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">ats</td>
                <td align="left">ATS policy validation</td>
                <td align="left">Section 4.2</td>
              </tr>
              <tr>
                <td align="left">atk</td>
                <td align="left">ATK signature verification</td>
                <td align="left">Section 4.3</td>
              </tr>
              <tr>
                <td align="left">mtls</td>
                <td align="left">Mutual TLS authentication</td>
                <td align="left">Section 4.1</td>
              </tr>
            </tbody>
          </table>
        </section>
      </section>
      <section anchor="atp-message-type-registry">
        <name>ATP Message Type Registry</name>
        <t>IANA is requested to create the "ATP Message Types" registry with the following initial values:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Type</th>
              <th align="left">Description</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">message</td>
              <td align="left">Asynchronous message</td>
              <td align="left">Section 6.2.1</td>
            </tr>
            <tr>
              <td align="left">request</td>
              <td align="left">Synchronous request</td>
              <td align="left">Section 6.2.2</td>
            </tr>
            <tr>
              <td align="left">response</td>
              <td align="left">Synchronous response</td>
              <td align="left">Section 6.2.2</td>
            </tr>
            <tr>
              <td align="left">event</td>
              <td align="left">Event notification</td>
              <td align="left">Section 6.2.3</td>
            </tr>
          </tbody>
        </table>
        <t>New message types are registered via Specification Required <xref target="RFC8126"/> policy.</t>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC5890">
          <front>
            <title>Internationalized Domain Names for Applications (IDNA): Definitions and Document Framework</title>
            <author fullname="J. Klensin" initials="J." surname="Klensin"/>
            <date month="August" year="2010"/>
            <abstract>
              <t>This document is one of a collection that, together, describe the protocol and usage context for a revision of Internationalized Domain Names for Applications (IDNA), superseding the earlier version. It describes the document collection and provides definitions and other material that are common to the set. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5890"/>
          <seriesInfo name="DOI" value="10.17487/RFC5890"/>
        </reference>
        <reference anchor="RFC8259">
          <front>
            <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
            <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
            <date month="December" year="2017"/>
            <abstract>
              <t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data.</t>
              <t>This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="90"/>
          <seriesInfo name="RFC" value="8259"/>
          <seriesInfo name="DOI" value="10.17487/RFC8259"/>
        </reference>
        <reference anchor="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC8785">
          <front>
            <title>JSON Canonicalization Scheme (JCS)</title>
            <author fullname="A. Rundgren" initials="A." surname="Rundgren"/>
            <author fullname="B. Jordan" initials="B." surname="Jordan"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <date month="June" year="2020"/>
            <abstract>
              <t>Cryptographic operations like hashing and signing need the data to be expressed in an invariant format so that the operations are reliably repeatable. One way to address this is to create a canonical representation of the data. Canonicalization also permits data to be exchanged in its original form on the "wire" while cryptographic operations performed on the canonicalized counterpart of the data in the producer and consumer endpoints generate consistent results.</t>
              <t>This document describes the JSON Canonicalization Scheme (JCS). This specification defines how to create a canonical representation of JSON data by building on the strict serialization methods for JSON primitives defined by ECMAScript, constraining JSON data to the Internet JSON (I-JSON) subset, and by using deterministic property sorting.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8785"/>
          <seriesInfo name="DOI" value="10.17487/RFC8785"/>
        </reference>
        <reference anchor="RFC8949">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="December" year="2020"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="94"/>
          <seriesInfo name="RFC" value="8949"/>
          <seriesInfo name="DOI" value="10.17487/RFC8949"/>
        </reference>
        <reference anchor="RFC9000">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol. QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances. Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
        <reference anchor="RFC9110">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
              <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </reference>
        <reference anchor="RFC9460">
          <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="RFC2119">
          <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="RFC8174">
          <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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC1034">
          <front>
            <title>Domain names - concepts and facilities</title>
            <author fullname="P. Mockapetris" initials="P." surname="Mockapetris"/>
            <date month="November" year="1987"/>
            <abstract>
              <t>This RFC is the revised basic definition of The Domain Name System. It obsoletes RFC-882. This memo describes the domain style names and their used for host address look up and electronic mail forwarding. It discusses the clients and servers in the domain name system and the protocol used between them.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="13"/>
          <seriesInfo name="RFC" value="1034"/>
          <seriesInfo name="DOI" value="10.17487/RFC1034"/>
        </reference>
        <reference anchor="RFC1035">
          <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="RFC4033">
          <front>
            <title>DNS Security Introduction and Requirements</title>
            <author fullname="R. Arends" initials="R." surname="Arends"/>
            <author fullname="R. Austein" initials="R." surname="Austein"/>
            <author fullname="M. Larson" initials="M." surname="Larson"/>
            <author fullname="D. Massey" initials="D." surname="Massey"/>
            <author fullname="S. Rose" initials="S." surname="Rose"/>
            <date month="March" year="2005"/>
            <abstract>
              <t>The Domain Name System Security Extensions (DNSSEC) add data origin authentication and data integrity to the Domain Name System. This document introduces these extensions and describes their capabilities and limitations. This document also discusses the services that the DNS security extensions do and do not provide. Last, this document describes the interrelationships between the documents that collectively describe DNSSEC. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4033"/>
          <seriesInfo name="DOI" value="10.17487/RFC4033"/>
        </reference>
        <reference anchor="RFC6698">
          <front>
            <title>The DNS-Based Authentication of Named Entities (DANE) Transport Layer Security (TLS) Protocol: TLSA</title>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <author fullname="J. Schlyter" initials="J." surname="Schlyter"/>
            <date month="August" year="2012"/>
            <abstract>
              <t>Encrypted communication on the Internet often uses Transport Layer Security (TLS), which depends on third parties to certify the keys used. This document improves on that situation by enabling the administrators of domain names to specify the keys used in that domain's TLS servers. This requires matching improvements in TLS client software, but no change in TLS server software. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6698"/>
          <seriesInfo name="DOI" value="10.17487/RFC6698"/>
        </reference>
        <reference anchor="RFC8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <date month="June" year="2017"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
        <reference anchor="RFC8305">
          <front>
            <title>Happy Eyeballs Version 2: Better Connectivity Using Concurrency</title>
            <author fullname="D. Schinazi" initials="D." surname="Schinazi"/>
            <author fullname="T. Pauly" initials="T." surname="Pauly"/>
            <date month="December" year="2017"/>
            <abstract>
              <t>Many communication protocols operating over the modern Internet use hostnames. These often resolve to multiple IP addresses, each of which may have different performance and connectivity characteristics. Since specific addresses or address families (IPv4 or IPv6) may be blocked, broken, or sub-optimal on a network, clients that attempt multiple connections in parallel have a chance of establishing a connection more quickly. This document specifies requirements for algorithms that reduce this user-visible delay and provides an example algorithm, referred to as "Happy Eyeballs". This document obsoletes the original algorithm description in RFC 6555.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8305"/>
          <seriesInfo name="DOI" value="10.17487/RFC8305"/>
        </reference>
      </references>
    </references>
    <?line 1560?>

<section anchor="example-message-flows">
      <name>Example Message Flows</name>
      <section anchor="sending-an-atp-message">
        <name>Sending an ATP Message</name>
        <figure anchor="fig-sending-message">
          <name>Sending an ATP Message: DNS discovery, TLS handshake, and message submission flow</name>
          <artwork type="ascii-art"><![CDATA[
Client                      DNS                   Server
  |                          |                      |
  |---- SVCB Query --------->|                      |
  |                          |                      |
  |<----- SVCB Response -----|                      |
  |     _atp.example.com     |                      |
  |    agent.example.com:7443|                      |
  |                          |                      |
  |---- A/AAAA Query ------->|                      |
  |                          |                      |
  |<------- IP Address ------|                      |
  |         192.0.2.1        |                      |
  |                          |                      |
  |==========================|======================|
  |                                                 |
  |<-------------------TLS Handshake--------------->|
  |                                                 |
  |--- POST /.well-known/atp/v1/message ----------->|
  |   Content-Type: application/atp+json            |
  |   {                                             |
  |     "from": "a1@sender.com",                    |
  |     "to": "a2@example.com",                     |
  |     "type": "message",                          |
  |     "payload": {...},                           |
  |     "signature": {...}                          |
  |   }                                             |
  |                                                 |
  |<---------------------- 202 Accepted ------------|
  |                                                 |
]]></artwork>
        </figure>
      </section>
      <section anchor="requestresponse-flow">
        <name>Request/Response Flow</name>
        <t>The request/response flow demonstrates synchronous RPC-style interaction between agents. The Client Agent connects to its local ATP Server (Server A), which enforces policy and transfers the request to the destination ATP Server (Server B), which delivers it to the Service Agent. The response follows the reverse path.</t>
        <figure anchor="fig-request-response-flow">
          <name>Request/Response Flow: DNS discovery, TLS handshake, request submission, server transfer, and response return</name>
          <artwork type="ascii-art"><![CDATA[
Client                  DNS                  ATP           ATP        Service
 Agent                   |                 Server A      Server B      Agent
  |                      |                    |             |             |
  |-- SVCB Query --------|                    |             |             |
  |                      |                    |             |             |
  |<- SVCB Response -----|                    |             |             |
  |   _atp.service.org   |                    |             |             |
  |  service.org:7443    |                    |             |             |
  |                      |                    |             |             |
  |-- A/AAAA Query ------>                    |             |             |
  |                      |                    |             |             |
  |<- IP Address ---------                    |             |             |
  |    198.51.100.1      |                    |             |             |
  |                      |                    |             |             |
  |======================|====================|=============|=============|
  |                                           |             |             |
  |<-------------TLS Handshake--------------->|             |             |
  |                                           |             |             |
  |-- POST /.well-known/atp/v1/message ------>|             |             |
  |   Content-Type: application/atp+json      |             |             |
  |   {                                       |             |             |
  |     "from": "client@example.com",         |             |             |
  |     "to": "service@service.org",          |             |             |
  |     "timestamp": 1710000000,              |             |             |
  |     "nonce": "req-67890-fghij",           |             |             |
  |     "type": "request",                    |             |             |
  |     "payload": {                          |             |             |
  |       "action": "get_weather",            |             |             |
  |       "params": {"location": "New York"}  |             |             |
  |     },                                    |             |             |
  |     "signature": {...}                    |             |             |
  |   }                                       |             |             |
  |                                           |             |             |
  |                                           |-[Transfer]->|             |
  |                                           |             |             |
  |                                           |             |-[Request]-->|
  |                                           |             |             |
  |                                           |             |<-[Response]-|
  |                                           |<-[Transfer]-|             |
  |                                           |             |             |
  |<- 202 Accept/Response --------------------|             |             |
  |   {                                       |             |             |
  |     "from": "service@service.org",        |             |             |
  |     "to": "client@example.com",           |             |             |
  |     "timestamp": 1710000002,              |             |             |
  |     "nonce": "resp-67890-klmno",          |             |             |
  |     "type": "response",                   |             |             |
  |     "in_reply_to": "req-67890-fghij",     |             |             |
  |     "payload": {                          |             |             |
  |       "status": "success",                |             |             |
  |       "data": {"temperature": 22}         |             |             |
  |     },                                    |             |             |
  |     "signature": {...}                    |             |             |
  |   }                                       |             |             |
  |                                           |             |             |
]]></artwork>
        </figure>
      </section>
      <section anchor="event-subscription-flow">
        <name>Event Subscription Flow</name>
        <t>The event subscription flow demonstrates the publish-subscribe pattern with streaming notifications. The flow has two phases:</t>
        <t><strong>Phase 1 - Subscribe</strong>: The Subscriber sends a subscription request to its local ATP Server (Server A), which transfers it to the Publisher's ATP Server (Server B), which delivers it to the Publisher.</t>
        <t><strong>Phase 2 - Event Notification</strong>: When an event occurs, the Publisher sends the event to Server B, which transfers it to Server A, which delivers the notification to the Subscriber.</t>
        <figure anchor="fig-event-subscription-flow">
          <name>Event Subscription Flow: Two-phase publish-subscribe with Subscribe Phase and Event Notification Phase</name>
          <artwork type="ascii-art"><![CDATA[
Subscriber              DNS                  ATP           ATP      Publisher
 Agent                   |                 Server A      Server B      Agent
  |                      |                    |             |             |
  |-- SVCB Query --------|                    |             |             |
  |                      |                    |             |             |
  |<- SVCB Response -----|                    |             |             |
  |   _atp.publisher.io  |                    |             |             |
  |  publisher.io:7443   |                    |             |             |
  |                      |                    |             |             |
  |-- A/AAAA Query ------>                    |             |             |
  |                      |                    |             |             |
  |<- IP Address ---------                    |             |             |
  |    203.0.113.1       |                    |             |             |
  |                      |                    |             |             |
  |======================|====================|=============|=============|
  |<-------------TLS Handshake--------------->|             |             |
  |============================ Subscribe Phase ==========================|
  |                                           |             |             |
  |-- POST /.well-known/atp/v1/message ------>|             |             |
  |   Content-Type: application/atp+json      |             |             |
  |   {                                       |             |             |
  |     "from": "subscriber@example.com",     |             |             |
  |     "to": "publisher@publisher.io",       |             |             |
  |     "timestamp": 1710000000,              |             |             |
  |     "nonce": "sub-11111-pqrst",           |             |             |
  |     "type": "request",                    |             |             |
  |     "payload": {                          |             |             |
  |       "action": "subscribe",              |             |             |
  |       "event_types": ["price_update"],    |             |             |
  |       "subscription_id": "sub-12345"      |             |             |
  |     },                                    |             |             |
  |     "signature": {...}                    |             |             |
  |   }                                       |             |             |
  |                                           |-[Transfer]->|             |
  |                                           |             |-[Subscribe]>|
  |<-- 202 Accepted --------------------------|             |             |
  |                                           |             |             |
  |======================== Event Notification Phase =====================|
  |                                           |             |             |
  |                                           |             |<---[Event]--|
  |                                           |<-[Transfer]-|             |
  |<--[Event Delivery]------------------------|             |             |
  |   {                                       |             |             |
  |     "from": "publisher@publisher.io",     |             |             |
  |     "to": "subscriber@example.com",       |             |             |
  |     "timestamp": 1710000010,              |             |             |
  |     "nonce": "evt-22222-uvwxy",           |             |             |
  |     "type": "event",                      |             |             |
  |     "payload": {                          |             |             |
  |       "event_type": "price_update",       |             |             |
  |       "subscription_id": "sub-12345",     |             |             |
  |       "data": {"symbol": "AAPL",          |             |             |
  |              "price": 150}                |             |             |
  |     },                                    |             |             |
  |     "signature": {...}                    |             |             |
  |   }                                       |             |             |
]]></artwork>
        </figure>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>This protocol draws inspiration from multiple existing protocols and standards:</t>
      <ul spacing="normal">
        <li>
          <t>DNS SVCB <xref target="RFC9460"/> - for service discovery</t>
        </li>
        <li>
          <t>HTTP/2 <xref target="RFC9110"/> - for multiplexing</t>
        </li>
        <li>
          <t>QUIC <xref target="RFC9000"/> - for low-latency transport</t>
        </li>
        <li>
          <t>TLS <xref target="RFC8446"/> - for secure transport</t>
        </li>
      </ul>
    </section>
  </back>
  <!-- ##markdown-source:
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
z6DnyN28tciQDCJvz7GCjOcteKz6GnbO2NhE5wzmPLv2XNHd4kPOE+Fs8Tku
PcUFZ7j0BBvOLywL6gwFEWGoHcGgcnbbcgRheSmNXi4queQ22mJIKZOC8CGw
h7AzqFeoXDOv0QbfG9peN+3lTZSOEw4zVq+2LRwk3pCOQg9NKt7jQdCIweIb
9VsFM7vYd8FRVB9716j5HrnX4CGWTvBuUPMVCiptNqWNvVdem9p1s230wumN
86MdquPQXcOUhV4GUrItfsRFw31CnTOy831OQGazqmM4nzBN4oifumCzIC1C
4w9KX/UfFrNaCxLmKCQ0P25J+BizL6zaM2ffnD5IWn3YWE86djSjuqZnN45V
Lftx41j4oVYPZAe5w0+/LlpV7z7VK/F28bPtIYy3D6hdJNbO7fYQf0yFk9uM
9WEzfLrwZ8FXN4y1aArubrg/iL1NVYzKd998xFi46TdV8gqaxrq5uldtLPj/
r3efIX1ycxWztYzTId7QqjmL8U1j1RIV32qGTibFbrf7fkkjt5WXkBDb3dxq
yStLx7pzqyY4RHhxq655pPVDx3KDUMVHsmOoGUegNlMa1t6ZwJU2MTljvSbs
JWlMB5gTgjOeYyQgBpo2JTFC4qalT6s5izCAcBRNOEci6vtvTKVciU9oyDMi
Ru3ixgBLGw4pmnmTUGRpvhAOz8OUUGLtXRa62RCd6uXlqGb1kMh+HhIbcjaP
RYmRaj+N1B9n2PiXOj64eRJ9SKo98VMo+hH7mnJpEdq/+WHlL8anTXzHh/X1
Kef15PYcym3mRZyLKLMwde0HzysInF6Ik/nwNTY1+ohzbOB9vvmbz+tJA4+E
OPlD57Xx+FH3wUZ3Y31duae//d7fgc/6bdlfd6RGt9j723NkN/X1Ked1exbu
VvO6LWd3m75uy+/dbr+Wlhy4a19+eQIHC7n83m37as6l/kFrXFz84O591VK1
Bw0/t+zL4W+berlLX4vLM3xQX7aaQ3MZh/e37Wsp037Hed2Os79NX7fl9/+q
OOcufblpb6oY6G85r+osbZLIO0vUn3FeT9ykjXfu64m7+Z9575+4ouF9n9Os
/PwNacdSjH8n2rGUCn0c7dj8aNpRrd5y93nVSr0E9Z9b9nVTgZi79PVp6VBD
FZoP7kuLXtQq1rxf1HpBX3+nQ7fra1l62Q7nul+QYxa1PDcpj1SJYhVHmkvb
aFvakv9UeuXMlaJZYtON55hudUts4qmnN/O0S07OmHrKRBNyJOZX10Ykeibq
cRwW1URplAcs2Ag6NgVTQ6Y0zk1ztyxpTbm73GxgS/Ok3U4fZbOl2aVswlLq
+c4+ItOZTmTRInSVtXneKjdZpfaH3XLv5y66MbOYv+vGPqCvz6EbMwWeunH2
ofMKArcXVY797ffr/xTd2Ob6Vne9u7GxZQyLf/u9/5S6sU+pz2qeF/9Y7Mcp
KIPFr/5dN/YBa6RPNxYFvEtf1eKBLh4yDPLHyDcfqxurFSa8e1//O+jGnNKJ
H9jX0lqLP7Xv1NfSwn93mdff5Rvz/ufTjblJpL9RfL/Ydn93/cwHzqve10K6
sSiHcTMB+V9KZ+dkL//kOrsn2rnJPvrTx5zjZ6JDS6nHnejQUor2UXRo42Pp
UK3M6t37qhRlDRp//iZ0aFkp2Lv2tbxo7N36Mnq2alXZu69Ru3Tq0NbIwN9p
2vIiAZ6mbYHWayc4vc46pINqUGmRKqsqJKBmbREBIBUb0DG3KF2BU+Sav9Ho
6cp5mPB7FNdkYl1GeXhdUNS3BtFSiKgJVI3exVw+T1tIvRHJllyY1JqkMXCi
kYKOBIyzu5RRK8LrGOl/f1Ne3tiwL+uo7zis/Ps3+5KU4THgJvMWbF8HY68x
BNdkTZYkPG4Gy46NWI+cF/8nfbUDkW0+AQA=

-->

</rfc>
