﻿<?xml version="1.0" encoding="UTF-8"?>
<?xml-model href="rfc7991bis.rnc"?>
<!DOCTYPE rfc [
  <!ENTITY RFC2119 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
  <!ENTITY RFC8174 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
  <!ENTITY RFC7480 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7480.xml">
  <!ENTITY RFC7482 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7482.xml">
  <!ENTITY RFC7483 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7483.xml">
  <!ENTITY RFC9082 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.9082.xml">
  <!ENTITY RFC9083 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.9083.xml">
]>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude"
     category="info"
     docName="draft-yu-agent-identifier-rdap-00"
     ipr="trust200902"
     submissionType="IETF"
     version="3">
  <front>
    <title abbrev="Agent Identifier RDAP">An RDAP Profile for Agent Identifier Registration Data</title>
    <seriesInfo name="Internet-Draft" value="draft-yu-agent-identifier-rdap-00"/>
    <author fullname="Haisheng Yu" initials="H." surname="Yu">
      <organization>China Internet Network Information Center</organization>
      <address>
        <email>yuhaisheng@cnnic.cn</email>
      </address>
    </author>
    <date year="2026" month="May" day="20"/>
    <area>Applications and Real-Time</area>
    <workgroup>Internet Engineering Task Force</workgroup>
    <keyword>RDAP</keyword>
    <keyword>AI Agent</keyword>
    <keyword>Agent Identifier</keyword>
    <keyword>IPv6</keyword>
    <abstract>
      <t>
        AI agents may need stable identifiers that are independent from their
        current network locations. In agent deployments, an Agent identifier
        may be associated with IPv6 locators, IPv6 prefixes, Agent Gateways,
        public key references, policy references, lifecycle state, and
        revocation status. Applications, gateways, controllers, and operators
        need a trusted way to query this registration data.
      </t>
      <t>
        This document defines an RDAP profile for querying Agent identifier
        registration data. The profile reuses the Registration Data Access
        Protocol (RDAP) query model and JSON response format, and defines an
        RDAP object class and extension members for Agent identifiers,
        IPv6 locator bindings, Agent Gateway bindings, and related operational
        metadata.
      </t>
      <t>
        This document does not define a new agent discovery protocol, a new
        agent interaction protocol, or a new authentication mechanism. It
        defines a registration data access profile that can be used by agent
        deployments and by other agent-related systems that need trusted
        Agent identifier metadata.
      </t>
    </abstract>
  </front>

  <middle>
    <section numbered="true" toc="default">
      <name>Conventions Used in This Document</name>
      <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 BCP
        14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only
        when, they appear in all capitals, as shown here.
      </t>
    </section>

    <section numbered="true" toc="default">
      <name>Introduction</name>
      <t>
        AI agents are increasingly expected to interact across platforms,
        organizations, clouds, edge environments, and administrative domains.
        A stable Agent identifier can help identify an agent independently
        from the agent's current network location. However, a relying party may
        still need to know which entity is responsible for the Agent
        identifier, whether the identifier is active, which IPv6 locators or
        Agent Gateways are authorized to represent the agent, and whether a
        binding has expired or been revoked.
      </t>
      <t>
        The companion IPv6 networking considerations draft discusses what
        networking information may be needed after agent discovery, including
        Agent-ID to IPv6 locator or Agent Gateway binding. This document
        explores one possible way to provide stable registration data for Agent
        identifiers using RDAP.
      </t>
      <t>
        RDAP provides a RESTful query model and JSON responses for registration
        data <xref target="RFC7480"/> <xref target="RFC9082"/>
        <xref target="RFC9083"/>. Reusing RDAP allows agent deployments to
        use an existing registration data access model rather than defining a
        new query protocol.
      </t>
    </section>

    <section numbered="true" toc="default">
      <name>Scope and Non-Goals</name>
      <t>This document specifies:</t>
      <ul>
        <li>an RDAP object class for Agent identifiers;</li>
        <li>query paths for Agent identifier lookup;</li>
        <li>JSON members for Agent lifecycle state and responsible entity references;</li>
        <li>JSON members for IPv6 locator and Agent Gateway bindings;</li>
        <li>JSON members for policy, certificate, validity, and revocation metadata;</li>
        <li>security and privacy considerations for exposing Agent registration data.</li>
      </ul>
      <t>This document does not specify:</t>
      <ul>
        <li>a new Agent identifier syntax;</li>
        <li>a new agent discovery or collaboration protocol;</li>
        <li>a new authentication, authorization, or attestation protocol;</li>
        <li>a mandatory global registry for all Agent identifiers;</li>
        <li>real-time presence, health, load, capability ranking, or endpoint selection;</li>
        <li>a replacement for RDAP domain, nameserver, entity, autnum, or IP network objects.</li>
      </ul>
    </section>

    <section numbered="true" toc="default">
      <name>Terminology</name>
      <dl newline="true">
        <dt>Agent:</dt>
        <dd>A software entity that can perceive context, reason, plan, invoke tools, communicate with other agents, and perform tasks on behalf of a user, organization, or system.</dd>
        <dt>Agent Identifier:</dt>
        <dd>A stable identifier used to identify an agent independently from its current network location.</dd>
        <dt>Agent Networking Considerations:</dt>
        <dd>Considerations related to the use of IP networking mechanisms to support agent communication after discovery.</dd>
        <dt>Agent Gateway:</dt>
        <dd>A network or application gateway that represents one or more agents and provides controlled access, address mapping, policy enforcement, protocol adaptation, or telemetry collection.</dd>
        <dt>Agent Binding:</dt>
        <dd>An association between an Agent identifier and one or more IPv6 locators, IPv6 prefixes, or Agent Gateways.</dd>
        <dt>Agent RDAP Object:</dt>
        <dd>An RDAP object representing registration data for an Agent identifier.</dd>
      </dl>
    </section>

    <section numbered="true" toc="default">
      <name>RDAP Extension Identifier</name>
      <t>
        RDAP responses that use the extensions defined in this document MUST
        include the extension identifier "agent_identifier_rdap" in the "rdapConformance"
        array.
      </t>
      <sourcecode type="json"><![CDATA[
{
  "rdapConformance": [
    "rdap_level_0",
    "agent_identifier_rdap"
  ]
}
]]></sourcecode>
      <t>
        The extension identifier is used provisionally in this version. Future
        versions may request IANA registration if this approach receives
        community interest.
      </t>
    </section>

    <section numbered="true" toc="default">
      <name>Query Path</name>
      <t>
        This profile defines the following RDAP query path for exact Agent
        identifier lookup:
      </t>
      <sourcecode type="text"><![CDATA[
/agent/{agentIdentifier}
]]></sourcecode>
      <t>
        The "agentIdentifier" path component is the Agent identifier being
        queried. The value MUST be percent-encoded when required by URI syntax.
      </t>
      <t>
        Servers MAY also support search paths in a future version. This
        document defines only exact lookup.
      </t>
    </section>

    <section numbered="true" toc="default">
      <name>Agent RDAP Object</name>
      <t>
        An Agent RDAP Object is an RDAP response object that describes an Agent
        identifier and related registration data. It reuses common RDAP
        members such as "objectClassName", "handle", "entities", "events",
        "links", "notices", and "remarks" as defined by RDAP.
      </t>
      <t>
        The "objectClassName" member for an Agent RDAP Object MUST be
        "agent".
      </t>
      <t>
        The following agent-specific members are defined:
      </t>
      <dl newline="true">
        <dt>agentIdentifier:</dt>
        <dd>The stable Agent identifier represented by this object.</dd>
        <dt>agentStatus:</dt>
        <dd>The lifecycle state of the Agent identifier or binding. Example values include "active", "inactive", "suspended", "revoked", and "expired".</dd>
        <dt>responsibleEntity:</dt>
        <dd>An RDAP entity handle, URI, or opaque reference identifying the entity responsible for the Agent identifier.</dd>
        <dt>agentDomains:</dt>
        <dd>An array of administrative or operational domains associated with the Agent identifier.</dd>
        <dt>ipv6Locators:</dt>
        <dd>An array of IPv6 locator objects associated with the Agent identifier.</dd>
        <dt>agentGateways:</dt>
        <dd>An array of Agent Gateway objects authorized to represent the Agent identifier.</dd>
        <dt>certificateRefs:</dt>
        <dd>An array of certificate, key, or trust document references.</dd>
        <dt>policyRefs:</dt>
        <dd>An array of policy references associated with the Agent identifier or binding.</dd>
        <dt>revocationStatus:</dt>
        <dd>Information about revocation state and revocation checking endpoints.</dd>
      </dl>
    </section>

    <section numbered="true" toc="default">
      <name>IPv6 Locator Object</name>
      <t>
        An IPv6 Locator Object describes an IPv6 address or prefix through
        which an agent instance, service, or gateway can be reached.
      </t>
      <t>The following members are defined:</t>
      <dl newline="true">
        <dt>locator:</dt>
        <dd>An IPv6 address or prefix.</dd>
        <dt>locatorType:</dt>
        <dd>The type of locator. Example values include "instance", "service", "gateway", and "prefix".</dd>
        <dt>priority:</dt>
        <dd>An integer used to express selection priority. Lower values indicate higher preference.</dd>
        <dt>weight:</dt>
        <dd>An integer used for weighted selection among locators of equal priority.</dd>
        <dt>region:</dt>
        <dd>A deployment region, availability zone, site, or other operational location label.</dd>
        <dt>validFrom:</dt>
        <dd>The time from which this locator binding is valid.</dd>
        <dt>validUntil:</dt>
        <dd>The time after which this locator binding is no longer valid.</dd>
        <dt>status:</dt>
        <dd>The status of the locator binding. Example values include "active", "inactive", "revoked", and "expired".</dd>
      </dl>
    </section>

    <section numbered="true" toc="default">
      <name>Agent Gateway Object</name>
      <t>
        An Agent Gateway Object describes a gateway that is authorized to
        represent one or more Agent identifiers.
      </t>
      <t>The following members are defined:</t>
      <dl newline="true">
        <dt>gatewayIdentifier:</dt>
        <dd>A stable identifier for the Agent Gateway.</dd>
        <dt>gatewayLocator:</dt>
        <dd>An IPv6 address, IPv6 prefix, URI, or other locator used to reach the gateway.</dd>
        <dt>representedAgents:</dt>
        <dd>An array of Agent identifier references or patterns represented by the gateway.</dd>
        <dt>authorizationRef:</dt>
        <dd>A reference to authorization data showing that the gateway may represent the Agent identifier.</dd>
        <dt>policyRefs:</dt>
        <dd>An array of policy references enforced by or associated with the gateway.</dd>
        <dt>status:</dt>
        <dd>The status of the gateway binding.</dd>
      </dl>
    </section>

    <section numbered="true" toc="default">
      <name>Example Response</name>
      <t>
        The following example shows an Agent RDAP Object for an agent that is
        reachable through an Agent Gateway.
      </t>
      <sourcecode type="json"><![CDATA[
{
  "rdapConformance": [
    "rdap_level_0",
    "agent_identifier_rdap"
  ],
  "objectClassName": "agent",
  "handle": "AGENT-EXAMPLE-0001",
  "agentIdentifier": "agent:warehouse.example.cn:agv-001",
  "agentStatus": "active",
  "responsibleEntity": "CNIC-EXAMPLE-ENTITY",
  "agentDomains": [
    "warehouse.example.cn"
  ],
  "ipv6Locators": [
    {
      "locator": "2001:db8:100:20::1",
      "locatorType": "gateway",
      "priority": 100,
      "weight": 100,
      "region": "warehouse-site-a",
      "validFrom": "2026-05-20T00:00:00Z",
      "validUntil": "2026-11-20T00:00:00Z",
      "status": "active"
    }
  ],
  "agentGateways": [
    {
      "gatewayIdentifier": "warehouse-gateway-001",
      "gatewayLocator": "2001:db8:100:20::1",
      "representedAgents": [
        "agent:warehouse.example.cn:agv-001"
      ],
      "authorizationRef": "https://example.net/agent/authz/warehouse-gw-001",
      "policyRefs": [
        "policy:warehouse-dispatch"
      ],
      "status": "active"
    }
  ],
  "certificateRefs": [
    "https://example.net/agent/certs/agv-001"
  ],
  "policyRefs": [
    "policy:warehouse-dispatch"
  ],
  "revocationStatus": {
    "status": "notRevoked",
    "revocationCheck": "https://example.net/agent/status/agv-001"
  },
  "events": [
    {
      "eventAction": "registration",
      "eventDate": "2026-05-20T00:00:00Z"
    },
    {
      "eventAction": "last changed",
      "eventDate": "2026-05-20T00:00:00Z"
    }
  ],
  "links": [
    {
      "value": "https://rdap.example.net/agent/agent%3Awarehouse.example.cn%3Aagv-001",
      "rel": "self",
      "href": "https://rdap.example.net/agent/agent%3Awarehouse.example.cn%3Aagv-001",
      "type": "application/rdap+json"
    }
  ]
}
]]></sourcecode>
    </section>

    <section numbered="true" toc="default">
      <name>Use with Agent Networking</name>
      <t>
        An agent networking implementation can use this RDAP profile to verify Agent-ID
        binding data before selecting an IPv6 locator, Agent Gateway, or
        network policy. For example, an Agent Gateway can query the Agent RDAP Object
        to determine whether it is authorized to represent a target Agent-ID.
        A controller can query the same object to select a locator or policy
        for a given communication, such as an SRv6 policy in a controlled
        domain.
      </t>
      <t>
        This RDAP profile is not a real-time reachability protocol. It provides
        registration data. Implementations that require live reachability,
        health, or load information should combine this profile with other
        mechanisms such as Agent registries, service discovery systems,
        controllers, telemetry, or application-layer health checks.
        Online/offline state, live load, health, capability ranking, and
        endpoint selection are out of scope for this profile.
      </t>
    </section>

    <section numbered="true" toc="default">
      <name>Conformance and Error Handling</name>
      <t>
        Servers implementing this profile MUST follow RDAP transport and
        response requirements. RDAP error responses, including status codes,
        notices, and remarks, are used as defined by RDAP.
      </t>
      <t>
        If the requested Agent identifier does not exist, the server SHOULD
        return an RDAP not-found response. If the Agent identifier exists but
        the client is not authorized to view the requested data, the server
        SHOULD return an appropriate authorization error or a redacted response
        according to local policy.
      </t>
      <t>
        A server MAY return different field sets to different clients based on
        authentication, authorization, local policy, and privacy requirements.
        Clients MUST NOT assume that absence of a field means absence of the
        corresponding registration data.
      </t>
    </section>

    <section numbered="true" toc="default">
      <name>Relationship to Audit and Accountability</name>
      <t>
        Agent identifier registration data can be useful to audit and
        accountability systems. For example, an audit record may contain an
        Agent identifier and later need to determine the responsible entity,
        lifecycle state, revocation state, authorized Agent Gateway, or
        associated IPv6 locator for that identifier.
      </t>
      <t>
        This profile can provide stable registration data that audit systems
        may reference. It does not define audit records, distributed audit log
        formats, audit context propagation, attestation evidence, transparency
        logs, or non-repudiation mechanisms.
      </t>
    </section>

    <section numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>
        Agent registration data can influence routing, gateway selection,
        access control, and policy enforcement. Servers providing Agent RDAP
        Objects MUST authenticate update operations and MUST ensure that an
        Agent identifier cannot be bound to an unauthorized IPv6 locator or
        Agent Gateway.
      </t>
      <t>
        RDAP clients MUST use HTTPS as specified by RDAP over HTTP. Clients
        MUST validate the server identity according to the applicable TLS
        validation rules.
      </t>
      <t>
        Agent Gateway authorization data is security-sensitive. A gateway MUST
        NOT be treated as authorized to represent an Agent identifier solely
        because it appears in an unauthenticated or stale response.
        Implementations SHOULD check validity periods, revocation status, and
        policy references before relying on gateway binding information.
      </t>
      <t>
        Replay and stale-data attacks are possible if old registration data is
        accepted after a binding has changed or been revoked. Servers SHOULD
        include update events and validity intervals. Clients SHOULD apply
        local freshness policies and re-query when cached data is stale.
      </t>
      <t>
        This profile does not define how Agent identifiers are created,
        delegated, or cryptographically controlled. Deployments MUST define
        the authority model used to issue and manage Agent identifiers.
      </t>
    </section>

    <section numbered="true" toc="default">
      <name>Privacy Considerations</name>
      <t>
        Agent RDAP Objects may reveal information about organizations,
        internal deployments, gateways, network locations, operational regions,
        policy names, and relationships between domains. Servers SHOULD
        minimize disclosed data and apply access control where appropriate.
      </t>
      <t>
        Some Agent identifiers may be pseudonymous or scoped to a domain.
        Servers SHOULD avoid exposing unnecessary personally identifiable
        information, user data, prompts, task descriptions, or sensitive
        application payload information in Agent RDAP Objects.
      </t>
      <t>
        Public RDAP responses and authenticated RDAP responses may have
        different disclosure levels. Deployments SHOULD define which fields are
        public and which require authorization.
      </t>
    </section>

    <section anchor="iana" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <t>
        This initial version does not request any IANA action.
      </t>
      <t>
        Future versions may request registration of an RDAP extension
        identifier if this approach receives community interest.
      </t>
    </section>
  </middle>

  <back>
    <references>
      <name>Normative References</name>
      &RFC2119;
      &RFC8174;
      &RFC7480;
      &RFC9082;
      &RFC9083;
    </references>
    <references>
      <name>Informative References</name>
      &RFC7482;
      &RFC7483;
      <reference anchor="I-D.yu-ai-agent-ipv6-networking-considerations" target="https://datatracker.ietf.org/doc/draft-yu-ai-agent-ipv6-networking-considerations/">
        <front>
          <title>IPv6 Networking Considerations for AI Agent Communication</title>
          <author fullname="Haisheng Yu"/>
          <date/>
        </front>
      </reference>
    </references>
  </back>
</rfc>

