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


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

]>


<rfc ipr="trust200902" docName="draft-narvaneni-agent-uri-00" category="exp" submissionType="independent" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="agent-uri">The agent:// Protocol -- A URI-Based Framework for Interoperable Agents</title>

    <author initials="Y." surname="Narvaneni" fullname="Yaswanth Narvaneni">
      <organization>Independent Researcher</organization>
      <address>
        <postal>
          <city>London</city>
        </postal>
        <email>yaswanth@gmail.com</email>
      </address>
    </author>

    <date year="2025" month="April" day="21"/>

    <area>Applications</area>
    <workgroup>Independent Submission</workgroup>
    <keyword>Internet-Draft</keyword>

    <abstract>


<?line 171?>

<t>This document defines the <spanx style="verb">agent://</spanx> protocol, a URI template-based framework as described in RFC 6570 for addressing, invoking, and interoperating with autonomous and semi-autonomous software agents. It introduces a layered architecture that supports minimal implementations (addressing and transport) and extensible features (capability discovery, contracts, orchestration). The protocol aims to foster interoperability among agents across ecosystems, platforms, and modalities, enabling composable and collaborative intelligent systems.</t>



    </abstract>



  </front>

  <middle>


<?line 175?>

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

<t>The rise of intelligent software agents necessitates a standardized way to identify, invoke, and coordinate them across diverse platforms. While protocols like <xref target="RFC9110">HTTP</xref> provide a transport mechanism for static APIs, agents differ significantly in behavior, output variability, and interaction patterns. The <spanx style="verb">agent://</spanx> proposes a URI scheme and resolution model designed to complement existing agent communication protocols and libraries like <xref target="Agent2Agent"></xref>, <xref target="FIPA-ACL"></xref>, <xref target="FIPA-CNP">Contract Net Protocol</xref>, <xref target="LangChain"></xref>, <xref target="MCP">Model Context Protocol</xref>, <xref target="AutoGen"></xref>, <xref target="SemanticKernel"></xref> etc. It serves as an addressing and discovery layer that works alongside these communication protocol.</t>

<t>The <spanx style="verb">agent://</spanx> protocol supports diverse agent deployment models through a unified addressing scheme:</t>

<t><list style="symbols">
  <t>Cloud-based agents accessible via standard web protocols</t>
  <t>Local agents running on the user's device through the <spanx style="verb">agent+local://</spanx> scheme</t>
  <t>On-premises agents within organizational boundaries</t>
  <t>Decentralized agents operating across distributed networks</t>
</list></t>

<t>This flexibility addresses a critical gap in current agent ecosystems, enabling applications (including browsers) to discover and invoke agents consistently regardless of where they're hosted. By providing standardized URI<xref target="RFC6570"></xref> patterns for both remote and local agents, the protocol simplifies previously complex integration scenarios like browser-to-local-agent delegation for privileged operations.</t>

<figure title="Agent Protocol Stack Architecture" anchor="fig-protocol-stack"><artwork><![CDATA[
+------------------+
| Agent Applications|
+------------------+
       <-> 
+------------------+
|   agent:// URI   | <- Addressing, Resolution, Discovery
+------------------+
       <-> 
+------------------+  +------------------+
|  Agent2Agent     |  |    CNP,. etc     | <- Communication Protocols
+------------------+  +------------------+
        <->                   <-> 
+------------------+  +------------------+
| Transport Layer  |  | Transport Layer  | <- HTTP, WebSockets, etc.
+------------------+  +------------------+
]]></artwork></figure>

<t>The <spanx style="verb">agent://</spanx> protocol supports:</t>

<t><list style="symbols">
  <t>Unique and resolvable addressing of agents</t>
  <t>Optional self-describing capabilities</t>
  <t>Consistent invocation semantics over existing transports</t>
  <t>Progressive support for advanced patterns like delegation, collaboration, and orchestration</t>
</list></t>

<t>This document outlines the specification for the <spanx style="verb">agent://</spanx> protocol, beginning with its URI scheme and extending through capability description, transport bindings, and extensibility patterns.</t>

<t>A reference implementation of the <spanx style="verb">agent://</spanx> protocol is available to demonstrate resolution, transport bindings, capability discovery, and orchestration patterns. Implementers and adopters can find this example implementation at: <xref target="AGENT-URI-REPO"></xref></t>

</section>
<section anchor="terminology"><name>Terminology</name>

<t><list style="symbols">
  <t><strong>Agent</strong>: An autonomous or semi-autonomous software entity that can receive instructions and perform actions.</t>
  <t><strong>Agent Descriptor (agent.json)</strong>: A machine-readable document that describes an agent's identity, capabilities, and behavior.</t>
  <t><strong>Capability</strong>: A self-contained function or behavior an agent offers.</t>
  <t><strong>Resolver</strong>: A service or mechanism that maps a URI to a network endpoint or metadata.</t>
  <t><strong>Invocation</strong>: The act of calling a capability on an agent with input parameters.</t>
</list></t>

<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in 
RFC 2119, BCP 14 <xref target="RFC2119"/>, <xref target="RFC8174"/> when, and only when, they appear in all capitals, as shown here.</t>

</section>
<section anchor="protocol-scope"><name>Protocol Scope and Layering</name>

<t>The <spanx style="verb">agent://</spanx> protocol is designed as a layered framework:</t>

<texttable title="Protocol Layering Structure" anchor="tab-protocol-layers">
      <ttcol align='left'>Layer</ttcol>
      <ttcol align='left'>Purpose</ttcol>
      <ttcol align='left'>Mandatory</ttcol>
      <c>URI Scheme</c>
      <c>Unique addressing</c>
      <c>Yes</c>
      <c>Transport Binding</c>
      <c>Mechanism for invocation (e.g., HTTP, WSS, Matrix, IPC)</c>
      <c>Yes</c>
      <c>Agent Descriptor</c>
      <c>Self-describing agent interface</c>
      <c>Optional</c>
      <c>Resolution Framework</c>
      <c>Maps agent URIs to endpoints</c>
      <c>Optional</c>
      <c>Application Semantics</c>
      <c>Shared vocab for capability naming</c>
      <c>Optional</c>
</texttable>

<t>This layering allows implementations to adopt minimal or full-featured configurations, depending on their needs.</t>

</section>
<section anchor="uri-scheme-specification"><name>URI Scheme Specification</name>

<t>The format of <spanx style="verb">agent://</spanx> URIs is:</t>

<figure title="Agent URI Format" anchor="fig-uri-format"><artwork><![CDATA[
agent://[authority]/[path]?[query]#[fragment] 
agent+<protocol>://[authority]/[path]
]]></artwork></figure>

<t>Examples:</t>

<t><list style="symbols">
  <t><spanx style="verb">agent://example.com/planning/gen-iti?city=Paris</spanx></t>
  <t><spanx style="verb">agent://planner.example.com/claude?text=Hello</spanx></t>
  <t><spanx style="verb">agent+https://example.com/assistants/chatgpt?query=hello</spanx></t>
  <t><spanx style="verb">agent+local://examplelocalagent</spanx></t>
  <t><spanx style="verb">agent://did:web:example.com:agent:researcher/get-article?doi=...</spanx></t>
</list></t>

<section anchor="uri-components"><name>Components</name>

<t><list style="symbols">
  <t><strong>Authority</strong>: Uniquely identifies the agent or agent namespace (e.g., DNS or DID).</t>
  <t><strong>Path</strong>: Specifies the agent being invoked. The <spanx style="verb">[path]</spanx> is opaque to <spanx style="verb">agent://</spanx> and can represent either a namespace or direct capability.</t>
  <t><strong>Query</strong>: Contains serialized parameters. Query parameters SHOULD be URL-encoded as key=value pairs. If more complex structures are needed, clients SHOULD use HTTP <spanx style="verb">POST</spanx> requests with <spanx style="verb">application/json</spanx> bodies rather than base64-encoding payloads into query parameters.</t>
  <t><strong>Fragment</strong>: Optional reference for context or sub-capability.</t>
  <t>The optional <spanx style="verb">+&lt;protocol&gt;</spanx> indicates explicit transport binding.</t>
  <t>If not specified, clients use resolution or fall back to HTTPS-based invocation.</t>
</list></t>

</section>
<section anchor="uri-abnf"><name>ABNF for <spanx style="verb">agent://</spanx> URI</name>

<figure title="ABNF Grammar for agent:// URI Scheme" anchor="fig-abnf-grammar"><sourcecode type="abnf"><![CDATA[
agent-uri      = "agent" ["+" protocol] "://" authority ["/" path]
                 [ "?" query ] [ "#" fragment ]

protocol       = 1*( ALPHA / DIGIT / "-" )
authority      = [ userinfo "@" ] host [ ":" port ]
                 ; <authority, defined in RFC3986, Section 3.2>
path           = path-abempty    
                 ; begins with "/" or is empty.
                 ; Defined in RFC3986, Section 3.3
query          = *( pchar / "/" / "?" )
                 ; <query, defined in RFC3986, Section 3.4>
fragment       = *( pchar / "/" / "?" )
                 ; <fragment, defined in RFC3986, Section 3.5>

pchar          = unreserved / pct-encoded / sub-delims / ":" / "@"
unreserved     = ALPHA / DIGIT / "-" / "." / "_" / "~"
pct-encoded    = "%" HEXDIG HEXDIG
sub-delims     = "!" / "$" / "&" / "'" / "(" / ")" /
                 "*" / "+" / "," / ";" / "="

; Character sets like pchar, unreserved, etc. are defined in RFC3986

]]></sourcecode></figure>

</section>
</section>
<section anchor="resolution-framework"><name>Resolution Framework</name>

<t>Every agent MAY expose a self-describing document at:</t>

<figure><sourcecode type="txt"><![CDATA[
<scheme>://<domain>/<path-to-agent>/agent.json

]]></sourcecode></figure>

<t>If a single agent is deployed at the top level then it should be under <spanx style="verb">/.well-known</spanx> to be compatible with Agent2Agent protocol.</t>

<t><list style="symbols">
  <t><spanx style="verb">/.well-known/agent.json</spanx> -- For single-agent deployments (compatible with Agent2Agent)</t>
  <t><spanx style="verb">/.well-known/agents.json</spanx> -- For multi-agent domains (maps agent names -&gt; descriptors)</t>
</list></t>

<t>This descriptor is OPTIONAL but RECOMMENDED. It enables capability discovery, transport resolution, and compatibility with ecosystem tools.</t>

<t>When present, the descriptor MAY use the <xref target="AgentCard"></xref> (as defined by Agent2Agent protocol by Google as of April 2025) schema as one possible format, or any equivalent <xref target="JSON-LD11"></xref> based structure that expresses the agent's identity, capabilities, and behavioral metadata.</t>

<t>If the agent is deployed at a subdomain (e.g., <spanx style="verb">planner.example.org</spanx>), the agent descriptor SHOULD be published at <spanx style="verb">/.well-known/agent.json</spanx> on that domain.</t>

<section anchor="ecosystem-registries"><name>Ecosystem Registries</name>

<t>Domains MAY publish:</t>

<figure><sourcecode type="txt"><![CDATA[
https://<domain>/.well-known/agents.json

]]></sourcecode></figure>

<t>This file should map agent names to their <spanx style="verb">agent.json</spanx> URLs for simplified enumeration. It is OPTIONAL but RECOMMENDED for better ecosystem interoperability.</t>

<t>Implementations MAY support resolution of agent URIs via:</t>

<t><list style="symbols">
  <t>Static resolution maps</t>
  <t>DID resolution</t>
  <t>WebFinger or custom resolvers</t>
</list></t>

<t>Resolvers SHOULD support caching and capability introspection where applicable.</t>

<figure title="Agent URI Resolution Process" anchor="fig-resolution-flow"><artwork><![CDATA[
+---------+          +-------------+         +-------------+
|  Client | --URI--> |  Resolver   | -->URL->| Agent Server|
+---------+          +-------------+         +-------------+
                              |
                      (agent.json or agents.json)

]]></artwork></figure>

<t><strong>Example</strong>:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "agents": {
    "planner": "https://planner.example.com/.well-known/agent.json",
    "translator": "https://example.com/translator/agent.json"
  }
}

]]></sourcecode></figure>

<t>Agents SHOULD use standard HTTP caching mechanisms (<spanx style="verb">Cache-Control</spanx>, <spanx style="verb">ETag</spanx>, <spanx style="verb">Last-Modified</spanx>) to enable efficient resolution and minimize unnecessary descriptor fetches. Clients SHOULD respect these headers and cache descriptors appropriately</t>

</section>
<section anchor="trust-anchors"><name>Trust Anchors</name>

<t>Domains MAY use trust anchors (e.g., DNSSEC, HTTPS certificates, or DID-based verification) to enhance identity assurance.</t>

<t>A practical example of URI resolution, agent descriptor fetching, and caching strategies is included in the reference implementation available at: <xref target="AGENT-URI-REPO"></xref></t>

</section>
</section>
<section anchor="transport-binding"><name>Transport Bindings</name>

<section anchor="explicit-transport-bindings"><name>Explicit Transport Binding</name>

<t>Use the <spanx style="verb">agent+&lt;protocol&gt;://</spanx> scheme for clarity:</t>

<texttable title="Transport Binding Formats" anchor="tab-transport-bindings">
      <ttcol align='left'>Transport</ttcol>
      <ttcol align='left'>Format</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c>HTTPS</c>
      <c><spanx style="verb">agent+https://</spanx></c>
      <c>Secure HTTP-based invocation</c>
      <c>WebSocket Secure</c>
      <c><spanx style="verb">agent+wss://</spanx></c>
      <c>Real-time streaming</c>
      <c>Local</c>
      <c><spanx style="verb">agent+local://</spanx></c>
      <c>Runtime-registered local agents</c>
      <c>Unix Socket</c>
      <c><spanx style="verb">agent+unix://</spanx></c>
      <c>IPC for co-located agents</c>
      <c>Matrix</c>
      <c><spanx style="verb">agent+matrix://</spanx></c>
      <c>Decentralized real-time transport</c>
</texttable>

<t>The <spanx style="verb">agent+&lt;transport&gt;://</spanx> scheme allows explicit declaration of such bindings, enabling clarity, extensibility, and optimized routing. When no explicit transport is declared, clients MAY rely on resolution metadata (e.g., <spanx style="verb">agent.json</spanx>) or default to HTTPS-based invocation.</t>

<t>This flexibility ensures the protocol can adapt to different performance, privacy, or coordination requirements while remaining consistent at the addressing and invocation layer.</t>

<t>Local agents should be accessed using:</t>

<figure><sourcecode type="txt"><![CDATA[
agent+local://<agent-name>

]]></sourcecode></figure>

<t>This allows agent runtimes to register their presence using a local resolver (e.g., via IPC, sockets, or service registry). The transport mechanism is implementation-specific.</t>

<t>The <spanx style="verb">agent+local://</spanx> scheme specifically addresses the current lack of standardized methods for browser-based applications to invoke locally installed agents. This enables web applications to delegate tasks to local agents that can perform privileged operations such as file system access, desktop automation, or hardware interaction - capabilities that are typically restricted in browser environments. Security considerations for such invocations are discussed in <xref target="security-and-privacy"></xref>.</t>

</section>
<section anchor="fallback-behavior"><name>Default Fallback Behavior</name>

<t>If the protocol is omitted (i.e., <spanx style="verb">agent://</spanx> is used), clients:</t>

<t><list style="numbers" type="1">
  <t>Check <spanx style="verb">.well-known/agents.json</spanx> (if available)</t>
  <t>Retrieve the agent descriptor at <spanx style="verb">agent.json</spanx> for the specified path</t>
  <t>Use the <spanx style="verb">transport</spanx> or <spanx style="verb">endpoint</spanx> hints from the descriptor</t>
</list></t>

<t>If nothing is found, clients MAY fall back to:</t>

<t><list style="symbols">
  <t><spanx style="verb">HTTPS</spanx> (default transport protocol)</t>
  <t>HTTP <spanx style="verb">POST</spanx> if payload present, otherwise <spanx style="verb">GET</spanx></t>
</list></t>

<ul empty="true"><li>
  <t>Note: This fallback behavior is provided for convenience and basic interoperability, but production systems SHOULD prefer explicit transport bindings or resolver-based discovery for robustness and clarity.</t>
</li></ul>

<t>Clients SHOULD prefer explicit transport bindings (agent+https://) where available, and fall back to resolution-based discovery (agent://) when agent transport metadata is reliably available. Explicit binding reduces resolution ambiguity and improves latency.</t>

</section>
<section anchor="usecases-and-recommendations"><name>Use Cases and Recommended Bindings</name>

<t>The following table outlines some use cases and recommended bindings</t>

<texttable title="Recommended Bindings for Common Use Cases" anchor="tab-use-cases">
      <ttcol align='left'>Use Case</ttcol>
      <ttcol align='left'>Recommended Binding</ttcol>
      <c>Agent with known HTTPS endpoint</c>
      <c><spanx style="verb">agent+https://</spanx></c>
      <c>Local runtime agent</c>
      <c><spanx style="verb">agent+local://</spanx></c>
      <c>Dynamic/multi-transport agents</c>
      <c><spanx style="verb">agent://</spanx> with agent.json</c>
      <c>Inter-agent calls within a known context</c>
      <c><spanx style="verb">agent://</spanx> or agent+matrix://</c>
</texttable>

</section>
</section>
<section anchor="capability-framework"><name>Capability Framework</name>

<t>Agents SHOULD expose a descriptor document at:</t>

<figure><sourcecode type="txt"><![CDATA[
<agent-base-path>/agent.json

]]></sourcecode></figure>

<t>This descriptor MAY follow:</t>

<t><list style="symbols">
  <t>The AgentCard structure (as defined by Google's Agent2Agent protocol as of April 2025), or another equivalent format</t>
  <t>Any format other than AgentCard SHOULD be expressed in <xref target="JSON-LD11"></xref> to enable semantic discovery</t>
</list></t>

<t>Agent descriptors SHOULD include:</t>

<t><list style="symbols">
  <t>Agent name and version
  <list style="symbols">
      <t>MAY include <spanx style="verb">supportedVersions</spanx> indicating the list of older versions and their end-points.</t>
      <t>Versioning should follow <xref target="SemVer"></xref> or later</t>
      <t>Clients SHOULD verify compatibility based on documented major, minor, and patch versions</t>
    </list></t>
  <t>Human-readable description</t>
  <t>Input/output schemas (e.g., JSON Schema)</t>
  <t>Capability list with IDs, descriptions, tags, version</t>
  <t>Optional behavioral metadata (e.g., <spanx style="verb">isDeterministic</spanx>, <spanx style="verb">expectedOutputVariability</spanx>, <spanx style="verb">requiresContext: boolean</spanx>, <spanx style="verb">memoryEnabled: boolean</spanx>, <spanx style="verb">responseLatency: "low" | "medium" | "high"</spanx>, <spanx style="verb">confidenceEstimation: boolean</spanx>)
  <list style="symbols">
      <t><spanx style="verb">isDeterministic</spanx> (boolean): Indicates whether repeated calls with identical inputs yield identical outputs.</t>
      <t><spanx style="verb">expectedOutputVariability</spanx>: indicates typical variability in outputs, similar to temperature setting</t>
      <t><spanx style="verb">responseLatency</spanx>: Expected response time.</t>
      <t><spanx style="verb">requiresContext</spanx> (boolean): Indicates whether the input needs context or the agent can work on its own</t>
      <t><spanx style="verb">memoryEnabled</spanx> (boolean): Indicates whether the agent will remember the interactions</t>
    </list></t>
  <t>Optional transport or invocation hints</t>
  <t>Optional authentication or permission requirements</t>
  <t>Optional state management practices</t>
  <t>Optional <spanx style="verb">interactionModel</spanx> to indicate a way to interact (e.g. <spanx style="verb">agent2agent</spanx>, <spanx style="verb">fipa-acl</spanx>, <spanx style="verb">kqml</spanx>, <spanx style="verb">contract-net</spanx>, <spanx style="verb">emergent</spanx> etc). If mentioned, the message payload SHOULD follow the model's defined parameters if any.</t>
</list></t>

<t>Agents MAY expose <spanx style="verb">inputFormats</spanx> and <spanx style="verb">outputFormats</spanx> per capability using standard MIME types (e.g., <spanx style="verb">application/json</spanx>, <spanx style="verb">application/ld+json</spanx>, <spanx style="verb">application/fipa-acl</spanx>).</t>

<t>Agent descriptors SHOULD include input/output schemas (e.g., JSON Schema) and MAY document content negotiation support via the <spanx style="verb">contentTypes</spanx> field per capability. This allows clients to understand and negotiate payload encoding, enabling interoperability across ecosystems that use JSON, <xref target="JSON-LD11"></xref>, RDF/XML, <xref target="FIPA-ACL"></xref>, or other formats.</t>

<t>Clients MAY use standard negotiation mechanisms such as <spanx style="verb">Content-Type</spanx> and Accept headers (in HTTP), or envelope metadata (in protocols like <xref target="JSON-RPC"></xref>, <xref target="Matrix"></xref>, etc.).</t>

<t>Implementations MAY advertise protocol compatility via metadata fields such as <spanx style="verb">interactionModel</spanx>, <spanx style="verb">orchestration</spanx>, or supported <spanx style="verb">envelopeSchemas</spanx> etc. These metadata fields enable clients and agent runtimes to interoperate across heterogeneous ecosystems and communication models.</t>

<t>This extensibility ensures <spanx style="verb">agent://</spanx> can serve as a unifying addressing and invocation layer, bridging agents that follow established standards, platform-specific conventions, or learned behaviors in dynamic environments.</t>

<t>If an <spanx style="verb">agent.json</spanx> is provided, it SHOULD contain at least: <spanx style="verb">name</spanx>, <spanx style="verb">version</spanx>, and one or more capabilities.</t>

<t>Clients SHOULD explicitly specify the agent version either as a URI path segment, query parameter (<spanx style="verb">?version=3.1.4</spanx>), or HTTP header (<spanx style="verb">X-Agent-Version</spanx>). If omitted, servers SHOULD assume the latest version. Agents MUST document their preferred method for version negotiation clearly in their descriptor.</t>

<t>While <spanx style="verb">.well-known/agents.json</spanx> MAY be used to enumerate all available agents under a domain, the individual <spanx style="verb">agent.json</spanx> files serve as the canonical source of truth.</t>

<t>Expressing descriptors in <xref target="JSON-LD11"></xref> enables semantic interoperability and supports alignment with common web-based data models.</t>

<t>Implementers MAY choose to embed, proxy, or map to other protocols within the <spanx style="verb">agent.json</spanx> descriptor or transport bindings, allowing for seamless orchestration and hybrid deployments.</t>

</section>
<section anchor="interaction-patterns-interaction-patterns"><name>Interaction Patterns        {# interaction-patterns}</name>

<t>Supported interaction types include:</t>

<t><list style="symbols">
  <t>Request/Response (synchronous)</t>
  <t>Deferred response (polling or webhook) SHOULD include a <spanx style="verb">taskId</spanx> and polling interval hint.</t>
  <t>Streaming responses (e.g., Server-Sent Events, WebSocket). Streaming responses over <spanx style="verb">agent+wss://</spanx> SHOULD use newline-delimited JSON (NDJSON)</t>
  <t>Delegated invocation (calling other agents on behalf of user)</t>
  <t>Asynchronous event notifications via HTTP webhooks or WebSockets. Event notifications if available SHOULD include event types, payloads, and identifiers.</t>
</list></t>

<t>All interaction patterns (e.g., streaming, event-driven, polling) are transport-agnostic but MAY impose format constraints (e.g., NDJSON over WebSockets).</t>

<t>Agents SHOULD include status and confidence metadata in responses where applicable.</t>

<section anchor="stateful-interactions-stateful-interactions"><name>Stateful Interactions        {# stateful-interactions}</name>

<t>The <spanx style="verb">agent://</spanx> protocol leverages HTTP's established mechanisms for state management. Clients and agents SHOULD use standard HTTP headers or query parameters to pass identifiers such as <spanx style="verb">sessionId</spanx> or <spanx style="verb">taskId</spanx>. Agents MAY maintain state across interactions using these identifiers. Clients and agents SHOULD agree on session semantics via capability descriptors or invocation headers.</t>

<t>Non-HTTP transports SHOULD include session or task identifiers within message envelopes (e.g., JSON-RPC headers, WebSocket message metadata, Matrix events). These fields SHOULD follow naming conventions similar to <spanx style="verb">sessionId</spanx>, <spanx style="verb">taskId</spanx>, etc.</t>

<t>When the transport lacks a native header mechanism, agents SHOULD extract session information from the body or envelope metadata.</t>

<t>When content negotiation fails or the requested format is not supported, agents SHOULD respond with a <spanx style="verb">406 Not Acceptable</spanx> HTTP error or equivalent, and MAY include supported formats in the response metadata.</t>

<section anchor="recommended-practices"><name>Recommended practices:</name>

<t><list style="symbols">
  <t>Use HTTP headers (e.g., <spanx style="verb">X-Session-ID</spanx>, <spanx style="verb">X-Task-ID</spanx>) or query parameters for session and task identifiers.</t>
  <t>Clearly document state identifiers and their expected lifecycle in the agent's descriptor (agent.json).</t>
</list></t>

<t><strong>Example</strong>:</t>

<figure><sourcecode type="http"><![CDATA[
GET /tasks/1234 HTTP/1.1
Host: planner.example.com
X-Session-ID: abcde-12345

]]></sourcecode></figure>

</section>
</section>
<section anchor="orchestration-patterns"><name>Orchestration Patterns</name>

<t>Agents MAY invoke other agents as part of delegated or composite tasks. Agents SHOULD explicitly provide orchestration workflows, delegation chains, or composite interactions either in their <spanx style="verb">agent.json</spanx> or in their response metadata.</t>

</section>
<section anchor="typical-interaction-flows"><name>Typical Interaction Flows</name>

<section anchor="client-agent-interaction"><name>Client-to-Agent Interaction</name>

<t>A typical user-driven invocation of an agent using the <spanx style="verb">agent://</spanx> protocol follows these steps:</t>

<figure title="Client-to-Agent Interaction Flow" anchor="fig-client-interaction"><sourcecode type="art"><![CDATA[
+--------+       +-----------+       +-------------+
|  User  |  -->  |  Client   |  -->  |  Agent Host |
+--------+       +-----------+       +-------------+
     |                |                    |
     | Initiates      |                    |
     | intent (e.g.,  |                    |
     | "Plan my trip")|                    |
     |                |                    |
     |                | Resolves agent URI |
     |                | --> agents.json / agent.json
     |                | Retrieves capabilities
     |                |                    |
     |                | Constructs request |
     |                | --> agent://plan.example.com/gen-iti?city=Rio
     |                |                    |
     |                |                    | Validate input 
     |                |                    | Process logic/call tools
     |                |                    | May call sub-agents
     |                |                    |
     |                | Receives response  |
     |                | <== itinerary JSON |
     | Presents result to user             |

]]></sourcecode></figure>

<t><strong>Notes</strong>:</t>

<t><list style="symbols">
  <t>The client MAY handle fallback logic if the agent cannot be resolved initially.</t>
  <t>Authentication MAY be required before invocation.</t>
  <t>The invocation can be a simple GET or POST depending on input size and structure.</t>
</list></t>

</section>
<section anchor="agent-to-agent-interaction"><name>Agent-to-Agent Interaction</name>

<t>Agents MAY interact with each other using <spanx style="verb">agent://</spanx> URIs to delegate tasks or compose workflows.</t>

<t><strong>Example: A planning agent invoking a translation agent</strong>:</t>

<figure title="Agent-to-Agent Interaction Flow" anchor="fig-agent-interaction"><sourcecode type="art"><![CDATA[
+----------+       +----------+       +------------+
|Planning  |------>|Resolver/ |------>|Translation |
|Agent     |       |URI       |       |Agent       |
+----------+       +----------+       +------------+
     |                  |                   |
     | Input:           |                   |
     | {"city":"Paris"} |                   |
     |                  |                   |
     | Needs translation|                   |
     |                  |                   |
     |                  | Resolves URI:     |
     |--agent://translator.example/translate?text=Bonjour-->|
     |                  |                   |
     |                  | --> Get           |
     |                  |     agent.json    |
     |                  | --> Determine     |
     |                  |     transport     |
     |                  |                   |
     |                  |                   | Process translation
     |                  |                   | Return translated JSON
     |<-----------------|<------------------|
     | Merge & return   |                   |
     | to user/client   |                   |
     | or continues     |                   |
]]></sourcecode></figure>

<t><strong>Chaining Behavior</strong>:</t>

<t><list style="symbols">
  <t>The invoking agent MAY include <spanx style="verb">X-Task-ID</spanx>, <spanx style="verb">X-Delegation-Chain</spanx>, or equivalent headers.</t>
  <t>The response MAY include intermediate metadata such as <spanx style="verb">confidence</spanx>, <spanx style="verb">sourceAgent</spanx>, <spanx style="verb">taskTrace</spanx>, or <spanx style="verb">timeTaken</spanx>.</t>
</list></t>

</section>
</section>
</section>
<section anchor="error-handling-error-handling"><name>Error Handling        {# error-handling}</name>

<t>The <spanx style="verb">agent://</spanx> protocol MAY leverage HTTP standard status codes for signaling errors. Implementations MAY return errors using standard HTTP status codes along with structured JSON error responses conforming to <xref target="RFC9457"></xref> ("Problem Details for HTTP APIs").</t>

<t>**Recommended HTTP status codes include (but are not limited to)</t>

<texttable title="Recommended HTTP status codes" anchor="tab-http-status-codes">
      <ttcol align='left'>Status Code</ttcol>
      <ttcol align='left'>Meaning</ttcol>
      <c>400</c>
      <c>Bad Request (e.g., invalid parameters)</c>
      <c>401</c>
      <c>Unauthorized</c>
      <c>403</c>
      <c>Forbidden</c>
      <c>404</c>
      <c>Capability or resource not found</c>
      <c>409</c>
      <c>Conflict (e.g., state mismatch)</c>
      <c>429</c>
      <c>Too Many Requests (rate limiting)</c>
      <c>500</c>
      <c>Internal Server Error</c>
      <c>503</c>
      <c>Service Unavailable</c>
</texttable>

<t>Example:</t>

<figure><sourcecode type="http"><![CDATA[
HTTP/1.1 404 Not Found
Content-Type: application/problem+json

{
  "type": "https://example.com/errors/capability-not-found",
  "title": "Capability Not Found",
  "status": 404,
  "detail": "The requested capability 'gen-iti' was not found.",
  "instance": "/planner/gen-iti"
}
{: #fig-error-response title="Example HTTP Error Response"}

]]></sourcecode></figure>

<t>This format is not prescriptive but aims to encourage consistency. Implementations MAY adapt the error schema based on their transport layer (e.g., JSON-RPC, HTTP status + body, WebSocket messages).</t>

<t>For non-HTTP transports (e.g., WebSockets, Matrix), agents SHOULD still return structured errors using similar JSON structures (<spanx style="verb">type</spanx>, <spanx style="verb">title</spanx>, <spanx style="verb">detail</spanx>, <spanx style="verb">status</spanx>), encapsulated within the transport's native message envelope (e.g., JSON-RPC <spanx style="verb">error</spanx> objects, Matrix event content fields). Implementers SHOULD document chosen structures clearly in their capability descriptors.</t>

<t>Where applicable, implementations SHOULD align with existing conventions such as:</t>

<t><list style="symbols">
  <t>JSON-RPC <spanx style="verb">error</spanx> objects (<spanx style="verb">code</spanx>, <spanx style="verb">message</spanx>, <spanx style="verb">data</spanx>)</t>
  <t><xref target="OpenAPI"></xref> or REST error payloads</t>
  <t><xref target="GraphQL"></xref> <spanx style="verb">errors</spanx> array format</t>
</list></t>

<t>Recommended error categories:</t>

<t><list style="symbols">
  <t><spanx style="verb">CapabilityNotFound</spanx></t>
  <t><spanx style="verb">InvalidInput</spanx></t>
  <t><spanx style="verb">AmbiguousResponse</spanx></t>
  <t><spanx style="verb">Timeout</spanx></t>
  <t><spanx style="verb">PermissionDenied</spanx></t>
</list></t>

<t>Clients SHOULD parse and utilize these structured responses to handle errors gracefully.</t>

</section>
<section anchor="security-and-privacy"><name>Security and Privacy Considerations</name>

<t>The <spanx style="verb">agent://</spanx> protocol explicitly relies on widely-adopted HTTP authentication and authorization standards. Agents SHOULD support standard authentication and authorization schemes such as OAuth2 (Bearer tokens), API keys, or signed payloads. When using HTTPS, mutual TLS MAY be employed. JSON Web Tokens (JWT) are RECOMMENDED for conveying signed claims between agents.</t>

<t>Security extensions MAY include:</t>

<t><list style="symbols">
  <t><xref target="RFC6750">OAuth2</xref> Bearer Tokens</t>
  <t>JSON Web Tokens (<xref target="RFC7519">JWT</xref>)</t>
  <t>Mutual TLS (<xref target="RFC8705">mTLS</xref>) authentication</t>
  <t>API Keys via HTTP headers (e.g., <spanx style="verb">X-API-Key</spanx>)</t>
  <t>Capability-based access control</t>
  <t>Delegation chains</t>
</list></t>

<t>For non-HTTP transports (e.g., WebSocket, Matrix), agents SHOULD leverage native authentication mechanisms, such as WebSocket protocol-level authentication tokens or Matrix homeserver authentication flows. Agents MUST clearly document supported security mechanisms per transport binding.</t>

<t>When using <xref target="DID-CORE">Decentralized Identifiers</xref> as authority, agent descriptors MAY be cryptographically signed. Clients SHOULD verify such signatures against the corresponding DID Document.</t>

<t>For agent-to-agent delegation, agents SHOULD include delegation metadata (e.g., <spanx style="verb">X-Delegation-Chain</spanx>) that identifies prior actors. These chains SHOULD be signed or verifiable via claims (e.g., using JWT, Verifiable Credentials, or DID-linked proofs).</t>

<t>Privacy recommendations:</t>

<t>Agents SHOULD adhere to privacy best practices, including:</t>

<t><list style="symbols">
  <t>Data minimization (collect only necessary data)</t>
  <t>Explicit consent and revocation mechanisms</t>
  <t>Clear logging/audit trails</t>
  <t>Ethical AI guidelines, including bias detection and fairness assessments as they evolve</t>
</list></t>

<section anchor="compliance-and-regulatory-considerations"><name>Compliance and Regulatory Considerations</name>

<t>Implementers SHOULD ensure compliance with relevant legal frameworks (e.g., GDPR, CCPA) of the jurisdictions where the agent is hosted. Agents processing sensitive data SHOULD provide audit trails and explicit consent mechanisms clearly documented in capability descriptors.</t>

</section>
</section>
<section anchor="extensibility"><name>Extensibility</name>

<t>The protocol supports extension via:</t>

<t><list style="symbols">
  <t>Namespaced capability vocabularies</t>
  <t>Alternate transport bindings</t>
  <t>Extended agent descriptors</t>
  <t>Optional orchestration layers (task graphs, workflows)</t>
</list></t>

<t>Extension proposals SHOULD be documented clearly, and ideally reviewed through established processes such as community forums, dedicated working groups, or public registries to ensure transparency and interoperability.</t>

</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<t>This document requests the registration of the <spanx style="verb">agent</spanx> URI scheme in the IANA "Uniform Resource Identifier (URI) Schemes" registry.</t>

<section anchor="uri-schem-registration-template"><name>URI Scheme Registration Template</name>

<t><list style="symbols">
  <t><strong>Scheme Name</strong>: <spanx style="verb">agent</spanx></t>
  <t><strong>Status</strong>: Provisional</t>
  <t><strong>Applications/Protocols That Use This Scheme</strong>:<br />
The <spanx style="verb">agent</spanx> URI scheme identifies and invokes autonomous or semi-autonomous software agents across systems. It provides transport-agnostic addressing layer supporting discovery, invocation and orchestration. The scheme is compatible with existing schemes such as <spanx style="verb">https</spanx>, <spanx style="verb">did</spanx> and <spanx style="verb">web+</spanx> schemes where appropriate.</t>
  <t><strong>Contact</strong>:<br />
Yaswanth Narvaneni<br />
<eref target="mailto:yaswanth@gmail.com">yaswanth@gmail.com</eref></t>
  <t><strong>Change Controller</strong>:<br />
The author or a relevant standards body such as the IETF if adopted.</t>
  <t><strong>References</strong>:<br />
This document (Internet-Draft): <em>agent:// Protocol -- A URI-Based Framework for Interoperable Agents</em><br />
<xref target="RFC3986"></xref> - Uniform Resource Identifier (URI): Generic Syntax<br />
<xref target="RFC7595"></xref> - Guidelines and Registration Procedures for URI Schemes</t>
  <t><strong>URI Syntax</strong>:<br />
The general form of an <spanx style="verb">agent</spanx> URI is:</t>
</list></t>

<figure><sourcecode type="txt"><![CDATA[
agent:[+<protocol>]://<authority>/<path>[?<query>][#<fragment>]

]]></sourcecode></figure>

<t>Where:
- <spanx style="verb">authority</spanx> is typically a domain name or Decentralized Identifier (DID)<br />
- <spanx style="verb">path</spanx> is an opaque agent-specific capability or namespace<br />
- <spanx style="verb">query</spanx> includes serialized key-value parameters<br />
- <spanx style="verb">fragment</spanx> MAY reference a sub-capability or context<br />
- The optional <spanx style="verb">+&lt;protocol&gt;</spanx> segment indicates an explicit transport binding (e.g., <spanx style="verb">agent+https://</spanx>)</t>

<t>Detailed ABNF is specified in <xref target="uri-abnf"></xref> of this document.</t>

<t><list style="symbols">
  <t><strong>Security Considerations</strong>:<br />
The <spanx style="verb">agent</spanx> scheme does not introduce new transport-layer vulnerabilities but inherits risks from underlying protocols such as HTTP, WebSocket, or local execution environments. Implementers should apply standard authentication and authorization measures, such as OAuth2, JWTs, or mutual TLS. See Section 10 for security and privacy guidance.</t>
</list></t>

</section>
</section>
<section anchor="example-agent-descriptor"><name>Appendix A. Example Agent Descriptor</name>

<t>Following is an example of <spanx style="verb">agent.json</spanx>.</t>

<figure title="Example Agent Descriptor in JSON-LD" anchor="fig-agent-descriptor"><sourcecode type="json-ld"><![CDATA[
{
  "@context": "https://example.org/agent-context.jsonld",
  "name": "planner.example.com",
  "description": "Agent helps in researching & planning itineraries",
  "url": "agent://planner.example.com/",
  "provider": {
    "organization": "Example AI Org"
  },
  "documentationUrl": "https://planner.example.com/docs",
  "interactionModel": "agent2agent",
  "orchestration": "delegation",
  "envelopeSchemas": ["fipa-acl"],
  "version": 3.1.4,
  "supportedVersions": {
    "3.0.0": "/v3/",
    "2.1.2": "/olderversion/v2.1.2/",
    "1.0": "/version-1/"
  },
  "capabilities": [
    {
      "name": "gen-iti",
      "version": "2.1.5",
      "description": "Creates a travel itinerary for a given city.",
      "input": { "city": "string" },
      "output": { "itinerary": "array" },
      "isDeterministic": false,
      "expectedOutputVariability": "medium",
      "contentTypes": {
        "inputFormat": ["application/json", "application/ld+json"],
        "outputFormat": ["application/json"]
      }
    }
  ],
  "authentication": {
    "schemes": ["OAuth2"]
  },
  "skills": [
    {
        "id": "agent-skill-1",
        "name": "research-location"
    }
  ]
}

]]></sourcecode></figure>

<t>A JSON-LD context is added to support semantic querying and graph-based processing.</t>

</section>
<section anchor="use-cases"><name>Appendix B. Use Cases</name>

<t><list style="symbols">
  <t>Composing workflows with agents from different vendors</t>
  <t>Enabling discovery and invocation in agent marketplaces</t>
  <t>Facilitating human-in-the-loop workflows with agent transparency</t>
  <t>Building knowledge-based agents that invoke retrieval agents</t>
  <t>Real-time collaboration among specialized agents</t>
  <t>Browser-to-local-agent delegation for privileged operations and desktop automation</t>
  <t>Consistent addressing for agents across network boundaries and security contexts</t>
</list></t>

</section>
<section anchor="reference-implementation"><name>Appendix C. Reference Implementation</name>

<t>A reference implementation of the <spanx style="verb">agent://</spanx> protocol is available to guide implementers, demonstrating the following functionalities:</t>

<t><list style="symbols">
  <t>URI parsing and resolution (<spanx style="verb">agent.json</spanx>, <spanx style="verb">.well-known</spanx> endpoints)</t>
  <t>Transport bindings including HTTPS, WebSocket, Matrix, and Local IPC</t>
  <t>Capability descriptor discovery, caching, and semantic processing</t>
  <t>Orchestration and delegation chaining examples</t>
  <t>Error handling, payload negotiation, and versioning patterns</t>
  <t>Security examples covering OAuth2, JWT, and mutual TLS (mTLS)</t>
</list></t>

<t>The implementation is open-source and maintained at:</t>

<t><xref target="AGENT-URI-REPO"></xref></t>

<t>Implementers are encouraged to use this as a starting point or reference during their implementation efforts.</t>

</section>
<section numbered="false" anchor="acknowledgements"><name>Acknowledgements</name>

<t>This draft reflects observations and aspirations drawn from emerging agent ecosystems. It builds on publicly available research, community discussions, and early experimentation with agent-oriented protocols. It is intended as a foundation for future refinement and collaboration.</t>

</section>


  </middle>

  <back>


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

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



<reference anchor="RFC3986">
  <front>
    <title>Uniform Resource Identifier (URI): Generic Syntax</title>
    <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
    <author fullname="R. Fielding" initials="R." surname="Fielding"/>
    <author fullname="L. Masinter" initials="L." surname="Masinter"/>
    <date month="January" year="2005"/>
    <abstract>
      <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="66"/>
  <seriesInfo name="RFC" value="3986"/>
  <seriesInfo name="DOI" value="10.17487/RFC3986"/>
</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="RFC6570">
  <front>
    <title>URI Template</title>
    <author fullname="J. Gregorio" initials="J." surname="Gregorio"/>
    <author fullname="R. Fielding" initials="R." surname="Fielding"/>
    <author fullname="M. Hadley" initials="M." surname="Hadley"/>
    <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
    <author fullname="D. Orchard" initials="D." surname="Orchard"/>
    <date month="March" year="2012"/>
    <abstract>
      <t>A URI Template is a compact sequence of characters for describing a range of Uniform Resource Identifiers through variable expansion. This specification defines the URI Template syntax and the process for expanding a URI Template into a URI reference, along with guidelines for the use of URI Templates on the Internet. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="6570"/>
  <seriesInfo name="DOI" value="10.17487/RFC6570"/>
</reference>

<reference anchor="RFC9110">
  <front>
    <title>HTTP Semantics</title>
    <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
    <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
    <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
    <date month="June" year="2022"/>
    <abstract>
      <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
      <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="97"/>
  <seriesInfo name="RFC" value="9110"/>
  <seriesInfo name="DOI" value="10.17487/RFC9110"/>
</reference>

<reference anchor="RFC6750">
  <front>
    <title>The OAuth 2.0 Authorization Framework: Bearer Token Usage</title>
    <author fullname="M. Jones" initials="M." surname="Jones"/>
    <author fullname="D. Hardt" initials="D." surname="Hardt"/>
    <date month="October" year="2012"/>
    <abstract>
      <t>This specification describes how to use bearer tokens in HTTP requests to access OAuth 2.0 protected resources. Any party in possession of a bearer token (a "bearer") can use it to get access to the associated resources (without demonstrating possession of a cryptographic key). To prevent misuse, bearer tokens need to be protected from disclosure in storage and in transport. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="6750"/>
  <seriesInfo name="DOI" value="10.17487/RFC6750"/>
</reference>

<reference anchor="RFC7519">
  <front>
    <title>JSON Web Token (JWT)</title>
    <author fullname="M. Jones" initials="M." surname="Jones"/>
    <author fullname="J. Bradley" initials="J." surname="Bradley"/>
    <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
    <date month="May" year="2015"/>
    <abstract>
      <t>JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is used as the payload of a JSON Web Signature (JWS) structure or as the plaintext of a JSON Web Encryption (JWE) structure, enabling the claims to be digitally signed or integrity protected with a Message Authentication Code (MAC) and/or encrypted.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7519"/>
  <seriesInfo name="DOI" value="10.17487/RFC7519"/>
</reference>

<reference anchor="RFC9457">
  <front>
    <title>Problem Details for HTTP APIs</title>
    <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
    <author fullname="E. Wilde" initials="E." surname="Wilde"/>
    <author fullname="S. Dalal" initials="S." surname="Dalal"/>
    <date month="July" year="2023"/>
    <abstract>
      <t>This document defines a "problem detail" to carry machine-readable details of errors in HTTP response content to avoid the need to define new error response formats for HTTP APIs.</t>
      <t>This document obsoletes RFC 7807.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9457"/>
  <seriesInfo name="DOI" value="10.17487/RFC9457"/>
</reference>

<reference anchor="RFC8705">
  <front>
    <title>OAuth 2.0 Mutual-TLS Client Authentication and Certificate-Bound Access Tokens</title>
    <author fullname="B. Campbell" initials="B." surname="Campbell"/>
    <author fullname="J. Bradley" initials="J." surname="Bradley"/>
    <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
    <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
    <date month="February" year="2020"/>
    <abstract>
      <t>This document describes OAuth client authentication and certificate-bound access and refresh tokens using mutual Transport Layer Security (TLS) authentication with X.509 certificates. OAuth clients are provided a mechanism for authentication to the authorization server using mutual TLS, based on either self-signed certificates or public key infrastructure (PKI). OAuth authorization servers are provided a mechanism for binding access tokens to a client's mutual-TLS certificate, and OAuth protected resources are provided a method for ensuring that such an access token presented to it was issued to the client presenting the token.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8705"/>
  <seriesInfo name="DOI" value="10.17487/RFC8705"/>
</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>

<reference anchor="RFC7595">
  <front>
    <title>Guidelines and Registration Procedures for URI Schemes</title>
    <author fullname="D. Thaler" initials="D." role="editor" surname="Thaler"/>
    <author fullname="T. Hansen" initials="T." surname="Hansen"/>
    <author fullname="T. Hardie" initials="T." surname="Hardie"/>
    <date month="June" year="2015"/>
    <abstract>
      <t>This document updates the guidelines and recommendations, as well as the IANA registration processes, for the definition of Uniform Resource Identifier (URI) schemes. It obsoletes RFC 4395.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="35"/>
  <seriesInfo name="RFC" value="7595"/>
  <seriesInfo name="DOI" value="10.17487/RFC7595"/>
</reference>


<reference anchor="JSON-LD11" target="https://www.w3.org/TR/json-ld11/">
  <front>
    <title>JSON-LD 1.1: A JSON-based Serialization for Linked Data</title>
    <author initials="M." surname="Sporny">
      <organization></organization>
    </author>
    <author initials="D." surname="Longley">
      <organization></organization>
    </author>
    <author initials="G." surname="Kellogg">
      <organization></organization>
    </author>
    <author initials="M." surname="Lanthaler">
      <organization></organization>
    </author>
    <author initials="P." surname="Champin">
      <organization></organization>
    </author>
    <author initials="N." surname="Lindstrom">
      <organization></organization>
    </author>
    <date year="2020" month="July"/>
  </front>
  <seriesInfo name="W3C" value="Recommendation"/>
</reference>
<reference anchor="DID-CORE" target="https://www.w3.org/TR/did-core/">
  <front>
    <title>Decentralized Identifiers (DIDs) v1.0</title>
    <author initials="M." surname="Sporny">
      <organization></organization>
    </author>
    <author initials="D." surname="Longley">
      <organization></organization>
    </author>
    <author initials="M." surname="Sabadello">
      <organization></organization>
    </author>
    <author initials="D." surname="Reed">
      <organization></organization>
    </author>
    <author initials="O." surname="Steele">
      <organization></organization>
    </author>
    <author initials="C." surname="Allen">
      <organization></organization>
    </author>
    <date year="2022" month="July"/>
  </front>
  <seriesInfo name="W3C" value="Recommendation"/>
</reference>


    </references>

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

<reference anchor="SemVer" target="https://semver.org/">
  <front>
    <title>Semantic Versioning 2.0.0</title>
    <author initials="T." surname="Preston-Werner">
      <organization></organization>
    </author>
    <date year="2013"/>
  </front>
</reference>
<reference anchor="Agent2Agent" target="https://github.com/google/A2A">
  <front>
    <title>Agent2Agent Protocol</title>
    <author initials="" surname="Google LLC">
      <organization></organization>
    </author>
    <date year="2025" month="April"/>
  </front>
</reference>
<reference anchor="AgentCard" target="https://github.com/google/A2A/blob/main/specification/json/a2a.json">
  <front>
    <title>Agent Card Schema from Agent2Agent Protocol</title>
    <author initials="" surname="Google LLC">
      <organization></organization>
    </author>
    <date year="2025" month="April"/>
  </front>
</reference>
<reference anchor="MCP" target="https://modelcontextprotocol.io/specification/">
  <front>
    <title>Model Context Protocol (MCP)</title>
    <author initials="" surname="Anthropic PBC">
      <organization></organization>
    </author>
    <date year="2025" month="March"/>
  </front>
</reference>
<reference anchor="LangChain" target="https://python.langchain.com/v0.3/docs/">
  <front>
    <title>LangChain Documentation</title>
    <author initials="" surname="LangChain Team">
      <organization></organization>
    </author>
    <date year="2024"/>
  </front>
</reference>
<reference anchor="SemanticKernel" target="https://github.com/microsoft/semantic-kernel">
  <front>
    <title>Semantic Kernel SDK</title>
    <author initials="" surname="Microsoft">
      <organization></organization>
    </author>
    <date year="2024"/>
  </front>
</reference>
<reference anchor="AutoGen" target="https://microsoft.github.io/autogen/">
  <front>
    <title>AutoGen: Enabling LLM Applications with Multi-Agent Conversations</title>
    <author initials="" surname="Microsoft Research">
      <organization></organization>
    </author>
    <date year="2024"/>
  </front>
</reference>
<reference anchor="OpenAPI" target="https://spec.openapis.org/oas/latest.html">
  <front>
    <title>OpenAPI Specification v3.1.0</title>
    <author initials="" surname="OpenAPI Initiative">
      <organization></organization>
    </author>
    <date year="2024" month="October"/>
  </front>
</reference>
<reference anchor="JSON-RPC" target="https://www.jsonrpc.org/specification">
  <front>
    <title>JSON-RPC 2.0 Specification</title>
    <author initials="" surname="JSON-RPC Working Group">
      <organization></organization>
    </author>
    <date year="2013" month="January" day="04"/>
  </front>
</reference>
<reference anchor="Matrix" target="https://spec.matrix.org/">
  <front>
    <title>Matrix Specification v1.14</title>
    <author initials="" surname="The Matrix org Foundation">
      <organization></organization>
    </author>
    <date year="2014"/>
  </front>
</reference>
<reference anchor="GraphQL" target="https://spec.graphql.org/October2021/">
  <front>
    <title>GraphQL: A Query Language for APIs</title>
    <author initials="" surname="GraphQL Foundation">
      <organization></organization>
    </author>
    <date year="2021" month="October"/>
  </front>
</reference>
<reference anchor="FIPA-ACL" target="http://www.fipa.org/specs/fipa00061/SC00061G.html">
  <front>
    <title>FIPA ACL Message Structure Specification</title>
    <author initials="" surname="Foundation for Intelligent Physical Agents">
      <organization></organization>
    </author>
    <date year="2002"/>
  </front>
</reference>
<reference anchor="FIPA-CNP" target="http://www.fipa.org/specs/fipa00029/SC00029H.html">
  <front>
    <title>FIPA Contract Net Interaction Protocol Specification</title>
    <author initials="" surname="Foundation for Intelligent Physical Agents">
      <organization></organization>
    </author>
    <date year="2002"/>
  </front>
</reference>
<reference anchor="AGENT-URI-REPO" target="https://github.com/agent-uri/agent-uri">
  <front>
    <title>Agent URI Protocol Reference Implementation</title>
    <author initials="Y." surname="Narvaneni">
      <organization></organization>
    </author>
    <date year="2025"/>
  </front>
</reference>


    </references>

</references>



  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA819+1PbWLrg71TxP5x1dqdxYtlAku7bTJIeAiTNHZIwQKZn
ikpdy9axrY4suSUZ2pNk/vb7vc5Llgndt3drqRQx8nmf7/1SFEXbW3VaZ/pA
da5mWsVTndcHg4E6L4u6GBeZiiJ1qN5fnEYv40on6lUZz/VtUX5Uk6JUp3mt
y2Khy3iUaXWInavO9lY8GpX6Boak4aJlmcLDcVzraVGuDpT+dbG9lRTjtzDU
gUrKeFJHeVzexLnO08j2iXZ3t7fSRXmg6nJZ1fu7u9/v7sPgpY4P1OFikaUw
ZFrk1fYWLmhaFsvFASwp0QsNv/JaXS5H87SqoM321ke9glbJAa8513V0jBNv
b1W20dVqAetJ3QCwSlj0gdrf3X8a7T6J9ve2t6BDHefJf8VZkcNXKw3TL9ID
dQ3H1VNVUdalnlTwaTXHDx+wR7ysZ0V5sL2l4LgV/KR5daD+2Vdvza75cU4H
8s+4uo3zetb8tiincZ7+i/Yc7vNCVzouxzNdcks9j9MM1iYD/WWKf/fHxZy/
Hqc13MJZkSd4MNtbeVHOYdQbjStUF6+OHn//H9+az/t7e9+bz98+/W7XfP5+
b89+/va7p/bzd09d+++fPP3OfP6P73af2s973z1x7b/n5/95+e5tdHa8t3fA
qzRgKc/VXn8Prp2bjQgWL3WZxpmcCMHjWZp/hC+O4zru8Cju6OknUuaTXMKb
vrpcFGW+si0aDY77eFLTTG9s8bqv/qqzrJhO75rlDG8izswVrQ9z3ldHs3i+
SPNNLd72cYNJVZfmJi147ka73/GjCg5FV2k+Keymf3p8dAAwAvc/B4Ch05Ij
jsuprg/UrK4XFWD97e1t//ZxHwBtcHUx+Lkq8ihL9vYG2Pr49Dg6endx0rid
Yz0GCCzxGuDgTxEc00mqy0rtQI+qq272+rv/7+4Ch4hHcYL3cccoF1onm75+
B0PUWmd6U4OjvjrMMp03rmD//8IVJGkSjYtSDxBNcUAfUS/1/O+6DO8DngGc
pWMF3yBJS/Op2u/v9nfbb6Cxs6s+0H1d1XDvPyGNLMMt7j1uX3Ol5ze6pDVj
A2ID+/Q7XJz3heUv91rX66KAS1dnZ0eNM0eq3L6maVrPliOkeYMp9R4c7h/a
1R3FwAlCQOZl4RfqEijpPFYTQLPWNXc2rmINwluXf6+1DkZZMRoA4c4H1UKP
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

-->

</rfc>

