<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.34 (Ruby 4.0.1) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>

<?rfc tocindent="yes"?>
<?rfc strict="yes"?>
<?rfc compact="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc docmapping="yes"?>

<rfc ipr="trust200902" docName="draft-li-atp-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="ATP">Agent Transfer Protocol (ATP)</title>

    <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>

    <date year="2026" month="March" day="22"/>

    <area>General</area>
    <workgroup>intarea</workgroup>
    <keyword>agent communication</keyword> <keyword>autonomous agents</keyword> <keyword>messaging protocol</keyword> <keyword>ATP</keyword> <keyword>Internet of Agents</keyword>

    <abstract>


<?line 70?>

<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 78?>

<section anchor="introduction"><name>Introduction</name>

<t>The evolution of the Internet has always centered around the theme of "connection":</t>

<t><list style="symbols">
  <t><strong>Person-to-Person</strong>: Email and instant messaging connect people with people</t>
  <t><strong>Person-to-Service</strong>: Web pages and mobile apps connect people with services</t>
  <t><strong>Thing-to-Thing</strong>: IoT devices connect the physical world</t>
</list></t>

<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>

<t><list style="symbols">
  <t>Households deploy intelligent assistants to act on behalf of users for daily tasks</t>
  <t>Enterprises deploy customer service bots and operations agents to automate business processes</t>
  <t>Cloud providers offer agent-based capabilities including AI services and IoT coordination</t>
</list></t>

<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>

<t><list style="symbols">
  <t><strong>Household Agents (Small)</strong>: A household domain (e.g., <spanx style="verb">family.example.com</spanx>) hosts a few personal agent identities:
  <list style="symbols">
      <t><spanx style="verb">parent1@family.example.com</spanx> - Agent for first parent</t>
      <t><spanx style="verb">parent2@family.example.com</spanx> - Agent for second parent</t>
      <t><spanx style="verb">home@family.example.com</spanx> - Home automation coordination agent</t>
    </list></t>
  <t><strong>Service Agents (Medium)</strong>: Service providers operate multiple specialized agents:
  <list style="symbols">
      <t><spanx style="verb">service-bot@company.com</spanx> - General customer service agent</t>
      <t><spanx style="verb">shop-bot@retailer.com</spanx> - Shopping assistant agent</t>
      <t><spanx style="verb">support@tech-company.com</spanx> - Technical support agent</t>
    </list></t>
  <t><strong>Enterprise Agents (Large)</strong>: Organizations deploy agents for various business functions:
  <list style="symbols">
      <t><spanx style="verb">hr@enterprise.com</spanx> - Human resources assistant</t>
      <t><spanx style="verb">dev@enterprise.com</spanx> - Development workflow agent</t>
      <t><spanx style="verb">ops@enterprise.com</spanx> - IT operations agent</t>
    </list></t>
  <t><strong>Cloud Provider Agents (Huge)</strong>: Global platforms serve diverse user bases:
  <list style="symbols">
      <t><spanx style="verb">user-us@cloud-provider.com</spanx> - North American user services</t>
      <t><spanx style="verb">user-eu@cloud-provider.com</spanx> - European user services</t>
      <t><spanx style="verb">user-cn@cloud-provider.com</spanx> - Asian user services</t>
      <t><spanx style="verb">ai-service@cloud-provider.com</spanx> - AI/ML service endpoints</t>
      <t><spanx style="verb">iot@cloud-provider.com</spanx> - IoT device coordination</t>
    </list></t>
</list></t>

</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>

<texttable title="Requirements for Internet of Agents and Limitations of Existing Protocols" anchor="_table-requirements">
      <ttcol align='left'>Requirement</ttcol>
      <ttcol align='left'>Description</ttcol>
      <ttcol align='left'>Limitations of Existing Protocols</ttcol>
      <c><strong>Multi-tenant Identity</strong></c>
      <c>Each domain hosts multiple agent identities (from 2-5 in households to millions on cloud platforms)</c>
      <c>Email supports multi-user but lacks identity management for automated scenarios</c>
      <c><strong>Structured Data Exchange</strong></c>
      <c>JSON/CBOR payloads for automated processing</c>
      <c>HTTP can transport JSON but lacks native agent semantics</c>
      <c><strong>Strong Security Guarantees</strong></c>
      <c>Mandatory authentication and integrity verification for automated operations</c>
      <c>TLS only protects transport; application-layer authentication depends on implementation</c>
      <c><strong>Multiple Interaction Patterns</strong></c>
      <c>Asynchronous messaging, synchronous request/response, event-driven streaming</c>
      <c>Typically requires combining multiple protocols (e.g., HTTP + WebSocket)</c>
      <c><strong>Scalable Discovery</strong></c>
      <c>Cross-internet agent location and authentication</c>
      <c>Relies on centralized directory services or additional infrastructure</c>
      <c><strong>Context Awareness</strong></c>
      <c>Stateful multi-turn dialogues and complex workflow coordination</c>
      <c>No native support; must be implemented at application layer</c>
      <c><strong>Variable Scale Support</strong></c>
      <c>Efficient handling from household to cloud platform scenarios</c>
      <c>Typically optimized for specific scales, difficult to accommodate all</c>
</texttable>

<t><strong>Therefore, agents need their own communication protocol.</strong></t>

<t>This vision requires a communication infrastructure that supports:</t>

<t><list style="numbers" type="1">
  <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>
  <t><strong>Structured Data Exchange</strong>: Agents communicate using structured payloads (JSON, CBOR) rather than unstructured text, enabling automated processing and decision-making.</t>
  <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>
  <t><strong>Multiple Interaction Patterns</strong>: Beyond simple messaging, agents need:
  <list style="symbols">
      <t>Synchronous request/response for RPC-style interactions</t>
      <t>Event-driven streaming for real-time updates</t>
      <t>Asynchronous messaging for notifications and broadcasts</t>
    </list></t>
  <t><strong>Scalable Discovery</strong>: Agents must locate and authenticate each other across the global internet using existing, proven infrastructure.</t>
  <t><strong>Context Awareness</strong>: Agents maintain state across interactions, support multi-turn dialogues, and coordinate complex workflows involving multiple parties.</t>
  <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>
</list></t>

<t>ATP addresses these requirements by providing a modern, secure, and extensible protocol built upon existing internet infrastructure while introducing agent-specific semantics.</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 title="Internet of Agents (IoA) Architecture: Four deployment scenarios showing Household (Small), Service (Medium), Enterprise (Large), and Cloud Provider (Huge) ATP server categories" anchor="fig-ioa-architecture"><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>

<t><list style="symbols">
  <t><strong>ATP Servers</strong> act as gateways for agents, handling:
  <list style="symbols">
      <t>Resource allocation and scheduling for local agents</t>
      <t>Outbound connection management and routing</t>
      <t>Inbound traffic filtering and security enforcement</t>
      <t>Policy enforcement (ATS/ATK validation)</t>
      <t>Message queuing and delivery guarantees</t>
    </list></t>
  <t><strong>Agents</strong> operate within their ATP Server's domain:
  <list style="symbols">
      <t>All outbound communication goes through their local ATP Server</t>
      <t>All inbound communication arrives via their ATP Server</t>
      <t>Agents benefit from server-side security and filtering</t>
      <t>Multiple agents share server resources efficiently</t>
    </list></t>
  <t><strong>Scale Considerations</strong>:
  <list style="symbols">
      <t><strong>Household (Small)</strong>: 2-10 agents, minimal resource requirements</t>
      <t><strong>Service (Medium)</strong>: 10-100 agents, moderate traffic handling</t>
      <t><strong>Enterprise (Large)</strong>: 100-1000+ agents, high availability requirements</t>
      <t><strong>Cloud Provider (Huge)</strong>: Millions of users, global distribution, multi-region deployment</t>
    </list></t>
</list></t>

<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>

<t><list style="numbers" type="1">
  <t><strong>Security-first</strong>: Authentication and integrity verification are mandatory, not optional.</t>
  <t><strong>Structured semantics</strong>: Native support for multiple interaction patterns (message, request/response, event/subscription).</t>
  <t><strong>DNS-based discovery</strong>: Leverage existing DNS infrastructure for agent discovery and service location.</t>
  <t><strong>Transport agnostic</strong>: Support multiple transport protocols (HTTPS, QUIC) for flexibility and performance.</t>
  <t><strong>Backward compatible</strong>: Coexist with existing internet infrastructure and standards.</t>
  <t><strong>Extensible</strong>: Support capability discovery and protocol negotiation for future evolution.</t>
  <t><strong>Multi-tenant support</strong>: Efficiently handle multiple agents per domain, similar to multi-user email systems.</t>
  <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>
</list></t>

</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>

<t><list style="symbols">
  <t><strong>Agent</strong>: An autonomous software entity capable of communication, decision-making, and task execution.</t>
  <t><strong>Agent ID</strong>: A unique identifier in the format <spanx style="verb">local@domain</spanx> that identifies a specific agent.</t>
  <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>
  <t><strong>ATP Client</strong>: An agent or application initiating ATP communication.</t>
  <t><strong>ATP Transfer</strong>: The process of transferring messages between ATP servers across the Internet.</t>
  <t><strong>ATS</strong>: Agent Transfer Sender policy - a DNS record defining authorized senders for a domain.</t>
  <t><strong>ATK</strong>: Agent Transfer Key - a DNS record publishing cryptographic keys for message signature verification.</t>
  <t><strong>SVCB</strong>: Service Binding - DNS record type defined in <xref target="RFC9460"/> for service discovery.</t>
  <t><strong>ALPN</strong>: Application-Layer Protocol Negotiation - TLS extension for protocol negotiation.</t>
</list></t>

</section>
<section anchor="protocol-stack-overview"><name>Protocol Stack Overview</name>

<figure title="ATP Protocol Stack: Four-layer architecture with Discovery (DNS SVCB), Transport (HTTPS/QUIC), Message Format (JSON/CBOR), and Application Semantics" anchor="fig-protocol-stack"><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 <spanx style="verb">_atp.&lt;domain&gt;</spanx> 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>

<t><list style="symbols">
  <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>
  <t><strong>QUIC</strong>: Optional transport protocol <xref target="RFC9000"/> for low-latency scenarios, providing 0-RTT handshakes and connection migration capabilities.</t>
</list></t>

<t><strong>Message Format Layer</strong>: Defines the structure of ATP messages using structured data encodings:</t>

<t><list style="symbols">
  <t><strong>JSON</strong>: Recommended encoding <xref target="RFC8259"/> with Content-Type <spanx style="verb">application/atp+json</spanx></t>
  <t><strong>CBOR</strong>: Optional encoding <xref target="RFC8949"/> for bandwidth-constrained environments with Content-Type <spanx style="verb">application/atp+cbor</spanx></t>
</list></t>

<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>

<t><list style="symbols">
  <t><strong>Message</strong>: Asynchronous, fire-and-forget communication</t>
  <t><strong>Request/Response</strong>: Synchronous RPC-style interactions</t>
  <t><strong>Event/Subscription</strong>: Streaming and publish-subscribe patterns</t>
</list></t>

</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>

<figure><sourcecode type="dns"><![CDATA[
_atp.<domain>
]]></sourcecode></figure>

<t>Where <spanx style="verb">&lt;domain&gt;</spanx> is the domain portion of the recipient Agent ID.</t>

</section>
<section anchor="record-format"><name>Record Format</name>

<figure><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></figure>

</section>
<section anchor="example"><name>Example</name>

<figure><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"
)
]]></sourcecode></figure>

</section>
<section anchor="parameters"><name>Parameters</name>

<t><list style="symbols">
  <t><strong>port</strong>: TCP/UDP port number for the ATP service. If not specified, the default port is 7443.</t>
  <t><strong>alpn</strong>: Application-layer protocol negotiation identifier. Supported values:
  <list style="symbols">
      <t><spanx style="verb">atp/1</spanx> - ATP version 1</t>
      <t><spanx style="verb">atp-json</spanx> - ATP with JSON payload encoding</t>
      <t><spanx style="verb">atp-cbor</spanx> - ATP with CBOR payload encoding</t>
      <t><spanx style="verb">atp+proto</spanx> - ATP with Protocol Buffers encoding</t>
    </list></t>
  <t><strong>ipv4hint</strong> (optional): Comma-separated list of IPv4 addresses for faster connection establishment.</t>
  <t><strong>ipv6hint</strong> (optional): Comma-separated list of IPv6 addresses for faster connection establishment.</t>
  <t><strong>atp-capabilities</strong> (optional): Comma-separated list of supported protocol capabilities.</t>
</list></t>

</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>

<t><list style="numbers" type="1">
  <t><strong>Extract Domain</strong>: Parse the recipient Agent ID to extract the domain portion.</t>
  <t><strong>DNS SVCB Query</strong>: Query the SVCB record for <spanx style="verb">_atp.&lt;domain&gt;</spanx>.</t>
  <t><strong>Fallback Query</strong>: If the query fails, attempt <spanx style="verb">_agent.&lt;domain&gt;</spanx> for backward compatibility.</t>
  <t><strong>Address Resolution</strong>: Resolve the target hostname to IP addresses using A/AAAA records.</t>
  <t><strong>Connection Establishment</strong>: Establish a secure connection to the resolved endpoint using the specified port.</t>
</list></t>

</section>
<section anchor="capability-discovery"><name>Capability Discovery</name>

<t>Agents can advertise their capabilities to enable protocol negotiation and feature discovery.</t>

<section anchor="dns-based-capability-advertisement"><name>DNS-Based Capability Advertisement</name>

<t>Capabilities can be included in the SVCB record using the <spanx style="verb">atp-capabilities</spanx> parameter:</t>

<figure><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></figure>

</section>
<section anchor="http-based-capability-query"><name>HTTP-Based Capability Query</name>

<t>Agents can query capabilities via an HTTP endpoint:</t>

<figure><sourcecode type="http"><![CDATA[
GET /.well-known/atp/v1/capabilities
Host: agent.example.com
Accept: application/json
]]></sourcecode></figure>

<t><strong>Response</strong>:</t>

<figure><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
  }
}
]]></sourcecode></figure>

</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>

<figure><sourcecode type="abnf"><![CDATA[
agent-id = local-part "@" domain
]]></sourcecode></figure>

<t>The <spanx style="verb">local-part</spanx> identifies a specific agent within the domain, and the <spanx style="verb">domain</spanx> identifies the ATP server responsible for routing messages to that agent.</t>

<section anchor="examples"><name>Examples</name>

<t><list style="symbols">
  <t><spanx style="verb">a1@example.com</spanx> - Individual agent</t>
  <t><spanx style="verb">chatbot@service.org</spanx> - Service agent</t>
  <t><spanx style="verb">billing.taskbot@example.com</spanx> - Task-specific agent with hierarchical naming</t>
  <t><spanx style="verb">weather-agent-v2@provider.net</spanx> - Versioned agent identifier</t>
</list></t>

</section>
<section anchor="local-part-semantics"><name>Local-part Semantics</name>

<t>The <spanx style="verb">local-part</spanx> can use alphanumeric characters, period (<spanx style="verb">.</spanx>), hyphen (<spanx style="verb">-</spanx>), underscore (<spanx style="verb">_</spanx>), and plus (<spanx style="verb">+</spanx>).</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>

<figure><sourcecode type="dns"><![CDATA[
_atp.user.example.com. IN CNAME _atp.provider.net.
]]></sourcecode></figure>

<t>This allows users to maintain their identity (<spanx style="verb">@user.example.com</spanx>) while using third-party ATP services.</t>

</section>
<section anchor="svcb-alias-mode"><name>SVCB Alias Mode</name>

<figure><sourcecode type="dns"><![CDATA[
_atp.delegated.example.com. IN SVCB 0 _atp.target.org.
]]></sourcecode></figure>

<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>

<t><list style="symbols">
  <t><strong>Mandatory Encryption</strong>: All ATP traffic <bcp14>MUST</bcp14> be encrypted using TLS.</t>
  <t><strong>Certificate Validation</strong>: Clients <bcp14>MUST</bcp14> validate server certificates against trusted Certificate Authorities (CAs).</t>
  <t><strong>Cipher Suites</strong>: Servers <bcp14>SHOULD</bcp14> support modern cipher suites (e.g., TLS_AES_128_GCM_SHA256).</t>
  <t><strong>Forward Secrecy</strong>: Ephemeral key exchange (ECDHE) <bcp14>MUST</bcp14> be used.</t>
</list></t>

</section>
<section anchor="mutual-tls-optional"><name>Mutual TLS (Optional)</name>

<t>For high-security environments, ATP servers <bcp14>MAY</bcp14> require mutual TLS (mTLS) authentication.</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>

<figure><sourcecode type="dns"><![CDATA[
ats._atp.<domain>. IN TXT "v=atp1 <policy-directives>"
]]></sourcecode></figure>

</section>
<section anchor="example-ats-records"><name>Example ATS Records</name>

<t><strong>Simple IP-based policy</strong>:</t>

<figure><sourcecode type="dns"><![CDATA[
ats._atp.example.com. IN TXT "v=atp1 allow=ip:192.0.2.0/24"
]]></sourcecode></figure>

<t><strong>Multi-source policy</strong>:</t>

<figure><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></figure>

<t><strong>Permissive policy</strong>:</t>

<figure><sourcecode type="dns"><![CDATA[
ats._atp.example.com. IN TXT "v=atp1 allow=all"
]]></sourcecode></figure>

<t><strong>Restrictive policy</strong>:</t>

<figure><sourcecode type="dns"><![CDATA[
ats._atp.example.com. IN TXT "v=atp1 deny=all allow=ip:192.0.2.10"
]]></sourcecode></figure>

</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>

<t><list style="symbols">
  <t><strong><spanx style="verb">v=atp1</spanx></strong>: Version identifier (<bcp14>REQUIRED</bcp14>). Indicates ATP version 1 policy format.</t>
  <t><strong><spanx style="verb">allow=ip:&lt;cidr&gt;</spanx></strong>: Authorize messages from specific IP address ranges.</t>
  <t><strong><spanx style="verb">allow=domain:&lt;domain&gt;</spanx></strong>: Authorize messages from agents at the specified domain.</t>
  <t><strong><spanx style="verb">allow=all</spanx></strong>: Authorize messages from any source (<bcp14>NOT RECOMMENDED</bcp14>).</t>
  <t><strong><spanx style="verb">deny=ip:&lt;cidr&gt;</spanx></strong>: Explicitly deny messages from specific IP ranges.</t>
  <t><strong><spanx style="verb">deny=domain:&lt;domain&gt;</spanx></strong>: Explicitly deny messages from agents at the specified domain.</t>
  <t><strong><spanx style="verb">deny=all</spanx></strong>: Deny all sources (must be followed by specific <spanx style="verb">allow</spanx> directives).</t>
  <t><strong><spanx style="verb">include:&lt;record&gt;</spanx></strong>: Include policy from another ATS record.</t>
  <t><strong><spanx style="verb">redirect=&lt;domain&gt;</spanx></strong>: Redirect policy evaluation to another domain.</t>
  <t><strong><spanx style="verb">exp=&lt;domain&gt;</spanx></strong>: Specify a domain for explanation text (human-readable).</t>
</list></t>

</section>
<section anchor="ats-query-process"><name>ATS Query Process</name>

<t>When an ATP server receives a message claiming to be from <spanx style="verb">sender@domain.com</spanx>, it performs the following ATS verification:</t>

<t><list style="numbers" type="1">
  <t><strong>Query ATS Record</strong>: Query the DNS TXT record for <spanx style="verb">ats._atp.domain.com</spanx>.</t>
  <t><strong>Extract IP</strong>: Determine the source IP address of the incoming connection.</t>
  <t><strong>Policy Evaluation</strong>: Evaluate the ATS policy against the source IP and sender domain.</t>
  <t><strong>Authorization Decision</strong>:
  <list style="symbols">
      <t>If policy evaluation results in <spanx style="verb">PASS</spanx>, accept the message.</t>
      <t>If policy evaluation results in <spanx style="verb">FAIL</spanx>, reject the message with error code <spanx style="verb">550 5.7.26 ATS validation failed</spanx>.</t>
      <t>If no ATS record exists, treat as <spanx style="verb">NEUTRAL</spanx> (accept but flag for monitoring).</t>
    </list></t>
</list></t>

</section>
<section anchor="ats-processing-algorithm"><name>ATS Processing Algorithm</name>

<t>The ATS verification algorithm processes policy directives as follows:</t>

<figure><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></figure>

</section>
<section anchor="ats-error-codes"><name>ATS Error Codes</name>

<t>ATP servers <bcp14>MUST</bcp14> use the following error codes for ATS failures:</t>

<t><list style="symbols">
  <t><strong><spanx style="verb">550 5.7.26</spanx></strong>: ATS validation failed - sender not authorized</t>
  <t><strong><spanx style="verb">451 4.7.26</spanx></strong>: Temporary ATS validation failure - try again later</t>
  <t><strong><spanx style="verb">550 5.7.27</spanx></strong>: ATS record syntax error</t>
</list></t>

</section>
<section anchor="ats-best-practices"><name>ATS Best Practices</name>

<t><list style="symbols">
  <t><strong>Start Restrictive</strong>: Begin with a restrictive policy and gradually add authorized sources.</t>
  <t><strong>Use Includes</strong>: Use <spanx style="verb">include:</spanx> directives to inherit policies from trusted providers.</t>
  <t><strong>Monitor Logs</strong>: Regularly review ATS validation logs to identify unauthorized attempts.</t>
  <t><strong>Gradual Deployment</strong>: Deploy ATS gradually, starting with monitoring mode before enforcement.</t>
</list></t>

</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>

<figure><sourcecode type="dns"><![CDATA[
<selector>.atk._atp.<domain>. IN TXT "v=atp1 <key-parameters>"
]]></sourcecode></figure>

<t>Where <spanx style="verb">&lt;selector&gt;</spanx> is an identifier for the specific key (e.g., <spanx style="verb">default</spanx>, <spanx style="verb">2026q1</spanx>, <spanx style="verb">rotated-key</spanx>).</t>

</section>
<section anchor="example-atk-records"><name>Example ATK Records</name>

<t><strong>Ed25519 key (<bcp14>RECOMMENDED</bcp14>)</strong>:</t>

<figure><sourcecode type="dns"><![CDATA[
default.atk._atp.example.com. IN TXT "v=atp1 k=ed25519 p=MCowBQYDK2VwAyEAtLJ5VqH7K+R5VZ8cD9XwY3J2mN8K+R5VZ8cD9XwY3J2m"
]]></sourcecode></figure>

<t><strong>RSA key (2048-bit)</strong>:</t>

<figure><sourcecode type="dns"><![CDATA[
legacy.atk._atp.example.com. IN TXT "v=atp1 k=rsa p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA..."
]]></sourcecode></figure>

<t><strong>ECDSA key (P-256)</strong>:</t>

<figure><sourcecode type="dns"><![CDATA[
p256.atk._atp.example.com. IN TXT "v=atp1 k=ecdsa n=prime256v1 p=MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE..."
]]></sourcecode></figure>

</section>
<section anchor="key-parameters"><name>Key Parameters</name>

<t><list style="symbols">
  <t><strong><spanx style="verb">v=atp1</spanx></strong>: Version identifier (<bcp14>REQUIRED</bcp14>). Indicates ATP version 1 key format.</t>
  <t><strong><spanx style="verb">k=&lt;algorithm&gt;</spanx></strong>: Key algorithm (<bcp14>REQUIRED</bcp14>). Supported values:
  <list style="symbols">
      <t><spanx style="verb">ed25519</spanx> - Ed25519 (<bcp14>RECOMMENDED</bcp14> for new deployments)</t>
      <t><spanx style="verb">rsa</spanx> - RSA (2048-bit minimum)</t>
      <t><spanx style="verb">ecdsa</spanx> - ECDSA (P-256, P-384, or P-521)</t>
    </list></t>
  <t><strong><spanx style="verb">p=&lt;base64-key&gt;</spanx></strong>: Base64-encoded public key (<bcp14>REQUIRED</bcp14>).</t>
  <t><strong><spanx style="verb">n=&lt;curve-name&gt;</spanx></strong>: Elliptic curve name (<bcp14>REQUIRED</bcp14> for ECDSA). Supported values: <spanx style="verb">prime256v1</spanx>, <spanx style="verb">secp384r1</spanx>, <spanx style="verb">secp521r1</spanx>.</t>
  <t><strong><spanx style="verb">h=&lt;hash-alg&gt;</spanx></strong>: Hash algorithm (<bcp14>OPTIONAL</bcp14>). Defaults to <spanx style="verb">sha256</spanx>. Supported values: <spanx style="verb">sha256</spanx>, <spanx style="verb">sha384</spanx>, <spanx style="verb">sha512</spanx>.</t>
  <t><strong><spanx style="verb">s=&lt;service&gt;</spanx></strong>: Service type (<bcp14>OPTIONAL</bcp14>). Indicates which ATP services use this key.</t>
  <t><strong><spanx style="verb">t=&lt;flags&gt;</spanx></strong>: Flags (<bcp14>OPTIONAL</bcp14>). Comma-separated list of flags:
  <list style="symbols">
      <t><spanx style="verb">y</spanx> - Testing mode (signature validation is informational only)</t>
      <t><spanx style="verb">s</spanx> - Key is revoked (do not use for new signatures)</t>
    </list></t>
  <t><strong><spanx style="verb">x=&lt;expiry&gt;</spanx></strong>: Key expiry timestamp (<bcp14>OPTIONAL</bcp14>). Unix timestamp after which the key should not be used.</t>
</list></t>

</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>

<t><list style="numbers" type="1">
  <t><strong>Extract Signature Information</strong>: Parse the message signature to extract key selector, domain, signature algorithm, and signature value.</t>
  <t><strong>Query ATK Record</strong>: Query the DNS TXT record for <spanx style="verb">&lt;selector&gt;.atk._atp.&lt;domain&gt;</spanx>.</t>
  <t><strong>Validate Key Parameters</strong>: Verify that the key algorithm and parameters match the signature.</t>
  <t><strong>Canonicalization</strong>: Canonicalize the message payload according to the specified algorithm.</t>
  <t><strong>Signature Verification</strong>: Verify the signature using the public key from the ATK record.</t>
  <t><strong>Validation Decision</strong>:
  <list style="symbols">
      <t>If signature verification succeeds, accept the message.</t>
      <t>If signature verification fails, reject the message with error code <spanx style="verb">550 5.7.28 ATK signature validation failed</spanx>.</t>
      <t>If ATK record is not found, reject the message with error code <spanx style="verb">550 5.7.29 ATK key not found</spanx>.</t>
    </list></t>
</list></t>

</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 <spanx style="verb">s</spanx> flag.</t>

</section>
</section>
<section anchor="atk-best-practices"><name>ATK Best Practices</name>

<t><list style="symbols">
  <t><strong>Use Ed25519</strong>: Prefer Ed25519 keys for new deployments due to their security and performance characteristics.</t>
  <t><strong>Key Size</strong>: For RSA keys, use at least 2048 bits. For ECDSA, use P-256 or stronger curves.</t>
  <t><strong>Multiple Keys</strong>: Maintain multiple keys (current, next, previous) for smooth rotation.</t>
  <t><strong>DNSSEC</strong>: Sign ATK records with DNSSEC to prevent DNS spoofing attacks.</t>
  <t><strong>Monitoring</strong>: Monitor signature validation failures to detect potential attacks or misconfigurations.</t>
</list></t>

</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 <spanx style="verb">signature</spanx> field:</t>

<figure><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></figure>

</section>
<section anchor="signature-algorithm"><name>Signature Algorithm</name>

<t>The signature algorithm depends on the key type:
- <strong>Ed25519</strong>: Sign the canonicalized message bytes directly.
- <strong>RSA</strong>: Use RSASSA-PSS with SHA-256 (or stronger).
- <strong>ECDSA</strong>: Use ECDSA with the specified curve and hash algorithm.</t>

</section>
<section anchor="canonicalization"><name>Canonicalization</name>

<t>Messages <bcp14>MUST</bcp14> be canonicalized before signing to ensure consistent signature verification. ATP uses JSON Canonicalization Scheme (JCS) <xref target="RFC8785"/> for JSON payloads.</t>

<t><strong>Canonicalization Process</strong>:</t>

<t><list style="numbers" type="1">
  <t>Remove the <spanx style="verb">signature</spanx> field from the message object.</t>
  <t>Apply JCS canonicalization to the remaining JSON object.</t>
  <t>Convert the canonicalized JSON to UTF-8 bytes.</t>
  <t>Sign the UTF-8 bytes using the specified algorithm.</t>
</list></t>

</section>
<section anchor="signature-verification"><name>Signature Verification</name>

<t>The recipient verifies the signature as follows:</t>

<t><list style="numbers" type="1">
  <t>Extract the <spanx style="verb">signature</spanx> field from the message.</t>
  <t>Reconstruct the message object without the <spanx style="verb">signature</spanx> field.</t>
  <t>Apply the same canonicalization process used by the sender.</t>
  <t>Verify the signature using the public key from the ATK record.</t>
  <t>Check that signed headers match the actual message headers.</t>
</list></t>

</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>. However, ATP servers <bcp14>MAY</bcp14> use any port, which is specified in the SVCB record.</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>

<figure><sourcecode type="http"><![CDATA[
POST /.well-known/atp/v1/message
Content-Type: application/atp+json
]]></sourcecode></figure>

<t><strong>Request Body</strong>: ATP message envelope</t>

<t><strong>Response</strong>:</t>

<t><list style="symbols">
  <t><strong>202 Accepted</strong>: Message accepted for delivery</t>
  <t><strong>400 Bad Request</strong>: Invalid message format</t>
  <t><strong>401 Unauthorized</strong>: Authentication failed</t>
  <t><strong>429 Too Many Requests</strong>: Rate limit exceeded</t>
  <t><strong>500 Internal Server Error</strong>: Server error</t>
</list></t>

</section>
<section anchor="capability-discovery-endpoint"><name>Capability Discovery Endpoint</name>

<figure><sourcecode type="http"><![CDATA[
GET /.well-known/atp/v1/capabilities
]]></sourcecode></figure>

<t><strong>Response</strong>: JSON object describing server capabilities</t>

</section>
<section anchor="health-check-endpoint"><name>Health Check Endpoint</name>

<figure><sourcecode type="http"><![CDATA[
GET /.well-known/atp/v1/health
]]></sourcecode></figure>

<t><strong>Response</strong>:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "status": "ok",
  "version": "1.0.0",
  "uptime": 86400,
  "load": 0.45
}
]]></sourcecode></figure>

</section>
</section>
<section anchor="connection-management"><name>Connection Management</name>

<t><list style="symbols">
  <t><strong>Keep-Alive</strong>: Clients <bcp14>SHOULD</bcp14> use HTTP keep-alive for multiple requests.</t>
  <t><strong>Timeout</strong>: Servers <bcp14>SHOULD</bcp14> implement idle timeout (<bcp14>RECOMMENDED</bcp14>: 60 seconds).</t>
  <t><strong>Rate Limiting</strong>: Servers <bcp14>MAY</bcp14> implement rate limiting with appropriate HTTP headers.</t>
</list></t>

</section>
</section>
<section anchor="quic-transport-optional"><name>QUIC Transport (Optional)</name>

<t>For low-latency scenarios, ATP supports QUIC transport <xref target="RFC9000"/>.</t>

<section anchor="alpn-identifier"><name>ALPN Identifier</name>

<t>The ALPN identifier for ATP over QUIC is <spanx style="verb">atp/1</spanx>.</t>

</section>
<section anchor="benefits"><name>Benefits</name>

<t><list style="symbols">
  <t><strong>0-RTT Handshake</strong>: Establish connections with zero round-trip time.</t>
  <t><strong>Multiplexing</strong>: Multiple ATP messages over a single connection.</t>
  <t><strong>Connection Migration</strong>: Maintain connections across network changes.</t>
  <t><strong>Better Performance</strong>: Reduced latency over lossy networks.</t>
</list></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>

<figure><sourcecode type="json"><![CDATA[
{
  "from": "string",           // Sender Agent ID (REQUIRED)
  "to": "string",             // Recipient Agent ID (REQUIRED)
  "cc": ["string"],           // Carbon copy recipients (OPTIONAL)
  "timestamp": "integer",     // Unix timestamp in seconds (REQUIRED)
  "nonce": "string",          // Unique message identifier (REQUIRED)
  "type": "string",           // Message type (REQUIRED)
  "payload": "object",        // Message-specific content (REQUIRED)
  "signature": "object",      // Signature envelope (REQUIRED)
  "routing": "object"         // Routing information (OPTIONAL)
}
]]></sourcecode></figure>

<section anchor="field-definitions"><name>Field Definitions</name>

<t><list style="symbols">
  <t><strong><spanx style="verb">from</spanx></strong>: The Agent ID of the message sender. <bcp14>MUST</bcp14> be a valid agent identifier.</t>
  <t><strong><spanx style="verb">to</spanx></strong>: The Agent ID of the primary recipient. <bcp14>MUST</bcp14> be a valid agent identifier.</t>
  <t><strong><spanx style="verb">cc</spanx></strong>: Array of Agent IDs for carbon-copy recipients.</t>
  <t><strong><spanx style="verb">timestamp</spanx></strong>: Unix timestamp (seconds since epoch) when the message was created.</t>
  <t><strong><spanx style="verb">nonce</spanx></strong>: Cryptographically random unique identifier for the message.</t>
  <t><strong><spanx style="verb">type</spanx></strong>: Message type indicator. Values: <spanx style="verb">message</spanx>, <spanx style="verb">request</spanx>, <spanx style="verb">response</spanx>, <spanx style="verb">event</spanx>.</t>
  <t><strong><spanx style="verb">payload</spanx></strong>: Message-specific content. Structure depends on message type.</t>
  <t><strong><spanx style="verb">signature</spanx></strong>: Cryptographic signature envelope.</t>
  <t><strong><spanx style="verb">routing</spanx></strong>: Routing information for multi-hop scenarios.</t>
</list></t>

</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 <spanx style="verb">message</spanx> type is used for asynchronous, fire-and-forget communication.</t>

<figure><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></figure>

</section>
<section anchor="requestresponse"><name>Request/Response</name>

<t>The <spanx style="verb">request</spanx>/<spanx style="verb">response</spanx> pattern supports synchronous RPC-style interactions.</t>

<section anchor="request-format"><name>Request Format</name>

<figure><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></figure>

</section>
<section anchor="response-format"><name>Response Format</name>

<figure><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></figure>

</section>
</section>
<section anchor="eventsubscription"><name>Event/Subscription</name>

<t>The <spanx style="verb">event</spanx> type supports streaming and event-driven communication.</t>

<section anchor="subscription-request"><name>Subscription Request</name>

<figure><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></figure>

</section>
<section anchor="event-message"><name>Event Message</name>

<figure><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></figure>

</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>: <spanx style="verb">application/atp+json</spanx></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>: <spanx style="verb">application/atp+cbor</spanx></t>

</section>
</section>
<section anchor="message-size-limits"><name>Message Size Limits</name>

<t>ATP servers <bcp14>SHOULD</bcp14> enforce message size limits:</t>

<t><list style="symbols">
  <t><strong>Default Maximum</strong>: 1 MB (1,048,576 bytes)</t>
  <t><strong>Minimum Supported</strong>: 64 KB (65,536 bytes)</t>
</list></t>

</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 title="Asynchronous Message Delivery Model: Submit → Transfer → Deliver flow through ATP servers" anchor="fig-message-delivery"><artwork type="ascii-art"><![CDATA[
Sender Agent      ATP Server A      ATP Server B      Recipient Agent
     |                |                 |                    |
     |---[Submit]---->|                 |                    |
     |                |                 |                    |
     |                |---[Transfer]--->|                    |
     |                |                 |                    |
     |                |                 |----[Deliver]------>|
     |                |                 |                    |
]]></artwork></figure>

<t>In this model:
1. The Sender Agent submits a message to its local ATP Server A
2. ATP Server A performs policy enforcement (ATS/ATK validation) and transfers the message to ATP Server B
3. ATP Server B performs security checks and delivers the message to the Recipient Agent</t>

<t>Each hop (Submit/Transfer/Deliver) involves independent ATS/ATK validation for security enforcement.</t>

</section>
<section anchor="reliability"><name>Reliability</name>

<t><list style="symbols">
  <t><strong>Store-and-Forward</strong>: Messages are stored on intermediate servers until delivery succeeds.</t>
  <t><strong>Retry Mechanism</strong>: Failed deliveries are retried with exponential backoff.</t>
  <t><strong>Bounce Handling</strong>: Undeliverable messages generate bounce notifications to the sender.</t>
</list></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 title="Request/Response Interaction Model: Synchronous RPC-style flow with bidirectional server-mediated communication" anchor="fig-request-response"><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:
1. The Client Agent submits a request to its local ATP Server A via HTTP POST
2. ATP Server A performs policy enforcement (ATS/ATK validation) and transfers the request to ATP Server B
3. ATP Server B performs security checks and delivers the request to the Service Agent
4. The Service Agent processes the request and returns a response
5. The response flows back through the same path (Service Agent → ATP Server B → ATP Server A → Client Agent)</t>

<t>Each hop (Submit/Transfer/Deliver) involves independent ATS/ATK validation for security enforcement.</t>

</section>
<section anchor="state-management"><name>State Management</name>

<t><list style="symbols">
  <t><strong>Stateless</strong>: Each request is independent.</t>
  <t><strong>Correlation ID</strong>: Clients <bcp14>MAY</bcp14> include a <spanx style="verb">correlation_id</spanx> to track workflows.</t>
  <t><strong>Idempotency</strong>: Requests <bcp14>SHOULD</bcp14> be idempotent.</t>
</list></t>

</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 title="Event/Subscription Pub/Sub Model: Bidirectional flow for subscription establishment and event notification" anchor="fig-event-subscription"><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:
- Proper access control at each ATP server boundary
- ATS/ATK policy enforcement for both subscription and event messages
- Subscription state management at the Publisher's server</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>

<t><list style="symbols">
  <t>Eavesdropping on unencrypted traffic</t>
  <t>Man-in-the-middle (MitM) attacks to intercept or modify communications</t>
  <t>Replay attacks using captured messages</t>
  <t>Traffic analysis to infer communication patterns</t>
</list></t>

<t><strong>Malicious Agents</strong>: Compromised or malicious agents that attempt to:</t>

<t><list style="symbols">
  <t>Send unauthorized messages on behalf of other agents (spoofing)</t>
  <t>Flood servers with excessive requests (DoS)</t>
  <t>Exploit protocol vulnerabilities to gain unauthorized access</t>
</list></t>

<t><strong>Rogue ATP Servers</strong>: Compromised or malicious ATP servers that may:</t>

<t><list style="symbols">
  <t>Fail to enforce ATS/ATK policies</t>
  <t>Leak sensitive message content</t>
  <t>Drop or delay messages selectively</t>
</list></t>

<t><strong>DNS Attackers</strong>: Adversaries that attempt to compromise DNS infrastructure:</t>

<t><list style="symbols">
  <t>DNS cache poisoning to redirect ATP traffic</t>
  <t>DNS spoofing to provide fraudulent SVCB records</t>
  <t>DNS amplification attacks</t>
</list></t>

</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>

<t><list style="symbols">
  <t>All ATP connections <bcp14>MUST</bcp14> use TLS 1.3 <xref target="RFC8446"/> or higher</t>
  <t>Certificate validation against trusted Certificate Authorities is mandatory</t>
  <t>Cipher suites <bcp14>MUST</bcp14> provide forward secrecy (ECDHE key exchange)</t>
  <t>Cipher suites <bcp14>SHOULD</bcp14> use authenticated encryption (AES-GCM, ChaCha20-Poly1305)</t>
</list></t>

<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>

<t><list style="symbols">
  <t>ATS records define authorized sending sources per domain</t>
  <t>Policy directives include IP ranges, domains, and explicit deny rules</t>
  <t>Each ATP server performs ATS validation on every incoming message</t>
  <t>Failed ATS validation results in immediate rejection</t>
</list></t>

<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>

<t><list style="symbols">
  <t>ATK records publish cryptographic public keys for signature verification</t>
  <t>All ATP messages <bcp14>MUST</bcp14> be cryptographically signed</t>
  <t>Supported algorithms: Ed25519 (<bcp14>RECOMMENDED</bcp14>), RSA (2048+ bit), ECDSA (P-256+)</t>
  <t>Signature covers all critical message fields (from, to, timestamp, nonce, type, payload)</t>
</list></t>

<t><strong>Residual Risk</strong>: Key compromise. Domains <bcp14>MUST</bcp14> implement key rotation and maintain revocation procedures via the <spanx style="verb">s</spanx> 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>

<t><list style="symbols">
  <t>Cryptographic signatures cover canonicalized message content</t>
  <t>Nonce prevents replay attacks</t>
  <t>Timestamp enables expiration checking</t>
  <t>Signature includes headers list to prevent header manipulation</t>
</list></t>

<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>

<t><list style="symbols">
  <t><spanx style="verb">from</spanx> and <spanx style="verb">to</spanx> fields are visible to ATP servers and network observers</t>
  <t><spanx style="verb">timestamp</spanx> reveals timing of communications</t>
  <t><spanx style="verb">type</spanx> indicates interaction pattern (message, request, response, event)</t>
</list></t>

<t><strong>Mitigation</strong>:</t>

<t><list style="symbols">
  <t>Payload content <bcp14>SHOULD</bcp14> be encrypted end-to-end when confidentiality is required</t>
  <t>Agents <bcp14>MAY</bcp14> use pseudonymous identifiers for sensitive communications</t>
  <t>ATP servers <bcp14>SHOULD</bcp14> minimize metadata logging</t>
</list></t>

<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>

<t><list style="symbols">
  <t>TLS encryption protects payload in transit between hops</t>
  <t>Agents <bcp14>MAY</bcp14> encrypt payload content end-to-end using recipient's public key</t>
  <t>CBOR encoding supports embedded encrypted content</t>
</list></t>

<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>

<t><list style="symbols">
  <t>Message flooding to exhaust server storage or bandwidth</t>
  <t>Connection exhaustion to deplete server connection pools</t>
  <t>Computational DoS via expensive cryptographic operations</t>
</list></t>

<t><strong>Mitigation</strong>:</t>

<t><list style="symbols">
  <t>Rate limiting based on sender reputation and domain</t>
  <t>Message size limits (default 1 MB maximum)</t>
  <t>Connection limits per sender IP and domain</t>
  <t>Exponential backoff for retry attempts</t>
  <t>Quota enforcement per agent and per domain</t>
</list></t>

</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>

<t><list style="symbols">
  <t>ATS validation prevents unauthorized relaying</t>
  <t>Response messages only sent to request initiators</t>
  <t>Subscription confirmation required before event delivery</t>
  <t>No broadcast or multicast mechanisms</t>
</list></t>

</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>

<t><list style="symbols">
  <t>ATP servers <bcp14>SHOULD</bcp14> validate DNS responses using DNSSEC <xref target="RFC4033"/></t>
  <t>SVCB records <bcp14>SHOULD</bcp14> be cached with appropriate TTL</t>
  <t>Multiple independent DNS resolvers <bcp14>SHOULD</bcp14> be consulted</t>
</list></t>

<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>

<t><list style="symbols">
  <t>DNS-over-HTTPS (DoH) or DNS-over-TLS (DoT) for query confidentiality</t>
  <t>DNS query caching to reduce query frequency</t>
  <t>Batch queries when discovering multiple domains</t>
</list></t>

</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>

<t><list style="symbols">
  <t>End-to-end message signatures detect modification</t>
  <t>Payload encryption protects content from server inspection</t>
  <t>Audit logging for security monitoring</t>
  <t>Regular security updates and hardening</t>
</list></t>

</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>

<t><list style="symbols">
  <t>Strict domain-based access control</t>
  <t>Per-tenant quota enforcement</t>
  <t>Isolated processing contexts</t>
  <t>ATS/ATK validation per message</t>
</list></t>

</section>
</section>
<section anchor="security-best-practices"><name>Security Best Practices</name>

<t>Deployments <bcp14>SHOULD</bcp14> implement the following security practices:</t>

<t><list style="numbers" type="1">
  <t><strong>DNSSEC</strong>: Sign all DNS zones containing ATS and ATK records</t>
  <t><strong>Key Rotation</strong>: Rotate ATK keys every 90 days minimum</t>
  <t><strong>Monitoring</strong>: Log and alert on ATS/ATK validation failures</t>
  <t><strong>Certificate Management</strong>: Monitor certificate expiration and implement automated renewal</t>
  <t><strong>Incident Response</strong>: Maintain procedures for key revocation and emergency policy updates</t>
  <t><strong>Defense in Depth</strong>: Implement multiple layers of security controls</t>
</list></t>

</section>
<section anchor="known-limitations"><name>Known Limitations</name>

<t><list style="numbers" type="1">
  <t><strong>Metadata Visibility</strong>: ATP does not hide communication metadata from ATP servers</t>
  <t><strong>DNS Trust</strong>: DNS security depends on DNSSEC adoption</t>
  <t><strong>Server Trust</strong>: ATP servers can observe unencrypted payload content</t>
  <t><strong>Key Management</strong>: Compromised keys enable message forgery until revocation</t>
</list></t>

<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>

<t><list style="symbols">
  <t><strong>Protocol</strong>: <spanx style="verb">atp/1</spanx></t>
  <t><strong>Identification Sequence</strong>: 0x61 0x74 0x70 0x2f 0x31 (<spanx style="verb">atp/1</spanx>)</t>
  <t><strong>Specification</strong>: This document</t>
</list></t>

</section>
<section anchor="well-known-uri"><name>Well-Known URI</name>

<t>IANA is requested to register the following well-known URI:</t>

<t><list style="symbols">
  <t><strong>URI Suffix</strong>: <spanx style="verb">atp</spanx></t>
  <t><strong>Change Controller</strong>: IETF</t>
  <t><strong>Specification</strong>: This document</t>
</list></t>

</section>
<section anchor="media-types"><name>Media Types</name>

<t>IANA is requested to register the following media types:</t>

<t><list style="symbols">
  <t><strong>application/atp+json</strong></t>
  <t><strong>application/atp+cbor</strong></t>
</list></t>

</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>

<t><list style="symbols">
  <t><strong>Service Name</strong>: <spanx style="verb">atp</spanx></t>
  <t><strong>Port Number</strong>: 7443</t>
  <t><strong>Transport Protocol</strong>: TCP, UDP</t>
  <t><strong>Description</strong>: Agent Transfer Protocol</t>
</list></t>

</section>
</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

    <references title='Normative References' anchor="sec-normative-references">



<reference anchor="RFC2119">
  <front>
    <title>Key words for use in RFCs to Indicate Requirement Levels</title>
    <author fullname="S. Bradner" initials="S." surname="Bradner">
      <organization/>
    </author>
    <author>
      <organization>RFC Series</organization>
    </author>
    <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="DOI" value="10.17487/RFC2119"/>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="2119"/>
</reference>
<reference anchor="RFC5890">
  <front>
    <title>Internationalized Domain Names for Applications (IDNA): Definitions and Document Framework</title>
    <author fullname="J. Klensin" initials="J." surname="Klensin">
      <organization/>
    </author>
    <author>
      <organization>RFC Series</organization>
    </author>
    <date month="August" year="2010"/>
    <workgroup>idnabis</workgroup>
    <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="DOI" value="10.17487/RFC5890"/>
  <seriesInfo name="RFC" value="5890"/>
</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">
      <organization/>
    </author>
    <author>
      <organization>RFC Series</organization>
    </author>
    <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="DOI" value="10.17487/RFC8174"/>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="8174"/>
</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">
      <organization/>
    </author>
    <author>
      <organization>RFC Series</organization>
    </author>
    <date month="December" year="2017"/>
    <workgroup>jsonbis</workgroup>
    <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="DOI" value="10.17487/RFC8259"/>
  <seriesInfo name="STD" value="90"/>
  <seriesInfo name="RFC" value="8259"/>
</reference>
<reference anchor="RFC8446">
  <front>
    <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
    <author fullname="E. Rescorla" initials="E." surname="Rescorla">
      <organization/>
    </author>
    <author>
      <organization>RFC Series</organization>
    </author>
    <date month="August" year="2018"/>
    <workgroup>tls</workgroup>
    <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="DOI" value="10.17487/RFC8446"/>
  <seriesInfo name="RFC" value="8446"/>
</reference>
<reference anchor="RFC8785">
  <front>
    <title>JSON Canonicalization Scheme (JCS)</title>
    <author fullname="A. Rundgren" initials="A." surname="Rundgren">
      <organization/>
    </author>
    <author fullname="B. Jordan" initials="B." surname="Jordan">
      <organization/>
    </author>
    <author fullname="S. Erdtman" initials="S." surname="Erdtman">
      <organization/>
    </author>
    <author>
      <organization>RFC Series</organization>
    </author>
    <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="DOI" value="10.17487/RFC8785"/>
  <seriesInfo name="RFC" value="8785"/>
</reference>
<reference anchor="RFC8949">
  <front>
    <title>Concise Binary Object Representation (CBOR)</title>
    <author fullname="C. Bormann" initials="C." surname="Bormann">
      <organization/>
    </author>
    <author fullname="P. Hoffman" initials="P." surname="Hoffman">
      <organization/>
    </author>
    <author>
      <organization>RFC Series</organization>
    </author>
    <date month="December" year="2020"/>
    <workgroup>cbor</workgroup>
    <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="DOI" value="10.17487/RFC8949"/>
  <seriesInfo name="STD" value="94"/>
  <seriesInfo name="RFC" value="8949"/>
</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">
      <organization/>
    </author>
    <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson">
      <organization/>
    </author>
    <author>
      <organization>RFC Series</organization>
    </author>
    <date month="May" year="2021"/>
    <workgroup>quic</workgroup>
    <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="DOI" value="10.17487/RFC9000"/>
  <seriesInfo name="RFC" value="9000"/>
</reference>
<reference anchor="RFC9110">
  <front>
    <title>HTTP Semantics</title>
    <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding">
      <organization/>
    </author>
    <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham">
      <organization/>
    </author>
    <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke">
      <organization/>
    </author>
    <author>
      <organization>RFC Series</organization>
    </author>
    <date month="June" year="2022"/>
    <workgroup>httpbis</workgroup>
    <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="DOI" value="10.17487/RFC9110"/>
  <seriesInfo name="STD" value="97"/>
  <seriesInfo name="RFC" value="9110"/>
</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">
      <organization/>
    </author>
    <author fullname="M. Bishop" initials="M." surname="Bishop">
      <organization/>
    </author>
    <author fullname="E. Nygren" initials="E." surname="Nygren">
      <organization/>
    </author>
    <author>
      <organization>RFC Series</organization>
    </author>
    <date month="November" year="2023"/>
    <workgroup>dnsop</workgroup>
    <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="DOI" value="10.17487/RFC9460"/>
  <seriesInfo name="RFC" value="9460"/>
</reference>



    </references>

    <references title='Informative References' anchor="sec-informative-references">



<reference anchor="RFC1034">
  <front>
    <title>Domain names - concepts and facilities</title>
    <author fullname="P. Mockapetris" initials="P." surname="Mockapetris">
      <organization/>
    </author>
    <author>
      <organization>RFC Series</organization>
    </author>
    <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="DOI" value="10.17487/RFC1034"/>
  <seriesInfo name="STD" value="13"/>
  <seriesInfo name="RFC" value="1034"/>
</reference>
<reference anchor="RFC1035">
  <front>
    <title>Domain names - implementation and specification</title>
    <author fullname="P. Mockapetris" initials="P." surname="Mockapetris">
      <organization/>
    </author>
    <author>
      <organization>RFC Series</organization>
    </author>
    <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="DOI" value="10.17487/RFC1035"/>
  <seriesInfo name="STD" value="13"/>
  <seriesInfo name="RFC" value="1035"/>
</reference>
<reference anchor="RFC4033">
  <front>
    <title>DNS Security Introduction and Requirements</title>
    <author fullname="R. Arends" initials="R." surname="Arends">
      <organization/>
    </author>
    <author fullname="R. Austein" initials="R." surname="Austein">
      <organization/>
    </author>
    <author fullname="M. Larson" initials="M." surname="Larson">
      <organization/>
    </author>
    <author fullname="D. Massey" initials="D." surname="Massey">
      <organization/>
    </author>
    <author fullname="S. Rose" initials="S." surname="Rose">
      <organization/>
    </author>
    <author>
      <organization>RFC Series</organization>
    </author>
    <date month="March" year="2005"/>
    <workgroup>dnsext</workgroup>
    <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="DOI" value="10.17487/RFC4033"/>
  <seriesInfo name="RFC" value="4033"/>
</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">
      <organization/>
    </author>
    <author fullname="J. Schlyter" initials="J." surname="Schlyter">
      <organization/>
    </author>
    <author>
      <organization>RFC Series</organization>
    </author>
    <date month="August" year="2012"/>
    <workgroup>dane</workgroup>
    <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="DOI" value="10.17487/RFC6698"/>
  <seriesInfo name="RFC" value="6698"/>
</reference>



    </references>

</references>


<?line 1389?>

<section anchor="example-message-flows"><name>Example Message Flows</name>

<section anchor="sending-an-atp-message"><name>Sending an ATP Message</name>

<figure title="Sending an ATP Message: DNS discovery, TLS handshake, and message submission flow" anchor="fig-sending-message"><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 title="Request/Response Flow: DNS discovery, TLS handshake, request submission, server transfer, and response return" anchor="fig-request-response-flow"><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 title="Event Subscription Flow: Two-phase publish-subscribe with Subscribe Phase and Event Notification Phase" anchor="fig-event-subscription-flow"><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>

<t><list style="symbols">
  <t>DNS SVCB <xref target="RFC9460"/> - for service discovery</t>
  <t>HTTP/2 <xref target="RFC9110"/> - for multiplexing</t>
  <t>QUIC <xref target="RFC9000"/> - for low-latency transport</t>
  <t>TLS <xref target="RFC8446"/> - for secure transport</t>
</list></t>

</section>


  </back>

<!-- ##markdown-source:
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
CQEA

-->

</rfc>

