| Internet-Draft | ATP | March 2026 |
| Hood | Expires 20 September 2026 | [Page] |
AI agents and agentic systems generate a growing volume of intent-driven, unstructured, and undifferentiated traffic that flows through HTTP indistinguishably from human-initiated requests. HTTP lacks the semantic vocabulary, observability primitives, and identity mechanisms required by agent systems operating at scale. Existing protocols described as "agent protocols" — including MCP, ACP, A2A, and ANP — are messaging-layer constructs that presuppose HTTP as their transport. They do not address the underlying transport problem.¶
This document defines the Agent Transfer Protocol (ATP): a dedicated application-layer protocol for AI agent traffic. ATP provides agent-native intent methods (QUERY, SUMMARIZE, BOOK, SCHEDULE, LEARN, DELEGATE, COLLABORATE, CONFIRM, ESCALATE, NOTIFY), protocol-level agent identity and authority headers, and a status code vocabulary designed for the conditions AI agent systems encounter. ATP SHOULD prefer QUIC for new implementations and MUST support TCP/TLS for compatibility and fallback. It is designed to be composable with existing agent frameworks, not to replace them.¶
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.¶
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.¶
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."¶
This Internet-Draft will expire on 20 September 2026.¶
Copyright (c) 2026 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document.¶
Note Regarding Intellectual Property: Implementers should be aware that certain extensions to this specification -- specifically the Agent Certificate extension (Section 7.2) and the ACTIVATE method -- may be subject to pending patent applications by the author. The core ATP specification is intended for open implementation without royalty obligation. The licensor is prepared to grant a royalty-free license to implementers consistent with [RFC8179]. IPR disclosures: https://datatracker.ietf.org/ipr/ -- see also Section 7.7.¶
The deployment of AI agents and multi-agent systems is accelerating across enterprise, research, and consumer contexts. These systems execute complex, multi-step workflows — querying data sources, booking resources, delegating subtasks to peer agents, and escalating decisions to human principals — with minimal or no human supervision per transaction.¶
Unlike human-initiated web traffic, agent-generated traffic is dynamic, high-frequency, intent-driven, and often stateful across sequences of related requests. The infrastructure carrying this traffic was not designed with these properties in mind.¶
HTTP has served as the internet's primary application-layer transport for over three decades. Its evolution through HTTP/2 [RFC7540] and HTTP/3 [RFC9114] has improved performance, multiplexing, and latency. However, the fundamental model of HTTP — stateless, resource-oriented, human-initiated request/response — creates specific failures when applied to agentic systems at scale:¶
Traffic indistinguishability: Agent-generated requests are structurally identical to human-initiated requests at the transport layer. Operators cannot identify, route, or govern agent traffic without application-layer instrumentation.¶
Method vocabulary mismatch: HTTP's method set (GET, POST, PUT, DELETE, PATCH) describes resource operations. Agent traffic expresses purposeful intent — summarize, book, delegate, escalate. The mismatch forces intent into request bodies, invisible to protocol-level handlers.¶
Identity and attribution absence: HTTP carries no native mechanism for asserting agent identity, declared authority scope, or the principal accountable for an agent's actions.¶
Session semantics mismatch: HTTP's stateless model is optimized for isolated request/response cycles. Agent workflows are inherently stateful sequences.¶
A natural question is whether these limitations could be addressed by extending HTTP rather than defining a new protocol. There are three specific reasons why HTTP extension is not the preferred path.¶
First, the HTTP method registry is effectively frozen for new semantics. [RFC9110] defines the HTTP method registry with IETF Review as the registration procedure, meaning new methods require a full IETF consensus process and must be backward-compatible with existing HTTP implementations. Adding intent-based verbs (SUMMARIZE, DELEGATE, ESCALATE) to HTTP would require every HTTP client, server, proxy, and middleware component to ignore or handle unknown methods gracefully — a compatibility constraint that limits how agent-specific semantics can be expressed at the protocol level.¶
Second, HTTP carries decades of backward-compatibility constraints. Features such as persistent agent identity headers, authority scope declarations, and session-level governance semantics would require HTTP extensions that interact unpredictably with existing caching, proxy, and CDN behavior designed for human-generated traffic patterns.¶
Third, the observability goal — making agent traffic distinguishable from human traffic at the infrastructure layer — cannot be achieved by adding fields to HTTP. Infrastructure components route and filter HTTP traffic based on methods and headers that are identical across agent and human requests. A protocol-level separation is necessary to give infrastructure the signal it needs.¶
ATP is therefore designed as a dedicated protocol rather than an HTTP extension. HTTP and ATP coexist: human traffic continues to flow over HTTP; agent traffic flows over ATP. The two protocols serve different classes of network participant.¶
These limitations are architectural, not implementational. They cannot be resolved by better middleware or application code layered on HTTP. They require a protocol designed from first principles for AI agent systems.¶
ATP is that protocol. It provides a dedicated transport environment for agent traffic with: native intent-based methods, mandatory agent identity headers, protocol-level authority scope declaration, and a status code vocabulary for the conditions autonomous systems encounter.¶
This document covers ATP architecture, design principles, stack position, request and response header format, agent-native method definitions and semantics, status code vocabulary, security considerations, and IANA considerations.¶
The Agent Certificate extension for cryptographic binding of agent identity to ATP header fields is described at a high level in Section 7.2. Full specification is provided in a separate companion document: [ATP-CERT]. That extension may be subject to pending intellectual property claims; see Section 7.7 and the IPR Notice preceding the Abstract.¶
Target audience: AI agent developers, protocol designers, cloud and network infrastructure providers, enterprise security and compliance architects, and standards community participants.¶
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals.¶
An AI software system that executes tasks, makes decisions, and takes actions without continuous human supervision per transaction.¶
The human, organization, or system that authorized an agent to act and is accountable for its actions.¶
A unique identifier for a specific agent instance, present in all ATP request headers.¶
The identifier of the principal on whose behalf an agent operates.¶
A declared set of permissions defining what actions an agent is authorized to take, in the format domain:action or domain:*.¶
An ATP method name expressing the agent's purpose, as distinguished from HTTP resource-operation verbs.¶
An ordered record of Agent-IDs representing the sequence of delegations that produced the current request.¶
An agent's intentional deferral of a decision or action to a human principal or higher-authority agent.¶
A logged record of an agent action sufficient for audit and compliance purposes.¶
An ATP persistent connection context shared across multiple method invocations within a single agent workflow.¶
An ATP-aware infrastructure component — load balancer, gateway, proxy — that enforces Authority-Scope compliance without application-layer access. Requires the Agent Certificate extension ([ATP-CERT]).¶
ATP is motivated by three distinct, compounding failures in how current internet infrastructure handles AI agent traffic.¶
AI agents generate intent-driven, structured traffic that is functionally invisible to the infrastructure it traverses. This traffic flows through HTTP alongside human traffic with no protocol-level differentiation. Observability failure, routing inefficiency, and security blindness result — operators cannot determine what fraction of traffic is agent-generated without application-layer instrumentation that is expensive, inconsistent, and easy to circumvent.¶
ATP response: a dedicated protocol environment for agent traffic. Infrastructure can distinguish, route, monitor, and govern agent traffic natively.¶
AI agents operate on intent. HTTP's method vocabulary was designed to describe operations on resources, not purposeful action. When an agent intends to SUMMARIZE a document, BOOK a resource, and SCHEDULE a sequence — all three arrive as POST requests. The server receives identical verbs with meaningfully different intent buried in request bodies, invisible to any protocol-level handler.¶
ATP response: a vocabulary of agent-native methods that express intent at the protocol level.¶
| # | Problem | Current Failure | ATP Response |
|---|---|---|---|
| 1 | Undifferentiated traffic | HTTP cannot separate agent traffic | Dedicated protocol environment |
| 2 | Semantic mismatch | HTTP verbs obscure agent intent | Native intent-based method vocabulary |
| 3 | No protocol-level identity | Attribution is untraceable | Agent identity and scope in headers |
ATP is an application-layer protocol. It operates above the transport layer (TCP, UDP, or QUIC) and is wrapped by TLS. It sits below any agent messaging protocol in deployments that use one.¶
SHOULD prefer QUIC [RFC9000] [RFC9001] for new deployments (lower latency, multiplexing without head-of-line blocking, 0-RTT connection establishment).¶
MUST support TCP/TLS as a fallback for compatibility with existing infrastructure.¶
MAY run over UDP where QUIC is not available, subject to implementor-defined reliability guarantees.¶
Suggested port assignment (subject to IANA assignment — see Section 8):¶
The base spec defines only what is necessary for agent traffic differentiation, method semantics, and identity headers. Extensions belong in companion specifications.¶
New methods are registered through an IANA-managed Method Registry. New header fields follow a defined extension convention. Additive changes do not require a version increment.¶
Every design decision assumes the initiating party is an AI system, not a human.¶
TLS 1.3 or higher is mandatory. Unencrypted ATP connections MUST be rejected. Agent identity headers are present on every request.¶
Native metadata in every ATP header provides the minimum information needed for routing, monitoring, and audit without application-layer instrumentation.¶
ATP works alongside existing agent messaging protocols without requiring modification to those protocols.¶
ATP uses a persistent session model by default, reflecting the reality that agents typically execute multi-step workflows rather than isolated single requests. An ATP session is established with a single TLS handshake including agent identity assertion, persists across multiple method exchanges, carries a Session-ID header identifying the agent's task context, and terminates on explicit session close or inactivity timeout (RECOMMENDED minimum: 60 seconds).¶
Per-request (stateless) mode is supported for constrained environments. In stateless mode, agent identity headers MUST be present on every individual request.¶
| Field | Required | Description |
|---|---|---|
| ATP-Version | MUST | Protocol version. Current: ATP/1.0 |
| ATP-Method | MUST | The agent intent method (see Section 6) |
| Agent-ID | MUST | Opaque identifier for the requesting agent instance |
| Principal-ID | MUST | Identifier of the human or system that authorized this agent |
| Authority-Scope | MUST | Declared scope of actions this agent is authorized to take |
| Session-ID | SHOULD | Identifies the current task/workflow context |
| Task-ID | SHOULD | Unique identifier for this specific method invocation |
| Delegation-Chain | MAY | Ordered list of Agent-IDs if this request was delegated |
| Priority | MAY | Request priority hint: critical, normal, background |
| TTL | MAY | Maximum acceptable response latency in milliseconds |
| Field | Required | Description |
|---|---|---|
| ATP-Version | MUST | Protocol version |
| ATP-Status | MUST | Numeric status code (see Section 5.5) |
| Task-ID | MUST | Echo of request Task-ID for correlation |
| Server-Agent-ID | SHOULD | Identity of the responding server or agent |
| Attribution-Record | SHOULD | Signed record of the action taken, for audit |
| Continuation-Token | MAY | Token for retrieving additional results in streaming contexts |
| Supported-Methods | SHOULD (on session open) | List of ATP methods supported by this server |
ATP defines its own status code space. Codes 451, 550, and 551 are ATP-specific with no HTTP equivalent and are registered in the IANA ATP Status Code Registry (see Section 8.3).¶
| Code | Name | Meaning |
|---|---|---|
| 200 | OK | Method executed successfully |
| 202 | Accepted | Method accepted; execution is asynchronous |
| 204 | No Content | Method executed; no response body |
| 400 | Bad Request | Malformed ATP request |
| 401 | Unauthorized | Agent-ID not recognized or not authenticated |
| 403 | Forbidden | Agent lacks authority for requested action per Authority-Scope |
| 404 | Not Found | Target resource or agent not found |
| 408 | Timeout | TTL exceeded before method could execute |
| 409 | Conflict | Method conflicts with current state (e.g., BOOK on unavailable resource) |
| 422 | Unprocessable | Request well-formed but semantically invalid |
| 429 | Rate Limited | Agent is exceeding permitted request frequency |
| 451 | Scope Violation | Requested action is outside declared Authority-Scope — ATP-specific |
| 500 | Server Error | Internal failure in the responding system |
| 503 | Unavailable | Responding agent or system temporarily unavailable |
| 550 | Delegation Failure | A delegated sub-agent failed to complete the requested action — ATP-specific |
| 551 | Authority Chain Broken | Delegation chain contains an unverifiable or broken identity link — ATP-specific |
Status code 451 (Scope Violation) is a governance signal: the agent attempted an action outside its declared Authority-Scope, caught at the protocol level. Status code 551 (Authority Chain Broken) indicates that one or more Agent-ID entries in the Delegation-Chain header cannot be verified as part of a valid delegation sequence. Both are operational signals, not protocol errors, and MUST be logged for audit purposes.¶
ATP request and response bodies are encoded as JSON. The registered Content-Type for ATP message bodies is:¶
Content-Type: application/atp+json¶
Implementations MUST include this Content-Type on all ATP requests and responses that carry a message body. Responses with no body (e.g., 204 No Content) MUST NOT include a Content-Type header. Binary or streaming extensions MAY define additional Content-Type values as part of their companion specifications.¶
The common structure for all ATP request bodies:¶
{
"method": "QUERY",
"task_id": "task-0042",
"session_id": "sess-a1b2c3d4",
"parameters": { },
"context": { }
}
¶
And for all ATP response bodies:¶
{
"status": 200,
"task_id": "task-0042",
"result": { },
"attribution": { }
}
¶
ATP is a proposed specification. No production implementations exist at the time of this writing. The author encourages early prototype implementations to validate the protocol design, identify gaps, and generate feedback prior to IETF working group submission.¶
If you are building an ATP prototype or reference implementation, please share your findings via the feedback channel listed on the cover of this document. A reference implementation in Python and/or Go is planned as open-source software concurrent with or shortly after IETF I-D submission. Implementation reports are welcome and will be incorporated into subsequent draft revisions.¶
Implementers wishing to experiment before the formal IANA port assignment may use port 8443 (ATP/QUIC) and port 8080 (ATP/TCP+TLS) as working values. These values are subject to change upon final IANA assignment.¶
The ACTIVATE method extension, which binds .nomo governed agent packages to ATP as a first-class activation operation, is described in a companion document and is implemented as an optional extension. Core ATP implementations need not support ACTIVATE to be compliant with this specification.¶
Every ATP agent is identified by a canonical Agent-ID: a 256-bit cryptographic identifier derived from the agent's governance-layer Birth Certificate at activation time. This identifier is globally unique, fixed-length, and — when the Agent Certificate extension is deployed — cryptographically verifiable at the transport layer.¶
The URI form of a canonical Agent-ID uses the atp:// scheme:¶
atp://3a9f2c1d8b7e4a6f0c2d5e9b1a3f7c0d4e8b2a5f9c3d7e1b0a4f8c2d6e0b¶
URI length is not a practical constraint for atp:// identifiers. 256-character URIs are handled without issue by all modern protocol stacks and do not require abbreviation or truncation.¶
The atp:// URI scheme is proposed for IANA registration per [RFC7595] as an open, unencumbered scheme. This registration is distinct from and independent of any intellectual property claims on ATP extensions.¶
The canonical Agent-ID is the authoritative identifier in all ATP protocol operations: it appears in the Agent-ID header of every request, is the key in the certificate registry, and is the cross-layer reference linking the ATP Agent Certificate to the governance-layer Birth Certificate. All other identification forms described in this section are aliases that resolve to a canonical Agent-ID.¶
For deployments with large numbers of agents — particularly enterprise environments with hundreds or thousands of agents per organization — the canonical Agent-ID alone is insufficient for human-readable observability, audit navigation, and operational management. ATP supports an optional hierarchical naming layer as a convenience alias system on top of canonical identifiers.¶
Human-friendly names follow a structured DNS-style format using the .agent or .nomo top-level labels:¶
atp://marketing-01.acme.agent atp://sales-bot-v2.engineering.acme.agent atp://customer-experience.acme.nomo¶
The structure is: [agent-label].[department].[organization].[tld]¶
where tld is .agent for general-purpose agents or .nomo for agents activated under the governed .nomo package format. Organization-level namespaces (e.g., acme.agent) are scoped per governance zone and enforced at registration time (see Section 5.8.3).¶
Attribute-based pattern matching is supported for multi-agent operations. The wildcard form acme.agent:sales-* matches all agents whose friendly name begins with sales- within the acme.agent namespace.¶
Human-friendly names MUST NOT be used as Agent-ID header values in ATP protocol messages. The Agent-ID header always carries the canonical 256-bit identifier. Friendly names are a resolution and management layer; they are not transport-layer identifiers.¶
Human-friendly name registration is tied to the governed activation flow and ATP Agent Certificate issuance process. An agent may only claim a friendly name after successfully completing the atomic activation protocol and receiving an Active lifecycle state in the certificate registry.¶
The registration process:¶
The activating operator submits a proposed friendly name alongside the .nomo package during the ACTIVATE transaction.¶
The activation endpoint verifies uniqueness within the organization's governance zone namespace.¶
On successful activation, the friendly name is recorded in the governance platform's name registry, mapped to the activated agent's canonical certificate_id.¶
The name binding is included in the genesis audit record as the friendly_name field.¶
Revocation of the agent's certificate automatically releases the friendly name, making it available for re-registration.¶
Uniqueness is enforced at the governance-zone level. Different organizations operating separate governance zones may register the same friendly name label without conflict.¶
Two resolution mechanisms are supported:¶
The organization publishes DNS TXT records under the _agent subdomain of its governance zone domain:¶
_agent.acme.agent. IN TXT "atp-id=3a9f2c1d8b7e4a6f..."¶
An ATP QUERY request to the governance platform's resolution endpoint resolves a friendly name to a canonical Agent-ID along with the agent's current lifecycle state, governance zone, trust tier, and ATP Agent Certificate status. Resolution responses carry Content-Type: application/atp+json:¶
{
"friendly_name": "sales-bot-v2.engineering.acme.agent",
"canonical_id": "3a9f2c1d8b7e4a6f...",
"lifecycle_state": "Active",
"governance_zone": "zone:internal",
"trust_tier": 2,
"cert_status": "Active",
"inclusion_proof_hash": "b2c4d6e8..."
}
¶
Implementations MUST treat the canonical Agent-ID as authoritative in the event of a conflict between DNS-based and ATP-native resolution results.¶
The hierarchical naming scheme scales to organizations with millions of agents without structural modification. Unlike sequential numeric suffixes, hierarchical sub-labels enable departmental grouping, role-based cohorts, version tracking, and delegation visibility. The governance platform's name registry is a lightweight key-value store indexed on (governance_zone, friendly_name) with a pointer to certificate_id, adding O(1) per-resolution overhead.¶
This document proposes registration of the atp:// URI scheme with IANA per [RFC7595]. Registration template:¶
atp¶
Permanent¶
atp://[canonical-agent-id] or atp://[friendly-name]¶
Identifies an AI agent operating over the Agent Transfer Protocol. The canonical form uses a 256-bit hex-encoded cryptographic identifier. The friendly-name form uses a hierarchical DNS-style label resolvable to a canonical identifier via DNS TXT records or ATP-native lookup.¶
Agent Transfer Protocol (this document)¶
Friendly names are optional aliases; implementations MUST accept canonical identifiers and SHOULD support friendly-name resolution.¶
Chris Hood, chris@nomotic.ai¶
This document¶
The atp:// URI scheme registration is open and unencumbered. No intellectual property claims apply to the URI scheme itself.¶
ATP methods are intent verbs, not resource operations. Each method expresses what an agent is trying to accomplish. Method names are uppercase ASCII strings. Methods that modify state are NOT idempotent by default unless explicitly marked. All methods accept a context parameter carrying agent session state. Requirement language follows [RFC2119].¶
Purpose: Semantic data retrieval. The agent specifies what it needs to know, not where to find it. Distinguished from HTTP GET by expressing an information need rather than retrieving a known resource at a known location.¶
| Parameter | Required | Description |
|---|---|---|
| intent | MUST | Natural language or structured expression of the information need |
| scope | SHOULD | Data domains or sources to include or exclude |
| format | MAY | Desired response format: structured, natural, raw |
| confidence_threshold | MAY | Minimum confidence score for included results (0.0-1.0) |
| context | MAY | Session context for disambiguation |
Response: Result set with confidence scores per item. Server SHOULD indicate provenance of each result. Idempotent: Yes.¶
Purpose: Request a concise synthesis of provided content or a referenced resource. The agent is requesting a cognitive operation on data, not retrieving data.¶
| Parameter | Required | Description |
|---|---|---|
| source | MUST | Content inline (up to implementation limit) or URI reference |
| length | SHOULD | Target summary length: brief, standard, detailed |
| focus | MAY | Aspect to emphasize in the summary |
| format | MAY | Output format: bullets, prose, structured |
| audience | MAY | Intended reader context, for calibrating complexity |
Response: Summary content with a source_hash and a confidence score. Idempotent: Yes.¶
Purpose: Reserve a resource, time slot, seat, or allocation on behalf of the agent's principal. State-modifying. Notable error codes: 409 Conflict (resource unavailable), 451 Scope Violation (principal not authorized for this resource type).¶
| Parameter | Required | Description |
|---|---|---|
| resource_id | MUST | Identifier of the resource to reserve |
| principal_id | MUST | The human or system on whose behalf the booking is made |
| time_slot | MUST (if time-based) | ISO 8601 datetime or range |
| quantity | MAY | Number of units to reserve |
| options | MAY | Resource-specific booking parameters |
| confirm_immediately | MAY | Boolean; if false, creates a hold pending confirmation |
Response: Booking confirmation with booking_id, status (confirmed / held), and expiry timestamp if a hold. Idempotent: No.¶
Purpose: Define a sequence of actions, method calls, or events to be executed at specified times or in response to specified triggers. Creates a durable plan, not an immediate execution.¶
| Parameter | Required | Description |
|---|---|---|
| steps | MUST | Ordered list of ATP method calls with parameters |
| trigger | MUST | immediate, datetime, event, or condition |
| trigger_value | MUST (if not immediate) | Datetime, event name, or condition expression |
| on_failure | SHOULD | Behavior on step failure: abort, skip, retry, escalate |
| notify | MAY | Notification targets on completion or failure |
Response: Schedule record with schedule_id, confirmed steps, and next execution timestamp. Idempotent: No.¶
Purpose: Update the agent's session context, knowledge state, or persistent memory. An explicit context write — the agent asserts that something should be retained.¶
| Parameter | Required | Description |
|---|---|---|
| content | MUST | Information to be learned (structured or unstructured) |
| scope | MUST | session (ephemeral), principal (persists for principal), global (shared) |
| category | SHOULD | Semantic category for retrieval optimization |
| confidence | MAY | Agent's confidence in the content (0.0-1.0) |
| source | MAY | Provenance of the learned content |
| ttl | MAY | Expiry for the learned content |
Response: Confirmation with learn_id and effective scope. Idempotent: No.¶
Purpose: Transfer execution of a task or method to a sub-agent or downstream system. Initiates a new ATP session on behalf of the delegating agent, carrying forward authority lineage.¶
| Parameter | Required | Description |
|---|---|---|
| target_agent_id | MUST | Identifier of the agent to delegate to |
| task | MUST | ATP method call (or sequence) to execute |
| authority_scope | MUST | Scope granted to sub-agent — MUST be a strict subset of delegating agent's scope |
| delegation_token | MUST | Signed token proving delegation authority |
| callback | SHOULD | ATP endpoint for result delivery |
| deadline | MAY | Maximum time for task completion |
Security note: the authority_scope in a DELEGATE request MUST NOT exceed the delegating agent's own Authority-Scope. Servers MUST enforce this and MUST return 451 Scope Violation if violated. This is the protocol-level defense against authority laundering. Idempotent: No.¶
Purpose: Initiate a multi-agent coordinated task where two or more agents work in parallel or in defined roles toward a shared goal. Unlike DELEGATE (hierarchical), COLLABORATE is peer-to-peer.¶
| Parameter | Required | Description |
|---|---|---|
| collaborators | MUST | List of Agent-IDs invited to collaborate |
| objective | MUST | Shared goal expressed as a task description or structured specification |
| role_assignments | SHOULD | Map of Agent-IDs to roles within the collaboration |
| coordination_model | SHOULD | parallel, sequential, or consensus |
| result_aggregation | MAY | How results from collaborators are combined |
Response: Collaboration session receipt with collaboration_id. Each collaborator receives an ATP NOTIFY to join. Idempotent: No.¶
Purpose: Explicit acknowledgment of a prior action, state, or data item. Creates a signed attestation record.¶
| Parameter | Required | Description |
|---|---|---|
| target_id | MUST | ID of the action, booking, schedule, or item being confirmed |
| status | MUST | accepted, rejected, or deferred |
| reason | SHOULD (if rejected/deferred) | Explanation of the decision |
| attestation | MAY | Agent-signed confirmation payload for audit |
Response: Confirmation receipt with timestamp and attestation_id. Idempotent: Yes.¶
Purpose: Route a task, decision, or exception to a human principal or higher-authority agent when the current agent cannot or should not proceed. ESCALATE is the protocol-level expression of meaningful friction in AI systems — a first-class method, not a failure code.¶
| Parameter | Required | Description |
|---|---|---|
| task_id | MUST | The task or method invocation triggering escalation |
| reason | MUST | Structured reason: confidence_threshold, scope_limit, ethical_flag, ambiguous_instruction, resource_unavailable |
| context | MUST | Full context needed for the escalation recipient to act |
| priority | SHOULD | urgent, normal, or low |
| recipient | MAY | Specific human or agent to escalate to; if absent, routes to default handler |
| deadline | MAY | Time by which a response is needed |
Response: Escalation receipt with escalation_id and routing confirmation. The escalated task is paused until resolved via CONFIRM. Idempotent: Yes. An agent that escalates appropriately is functioning correctly. Governance frameworks built on ATP can use escalation frequency and reason codes as observability signals for systemic issues.¶
Purpose: Asynchronous push of information from an agent to a recipient. Does not expect a response. Fire-and-forget. Delivery confirmation (if required) returned via a subsequent CONFIRM from the recipient.¶
| Parameter | Required | Description |
|---|---|---|
| recipient | MUST | Target Agent-ID, human endpoint, or broadcast group |
| content | MUST | Notification payload |
| urgency | SHOULD | critical, informational, or background |
| delivery_guarantee | MAY | at_most_once, at_least_once, or exactly_once |
| expiry | MAY | Timestamp after which the notification should not be delivered |
Response: Delivery receipt with notification_id. Idempotent: No.¶
| Method | Intent | State-Modifying | Idempotent | Primary Error Codes |
|---|---|---|---|---|
| QUERY | Retrieve information | No | Yes | 404, 422 |
| SUMMARIZE | Synthesize content | No | Yes | 400, 422 |
| BOOK | Reserve a resource | Yes | No | 409, 451 |
| SCHEDULE | Plan future actions | Yes | No | 400, 409 |
| LEARN | Update agent context | Yes | No | 400, 403 |
| DELEGATE | Transfer task to sub-agent | Yes | No | 403, 451, 551 |
| COLLABORATE | Coordinate peer agents | Yes | No | 404, 403 |
| CONFIRM | Attest to a prior action | Yes | Yes | 404, 400 |
| ESCALATE | Defer to human/authority | Yes | Yes | 404 |
| NOTIFY | Push information | No | No | 400, 404 |
ATP defines a formal Method Registry maintained by IANA (see Section 8.2). Any party may submit a new method for registration. The registration procedure is Expert Review, and registration MUST be accompanied by a published specification — at minimum an IETF Internet-Draft or equivalent publicly available document. Registered methods MUST:¶
Have a unique uppercase ASCII name¶
Define required and optional parameters¶
Define expected response structure¶
Specify idempotency behavior¶
Specify applicable error codes¶
Include a security considerations section¶
Be accompanied by a published reference specification (Internet-Draft or RFC)¶
Experimental methods MAY be used prior to registration using the X- prefix convention (e.g., X-NEGOTIATE). Experimental methods MUST NOT be used in production deployments without registration.¶
Capability negotiation occurs during session establishment. The server returns a Supported-Methods header listing the methods it implements. Clients SHOULD check this list before invoking non-core methods.¶
The ATP method vocabulary is organized into three tiers reflecting different levels of universality, specificity, and domain relevance.¶
The baseline vocabulary required for ATP compliance. Every conformant ATP implementation MUST support all Tier 1 methods.¶
Registered in the IANA ATP Method Registry and available for use in any ATP implementation. Not required for baseline compliance but SHOULD be implemented where their semantics apply. Defined in [ATP-METHODS].¶
Domain-specific method sets defined and registered by industry communities as named ATP profiles. Valid within deployments that declare support for the relevant profile. Not required in general-purpose implementations.¶
All ATP methods are organized into five categories:¶
Retrieve data, resources, or state without modifying it. Typically idempotent; no state modification.¶
Process, transform, or analyze information and produce a derived result. Typically idempotent given the same input.¶
Perform state-changing operations with external systems, resources, or records. Not idempotent by default; subject to reversibility classification.¶
Send information, notifications, or signals to recipients. Fire-and- forget or confirm-receipt delivery models.¶
Coordinate, sequence, or manage multiple agents, tasks, or workflows. May spawn sub-agents or sessions; delegation chain semantics apply.¶
| Core Method | Category |
|---|---|
| QUERY | Acquire |
| SUMMARIZE | Compute |
| BOOK | Transact |
| SCHEDULE | Orchestrate |
| LEARN | Compute |
| DELEGATE | Orchestrate |
| COLLABORATE | Orchestrate |
| CONFIRM | Transact |
| ESCALATE | Orchestrate |
| NOTIFY | Communicate |
The following methods constitute the initial Tier 2 registration set, defined in [ATP-METHODS]. Listed here by category with brief semantic definitions; full parameter specifications are in the companion document.¶
ACQUIRE category: FETCH, SEARCH, SCAN, PULL, IMPORT, FIND.¶
COMPUTE category: EXTRACT, FILTER, VALIDATE, TRANSFORM, TRANSLATE, NORMALIZE, PREDICT, RANK, MAP.¶
TRANSACT category: REGISTER, SUBMIT, TRANSFER, PURCHASE, SIGN, MERGE, LINK, LOG, SYNC, PUBLISH.¶
COMMUNICATE category: REPLY, SEND, REPORT.¶
ORCHESTRATE category: MONITOR, ROUTE, RETRY, PAUSE, RESUME, RUN, CHECK.¶
Notable constraints: PURCHASE MUST carry explicit principal_id and scope enforcement; 451 Scope Violation applies if payments:purchase is not in the agent's Authority-Scope. RUN requires explicit procedure_id parameter; implementations MUST NOT accept free-form execution strings.¶
A set of short-form verb methods — SET, TAKE, OPEN, START, CALL, MAKE, TURN, BREAK — are provisionally catalogued as candidates for Tier 2 registration. These verbs are highly context-dependent and their semantics vary significantly across deployment domains.¶
Short-form methods will be registered individually only when a published companion specification provides unambiguous semantic definitions demonstrably distinct from existing registered methods. Provisional registrations using the X- prefix (e.g., X-SET, X-CALL) are encouraged during the experimentation period.¶
ATP recognizes that specific industries require method vocabularies reflecting domain-specific operations that would be inappropriate in a general-purpose standard. Industry profile method sets are defined and registered as named ATP profiles. A profile is a published companion specification that:¶
Declares a profile name (e.g., atp-profile-healthcare, atp-profile-financial, atp-profile-legaltech)¶
Defines one or more industry-specific methods with full parameter specifications, error codes, and security considerations¶
Specifies which Tier 1 and Tier 2 methods are REQUIRED, RECOMMENDED, or NOT APPLICABLE within the profile¶
Addresses regulatory or compliance considerations specific to the domain (e.g., HIPAA for healthcare, PCI-DSS for financial services)¶
Illustrative examples of potential industry profile methods (not yet registered; listed for directional purposes only):¶
Healthcare: PRESCRIBE, AUTHORIZE, REFER, DISPENSE, TRIAGE, CONSENT, REDACT¶
Financial services: SETTLE, RECONCILE, HEDGE, CLEAR, UNDERWRITE, KYC, AML¶
Legal and compliance: ATTEST, NOTARIZE, DISCLOSE, REDLINE, EXECUTE, PRESERVE¶
Infrastructure: PROVISION, DEPROVISION, ROLLBACK, SNAPSHOT, FAILOVER¶
Industry communities are encouraged to develop and submit profile specifications through the IETF process. The IANA ATP Method Registry will maintain a profile index alongside the core and standard method registries.¶
Submit an Internet-Draft to the IETF providing full method specification per Section 6.4. The Designated Expert reviews for semantic uniqueness, clarity, and security considerations.¶
Submit a profile specification to the IETF (or a recognized domain standards body with an established ATP registry liaison) covering all methods in the profile and profile compliance requirements.¶
Use the X- prefix without registration. Implementations MUST NOT deploy experimental methods in production without completing the registration process. Experimental method names do not reserve the unprefixed name.¶
The ATP Method Registry is published at: https://www.iana.org/assignments/atp-methods/¶
This section satisfies the mandatory IETF Security Considerations requirement. All ATP implementations MUST address the considerations described here.¶
All ATP connections MUST use TLS 1.3 or higher. Implementations MUST reject connections using TLS 1.2 or below. Certificate validation follows standard PKI practices per [RFC5280]. Servers MUST present a valid certificate.¶
Every ATP request MUST include Agent-ID and Principal-ID header fields. In the base specification, these fields are not cryptographically authenticated — they are self-asserted but logged mandatorily for auditability. Implementations SHOULD use logging and anomaly detection to identify inconsistencies.¶
Full cryptographic verification of agent identity and Authority-Scope is provided by the ATP Agent Certificate extension [ATP-CERT]. That extension binds Agent-ID, Principal-ID, and Authority-Scope to an X.509 v3 certificate presented during TLS mutual authentication, enabling infrastructure-layer identity and scope verification without application-layer access. Implementers planning deployments that require verified agent identity SHOULD plan for the Agent Certificate extension.¶
Note: The Agent Certificate extension may be subject to pending intellectual property claims. See Section 7.7 and the IPR Notice preceding the Abstract for details. The licensor is prepared to grant a royalty-free license to implementers.¶
Every ATP server MUST log Agent-ID and Principal-ID fields for every request, creating an attributable audit trail even in deployments without the Certificate extension.¶
Threat: A malicious actor forges Agent-ID and Principal-ID headers to impersonate a trusted agent. Base spec mitigation: mandatory logging and anomaly detection. Full mitigation requires [ATP-CERT].¶
Threat: A malicious agent inserts itself into a DELEGATE chain. Mitigation: Delegation-Chain headers are logged at each hop. 551 Authority Chain Broken is returned if any chain entry is unverifiable. Full mitigation requires [ATP-CERT] for signed delegation tokens.¶
Threat: Agents — compromised, misconfigured, or adversarial — generate extremely high request volumes. Mitigation: 429 Rate Limited status code. Rate limiting SHOULD be applied per Agent-ID and per Principal-ID. When [ATP-CERT] is deployed, per-Agent-ID quotas can be cryptographically tied to verified identity, preventing quota evasion through Agent-ID spoofing.¶
Threat: An attacker intercepts or forges a Session-ID. Mitigation: mandatory TLS protects sessions in transit. Session-IDs MUST be cryptographically random with minimum 128 bits of entropy. Servers MUST validate that Session-ID, Agent-ID, and TLS client identity are consistent.¶
Threat: A compromised agent or intermediary suppresses ESCALATE requests, preventing human oversight. Mitigation: compliant implementations MUST route ESCALATE requests directly to the declared escalation handler without modification. Intermediaries MUST NOT drop, delay, or modify ESCALATE requests. Escalation handlers SHOULD implement independent receipt confirmation.¶
Agent identity headers carry information about agent behavior that may be sensitive:¶
Agent-ID and Principal-ID together may reveal organizational structure¶
Session-ID and Task-ID reveal workflow patterns¶
Delegation-Chain reveals multi-agent architecture¶
ATP logs containing these fields MUST be treated as sensitive operational data. Operators MUST implement appropriate access controls, retention limits, and data minimization practices consistent with applicable privacy regulations.¶
Where privacy-preserving attribution is required, implementations MAY use pseudonymous Agent-IDs with a separate trusted resolution service. Under this model, the Agent-ID transmitted in ATP headers is an opaque, unlinkable identifier; a trusted resolution service — accessible only to authorized parties — maps the opaque identifier to the true agent identity for audit and accountability purposes. The architecture for pseudonymous agent identity resolution is reserved for a future companion document.¶
ATP's agent identity headers provide a mechanism for more precise denial-of-service mitigation than is possible with HTTP. Rate limiting SHOULD be applied per Agent-ID and per Principal-ID in addition to per-IP-address controls.¶
When [ATP-CERT] is deployed, per-Agent-ID rate limiting can be cryptographically tied to verified agent identity, preventing quota evasion through Agent-ID rotation. Implementations planning high-volume governed agent deployments SHOULD plan for [ATP-CERT] as part of their denial-of-service mitigation strategy.¶
Additional recommended mitigations: Priority header enforcement (Priority: background requests SHOULD have lower rate limit headroom than Priority: critical); per-governance-zone aggregate limits in multi-tenant deployments; and circuit breaker patterns for ESCALATE request floods.¶
The core ATP specification — including all base methods, header fields, status codes, connection model, and IANA registrations defined in this document — is intended for open implementation without royalty obligation.¶
Certain extensions referenced in this document may be subject to pending patent applications by the author, specifically: the Agent Certificate extension [ATP-CERT], which provides cryptographic binding of agent identity and authority scope to ATP header fields; and the ACTIVATE method, which provides ATP-native transmission and activation of governed agent packages. Implementers of the core ATP specification are not affected by any intellectual property claims on these extensions.¶
The licensor is prepared to grant a royalty-free license to implementers for any patent claims that cover contributions in this document and its referenced extensions, consistent with the IETF's IPR framework under [RFC8179].¶
IPR disclosures have been filed with the IETF Secretariat and are available at: https://datatracker.ietf.org/ipr/¶
This document requests the following IANA actions upon advancement to RFC status.¶
Registration of the following service names in the IANA Service Name and Transport Protocol Port Number Registry:¶
| Service Name | Port | Transport | Description |
|---|---|---|---|
| atp | TBD | TCP | Agent Transfer Protocol over TCP/TLS |
| atp-quic | TBD | UDP | Agent Transfer Protocol over QUIC |
Establishment of a new IANA registry: Agent Transfer Protocol Methods.¶
Agent Transfer Protocol Methods¶
Expert Review per [RFC8126], with the additional requirement that each registration be accompanied by a published specification — at minimum a publicly available Internet-Draft or equivalent document. The Designated Expert SHOULD verify that the proposed method name is unique, the reference specification is publicly accessible, and the method definition includes the required fields (parameters, response structure, idempotency, error codes, security considerations).¶
This document¶
Initial registrations:¶
| Method | Status | Reference |
|---|---|---|
| QUERY | Permanent | This document, Section 6.2 |
| SUMMARIZE | Permanent | This document, Section 6.2 |
| BOOK | Permanent | This document, Section 6.2 |
| SCHEDULE | Permanent | This document, Section 6.2 |
| LEARN | Permanent | This document, Section 6.2 |
| DELEGATE | Permanent | This document, Section 6.2 |
| COLLABORATE | Permanent | This document, Section 6.2 |
| CONFIRM | Permanent | This document, Section 6.2 |
| ESCALATE | Permanent | This document, Section 6.2 |
| NOTIFY | Permanent | This document, Section 6.2 |
Establishment of a new IANA registry: Agent Transfer Protocol Status Codes.¶
Agent Transfer Protocol Status Codes¶
Expert Review + published specification required.¶
The following ATP-specific status codes — those with no HTTP equivalent — are registered with full definitions:¶
| Code | Name | Definition | Reference |
|---|---|---|---|
| 451 | Scope Violation | The requested action is outside the Authority-Scope declared in the request headers. The server MUST log this event. The agent MUST NOT retry the same request without modifying its Authority-Scope declaration. This is a governance signal, not a protocol error. | This document, Section 5.5 |
| 550 | Delegation Failure | A sub-agent to which a task was delegated via the DELEGATE method failed to complete the task within the declared deadline or returned an error. The response body SHOULD contain the sub-agent's error details. | This document, Section 5.5 |
| 551 | Authority Chain Broken | One or more entries in the Delegation-Chain header cannot be verified as part of a valid and continuous delegation sequence. The specific unverifiable entry SHOULD be identified in the response body. The server MUST log this event. | This document, Section 5.5 |
ATP header fields are distinct from HTTP header fields and are registered in a new IANA registry: Agent Transfer Protocol Header Fields.¶
Agent Transfer Protocol Header Fields¶
Expert Review + published specification required.¶
ATP does not reuse the HTTP Field Name Registry, as ATP header fields have different semantics, applicability, and versioning constraints from HTTP fields. HTTP header fields are not automatically valid in ATP, and ATP header fields are not valid HTTP fields.¶
Initial registrations (all Permanent): ATP-Version, ATP-Method, ATP-Status, Agent-ID, Principal-ID, Authority-Scope, Session-ID, Task-ID, Delegation-Chain, Priority, TTL, Server-Agent-ID, Attribution-Record, Continuation-Token, Supported-Methods.¶
Registration of the atp:// URI scheme per [RFC7595], as described in Section 5.8.6 of this document.¶
The following examples use a human-readable pseudo-wire format with HTTP-style headers followed by a JSON body. The Content-Type for all ATP message bodies is application/atp+json.¶
ATP/1.0 QUERY
Agent-ID: agt-7f3a9c2d
Principal-ID: usr-chris-hood
Authority-Scope: documents:query knowledge:query
Session-ID: sess-a1b2c3d4
Task-ID: task-0042
TTL: 3000
Content-Type: application/atp+json
{
"task_id": "task-0042",
"parameters": {
"intent": "Key arguments against MCP in the context
of HTTP overhead",
"scope": ["documents:research", "knowledge:session"],
"format": "structured",
"confidence_threshold": 0.75
}
}
ATP/1.0 200 OK
Task-ID: task-0042
Server-Agent-ID: srv-knowledge-01
Attribution-Record: [signed attribution token]
Content-Type: application/atp+json
{
"status": 200,
"task_id": "task-0042",
"result": {
"results": [{"content": "...", "source": "doc-atp-research",
"confidence": 0.91}],
"result_count": 1
}
}
¶
ATP/1.0 BOOK
Agent-ID: agt-travel-planner
Principal-ID: usr-chris-hood
Authority-Scope: booking:* calendar:book
Session-ID: sess-trip-2026-04
Task-ID: task-0107
Priority: normal
Content-Type: application/atp+json
{
"method": "BOOK",
"task_id": "task-0107",
"parameters": {
"resource_id": "flight-AA2847",
"principal_id": "usr-chris-hood",
"time_slot": "2026-04-15T08:00:00Z",
"options": {"seat_preference": "aisle", "class": "economy"},
"confirm_immediately": true
}
}
ATP/1.0 200 OK
Task-ID: task-0107
Attribution-Record: [signed attribution token]
Content-Type: application/atp+json
{
"status": 200,
"task_id": "task-0107",
"result": {
"booking_id": "BK-2026-0107",
"status": "confirmed",
"resource_id": "flight-AA2847",
"confirmation_code": "XQRT7Y"
}
}
¶
ATP/1.0 ESCALATE
Agent-ID: agt-procurement-03
Principal-ID: usr-finance-dept
Authority-Scope: booking:* payments:confirm
Session-ID: sess-procurement-q2
Task-ID: task-0881
Priority: urgent
Content-Type: application/atp+json
{
"method": "ESCALATE",
"task_id": "task-0881",
"parameters": {
"task_id": "task-0880",
"reason": "scope_limit",
"context": {
"attempted_action": "BOOK",
"resource": "vendor-contract-750k",
"block_reason": "Contract value exceeds agent
authorization threshold"
},
"recipient": "usr-cfo",
"deadline": "2026-03-19T09:00:00Z"
}
}
ATP/1.0 202 Accepted
Task-ID: task-0881
Server-Agent-ID: srv-escalation-handler
Content-Type: application/atp+json
{
"status": 202,
"task_id": "task-0881",
"result": {
"escalation_id": "ESC-0881",
"routed_to": "usr-cfo",
"status": "pending_review",
"task_paused": true,
"estimated_review_by": "2026-03-19T09:00:00Z"
}
}
¶
| Criterion | ATP | HTTP/REST | gRPC | A2A / MCP |
|---|---|---|---|---|
| Agent-native methods | Yes | No | No | Partial |
| Intent semantics at protocol level | Native | None | None | Messaging layer only |
| Built-in agent identity | Yes | No | No | No |
| Authority scope enforcement | Protocol-level | None | None | Application-layer |
| Built-in attribution/audit | Yes | No | No | Varies by impl. |
| Transport flexibility | TCP/UDP/QUIC | TCP/TLS | HTTP/2 | HTTP |
| Escalation as first-class primitive | Yes | No | No | No |
| Ecosystem maturity | Proposed | Mature | Mature | Emerging |
| Governance/observability | Native | Manual/bolt-on | Manual | Limited |
| Method registry extensibility | Yes (Expert Review) | Frozen (IETF Review) | N/A | N/A |
| Open core / royalty-free | Yes | Yes | Yes | Yes |
HTTP's method registry (registered with IETF Review per [RFC9110]) is effectively frozen for new semantic methods because any new HTTP method must be backward-compatible with existing HTTP infrastructure globally. ATP's Expert Review + published spec procedure enables the protocol to evolve its method vocabulary as the agent ecosystem develops, without the backward-compatibility constraints of the HTTP method space.¶
A software system that executes tasks, makes decisions, and takes actions without continuous human supervision per transaction.¶
The application-layer protocol defined in this document, providing a dedicated transport environment for agent traffic.¶
A unique identifier for a specific agent instance, present in all ATP request headers. In the base spec, self-asserted. With [ATP-CERT], cryptographically bound to a verified identity.¶
A signed, logged record of an agent action, sufficient for audit and compliance purposes.¶
A declared set of permissions defining what actions an agent is authorized to take, expressed as space-separated domain:action tokens.¶
An ordered record of Agent-IDs representing the sequence of delegations that led to the current request.¶
An ATP method representing an agent's intentional deferral of a decision or action to a human principal or higher-authority agent. A first-class method, not a failure code.¶
An ATP method name expressing the agent's purpose, as distinguished from HTTP resource-operation verbs (GET, POST, PUT, DELETE).¶
The IANA-maintained registry of valid ATP method names and their specifications. Registration requires Expert Review and a published specification.¶
The human, organization, or system that authorized an agent to act and is accountable for its actions.¶
The identifier of the principal on whose behalf an agent operates, present in all ATP request headers.¶
An ATP-aware infrastructure component — load balancer, gateway, proxy — that enforces Authority-Scope compliance on ATP requests without application-layer access. Requires [ATP-CERT].¶
An ATP status code returned when an agent requests an action outside its declared Authority-Scope. A governance signal, not a protocol error. MUST be logged.¶
An ATP persistent connection context shared across multiple method invocations within a single agent workflow.¶
An ATP status code returned when one or more entries in the Delegation-Chain header cannot be verified as part of a valid and continuous delegation sequence. MUST be logged.¶