<?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.30 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-cui-ai-agent-discovery-invocation-01" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="AIDIP">AI Agent Discovery and Invocation Protocol</title>
    <seriesInfo name="Internet-Draft" value="draft-cui-ai-agent-discovery-invocation-01"/>
    <author initials="Y." surname="Cui" fullname="Yong Cui">
      <organization>Tsinghua University</organization>
      <address>
        <postal>
          <region>Beijing</region>
          <code>100084</code>
          <country>China</country>
        </postal>
        <email>cuiyong@tsinghua.edu.cn</email>
        <uri>http://www.cuiyong.net/</uri>
      </address>
    </author>
    <author initials="Y." surname="Chao" fullname="Yihan Chao">
      <organization>Zhongguancun Laboratory</organization>
      <address>
        <postal>
          <region>Beijing</region>
          <code>100094</code>
          <country>China</country>
        </postal>
        <email>chaoyh@zgclab.edu.cn</email>
      </address>
    </author>
    <author initials="C." surname="Du" fullname="Chenguang Du">
      <organization>Zhongguancun Laboratory</organization>
      <address>
        <postal>
          <region>Beijing</region>
          <code>100094</code>
          <country>China</country>
        </postal>
        <email>ducg@zgclab.edu.cn</email>
      </address>
    </author>
    <date year="2026" month="February" day="12"/>
    <area>IETF</area>
    <workgroup>Network Working Group</workgroup>
    <keyword>AI Agent</keyword>
    <keyword>Service Discovery</keyword>
    <abstract>
      <?line 116?>

<t>This document proposes a standardized protocol for discovery and invocation of AI agents. It defines a common metadata format for describing AI agents (including capabilities, I/O specifications, supported languages, tags, authentication methods, etc.), a capability-based discovery mechanism, and a unified RESTful invocation interface.</t>
      <t>This revision additionally specifies an optional extension that enables intent-based agent selection prior to discovery and invocation, without changing existing discovery or invocation semantics.</t>
      <t>The goal is to enable cross-platform interoperability among AI agents by providing a discover-and-match mechanism and a unified invocation entry point. Security considerations, including authentication and trust measures, are also discussed. This specification aims to facilitate the formation of multi-agent systems by making it easy to find the right agent for a task and invoke it in a consistent manner across different vendors and platforms.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://example.com/LATEST"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-cui-ai-agent-discovery-invocation/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        WG Working Group mailing list (<eref target="mailto:WG@example.com"/>),
        which is archived at <eref target="https://example.com/WG"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/USER/REPO"/>.</t>
    </note>
  </front>
  <middle>
    <?line 126?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>As artificial intelligence technologies advance rapidly, AI agents—autonomous software components capable of perceiving their environment, reasoning, and taking actions to achieve goals—have emerged as a powerful paradigm for task execution. Today, many organizations develop specialized AI agents for various purposes: from text translation and summarization, to code generation, to data analysis and beyond. These agents are often offered as services, accessible over the network and may be integrated into larger systems. However, despite the proliferation of AI agents, there is currently no standard protocol for discovering available agents and invoking their capabilities in a uniform way.</t>
      <t>Existing agent frameworks and platforms facilitate building agents but typically operate in isolated ecosystems, making cross-platform or cross-organization agent interoperability difficult. Each platform tends to define its own APIs for agent description and invocation, which means a client wishing to use agents from multiple sources must adapt to disparate interfaces. This lack of standardization creates friction, increases integration costs, and hampers the development of multi-agent collaborative systems.</t>
      <t>This document addresses these issues by proposing a standardized AI Agent Discovery and Invocation Protocol. The protocol provides:</t>
      <ol spacing="normal" type="1"><li>
          <t><strong>Agent Metadata Specification:</strong> A structured JSON Schema for describing an agent's identity, capabilities, inputs, outputs, authentication requirements, and other attributes. This enables agents to publish their specifications in a machine-readable form.</t>
        </li>
        <li>
          <t><strong>Discovery Mechanism:</strong> A registry-based approach where agents register themselves and clients can search for agents by capability, tags, or semantic queries. The registry is language and platform agnostic, facilitating cross-platform discovery.</t>
        </li>
        <li>
          <t><strong>Invocation Interface:</strong> A RESTful API that enables a client (which could be a human user application, another agent, or an orchestration system) to invoke an agent's capabilities through a standard endpoint and JSON payloads.</t>
        </li>
        <li>
          <t><strong>Security Considerations:</strong> Guidelines for authentication, authorization, encrypted transport (TLS), and trust establishment, ensuring that discovery and invocation happen securely.</t>
        </li>
        <li>
          <t><strong>Interoperability with Existing Standards:</strong> This specification references existing standards such as JSON Schema, OAuth 2.0 <xref target="RFC6749"/>, and OpenAPI concepts, and leverages established web technologies for broad compatibility.</t>
        </li>
      </ol>
      <t>The primary audience for this specification includes developers of AI agent platforms, providers of AI agent services, and system architects building AI-enabled applications or multi-agent systems. By adopting this protocol, an AI agent developer can make their agent accessible to a wide ecosystem, and a client application can integrate AI agents from multiple vendors without custom integration for each.</t>
      <t>This revision extends the base protocol with an optional Agent Semantic Resolution layer that enables intent-based agent selection. This extension allows a Host Agent or coordinator to describe a task intent and receive candidate agents without predetermining which agent to invoke. ASR does not replace discovery; it adds a semantic matching phase that can precede or augment the capability-based search defined in earlier sections.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</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?>

<ul spacing="normal">
        <li>
          <t><strong>AI Agent:</strong> An autonomous software component that can perform tasks using artificial intelligence capabilities. Agents may wrap language models, specialized ML models, or reasoning engines, exposing their abilities via defined interfaces.</t>
        </li>
        <li>
          <t><strong>Agent Metadata:</strong> A structured description of an agent, including name, description, capabilities, input/output schemas, authentication requirements, and endpoint information.</t>
        </li>
        <li>
          <t><strong>Agent Registry (Discovery Service):</strong> A service that maintains a directory of registered agents and supports queries for discovering agents by attributes or semantic search.</t>
        </li>
        <li>
          <t><strong>Gateway:</strong> (Optional) An intermediary service that routes client requests to appropriate agents. In some deployments, the registry or another service acts as a gateway to simplify client-to-agent connections.</t>
        </li>
        <li>
          <t><strong>Invocation Endpoint:</strong> The URL provided by an agent (or gateway) where clients send requests to invoke the agent's capabilities.</t>
        </li>
        <li>
          <t><strong>Capability:</strong> A high-level function an agent can perform, identified by a string (e.g., "translation", "summarization", "image_classification").</t>
        </li>
        <li>
          <t><strong>Operation:</strong> A specific action supported by an agent. Some agents may have multiple operations; for example, an agent offering both translation and language detection could list these as separate operations, each with its own input/output schema.</t>
        </li>
      </ul>
    </section>
    <section anchor="agent-metadata-specification">
      <name>Agent Metadata Specification</name>
      <t>The Agent Metadata Specification defines a standard JSON document that describes an agent. All agents that wish to be discoverable and invocable through this protocol <bcp14>MUST</bcp14> provide a metadata document conforming to the schema below. This metadata is used for agent registration and returned to clients during discovery.</t>
      <section anchor="core-fields">
        <name>Core Fields</name>
        <t>The following are the core fields of an agent metadata document:</t>
        <ul spacing="normal">
          <li>
            <t><strong>id (string):</strong> A globally unique identifier for the agent. This could be a UUID or a similarly unique value, assigned by the registry upon registration or by the agent provider in advance. This ID is used to refer to the agent in all subsequent operations (e.g., retrieval, invocation routing).</t>
          </li>
          <li>
            <t><strong>name (string):</strong> A human-readable name for the agent (e.g., "Chinese-English Translator Agent"). Names need not be unique but should be descriptive.</t>
          </li>
          <li>
            <t><strong>description (string):</strong> A detailed description of the agent, its purpose, and capabilities in natural language. This helps both human users and semantic search algorithms understand what the agent does.</t>
          </li>
          <li>
            <t><strong>version (string):</strong> The version of the agent or its metadata (e.g., "1.0.0"). This allows tracking of agent updates over time.</t>
          </li>
          <li>
            <t><strong>publisher (string):</strong> The name or identifier of the entity publishing the agent (e.g., an organization name or developer name).</t>
          </li>
          <li>
            <t><strong>capabilities (array of strings):</strong> A list of capabilities the agent supports. Capabilities are high-level descriptors (like tags or categories) that clients can filter by. Examples: <tt>["translation", "summarization", "text_generation"]</tt>.</t>
          </li>
          <li>
            <t><strong>tags (array of strings):</strong> Additional tags for search and categorization (e.g., <tt>["nlp", "chinese", "transformer_model", "cloud"]</tt>). Tags differ from capabilities in that they can include broader or orthogonal categories (like domain, language support, deployment model, etc.).</t>
          </li>
          <li>
            <t><strong>endpoint (string):</strong> The URL of the agent's invocation endpoint. If the agent is behind a gateway, this could be either the direct endpoint or, if direct access is not allowed, a gateway path (e.g., the gateway might provide a unified endpoint like <tt>/agents/{id}/invoke</tt> and internally route to the actual agent endpoint).</t>
          </li>
          <li>
            <t><strong>supported_languages (array of strings, optional):</strong> A list of languages the agent supports (e.g., <tt>["en", "zh", "fr"]</tt>). For agents dealing with natural language tasks, this field indicates which languages are handled. If omitted, the agent is either language-agnostic or should not be filtered by language.</t>
          </li>
          <li>
            <t><strong>authentication (object, optional):</strong> Describes the authentication mechanism required to invoke the agent. This object may include:
            </t>
            <ul spacing="normal">
              <li>
                <t><strong>type (string):</strong> e.g., "api_key", "oauth2_bearer", "mtls" (mutual TLS), "none".</t>
              </li>
              <li>
                <t><strong>instructions (string):</strong> Human-readable note or URL for obtaining credentials.</t>
              </li>
              <li>
                <t><strong>scopes (array of strings):</strong> If OAuth 2.0 is used, the OAuth scopes required.</t>
              </li>
            </ul>
            <t>
If no authentication is required, this field can be omitted or set with <tt>type: "none"</tt>.</t>
          </li>
          <li>
            <t><strong>status (string, optional):</strong> Operational status of the agent (e.g., <tt>"active"</tt>, <tt>"inactive"</tt>, <tt>"deprecated"</tt>). The registry may use this to filter out agents that are not currently available.</t>
          </li>
          <li>
            <t><strong>additional fields:</strong> Additional fields may include metadata about rate limits (e.g., max calls per minute), pricing info (if the agent charges per use), or links to documentation. These are not standardized here but can be included in agent metadata as needed.</t>
          </li>
        </ul>
      </section>
      <section anchor="operations-and-io-schema">
        <name>Operations and I/O Schema</name>
        <t>Each agent <bcp14>MUST</bcp14> describe its input and output formats. This is done using the <strong>operations</strong> field:</t>
        <ul spacing="normal">
          <li>
            <t><strong>operations (array of objects):</strong> A list of operations the agent supports. Each operation object has:
            </t>
            <ul spacing="normal">
              <li>
                <t><strong>name (string):</strong> The operation name/identifier (e.g., "translateText", "summarize").</t>
              </li>
              <li>
                <t><strong>description (string):</strong> A description of what the operation does.</t>
              </li>
              <li>
                <t><strong>inputs (object):</strong> A JSON Schema describing the expected input. This allows clients to understand what data to send. The JSON Schema can specify required fields, types, enums, etc.</t>
              </li>
              <li>
                <t><strong>outputs (object):</strong> A JSON Schema describing the output format.</t>
              </li>
              <li>
                <t><strong>examples (array of objects, optional):</strong> Example input/output pairs. Each example is an object <tt>{"input": {...}, "output": {...}}</tt> showing a sample invocation.</t>
              </li>
            </ul>
          </li>
        </ul>
        <t>If an agent has a single operation, this array will have one element. If it can do multiple distinct tasks, each is listed here. Some agents may not have structured operations (e.g., a general-purpose language model that just produces text). In that case, the operations field might include a generic operation like <tt>{"name": "generate", ...}</tt>.</t>
        <t>If an agent has a single operation, this array will have one element. If it can do multiple distinct tasks, each is listed here. For simple agents with one primary function, an alternative is to use top-level <tt>inputs</tt> and <tt>outputs</tt> fields directly (instead of an operations array). In that case, the whole agent effectively has one implied operation. This spec allows both styles, but using <tt>operations</tt> is recommended for future extensibility.</t>
      </section>
      <section anchor="example-agent-metadata">
        <name>Example Agent Metadata</name>
        <t>Below is an example metadata JSON for a translation agent:</t>
        <t><tt>json
{
  "id": "agent-12345",
  "name": "Chinese-English Translator",
  "description": "Translates text between Chinese and English with high accuracy using a fine-tuned model.",
  "version": "1.2.0",
  "publisher": "ExampleAI Inc.",
  "capabilities": ["translation"],
  "tags": ["nlp", "chinese", "english", "cloud"],
  "endpoint": "https://api.example.com/agents/translate",
  "supported_languages": ["en", "zh"],
  "authentication": {
    "type": "api_key",
    "instructions": "Include 'X-API-Key' header with your API key."
  },
  "status": "active",
  "operations": [
    {
      "name": "translateText",
      "description": "Translates text from source language to target language.",
      "inputs": {
        "type": "object",
        "properties": {
          "text": {"type": "string"},
          "source_language": {"type": "string", "enum": ["en", "zh"]},
          "target_language": {"type": "string", "enum": ["en", "zh"]}
        },
        "required": ["text", "source_language", "target_language"]
      },
      "outputs": {
        "type": "object",
        "properties": {
          "translated_text": {"type": "string"}
        }
      },
      "examples": [
        {
          "input": {"text": "你好世界", "source_language": "zh", "target_language": "en"},
          "output": {"translated_text": "Hello World"}
        }
      ]
    }
  ]
}
</tt></t>
        <t>This metadata tells us the agent is an active translation agent for Chinese and English, requires an API key for authentication, and has one operation <tt>translateText</tt> with a clear input/output schema.</t>
      </section>
    </section>
    <section anchor="agent-discovery-mechanism">
      <name>Agent Discovery Mechanism</name>
      <t>The discovery mechanism allows clients to find agents that meet certain criteria. Discovery is provided by an Agent Registry (or Discovery Service) that aggregates metadata from multiple agents.</t>
      <section anchor="registry-overview">
        <name>Registry Overview</name>
        <t>The Agent Registry is a network-accessible service that:</t>
        <ol spacing="normal" type="1"><li>
            <t>Allows agents (or their administrators) to register metadata about the agent.</t>
          </li>
          <li>
            <t>Stores and indexes these metadata entries for efficient search.</t>
          </li>
          <li>
            <t>Provides endpoints for clients to query and retrieve agent information.</t>
          </li>
        </ol>
        <t>A registry may be operated by an organization for its internal agents, or by a third party acting as a directory of agents across multiple providers. Multiple registries can coexist; interoperability between registries is facilitated by consistent metadata formats, though formal registry federation is out of scope for this draft.</t>
      </section>
      <section anchor="agent-registration">
        <name>Agent Registration</name>
        <t>An agent (or its administrator) registers with the registry by sending its metadata to a registration endpoint:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Endpoint:</strong> <tt>POST /agents</tt></t>
          </li>
          <li>
            <t><strong>Request Body:</strong> The agent metadata JSON document.</t>
          </li>
          <li>
            <t><strong>Response:</strong> On success, the registry returns <strong>201 Created</strong> (if a new agent was added) or <strong>200 OK</strong> (if an existing agent was updated), with the stored agent metadata (including the assigned <tt>id</tt> if the agent did not provide one). If validation fails (e.g., missing required fields), the registry returns a <strong>400 Bad Request</strong> with error details.</t>
          </li>
        </ul>
        <t>The registry <bcp14>MUST</bcp14> validate the metadata against the schema. Registration may require authentication (for example, the registry only allows verified publishers to register agents).</t>
        <t>Updates to an agent's metadata (e.g., a new version, changed endpoint, etc.) can be done via a PUT request to the agent's entry:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Endpoint:</strong> <tt>PUT /agents/{id}</tt></t>
          </li>
          <li>
            <t><strong>Request Body:</strong> Updated metadata.</t>
          </li>
          <li>
            <t><strong>Response:</strong> <strong>200 OK</strong> on success; <strong>404 Not Found</strong> if no agent with that ID exists; <strong>403 Forbidden</strong> if the requester is not authorized to update that agent.</t>
          </li>
        </ul>
      </section>
      <section anchor="querying-agents">
        <name>Querying Agents</name>
        <t>Clients query the registry using the search endpoint. The protocol supports two types of queries:</t>
        <section anchor="attribute-based-query-filter">
          <name>Attribute-Based Query (Filter)</name>
          <t>Clients can specify criteria to filter agents by capabilities, tags, supported languages, etc.</t>
          <ul spacing="normal">
            <li>
              <t><strong>Endpoint:</strong> <tt>GET /agents?capabilities=X&amp;tags=Y&amp;language=Z</tt></t>
            </li>
            <li>
              <t>or a structured query via <strong>POST /agents/search</strong> with a JSON body.</t>
            </li>
          </ul>
          <t>For simplicity, <strong>POST /agents/search</strong> is recommended for more complex queries. The body might look like:</t>
          <t><tt>json
{
  "filters": {
    "capabilities": ["translation"],
    "supported_languages": ["en", "zh"],
    "tags": ["nlp"]
  },
  "top": 10
}
</tt></t>
          <t>This returns up to 10 agents that match all the specified filters. Filters are combined with AND logic (the agent must satisfy all conditions). Capabilities and tags are matched by set intersection (the agent must have at least the ones listed).</t>
          <t>The response is a JSON array of agent summary objects:</t>
          <t><tt>json
[
  {
    "id": "agent-12345",
    "name": "Chinese-English Translator",
    "description": "...",
    "endpoint": "https://api.example.com/agents/translate",
    "capabilities": ["translation"]
  },
  ...
]
</tt></t>
          <t>Summary objects include essential fields to help the client decide which agent to use, without returning the full detailed metadata. A client can retrieve full metadata via the single-agent endpoint.</t>
        </section>
        <section anchor="semantic-query-natural-language-search">
          <name>Semantic Query (Natural Language Search)</name>
          <t>In addition to attribute-based search, the registry <bcp14>MAY</bcp14> support semantic search where the client describes a need in natural language, and the registry uses AI techniques (embeddings, LLM-based matching) to find relevant agents. This is an optional feature for registries.</t>
          <ul spacing="normal">
            <li>
              <t><strong>Endpoint:</strong> <tt>POST /agents/search</tt></t>
            </li>
            <li>
              <t><strong>Request Body:</strong>
                <tt>json
{
  "query": "I need an agent that can summarize long legal documents in Chinese.",
  "top": 5
}
</tt></t>
            </li>
          </ul>
          <t>The registry returns a ranked list of agents whose descriptions match the query semantically, possibly including a match score. For example:</t>
          <t><tt>json
[
  {
    "id": "agent-67890",
    "name": "Legal Document Summarizer",
    "description": "...",
    "score": 0.93
  },
  ...
]
</tt></t>
          <t>Semantic search enables flexible discovery beyond exact filter matching, aligning with how users or orchestrating agents might reason about tasks. Registries not supporting semantic search simply ignore the <tt>query</tt> text and rely on provided filters.</t>
        </section>
        <section anchor="retrieve-single-agent">
          <name>Retrieve Single Agent</name>
          <ul spacing="normal">
            <li>
              <t><strong>Endpoint:</strong> <tt>GET /agents/{id}</tt></t>
            </li>
            <li>
              <t><strong>Response:</strong> Full metadata JSON for the specified agent, or <strong>404</strong> if not found.</t>
            </li>
          </ul>
        </section>
      </section>
    </section>
    <section anchor="agent-invocation">
      <name>Agent Invocation</name>
      <t>Once a client discovers a suitable agent, it invokes the agent by sending a request to the agent's endpoint. This section defines the interface for invocation.</t>
      <section anchor="invocation-request">
        <name>Invocation Request</name>
        <t>To invoke an agent, the client sends an HTTP POST request to the agent's invocation endpoint with a JSON body containing the input data for the agent's task.</t>
        <ul spacing="normal">
          <li>
            <t><strong>Method:</strong> POST</t>
          </li>
          <li>
            <t><strong>URL:</strong> The <tt>endpoint</tt> URL from the agent's metadata (e.g., <tt>https://api.example.com/agents/translate</tt>). If a gateway is used, the URL might be a gateway-provided path.</t>
          </li>
          <li>
            <t><strong>Headers:</strong>
            </t>
            <ul spacing="normal">
              <li>
                <t><tt>Content-Type: application/json</tt></t>
              </li>
              <li>
                <t>Authentication header as required (e.g., <tt>Authorization: Bearer &lt;token&gt;</tt> or <tt>X-API-Key: &lt;key&gt;</tt>).</t>
              </li>
            </ul>
          </li>
          <li>
            <t><strong>Body:</strong> A JSON object containing input data as per the agent's input schema.</t>
          </li>
        </ul>
        <t>For example, invoking the translation agent:</t>
        <t><tt>json
{
  "text": "Hello, how are you?",
  "source_language": "en",
  "target_language": "fr"
}
</tt></t>
        <t>This corresponds to the agent's expected input fields. If the agent had multiple operations and a unified endpoint, there might be an additional field to specify which operation or capability to use. For instance, the JSON could include something like <tt>"operation": "translateText"</tt> if needed. Alternatively, different operations could be exposed at different URLs (e.g., <tt>/agents/xyz/translate</tt> vs <tt>/agents/xyz/summarize</tt>), in which case the operation is selected by the URL and no extra field is required.</t>
        <t>The protocol does not fix a specific parameter naming; it defers to the agent's published schema. The only requirement is that the client's JSON must conform to what the agent expects. For interoperability, using clear field names and standard data types (strings, numbers, booleans, or structured objects) is encouraged. Binary data (like images for an image-processing agent) should be handled carefully: typically, binary inputs can be provided either as URLs (pointing to where the data is stored), or as base64-encoded strings within the JSON, or by using a multipart request. This specification suggests that if agents need to receive large binary payloads, they either use URL references or out-of-scope mechanisms (like a separate upload and then an ID in the JSON). The core invocation remains JSON-based for simplicity and consistency.</t>
        <t><strong>Headers:</strong> If authentication is required (see Security section), the client must also include the appropriate headers (e.g., <tt>Authorization: Bearer &lt;token&gt;</tt> or an API key header) as dictated by the agent's metadata. The invocation request may also include optional headers for correlation or debugging, such as a request ID, but those are not standardized here.</t>
      </section>
      <section anchor="invocation-response">
        <name>Invocation Response</name>
        <t>The agent (or gateway) will process the request and return a response. The status code and JSON body of the response follow these guidelines:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Success (2xx status):</strong> If the agent successfully performed its task and produced a result, the status <bcp14>SHOULD</bcp14> be <strong>200 OK</strong> (or <strong>201 Created</strong> if a new resource was created as a result, though usually for these actions 200 is fine). The response body will contain the output data in JSON. Ideally, the output JSON conforms to the agent's advertised output schema.  </t>
            <t>
For example, for the translation request above, a success response might be:  </t>
            <t><tt>json
{
  "translated_text": "Bonjour, comment êtes-vous?"
}
</tt>  </t>
            <t>
Here the JSON structure matches what was described in the agent metadata's <tt>outputs</tt>. If the output is complex (e.g., multiple fields or nested objects), those should appear accordingly. The response can include other informational fields if necessary (for example, some agents might return usage metrics, like tokens used or time taken, or a trace id for debugging, but these are optional and out of scope of the core spec).</t>
          </li>
          <li>
            <t><strong>Client Error (4xx status):</strong> If the request was malformed or invalid, the agent returns a <strong>4xx</strong> status code. The most common would be <strong>400 Bad Request</strong> for a JSON that doesn't conform to the expected schema or missing required fields. For example, if the client omitted a required field <tt>target_language</tt>, the agent might respond with 400. The response body <bcp14>SHOULD</bcp14> include an error object explaining what went wrong. We define a simple standard for error objects:  </t>
            <t><tt>json
{
  "error": {
    "code": "InvalidInput",
    "message": "Required field 'target_language' is missing."
  }
}
</tt>  </t>
            <t>
Here, <tt>"code"</tt> is a short string identifier for the error type (e.g., <tt>InvalidInput</tt>, <tt>Unauthorized</tt>, <tt>NotFound</tt>), and <tt>"message"</tt> is a human-readable description. The agent can include additional details if available (e.g., a field name that is wrong, etc.). If the error is due to unauthorized access, <strong>401 Unauthorized</strong> or <strong>403 Forbidden</strong> should be used (with an appropriate error message indicating credentials are missing or insufficient). If the agent ID is not found (perhaps the client used an outdated reference), <strong>404 Not Found</strong> is appropriate.</t>
          </li>
          <li>
            <t><strong>Server/Agent Error (5xx status):</strong> If something goes wrong on the agent's side during processing (an exception, a timeout while executing the task, etc.), the agent (or gateway) returns a <strong>5xx</strong> status (most likely <strong>500 Internal Server Error</strong> or <strong>502/504</strong> if there are upstream issues). The response should again include an error object. For example:  </t>
            <t><tt>json
{
  "error": {
    "code": "AgentError",
    "message": "The agent encountered an unexpected error while processing the request."
  }
}
</tt>  </t>
            <t>
The agent might log the detailed error internally, but only convey a generic message to the client for security. A <strong>503 Service Unavailable</strong> might be returned if the agent is temporarily overloaded or offline, indicating the client could retry later.</t>
          </li>
          <li>
            <t><strong>Status Codes Summary:</strong> In short, this protocol expects the use of standard status codes to reflect outcome (200 for success, 4xx for client-side issues, 5xx for server-side issues). Agents should avoid using 2xx if the operation did not semantically succeed (even if technically a response was generated). For example, if an agent is a composite that calls other services and one of those calls fails, it should propagate an error rather than returning 200 with an error in the data.</t>
          </li>
        </ul>
      </section>
      <section anchor="additional-considerations-for-invocation">
        <name>Additional Considerations for Invocation</name>
        <ul spacing="normal">
          <li>
            <t><strong>Streaming Responses:</strong> Some agents (especially those wrapping large language models) may produce results that are streamed (for example, token-by-token outputs). While this base protocol assumes a request-response pattern with the full result delivered at once, it can be extended to support streaming by using chunked responses or WebSockets. For instance, an agent might accept a parameter like <tt>stream: true</tt> and then send partial outputs as they become available. This is an advanced use case and not elaborated in this draft, but implementers should consider compatibility with streaming if real-time responsiveness is needed.</t>
          </li>
          <li>
            <t><strong>Batch Requests:</strong> If a client wants to send multiple independent requests to an agent in one go (for efficiency), the protocol can support that by allowing an array of input objects in the POST body instead of a single object. The response would then be an array of output results. This is optional and depends on agent support.</t>
          </li>
          <li>
            <t><strong>Idempotency and Retries:</strong> Most agent invocations are not strictly idempotent (since an agent might perform an action or have side effects), but many are pure functions (e.g., translate text). Clients and gateways should design with retry logic carefully — if a network failure happens, a retry might re-run an operation. It's best to ensure that agents' operations are either idempotent or have safeguards (for example, an operation that sends an email might have an idempotency key).</t>
          </li>
          <li>
            <t><strong>Operation Metadata:</strong> In cases where the agent defines multiple <tt>operations</tt> in its metadata, the invocation interface might allow a generic endpoint that accepts an operation name. Alternatively, each operation could be a sub-resource. This draft leaves the exact mechanism flexible: an implementation could choose one of these approaches. The key is that the invocation uses POST and a JSON body following the agent's schema.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="agent-semantic-resolution">
      <name>Agent Semantic Resolution</name>
      <t>Agent Semantic Resolution (ASR) is an optional extension to the discovery mechanism defined in this document. ASR enables a client to resolve a task intent into one or more candidate agents prior to invoking any specific agent.</t>
      <t>ASR operates on the following conceptual model:</t>
      <t><tt>
(Intent, Context, Policy) → (Agent Endpoint(s), Invocation Metadata)
</tt></t>
      <t>The intent represents the task to be performed, while context and policy may include domain constraints, trust requirements, or performance considerations.</t>
      <section anchor="non-goals">
        <name>Non-Goals</name>
        <t>ASR explicitly does not provide:</t>
        <ul spacing="normal">
          <li>
            <t>Name-to-address resolution</t>
          </li>
          <li>
            <t>Global or persistent agent identifiers</t>
          </li>
          <li>
            <t>Replacement for DNS, ANS, or URI-based registries</t>
          </li>
        </ul>
        <t>ASR answers the question "Which agent(s) should handle this task now?" rather than "Where is agent X located?".</t>
        <t/>
      </section>
    </section>
    <section anchor="semantic-routing-platform">
      <name>Semantic Routing Platform</name>
      <t>A Semantic Routing Platform (SRP) is a control-plane service that implements ASR. An SRP assists a Host Agent in selecting appropriate agents before standard discovery and invocation procedures are used.</t>
      <t>An SRP <bcp14>MAY</bcp14> perform semantic matching, ranking, and policy-based filtering of candidate agents. The SRP does not participate in task execution and does not alter the invocation semantics defined in this document.</t>
      <t>Interaction with an SRP is <bcp14>OPTIONAL</bcp14>. Clients that do not support ASR continue to operate using the discovery and invocation mechanisms defined in earlier sections.</t>
      <t/>
    </section>
    <section anchor="backward-compatibility">
      <name>Backward Compatibility</name>
      <t>All discovery and invocation mechanisms defined in previous revisions of this document remain valid and unchanged.</t>
      <t>Agent Semantic Resolution is an optional extension. Implementations <bcp14>MAY</bcp14> support ASR incrementally, and registries <bcp14>MAY</bcp14> provide semantic resolution capabilities without affecting existing clients.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Security is a critical aspect of this protocol. All discovery and invocation traffic <bcp14>MUST</bcp14> be protected with TLS <xref target="RFC8446"/>, and authentication mechanisms such as OAuth 2.0 <xref target="RFC6749"/>  bearer tokens, API keys, or mutual TLS are required except for public discovery endpoints. Registries <bcp14>MUST</bcp14> enforce per-client entitlements, ensuring that both search results and invocation access respect permissions and scopes. Gateways forwarding requests should authenticate themselves to agents, and agents should maintain stable identifiers and use signed responses when integrity is essential. All communication <bcp14>MUST</bcp14> be encrypted, and agents are encouraged to disclose data-retention or logging practices, while sensitive data is best handled by on-premises or certified agents. To mitigate abuse, registries and agents <bcp14>MUST</bcp14> implement rate limiting and quotas, particularly in semantic search scenarios. Trust mechanisms such as certification, test harnesses, or reputation systems may be used to validate agent claims, and metadata fields like "certification" or "quality_score" can inform client trust decisions. Systems <bcp14>SHOULD</bcp14> also provide audit and logging with privacy-aware retention, while clients must treat agent outputs as untrusted until verified, using sandboxing and validation before executing code or commands.</t>
      <t>When Agent Semantic Resolution is used, security considerations extend to the pre-invocation phase. Resolution services <bcp14>SHOULD</bcp14> validate agent capability claims, apply policy constraints, and exclude agents that do not meet trust or reputation requirements. Agents deemed unsafe <bcp14>SHOULD NOT</bcp14> be returned as resolution candidates.</t>
    </section>
    <section anchor="example-interaction-flow">
      <name>Example Interaction Flow</name>
      <ol spacing="normal" type="1"><li>
          <t><strong>Search:</strong> Client <tt>POST /agents/search</tt> with <tt>{"query":"summarize an English document","filters":{"capabilities":["summarization"],"supported_language":"en"},"top":3}</tt>.</t>
        </li>
        <li>
          <t><strong>Select:</strong> Registry returns candidate agents with <tt>id</tt>, <tt>name</tt>, <tt>description</tt>, and <tt>score</tt>. Client retrieves full metadata via <tt>GET /agents/{id}</tt> if needed.</t>
        </li>
        <li>
          <t><strong>Invoke:</strong> Client <tt>POST</tt> to the agent's <tt>endpoint</tt> (or gateway path) with inputs conforming to agent schema and required auth header.</t>
        </li>
        <li>
          <t><strong>Handle Response:</strong> Client processes success or error response; may log usage and optionally rate/feedback the agent.</t>
        </li>
      </ol>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <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="RFC8259">
        <front>
          <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
          <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
          <date month="December" year="2017"/>
          <abstract>
            <t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data.</t>
            <t>This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t>
          </abstract>
        </front>
        <seriesInfo name="STD" value="90"/>
        <seriesInfo name="RFC" value="8259"/>
        <seriesInfo name="DOI" value="10.17487/RFC8259"/>
      </reference>
      <reference anchor="RFC6749">
        <front>
          <title>The OAuth 2.0 Authorization Framework</title>
          <author fullname="D. Hardt" initials="D." role="editor" surname="Hardt"/>
          <date month="October" year="2012"/>
          <abstract>
            <t>The OAuth 2.0 authorization framework enables a third-party application to obtain limited access to an HTTP service, either on behalf of a resource owner by orchestrating an approval interaction between the resource owner and the HTTP service, or by allowing the third-party application to obtain access on its own behalf. This specification replaces and obsoletes the OAuth 1.0 protocol described in RFC 5849. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="6749"/>
        <seriesInfo name="DOI" value="10.17487/RFC6749"/>
      </reference>
      <reference anchor="RFC8446">
        <front>
          <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
          <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
          <date month="August" year="2018"/>
          <abstract>
            <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
            <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="8446"/>
        <seriesInfo name="DOI" value="10.17487/RFC8446"/>
      </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>
    <?line 542?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA819S3MkR5LevX5FqNpsCdCqqt8cEuSQg36xsdPd6AW6RXLH
aKyszEBVsrMya/IBoNhGsz3ppJNspfNedNEv0GUv0j8ZW5n+hvxz93hkVqHZ
s9rD0mZIIJEZGeHhj88f4TmdTke3bt0a3TInZWvr0rbTJ3Vy0ZqXSf0uq65K
88auN0XS2hFuOrNlsramXeWNucgLay7qam0yPDFtq6yabquuxi3TTV21VVoV
s3Vm2sosbWuaNqlbm81oHHkHj3VR1eukNTTgWMb5yo3x9fSrq6p+t6yrbkM/
l1/TWOMZz+NZVZu8zNs8KUxj224zMfSUqcpia0pr+ZU2y1uaKb0hr5vWLIoq
fWeqC/rVFlmDWZzi9nGbt4Ud82MNnltYk66ScmmzL01mC9taM04Wi9pejk1+
gffUhp/BnJtVVbcY67jcmoreVpu0IkqWrUmTEmNhGjabmEXX8tBJbS+6wpRV
i5flZVtXWZfSfXVd1Tyt8wpk4Vmaq7wo8Bgt0iRdWxGp8jQpaN5ZV+flUlaP
edG7t4YGN12p0xdSPanKT4i8ZVp0Ga1keufO2BD1xlNsatPSmkqlUsGbixm8
SBa2aPxfaIfMb+2NDiczaGgHFlsaCI+3VVUwYWnhRB76AVfTrq5BpUtbN3lV
fkkLodllVYrRx3insdcJsZ6VZbwBy7XKi3hDY97VyRosOq0v0iOzattNc3T7
9jJvV91illbr22myqG7Hd9E4PxCbYGdqSyOlludC88hroYDusNnIZBOT5Rf0
A2YqjAryPGb6eqrRRGnDsQosju5JV55uxNkHs+t1wQv6/uWLibFtOpvNDrEo
kjtmpCMzPj4xx0u85UnepBURhfayzEgoL6uUtpyGfq0CNR4JM/JDT05ej0d0
g11W9faINuyiGo2UiEe6Z2mXTxP6H4afZm74ae6Hnt65O2q6xTpvsIZ2u6FH
T56+eWbMLZMUTUVvysvMbiz9q2zHEzMGT1c1CR9+OTl+RP8BS52cvXk2HpXd
emHro1FG0zoakTQ0RJyuOTJt3dkRzfv+iJgkkXeMPBcdmVe2xW/mO/oXWPtb
XB69s1u6mh2NzNQ4KuHnc1tf5rSBnmCjS1t29EZjdLzvvqWfZTn9IQ1tUl7g
hj84HiN2octJna4CJ0V/u81jCWsdmbfnT89unz19fUrXhO33P/Ti+M3T8zej
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
6P8BYilSvMuAAAA=

-->

</rfc>
