Agent Communication Protocols S. Nandakumar
Internet-Draft Cisco
Intended status: Standards Track C. Jennings
Expires: 30 December 2026 Cisco Systems
28 June 2026
PACE: Protocol for Agent Communication Exchange
draft-nandakumar-agentproto-moq-pace-00
Abstract
This document defines the Protocol for Agent Communication Exchange
(PACE), a session protocol for AI agent communication over Media over
QUIC Transport (MOQT). PACE provides session lifecycle management,
multi-modal data exchange, agent identity verification, and delegated
authorization within MOQT's publish/subscribe model, supporting
point-to-point and point-to-multipoint topologies through relay
infrastructure.
About This Document
This note is to be removed before publishing as an RFC.
The latest revision of this draft can be found at
https://suhasHere.github.io/draft-a2a-moqt-transport/draft-
nandakumar-ai-agent-moq-transport.html. Status information for this
document may be found at https://datatracker.ietf.org/doc/draft-
nandakumar-agentproto-moq-pace/.
Discussion of this document takes place on the Agent Communication
Protocols Working Group mailing list (mailto:agent2agent@ietf.org),
which is archived at https://mailarchive.ietf.org/arch/browse/
agent2agent/. Subscribe at https://www.ietf.org/mailman/listinfo/
agent2agent/.
Source for this draft and an issue tracker can be found at
https://github.com/suhasHere/draft-a2a-moqt-transport.
Status of This Memo
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/.
Nandakumar & Jennings Expires 30 December 2026 [Page 1]
Internet-Draft PACE over MOQT June 2026
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 30 December 2026.
Copyright Notice
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. Code Components
extracted from this document must include Revised BSD License text as
described in Section 4.e of the Trust Legal Provisions and are
provided without warranty as described in the Revised BSD License.
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1. Design Goals . . . . . . . . . . . . . . . . . . . . . . 4
1.2. Requirements Language . . . . . . . . . . . . . . . . . . 5
2. Architecture Overview . . . . . . . . . . . . . . . . . . . . 5
2.1. Why MOQT? . . . . . . . . . . . . . . . . . . . . . . . . 5
3. MOQT Mapping . . . . . . . . . . . . . . . . . . . . . . . . 6
3.1. Namespace Organization . . . . . . . . . . . . . . . . . 6
3.1.1. Agent Namespace . . . . . . . . . . . . . . . . . . . 6
3.1.2. Session Communication Namespace . . . . . . . . . . . 7
3.1.3. Session Discovery Namespace . . . . . . . . . . . . . 8
3.2. Transport Binding . . . . . . . . . . . . . . . . . . . . 8
3.2.1. Connection Establishment . . . . . . . . . . . . . . 8
3.2.2. Track Organization . . . . . . . . . . . . . . . . . 9
3.2.3. Message Serialization . . . . . . . . . . . . . . . . 9
4. Session Management . . . . . . . . . . . . . . . . . . . . . 9
4.1. Session Lifecycle . . . . . . . . . . . . . . . . . . . . 9
4.2. Session Establishment . . . . . . . . . . . . . . . . . . 10
4.2.1. Session Parameters . . . . . . . . . . . . . . . . . 11
4.2.2. MOQT Setup Extensions . . . . . . . . . . . . . . . . 12
4.3. Timed Sessions . . . . . . . . . . . . . . . . . . . . . 12
4.4. Session Update . . . . . . . . . . . . . . . . . . . . . 12
4.5. Session Recovery . . . . . . . . . . . . . . . . . . . . 12
4.6. Session Termination . . . . . . . . . . . . . . . . . . . 13
5. Agent Identity and Discovery . . . . . . . . . . . . . . . . 13
5.1. Agent Identity Model . . . . . . . . . . . . . . . . . . 13
Nandakumar & Jennings Expires 30 December 2026 [Page 2]
Internet-Draft PACE over MOQT June 2026
5.1.1. Agent Identity Token . . . . . . . . . . . . . . . . 13
5.1.2. Delegation Chains . . . . . . . . . . . . . . . . . . 14
5.2. Agent Discovery . . . . . . . . . . . . . . . . . . . . . 14
5.2.1. Phase 1: Discovering Agents on the Network . . . . . 14
5.2.2. Phase 2: Following an Agent . . . . . . . . . . . . . 15
5.2.3. Agent Card . . . . . . . . . . . . . . . . . . . . . 15
6. Multi-Modal Data Exchange . . . . . . . . . . . . . . . . . . 16
6.1. Modality Types . . . . . . . . . . . . . . . . . . . . . 16
6.2. Channel Architecture . . . . . . . . . . . . . . . . . . 16
6.3. Priority and Quality of Service . . . . . . . . . . . . . 16
6.4. Request/Response Pattern . . . . . . . . . . . . . . . . 17
6.5. Streaming Pattern . . . . . . . . . . . . . . . . . . . . 18
6.6. Real-Time Media Exchange . . . . . . . . . . . . . . . . 18
7. Communication Topologies . . . . . . . . . . . . . . . . . . 18
8. Protocol Bindings . . . . . . . . . . . . . . . . . . . . . . 19
8.1. Binding Architecture . . . . . . . . . . . . . . . . . . 19
8.2. A2A Binding . . . . . . . . . . . . . . . . . . . . . . . 19
8.2.1. Namespace Structure . . . . . . . . . . . . . . . . . 20
8.2.2. A2A Operation Mapping . . . . . . . . . . . . . . . . 20
8.2.3. Message Format . . . . . . . . . . . . . . . . . . . 21
8.2.4. Priority Mapping . . . . . . . . . . . . . . . . . . 22
8.2.5. Streaming Support . . . . . . . . . . . . . . . . . . 23
8.2.6. A2A Agent Card with MOQT Extension . . . . . . . . . 23
8.3. MCP Binding . . . . . . . . . . . . . . . . . . . . . . . 24
8.4. AutoGen Binding . . . . . . . . . . . . . . . . . . . . . 24
8.4.1. Namespace Structure . . . . . . . . . . . . . . . . . 24
8.4.2. Message Format . . . . . . . . . . . . . . . . . . . 25
8.4.3. Conversation Patterns . . . . . . . . . . . . . . . . 25
8.4.4. Priority Mapping . . . . . . . . . . . . . . . . . . 26
8.5. Generic JSON-RPC Binding . . . . . . . . . . . . . . . . 26
8.5.1. Namespace Structure . . . . . . . . . . . . . . . . . 26
8.5.2. Message Format . . . . . . . . . . . . . . . . . . . 26
8.5.3. Extension Mechanism . . . . . . . . . . . . . . . . . 27
9. Authorization and Security . . . . . . . . . . . . . . . . . 27
9.1. Authorization Model . . . . . . . . . . . . . . . . . . . 27
9.1.1. Behavior-Driven Scopes . . . . . . . . . . . . . . . 27
9.1.2. Delegated Authorization . . . . . . . . . . . . . . . 27
9.1.3. Confirmation and Evidence . . . . . . . . . . . . . . 27
9.2. Transport Security . . . . . . . . . . . . . . . . . . . 28
9.3. Privacy Considerations . . . . . . . . . . . . . . . . . 28
10. Scalability and Reliability . . . . . . . . . . . . . . . . . 28
10.1. Failure Modes and Recovery . . . . . . . . . . . . . . . 28
11. Security Considerations . . . . . . . . . . . . . . . . . . . 29
12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 29
12.1. MOQT Setup Parameter Registry . . . . . . . . . . . . . 29
12.2. PACE Protocol Binding Registry . . . . . . . . . . . . . 29
12.3. PACE Message Type Registry . . . . . . . . . . . . . . . 30
13. References . . . . . . . . . . . . . . . . . . . . . . . . . 30
Nandakumar & Jennings Expires 30 December 2026 [Page 3]
Internet-Draft PACE over MOQT June 2026
13.1. Normative References . . . . . . . . . . . . . . . . . . 31
13.2. Informative References . . . . . . . . . . . . . . . . . 31
Appendix A. Example Workflows . . . . . . . . . . . . . . . . . 32
A.1. Agent-to-Agent: Task Delegation . . . . . . . . . . . . . 32
A.2. Agent-to-Tool: MCP Tool Invocation . . . . . . . . . . . 33
A.3. Multi-Agent Collaboration . . . . . . . . . . . . . . . . 34
A.4. Agent-to-Tool with Streaming: Long-Running Operation . . 36
Appendix B. Acknowledgments . . . . . . . . . . . . . . . . . . 36
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 36
1. Introduction
AI agents are autonomous software systems that interact with other
agents and tools to complete tasks. As agent communication expands
across the Internet, it requires: verifiable agent identity
independent of users, capability discovery and collaboration across
network boundaries, multi-modal data exchange (text, audio, video)
with session management, and delegated authorization across agent
chains.
This document defines the Protocol for Agent Communication Exchange
(PACE), a session layer over Media over QUIC Transport (MOQT)
[MoQ-TRANSPORT]. PACE enables diverse agent protocols to leverage
MOQT's publish/subscribe model, relay-based fan-out, built-in
prioritization, and efficient multiplexing over QUIC.
1.1. Design Goals
1. *Session Lifecycle*: Timed sessions with establishment, update,
suspension, and termination.
2. *Multi-Modal*: Concurrent real-time media, chat, and operations.
3. *Scalable*: Relay-based fan-out with failure recovery.
4. *Flexible Topologies*: Point-to-point and point-to-multipoint.
5. *Agent Identity*: Authentication independent of user identity
with delegated authorization.
6. *Protocol Agnostic*: Usable by A2A, MCP, and custom protocols.
Nandakumar & Jennings Expires 30 December 2026 [Page 4]
Internet-Draft PACE over MOQT June 2026
1.2. Requirements Language
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, as shown here.
2. Architecture Overview
The PACE architecture layers as follows:
┌─────────────────────────────────────────────────────────┐
│ Application Protocols (A2A, MCP, AutoGen, Custom) │
├─────────────────────────────────────────────────────────┤
│ PACE: Sessions │ Identity │ Auth │ Multi-Modal │ QoS │
├─────────────────────────────────────────────────────────┤
│ MOQT: Pub/Sub │ Namespace Routing │ Relay Caching │
├─────────────────────────────────────────────────────────┤
│ QUIC / WebTransport: TLS 1.3 │ Mux │ Migration │
└─────────────────────────────────────────────────────────┘
Figure 1: PACE Architecture
2.1. Why MOQT?
Media over QUIC Transport (MOQT) [MoQ-TRANSPORT] is a publish/
subscribe protocol over QUIC. PACE adopts MOQT as its transport
substrate for the following reasons:
* *Native pub/sub* — Agents publish and subscribe without polling or
long-lived HTTP connections; the relay handles fan-out
* *Prefix-based routing* — SUBSCRIBE_TRACKS on an agent's prefix
automatically delivers all current and future tracks, enabling
session notification without dedicated signaling channels
* *Relay architecture* — No direct peer-to-peer connections
required; relays provide NAT traversal and load balancing out of
the box
* *Multi-party fan-out* — A single PUBLISH reaches all subscribers
via relay; no application-level broadcast logic needed for multi-
agent collaboration
* *Relay caching* — Late-joining agents receive cached objects,
enabling session recovery and mid-conversation catch-up without
peer retransmission
Nandakumar & Jennings Expires 30 December 2026 [Page 5]
Internet-Draft PACE over MOQT June 2026
* *Per-object priority* — Real-time audio/video, control messages,
and bulk transfers coexist on the same session with differentiated
QoS (0-255 priority scale)
* *Multiple latency spectrums* — A single MOQT session supports sub-
100ms real-time media, sub-second interactive messaging, and best-
effort bulk transfers simultaneously, matching the diverse
communication needs of AI agents
* *Scalability* — Relays MAY be organized hierarchically for
geographic distribution, enabling thousands of agents across
regions without requiring each agent to maintain direct
connections to all peers
* *QUIC foundation* — Connection migration (WiFi to cellular),
multiplexed streams, 0-RTT resumption, and mandatory TLS 1.3
* *Namespace-level access control* — Maps directly to agent
authorization scopes; relays enforce who can publish/subscribe to
which namespaces
3. MOQT Mapping
3.1. Namespace Organization
PACE uses MOQT's hierarchical namespace for routing, isolation, and
multiplexing. MOQT addresses content using a namespace tuple (an
ordered sequence of string fields) combined with a track name. PACE
organizes all communication into three namespace scopes defined in
the following subsections.
3.1.1. Agent Namespace
("pace", "agents", {agent-id}) -- {track}
This is an agent's persistent identity on the relay network. Each
agent publishes the following tracks:
* "card" — Agent Card containing capabilities, identity claims,
authentication schemes, and MOQT connectivity information
The common prefix ("pace", "agents") enables SUBSCRIBE_NAMESPACE-
based discovery of all agents on the network. Interested agents then
issue SUBSCRIBE_TRACKS on a discovered agent's prefix to receive all
current and future tracks published by that agent. See Section 5.2
for the complete discovery flow.
Nandakumar & Jennings Expires 30 December 2026 [Page 6]
Internet-Draft PACE over MOQT June 2026
3.1.2. Session Communication Namespace
("pace", "agents", {agent-id}, {session-id}) -- {track}
A session-id is a shared UUID representing a collaboration context —
it is not scoped to or owned by any single agent. Any agent can
generate a session-id to initiate a collaboration. When multiple
agents participate in a session, they each publish tracks under their
own agent namespace using the same session-id. Agents that have
issued SUBSCRIBE_TRACKS on a peer's agent prefix are automatically
notified (via relay-forwarded PUBLISH messages) when that peer
creates new session tracks.
Each agent in a session publishes the following tracks:
* "ctrl" — Session lifecycle messages (SESSION_INIT, SESSION_ACCEPT,
SESSION_UPDATE, SESSION_CLOSE)
* "chat" — Chat messages and streaming LLM output
* "audio" — Real-time audio stream
* "video" — Real-time video stream
* "ops/{req-id}" — Request/response operations (one track per
request)
Protocol bindings add prefix-scoped tracks to enable multiple
protocols to operate concurrently within a single session without
track name collisions:
* "a2a/{category}/{id}" — A2A protocol operations, where {category}
is the operation type (e.g., request, response, task, stream) and
{id} is the request or task identifier
* "mcp/{category}/{id}" — MCP protocol operations, where {category}
is the primitive type (e.g., tools, resources, prompts) and {id}
is the tool name or resource URI
* "ext/{proto}/{category}/{id}" — Custom protocol extensions, where
{proto} identifies the protocol
For example, the MCP over MOQT specification [MCP-MOQT] defines
tracks like (mcp, {session-id}, tools) -- ({tool-name}); within PACE,
this maps to track name "mcp/tools/{tool-name}" under the agent's
session namespace, preserving the MCP semantics while coexisting with
A2A or other protocol tracks in the same session.
Nandakumar & Jennings Expires 30 December 2026 [Page 7]
Internet-Draft PACE over MOQT June 2026
See Appendix A for concrete examples of agent-to-agent, agent-to-
tool, and multi-agent collaboration workflows.
3.1.3. Session Discovery Namespace
("pace", "discovery", "sessions", {agent-id}) -- {session-id}
Agents advertise their active sessions on this top-level discovery
namespace so that other agents can find sessions to join. Each agent
publishes one track per active session (the track name is the
session-id). Each object on a session track contains:
* session-id — The shared session UUID
* description — Human-readable purpose of the session
* participants — List of agent-ids currently in the session
* modalities — Supported data modalities (text, audio, video, etc.)
Agents discover active sessions by issuing SUBSCRIBE_NAMESPACE on
("pace", "discovery", "sessions").
3.2. Transport Binding
3.2.1. Connection Establishment
Agents MUST establish either a native QUIC connection or a
WebTransport [RFC9297] session as defined in [MoQ-TRANSPORT]. For
native QUIC connections, agents MUST use the ALPN value "moqt". For
WebTransport, the protocol is negotiated using the "WT-Available-
Protocols" mechanism as specified in [MoQ-TRANSPORT].
Upon establishing the MOQT session (CLIENT_SETUP / SERVER_SETUP), an
agent performs the bootstrap sequence to make itself discoverable:
1. *Announce*: PUBLISH_NAMESPACE on ("pace", "agents", {agent-id})
2. *Publish Agent Card*: PUBLISH on track "card" under its namespace
3. *Discover peers*: SUBSCRIBE_NAMESPACE on ("pace", "agents") to
learn about other agents on the network
See Section 5.2 for the full discovery flow that follows bootstrap.
Nandakumar & Jennings Expires 30 December 2026 [Page 8]
Internet-Draft PACE over MOQT June 2026
3.2.2. Track Organization
Each agent publishes exclusively on its own tracks. Other agents
issue SUBSCRIBE_TRACKS on a peer's agent prefix to receive all tracks
published by that peer, including session tracks. The relay handles
fan-out to all subscribers via prefix matching. This per-agent
publishing model ensures clear ownership and enables relay caching.
Namespace structure and track names are defined in Section 3.1.
3.2.3. Message Serialization
Protocol messages are encapsulated within MOQT objects using a PACE
envelope prepended to the payload:
+=========+==========+========================================+
| Field | Size | Description |
+=========+==========+========================================+
| version | 1 byte | PACE envelope version (currently 0x01) |
+---------+----------+----------------------------------------+
| flags | 1 byte | 0x01=compressed, 0x02=fragmented, |
| | | 0x04=encrypted |
+---------+----------+----------------------------------------+
| length | varint | Length of the serialized protocol |
| | | message |
+---------+----------+----------------------------------------+
| payload | variable | Serialized protocol message |
+---------+----------+----------------------------------------+
Table 1
Bindings SHOULD preserve native message formats. For example, A2A
messages retain their JSON-RPC 2.0 format; the PACE envelope wraps
the serialized JSON bytes.
4. Session Management
A PACE session represents a logical communication context between two
or more agents. Sessions provide lifetime management, context
preservation, and failure recovery. All session operations use the
namespace structure defined in Section 3.1.
4.1. Session Lifecycle
Sessions progress through defined states:
Nandakumar & Jennings Expires 30 December 2026 [Page 9]
Internet-Draft PACE over MOQT June 2026
IDLE ──establish──▶ PENDING ──accept──▶ ACTIVE ◀──update──┐
◀──reject──────────┘ │ │ │
suspend terminate │
▼ │ │
SUSPENDED ▼ │
│ │ CLOSED ◀──┘
│ └resume──▶ ACTIVE
└─timeout──▶ CLOSED
Figure 2: Session State Machine
IDLE: No session exists. Agent is available to initiate or accept
sessions.
PENDING: Establishment in progress (negotiation, authentication).
ACTIVE: Session established; data exchange occurring. May be
updated.
SUSPENDED: Temporarily inactive, state preserved. Transitions to
CLOSED on timeout.
CLOSED: Session terminated. Resources released.
4.2. Session Establishment
Session establishment creates a shared communication context between
two or more agents. Its goals are to negotiate capabilities and
modalities, exchange and verify identity tokens, and set up the MOQT
subscriptions so both agents can publish and receive messages.
*Prerequisite:* Both agents must have completed discovery Phase 2
(Section 5.2) — meaning they have issued SUBSCRIBE_TRACKS on each
other's agent prefix. This enables the relay to forward PUBLISH
messages between them automatically via prefix matching.
The following steps describe how Agent A (initiator) establishes a
session with Agent B (responder):
1. *A generates a session-id* (UUID).
2. *A publishes SESSION_INIT* — A issues PUBLISH on
("pace","agents","agent-a",{session-id}) -- "ctrl" containing
proposed session parameters (target=agent-b, capabilities,
modalities, identity token, supported protocols).
Nandakumar & Jennings Expires 30 December 2026 [Page 10]
Internet-Draft PACE over MOQT June 2026
3. *Relay forwards PUBLISH to B* — B's existing SUBSCRIBE_TRACKS on
("pace","agents","agent-a") prefix-matches the new track. The
relay forwards the PUBLISH message to B.
4. *B accepts the PUBLISH* — this implicitly subscribes B to A's
ctrl track. B receives the SESSION_INIT object, inspects the
parameters, and decides whether to accept.
5. *B publishes SESSION_ACCEPT* — B issues PUBLISH on
("pace","agents","agent-b",{session-id}) -- "ctrl" containing
accepted capabilities and modalities.
6. *Relay forwards PUBLISH to A* — A's existing SUBSCRIBE_TRACKS on
("pace","agents","agent-b") prefix-matches. The relay forwards
the PUBLISH message to A.
7. *A accepts the PUBLISH* — A receives the SESSION_ACCEPT object.
8. *Session is ACTIVE* — both agents can now publish additional
tracks under their respective session namespaces. The relay
forwards all new PUBLISH messages to the peer via the existing
SUBSCRIBE_TRACKS prefix match.
4.2.1. Session Parameters
The SESSION_INIT object contains:
* session-id: Globally unique session identifier (UUID)
* session-type: Short-lived (bounded duration) or long-lived
(indefinite)
* session-timeout: Maximum idle duration before automatic
termination
* max-participants: Maximum number of agents in the session
* supported-modalities: Bitmask of data modalities the agent can
handle
* identity-token: Agent identity token (see Section 5)
* supported-protocols: Application protocols offered (A2A, MCP,
etc.)
Nandakumar & Jennings Expires 30 December 2026 [Page 11]
Internet-Draft PACE over MOQT June 2026
4.2.2. MOQT Setup Extensions
PACE defines the following MOQT setup parameters negotiated during
CLIENT_SETUP/SERVER_SETUP:
+======================+============+=========================+
| Parameter | ID | Description |
+======================+============+=========================+
| pace-version | 0x50414301 | PACE protocol version |
+----------------------+------------+-------------------------+
| agent-identity | 0x50414302 | Agent identity token or |
| | | certificate reference |
+----------------------+------------+-------------------------+
| supported-protocols | 0x50414303 | Bitmask of application |
| | | protocols (A2A=0x01, |
| | | MCP=0x02) |
+----------------------+------------+-------------------------+
| auth-schemes | 0x50414304 | Supported |
| | | authentication schemes |
+----------------------+------------+-------------------------+
| session-capabilities | 0x50414305 | Session capability |
| | | flags |
+----------------------+------------+-------------------------+
Table 2
4.3. Timed Sessions
Sessions are either short-lived (bounded duration, auto-terminates on
completion or timeout) or long-lived (indefinite, survives idle
periods via SUSPENDED state). The session-timeout parameter defines
the maximum idle period before automatic transition to CLOSED.
4.4. Session Update
Active sessions can be updated by publishing a SESSION_UPDATE message
on the control track. Updates can modify modalities, participants,
authorization scopes, or timeout. All participants MUST acknowledge
the update before new parameters take effect.
4.5. Session Recovery
PACE provides graceful recovery from network and server failures:
QUIC Connection Migration: Sessions survive network path changes
(e.g., WiFi to cellular) via QUIC's connection ID mechanism
without re-establishing the MOQT session.
Nandakumar & Jennings Expires 30 December 2026 [Page 12]
Internet-Draft PACE over MOQT June 2026
Relay Caching: Relays cache recent objects, allowing reconnecting
agents to receive missed messages without requiring peer
retransmission.
Session Resumption: Agents resume SUSPENDED sessions by reconnecting
to the relay, re-issuing PUBLISH_NAMESPACE and SUBSCRIBE_TRACKS on
their agent prefix. The relay delivers cached objects from the
point of disconnection.
State Checkpointing: Agents SHOULD periodically publish state
checkpoints on a dedicated track, enabling recovery after relay
failures.
4.6. Session Termination
Sessions terminate explicitly via SESSION_CLOSE on the control track
or implicitly via timeout. Upon termination, all subscriptions are
cancelled, pending operations receive cancellation notifications, and
session resources are released after a configurable grace period.
5. Agent Identity and Discovery
5.1. Agent Identity Model
PACE authenticates agents independently of the users they represent.
This enables independent revocation, capability-scoped permissions,
audit trails for agent actions, and delegation chains.
5.1.1. Agent Identity Token
Each agent presents an identity token during session establishment.
The token format is based on JWT [RFC7519] with agent-specific
claims:
Nandakumar & Jennings Expires 30 December 2026 [Page 13]
Internet-Draft PACE over MOQT June 2026
+==================+=========================================+
| Claim | Description |
+==================+=========================================+
| agent-id | Globally unique agent identifier (UUID) |
+------------------+-----------------------------------------+
| issuer | Identity provider that issued the token |
+------------------+-----------------------------------------+
| subject | User or organization the agent serves |
+------------------+-----------------------------------------+
| capabilities | Agent capability descriptors |
+------------------+-----------------------------------------+
| scopes | Authorized operation scopes |
+------------------+-----------------------------------------+
| issued-at | Token issuance timestamp |
+------------------+-----------------------------------------+
| expires-at | Token expiration timestamp |
+------------------+-----------------------------------------+
| delegation-chain | Parent agent references (see below) |
+------------------+-----------------------------------------+
Table 3
The token is cryptographically signed by the issuing authority.
Agents MAY use the SD-JWT based identity mechanism defined in
[SD-AGENT] to support selective disclosure of identity attributes
during session establishment.
5.1.2. Delegation Chains
When an agent acts on behalf of another agent, the identity token
includes a delegation-chain field tracing the authorization path
(e.g., User → Coordinator → Researcher → Tool). Each entry records
the granting agent and the scope granted. Receiving agents verify
the complete chain to ensure each link has appropriate authorization.
5.2. Agent Discovery
Agent discovery uses MOQT's namespace operations to find agents and
follow their activity. Discovery operates on the Agent Namespace
scope defined in Section 3.1. Each agent is identified by a globally
unique agent-id (UUID), verifiable via the Agent Card (see
Section 5.2.3).
5.2.1. Phase 1: Discovering Agents on the Network
1. Each agent announces its presence by issuing PUBLISH_NAMESPACE on
("pace","agents",{agent-id}).
Nandakumar & Jennings Expires 30 December 2026 [Page 14]
Internet-Draft PACE over MOQT June 2026
2. Agents discover peers by issuing SUBSCRIBE_NAMESPACE on the
common prefix ("pace","agents").
3. The relay sends NAMESPACE messages to subscribers for each
matching PUBLISH_NAMESPACE, enabling agents to learn about each
other without prior knowledge.
If an agent-id is known out-of-band (e.g., from a registry or URL),
agents MAY skip Phase 1 and proceed directly to Phase 2.
5.2.2. Phase 2: Following an Agent
Once Agent B knows Agent A's namespace prefix, B issues
SUBSCRIBE_TRACKS on ("pace","agents","agent-a"). This establishes an
ongoing relationship where the relay forwards all PUBLISH messages
from A that match this prefix — including A's Agent Card and any
future session tracks A creates.
1. B issues SUBSCRIBE_TRACKS on ("pace","agents","agent-a").
2. The relay forwards A's PUBLISH for the "card" track to B.
3. B accepts the PUBLISH — this implicitly subscribes B to the card
track and B receives A's Agent Card objects.
4. When A later publishes session tracks under
("pace","agents","agent-a",{session-id}), the relay automatically
forwards those PUBLISH messages to B (prefix match), enabling B
to discover and join sessions without any explicit notification
mechanism.
A does the same for B by issuing SUBSCRIBE_TRACKS on
("pace","agents","agent-b").
5.2.3. Agent Card
Each agent publishes an Agent Card on track "card" under its
namespace ("pace","agents",{agent-id}). When capabilities change,
the agent publishes a new object (incrementing the group). Receivers
SHOULD verify the card's signature and expiration before acting on
its claims.
All Agent Cards MUST include:
* Agent identifier (UUID) and display name
* Supported modalities and protocols
Nandakumar & Jennings Expires 30 December 2026 [Page 15]
Internet-Draft PACE over MOQT June 2026
* Authentication schemes
* Identity claims (issuer, public key, expiration)
The card format is protocol-specific. For A2A agents, see
Section 8.2.6. Agent Cards MAY use selective disclosure [SD-AGENT]
to reveal only claims necessary for a given interaction.
6. Multi-Modal Data Exchange
PACE supports concurrent exchange of multiple data modalities within
a single session, each with appropriate quality of service.
6.1. Modality Types
PACE defines the following data modality classes:
+================+=========+======================+============+
| Modality | Latency | Examples | Delivery |
+================+=========+======================+============+
| Real-time | < 100ms | Voice, video, screen | Continuous |
| | | share | stream |
+----------------+---------+----------------------+------------+
| Semi-real-time | < 1s | Chat messages, | Ordered |
| | | streaming LLM output | objects |
+----------------+---------+----------------------+------------+
| Non-real-time | Best | Tool calls, file | Reliable |
| | effort | transfers, context | delivery |
+----------------+---------+----------------------+------------+
Table 4
6.2. Channel Architecture
Each modality maps to dedicated MOQT tracks within the Session
Communication Namespace (Section 3.1). Different modalities are
isolated by track name while sharing session context and
authorization.
6.3. Priority and Quality of Service
MOQT's 0-255 priority scale enables differentiated treatment of
messages based on urgency and modality. PACE defines the following
priority tiers:
Nandakumar & Jennings Expires 30 December 2026 [Page 16]
Internet-Draft PACE over MOQT June 2026
+================+==================+========================+
| Priority Range | Category | Use |
+================+==================+========================+
| 0-15 | Critical Control | Session termination, |
| | | emergency cancel |
+----------------+------------------+------------------------+
| 16-31 | Urgent Control | Error notifications, |
| | | auth revocation |
+----------------+------------------+------------------------+
| 32-63 | Real-time Media | Voice/video frames |
+----------------+------------------+------------------------+
| 64-95 | Interactive | Chat messages, |
| | | streaming LLM tokens |
+----------------+------------------+------------------------+
| 96-127 | Standard | Tool calls, request/ |
| | Operations | response |
+----------------+------------------+------------------------+
| 128-159 | Discovery | Capability cards, |
| | | agent advertisements |
+----------------+------------------+------------------------+
| 160-191 | Background | Telemetry, non- |
| | | critical notifications |
+----------------+------------------+------------------------+
| 192-255 | Bulk Transfer | File transfers, |
| | | context exchange |
+----------------+------------------+------------------------+
Table 5
6.4. Request/Response Pattern
Request/response interactions use coordinated publish operations.
Agent A publishes a request object on its own track
("pace","agents","agent-a",{sid}) -- "ops/{req-id}". Agent B, which
has subscribed to A's session namespace, receives the request,
processes it, and publishes the response on its own corresponding
track ("pace","agents","agent-b",{sid}) -- "ops/{req-id}". Agent A
receives the response through its subscription to B's session
namespace.
For a detailed example of request/response over MOQT tracks, see
[MCP-MOQT] which defines this pattern for MCP tool invocations.
Nandakumar & Jennings Expires 30 December 2026 [Page 17]
Internet-Draft PACE over MOQT June 2026
6.5. Streaming Pattern
Long-running operations produce incremental results as MOQT objects
organized into groups representing execution phases. The server
advances to a new group at each phase transition (e.g.,
initialization, progress, completion). Multiple objects within a
group represent incremental data for that phase.
Late-joining subscribers receive the latest complete group from relay
cache, enabling mid-operation catch-up without replaying the full
history.
6.6. Real-Time Media Exchange
Audio and video streams use dedicated tracks ("audio", "video") with
descending group order (newest-first) and high priority (32-63),
ensuring media frames preempt lower-priority data under congestion.
7. Communication Topologies
PACE supports multiple communication topologies through MOQT's relay
fan-out:
Point-to-Point: Two agents publish and subscribe to each other's
session tracks. Used for tool invocation, task delegation, and
bilateral collaboration.
Point-to-Multipoint (Fan-Out): One agent publishes; multiple agents
subscribe. The relay handles fan-out without the publisher
maintaining per-subscriber state. Used for broadcast
notifications and shared context distribution.
Multi-Party: All participants publish on their own tracks and
subscribe to each other's tracks within the same session-id.
Adding a participant requires publishing SESSION_JOIN on the
control track; existing participants receive the notification and
subscribe to the new agent's session namespace.
Hierarchical Teams: A coordinator creates child PACE sessions to
delegate subtasks. Each level operates as a separate session with
narrowed authorization scope. Delegation chains (Section 5)
maintain an auditable path from the original user authorization.
Nandakumar & Jennings Expires 30 December 2026 [Page 18]
Internet-Draft PACE over MOQT June 2026
8. Protocol Bindings
This section defines protocol bindings that map application protocol
semantics to MOQT. Each binding operates within PACE sessions, using
the Session Communication Namespace (Section 3.1) and channel
architecture (Section 6).
8.1. Binding Architecture
Protocol bindings sit between application protocols and the PACE
session layer. Each binding defines:
* *Protocol Identifier*: Unique string used as the track name prefix
* *Namespace Pattern*: How operations map to track names
* *Message Serialization*: Encoding within MOQT object payloads
* *Operation Mapping*: Protocol operations to MOQT primitives
* *Priority Mapping*: Message types to PACE priority tiers
Protocols use distinct track name prefixes within PACE sessions:
+==========+==============+====================================+
| Protocol | Track Prefix | Example Full Path |
+==========+==============+====================================+
| A2A | a2a/ | ("pace","agents","agent-a","s1") |
| | | -- "a2a/task/t1" |
+----------+--------------+------------------------------------+
| MCP | mcp/ | ("pace","agents","fs-server","s1") |
| | | -- "mcp/tools/read" |
+----------+--------------+------------------------------------+
| AutoGen | autogen/ | ("pace","agents","rt1","s1") -- |
| | | "autogen/message/conv1" |
+----------+--------------+------------------------------------+
| Generic | ext/{proto}/ | ("pace","agents","agent-a","s1") |
| | | -- "ext/myproto/rpc/call" |
+----------+--------------+------------------------------------+
Table 6
8.2. A2A Binding
The Agent-to-Agent Protocol [A2A] binding maps A2A task delegation
and collaboration to MOQT primitives using the a2a/ category prefix.
Nandakumar & Jennings Expires 30 December 2026 [Page 19]
Internet-Draft PACE over MOQT June 2026
8.2.1. Namespace Structure
A2A operates within a PACE session. Each agent publishes A2A
messages on tracks under its own session namespace:
Namespace: ("pace", "agents", {agent-id}, {session-id})
Tracks: "a2a/{subcategory}/{identifier}"
A2A track name patterns:
+===========================+======================+
| Track Pattern | Purpose |
+===========================+======================+
| a2a/request/{request-id} | Outbound requests |
+---------------------------+----------------------+
| a2a/response/{request-id} | Request responses |
+---------------------------+----------------------+
| a2a/stream/{request-id} | Streaming operations |
+---------------------------+----------------------+
| a2a/task/{task-id} | Task lifecycle |
+---------------------------+----------------------+
| a2a/notify/{type} | Push notifications |
+---------------------------+----------------------+
Table 7
8.2.2. A2A Operation Mapping
The following table maps A2A v0.3.0 operations to MOQT primitives:
Nandakumar & Jennings Expires 30 December 2026 [Page 20]
Internet-Draft PACE over MOQT June 2026
+===========================+=====================+================+
| A2A Operation | MOQT Mechanism |Track Name |
+===========================+=====================+================+
| SendMessage | PUBLISH + OBJECT |a2a/ |
| | |request/{req-id}|
+---------------------------+---------------------+----------------+
| SendStreamingMessage | PUBLISH + multiple |a2a/stream/{req-|
| | OBJECTs |id} |
+---------------------------+---------------------+----------------+
| GetTask | SUBSCRIBE + OBJECT |a2a/task/{task- |
| | |id} |
+---------------------------+---------------------+----------------+
| ListTasks | SUBSCRIBE_NAMESPACE |(discover a2a/ |
| | |task/* tracks) |
+---------------------------+---------------------+----------------+
| CancelTask | OBJECT on ctrl |ctrl |
| | track | |
+---------------------------+---------------------+----------------+
| SubscribeToTask | SUBSCRIBE (ongoing) |a2a/task/{task- |
| | |id} |
+---------------------------+---------------------+----------------+
| GetExtendedAgentCard | SUBSCRIBE + OBJECT |Agent's card |
| | |track |
+---------------------------+---------------------+----------------+
| SetPushNotificationConfig | PUBLISH + OBJECT |a2a/notify/ |
| | |config |
+---------------------------+---------------------+----------------+
| GetPushNotificationConfig | SUBSCRIBE + OBJECT |a2a/notify/ |
| | |config |
+---------------------------+---------------------+----------------+
Table 8
8.2.3. Message Format
A2A messages are serialized as JSON-RPC 2.0 within MOQT objects,
preserving A2A's native format. The PACE envelope wraps the JSON
bytes:
Nandakumar & Jennings Expires 30 December 2026 [Page 21]
Internet-Draft PACE over MOQT June 2026
{
"jsonrpc": "2.0",
"method": "message/send",
"params": {
"message": {
"role": "user",
"parts": [{"kind": "text", "text": "Hello agent"}]
}
},
"id": "req-001"
}
8.2.4. Priority Mapping
+==================+=====================+======================+
| A2A Message Type | MOQT Priority Range | Description |
+==================+=====================+======================+
| Cancel/Error | 0-31 | Task cancellation, |
| | | critical errors |
+------------------+---------------------+----------------------+
| SendMessage | 32-63 | Responses requiring |
| response | | immediate delivery |
+------------------+---------------------+----------------------+
| SendMessage | 64-95 | Normal request |
| request | | messages |
+------------------+---------------------+----------------------+
| Task status | 96-127 | Incremental task |
| updates | | state changes |
+------------------+---------------------+----------------------+
| Streaming | 96-127 | Streaming result |
| artifacts | | data |
+------------------+---------------------+----------------------+
| Discovery (Agent | 128-159 | Agent card exchange |
| Card) | | |
+------------------+---------------------+----------------------+
| Push | 160-191 | Asynchronous |
| notifications | | notifications |
+------------------+---------------------+----------------------+
| Background/bulk | 192-255 | Large file |
| | | transfers, batch ops |
+------------------+---------------------+----------------------+
Table 9
Nandakumar & Jennings Expires 30 December 2026 [Page 22]
Internet-Draft PACE over MOQT June 2026
8.2.5. Streaming Support
A2A streaming operations (SendStreamingMessage, task subscriptions)
use the streaming pattern defined in Section 6.5. A2A streaming
events map to MOQT objects as follows:
* Each streaming response creates a new MOQT group
* TaskStatusUpdateEvent (state changes) and TaskArtifactUpdateEvent
(output data) are individual objects within groups
* Groups represent execution phases (initialization, progress,
completion)
8.2.6. A2A Agent Card with MOQT Extension
When operating over PACE, the A2A Agent Card includes a moqt
extension block:
{
"name": "research-assistant",
"protocolVersion": "0.3.0",
"capabilities": {"streaming": true, "pushNotifications": true},
"skills": [{"id": "web-research", "name": "Web Research"}],
"authentication": {"schemes": ["bearer", "oauth2"]},
"moqt": {
"relayEndpoint": "moqt://relay.example.com:4443",
"webTransportEndpoint": "https://relay.example.com:4443/moqt",
"namespace": ["pace", "agents", "research-assistant"],
"supportedExtensions": ["pace-v1"],
"maxConcurrentSubscriptions": 100,
"cacheTTL": 300
},
"signature": "base64-encoded-ed25519-signature"
}
The moqt extension fields:
Nandakumar & Jennings Expires 30 December 2026 [Page 23]
Internet-Draft PACE over MOQT June 2026
+============================+============================+
| Field | Description |
+============================+============================+
| relayEndpoint | Native QUIC endpoint for |
| | the MOQT relay |
+----------------------------+----------------------------+
| webTransportEndpoint | WebTransport endpoint |
| | (alternative connectivity) |
+----------------------------+----------------------------+
| namespace | Agent's namespace prefix |
| | as array |
+----------------------------+----------------------------+
| supportedExtensions | MOQT/PACE extensions |
| | supported |
+----------------------------+----------------------------+
| maxConcurrentSubscriptions | Maximum subscriptions the |
| | agent handles |
+----------------------------+----------------------------+
| cacheTTL | Cache duration for the |
| | agent card (seconds) |
+----------------------------+----------------------------+
Table 10
8.3. MCP Binding
The Model Context Protocol [MCP] binding enables tool and resource
access for agents. Within a PACE session, MCP tracks use the "mcp/"
prefix under the agent's session namespace:
Namespace: ("pace", "agents", {server-id}, {session-id})
Tracks: "mcp/{subcategory}/{identifier}"
The complete MCP over MOQT specification — including track structure,
operation mapping, message serialization, Agent Skills architecture,
and relay support — is defined in [MCP-MOQT]. PACE adopts that
specification's track semantics, mapping its namespace tuples (e.g.,
(mcp, {session-id}, tools) -- ({tool-name})) into PACE track names
(e.g., "mcp/tools/{tool-name}") as described in Section 3.1.
8.4. AutoGen Binding
AutoGen [AutoGen] is a multi-agent conversation framework. This
binding maps AutoGen's conversation patterns to MOQT within PACE
sessions.
8.4.1. Namespace Structure
Nandakumar & Jennings Expires 30 December 2026 [Page 24]
Internet-Draft PACE over MOQT June 2026
Namespace: ("pace", "agents", {runtime-id}, {session-id})
Tracks: "autogen/{subcategory}/{identifier}"
Where runtime-id is the AutoGen runtime instance identifier.
+===================================+======================+
| Track Pattern | Purpose |
+===================================+======================+
| autogen/message/{conversation-id} | Inter-agent messages |
+-----------------------------------+----------------------+
| autogen/control/{command} | Runtime control |
+-----------------------------------+----------------------+
| autogen/state/{state-key} | Agent state sync |
+-----------------------------------+----------------------+
| autogen/result/{task-id} | Final outputs |
+-----------------------------------+----------------------+
Table 11
8.4.2. Message Format
AutoGen messages are serialized as JSON with the following structure:
{
"sender": "agent-name",
"recipient": "agent-name | broadcast",
"content": "message content or structured data",
"metadata": {
"conversation_id": "conv-123",
"turn": 5,
"role": "assistant | user | system"
}
}
8.4.3. Conversation Patterns
AutoGen's conversation patterns map to MOQT as follows:
Two-Agent Chat: Each agent publishes to their message track. Agents
subscribe to their conversation partner's track.
Group Chat: A coordinator agent manages turn-taking. All agents
subscribe to the coordinator's broadcast track.
Nested Chat: Hierarchical conversations use nested session-ids. An
outer agent creates a child PACE session for the inner
conversation, linking it to the parent via delegation chains.
Nandakumar & Jennings Expires 30 December 2026 [Page 25]
Internet-Draft PACE over MOQT June 2026
8.4.4. Priority Mapping
+======================+=====================+
| AutoGen Message Type | MOQT Priority Range |
+======================+=====================+
| Termination signals | 0-31 |
+----------------------+---------------------+
| Human input requests | 32-63 |
+----------------------+---------------------+
| Agent responses | 64-95 |
+----------------------+---------------------+
| Function results | 96-127 |
+----------------------+---------------------+
| State updates | 128-159 |
+----------------------+---------------------+
| Logging/debug | 160-255 |
+----------------------+---------------------+
Table 12
8.5. Generic JSON-RPC Binding
This binding provides a baseline for custom protocols using JSON-RPC
2.0 messaging.
8.5.1. Namespace Structure
Namespace: ("pace", "agents", {agent-id}, {session-id})
Tracks: "ext/{protocol-name}/{subcategory}/{identifier}"
Where protocol-name is the custom protocol identifier.
+================================+==================+
| Track Pattern | Purpose |
+================================+==================+
| ext/{proto}/rpc/{request-id} | Request/response |
+--------------------------------+------------------+
| ext/{proto}/stream/{stream-id} | Streaming data |
+--------------------------------+------------------+
| ext/{proto}/event/{event-type} | Async events |
+--------------------------------+------------------+
Table 13
8.5.2. Message Format
Messages follow standard JSON-RPC 2.0:
Nandakumar & Jennings Expires 30 December 2026 [Page 26]
Internet-Draft PACE over MOQT June 2026
{
"jsonrpc": "2.0",
"method": "protocol.method",
"params": {},
"id": "request-id"
}
8.5.3. Extension Mechanism
Custom protocols extend this binding by defining additional track
subcategories, custom message schemas within JSON-RPC params,
protocol-specific priorities, and custom MOQT extension headers.
Implementations SHOULD document extensions and MAY register them in
the IANA PACE Protocol Binding Registry.
9. Authorization and Security
9.1. Authorization Model
PACE implements a behavior-driven authorization model where access
tokens are scoped to specific operations an agent is permitted to
perform.
9.1.1. Behavior-Driven Scopes
Scopes are structured as {domain}:{resource}:{action}:{constraints},
bound to specific agent behaviors rather than roles. Constraints
support dynamic limits (time bounds, resource limits, counts).
9.1.2. Delegated Authorization
When agents invoke other agents, each delegation narrows the scope.
Agent A (holding scope S) requests a sub-scope S' ⊂ S for Agent B.
Agent B can further narrow to S'' ⊂ S' for downstream tools.
Downstream agents cannot exceed their delegator's permissions.
Authorization tokens are presented in SESSION_INIT and validated
including the full delegation chain. Tokens are refreshed
proactively before expiration.
9.1.3. Confirmation and Evidence
For high-risk operations, PACE supports confirmation requirements
where agents must present cryptographic evidence of approval (human,
policy-check, or MFA) before the operation proceeds.
Nandakumar & Jennings Expires 30 December 2026 [Page 27]
Internet-Draft PACE over MOQT June 2026
9.2. Transport Security
All PACE communication is encrypted via TLS 1.3 (QUIC requirement).
Agent identity tokens are cryptographically signed with short expiry.
MOQT Common Access Tokens [MoQ-C4M] provide relay-level namespace
authorization. Relay nodes cannot access payload content unless
explicitly authorized as trusted intermediaries.
9.3. Privacy Considerations
Agents SHOULD minimize shared data to what is necessary for the task.
Long-lived sessions SHOULD support forward secrecy through periodic
key rotation. Relay operators MUST NOT retain content beyond
operational necessity.
10. Scalability and Reliability
PACE inherits MOQT's relay architecture for geographic distribution
and load management:
* *Subscription Aggregation*: Multiple subscribers to the same track
result in a single upstream subscription, reducing origin load
* *Geographic Locality*: Edge relays cache content close to
subscribers, minimizing round-trip latency
* *Fault Isolation*: Relay failures are localized; other paths
continue operating
10.1. Failure Modes and Recovery
+====================+===================+=======================+
| Failure | Detection | Recovery |
+====================+===================+=======================+
| Agent network loss | QUIC idle timeout | Connection migration, |
| | | session resume |
+--------------------+-------------------+-----------------------+
| Relay failure | Subscription | Failover to alternate |
| | timeout | relay |
+--------------------+-------------------+-----------------------+
| Agent crash | Session heartbeat | Session suspended, |
| | miss | await resume |
+--------------------+-------------------+-----------------------+
| Prolonged outage | Session timeout | Session closed, state |
| | | checkpointed |
+--------------------+-------------------+-----------------------+
Table 14
Nandakumar & Jennings Expires 30 December 2026 [Page 28]
Internet-Draft PACE over MOQT June 2026
Session recovery mechanics are defined in Section 4.5.
11. Security Considerations
TODO
12. IANA Considerations
12.1. MOQT Setup Parameter Registry
This document requests registration of the following MOQT setup
parameters:
+======================+============+=======================+
| Parameter Name | ID | Description |
+======================+============+=======================+
| pace-version | 0x50414301 | PACE protocol version |
+----------------------+------------+-----------------------+
| agent-identity | 0x50414302 | Agent identity token |
| | | reference |
+----------------------+------------+-----------------------+
| supported-protocols | 0x50414303 | Application protocol |
| | | bitmask |
+----------------------+------------+-----------------------+
| auth-schemes | 0x50414304 | Authentication scheme |
| | | identifiers |
+----------------------+------------+-----------------------+
| session-capabilities | 0x50414305 | Session capability |
| | | flags |
+----------------------+------------+-----------------------+
Table 15
12.2. PACE Protocol Binding Registry
IANA is requested to create a registry for PACE protocol bindings.
Each entry contains:
* Protocol Identifier (string)
* Protocol Version
* Namespace Prefix Pattern
* Reference Document
Initial entries:
Nandakumar & Jennings Expires 30 December 2026 [Page 29]
Internet-Draft PACE over MOQT June 2026
+=============+============+========================+===============+
| Protocol ID | Version | Track Name Pattern | Reference |
+=============+============+========================+===============+
| a2a | 0.3.0 | a2a/{sub}/{id} | This |
| | | | document |
+-------------+------------+------------------------+---------------+
| mcp | 2025-06-18 | mcp/{sub}/{id} | This |
| | | | document |
+-------------+------------+------------------------+---------------+
| autogen | 0.4 | autogen/{sub}/{id} | This |
| | | | document |
+-------------+------------+------------------------+---------------+
| (generic) | - | ext/{proto}/{sub}/{id} | This |
| | | | document |
+-------------+------------+------------------------+---------------+
Table 16
12.3. PACE Message Type Registry
IANA is requested to create a registry for PACE session control
message types:
+=================+======+================================+
| Message Type | Code | Description |
+=================+======+================================+
| SESSION_INIT | 0x01 | Initiate session establishment |
+-----------------+------+--------------------------------+
| SESSION_ACCEPT | 0x02 | Accept session establishment |
+-----------------+------+--------------------------------+
| SESSION_REJECT | 0x03 | Reject session establishment |
+-----------------+------+--------------------------------+
| SESSION_UPDATE | 0x04 | Update session parameters |
+-----------------+------+--------------------------------+
| SESSION_SUSPEND | 0x05 | Suspend active session |
+-----------------+------+--------------------------------+
| SESSION_RESUME | 0x06 | Resume suspended session |
+-----------------+------+--------------------------------+
| SESSION_CLOSE | 0x07 | Terminate session |
+-----------------+------+--------------------------------+
| SESSION_JOIN | 0x08 | Join multi-party session |
+-----------------+------+--------------------------------+
| SESSION_LEAVE | 0x09 | Leave multi-party session |
+-----------------+------+--------------------------------+
Table 17
13. References
Nandakumar & Jennings Expires 30 December 2026 [Page 30]
Internet-Draft PACE over MOQT June 2026
13.1. Normative References
[MoQ-TRANSPORT]
Curley, L., Pugin, K., Nandakumar, S., Vasiliev, V., and
I. Swett, "Media over QUIC Transport", Work in Progress,
Internet-Draft, draft-ietf-moq-transport-16, January 2026,
.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997,
.
[RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for
Writing an IANA Considerations Section in RFCs", BCP 26,
RFC 8126, DOI 10.17487/RFC8126, June 2017,
.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, .
[RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol
Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018,
.
[RFC9000] Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based
Multiplexed and Secure Transport", RFC 9000,
DOI 10.17487/RFC9000, May 2021,
.
13.2. Informative References
[A2A] A2A Project, "Agent-to-Agent Protocol Specification",
Version 0.3.0, 2025,
.
[AutoGen] Wu, Q., Banber, G., Zhang, Y., Wu, Y., Li, B., Zhu, E.,
and A. Awadallah, "AutoGen: Enabling Next-Gen LLM
Applications via Multi-Agent Conversation",
arXiv 2308.08155, 2023,
.
[MCP] Anthropic, "Model Context Protocol Specification",
Version 2025-06-18, June 2025,
.
Nandakumar & Jennings Expires 30 December 2026 [Page 31]
Internet-Draft PACE over MOQT June 2026
[MCP-MOQT] Jennings, C., Swett, I., Rosenberg, J., and S. Nandakumar,
"Model Context Protocol and Agent Skills over Media over
QUIC Transport", Work in Progress, Internet-Draft, draft-
mcp-over-moqt, 2025,
.
[MoQ-C4M] Jennings, S., "Common Access Token for Media over QUIC",
Work in Progress, Internet-Draft, draft-ietf-moq-c4m,
2025,
.
[RFC7519] Jones, M., Bradley, J., and N. Sakimura, "JSON Web Token
(JWT)", RFC 7519, DOI 10.17487/RFC7519, May 2015,
.
[RFC7540] Belshe, M., Peon, R., and M. Thomson, Ed., "Hypertext
Transfer Protocol Version 2 (HTTP/2)", RFC 7540,
DOI 10.17487/RFC7540, May 2015,
.
[RFC9110] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke,
Ed., "HTTP Semantics", STD 97, RFC 9110,
DOI 10.17487/RFC9110, June 2022,
.
[RFC9297] Schinazi, D. and L. Pardue, "HTTP Datagrams and the
Capsule Protocol", RFC 9297, DOI 10.17487/RFC9297, August
2022, .
[SD-AGENT] Nandakumar, S. and C. Jennings, "SD Agent: Selective
Disclosure for Agent Discovery and Identity Management",
Work in Progress, Internet-Draft, draft-nandakumar-agent-
sd-jwt-02, February 2026,
.
Appendix A. Example Workflows
This appendix illustrates common PACE workflows end-to-end, showing
how agents use the namespace structure, session establishment, and
protocol bindings defined in this document.
A.1. Agent-to-Agent: Task Delegation
Agent A (a coordinator) delegates a research task to Agent B. This
is a point-to-point session using the A2A binding.
Nandakumar & Jennings Expires 30 December 2026 [Page 32]
Internet-Draft PACE over MOQT June 2026
*Setup*: Agent A generates session-id s1 (a UUID) and establishes a
session with Agent B via the flow in Section 4.
*Resulting namespace layout*:
Agent A publishes:
("pace","agents","agent-a","s1") -- "ctrl" (SESSION_INIT)
("pace","agents","agent-a","s1") -- "a2a/request/r1" (task request)
Agent B publishes:
("pace","agents","agent-b","s1") -- "ctrl" (SESSION_ACCEPT)
("pace","agents","agent-b","s1") -- "a2a/response/r1" (task result)
*Flow*:
1. A publishes SESSION_INIT on its "ctrl" track — the relay forwards
to B via B's SUBSCRIBE_TRACKS prefix match
2. B accepts the forwarded PUBLISH, publishes SESSION_ACCEPT on its
own "ctrl" track
3. A receives SESSION_ACCEPT via the relay (A's SUBSCRIBE_TRACKS on
B)
4. A publishes a JSON-RPC request on "a2a/request/r1":
{"jsonrpc":"2.0","method":"message/
send","params":{...},"id":"r1"}
5. B receives the request (via its subscription to A's namespace),
processes it, and publishes the result on "a2a/response/r1"
6. A receives the response via its subscription to B's namespace
7. Either agent publishes SESSION_CLOSE on "ctrl" to terminate
A.2. Agent-to-Tool: MCP Tool Invocation
Agent A needs to read a file using a filesystem tool (an MCP server).
*Setup*: Agent A generates session-id s2 and establishes a session
with the filesystem tool.
*Resulting namespace layout*:
Nandakumar & Jennings Expires 30 December 2026 [Page 33]
Internet-Draft PACE over MOQT June 2026
Agent A publishes:
("pace","agents","agent-a","s2") -- "ctrl"
("pace","agents","agent-a","s2") -- "mcp/tools/readFile" (tool call)
Tool publishes:
("pace","agents","fs-tool","s2") -- "ctrl"
("pace","agents","fs-tool","s2") -- "mcp/tools/readFile" (tool result)
*Flow*:
1. A establishes a session with the tool (SESSION_INIT / ACCEPT)
2. A publishes a tool call on "mcp/tools/readFile":
{"jsonrpc":"2.0","method":"tools/
call","params":{"name":"readFile", "arguments":{"path":"/data/
report.csv"}},"id":"t1"}
3. Tool receives the call, reads the file, publishes the result on
its own "mcp/tools/readFile" track
4. A receives the file contents
5. A may issue additional tool calls within the same session or
close it
A.3. Multi-Agent Collaboration
Agent A (coordinator) creates a research session and invites Agent B
(web researcher) and Agent C (data analyst) to collaborate.
*Setup*: Agent A generates session-id s3 and publishes SESSION_INIT
on its ctrl track — the relay forwards to B and C via their
SUBSCRIBE_TRACKS prefix match on A's agent namespace.
*Resulting namespace layout*:
Nandakumar & Jennings Expires 30 December 2026 [Page 34]
Internet-Draft PACE over MOQT June 2026
Agent A publishes:
("pace","agents","agent-a","s3") -- "ctrl" (session mgmt, assignments)
("pace","agents","agent-a","s3") -- "chat" (coordination messages)
Agent B publishes:
("pace","agents","agent-b","s3") -- "ctrl" (SESSION_ACCEPT)
("pace","agents","agent-b","s3") -- "chat" (status updates)
("pace","agents","agent-b","s3") -- "a2a/task/research-1" (findings)
Agent C publishes:
("pace","agents","agent-c","s3") -- "ctrl" (SESSION_ACCEPT)
("pace","agents","agent-c","s3") -- "chat" (status updates)
("pace","agents","agent-c","s3") -- "a2a/task/analysis-1" (results)
*Subscriptions*: Each agent subscribes to the other two agents'
session namespaces:
* A subscribes to ("pace","agents","agent-b","s3") and
("pace","agents","agent-c","s3")
* B subscribes to ("pace","agents","agent-a","s3") and
("pace","agents","agent-c","s3")
* C subscribes to ("pace","agents","agent-a","s3") and
("pace","agents","agent-b","s3")
*Flow*:
1. A establishes session, B and C accept
2. A publishes task assignments on "chat" — the relay fans out to
both B and C
3. B performs web research, publishes findings incrementally on
"a2a/task/research-1" (using MOQT groups for phases)
4. C subscribes to B's research track, receives findings as they
arrive, and begins analysis
5. C publishes analysis results on "a2a/task/analysis-1"
6. A monitors all progress through its subscriptions and publishes a
final summary when complete
7. A publishes SESSION_CLOSE — all participants unsubscribe
Nandakumar & Jennings Expires 30 December 2026 [Page 35]
Internet-Draft PACE over MOQT June 2026
A.4. Agent-to-Tool with Streaming: Long-Running Operation
Agent A invokes a code-generation tool that produces output
incrementally.
*Setup*: Same as tool invocation — Agent A and the tool share
session-id s4.
*Flow*:
1. A publishes a tool call on "mcp/tools/generateCode"
2. Tool begins generating code and publishes results using MOQT
groups:
* Group 0: {"status":"started","language":"python"}
* Group 1, Object 0: first code block
* Group 1, Object 1: second code block
* Group 2: {"status":"complete","totalLines":142}
3. A receives objects as they are published (ascending group order)
4. If A needs to cancel, it publishes a cancellation on "ctrl"
5. Tool receives cancellation, stops generation, publishes final
status
Appendix B. Acknowledgments
TODO
Authors' Addresses
Suhas Nandakumar
Cisco
Email: snandaku@cisco.com
Cullen Jennings
Cisco Systems
Email: fluffy@cisco.com
Nandakumar & Jennings Expires 30 December 2026 [Page 36]