<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.43 (Ruby 2.6.10) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-jennings-agentproto-mcp-over-moqt-01" category="exp" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.35.0 -->
  <front>
    <title abbrev="MCP over MOQT">Model Context Protocol and Agent Skills over Media over QUIC Transport</title>
    <seriesInfo name="Internet-Draft" value="draft-jennings-agentproto-mcp-over-moqt-01"/>
    <author initials="C." surname="Jennings" fullname="Cullen Jennings">
      <organization>Cisco</organization>
      <address>
        <email>fluffy@cisco.com</email>
      </address>
    </author>
    <author initials="I." surname="Swett" fullname="Ian Swett">
      <organization>Google</organization>
      <address>
        <email>ianswett@google.com</email>
      </address>
    </author>
    <author initials="J." surname="Rosenberg" fullname="Jonathan Rosenberg">
      <organization>Five9</organization>
      <address>
        <email>jdrosen@jdrosen.net</email>
      </address>
    </author>
    <author initials="S." surname="Nandakumar" fullname="Suhas Nandakumar">
      <organization>Cisco</organization>
      <address>
        <email>snandaku@cisco.com</email>
      </address>
    </author>
    <date year="2026" month="November" day="01"/>
    <area>Applications and Real-Time</area>
    <workgroup>Agent Communication Protocols</workgroup>
    <keyword>MCP</keyword>
    <keyword>MOQT</keyword>
    <keyword>AI agents</keyword>
    <keyword>agentproto</keyword>
    <abstract>
      <?line 122?>

<t>This document defines how to use Media over QUIC Transport (MOQT) as the
underlying transport protocol for the Model Context Protocol (MCP). MCP
enables integration between language model applications and external data
sources and tools. MOQT provides publish-subscribe delivery over QUIC and
WebTransport with native prioritization, relay caching, and multiplexing.</t>
      <t>This specification maps MCP messages onto MOQT objects and tracks. It
covers MCP's tools, resources, prompts, multi round-trip requests, and
the Tasks extension, and it uses MOQT relays to cache content that MCP
marks as public across clients and to let a response outlive the
connection that carried its request.</t>
      <t>The document also describes Agent Skills, composed instructions that
extend AI capabilities beyond atomic tool operations, using progressive
loading aligned with MOQT's object-based delivery. The same tracks can
run standalone or inside a dialog of the Protocol for Agent
Communication Exchange (PACE).</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://github.com/fluffy/mcp-moq"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-jennings-agentproto-mcp-over-moqt/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Agent Communication Protocols Working Group mailing list (<eref target="mailto:agentproto@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/agentproto/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/agentproto/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/fluffy/mcp-moq"/>.</t>
    </note>
  </front>
  <middle>
    <?line 142?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The Model Context Protocol (MCP) <xref target="MCP"/> enables integration between LLM
applications and external data sources using JSON-RPC 2.0 over pluggable
transports. Media over QUIC Transport (MOQT) <xref target="MOQT"/> provides
publish-subscribe delivery over QUIC <xref target="QUIC"/> with relay support.</t>
      <t>MCP is stateless: every request carries its protocol version and the
client's capabilities, and servers keep no per-connection session.
That model fits MOQT well. MCP's existing transports have limitations
that MOQT addresses:</t>
      <ul spacing="normal">
        <li>
          <t>Streamable HTTP: A broken response stream loses the in-flight
request, which the client must re-issue as a new request. There is
no per-message prioritization, and shared caching is limited to what
HTTP intermediaries provide.</t>
        </li>
        <li>
          <t>stdio: Single-process only; no network distribution.</t>
        </li>
      </ul>
      <t>MOQT provides:</t>
      <ul spacing="normal">
        <li>
          <t>Recovery: A response is published into a known group, so a client
that reconnects receives the rest of it instead of re-issuing the
request (<xref target="response-layout"/>).</t>
        </li>
        <li>
          <t>Shared caching: Content that MCP marks as public, such as the
server's capabilities and tool definitions, is published once and
served to every client from relay caches (<xref target="relay-support"/>).</t>
        </li>
        <li>
          <t>Edge serving: A publisher tells relays how long they may cache each
track's objects, so FETCH and fill fetch, including a reconnecting
client's catch-up, are answered by the nearest relay instead of the
server (<xref target="cache-duration"/>).</t>
        </li>
        <li>
          <t>Priority-aware delivery: Critical operations receive appropriate
bandwidth via per-object priorities.</t>
        </li>
        <li>
          <t>Multiplexing without HOL blocking: QUIC streams prevent
interference between concurrent operations.</t>
        </li>
        <li>
          <t>Network resilience: QUIC connection migration.</t>
        </li>
      </ul>
      <section anchor="relationship-to-pace">
        <name>Relationship to PACE</name>
        <t>The Protocol for Agent Communication Exchange (PACE) <xref target="PACE"/> is a
dialog-management protocol for agent communication over MOQT.
Application-layer agent protocols such as MCP and A2A run inside a
PACE dialog as bindings, and PACE's MCP binding adopts the track
semantics, operation mapping, and relay behavior defined in this
document. This specification therefore serves two deployment modes:</t>
        <ul spacing="normal">
          <li>
            <t>Standalone: MCP over MOQT using the <tt>(mcp, &lt;server-id&gt;, ...)</tt>
namespace defined in <xref target="moqt-tracks"/>.</t>
          </li>
          <li>
            <t>Within PACE: the same tracks are carried inside a PACE dialog, as
described in <xref target="pace-mapping"/>.</t>
          </li>
        </ul>
        <t>Both modes use the same MOQT primitives and the same encoding; they
differ only in namespace layout.</t>
      </section>
      <section anchor="terminology">
        <name>Terminology</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <?line -18?>

<t>This document uses terminology from <xref target="MCP"/> and <xref target="MOQT"/>, including
Track Namespace, Track Name, and Full Track Name as defined in <xref target="MOQT"/>.
Additionally:</t>
        <ul spacing="normal">
          <li>
            <t>Name notation: A Track Namespace is written as <tt>(field1, field2, ...)</tt>
in normative definitions and as <tt>field1/field2/...</tt> in prose. A Full
Track Name is written <tt>(field1, field2, ...) -- (name)</tt>. These are
informal notations of this document, not the serialized formats of
<xref target="MOQT"/>; a <tt>/</tt> that appears inside a field or Track Name (for
example, in a resource URI) is part of that field.</t>
          </li>
          <li>
            <t>Server ID: An identifier of an MCP server, used as the second field
of every namespace this document defines (<xref target="scopes"/>).</t>
          </li>
          <li>
            <t>Client ID: A pairwise identifier of an MCP client at one server
(<xref target="client-id"/>).</t>
          </li>
          <li>
            <t>Server scope / client scope: The namespaces under
<tt>(mcp, &lt;server-id&gt;)</tt> that all clients of a server share, and the
namespaces under <tt>(mcp, &lt;server-id&gt;, clients, &lt;client-id&gt;)</tt> that
belong to one client (<xref target="scopes"/>).</t>
          </li>
          <li>
            <t>Request track / response track: A pair of tracks used for one kind of
JSON-RPC exchange. The client publishes the request track and the
server publishes the response track (see <xref target="req-resp"/>).</t>
          </li>
        </ul>
      </section>
      <section anchor="protocol-overview">
        <name>Protocol Overview</name>
        <t>MCP maps to MOQT tracks for the catalog, control, tools, prompts,
resources, tasks, and skills (<xref target="moqt-tracks"/>). A client needs no handshake: after
MOQT setup it derives its client ID, subscribes to the server's tracks,
and starts sending requests. Every request carries the per-request
<tt>_meta</tt> fields of <xref target="MCP"/>; the examples in this document omit them for
brevity. JSON-RPC requests and responses are carried on request and
response tracks (<xref target="req-resp"/>).</t>
        <t>Each MOQT object carries one payload, with no framing beyond the
object boundaries. The payload is one of:</t>
        <ul spacing="normal">
          <li>
            <t>One MCP JSON-RPC 2.0 message, as UTF-8 encoded JSON, on control,
request, and response tracks.</t>
          </li>
          <li>
            <t>One UTF-8 encoded JSON document on catalog, task, and skill tracks,
with the content defined for each track.</t>
          </li>
          <li>
            <t>A chunk of the resource's content on resource tracks
(<xref target="resource-tracks"/>). The resource's media type is given in the
catalog (<xref target="catalog-track"/>).</t>
          </li>
        </ul>
        <section anchor="system-components">
          <name>System Components</name>
          <sourcecode type="ascii"><![CDATA[
+-----------------+    MOQT Session    +-----------------+
|   MCP Client    |<==================>|   MCP Server    |
|                 |                    |                 |
| +-------------+ |                    | +-------------+ |
| |MCP Transport| |                    | |MCP Transport| |
| |   Adapter   | |                    | |   Adapter   | |
| +-------------+ |                    | +-------------+ |
| +-------------+ |                    | +-------------+ |
| |    MOQT     | |                    | |    MOQT     | |
| |  Endpoint   | |                    | |  Endpoint   | |
| +-------------+ |                    | +-------------+ |
+-----------------+                    +-----------------+
]]></sourcecode>
          <t>The MCP client-host-server architecture maps to MOQT as follows:</t>
          <ul spacing="normal">
            <li>
              <t>MCP Host: Acts as MOQT client, managing multiple server connections</t>
            </li>
            <li>
              <t>MCP Client: Implemented as MCP transport adapter within the host</t>
            </li>
            <li>
              <t>MCP Server: Exposes resources, tools, and prompts</t>
            </li>
          </ul>
          <t>Both the MCP client and the MCP server are MOQT publishers and
subscribers: each publishes the tracks it owns (<xref target="req-resp"/>) and
subscribes to its peer's.</t>
        </section>
      </section>
    </section>
    <section anchor="moqt-tracks">
      <name>MOQT Tracks for MCP</name>
      <section anchor="scopes">
        <name>Server and Client Scopes</name>
        <t>Every namespace defined by this document begins with
<tt>(mcp, &lt;server-id&gt;)</tt>. A client learns the server ID from
configuration, from the server's <tt>moqt://</tt> URI, from a registry or
Poppy entry (<xref target="poppy"/>), or, where a relay offers one, from a
server listing (<xref target="relay-namespace-aggregation"/>).</t>
        <t>Tracks fall into two scopes:</t>
        <ul spacing="normal">
          <li>
            <t>Server scope, <tt>(mcp, &lt;server-id&gt;, ...)</tt> without a <tt>clients</tt> field:
tracks the server publishes once for all of its clients. They carry
only content whose MCP <tt>cacheScope</tt> is <tt>public</tt>: the catalog, public
resources, and skills. Relays serve them to every client from cache.</t>
          </li>
          <li>
            <t>Client scope, <tt>(mcp, &lt;server-id&gt;, clients, &lt;client-id&gt;, ...)</tt>:
tracks that belong to one client. They carry the client's requests,
the server's responses, task status, and any content whose
<tt>cacheScope</tt> is <tt>private</tt>. Only that client and the server can
publish or subscribe to them (<xref target="authorization"/>).</t>
          </li>
        </ul>
        <t>The client scope is a routing and authorization boundary, not MCP
state. A server <bcp14>MUST NOT</bcp14> use it in place of the per-request <tt>_meta</tt>
fields, which <xref target="MCP"/> requires on every request.</t>
      </section>
      <section anchor="client-id">
        <name>Client ID</name>
        <t>A client ID is a pairwise identifier: a client uses a different,
unlinkable ID at each server. A client derives it from a secret key K
that it holds and the server ID:</t>
        <artwork><![CDATA[
client-id = base64url(first 16 bytes of HMAC-SHA256(K, server-id))
]]></artwork>
        <t>The derivation gives the same ID every time the client connects to
the same server, without the client storing any per-server state, so
responses and tasks carry over a reconnection (<xref target="reconnection"/>). Two
servers cannot link a client by its IDs. A client that wants a fresh
identity at a server changes K, or derives the ID from a key specific
to that server. A client <bcp14>MAY</bcp14> instead generate a random 128-bit ID per
server and store it.</t>
        <t>A client ID is not a credential. The server binds a client ID to the
authenticated principal of the first request it receives in that
client scope, and <bcp14>MUST</bcp14> reject requests in that scope from any other
principal, except a party to which that principal has delegated a
task (<xref target="task-tracks"/>), within that task's scope. Relays authorize access to a client scope as described in
<xref target="authorization"/>.</t>
      </section>
      <section anchor="catalog-track">
        <name>Catalog Track</name>
        <t>The catalog is the server's capability listing, published in the
server scope.</t>
        <t>Track namespace: <tt>(mcp, &lt;server-id&gt;)</tt>
Track name: <tt>(catalog)</tt></t>
        <t>Each catalog version is a new group whose Object 0 is a JSON object
(<xref target="capability-discovery"/>). A server whose listings differ between
clients publishes those listings in a catalog track in each client
scope instead, <tt>(mcp, &lt;server-id&gt;, clients, &lt;client-id&gt;) -- (catalog)</tt>,
and the client uses it in preference to the shared catalog.</t>
      </section>
      <section anchor="control-tracks">
        <name>Control Tracks</name>
        <t>The control tracks carry every MCP request that has no dedicated track
below. They are an ordinary request/response pair (<xref target="req-resp"/>).</t>
        <t>Track namespace: <tt>(mcp, &lt;server-id&gt;, clients, &lt;client-id&gt;, control)</tt></t>
        <table>
          <name>Control Tracks</name>
          <thead>
            <tr>
              <th align="left">Direction</th>
              <th align="left">Track Name</th>
              <th align="left">Publisher</th>
              <th align="left">Content</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Client-to-Server</td>
              <td align="left">
                <tt>(request)</tt></td>
              <td align="left">MCP Client</td>
              <td align="left">requests listed below</td>
            </tr>
            <tr>
              <td align="left">Server-to-Client</td>
              <td align="left">
                <tt>(response)</tt></td>
              <td align="left">MCP Server</td>
              <td align="left">responses</td>
            </tr>
          </tbody>
        </table>
        <t>The control request track carries the following MCP requests. The
first two rows are also available from the catalog
(<xref target="catalog-track"/>), so a client that subscribes to the catalog does
not need them.</t>
        <table>
          <name>Requests on the Control Tracks</name>
          <thead>
            <tr>
              <th align="left">Purpose</th>
              <th align="left">Requests</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Discovery (also in the catalog)</td>
              <td align="left">
                <tt>server/discover</tt></td>
            </tr>
            <tr>
              <td align="left">Listing (also in the catalog)</td>
              <td align="left">
                <tt>tools/list</tt>, <tt>resources/list</tt>, <tt>resources/templates/list</tt>, <tt>prompts/list</tt></td>
            </tr>
            <tr>
              <td align="left">Resources not on a resource track</td>
              <td align="left">
                <tt>resources/read</tt></td>
            </tr>
            <tr>
              <td align="left">Completion</td>
              <td align="left">
                <tt>completion/complete</tt></td>
            </tr>
            <tr>
              <td align="left">Tasks (also on the task's state track)</td>
              <td align="left">
                <tt>tasks/get</tt></td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="tool-tracks">
        <name>Tool Tracks</name>
        <t>Tool tracks carry tool invocation requests and responses. Each tool
has its own request/response track pair (<xref target="req-resp"/>), so access to
an individual tool can be authorized by namespace.</t>
        <t>Track namespace: <tt>(mcp, &lt;server-id&gt;, clients, &lt;client-id&gt;, tools, &lt;tool-name&gt;)</tt></t>
        <table>
          <name>Tool Tracks</name>
          <thead>
            <tr>
              <th align="left">Direction</th>
              <th align="left">Track Name</th>
              <th align="left">Publisher</th>
              <th align="left">Content</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Client-to-Server</td>
              <td align="left">
                <tt>(request)</tt></td>
              <td align="left">MCP Client</td>
              <td align="left">
                <tt>tools/call</tt> requests</td>
            </tr>
            <tr>
              <td align="left">Server-to-Client</td>
              <td align="left">
                <tt>(response)</tt></td>
              <td align="left">MCP Server</td>
              <td align="left">progress notifications and the tool result</td>
            </tr>
          </tbody>
        </table>
        <t>Each invocation creates a new group on the request track. Object 0 of
that group contains the JSON-RPC <tt>tools/call</tt> request. The server
publishes the response in the group with the same Group ID on the
response track: zero or more progress notifications followed by the
final JSON-RPC result or error, which has the highest Object ID in the
group (<xref target="response-layout"/>). The final result is a complete result, an
input-required result (<xref target="mrtr"/>), or, with the Tasks extension, a task
handle (<xref target="task-tracks"/>).</t>
        <t>A server can use several subgroups within a response group to send
parts of a tool response in parallel, each on its own QUIC stream. For
example, it can send progress notifications in one subgroup while it
streams a large result in another, so neither waits for the other
and loss on one stream does not stall the rest (<xref target="response-layout"/>).</t>
        <t>A client cancels an in-flight invocation as described in
<xref target="cancellation"/>. Tool definitions are not carried on these tracks;
they are published in the catalog (<xref target="capability-discovery"/>).</t>
      </section>
      <section anchor="prompt-tracks">
        <name>Prompt Tracks</name>
        <t>Prompt tracks carry <tt>prompts/get</tt> requests and responses. Each prompt
has its own request/response track pair (<xref target="req-resp"/>), as tools do,
so access to an individual prompt can be authorized by namespace and
given its own priority.</t>
        <t>Track namespace: <tt>(mcp, &lt;server-id&gt;, clients, &lt;client-id&gt;, prompts, &lt;prompt-name&gt;)</tt></t>
        <table>
          <name>Prompt Tracks</name>
          <thead>
            <tr>
              <th align="left">Direction</th>
              <th align="left">Track Name</th>
              <th align="left">Publisher</th>
              <th align="left">Content</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Client-to-Server</td>
              <td align="left">
                <tt>(request)</tt></td>
              <td align="left">MCP Client</td>
              <td align="left">
                <tt>prompts/get</tt> requests</td>
            </tr>
            <tr>
              <td align="left">Server-to-Client</td>
              <td align="left">
                <tt>(response)</tt></td>
              <td align="left">MCP Server</td>
              <td align="left">the prompt result</td>
            </tr>
          </tbody>
        </table>
        <t>Each request creates a new group on the request track, and the server
publishes the result, which can be an input-required result
(<xref target="mrtr"/>), in the group with the same Group ID on the response track.
Prompt definitions are published in the catalog
(<xref target="capability-discovery"/>).</t>
      </section>
      <section anchor="resource-tracks">
        <name>Resource Tracks</name>
        <t>Resource tracks deliver server-published content (files, API schemas,
database results) that MCP exposes as read-only data sources.</t>
        <t>Track namespace: <tt>(mcp, &lt;server-id&gt;, resources)</tt> for public resources,
or <tt>(mcp, &lt;server-id&gt;, clients, &lt;client-id&gt;, resources)</tt> for private
ones
Track name: <tt>(&lt;resource-uri&gt;)</tt></t>
        <t>Each resource version creates a new group (IDs incrementing from 0).
Within a group, objects represent chunks of the resource content (object
IDs starting at 0). This enables streaming delivery of large resources
and version-based caching at relays. The server ends the group when it
has published the whole version, so a receiver knows the resource is
complete.</t>
        <t>A server can spread the chunks of a large resource over several
subgroups of the group, each on its own QUIC stream, so that parts of
the resource are sent in parallel and loss on one stream does not
stall the others. The receiver reassembles the resource in Object ID
order.</t>
        <t>A client performs the equivalent of <tt>resources/read</tt> by FETCH of the
latest group of the resource track, and follows changes to the
resource by SUBSCRIBE to it; each new group is an update. A client
that joins late, or after a disconnect, subscribes with
FILL_PARAMETERS: it receives the current version through a fill fetch
and then each later version, with no gap between them
(<xref target="reconnection"/>). A resource
that the server can only serve with additional input from the client
(<xref target="mrtr"/>) is not published on a resource track; the client reads it
with <tt>resources/read</tt> on its control track.</t>
      </section>
      <section anchor="task-tracks">
        <name>Task Tracks</name>
        <t>Task tracks carry the MCP Tasks extension <xref target="MCP-TASKS"/>, which lets a
server answer a request with a durable task handle instead of
blocking. Each task has its own scope within the client scope, so
everything about the task, its state and the client's answers, lives
in one namespace:</t>
        <t>Track namespace: <tt>(mcp, &lt;server-id&gt;, clients, &lt;client-id&gt;, tasks, &lt;task-id&gt;)</tt></t>
        <table>
          <name>Tracks in a Task Scope</name>
          <thead>
            <tr>
              <th align="left">Track Name</th>
              <th align="left">Publisher</th>
              <th align="left">Content</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>(state)</tt></td>
              <td align="left">MCP Server</td>
              <td align="left">task state changes</td>
            </tr>
            <tr>
              <td align="left">
                <tt>(request)</tt></td>
              <td align="left">MCP Client</td>
              <td align="left">
                <tt>tasks/update</tt> and <tt>tasks/cancel</tt> requests</td>
            </tr>
            <tr>
              <td align="left">
                <tt>(response)</tt></td>
              <td align="left">MCP Server</td>
              <td align="left">responses to those requests</td>
            </tr>
          </tbody>
        </table>
        <t>Each task state change creates a new group on the state track whose
Object 0 contains the full task state, as carried in the extension's
<tt>notifications/tasks</tt>: its status (<tt>working</tt>, <tt>input_required</tt>,
<tt>completed</tt>, <tt>failed</tt>, or <tt>cancelled</tt>), and, in terminal states, the
result or error. Instead of polling with <tt>tasks/get</tt>, a client
subscribes to the state track and receives each change as it happens.
A client that reconnects mid-task uses a fill fetch (<xref target="reconnection"/>)
to retrieve the latest state and then follows live changes.</t>
        <t>When the status is <tt>input_required</tt>, the state includes
<tt>inputRequests</tt>. The client answers with <tt>tasks/update</tt>, and cancels
the task with <tt>tasks/cancel</tt>, on the task's request track; these form
an ordinary request/response pair (<xref target="req-resp"/>).</t>
        <t>Because the task has its own scope:</t>
        <ul spacing="normal">
          <li>
            <t>A token for one task's scope lets another party, such as the user's
phone answering an approval, take part in that task without access
to the rest of the client scope (<xref target="authorization"/>).</t>
          </li>
          <li>
            <t>A client, or another device of the same user, can rebuild the task
by fetching one namespace.</t>
          </li>
          <li>
            <t>Answers that unblock a task can be given their own priority.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="protocol-operation">
      <name>Protocol Operation</name>
      <section anchor="moqt-session">
        <name>MOQT Session Establishment</name>
        <t>The session begins with a QUIC connection or WebTransport
<xref target="WebTransport"/> session. Each endpoint then sends a SETUP message as
the first message on its control stream, carrying its Setup Options.
Setup Options are hop-by-hop: when a relay is present they are
exchanged with the relay, not with the far-end MCP peer. MCP needs no
negotiation at setup, because each request carries its protocol
version and capabilities in <tt>_meta</tt> <xref target="MCP"/>.</t>
        <t>Endpoints push their tracks to the next hop with PUBLISH, follow live
tracks with SUBSCRIBE, and retrieve already-published objects with
FETCH. After a reconnect, an endpoint catches up on missed objects
with a fill fetch, requested through FILL_PARAMETERS on a SUBSCRIBE.
A subscriber that may reach a relay before the publisher includes
RENDEZVOUS_TIMEOUT so the relay holds the subscription. Track discovery
uses SUBSCRIBE_TRACKS, which includes handling PUBLISH_SKIPPED,
together with SUBSCRIBE_NAMESPACE and PUBLISH_NAMESPACE. Access control
uses the AUTHORIZATION TOKEN Setup Option and message parameter.
Implementations <bcp14>MUST</bcp14> support all of these <xref target="MOQT"/> mechanisms.</t>
        <t><xref target="MOQT"/> answers every request with a REQUEST_OK or REQUEST_ERROR
message. This document uses names such as SUBSCRIBE_OK and
FETCH_ERROR as shorthand for the REQUEST_OK or REQUEST_ERROR that
answers the named request.</t>
        <t>MCP endpoints <bcp14>MAY</bcp14> be identified using the <tt>moqt://</tt> URI scheme defined
in <xref target="MOQT"/>. All namespaces whose first tuple element begins with a
period (0x2e) are reserved by MOQT; MCP implementations <bcp14>MUST NOT</bcp14> use
such prefixes.</t>
      </section>
      <section anchor="getting-started">
        <name>Getting Started</name>
        <t>A client that has established a MOQT session with the server, or with
a relay in front of it:</t>
        <ol spacing="normal" type="1"><li>
            <t>Derives its client ID for the server (<xref target="client-id"/>).</t>
          </li>
          <li>
            <t>Sends SUBSCRIBE_TRACKS for its client scope
<tt>(mcp, &lt;server-id&gt;, clients, &lt;client-id&gt;)</tt>, so that it receives
every response, task, and private track the server publishes for
it.</t>
          </li>
          <li>
            <t>Subscribes to the catalog <tt>(mcp, &lt;server-id&gt;) -- (catalog)</tt> with
FILL_PARAMETERS, so that it receives the current catalog and then
each update.</t>
          </li>
          <li>
            <t>Publishes requests on its request tracks (<xref target="req-resp"/>).</t>
          </li>
        </ol>
        <t>A server that serves clients through a relay sends SUBSCRIBE_TRACKS
for <tt>(mcp, &lt;server-id&gt;, clients)</tt>, so that it receives the request
tracks of every client, including clients that arrive later. It
learns of a new client when the relay sends it a PUBLISH for the
client's first request track.</t>
      </section>
      <section anchor="req-resp">
        <name>Request and Response Exchanges</name>
        <t>In MCP, the client sends requests and the server answers them. MOQT
requests (SUBSCRIBE, FETCH) name a track but do not carry an object
payload, so they cannot carry a JSON-RPC request. This document
therefore maps every JSON-RPC exchange onto a pair of tracks in the
client scope:</t>
        <ul spacing="normal">
          <li>
            <t>The client publishes requests on a request track.</t>
          </li>
          <li>
            <t>The server publishes responses on a response track.</t>
          </li>
          <li>
            <t>Each request is a new group on the request track. The response uses
the same Group ID on the response track and can span several
objects (for example, progress notifications followed by a result);
see <xref target="response-layout"/>.</t>
          </li>
          <li>
            <t>The JSON-RPC <tt>id</tt> is the authoritative correlation key. Matching
Group IDs are a convenience for relays and for recovery; a receiver
<bcp14>MUST NOT</bcp14> rely on Group IDs alone to match a response to a request.</t>
          </li>
          <li>
            <t>Requests <bcp14>MAY</bcp14> be concurrent. Each exchange occupies its own group, and
Group IDs on a request track increase with each new request.</t>
          </li>
        </ul>
        <section anchor="response-layout">
          <name>Response Layout and Continuity</name>
          <t>Because a response lives in a known group, it can outlast the link
that carried the request. Losing the MOQT session does not cancel a
request: the server keeps the work running and keeps publishing the
response into the same group, and retains it for a period of its
choosing (<xref target="reconnection"/>). When the client reconnects, it
resubscribes to the response track with FILL_PARAMETERS, or FETCHes
that group starting at the first Object ID it has not received, and
receives the rest of the response. Neither side resends what the other
already has.</t>
          <t>Within the group, the server <bcp14>MAY</bcp14> spread the response over several
subgroups. Each subgroup is sent on its own QUIC stream, so a long
result does not hold back progress notifications, and loss on one
stream does not block the others. For example, a server can send
progress notifications in one subgroup and the chunks of a large
result in another. Object IDs increase across the whole group, and
the final JSON-RPC result or error has the highest Object ID. A
receiver orders the objects of a response by Object ID, not by arrival
order, and treats the response as complete once it has the final
result or error.</t>
        </section>
        <section anchor="mrtr">
          <name>Multi Round-Trip Requests</name>
          <t>MCP servers do not send requests to clients. When a server needs more
input to complete a <tt>tools/call</tt>, <tt>prompts/get</tt>, or <tt>resources/read</tt>,
such as an elicitation, a sampling result, or the client's roots, it
returns a result with <tt>resultType</tt> <tt>input_required</tt> that lists the
requests in <tt>inputRequests</tt> and <bcp14>MAY</bcp14> include an opaque <tt>requestState</tt>
            <xref target="MCP"/>. The client gathers the input and retries the original
request, with a new JSON-RPC <tt>id</tt>, <tt>inputResponses</tt>, and the
<tt>requestState</tt> unchanged.</t>
          <t>Over MOQT, the input-required result is the final object of the
original request's response group. The retry is a new request, so it
is a new group on the same request track, and its response is in the
matching group of the response track. No separate tracks are needed
for elicitation, sampling, or roots.</t>
        </section>
        <section anchor="cancellation">
          <name>Cancellation</name>
          <t>A client cancels a request by publishing an MCP
<tt>notifications/cancelled</tt> message, with the request's JSON-RPC <tt>id</tt> as
<tt>requestId</tt>, as the next object in the request's own group on the
request track. If the subgroup that carried the request has ended, the
client opens a new subgroup in that group. The cancellation is thus
correlated by its group, covered by the same authorization as the
request track, and visible to a server that FETCHes the group after a
reconnect. A server that receives it stops the work and ends the
response with a JSON-RPC error or, if the work has already finished,
with its result. Work that runs as a task is cancelled with
<tt>tasks/cancel</tt> on the task's request track (<xref target="task-tracks"/>).</t>
        </section>
        <section anchor="delivering-requests-and-responses">
          <name>Delivering Requests and Responses</name>
          <t>MOQT operates hop by hop. A client sends PUBLISH for its request
track to its first hop, which accepts it with PUBLISH_OK. When the
first hop is the server, the server receives the request track
directly. When it is a relay, the PUBLISH ends there, and the relay
delivers the track onward to each downstream subscriber whose
subscription matches it:</t>
          <ul spacing="normal">
            <li>
              <t>To an endpoint holding a SUBSCRIBE_TRACKS whose prefix matches the
track's namespace, such as the server's SUBSCRIBE_TRACKS on
<tt>(mcp, &lt;server-id&gt;, clients)</tt> (<xref target="getting-started"/>), the relay sends
a PUBLISH for the track towards that endpoint, and then forwards the
track's objects.</t>
            </li>
            <li>
              <t>To an endpoint that already holds a SUBSCRIBE for the track, the
relay sends the track's objects on that subscription.</t>
            </li>
          </ul>
          <t>Response tracks reach the client the same way, in the other
direction: the server publishes them to its first hop, and the
client's SUBSCRIBE_TRACKS on its client scope, which excludes the
client's own request tracks, delivers each one. A client that
subscribes to a response track before the server has published it
includes RENDEZVOUS_TIMEOUT, so that the relay holds the subscription
until the track appears.</t>
          <t>FETCH is never used to send a request. It is used only to retrieve
objects that are already published: the catalog, a resource, skill
metadata and instructions, task state, or a response that was missed
during a disconnect (<xref target="reconnection"/>).</t>
          <t>Request and response tracks <bcp14>MUST NOT</bcp14> use a finite delivery timeout
(SUBGROUP_DELIVERY_TIMEOUT or OBJECT_DELIVERY_TIMEOUT), because a lost
request or response cannot be told apart from one that was never sent.</t>
        </section>
      </section>
      <section anchor="reconnection">
        <name>Reconnection</name>
        <t>If the underlying QUIC connection migrates (e.g., network change on a
mobile device), the MOQT session persists and nothing changes for MCP.
If the connection is lost, the client reconnects, to the same relay or
another one, and repeats <xref target="getting-started"/>. Because it derives the
same client ID, its client scope, and the responses and tasks in it,
are unchanged.</t>
        <t>A client that did not receive all of the response to an in-flight
request recovers the rest from the corresponding group of the
response track (<xref target="response-layout"/>). A server retains responses and
task state for a period of its choosing; tasks follow the <tt>ttlMs</tt> of
<xref target="MCP-TASKS"/>. Relays that cache them within their MAX_CACHE_DURATION
(<xref target="cache-duration"/>) answer the client's catch-up without involving
the server. A request whose response cannot be recovered <bcp14>SHOULD</bcp14> be
treated as failed, and the client <bcp14>MAY</bcp14> retry it as a new request.</t>
        <t>To catch up on objects missed during a disconnect without a separate
FETCH round-trip, a client re-subscribing to a track <bcp14>SHOULD</bcp14> use a fill
fetch: it issues SUBSCRIBE with FILL_PARAMETERS on the track (e.g., a
task track or a resource track), and the publisher opens a
unidirectional fill fetch stream carrying the historical range
(typically the latest complete group) before live objects resume on
the subscription. This makes "retrieve what I missed, then follow
live" atomic. For deterministic recovery of a specific object range
(e.g., replaying a task's state history), the client uses FETCH with
explicit Start and End Locations; the publisher confirms the actual
End Location in FETCH_OK.</t>
      </section>
      <section anchor="priority-management">
        <name>Priority Management</name>
        <t>MOQT subscriber priorities (0-255, lower is higher priority) optimize
MCP message delivery:</t>
        <table>
          <name>Standalone Priorities</name>
          <thead>
            <tr>
              <th align="left">Priority</th>
              <th align="left">Range</th>
              <th align="left">Track Type</th>
              <th align="left">Example</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">HIGH</td>
              <td align="left">1-30</td>
              <td align="left">Control, Tools, Prompts, Tasks, Skill execution</td>
              <td align="left">tool calls, task state</td>
            </tr>
            <tr>
              <td align="left">MEDIUM</td>
              <td align="left">31-90</td>
              <td align="left">Catalog, Skills</td>
              <td align="left">capability changes</td>
            </tr>
            <tr>
              <td align="left">LOW</td>
              <td align="left">91-127</td>
              <td align="left">Resources</td>
              <td align="left">documentation</td>
            </tr>
          </tbody>
        </table>
        <t>Applications <bcp14>MAY</bcp14> dynamically adjust priorities based on user interaction
state (e.g., boosting skill loading when a user is actively waiting).</t>
        <t>Within a PACE dialog (<xref target="pace-mapping"/>), MCP tracks instead use the
priority tiers of <xref target="PACE"/>, so that they are ordered correctly against
PACE dialog control and other bindings:</t>
        <table>
          <name>Priorities within PACE</name>
          <thead>
            <tr>
              <th align="left">MCP Track Type</th>
              <th align="left">PACE Tier</th>
              <th align="left">Range</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Control, Tools, Prompts, Tasks, Skill execution</td>
              <td align="left">Standard Operations</td>
              <td align="left">96-127</td>
            </tr>
            <tr>
              <td align="left">Catalog, Skills</td>
              <td align="left">Discovery</td>
              <td align="left">128-159</td>
            </tr>
            <tr>
              <td align="left">Resources</td>
              <td align="left">Bulk Transfer</td>
              <td align="left">192-255</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="error-handling">
        <name>Error Handling</name>
        <section anchor="transport-level-errors">
          <name>Transport-Level Errors</name>
          <t>MOQT reports errors through four separate code spaces <xref target="MOQT"/>. The
same name (for example, EXPIRED_AUTH_TOKEN) can appear in more than
one of them with a different code point, so an implementation needs to
know which mechanism carried an error before acting on it.</t>
          <t>Request errors, carried in REQUEST_ERROR in response to SUBSCRIBE,
PUBLISH, FETCH, SUBSCRIBE_TRACKS, SUBSCRIBE_NAMESPACE or
PUBLISH_NAMESPACE (SUBSCRIBE_ERROR, FETCH_ERROR and so on are
shorthands for REQUEST_ERROR):</t>
          <table>
            <name>MOQT Request Errors</name>
            <thead>
              <tr>
                <th align="left">Code</th>
                <th align="left">Meaning</th>
                <th align="left">MCP Recovery</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">DOES_NOT_EXIST</td>
                <td align="left">Unknown server, tool or resource track</td>
                <td align="left">Check the server ID or refresh the catalog</td>
              </tr>
              <tr>
                <td align="left">UNAUTHORIZED</td>
                <td align="left">Token lacks the required scope</td>
                <td align="left">Obtain a token with broader scope (<xref target="authorization"/>)</td>
              </tr>
              <tr>
                <td align="left">EXPIRED_AUTH_TOKEN</td>
                <td align="left">Auth token expired</td>
                <td align="left">Re-authenticate and retry</td>
              </tr>
              <tr>
                <td align="left">TIMEOUT</td>
                <td align="left">No publisher appeared within RENDEZVOUS_TIMEOUT</td>
                <td align="left">Retry, or treat the server as unavailable</td>
              </tr>
              <tr>
                <td align="left">INVALID_RANGE</td>
                <td align="left">FETCH range has no published objects</td>
                <td align="left">Treat the object as not yet published</td>
              </tr>
              <tr>
                <td align="left">EXCESSIVE_LOAD</td>
                <td align="left">Endpoint overloaded</td>
                <td align="left">Back off with exponential delay</td>
              </tr>
              <tr>
                <td align="left">NAMESPACE_TOO_LARGE</td>
                <td align="left">Relay refuses to enumerate the prefix</td>
                <td align="left">Subscribe to specific tracks</td>
              </tr>
            </tbody>
          </table>
          <t>PUBLISH_DONE status codes, which end a subscription:</t>
          <table>
            <name>PUBLISH_DONE Status Codes</name>
            <thead>
              <tr>
                <th align="left">Code</th>
                <th align="left">Meaning</th>
                <th align="left">MCP Recovery</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">TRACK_ENDED</td>
                <td align="left">Publisher finished the track</td>
                <td align="left">Normal; no action</td>
              </tr>
              <tr>
                <td align="left">TOO_FAR_BEHIND</td>
                <td align="left">Subscriber could not keep up</td>
                <td align="left">Re-subscribe with a fill fetch; reduce subscription scope</td>
              </tr>
              <tr>
                <td align="left">EXPIRED</td>
                <td align="left">Subscription reached its expiry</td>
                <td align="left">Re-subscribe</td>
              </tr>
              <tr>
                <td align="left">UNAUTHORIZED</td>
                <td align="left">Subscriber is no longer authorized</td>
                <td align="left">Re-authenticate</td>
              </tr>
              <tr>
                <td align="left">EXCESSIVE_LOAD</td>
                <td align="left">Publisher overloaded</td>
                <td align="left">Back off with exponential delay</td>
              </tr>
              <tr>
                <td align="left">GOING_AWAY</td>
                <td align="left">Publisher sent or received GOAWAY</td>
                <td align="left">Reconnect</td>
              </tr>
            </tbody>
          </table>
          <t>Stream reset codes, used when an individual data stream is reset:</t>
          <table>
            <name>Stream Reset Codes</name>
            <thead>
              <tr>
                <th align="left">Code</th>
                <th align="left">Meaning</th>
                <th align="left">MCP Recovery</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">DELIVERY_TIMEOUT</td>
                <td align="left">Delivery timeout exceeded</td>
                <td align="left">Not expected on request/response tracks (<xref target="req-resp"/>); FETCH the missing group</td>
              </tr>
              <tr>
                <td align="left">SESSION_CLOSED</td>
                <td align="left">Session is closing</td>
                <td align="left">Reconnect if needed</td>
              </tr>
              <tr>
                <td align="left">CANCELLED</td>
                <td align="left">Stream cancelled by either endpoint</td>
                <td align="left">Check PUBLISH_DONE for detail</td>
              </tr>
            </tbody>
          </table>
          <t>Session termination codes and GOAWAY end the whole MOQT session.
After GOAWAY, clients <bcp14>SHOULD</bcp14> reconnect as described in
<xref target="reconnection"/>.</t>
        </section>
        <section anchor="subscription-lifecycle">
          <name>Subscription Lifecycle</name>
          <t>PUBLISH_DONE indicates the publisher has finished sending objects for a
subscription. This is not an error. Clients <bcp14>SHOULD</bcp14> re-subscribe if the
content is expected to continue (e.g., a resource that receives
periodic updates).</t>
        </section>
        <section anchor="mcp-level-errors">
          <name>MCP-Level Errors</name>
          <t>MCP errors are JSON-RPC error responses within MOQT objects:</t>
          <sourcecode type="json"><![CDATA[
{
  "jsonrpc": "2.0",
  "id": 1,
  "error": {
    "code": -32601,
    "message": "Method not found",
    "data": { "details": "Tool 'unknown_tool' not found" }
  }
}
]]></sourcecode>
          <t>Besides the standard JSON-RPC error codes, <xref target="MCP"/> defines -32021
(missing required client capability) and -32022 (unsupported protocol
version), and reports an unknown resource with -32602 (invalid
params). A tool that receives invalid input <bcp14>SHOULD</bcp14> report it as a tool
execution error (an <tt>isError: true</tt> result on the tool track) rather
than a JSON-RPC protocol error, so the model can self-correct.</t>
        </section>
        <section anchor="error-recovery">
          <name>Error Recovery</name>
          <ol spacing="normal" type="1"><li>
              <t>Transient errors: Retry with exponential backoff</t>
            </li>
            <li>
              <t>Unsupported protocol version: Retry with a version from the
error's <tt>supported</tt> list</t>
            </li>
            <li>
              <t>Resource errors: Invalidate cache and re-fetch</t>
            </li>
            <li>
              <t>Skill errors: See <xref target="skills-errors"/></t>
            </li>
          </ol>
        </section>
      </section>
    </section>
    <section anchor="capability-discovery">
      <name>Capability Discovery</name>
      <section anchor="catalog-contents">
        <name>Catalog Contents</name>
        <t>The catalog replaces <tt>server/discover</tt> and the list requests for a
client that subscribes to it. Its Object 0 is a JSON object whose
members are those of the <tt>server/discover</tt> result (<tt>supportedVersions</tt>,
<tt>capabilities</tt>, <tt>instructions</tt>, and the server's identity in <tt>_meta</tt>)
together with <tt>tools</tt>, <tt>resources</tt>, <tt>resourceTemplates</tt>, and <tt>prompts</tt>
holding the definitions that <tt>tools/list</tt>, <tt>resources/list</tt>,
<tt>resources/templates/list</tt>, and <tt>prompts/list</tt> return <xref target="MCP"/>. The
<tt>ttlMs</tt> and <tt>cacheScope</tt> members of those results also apply to the
catalog; the server-scope catalog has <tt>cacheScope</tt> <tt>public</tt>.</t>
        <sourcecode type="json"><![CDATA[
{
  "supportedVersions": ["2026-07-28"],
  "capabilities": {
    "tools": {},
    "resources": {},
    "prompts": {},
    "extensions": { "io.modelcontextprotocol/tasks": {} }
  },
  "_meta": {
    "io.modelcontextprotocol/serverInfo": {
      "name": "ExampleServer",
      "version": "2.0.0"
    }
  },
  "instructions": "Project file and build tools.",
  "tools": [
    {
      "name": "read_file",
      "description": "Read a file from the project",
      "inputSchema": {
        "type": "object",
        "properties": { "path": { "type": "string" } },
        "required": ["path"]
      }
    }
  ],
  "resources": [
    {
      "uri": "file:///project/README.md",
      "name": "README",
      "mimeType": "text/markdown"
    }
  ],
  "prompts": [
    { "name": "code_review", "description": "Review a change" }
  ],
  "ttlMs": 3600000,
  "cacheScope": "public"
}
]]></sourcecode>
        <t>Clients FETCH the latest group of the catalog for one-time discovery,
or SUBSCRIBE for real-time updates when capabilities change. Catalog
entries <bcp14>SHOULD</bcp14> carry the <tt>icons</tt> and <tt>description</tt> fields defined by
<xref target="MCP"/>. Tool <tt>inputSchema</tt> and <tt>outputSchema</tt> use JSON Schema
2020-12, the default dialect for MCP schema definitions.</t>
      </section>
      <section anchor="prefix-subscriptions">
        <name>Track Discovery by Prefix</name>
        <t>MOQT offers two prefix-based mechanisms, and they discover different
things <xref target="MOQT"/>:</t>
        <ul spacing="normal">
          <li>
            <t>SUBSCRIBE_TRACKS discovers and subscribes to tracks. The publisher
(or relay) sends a PUBLISH for each existing and future track whose
namespace matches the prefix, excluding tracks published by the
subscriber.</t>
          </li>
          <li>
            <t>SUBSCRIBE_NAMESPACE discovers namespaces, not tracks. The publisher
responds with a NAMESPACE message for each matching namespace it
knows, and sends NAMESPACE_DONE later if that namespace is
withdrawn. NAMESPACE_DONE does not mark the end of a list.</t>
          </li>
        </ul>
        <t>A client uses SUBSCRIBE_TRACKS on its client scope (<xref target="getting-started"/>),
and <bcp14>MAY</bcp14> use it on the server-scope prefixes <tt>(mcp, &lt;server-id&gt;,
resources)</tt> and <tt>(mcp, &lt;server-id&gt;, skills)</tt> to follow public
resources and skills. A client <bcp14>MUST NOT</bcp14> send SUBSCRIBE_TRACKS for
<tt>(mcp, &lt;server-id&gt;)</tt> or <tt>(mcp, &lt;server-id&gt;, clients)</tt>, which would
match other clients' tracks, and relays refuse it
(<xref target="authorization"/>).</t>
        <t>The following rules apply to prefix subscriptions:</t>
        <ul spacing="normal">
          <li>
            <t>Skipped tracks: if the publisher cannot create a subscription for a
matching track, it sends PUBLISH_SKIPPED with that track's name and
will not send a PUBLISH for it under this SUBSCRIBE_TRACKS. An MCP
endpoint that receives PUBLISH_SKIPPED for a track it needs <bcp14>MUST</bcp14>
send an explicit SUBSCRIBE for that track. Missing a request or
response track would otherwise stall requests.</t>
          </li>
          <li>
            <t>Large namespaces: a relay <bcp14>MAY</bcp14> refuse or close a prefix subscription
with NAMESPACE_TOO_LARGE. An endpoint that receives it falls back to
explicit SUBSCRIBE for the tracks listed in the catalog.</t>
          </li>
        </ul>
      </section>
      <section anchor="dynamic-updates">
        <name>Dynamic Updates</name>
        <t>The catalog is authoritative for which tools, resources, resource
templates, and prompts the server offers. When that set changes, the
server publishes a new catalog group. It then starts publishing the
tracks of any added resource, and ends the tracks of any removed
resource with PUBLISH_DONE (TRACK_ENDED).</t>
        <t>A client that subscribes to the catalog track receives each change
without polling, so it does not need <tt>subscriptions/listen</tt> or the
list-changed notifications of <xref target="MCP"/>. Changes to the content of a
resource are signaled by a new group on its resource track
(<xref target="resource-tracks"/>).</t>
      </section>
    </section>
    <section anchor="relay-support">
      <name>Relay Support</name>
      <t>MOQT relays enable scalable MCP deployments through subscription
aggregation and content caching.</t>
      <section anchor="subscription-aggregation-and-caching">
        <name>Subscription Aggregation and Caching</name>
        <t>When multiple subscribers subscribe to the same track, relays maintain
a single upstream subscription and fan out content downstream, and a
cached object serves later subscriptions and fetches. Server-scope
tracks are shared by all clients of a server, so one copy of the
catalog, a public resource, or a skill at a relay serves every client
behind it. Client-scope tracks belong to one client; a cached object
there serves only that client, for example in a fill fetch after
reconnection (<xref target="reconnection"/>).</t>
        <table>
          <name>Relay Cache Strategy</name>
          <thead>
            <tr>
              <th align="left">Content Type</th>
              <th align="left">Scope</th>
              <th align="left">Cache Strategy</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Catalog</td>
              <td align="left">Server</td>
              <td align="left">Latest group; replaced by each update</td>
            </tr>
            <tr>
              <td align="left">Public resources</td>
              <td align="left">Server</td>
              <td align="left">Latest group; a new group is a new version</td>
            </tr>
            <tr>
              <td align="left">Skill registry, metadata, instructions</td>
              <td align="left">Server</td>
              <td align="left">Latest group; replaced by each new version</td>
            </tr>
            <tr>
              <td align="left">Private resources, private catalog</td>
              <td align="left">Client</td>
              <td align="left">Latest group, for that client only</td>
            </tr>
            <tr>
              <td align="left">Responses, task state</td>
              <td align="left">Client</td>
              <td align="left">Kept only as long as needed for recovery (<xref target="reconnection"/>)</td>
            </tr>
          </tbody>
        </table>
        <t>A server <bcp14>MUST NOT</bcp14> publish content whose <tt>cacheScope</tt> is <tt>private</tt> in
the server scope.</t>
        <section anchor="cache-duration">
          <name>Cache Duration</name>
          <t>A publisher controls how long relays may serve a track's objects from
cache with the MAX_CACHE_DURATION Track Property <xref target="MOQT"/>, a number of
milliseconds after which a relay stops serving an object. Within that
time, a relay that holds an object answers a FETCH or fill fetch for
it directly, so the request does not travel to the server. This
serves a client from the nearest relay when it reads the catalog, a
resource, or a skill, joins late, or catches up after a reconnection.</t>
          <t>Servers <bcp14>SHOULD</bcp14> set MAX_CACHE_DURATION on every track they publish:</t>
          <ul spacing="normal">
            <li>
              <t>On server-scope tracks, to the content's <tt>ttlMs</tt> <xref target="MCP"/>, so that
relays stop serving content the server no longer considers fresh.</t>
            </li>
            <li>
              <t>On response and task state tracks, to at least the period for which
the server retains responses and task state (<xref target="reconnection"/>), so
that a reconnecting client can recover them from the relay.</t>
            </li>
          </ul>
          <t>Clients <bcp14>MAY</bcp14> set MAX_CACHE_DURATION on their request tracks in the
same way, so that a server that reconnects can FETCH a request, or a
cancellation (<xref target="cancellation"/>), that it missed from the relay.
Without MAX_CACHE_DURATION, relays can cache objects until they evict
them, which can serve content after the server considers it stale.</t>
        </section>
      </section>
      <section anchor="relay-namespace-aggregation">
        <name>Finding Servers Through a Relay</name>
        <t>A client normally learns a server ID out of band (<xref target="scopes"/>). A
relay operator <bcp14>MAY</bcp14> additionally offer a listing of the MCP servers
behind a relay. Listing is optional and opt-in on both sides:</t>
        <ul spacing="normal">
          <li>
            <t>A server that wants to be listed advertises its server scope
<tt>(mcp, &lt;server-id&gt;)</tt> to the relay with PUBLISH_NAMESPACE. A relay
lists only servers that do so and that its operator allows to be
listed.</t>
          </li>
          <li>
            <t>A client asks for the listing with SUBSCRIBE_NAMESPACE for <tt>(mcp)</tt>.
A relay <bcp14>MUST</bcp14> refuse this request with REQUEST_ERROR (UNAUTHORIZED)
unless the client's token authorizes listing, and <bcp14>MAY</bcp14> limit the
listing to the servers that client is authorized to see.</t>
          </li>
        </ul>
        <t>The relay answers an authorized request with one NAMESPACE message for
each listed server, and sends NAMESPACE_DONE when a server withdraws.
The relay does not forward PUBLISH_NAMESPACE to clients.</t>
        <sourcecode type="ascii"><![CDATA[
  Client                 Relay                Server A   Server B
     |                     |                      |          |
     |                     | PUBLISH_NAMESPACE    |          |
     |                     | (mcp, srv-a)         |          |
     |                     |<---------------------|          |
     |                     | PUBLISH_NAMESPACE    |          |
     |                     | (mcp, srv-b)                    |
     |                     |<--------------------------------|
     |                     |                      |          |
     | SUBSCRIBE_NAMESPACE |                      |          |
     | (mcp)               |                      |          |
     |-------------------->|                      |          |
     | NAMESPACE (srv-a)   |                      |          |
     |<--------------------|                      |          |
     | NAMESPACE (srv-b)   |                      |          |
     |<--------------------|                      |          |
     |                     |                      |          |
     |   ... later, Server B withdraws ...        |          |
     | NAMESPACE_DONE      |                      |          |
     |   (srv-b)           |                      |          |
     |<--------------------|                      |          |
]]></sourcecode>
        <t>NAMESPACE and NAMESPACE_DONE carry only the namespace suffix after the
subscribed prefix, here the server ID. The client then reads the
server's catalog and starts as in <xref target="getting-started"/>. A relay <bcp14>MUST
NOT</bcp14> reveal client-scope namespaces, or any namespace other than a
listed server's <tt>(mcp, &lt;server-id&gt;)</tt>, in answer to SUBSCRIBE_NAMESPACE.</t>
      </section>
    </section>
    <section anchor="agent-skills">
      <name>Agent Skills</name>
      <t>Agent Skills are composed instructions that orchestrate multiple tools
for complex tasks. Skills complement tools: tools are atomic and
stateless, while skills are context-aware multi-step workflows.</t>
      <t>This document supports two ways to run a skill:</t>
      <ul spacing="normal">
        <li>
          <t>Client-executed (the default): the client loads the skill's
instructions and its model carries them out with ordinary MCP tool
calls (<xref target="client-executed-skills"/>). This needs no new MCP methods;
the skill tracks only distribute the skill content.</t>
        </li>
        <li>
          <t>Server-executed (<bcp14>OPTIONAL</bcp14>): the client asks the server to run the
skill with <tt>skills/invoke</tt>, and the server reports progress and the
result (<xref target="server-executed-skills"/>). This adds JSON-RPC methods that
are not part of <xref target="MCP"/>.</t>
        </li>
      </ul>
      <t>Support for Skills is <bcp14>OPTIONAL</bcp14>. A server that offers skills <bcp14>MUST</bcp14>
publish the registry track and the metadata and instructions tracks of
each skill, and <bcp14>MUST</bcp14> support FETCH on them. A server that also
supports server-executed skills marks those skills with
<tt>"serverExecution": true</tt> in the registry.</t>
      <section anchor="skills-track-structure">
        <name>Skills Track Structure</name>
        <t>Skill content is published once in the server scope; server-executed
skill requests are in the client scope.</t>
        <table>
          <name>Skills Tracks</name>
          <thead>
            <tr>
              <th align="left">Track Namespace</th>
              <th align="left">Track Name</th>
              <th align="left">Publisher</th>
              <th align="left">Purpose</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>(mcp, &lt;server-id&gt;, skills)</tt></td>
              <td align="left">
                <tt>(registry)</tt></td>
              <td align="left">MCP Server</td>
              <td align="left">List of skills with their metadata</td>
            </tr>
            <tr>
              <td align="left">
                <tt>(mcp, &lt;server-id&gt;, skills, &lt;skill-id&gt;)</tt></td>
              <td align="left">
                <tt>(metadata)</tt></td>
              <td align="left">MCP Server</td>
              <td align="left">Skill metadata</td>
            </tr>
            <tr>
              <td align="left">
                <tt>(mcp, &lt;server-id&gt;, skills, &lt;skill-id&gt;)</tt></td>
              <td align="left">
                <tt>(instructions)</tt></td>
              <td align="left">MCP Server</td>
              <td align="left">Full instructions</td>
            </tr>
            <tr>
              <td align="left">
                <tt>(mcp, &lt;server-id&gt;, clients, &lt;client-id&gt;, skills, &lt;skill-id&gt;)</tt></td>
              <td align="left">
                <tt>(request)</tt></td>
              <td align="left">MCP Client</td>
              <td align="left">
                <tt>skills/invoke</tt> requests (server-executed only)</td>
            </tr>
            <tr>
              <td align="left">
                <tt>(mcp, &lt;server-id&gt;, clients, &lt;client-id&gt;, skills, &lt;skill-id&gt;)</tt></td>
              <td align="left">
                <tt>(response)</tt></td>
              <td align="left">MCP Server</td>
              <td align="left">Progress and result (server-executed only)</td>
            </tr>
          </tbody>
        </table>
        <t>Each skill version is a new group on the registry, metadata, and
instructions tracks. Skills use progressive loading: a client reads
the small metadata object first, and fetches the instructions only
when it decides to use the skill. The metadata object contains:</t>
        <ul spacing="normal">
          <li>
            <t><tt>id</tt> and <tt>version</tt></t>
          </li>
          <li>
            <t><tt>description</tt> and <tt>triggers</tt>: when the skill applies</t>
          </li>
          <li>
            <t><tt>requiredTools</tt>: the tools the instructions call</t>
          </li>
          <li>
            <t><tt>instructionsHash</tt>: the SHA-256 hash of the instructions object,
base64url-encoded, so that a client can check the instructions it
fetched</t>
          </li>
        </ul>
        <t>Clients <bcp14>SHOULD</bcp14> cache skills by version.</t>
      </section>
      <section anchor="client-executed-skills">
        <name>Client-Executed Skills</name>
        <sourcecode type="ascii"><![CDATA[
    Client                    Relay                     Server
       |                        |                         |
       |  User types: "/commit" |                         |
       |  (match registry)      |                         |
       |                        |                         |
       | FETCH skills, commit   |                         |
       |   -- (metadata)        |                         |
       |----------------------->| [cached]                |
       | Object: metadata       |                         |
       |<-----------------------|                         |
       |                        |                         |
       | FETCH skills, commit   |                         |
       |   -- (instructions)    |                         |
       |----------------------->| [cached]                |
       | Object: instructions   |                         |
       |<-----------------------|                         |
       |                        |                         |
       | (model follows the instructions)                 |
       |                        |                         |
       | Object on tools,       |                         |
       |   git_status           |                         |
       |   -- (request)         |                         |
       |----------------------->|------------------------>|
       | Object on tools,       |                         |
       |   git_status           |                         |
       |   -- (response)        |                         |
       |<-----------------------|<------------------------|
       |                        |                         |
       |  ... further tool calls, such as git_commit ...  |
]]></sourcecode>
        <t>The metadata and instructions are already-published, versioned objects
in the server scope, so FETCH is appropriate and a relay that holds
them answers from its cache, whichever client fetched them first
(<xref target="relay-support"/>). Tool calls use the client's tool request/response
tracks (<xref target="req-resp"/>).</t>
      </section>
      <section anchor="server-executed-skills">
        <name>Server-Executed Skills</name>
        <t>The skill's request and response tracks are a request/response pair
(<xref target="req-resp"/>). Each invocation is a new group on the request track,
and the server publishes progress and the result in the group with the
same Group ID on the response track. A server that runs the skill as a
task returns a task handle and reports state on the task's state track
(<xref target="task-tracks"/>).</t>
        <t>The request, published as Object 0 of a new group:</t>
        <sourcecode type="json"><![CDATA[
{
  "jsonrpc": "2.0",
  "id": "exec-001",
  "method": "skills/invoke",
  "params": {
    "skillId": "commit",
    "version": "1.2.0",
    "arguments": { "push": false },
    "_meta": { "progressToken": "exec-001" }
  }
}
]]></sourcecode>
        <t>Zero or more progress notifications follow on the response track,
then the result as the last object of the group:</t>
        <sourcecode type="json"><![CDATA[
{
  "jsonrpc": "2.0",
  "method": "notifications/progress",
  "params": {
    "progressToken": "exec-001",
    "progress": 1,
    "total": 3,
    "message": "Checking status..."
  }
}
]]></sourcecode>
        <sourcecode type="json"><![CDATA[
{
  "jsonrpc": "2.0",
  "id": "exec-001",
  "result": {
    "resultType": "complete",
    "output": { "commitSha": "abc123", "message": "Add auth flow" }
  }
}
]]></sourcecode>
      </section>
      <section anchor="skills-errors">
        <name>Skills Errors</name>
        <t>A server reports skill failures as JSON-RPC errors on the skill's
response track:</t>
        <table>
          <name>Skills Error Codes</name>
          <thead>
            <tr>
              <th align="left">Error Code</th>
              <th align="left">Description</th>
              <th align="left">Recovery Action</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">-33001</td>
              <td align="left">Skill not found</td>
              <td align="left">Refresh the registry</td>
            </tr>
            <tr>
              <td align="left">-33002</td>
              <td align="left">Required tool unavailable</td>
              <td align="left">Check that the tool's server is reachable</td>
            </tr>
            <tr>
              <td align="left">-33003</td>
              <td align="left">Dependency resolution failed</td>
              <td align="left">Check the skill's <tt>requiredTools</tt></td>
            </tr>
            <tr>
              <td align="left">-33004</td>
              <td align="left">Server-executed skill timed out</td>
              <td align="left">Retry, or run the skill client-side</td>
            </tr>
          </tbody>
        </table>
        <t>These codes are outside the JSON-RPC reserved range, as <xref target="MCP"/>
requires for application-defined errors. A client that cannot run a
skill can fall back to direct tool calls.</t>
      </section>
      <section anchor="relay-caching-for-skills">
        <name>Relay Caching for Skills</name>
        <t>Each skill version is an immutable group in the server scope, so a
relay can serve it to every client (<xref target="relay-support"/>). When a skill
is updated, the server publishes a new group on the registry and on
the skill's metadata and instructions tracks; clients with active
subscriptions receive the new version without polling.</t>
      </section>
    </section>
    <section anchor="multi-server-operation">
      <name>Multi-Server Operation</name>
      <t>When a client uses multiple MCP servers, it has a separate, pairwise
client ID and client scope at each:</t>
      <artwork><![CDATA[
Server A: (mcp, srv-a, resources) -- (file:///docs/index.md)
Server B: (mcp, srv-b, clients, <client-id-b>, tools, code_analysis)
              -- (request)
Server C: (mcp, srv-c, clients, <client-id-c>, control) -- (request)
]]></artwork>
      <t>The client coordinates across servers by:</t>
      <ul spacing="normal">
        <li>
          <t>Subscribing to related resource tracks from multiple servers and
selecting sources based on freshness or performance</t>
        </li>
        <li>
          <t>Passing tool results from one server as input to tools on another</t>
        </li>
        <li>
          <t>Failing over to alternative servers when one becomes unavailable</t>
        </li>
      </ul>
      <t>No cross-server state sharing occurs at the protocol level; the client
is responsible for coordination.</t>
    </section>
    <section anchor="pace-mapping">
      <name>Carrying MCP inside a PACE Dialog</name>
      <t>PACE <xref target="PACE"/> manages agent dialogs over MOQT: it supplies the dialog
identifier, lifecycle, context propagation, identity, and
authorization, and carries application protocols such as MCP as
bindings. MCP over MOQT runs inside a PACE dialog with the same tracks
and the same message handling as in standalone mode; only the
namespaces change.</t>
      <section anchor="namespace-mapping">
        <name>Namespace Mapping</name>
        <t>In a PACE dialog, each participant publishes under its own agent-id.
The leading fields of an MCP namespace,
<tt>(mcp, &lt;server-id&gt;, clients, &lt;client-id&gt;)</tt> in the client scope or
<tt>(mcp, &lt;server-id&gt;)</tt> in the server scope, are replaced by <tt>(pace, dialogs, &lt;did&gt;, &lt;agent-id&gt;,
mcp)</tt>, where <tt>&lt;did&gt;</tt> is the dialog-id and <tt>&lt;agent-id&gt;</tt> is the agent-id
of the track's publisher. The rest of the namespace (the MCP category,
such as <tt>control</tt>, <tt>tools</tt>, <tt>prompts</tt>, <tt>resources</tt>, <tt>tasks</tt> or
<tt>skills</tt>, and any fields that follow it) and the track name stay the
same. For example, with <tt>cli</tt> and <tt>srv</tt> the agent-ids of the MCP
client and server:</t>
        <artwork><![CDATA[
Standalone:
  (mcp, <server-id>, clients, <client-id>, tools, <tool-name>)
      -- (request)
  (mcp, <server-id>, clients, <client-id>, tools, <tool-name>)
      -- (response)
  (mcp, <server-id>, resources) -- (<resource-uri>)
  (mcp, <server-id>) -- (catalog)

Within a PACE dialog:
  (pace, dialogs, <did>, <cli>, mcp, tools, <tool-name>)
      -- (request)
  (pace, dialogs, <did>, <srv>, mcp, tools, <tool-name>)
      -- (response)
  (pace, dialogs, <did>, <srv>, mcp, resources) -- (<resource-uri>)
  (pace, dialogs, <did>, <srv>, mcp) -- (catalog)
]]></artwork>
        <t>As in standalone mode, the category and identifier stay separate
namespace fields, so tokens and relays can match on
<tt>(..., mcp, tools)</tt> by prefix, and identifiers that contain <tt>/</tt>, such
as resource URIs, remain unambiguous. The resulting Full Track Name
<bcp14>MUST NOT</bcp14> exceed the 4,096-byte and 32-field limits of <xref target="MOQT"/>.</t>
      </section>
      <section anchor="what-pace-replaces">
        <name>What PACE Replaces</name>
        <t>Everything else in this document applies unchanged inside a dialog:
the object encoding, request and response tracks (<xref target="req-resp"/>),
group and subgroup use, multi round-trip requests, tasks, skills, and
relay caching. PACE takes over the following:</t>
        <ul spacing="normal">
          <li>
            <t>Scopes and client IDs: the dialog replaces both the server scope and
the client scope, and PACE relay authorization keeps the dialog's
tracks within the dialog. Client IDs are not used. Content that is
public in standalone mode, such as the catalog, is published in each
dialog; a client <bcp14>MAY</bcp14> instead read it from the server's standalone
server scope, where relays share it across clients.</t>
          </li>
          <li>
            <t>Getting started: MCP has no handshake. Once the dialog is active,
each participant sends SUBSCRIBE_TRACKS on the dialog prefix
<tt>(pace, dialogs, &lt;did&gt;)</tt>, which delivers its peers' MCP tracks, and
the client starts publishing requests.</t>
          </li>
          <li>
            <t>Dialog reference: each MCP request carries the PACE dialog reference
in <tt>_meta</tt> under the key <tt>org.ietf.agentproto/dialog-context</tt>, next
to the per-request fields of <xref target="MCP"/>. It is distinct from JSON-RPC
request IDs.</t>
          </li>
          <li>
            <t>Cancellation: a PACE CANCEL with scope <tt>operation</tt> that names an MCP
request track and group has the same effect as
<tt>notifications/cancelled</tt> in that group (<xref target="cancellation"/>). The
client can also publish <tt>notifications/cancelled</tt> itself.</t>
          </li>
          <li>
            <t>Identity and authorization: PACE supplies them. The MCP access rules
of <xref target="authorization"/> become PACE scopes over the
<tt>(..., &lt;did&gt;, &lt;agent-id&gt;, mcp, ...)</tt> namespaces.</t>
          </li>
          <li>
            <t>Priorities: MCP tracks use the PACE tiers (<xref target="priority-management"/>).</t>
          </li>
        </ul>
        <t>Several bindings, for example A2A and MCP, can share one dialog,
because each uses its own protocol field after the agent-id.</t>
      </section>
      <section anchor="choosing-a-mode">
        <name>Choosing a Mode</name>
        <t>A deployment <bcp14>MAY</bcp14> use either mode. Standalone mode suits a client that
talks directly to one or more MCP servers. PACE mode suits MCP tool
access that is one part of a larger, multi-agent dialog.</t>
      </section>
    </section>
    <section anchor="authorization">
      <name>Authorization</name>
      <t>Implementations <bcp14>SHOULD</bcp14> use MOQT's authorization token mechanism to
control access to individual tracks. Tokens <bcp14>SHOULD</bcp14> be scoped to
specific track namespaces or patterns (e.g., a token granting access
to <tt>mcp/&lt;server-id&gt;/clients/&lt;client-id&gt;/tools/*</tt> but not
<tt>mcp/&lt;server-id&gt;/clients/&lt;client-id&gt;/skills/*</tt>). Tokens <bcp14>MUST</bcp14> have
bounded lifetimes; servers <bcp14>MUST</bcp14> reject expired tokens with
EXPIRED_AUTH_TOKEN.</t>
      <t>Relays <bcp14>MUST</bcp14> authorize the scopes of <xref target="scopes"/> as follows:</t>
      <ul spacing="normal">
        <li>
          <t>A client is authorized to publish and subscribe only within its own
client scope <tt>(mcp, &lt;server-id&gt;, clients, &lt;client-id&gt;)</tt>, and to
subscribe to and fetch the server-scope tracks it is permitted to
read. Tokens that grant this name the client's client ID.</t>
        </li>
        <li>
          <t>A party to which a client delegates one task is authorized only
within that task's scope
<tt>(mcp, &lt;server-id&gt;, clients, &lt;client-id&gt;, tasks, &lt;task-id&gt;)</tt>.
How the delegation is granted is outside the scope of this
document.</t>
        </li>
        <li>
          <t>Only the server is authorized to publish in its server scope, to
send PUBLISH_NAMESPACE for <tt>(mcp, &lt;server-id&gt;)</tt>, and to send
SUBSCRIBE_TRACKS for <tt>(mcp, &lt;server-id&gt;, clients)</tt>.</t>
        </li>
      </ul>
      <t>Within a client scope, the client and server publish under the same
namespaces (for example, both publish tracks in
<tt>(mcp, &lt;server-id&gt;, clients, &lt;client-id&gt;, tools, &lt;tool-name&gt;)</tt>), and
only the track name tells the request track from the response track.
A namespace-scoped grant to publish therefore does not stop one peer
from publishing a track that belongs to the other. Tokens that
authorize PUBLISH <bcp14>MUST</bcp14> be scoped to Full Track Names, or to namespace patterns combined with the track names that
the holder publishes as defined in <xref target="moqt-tracks"/>. A relay <bcp14>MUST</bcp14>
reject a PUBLISH for a track outside the publisher's token scope.
Subscribe-only tokens <bcp14>MAY</bcp14> remain namespace-scoped.</t>
      <t><xref section="9.20.2" sectionFormat="of" target="MOQT"/> forbids copying the AUTHORIZATION TOKEN
parameter from a SUBSCRIBE_TRACKS into the PUBLISH messages that
result from it. A relay that
forwards a PUBLISH because of a SUBSCRIBE_TRACKS <bcp14>MUST</bcp14> therefore check
that each forwarded track falls within the scope of the token
presented on that SUBSCRIBE_TRACKS. For example, a token scoped to
<tt>mcp/&lt;server-id&gt;/clients/&lt;client-id&gt;/tools/*</tt> must not result in the
relay forwarding a PUBLISH for a skills or tasks track.</t>
      <section anchor="mapping-mcp-authorization-onto-moqt">
        <name>Mapping MCP Authorization onto MOQT</name>
        <t>The MCP authorization framework <xref target="MCP"/> treats the MCP server as an
OAuth 2.1 protected resource. It uses OAuth 2.0 Protected Resource
Metadata discovery (<xref target="RFC9728"/>), OpenID Connect Discovery for the
authorization server, incremental scope consent signaled via
<tt>WWW-Authenticate</tt>, and OAuth Client ID Metadata Documents for client
registration.</t>
        <t>Because MOQT supplies transport over QUIC rather than HTTP, this
framework maps onto MOQT as follows:</t>
        <ul spacing="normal">
          <li>
            <t>Resource discovery: the protected-resource and authorization-server
metadata are obtained out of band (e.g., from the server's HTTPS
origin or an MCP registry entry) before the MOQT session is
established. The resulting access token is then presented to MOQT.</t>
          </li>
          <li>
            <t>Token presentation: the OAuth access token (or a token derived from
it) is carried in MOQT's AUTHORIZATION TOKEN Setup Option and in the
AUTHORIZATION TOKEN message parameter on individual requests, rather
than in an HTTP <tt>Authorization</tt> header. Setup Options are
hop-by-hop, so a token in SETUP authorizes the session with the first
relay. Relays aggregate subscriptions, so a token in a request
parameter does not in general reach the MCP server either. When the
path includes relays, credentials that the MCP server itself must
verify travel in each request's <tt>_meta</tt>.</t>
          </li>
          <li>
            <t>Proof of possession: HTTP DPoP <xref target="RFC9449"/> binds a proof to a
request with the <tt>htm</tt> and <tt>htu</tt> claims, which MOQT has no equivalent
for. Deployments that need sender-constrained tokens use the DPoP
binding of <xref target="MoQ-C4M"/>. There, each proof carries an Authorization
Context (<tt>actx</tt>) naming the MOQT action, Track Namespace and Track
Name in place of <tt>htm</tt> and <tt>htu</tt>.</t>
          </li>
          <li>
            <t>Relay-level authorization: where a relay enforces namespace access,
deployments <bcp14>SHOULD</bcp14> use MOQT Common Access Tokens <xref target="MoQ-C4M"/>, whose
scopes map to the <tt>(mcp, &lt;server-id&gt;, ...)</tt> track namespaces. A C4M
token can be minted from the OAuth grant so that the relay authorizes
subscribe/publish without seeing the upstream OAuth token.</t>
          </li>
          <li>
            <t>Incremental consent: when a server requires additional scope for a
particular tool or resource, it rejects the PUBLISH, SUBSCRIBE or
FETCH with REQUEST_ERROR (UNAUTHORIZED), and the client obtains a
token with the broader scope, mirroring the <tt>WWW-Authenticate</tt>
incremental-consent flow. EXPIRED_AUTH_TOKEN is used only when the
presented token has expired.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="poppy">
      <name>Use with the Personal Agent Protocol</name>
      <t>The Personal Agent Protocol (Poppy) <xref target="POPPY"/> lets a person's own
agent, the Personal Agent, sign in to a Company and call the Company's
APIs, which the Company lists in its <tt>poppy.json</tt> discovery document.
Poppy Draft 0.3 reaches an API of type <tt>mcp</tt> over Streamable HTTP.
This informative section describes how a Company can offer the same
MCP server over MOQT. Poppy is a pre-1.0 draft, and this section
tracks Draft 0.3.</t>
      <section anchor="advertising-the-server">
        <name>Advertising the Server</name>
        <t>A Company lists its MCP over MOQT server in <tt>poppy.json</tt>, alongside or
instead of its Streamable HTTP server. Poppy ignores API entries
whose type it does not recognize, so the two can coexist:</t>
        <sourcecode type="json"><![CDATA[
{
  "apis": [
    { "type": "mcp", "url": "https://acme.example/mcp" },
    { "type": "acme.example/mcp-moqt",
      "url": "moqt://relay.acme.example",
      "serverId": "acme-support" }
  ]
}
]]></sourcecode>
        <t>The <tt>url</tt> member is the <tt>moqt://</tt> URI of the relay or server to
connect to (<xref target="moqt-session"/>), and <tt>serverId</tt> is the server ID
(<xref target="scopes"/>). Poppy Draft 0.3 does not define a type for MCP over
MOQT, so the entry is a Poppy extension, named under a domain the
Company controls as Poppy's extension rules require.</t>
      </section>
      <section anchor="access-tokens">
        <name>Access Tokens</name>
        <t>Poppy issues access tokens bound to a resource with the <tt>resource</tt>
parameter of <xref target="RFC8707"/>. For an MCP over MOQT server, the resource is
the <tt>url</tt> of its <tt>apis</tt> entry. The Personal Agent presents the token
as <xref target="authorization"/> describes: in each request's <tt>_meta</tt> for the
server, and, where a relay enforces access, as a Common Access Token
with the DPoP binding of <xref target="MoQ-C4M"/> that authorizes the Personal
Agent's client scope.</t>
      </section>
      <section anchor="session-proofs">
        <name>Session Proofs</name>
        <t>Poppy sends a fresh <tt>Poppy-Session</tt> JWT with each request. It
identifies the session, the pairwise User ID, and the Personal Agent's
delegated key, and Poppy binds it to an HTTP request with the <tt>htm</tt>
and <tt>htu</tt> claims. Over MOQT, the Personal Agent puts the JWT in the
<tt>_meta</tt> of each JSON-RPC request it publishes, and replaces <tt>htm</tt> and
<tt>htu</tt> with an <tt>actx</tt> claim as defined by <xref target="MoQ-C4M"/>: <tt>type</tt> <tt>"moqt"</tt>,
<tt>action</tt> <tt>"PUBLISH"</tt>, and <tt>tns</tt> and <tt>tn</tt> naming the request track that
carries the object. The server verifies the JWT as Poppy specifies,
checking <tt>actx</tt> instead of <tt>htm</tt> and <tt>htu</tt>. As in Poppy, a server <bcp14>MAY</bcp14>
ignore the proof.</t>
        <t>Note: Poppy does not yet support this use of the <tt>Poppy-Session</tt> JWT.</t>
      </section>
      <section anchor="privacy">
        <name>Privacy</name>
        <t>Poppy identifies a person to each Company only by a User ID that is
different at every Company. MCP over MOQT client IDs are pairwise in
the same way (<xref target="client-id"/>), so they do not let two Companies link a
Personal Agent. Because <tt>_meta</tt> carries the <tt>Poppy-Session</tt> JWT and
the access token, the Personal Agent's request tracks <bcp14>SHOULD</bcp14> be
protected end to end with Secure Objects
<xref target="I-D.ietf-moq-secure-objects"/> when they cross a relay.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TODO</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions. Future versions may request
registration of the <tt>mcp</tt> namespace prefix in an MOQT namespace
registry if one is established, and registration of the <tt>mcp</tt> binding
in a PACE protocol binding registry if <xref target="PACE"/> establishes one.</t>
    </section>
    <section anchor="examples">
      <name>Examples</name>
      <t>The examples use server ID <tt>srv-a</tt> and write the client's client ID as
<tt>&lt;cid&gt;</tt>. Except in <xref target="ex-tool"/>, they omit the per-request <tt>_meta</tt>
fields of <xref target="MCP"/>.</t>
      <section anchor="starting-to-use-a-server">
        <name>Starting to Use a Server</name>
        <ol spacing="normal" type="1"><li>
            <t>The client opens a QUIC connection to the relay, and each endpoint
sends SETUP on its control stream.</t>
          </li>
          <li>
            <t>The client derives its client ID <tt>&lt;cid&gt;</tt> for <tt>srv-a</tt>
(<xref target="client-id"/>).</t>
          </li>
          <li>
            <t>The client sends SUBSCRIBE_TRACKS for
<tt>(mcp, srv-a, clients, &lt;cid&gt;)</tt>.</t>
          </li>
          <li>
            <t>The client sends SUBSCRIBE for <tt>(mcp, srv-a) -- (catalog)</tt> with
FILL_PARAMETERS. It receives the current catalog, from the relay's
cache if another client has already read it, and then each
update.</t>
          </li>
          <li>
            <t>The client sends PUBLISH for
<tt>(mcp, srv-a, clients, &lt;cid&gt;, tools, read_file) -- (request)</tt> and
publishes its first <tt>tools/call</tt>.</t>
          </li>
        </ol>
      </section>
      <section anchor="ex-tool">
        <name>Tool Execution</name>
        <t>The client publishes the call as Object 0 of Group 7 on
<tt>(mcp, srv-a, clients, &lt;cid&gt;, tools, read_file) -- (request)</tt>:</t>
        <sourcecode type="json"><![CDATA[
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "read_file",
    "arguments": { "path": "/project/README.md" },
    "_meta": {
      "io.modelcontextprotocol/protocolVersion": "2026-07-28",
      "io.modelcontextprotocol/clientCapabilities": {}
    }
  }
}
]]></sourcecode>
        <t>The server publishes the result as Object 0 of Group 7 on
<tt>(mcp, srv-a, clients, &lt;cid&gt;, tools, read_file) -- (response)</tt>:</t>
        <sourcecode type="json"><![CDATA[
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "resultType": "complete",
    "content": [
      { "type": "text", "text": "# Project README\n..." }
    ]
  }
}
]]></sourcecode>
      </section>
      <section anchor="multi-round-trip-request">
        <name>Multi Round-Trip Request</name>
        <t>The server needs the user's confirmation before it deletes a file. All
four messages are on the <tt>delete_file</tt> tool tracks,
<tt>(mcp, srv-a, clients, &lt;cid&gt;, tools, delete_file)</tt>.</t>
        <t>The client publishes the call as Object 0 of Group 3 on the request
track:</t>
        <sourcecode type="json"><![CDATA[
{
  "jsonrpc": "2.0",
  "id": 4,
  "method": "tools/call",
  "params": {
    "name": "delete_file",
    "arguments": { "path": "/project/old.log" }
  }
}
]]></sourcecode>
        <t>The server answers in Group 3 of the response track with an
input-required result:</t>
        <sourcecode type="json"><![CDATA[
{
  "jsonrpc": "2.0",
  "id": 4,
  "result": {
    "resultType": "input_required",
    "inputRequests": {
      "confirm": {
        "method": "elicitation/create",
        "params": {
          "mode": "form",
          "message": "Delete old.log?",
          "requestedSchema": {
            "type": "object",
            "properties": { "ok": { "type": "boolean" } }
          }
        }
      }
    },
    "requestState": "opaque-state"
  }
}
]]></sourcecode>
        <t>The client asks the user, then retries as a new request, with a new
<tt>id</tt>, in Group 4 of the request track:</t>
        <sourcecode type="json"><![CDATA[
{
  "jsonrpc": "2.0",
  "id": 5,
  "method": "tools/call",
  "params": {
    "name": "delete_file",
    "arguments": { "path": "/project/old.log" },
    "inputResponses": {
      "confirm": { "action": "accept", "content": { "ok": true } }
    },
    "requestState": "opaque-state"
  }
}
]]></sourcecode>
        <t>The server completes the call in Group 4 of the response track:</t>
        <sourcecode type="json"><![CDATA[
{
  "jsonrpc": "2.0",
  "id": 5,
  "result": {
    "resultType": "complete",
    "content": [ { "type": "text", "text": "Deleted" } ]
  }
}
]]></sourcecode>
      </section>
      <section anchor="skill-invocation">
        <name>Skill Invocation</name>
        <ol spacing="normal" type="1"><li>
            <t>The user types "/commit", and the client matches it against its
cached skill registry.</t>
          </li>
          <li>
            <t>The client FETCHes <tt>(mcp, srv-a, skills, commit) -- (metadata)</tt>
and learns the version, the required tools, and the instructions
hash.</t>
          </li>
          <li>
            <t>The client FETCHes <tt>(mcp, srv-a, skills, commit) -- (instructions)</tt>
and checks it against the hash.</t>
          </li>
          <li>
            <t>The model follows the instructions. For each tool call, such as
<tt>git_status</tt>, <tt>git_diff</tt>, and <tt>git_commit</tt>, the client publishes on
<tt>(mcp, srv-a, clients, &lt;cid&gt;, tools, &lt;tool-name&gt;) -- (request)</tt> and
reads the result from the matching response track.</t>
          </li>
          <li>
            <t>The client returns the result to the user.</t>
          </li>
        </ol>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="MOQT" target="https://datatracker.ietf.org/doc/draft-ietf-moq-transport/">
          <front>
            <title>Media over QUIC Transport</title>
            <author initials="S." surname="Nandakumar" fullname="S. Nandakumar">
              <organization>Cisco</organization>
            </author>
            <author initials="V." surname="Vasiliev" fullname="V. Vasiliev">
              <organization>Google</organization>
            </author>
            <author initials="I." surname="Swett" fullname="I. Swett">
              <organization>Google</organization>
            </author>
            <author initials="A." surname="Frindell" fullname="A. Frindell">
              <organization>Meta</organization>
            </author>
            <date year="2026" month="October"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-moq-transport-22"/>
        </reference>
        <reference anchor="MCP" target="https://modelcontextprotocol.io/specification/2026-07-28">
          <front>
            <title>Model Context Protocol Specification</title>
            <author>
              <organization>Linux Foundation</organization>
            </author>
            <date year="2026" month="July" day="28"/>
          </front>
          <seriesInfo name="Version" value="2026-07-28"/>
        </reference>
        <reference anchor="MCP-TASKS" target="https://github.com/modelcontextprotocol/ext-tasks">
          <front>
            <title>MCP Tasks Extension</title>
            <author>
              <organization>Linux Foundation</organization>
            </author>
            <date year="2026"/>
          </front>
        </reference>
        <reference anchor="QUIC">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol. QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances. Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="I-D.ietf-moq-secure-objects">
          <front>
            <title>End-to-End Secure Objects for Media over QUIC Transport</title>
            <author fullname="Cullen Fluffy Jennings" initials="C. F." surname="Jennings">
              <organization>Cisco</organization>
            </author>
            <author fullname="Suhas Nandakumar" initials="S." surname="Nandakumar">
              <organization>Cisco</organization>
            </author>
            <author fullname="Richard Barnes" initials="R." surname="Barnes">
              <organization>Cisco</organization>
            </author>
            <date day="6" month="July" year="2026"/>
            <abstract>
              <t>   This document specifies an end-to-end authenticated encryption scheme
   for application objects transmitted via Media over QUIC (MoQ)
   Transport.  The scheme enables original publishers that share a
   symmetric key with end subscribers, to ensuring that MoQ relays are
   unable to decrypt object contents.  Additionally, subscribers can
   verify the integrity and authenticity of received objects, confirming
   that the content has not been modified in transit.  Additionally it
   allows MoQ parameters to be protected so the publisher can select if
   they are readable and/or modifiable by relays.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-moq-secure-objects-01"/>
        </reference>
        <reference anchor="RFC8707">
          <front>
            <title>Resource Indicators for OAuth 2.0</title>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="February" year="2020"/>
            <abstract>
              <t>This document specifies an extension to the OAuth 2.0 Authorization Framework defining request parameters that enable a client to explicitly signal to an authorization server about the identity of the protected resource(s) to which it is requesting access.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8707"/>
          <seriesInfo name="DOI" value="10.17487/RFC8707"/>
        </reference>
        <reference anchor="RFC9728">
          <front>
            <title>OAuth 2.0 Protected Resource Metadata</title>
            <author fullname="M.B. Jones" initials="M.B." surname="Jones"/>
            <author fullname="P. Hunt" initials="P." surname="Hunt"/>
            <author fullname="A. Parecki" initials="A." surname="Parecki"/>
            <date month="April" year="2025"/>
            <abstract>
              <t>This specification defines a metadata format that an OAuth 2.0 client or authorization server can use to obtain the information needed to interact with an OAuth 2.0 protected resource.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9728"/>
          <seriesInfo name="DOI" value="10.17487/RFC9728"/>
        </reference>
        <reference anchor="RFC9449">
          <front>
            <title>OAuth 2.0 Demonstrating Proof of Possession (DPoP)</title>
            <author fullname="D. Fett" initials="D." surname="Fett"/>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="D. Waite" initials="D." surname="Waite"/>
            <date month="September" year="2023"/>
            <abstract>
              <t>This document describes a mechanism for sender-constraining OAuth 2.0 tokens via a proof-of-possession mechanism on the application level. This mechanism allows for the detection of replay attacks with access and refresh tokens.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9449"/>
          <seriesInfo name="DOI" value="10.17487/RFC9449"/>
        </reference>
        <reference anchor="POPPY" target="https://personalagentprotocol.org/docs/0.3/spec">
          <front>
            <title>Personal Agent Protocol (Poppy) Specification</title>
            <author>
              <organization>Sierra</organization>
            </author>
            <author>
              <organization>Meta</organization>
            </author>
            <date year="2026"/>
          </front>
          <seriesInfo name="Version" value="Draft 0.3"/>
        </reference>
        <reference anchor="WebTransport">
          <front>
            <title>The WebTransport Protocol Framework</title>
            <author fullname="Eric Kinnear" initials="E." surname="Kinnear">
              <organization>Apple Inc.</organization>
            </author>
            <author fullname="Victor Vasiliev" initials="V." surname="Vasiliev">
              <organization>Google</organization>
            </author>
            <date day="6" month="July" year="2026"/>
            <abstract>
              <t>   The WebTransport Protocol Framework enables clients constrained by
   the Web security model to communicate with a remote server using a
   secure multiplexed transport.  It consists of a set of individual
   protocols that are safe to expose to untrusted applications, combined
   with an abstract model that allows them to be used interchangeably.

   This document defines the overall requirements on the protocols used
   in WebTransport, as well as the common features of the protocols,
   support for some of which is optional.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-webtrans-overview-13"/>
        </reference>
        <reference anchor="PACE" target="https://datatracker.ietf.org/doc/draft-nandakumar-agentproto-pace/">
          <front>
            <title>PACE: Protocol for Agent Communication Exchange</title>
            <author initials="S." surname="Nandakumar" fullname="S. Nandakumar">
              <organization>Cisco</organization>
            </author>
            <author initials="C." surname="Jennings" fullname="C. Jennings">
              <organization>Cisco</organization>
            </author>
            <date year="2026"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-nandakumar-agentproto-pace"/>
        </reference>
        <reference anchor="MoQ-C4M" target="https://datatracker.ietf.org/doc/draft-ietf-moq-c4m/">
          <front>
            <title>Authorization scheme for MOQT using Common Access Tokens</title>
            <author initials="W." surname="Law" fullname="W. Law">
              <organization/>
            </author>
            <author initials="C." surname="Lemmons" fullname="C. Lemmons">
              <organization/>
            </author>
            <author initials="G." surname="Simon" fullname="G. Simon">
              <organization/>
            </author>
            <author initials="S." surname="Nandakumar" fullname="S. Nandakumar">
              <organization/>
            </author>
            <date year="2026"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-moq-c4m"/>
        </reference>
      </references>
    </references>
    <?line 1637?>

<section anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>This document is a revision of draft-jennings-mcp-over-moqt
available at <eref target="https://datatracker.ietf.org/doc/draft-jennings-mcp-over-moqt/">https://datatracker.ietf.org/doc/draft-jennings-mcp-over-moqt/</eref>.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
WNUGAQA=

-->

</rfc>
