<?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.31 (Ruby 4.0.1) -->


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

]>

<?rfc compact="yes"?>

<rfc ipr="trust200902" docName="draft-nederveld-adl-02" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="ADL">Agent Definition Language (ADL)</title>

    <author initials="T." surname="Nederveld" fullname="Terrill Nederveld">
      <organization>Ironstead Group, LLC.</organization>
      <address>
        <email>terry+adl@ironsteadgroup.com</email>
      </address>
    </author>

    <date year="2026" month="March" day="18"/>

    <area>art</area>
    <workgroup>Individual Submission</workgroup>
    <keyword>AI agent</keyword> <keyword>agent description</keyword> <keyword>interoperability</keyword> <keyword>JSON</keyword>

    <abstract>


<?line 98?>

<t>The Agent Definition Language (ADL) provides a standard JSON-based format
for describing AI agents. An ADL document declares an agent's identity,
capabilities, tools, permissions, security requirements, data
classification, and runtime configuration in a single, machine-readable
artifact. ADL enables discovery, interoperability, deployment, and
lifecycle management of AI agents across diverse platforms and runtimes.
This document defines the structure of ADL documents, the semantics of
their members, conformance requirements for implementations, and the
registration of the application/adl+json media type.</t>



    </abstract>



  </front>

  <middle>


<?line 110?>

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

<section anchor="purpose"><name>Purpose</name>

<t>The Agent Definition Language (ADL) provides a standard format for describing AI agents. ADL documents are JSON objects that describe an agent's identity, capabilities, tools, permissions, and runtime requirements. This specification describes the structure of ADL documents, the semantics of their members, and conformance requirements for implementations.</t>

<t>ADL serves a similar role for AI agents that OpenAPI serves for REST APIs, AsyncAPI for event-driven architectures, and WSDL for web services. It enables:</t>

<t><list style="symbols">
  <t><strong>Discovery:</strong> Agents can be found and understood programmatically.</t>
  <t><strong>Interoperability:</strong> Agents can interact with tools, resources, and other agents using a common description format.</t>
  <t><strong>Deployment:</strong> Runtime environments can provision and configure agents based on declared requirements.</t>
  <t><strong>Security:</strong> Permission boundaries and security requirements are explicitly declared and enforceable.</t>
  <t><strong>Lifecycle:</strong> Agents can be versioned, tracked through operational states, and managed across their entire lifecycle from draft to retirement.</t>
</list></t>

</section>
<section anchor="goals"><name>Goals</name>

<t><list style="symbols">
  <t><strong>Portable:</strong> ADL documents describe agents independent of any specific runtime, platform, or provider.</t>
  <t><strong>Interoperable:</strong> ADL documents can be transformed into other formats (A2A Agent Cards, MCP configurations) and consumed by diverse tooling.</t>
  <t><strong>Extensible:</strong> ADL supports profiles that add domain-specific requirements without changing the core specification.</t>
  <t><strong>Secure:</strong> Permission boundaries, authentication, and security constraints are first-class concepts.</t>
  <t><strong>Machine-readable:</strong> ADL documents are validated against JSON Schema and can be processed programmatically.</t>
  <t><strong>Human-friendly:</strong> Clear naming conventions and structures that are easy to read and author.</t>
</list></t>

</section>
<section anchor="design-model"><name>Design Model</name>

<t>An ADL document functions as a <strong>passport</strong> for an AI agent. It carries the declarations that a counterparty  --  peer agent, gateway, orchestrator, registry, or human operator  --  needs to make a trust decision: identity, capabilities, permissions, security posture, and governance signals.</t>

<t>The passport model establishes two principles:</t>

<t><list style="numbers" type="1">
  <t><strong>Self-contained trust signals.</strong> An ADL document <strong>MUST</strong> contain enough information for a counterparty to evaluate whether to interact with the agent, without requiring access to external systems.</t>
  <t><strong>Separation of declaration from operations.</strong> Operational detail that changes independently of the agent's declared behavior  --  escalation contacts, audit schedules, evaluation reports, deployment logs  --  belongs in external records (e.g., a governance record in a registry), not in the passport. Profiles <strong>MAY</strong> define linking members (e.g., <spanx style="verb">governance_record_ref</spanx>) that reference such records by stable URI.</t>
</list></t>

<t>This separation ensures that:
- The passport remains compact for agent-to-agent and agent-to-gateway interactions.
- Operational changes (personnel rotation, policy updates) do not require re-issuing the passport.
- Internal operational detail is not exposed to external counterparties.</t>

</section>
<section anchor="relationship-to-other-specifications"><name>Relationship to Other Specifications</name>

<t>ADL builds upon and interoperates with:</t>

<t><list style="symbols">
  <t>**JSON <xref target="RFC8259"/>  --  ADL documents are valid JSON.</t>
  <t><strong>JSON Schema</strong> <xref target="JSON-SCHEMA"/>  --  ADL documents are validated against JSON Schema; tool parameters use JSON Schema for types.</t>
  <t><strong>A2A Protocol</strong> <xref target="A2A"/>  --  ADL documents can generate A2A Agent Cards.</t>
  <t><strong>Model Context Protocol (MCP)</strong> <xref target="MCP"/>  --  ADL documents can generate MCP server configurations; tools, resources, and prompts align with MCP primitives.</t>
  <t><strong>OpenAPI</strong> <xref target="OPENAPI"/>  --  ADL can reference OpenAPI specifications for HTTP-based tools.</t>
  <t><strong>W3C DIDs</strong> <xref target="W3C.DID"/> / <strong>Verifiable Credentials</strong> <xref target="W3C.VC"/>  --  ADL supports DIDs for cryptographic identity and VCs for attestations.</t>
</list></t>

</section>
</section>
<section anchor="requirements-language"><name>Requirements Language</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 anchor="terminology"><name>Terminology</name>

<t>The terms "AI agent", "AI system", "autonomy", and "automation" are used in this document consistent with their definitions in <xref target="ISO-22989"/>. Where this specification narrows an ISO/IEC 22989 term, the narrower definition below takes precedence.</t>

<texttable>
      <ttcol align='left'>Term</ttcol>
      <ttcol align='left'>Definition</ttcol>
      <c><strong>ADL document</strong></c>
      <c>A JSON object that conforms to this specification.</c>
      <c><strong>agent</strong></c>
      <c>An AI agent <xref target="ISO-22989"/> further scoped as an AI system <xref target="ISO-22989"/> that operates within boundaries declared by an ADL document. An agent senses and responds to its environment and takes actions to achieve its goals, subject to the permissions and constraints expressed in its ADL document.</c>
      <c><strong>AI system</strong></c>
      <c>An engineered system that generates outputs such as content, forecasts, recommendations, or decisions for a given set of human-defined objectives <xref target="ISO-22989"/>.</c>
      <c><strong>model</strong></c>
      <c>The AI model (e.g., large language model) that powers an agent's reasoning. In <xref target="ISO-22989"/> terms, a model is the learned computational artifact within an AI system.</c>
      <c><strong>tool</strong></c>
      <c>A function or capability that an agent can invoke to perform an action or retrieve information (equivalent to "function" in function-calling and "tool" in <xref target="MCP"/>).</c>
      <c><strong>resource</strong></c>
      <c>A data source that an agent can read from (e.g., vector store, knowledge base, file system).</c>
      <c><strong>prompt</strong></c>
      <c>A predefined prompt template that an agent can use.</c>
      <c><strong>profile</strong></c>
      <c>A set of additional requirements and members that extend the core ADL specification for specific domains.</c>
      <c><strong>permission domain</strong></c>
      <c>A category of system access (network, filesystem, etc.) that defines operational boundaries for an agent.</c>
      <c><strong>runtime</strong></c>
      <c>The system or environment that executes an agent based on its ADL definition.</c>
      <c><strong>autonomy</strong></c>
      <c>The characteristic of a system that is capable of modifying its intended domain of use or goal without external intervention, control, or oversight <xref target="ISO-22989"/>. ADL expresses the degree of permitted autonomy through the <spanx style="verb">autonomy</spanx> member and governance profile tiers.</c>
</texttable>

</section>
<section anchor="document-structure"><name>Document Structure</name>

<section anchor="media-type"><name>Media Type</name>

<t><list style="symbols">
  <t>ADL documents use the media type <strong><spanx style="verb">application/adl+json</spanx></strong>.</t>
  <t>ADL documents <strong>MUST</strong> be encoded in UTF-8.</t>
  <t>ADL documents <strong>MUST</strong> be valid JSON <xref target="RFC8259"/>.</t>
  <t>Member names <strong>MUST</strong> use <strong>snake_case</strong> (lowercase with underscores).</t>
  <t>All timestamps <strong>MUST</strong> be ISO 8601 strings with timezone (e.g., <spanx style="verb">"2026-02-15T14:30:00Z"</spanx>).</t>
  <t>All URIs <strong>MUST</strong> conform to <xref target="RFC3986"/>.</t>
  <t><strong>YAML authoring and JSON canonical form:</strong> YAML is an authoring convenience; JSON is the canonical wire format. When an ADL document is authored in YAML, implementations <strong>MUST</strong> convert it to JSON for processing and validation. The media type <spanx style="verb">application/adl+json</spanx> applies to the JSON canonical form.</t>
</list></t>

</section>
<section anchor="top-level-object"><name>Top-Level Object</name>

<t>An ADL document <strong>MUST</strong> be a single JSON object.</t>

<t><strong>Required members:</strong></t>

<t><list style="symbols">
  <t><spanx style="verb">adl_spec</spanx> (Section 5.1)</t>
  <t><spanx style="verb">name</spanx> (Section 5.3)</t>
  <t><spanx style="verb">description</spanx> (Section 5.4)</t>
  <t><spanx style="verb">version</spanx> (Section 5.5)</t>
  <t><spanx style="verb">data_classification</spanx> (Section 10.4)</t>
</list></t>

<t><strong>Optional members:</strong></t>

<t><list style="symbols">
  <t><spanx style="verb">$schema</spanx>, <spanx style="verb">id</spanx>, <spanx style="verb">provider</spanx>, <spanx style="verb">cryptographic_identity</spanx>, <spanx style="verb">lifecycle</spanx>, <spanx style="verb">model</spanx>, <spanx style="verb">system_prompt</spanx>, <spanx style="verb">tools</spanx>, <spanx style="verb">resources</spanx>, <spanx style="verb">prompts</spanx>, <spanx style="verb">permissions</spanx>, <spanx style="verb">security</spanx>, <spanx style="verb">runtime</spanx>, <spanx style="verb">metadata</spanx>, <spanx style="verb">profiles</spanx></t>
</list></t>

<t>An ADL document <strong>MUST NOT</strong> contain members not defined by this specification, a declared profile, or the extension mechanism.</t>

</section>
<section anchor="extension-mechanism"><name>Extension Mechanism</name>

<t><list style="symbols">
  <t><strong>Profiles:</strong> Add domain-specific requirements and members; declared in <spanx style="verb">profiles</spanx>. See Section 13.</t>
  <t><strong>Extensions object:</strong> Custom vendor data without a full profile. An <spanx style="verb">extensions</spanx> member <strong>MAY</strong> appear at any object level within an ADL document. Within <spanx style="verb">extensions</spanx>, vendor data is grouped under reverse-domain namespace keys.</t>
</list></t>

<t>Vendor namespace keys <strong>MUST</strong> use reverse-domain notation with at least two dot-separated segments (e.g., <spanx style="verb">com.acme</spanx>, <spanx style="verb">io.anthropic</spanx>, <spanx style="verb">org.example.research</spanx>). Keys <strong>MUST</strong> conform to the <spanx style="verb">vendor-key</spanx> production in Appendix D. Single-segment keys (e.g., <spanx style="verb">acme</spanx>) and uppercase keys (e.g., <spanx style="verb">COM.ACME</spanx>) are invalid.</t>

<t>Implementations <strong>MUST</strong> preserve <spanx style="verb">extensions</spanx> members when round-tripping ADL documents. Implementations <strong>MAY</strong> ignore the contents of <spanx style="verb">extensions</spanx>. Implementations <strong>MUST NOT</strong> reject documents containing <spanx style="verb">extensions</spanx> with unknown vendor namespaces.</t>

<t>The member name <spanx style="verb">extensions</spanx> is reserved at every object level in an ADL document. Implementations <strong>MUST NOT</strong> define non-extension semantics for the <spanx style="verb">extensions</spanx> member.</t>

<t>Example:</t>

<t><spanx style="verb">json
{
  "adl_spec": "0.2.0",
  "name": "Invoice Processor",
  "version": "2.0.0",
  "description": "Processes and routes invoices.",
  "data_classification": {
    "sensitivity": "confidential",
    "extensions": {
      "com.acme": {
        "data_tier": "gold",
        "retention_override_approved": true
      }
    }
  },
  "model": {
    "name": "acme-large-2024",
    "extensions": {
      "com.acme": {
        "model_tier": "premium",
        "cost_per_1k_tokens": 0.03
      }
    }
  },
  "extensions": {
    "com.acme": {
      "internal_id": "inv-proc-007",
      "cost_center": "engineering"
    }
  }
}
</spanx></t>

</section>
<section anchor="pattern-matching"><name>Pattern Matching</name>

<t>Several ADL members use patterns to specify allowed or denied values. ADL defines a minimal pattern syntax based on a subset of glob matching rules. The following constructs are supported:</t>

<t><list style="numbers" type="1">
  <t><strong>Literal match.</strong> A string with no wildcard characters matches only itself. Matching is case-sensitive unless the underlying system is case-insensitive (e.g., Windows filesystem paths).</t>
  <t><strong>Single-segment wildcard (<spanx style="verb">*</spanx>).</strong> The <spanx style="verb">*</spanx> character matches zero or more characters within a single segment. The segment boundary depends on context:
  <list style="symbols">
      <t><strong>Host patterns</strong> (Section 9.2): segments are separated by <spanx style="verb">.</spanx> (dot). <spanx style="verb">*</spanx> does not match dots. <spanx style="verb">*.example.com</spanx> matches <spanx style="verb">api.example.com</spanx> but does not match <spanx style="verb">deep.sub.example.com</spanx>.</t>
      <t><strong>Environment variable patterns</strong> (Section 9.4): <spanx style="verb">*</spanx> matches any characters in the variable name. <spanx style="verb">APP_*</spanx> matches <spanx style="verb">APP_PORT</spanx> and <spanx style="verb">APP_HOST</spanx>.</t>
      <t><strong>Command patterns</strong> (Section 9.5): <spanx style="verb">*</spanx> matches any characters in the command name.</t>
    </list></t>
  <t><strong>Multi-segment wildcard (<spanx style="verb">**</spanx>).</strong> The <spanx style="verb">**</spanx> sequence matches zero or more path segments including separators. Valid only in filesystem path patterns (Section 9.3). <spanx style="verb">/data/**</spanx> matches <spanx style="verb">/data/</spanx>, <spanx style="verb">/data/foo</spanx>, and <spanx style="verb">/data/foo/bar/baz</spanx>. <spanx style="verb">**</spanx> <strong>MUST NOT</strong> appear in host patterns, environment variable patterns, or command patterns.</t>
  <t><strong>Restrictions.</strong> Patterns <strong>MUST</strong> contain wildcards only in the positions described above. Mid-string wildcards (e.g., <spanx style="verb">foo*bar</spanx>) are <strong>NOT RECOMMENDED</strong>; implementations <strong>MAY</strong> reject them. A bare <spanx style="verb">*</spanx> as an entire pattern (matching everything) is valid but <strong>NOT RECOMMENDED</strong> for security-sensitive domains (<spanx style="verb">allowed_hosts</spanx>, <spanx style="verb">allowed_variables</spanx>). Implementations <strong>SHOULD</strong> warn when a bare <spanx style="verb">*</spanx> wildcard is used in permission patterns.</t>
</list></t>

<t>Implementations <strong>MUST</strong> apply patterns using the rules defined in this section. Implementations <strong>MUST NOT</strong> interpret patterns as regular expressions. Formal grammar productions for pattern elements are defined in Appendix D.</t>

</section>
</section>
<section anchor="core-members"><name>Core Members</name>

<section anchor="adl-specification"><name>ADL Specification</name>

<t>Specifies the ADL specification version the document conforms to.</t>

<t><list style="symbols">
  <t><strong>REQUIRED.</strong> Value <strong>MUST</strong> be a string in semantic versioning format (MAJOR.MINOR.PATCH). The format <strong>MUST</strong> conform to the <spanx style="verb">semver</spanx> production in Appendix D.</t>
  <t>Implementations <strong>MUST</strong> reject documents with an unsupported <spanx style="verb">adl_spec</spanx> version.</t>
  <t>Implementations <strong>SHOULD</strong> support documents with the same MAJOR version and lower or equal MINOR version.</t>
  <t>Pre-release suffixes (e.g., <spanx style="verb">"0.2.0-draft"</spanx>) <strong>MUST NOT</strong> appear in <spanx style="verb">adl_spec</spanx> values. Only release versions are valid for conformance. Pre-release identifiers <strong>MAY</strong> appear in the agent's own <spanx style="verb">version</spanx> member (Section 5.5).</t>
</list></t>

<t>Example: <spanx style="verb">"adl_spec": "0.2.0"</spanx></t>

</section>
<section anchor="schema"><name>$schema</name>

<t>Optional. URI reference to the JSON Schema for validation. <strong>RECOMMENDED</strong> for JSON documents (enables IDE validation). Canonical schema URI for ADL 0.2: <spanx style="verb">https://adl-spec.org/0.2/schema.json</spanx>.</t>

</section>
<section anchor="name"><name>Name</name>

<t>Human-readable name for the agent. <strong>REQUIRED.</strong> Value <strong>MUST</strong> be a non-empty string. For machine identifiers, use <spanx style="verb">id</spanx> (Section 6.1).</t>

</section>
<section anchor="description"><name>Description</name>

<t>Human-readable description of the agent's purpose and capabilities. <strong>REQUIRED.</strong> Value <strong>MUST</strong> be a non-empty string. <strong>SHOULD</strong> be sufficient for users to understand what the agent does without examining tool definitions.</t>

</section>
<section anchor="version"><name>Version</name>

<t>Agent's version. <strong>REQUIRED.</strong> Value <strong>MUST</strong> be a string in semantic versioning format (MAJOR.MINOR.PATCH); the format <strong>MUST</strong> conform to the <spanx style="verb">semver</spanx> production in Appendix D. Agent version changes <strong>SHOULD</strong> follow SemVer (MAJOR: breaking; MINOR: new capabilities; PATCH: fixes, docs).</t>

</section>
<section anchor="lifecycle"><name>Lifecycle</name>

<t>Operational lifecycle status of the agent. <strong>OPTIONAL.</strong> When present, value <strong>MUST</strong> be an object containing at minimum a <spanx style="verb">status</spanx> member.</t>

<texttable>
      <ttcol align='left'>Member</ttcol>
      <ttcol align='left'>Type</ttcol>
      <ttcol align='left'>Required</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c>status</c>
      <c>string</c>
      <c>REQUIRED</c>
      <c>Lifecycle state of the agent</c>
      <c>effective_date</c>
      <c>string</c>
      <c>OPTIONAL</c>
      <c>ISO 8601 timestamp when current status took effect</c>
      <c>sunset_date</c>
      <c>string</c>
      <c>OPTIONAL</c>
      <c>ISO 8601 timestamp for planned or actual retirement</c>
      <c>successor</c>
      <c>string</c>
      <c>OPTIONAL</c>
      <c>URI or URN of the replacement agent</c>
</texttable>

<section anchor="status"><name>status</name>

<t><strong>REQUIRED</strong> when <spanx style="verb">lifecycle</spanx> is present. Value <strong>MUST</strong> be one of:</t>

<texttable>
      <ttcol align='left'>Status</ttcol>
      <ttcol align='left'>Meaning</ttcol>
      <c><spanx style="verb">draft</spanx></c>
      <c>Under development; not ready for production use</c>
      <c><spanx style="verb">active</spanx></c>
      <c>Operational and available for use</c>
      <c><spanx style="verb">deprecated</spanx></c>
      <c>Superseded; discouraged for new use; may be removed</c>
      <c><spanx style="verb">retired</spanx></c>
      <c>End-of-life; no longer operational</c>
</texttable>

<t>When <spanx style="verb">lifecycle</spanx> is omitted, no lifecycle assertion is made. Implementations <strong>MUST NOT</strong> assume a default status.</t>

<t>Runtimes <strong>SHOULD</strong> check <spanx style="verb">lifecycle.status</spanx> before provisioning agents. Runtimes <strong>SHOULD NOT</strong> provision agents with status <spanx style="verb">draft</spanx> in production environments. Runtimes <strong>SHOULD</strong> warn users when provisioning agents with status <spanx style="verb">deprecated</spanx>. Runtimes <strong>MUST NOT</strong> provision or execute agents with status <spanx style="verb">retired</spanx>.</t>

<ul empty="true"><li>
  <t><strong>Note:</strong> "Provision" and "execute" refer to instantiating an agent for operation. Reading, parsing, validating, analyzing, or migrating from an agent definition is unrestricted regardless of lifecycle status.</t>
</li></ul>

</section>
<section anchor="effectivedate"><name>effective_date</name>

<t>When present, value <strong>MUST</strong> be a valid ISO 8601 string with timezone. Indicates when the current <spanx style="verb">status</spanx> took effect.</t>

</section>
<section anchor="sunsetdate"><name>sunset_date</name>

<t>When present, value <strong>MUST</strong> be a valid ISO 8601 string with timezone. Indicates when the agent will be or was retired. Implementations <strong>SHOULD</strong> warn when <spanx style="verb">sunset_date</spanx> is in the future and within 30 days. When <spanx style="verb">sunset_date</spanx> is in the past and <spanx style="verb">status</spanx> is <spanx style="verb">deprecated</spanx>, runtimes <strong>SHOULD</strong> treat the agent as <spanx style="verb">retired</spanx>.</t>

</section>
<section anchor="successor"><name>successor</name>

<t>When present, value <strong>MUST</strong> be a string; <strong>SHOULD</strong> be a URI or URN identifying the replacement agent (see Section 6.1 for identifier formats). <strong>SHOULD</strong> be present when <spanx style="verb">status</spanx> is <spanx style="verb">deprecated</spanx> or <spanx style="verb">retired</spanx>. Implementations <strong>SHOULD</strong> warn if <spanx style="verb">successor</spanx> is present when <spanx style="verb">status</spanx> is <spanx style="verb">active</spanx> or <spanx style="verb">draft</spanx>.</t>

<t>Example:</t>

<t><spanx style="verb">json
{
  "lifecycle": {
    "status": "deprecated",
    "effective_date": "2026-01-15T00:00:00Z",
    "sunset_date": "2026-08-01T00:00:00Z",
    "successor": "https://acme.example.com/agents/research-assistant"
  }
}
</spanx></t>

</section>
</section>
</section>
<section anchor="agent-identity"><name>Agent Identity</name>

<section anchor="id"><name>Id</name>

<t>Unique identifier for the agent. <strong>OPTIONAL.</strong> When present, value <strong>MUST</strong> be a string and <strong>MUST</strong> be a valid URI <xref target="RFC3986"/> or URN <xref target="RFC8141"/>.</t>

<t>Identifier formats, in order of preference:</t>

<t><list style="numbers" type="1">
  <t><strong>HTTPS URI (RECOMMENDED):</strong> <spanx style="verb">https://{domain}/agents/{name}</spanx>  --  Provides ownership verification via TLS, direct resolution to the agent's ADL document, and natural integration with <spanx style="verb">.well-known</spanx> discovery (Section 6.4). The domain authority <strong>SHOULD</strong> serve the ADL document at the identifier URL with media type <spanx style="verb">application/adl+json</spanx>.</t>
  <t><strong>Decentralized Identifier:</strong> <spanx style="verb">did:web:{domain}:agents:{name}</spanx>  --  Provides cryptographic identity binding via the DID Document. Resolution follows the <spanx style="verb">did:web</spanx> method specification <xref target="W3C.DID"/>. <strong>RECOMMENDED</strong> when cryptographic verification of agent identity is required independent of transport.</t>
  <t><strong>URN (offline/catalog use):</strong> <spanx style="verb">urn:adl:{namespace}:{name}:{version}</spanx>  --  Location-independent identifier suitable for air-gapped environments, offline catalogs, and internal registries where network resolution is unavailable. URN identifiers provide naming only; they do not support ownership verification or discovery without an external resolver.</t>
</list></t>

<t>When an agent has both a resolvable identifier (HTTPS URI or DID) and a URN, the resolvable identifier <strong>SHOULD</strong> be used as the primary <spanx style="verb">id</spanx> value. The URN <strong>MAY</strong> be recorded in <spanx style="verb">metadata</spanx> for catalog interoperability.</t>

<ul empty="true"><li>
  <t><strong>Note:</strong> The <spanx style="verb">urn:adl:</spanx> namespace identifier is used as a convention in this specification but is not yet a registered URN namespace per <xref target="RFC8141"/>. Formal registration with IANA will be pursued in a future revision. Implementations <strong>SHOULD NOT</strong> assume that <spanx style="verb">urn:adl:</spanx> URNs are globally resolvable.</t>
</li></ul>

</section>
<section anchor="provider"><name>Provider</name>

<t>Identifies the organization or entity that provides the agent. <strong>OPTIONAL.</strong> When present, value <strong>MUST</strong> be an object:</t>

<texttable>
      <ttcol align='left'>Member</ttcol>
      <ttcol align='left'>Type</ttcol>
      <ttcol align='left'>Required</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c>name</c>
      <c>string</c>
      <c>REQUIRED</c>
      <c>Provider name</c>
      <c>url</c>
      <c>string</c>
      <c>OPTIONAL</c>
      <c>Provider website</c>
      <c>contact</c>
      <c>string</c>
      <c>OPTIONAL</c>
      <c>Contact email</c>
</texttable>

</section>
<section anchor="cryptographic-identity"><name>Cryptographic Identity</name>

<t>Cryptographic identification for the agent. <strong>OPTIONAL.</strong> When present, value <strong>MUST</strong> be an object:</t>

<texttable>
      <ttcol align='left'>Member</ttcol>
      <ttcol align='left'>Type</ttcol>
      <ttcol align='left'>Required</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c>did</c>
      <c>string</c>
      <c>OPTIONAL</c>
      <c>Decentralized Identifier <xref target="W3C.DID"/></c>
      <c>public_key</c>
      <c>object</c>
      <c>OPTIONAL</c>
      <c>Public key for signature verification</c>
</texttable>

<t>At least one of <spanx style="verb">did</spanx> or <spanx style="verb">public_key</spanx> <strong>SHOULD</strong> be present. The <spanx style="verb">public_key</spanx> object, when present, <strong>MUST</strong> contain <spanx style="verb">algorithm</spanx> (string, REQUIRED) and <spanx style="verb">value</spanx> (string, Base64-encoded, REQUIRED). Implementations <strong>SHOULD</strong> reject weak algorithms (e.g., RSA below 2048 bits, DSA, ECDSA below P-256). EdDSA (Ed25519, Ed448) is <strong>RECOMMENDED</strong>.</t>

<t>Example (agent identity with DID and public key):</t>

<t><spanx style="verb">json
{
  "id": "https://acme.example.com/agents/invoice-processor",
  "provider": {
    "name": "Acme Corp",
    "url": "https://acme.example.com",
    "contact": "ai-platform@acme.example.com"
  },
  "cryptographic_identity": {
    "did": "did:web:acme.example.com:agents:invoice-processor",
    "public_key": {
      "algorithm": "Ed25519",
      "value": "MCowBQYDK2VwAyEAGb9ECWmEzf6FQbrBZ9w7lshQhqowtrbLDFw4rXAxZuE="
    }
  }
}
</spanx></t>

</section>
<section anchor="discovery"><name>Discovery</name>

<t>Agent discovery enables clients to locate agents published by a domain without prior knowledge of individual agent identifiers. Domains hosting ADL agents <strong>MAY</strong> publish a discovery document at the well-known URI <xref target="RFC8615"/>:</t>

<t><spanx style="verb">
https://{domain}/.well-known/adl-agents
</spanx></t>

<t>The discovery document, when present, <strong>MUST</strong> be a JSON object served with media type <spanx style="verb">application/json</spanx> and <strong>MUST</strong> contain an <spanx style="verb">agents</spanx> array. Each entry in the array <strong>MUST</strong> be an object with at least <spanx style="verb">id</spanx> (string, the agent's identifier per Section 6.1) and <spanx style="verb">adl_document</spanx> (string, URL to the full ADL document). Entries <strong>MAY</strong> include <spanx style="verb">name</spanx>, <spanx style="verb">version</spanx>, <spanx style="verb">description</spanx>, and <spanx style="verb">status</spanx>.</t>

<t>Example discovery document:</t>

<t><spanx style="verb">json
{
  "adl_discovery": "1.0",
  "agents": [
    {
      "id": "https://acme.example.com/agents/invoice-processor",
      "adl_document": "https://acme.example.com/agents/invoice-processor/adl.json",
      "name": "Invoice Processor",
      "version": "2.0.0",
      "status": "active"
    },
    {
      "id": "https://acme.example.com/agents/research-assistant",
      "adl_document": "https://acme.example.com/agents/research-assistant/adl.json",
      "name": "Research Assistant",
      "version": "2.1.0",
      "status": "active"
    }
  ]
}
</spanx></t>

<t>Clients performing discovery <strong>MUST</strong> fetch the discovery document over HTTPS. Clients <strong>SHOULD</strong> validate the TLS certificate chain. The discovery document <strong>SHOULD</strong> be cacheable; servers <strong>SHOULD</strong> set appropriate <spanx style="verb">Cache-Control</spanx> headers.</t>

<ul empty="true"><li>
  <t><strong>Note:</strong> Registration of <spanx style="verb">.well-known/adl-agents</spanx> with IANA per <xref target="RFC8615"/> will be pursued alongside the IETF Internet-Draft submission.</t>
</li></ul>

</section>
</section>
<section anchor="model-configuration"><name>Model Configuration</name>

<section anchor="model"><name>Model</name>

<t>AI model configuration. <strong>OPTIONAL.</strong> When omitted, the runtime determines the model. When present, value <strong>MUST</strong> be an object:</t>

<texttable>
      <ttcol align='left'>Member</ttcol>
      <ttcol align='left'>Type</ttcol>
      <ttcol align='left'>Required</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c>provider</c>
      <c>string</c>
      <c>OPTIONAL</c>
      <c>Model provider identifier</c>
      <c>name</c>
      <c>string</c>
      <c>OPTIONAL</c>
      <c>Model identifier</c>
      <c>version</c>
      <c>string</c>
      <c>OPTIONAL</c>
      <c>Model version</c>
      <c>context_window</c>
      <c>number</c>
      <c>OPTIONAL</c>
      <c>Max context window (tokens)</c>
      <c>temperature</c>
      <c>number</c>
      <c>OPTIONAL</c>
      <c>Sampling temperature (0.0-2.0)</c>
      <c>max_tokens</c>
      <c>number</c>
      <c>OPTIONAL</c>
      <c>Max output tokens</c>
      <c>capabilities</c>
      <c>array</c>
      <c>OPTIONAL</c>
      <c>Required model capabilities</c>
</texttable>

<t><spanx style="verb">capabilities</spanx> values may include: <spanx style="verb">function_calling</spanx>, <spanx style="verb">vision</spanx>, <spanx style="verb">code_execution</spanx>, <spanx style="verb">streaming</spanx>.</t>

</section>
<section anchor="system-prompt"><name>System Prompt</name>

<t>System prompt for the agent. <strong>OPTIONAL.</strong> Value <strong>MUST</strong> be a string or an object. When an object, it <strong>MUST</strong> contain <spanx style="verb">template</spanx> (string, REQUIRED) and <strong>MAY</strong> contain <spanx style="verb">variables</spanx> (object).</t>

<section anchor="template-variable-syntax"><name>Template Variable Syntax</name>

<t>Variables in templates use the <spanx style="verb">{{variable_name}}</spanx> syntax and <strong>MUST</strong> conform to the <spanx style="verb">template-var</spanx> production in Appendix D. Variable names <strong>MUST</strong> begin with a letter (<spanx style="verb">A</spanx>-<spanx style="verb">Z</spanx> or <spanx style="verb">a</spanx>-<spanx style="verb">z</spanx>) and <strong>MAY</strong> contain letters, digits, and underscores.</t>

<t><strong>Escaping:</strong> To include a literal <spanx style="verb">{{</spanx> in template text without triggering variable substitution, implementations <strong>MUST</strong> support the escape sequence <spanx style="verb">\{{</spanx>. A <spanx style="verb">\{{</spanx> in the template string is rendered as <spanx style="verb">{{</spanx> and is not treated as a variable reference.</t>

<t><strong>Undefined variables:</strong> When a template references a variable name not present in <spanx style="verb">variables</spanx>, the implementation <strong>MUST</strong> treat this as an error (error code ADL-1006) and <strong>MUST NOT</strong> silently substitute an empty string. Implementations <strong>SHOULD</strong> include the undefined variable name in the error detail.</t>

<t>Example:</t>

<t><spanx style="verb">json
{
  "model": {
    "provider": "acme-ai",
    "name": "acme-large-2024",
    "context_window": 200000,
    "temperature": 0.7,
    "max_tokens": 4096,
    "capabilities": ["function_calling", "vision"]
  },
  "system_prompt": {
    "template": "You are a helpful assistant for {{company_name}}. Today is {{current_date}}.",
    "variables": {
      "company_name": "Acme Corp",
      "current_date": "2026-02-18"
    }
  }
}
</spanx></t>

</section>
</section>
</section>
<section anchor="capabilities"><name>Capabilities</name>

<section anchor="tools"><name>Tools</name>

<t>Array of tool objects (functions the agent can invoke). <strong>OPTIONAL.</strong> Each tool <strong>MUST</strong> contain <spanx style="verb">name</spanx> (string, REQUIRED) and <spanx style="verb">description</spanx> (string, REQUIRED). Each tool <strong>MAY</strong> contain: <spanx style="verb">parameters</spanx> (JSON Schema), <spanx style="verb">returns</spanx> (JSON Schema), <spanx style="verb">examples</spanx>, <spanx style="verb">requires_confirmation</spanx> (bool), <spanx style="verb">idempotent</spanx> (bool), <spanx style="verb">read_only</spanx> (bool), <spanx style="verb">annotations</spanx>, <spanx style="verb">data_classification</spanx> (Section 10.4). Tool names <strong>MUST</strong> be unique, <strong>MUST</strong> match <spanx style="verb">^[a-z][a-z0-9_]*$</spanx>, and <strong>MUST</strong> conform to the <spanx style="verb">tool-name</spanx> production in Appendix D. The <spanx style="verb">parameters</spanx> and <spanx style="verb">returns</spanx> objects, when present, <strong>MUST</strong> be valid JSON Schema.</t>

<t>The <spanx style="verb">examples</spanx> member, when present, <strong>MUST</strong> be an array of example objects. Each example object <strong>MAY</strong> contain:</t>

<texttable>
      <ttcol align='left'>Member</ttcol>
      <ttcol align='left'>Type</ttcol>
      <ttcol align='left'>Required</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c>name</c>
      <c>string</c>
      <c>OPTIONAL</c>
      <c>Human-readable name for the example</c>
      <c>input</c>
      <c>object</c>
      <c>OPTIONAL</c>
      <c>Example input parameters</c>
      <c>output</c>
      <c>any</c>
      <c>OPTIONAL</c>
      <c>Expected output value</c>
</texttable>

<t>The <spanx style="verb">annotations</spanx> member, when present, <strong>MUST</strong> be an object containing implementation hints and metadata. Annotations is an open object  --  implementations <strong>MAY</strong> add custom keys. Standard annotation members include:</t>

<texttable>
      <ttcol align='left'>Member</ttcol>
      <ttcol align='left'>Type</ttcol>
      <ttcol align='left'>Required</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c>openapi_ref</c>
      <c>string</c>
      <c>OPTIONAL</c>
      <c>URI to an OpenAPI specification</c>
      <c>operation_id</c>
      <c>string</c>
      <c>OPTIONAL</c>
      <c>OpenAPI operation identifier</c>
</texttable>

<t>See Section 15.3 for OpenAPI integration details. Implementations <strong>MUST</strong> preserve all annotation members when processing, including unrecognized keys.</t>

<t>Example:</t>

<t><spanx style="verb">json
{
  "tools": [
    {
      "name": "search_invoices",
      "description": "Search for invoices by vendor name, date range, or amount.",
      "parameters": {
        "type": "object",
        "properties": {
          "vendor": { "type": "string", "description": "Vendor name to search" },
          "date_from": { "type": "string", "format": "date" },
          "date_to": { "type": "string", "format": "date" }
        },
        "required": []
      },
      "returns": {
        "type": "array",
        "items": { "type": "object" }
      },
      "examples": [
        {
          "name": "Search by vendor",
          "input": { "vendor": "Acme Supplies" },
          "output": [{ "id": "INV-001", "amount": 1500.00 }]
        }
      ],
      "idempotent": true,
      "read_only": true,
      "annotations": {
        "openapi_ref": "https://api.acme.example.com/openapi.json",
        "operation_id": "searchInvoices"
      },
      "data_classification": { "sensitivity": "confidential" }
    }
  ]
}
</spanx></t>

</section>
<section anchor="resources"><name>Resources</name>

<t>Array of resource objects (data sources the agent can access). <strong>OPTIONAL.</strong> Each resource <strong>MUST</strong> contain <spanx style="verb">name</spanx> (string, REQUIRED) and <spanx style="verb">type</spanx> (string, REQUIRED). <spanx style="verb">type</spanx> <strong>MUST</strong> be one of: <spanx style="verb">vector_store</spanx>, <spanx style="verb">knowledge_base</spanx>, <spanx style="verb">file</spanx>, <spanx style="verb">api</spanx>, <spanx style="verb">database</spanx>. Each resource <strong>MAY</strong> contain: <spanx style="verb">description</spanx>, <spanx style="verb">uri</spanx>, <spanx style="verb">mime_types</spanx>, <spanx style="verb">schema</spanx>, <spanx style="verb">annotations</spanx>, <spanx style="verb">data_classification</spanx> (Section 10.4). Resource names <strong>MUST</strong> be unique.</t>

<t>The <spanx style="verb">mime_types</spanx> member, when present, <strong>MUST</strong> be an array of strings. Each value <strong>MUST</strong> be a valid MIME type (e.g., <spanx style="verb">"application/json"</spanx>, <spanx style="verb">"text/plain"</spanx>).</t>

<t>The <spanx style="verb">schema</spanx> member, when present, <strong>MUST</strong> be a valid JSON Schema describing the structure of the resource's data.</t>

<t>The <spanx style="verb">annotations</spanx> member, when present, <strong>MUST</strong> be an object. Same semantics as <spanx style="verb">tool.annotations</spanx>  --  an open object for implementation hints that <strong>MUST</strong> be preserved when processing.</t>

<t>Example:</t>

<t><spanx style="verb">json
{
  "resources": [
    {
      "name": "invoice_store",
      "type": "vector_store",
      "description": "Vector store containing indexed invoice documents for semantic search.",
      "uri": "https://store.acme.example.com/invoices",
      "mime_types": ["application/pdf", "application/json"],
      "data_classification": { "sensitivity": "confidential" }
    }
  ]
}
</spanx></t>

</section>
<section anchor="prompts"><name>Prompts</name>

<t>Array of prompt objects (reusable prompt templates). <strong>OPTIONAL.</strong> Each prompt <strong>MUST</strong> contain <spanx style="verb">name</spanx> (string, REQUIRED) and <spanx style="verb">template</spanx> (string, REQUIRED). Each prompt <strong>MAY</strong> contain <spanx style="verb">description</spanx>, <spanx style="verb">arguments</spanx> (JSON Schema). Template arguments use <spanx style="verb">{{argument_name}}</spanx> and <strong>MUST</strong> conform to the <spanx style="verb">template-var</spanx> production in Appendix D. Prompt names <strong>MUST</strong> be unique.</t>

<t>Example:</t>

<t><spanx style="verb">json
{
  "prompts": [
    {
      "name": "summarize_invoice",
      "description": "Summarizes an invoice for a reviewer.",
      "template": "Summarize the following invoice for {{reviewer_role}}:\n\n{{invoice_text}}\n\nHighlight amounts over {{threshold}}.",
      "arguments": {
        "type": "object",
        "properties": {
          "reviewer_role": { "type": "string" },
          "invoice_text": { "type": "string" },
          "threshold": { "type": "number" }
        },
        "required": ["reviewer_role", "invoice_text"]
      }
    }
  ]
}
</spanx></t>

</section>
</section>
<section anchor="permissions"><name>Permissions</name>

<t>The <spanx style="verb">permissions</spanx> member defines the agent's operational boundaries. <strong>OPTIONAL.</strong> When present, value <strong>MUST</strong> be an object containing one or more permission domain members.</t>

<section anchor="permissions-model"><name>Permissions Model</name>

<texttable>
      <ttcol align='left'>Domain</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c>network</c>
      <c>Network access boundaries</c>
      <c>filesystem</c>
      <c>Filesystem access boundaries</c>
      <c>environment</c>
      <c>Environment variable access</c>
      <c>execution</c>
      <c>Process execution boundaries</c>
      <c>resource_limits</c>
      <c>Resource consumption limits</c>
</texttable>

<t>Permissions operate on a <strong>deny-by-default</strong> model. Runtimes <strong>MUST</strong> deny any capability not explicitly granted in the <spanx style="verb">permissions</spanx> member. Runtimes <strong>MUST</strong> enforce declared permissions. Runtimes that cannot enforce a specific permission domain <strong>MUST</strong> warn users before execution and <strong>SHOULD</strong> refuse to execute the agent unless the user explicitly acknowledges the limitation.</t>

<t>When the <spanx style="verb">permissions</spanx> member is omitted from an ADL document, no permissions are granted to the agent. Runtimes <strong>MUST</strong> treat the absence of <spanx style="verb">permissions</spanx> as equivalent to an empty <spanx style="verb">permissions</spanx> object  --  the agent has no granted capabilities.</t>

<t>When a specific permission domain (e.g., <spanx style="verb">network</spanx>, <spanx style="verb">filesystem</spanx>) is omitted from the <spanx style="verb">permissions</spanx> object, all operations in that domain are denied. For example, if <spanx style="verb">permissions</spanx> is present but does not contain <spanx style="verb">network</spanx>, the agent <strong>MUST</strong> have no network access.</t>

<t>Runtimes <strong>MUST NOT</strong> infer, assume, or provide default permissions when <spanx style="verb">permissions</spanx> or a permission domain is absent.</t>

<section anchor="conflict-resolution"><name>Conflict Resolution</name>

<t>When a value matches both an <spanx style="verb">allowed_*</spanx> pattern and a <spanx style="verb">denied_*</spanx> pattern within the same permission domain, the <spanx style="verb">denied_*</spanx> pattern <strong>MUST</strong> take precedence. The agent <strong>MUST NOT</strong> be granted access to any value matched by a <spanx style="verb">denied_*</spanx> pattern, regardless of whether it also matches an <spanx style="verb">allowed_*</spanx> pattern. This deny-takes-precedence rule ensures that explicit exclusions cannot be overridden by broad allow patterns.</t>

<t>Example: If <spanx style="verb">allowed_variables</spanx> is <spanx style="verb">["APP_*"]</spanx> and <spanx style="verb">denied_variables</spanx> is <spanx style="verb">["APP_SECRET_*"]</spanx>, the variable <spanx style="verb">APP_SECRET_KEY</spanx> is <strong>denied</strong> even though it matches <spanx style="verb">APP_*</spanx>.</t>

</section>
</section>
<section anchor="network"><name>Network</name>

<t>May contain: <spanx style="verb">allowed_hosts</spanx> (array of host patterns), <spanx style="verb">allowed_ports</spanx>, <spanx style="verb">allowed_protocols</spanx>, <spanx style="verb">deny_private</spanx> (bool). Host patterns support exact match and <spanx style="verb">*.example.com</spanx>.</t>

<t>Host patterns in <spanx style="verb">allowed_hosts</spanx> <strong>MUST</strong> conform to the pattern syntax defined in Section 4.4.</t>

</section>
<section anchor="filesystem"><name>Filesystem</name>

<t>May contain: <spanx style="verb">allowed_paths</spanx> (array of <spanx style="verb">{ path, access }</spanx> where access is <spanx style="verb">read</spanx>, <spanx style="verb">write</spanx>, or <spanx style="verb">read_write</spanx>), <spanx style="verb">denied_paths</spanx>.</t>

<t>Path patterns in <spanx style="verb">allowed_paths[*].path</spanx> and <spanx style="verb">denied_paths</spanx> <strong>MUST</strong> conform to the pattern syntax defined in Section 4.4. The <spanx style="verb">**</spanx> multi-segment wildcard is valid in filesystem path patterns.</t>

</section>
<section anchor="environment"><name>Environment</name>

<t>May contain: <spanx style="verb">allowed_variables</spanx>, <spanx style="verb">denied_variables</spanx> (patterns with wildcards, e.g., <spanx style="verb">APP_*</spanx>).</t>

<t>Variable patterns in <spanx style="verb">allowed_variables</spanx> and <spanx style="verb">denied_variables</spanx> <strong>MUST</strong> conform to the pattern syntax defined in Section 4.4.</t>

</section>
<section anchor="execution"><name>Execution</name>

<t>May contain: <spanx style="verb">allowed_commands</spanx>, <spanx style="verb">denied_commands</spanx>, <spanx style="verb">allow_shell</spanx> (bool).</t>

<t>Command patterns in <spanx style="verb">allowed_commands</spanx> and <spanx style="verb">denied_commands</spanx> <strong>MUST</strong> conform to the pattern syntax defined in Section 4.4.</t>

</section>
<section anchor="resource-limits"><name>Resource Limits</name>

<t>May contain: <spanx style="verb">max_memory_mb</spanx>, <spanx style="verb">max_cpu_percent</spanx>, <spanx style="verb">max_duration_sec</spanx>, <spanx style="verb">max_concurrent</spanx>.</t>

<t>Example (complete permissions object):</t>

<t><spanx style="verb">json
{
  "permissions": {
    "network": {
      "allowed_hosts": ["api.acme.example.com", "*.storage.example.com"],
      "allowed_ports": [443],
      "allowed_protocols": ["https"],
      "deny_private": true
    },
    "filesystem": {
      "allowed_paths": [
        { "path": "/data/invoices/**", "access": "read" },
        { "path": "/tmp/processing/**", "access": "read_write" }
      ],
      "denied_paths": ["/tmp/processing/**/secrets"]
    },
    "environment": {
      "allowed_variables": ["APP_*", "INVOICE_*"],
      "denied_variables": ["APP_SECRET_*"]
    },
    "execution": {
      "allowed_commands": ["python3", "jq"],
      "allow_shell": false
    },
    "resource_limits": {
      "max_memory_mb": 512,
      "max_cpu_percent": 25,
      "max_duration_sec": 300
    }
  }
}
</spanx></t>

</section>
</section>
<section anchor="security"><name>Security</name>

<t>The <spanx style="verb">security</spanx> member defines security requirements. <strong>OPTIONAL.</strong> When present, value <strong>MUST</strong> be an object that <strong>MAY</strong> contain <spanx style="verb">authentication</spanx>, <spanx style="verb">encryption</spanx>, and <spanx style="verb">attestation</spanx>.</t>

<section anchor="authentication"><name>Authentication</name>

<t>May contain: <spanx style="verb">type</spanx> (one of <spanx style="verb">none</spanx>, <spanx style="verb">api_key</spanx>, <spanx style="verb">oauth2</spanx>, <spanx style="verb">oidc</spanx>, <spanx style="verb">mtls</spanx>), <spanx style="verb">required</spanx> (bool). Type-specific members (e.g., OAuth2: <spanx style="verb">scopes</spanx>, <spanx style="verb">token_endpoint</spanx>; OIDC: <spanx style="verb">issuer</spanx>, <spanx style="verb">audience</spanx>) <strong>MAY</strong> be present.</t>

</section>
<section anchor="encryption"><name>Encryption</name>

<t>May contain: <spanx style="verb">in_transit</spanx> (<spanx style="verb">required</spanx>, <spanx style="verb">min_version</spanx>), <spanx style="verb">at_rest</spanx> (<spanx style="verb">required</spanx>, <spanx style="verb">algorithm</spanx>).</t>

</section>
<section anchor="attestation"><name>Attestation</name>

<t>May contain: <spanx style="verb">type</spanx> (one of <spanx style="verb">self</spanx>, <spanx style="verb">third_party</spanx>, <spanx style="verb">verifiable_credential</spanx>), <spanx style="verb">issuer</spanx>, <spanx style="verb">issued_at</spanx>, <spanx style="verb">expires_at</spanx> (ISO 8601), <spanx style="verb">signature</spanx> (object). Implementations <strong>SHOULD</strong> warn when <spanx style="verb">expires_at</spanx> is in the past or within 30 days.</t>

<t><strong>Signature object:</strong> When present, <strong>MUST</strong> contain <spanx style="verb">algorithm</spanx>, <spanx style="verb">value</spanx> (Base64url-encoded), <spanx style="verb">signed_content</spanx> (<spanx style="verb">"canonical"</spanx> or <spanx style="verb">"digest"</spanx>). When <spanx style="verb">signed_content</spanx> is <spanx style="verb">"digest"</spanx>, <strong>MUST</strong> also include <spanx style="verb">digest_algorithm</spanx> and <spanx style="verb">digest_value</spanx>. Supported algorithms include Ed25519 (RECOMMENDED), Ed448, ES256/384/512, RS256, PS256 (RSA &gt;= 2048). Verification: remove signature, serialize with JCS <xref target="RFC8785"/>, verify digest if applicable, resolve public key from <spanx style="verb">cryptographic_identity</spanx>, verify signature.</t>

<t>Example:</t>

<t><spanx style="verb">json
{
  "security": {
    "authentication": {
      "type": "oauth2",
      "required": true,
      "scopes": ["invoices:read", "invoices:write"],
      "token_endpoint": "https://auth.acme.example.com/oauth/token"
    },
    "encryption": {
      "in_transit": { "required": true, "min_version": "TLS1.3" },
      "at_rest": { "required": true, "algorithm": "AES-256-GCM" }
    },
    "attestation": {
      "type": "third_party",
      "issuer": "https://trust.acme.example.com",
      "issued_at": "2026-01-01T00:00:00Z",
      "expires_at": "2027-01-01T00:00:00Z"
    }
  }
}
</spanx></t>

</section>
<section anchor="data-classification"><name>Data Classification</name>

<t>The <spanx style="verb">data_classification</spanx> member declares the sensitivity and categories of data the agent may access, process, or produce. <strong>REQUIRED.</strong> Value <strong>MUST</strong> be an object.</t>

<t>Data classification is required by NIST FIPS 199, NIST SP 800-60, ISO 27001:2022 Annex A.5.12, FedRAMP, SOC 2, and CMMC. It is the foundational step of security categorization across all major compliance frameworks.</t>

<t>This member is a <strong>reusable composable attribute</strong>. In addition to the required top-level declaration, it <strong>MAY</strong> also appear within individual <spanx style="verb">tools[*]</spanx> or <spanx style="verb">resources[*]</spanx> objects to classify specific capabilities. When present on both the top level and a tool or resource, the tool/resource-level classification applies to that capability.</t>

<section anchor="high-water-mark-rule"><name>High-Water Mark Rule</name>

<t>The top-level <spanx style="verb">data_classification.sensitivity</spanx> <strong>MUST</strong> be greater than or equal to the highest <spanx style="verb">sensitivity</spanx> value declared in any tool-level or resource-level <spanx style="verb">data_classification</spanx> within the same document. This follows the FIPS 199 high-water mark principle: a system's overall security categorization is the highest value among its constituent information types.</t>

<t>The sensitivity ordering from lowest to highest is: <spanx style="verb">public</spanx> &lt; <spanx style="verb">internal</spanx> &lt; <spanx style="verb">confidential</spanx> &lt; <spanx style="verb">restricted</spanx>.</t>

<t>Sensitivity levels align with NIST FIPS 199 impact categorization and ISO 27001:2022 Annex A.5.12 information classification.</t>

<texttable>
      <ttcol align='left'>Member</ttcol>
      <ttcol align='left'>Type</ttcol>
      <ttcol align='left'>Required</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c>sensitivity</c>
      <c>string</c>
      <c>REQUIRED</c>
      <c>Information sensitivity level</c>
      <c>categories</c>
      <c>array</c>
      <c>OPTIONAL</c>
      <c>Broad information categories handled</c>
      <c>retention</c>
      <c>object</c>
      <c>OPTIONAL</c>
      <c>Data retention requirements</c>
      <c>handling</c>
      <c>object</c>
      <c>OPTIONAL</c>
      <c>Data handling constraints</c>
</texttable>

</section>
<section anchor="sensitivity"><name>sensitivity</name>

<t><strong>REQUIRED</strong> when <spanx style="verb">data_classification</spanx> is present. Value <strong>MUST</strong> be one of:</t>

<texttable>
      <ttcol align='left'>Value</ttcol>
      <ttcol align='left'>Definition</ttcol>
      <c><spanx style="verb">public</spanx></c>
      <c>Information approved for unrestricted disclosure</c>
      <c><spanx style="verb">internal</spanx></c>
      <c>Information limited to organizational use</c>
      <c><spanx style="verb">confidential</spanx></c>
      <c>Information requiring protection; unauthorized disclosure could cause harm</c>
      <c><spanx style="verb">restricted</spanx></c>
      <c>Information requiring the highest level of protection; unauthorized disclosure could cause severe harm</c>
</texttable>

</section>
<section anchor="categories"><name>categories</name>

<t>When present, <strong>MUST</strong> be a non-empty array. Each item <strong>MUST</strong> be one of:</t>

<texttable>
      <ttcol align='left'>Value</ttcol>
      <ttcol align='left'>Definition</ttcol>
      <c><spanx style="verb">pii</spanx></c>
      <c>Personally Identifiable Information</c>
      <c><spanx style="verb">phi</spanx></c>
      <c>Protected Health Information (HIPAA)</c>
      <c><spanx style="verb">financial</spanx></c>
      <c>Financial data (PCI-DSS, GLBA, SOX scope)</c>
      <c><spanx style="verb">credentials</spanx></c>
      <c>Authentication credentials, secrets, keys</c>
      <c><spanx style="verb">intellectual_property</spanx></c>
      <c>Trade secrets, proprietary algorithms, business-sensitive data</c>
      <c><spanx style="verb">regulatory</spanx></c>
      <c>Data subject to specific regulatory requirements</c>
</texttable>

<t>Profiles <strong>MAY</strong> define additional category values.</t>

</section>
<section anchor="retention"><name>retention</name>

<t>When present, <strong>MUST</strong> be an object. <strong>MAY</strong> contain:</t>

<texttable>
      <ttcol align='left'>Member</ttcol>
      <ttcol align='left'>Type</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c>min_days</c>
      <c>number</c>
      <c>Minimum retention period in days</c>
      <c>max_days</c>
      <c>number</c>
      <c>Maximum retention period in days</c>
      <c>policy_uri</c>
      <c>string</c>
      <c>URI to the governing retention policy</c>
</texttable>

<t>When both <spanx style="verb">min_days</spanx> and <spanx style="verb">max_days</spanx> are present, <spanx style="verb">min_days</spanx> <strong>MUST</strong> be less than or equal to <spanx style="verb">max_days</spanx>.</t>

</section>
<section anchor="handling"><name>handling</name>

<t>When present, <strong>MUST</strong> be an object. <strong>MAY</strong> contain:</t>

<texttable>
      <ttcol align='left'>Member</ttcol>
      <ttcol align='left'>Type</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c>encryption_required</c>
      <c>bool</c>
      <c>Whether data must be encrypted at rest</c>
      <c>anonymization_required</c>
      <c>bool</c>
      <c>Whether data must be anonymized before processing</c>
      <c>cross_border_restricted</c>
      <c>bool</c>
      <c>Whether data may not leave jurisdictional boundaries</c>
      <c>logging_required</c>
      <c>bool</c>
      <c>Whether all access must be logged</c>
</texttable>

</section>
<section anchor="profile-extensions"><name>Profile Extensions</name>

<t>Profiles <strong>MAY</strong> add domain-specific sub-objects within <spanx style="verb">data_classification</spanx> to provide granular classification vocabularies. For example, a healthcare profile may add a <spanx style="verb">healthcare</spanx> sub-object with PHI type enumerations, and a financial profile may add a <spanx style="verb">financial</spanx> sub-object with financial data type enumerations. Multiple profile extensions compose naturally within the same <spanx style="verb">data_classification</spanx> object. See Section 13 for profile composition rules.</t>

<t>Example (top-level and tool-level data classification demonstrating the high-water mark rule):</t>

<t><spanx style="verb">json
{
  "data_classification": {
    "sensitivity": "confidential",
    "categories": ["financial", "pii"],
    "retention": { "max_days": 2555, "policy_uri": "https://acme.example.com/data-retention" },
    "handling": {
      "encryption_required": true,
      "logging_required": true
    }
  },
  "tools": [
    {
      "name": "get_invoice_details",
      "description": "Returns detailed invoice data including PII.",
      "data_classification": {
        "sensitivity": "confidential",
        "categories": ["financial", "pii"]
      }
    },
    {
      "name": "get_invoice_summary",
      "description": "Returns anonymized invoice summary.",
      "data_classification": { "sensitivity": "internal" }
    }
  ]
}
</spanx></t>

<t>The top-level <spanx style="verb">sensitivity</spanx> of <spanx style="verb">"confidential"</spanx> satisfies the high-water mark rule: it equals the highest tool-level value (<spanx style="verb">"confidential"</spanx> for <spanx style="verb">get_invoice_details</spanx>).</t>

</section>
</section>
</section>
<section anchor="runtime-behavior"><name>Runtime Behavior</name>

<t>The <spanx style="verb">runtime</spanx> member configures agent runtime behavior. <strong>OPTIONAL.</strong> When present, value <strong>MUST</strong> be an object.</t>

<section anchor="input-handling"><name>Input Handling</name>

<t>May contain: <spanx style="verb">max_input_length</spanx>, <spanx style="verb">content_types</spanx>, <spanx style="verb">sanitization</spanx>.</t>

<t>The <spanx style="verb">sanitization</spanx> member, when present, <strong>MUST</strong> be an object describing input sanitization rules. It <strong>MAY</strong> contain:</t>

<texttable>
      <ttcol align='left'>Member</ttcol>
      <ttcol align='left'>Type</ttcol>
      <ttcol align='left'>Required</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c>enabled</c>
      <c>boolean</c>
      <c>OPTIONAL</c>
      <c>Whether input sanitization is active</c>
      <c>strip_html</c>
      <c>boolean</c>
      <c>OPTIONAL</c>
      <c>Whether to strip HTML tags from input</c>
      <c>max_input_length</c>
      <c>number</c>
      <c>OPTIONAL</c>
      <c>Maximum input length in characters</c>
</texttable>

<t>The <spanx style="verb">content_types</spanx> member, when present, <strong>MUST</strong> be an array of strings. Each value <strong>MUST</strong> be a valid MIME type specifying an accepted input content type.</t>

</section>
<section anchor="output-handling"><name>Output Handling</name>

<t>May contain: <spanx style="verb">max_output_length</spanx>, <spanx style="verb">format</spanx>, <spanx style="verb">streaming</spanx> (bool).</t>

<t>The <spanx style="verb">format</spanx> member, when present, <strong>MUST</strong> be a string specifying the default output format. Value <strong>MUST</strong> be one of: <spanx style="verb">"text"</spanx>, <spanx style="verb">"json"</spanx>, <spanx style="verb">"markdown"</spanx>, <spanx style="verb">"html"</spanx>.</t>

</section>
<section anchor="tool-invocation"><name>Tool Invocation</name>

<t>May contain: <spanx style="verb">parallel</spanx> (bool), <spanx style="verb">max_concurrent</spanx>, <spanx style="verb">timeout_ms</spanx>, <spanx style="verb">retry_policy</spanx>.</t>

<t>The <spanx style="verb">retry_policy</spanx> member, when present, <strong>MUST</strong> be an object describing retry behavior for tool invocations. It <strong>MAY</strong> contain:</t>

<texttable>
      <ttcol align='left'>Member</ttcol>
      <ttcol align='left'>Type</ttcol>
      <ttcol align='left'>Required</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c>max_retries</c>
      <c>number</c>
      <c>OPTIONAL</c>
      <c>Maximum number of retry attempts</c>
      <c>backoff_strategy</c>
      <c>string</c>
      <c>OPTIONAL</c>
      <c>One of: <spanx style="verb">"fixed"</spanx>, <spanx style="verb">"exponential"</spanx>, <spanx style="verb">"linear"</spanx></c>
      <c>initial_delay_ms</c>
      <c>number</c>
      <c>OPTIONAL</c>
      <c>Initial delay between retries in milliseconds</c>
      <c>max_delay_ms</c>
      <c>number</c>
      <c>OPTIONAL</c>
      <c>Maximum delay between retries in milliseconds</c>
</texttable>

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

<t>May contain: <spanx style="verb">on_tool_error</spanx> (<spanx style="verb">abort</spanx>, <spanx style="verb">continue</spanx>, or <spanx style="verb">retry</spanx>), <spanx style="verb">max_retries</spanx>, <spanx style="verb">fallback_behavior</spanx>.</t>

<t>The <spanx style="verb">fallback_behavior</spanx> member, when present, <strong>MUST</strong> be an object describing behavior when errors occur and <spanx style="verb">on_tool_error</spanx> does not resolve the situation. It <strong>MAY</strong> contain:</t>

<texttable>
      <ttcol align='left'>Member</ttcol>
      <ttcol align='left'>Type</ttcol>
      <ttcol align='left'>Required</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c>action</c>
      <c>string</c>
      <c>OPTIONAL</c>
      <c>One of: <spanx style="verb">"return_error"</spanx>, <spanx style="verb">"use_default"</spanx>, <spanx style="verb">"skip"</spanx></c>
      <c>default</c>
      <c>any</c>
      <c>OPTIONAL</c>
      <c>Default value to return when <spanx style="verb">action</spanx> is <spanx style="verb">"use_default"</spanx></c>
      <c>message</c>
      <c>string</c>
      <c>OPTIONAL</c>
      <c>User-facing message on fallback</c>
</texttable>

<t>Example:</t>

<t><spanx style="verb">json
{
  "runtime": {
    "input_handling": {
      "max_input_length": 32768,
      "content_types": ["text/plain", "application/json"],
      "sanitization": { "enabled": true, "strip_html": true }
    },
    "output_handling": {
      "format": "json",
      "max_output_length": 8192,
      "streaming": false
    },
    "tool_invocation": {
      "parallel": true,
      "max_concurrent": 3,
      "timeout_ms": 30000,
      "retry_policy": {
        "max_retries": 2,
        "backoff_strategy": "exponential",
        "initial_delay_ms": 500,
        "max_delay_ms": 5000
      }
    },
    "error_handling": {
      "on_tool_error": "retry",
      "max_retries": 2,
      "fallback_behavior": {
        "action": "return_error",
        "message": "Invoice processing temporarily unavailable."
      }
    }
  }
}
</spanx></t>

</section>
</section>
<section anchor="metadata"><name>Metadata</name>

<t>The <spanx style="verb">metadata</spanx> member provides additional information. <strong>OPTIONAL.</strong> When present, value <strong>MUST</strong> be an object.</t>

<section anchor="authors"><name>Authors</name>

<t>Array of author objects. Each <strong>MAY</strong> contain <spanx style="verb">name</spanx>, <spanx style="verb">email</spanx>, <spanx style="verb">url</spanx>.</t>

</section>
<section anchor="license"><name>License</name>

<t>String: SPDX license identifier or URI to license document.</t>

</section>
<section anchor="documentation"><name>Documentation</name>

<t>String: URI to documentation.</t>

</section>
<section anchor="repository"><name>Repository</name>

<t>String: URI to source repository.</t>

</section>
<section anchor="tags"><name>Tags</name>

<t>Array of strings. <strong>SHOULD</strong> be lowercase, alphanumeric and hyphens only. Tags <strong>SHOULD</strong> conform to the <spanx style="verb">tag</spanx> production in Appendix D.</t>

</section>
<section anchor="example"><name>Example</name>

<t><spanx style="verb">json
{
  "metadata": {
    "authors": [
      {
        "name": "Platform Team",
        "email": "platform@example.com",
        "url": "https://example.com/team/platform"
      }
    ],
    "license": "Apache-2.0",
    "documentation": "https://docs.example.com/agents/invoice-processor",
    "repository": "https://github.com/example/invoice-processor",
    "tags": ["finance", "invoice", "production"]
  }
}
</spanx></t>

</section>
</section>
<section anchor="profiles"><name>Profiles</name>

<t>The <spanx style="verb">profiles</spanx> member declares which profiles the document conforms to. <strong>OPTIONAL.</strong> Value <strong>MUST</strong> be an array of profile identifiers (URIs or registered names). When a profile is declared: the document <strong>MUST</strong> satisfy all profile requirements, <strong>MAY</strong> use profile-defined members, and validators <strong>SHOULD</strong> check profile-specific rules.</t>

<t>ADL defines two categories of profiles:</t>

<t><list style="symbols">
  <t><strong>Standard profiles</strong> define domain-specific top-level members and validation rules. Standard profiles use the <spanx style="verb">urn:adl:profile:*</spanx> namespace and <strong>SHOULD</strong> be registered with the IANA profile registry (Section 13.5) to prevent naming conflicts. Examples: Governance (<spanx style="verb">urn:adl:profile:governance:1.0</spanx>), Healthcare, Financial.</t>
  <t><strong>Vendor profiles</strong> declare vendor-specific extensions with schema validation, targeting the <spanx style="verb">extensions</spanx> namespace rather than defining new top-level members. Vendor profiles use URI identifiers controlled by the vendor (e.g., <spanx style="verb">https://acme.com/adl/extensions/v1</spanx>) and do not require registration  --  the reverse-domain namespace provides collision prevention through DNS ownership. See Section 13.4.</t>
</list></t>

<t>Both categories use the same <spanx style="verb">allOf</spanx> composition mechanism (Section 13.1) and <strong>MAY</strong> appear together in a document's <spanx style="verb">profiles</spanx> array.</t>

<section anchor="profile-schema-composition"><name>Profile Schema Composition</name>

<t>Profiles extend the base ADL schema using the JSON Schema 2020-12 <spanx style="verb">allOf</spanx> composition mechanism. Each profile publishes a JSON Schema that:</t>

<t><list style="numbers" type="1">
  <t>References the base ADL schema via <spanx style="verb">allOf</spanx> with <spanx style="verb">$ref</spanx>.</t>
  <t>Declares the profile's additional top-level members in its own <spanx style="verb">properties</spanx>.</t>
  <t>Adds <spanx style="verb">unevaluatedProperties: false</spanx> to close the composed schema, ensuring only base ADL members, profile-defined members, and <spanx style="verb">extensions</spanx> members are accepted.</t>
</list></t>

<t>The base ADL schema (Appendix A) does not restrict unknown top-level properties  --  it declares <spanx style="verb">properties</spanx> and <spanx style="verb">patternProperties</spanx> but omits <spanx style="verb">additionalProperties</spanx> and <spanx style="verb">unevaluatedProperties</spanx>. This allows profile schemas to add members via composition without conflict. For documents that do not declare any profiles, validators <strong>SHOULD</strong> use the strict schema (<spanx style="verb">schema-strict.json</spanx>), which adds <spanx style="verb">unevaluatedProperties: false</spanx> to reject unknown top-level members.</t>

<t>Profile schemas <strong>MUST NOT</strong> redefine core ADL members with incompatible types. Profiles <strong>MAY</strong>:</t>

<t><list style="symbols">
  <t>Add top-level members.</t>
  <t>Add members to existing objects (e.g., extending <spanx style="verb">data_classification</spanx> with domain-specific sub-objects).</t>
  <t>Define validation rules.</t>
  <t>Require specific values for optional core members.</t>
  <t>Use conditional validation (<spanx style="verb">if</spanx>/<spanx style="verb">then</spanx>) to enforce tier-based or context-dependent requirements.</t>
</list></t>

</section>
<section anchor="multi-profile-composition"><name>Multi-Profile Composition</name>

<t>When a document declares multiple profiles, the document <strong>MUST</strong> satisfy all declared profile requirements. Validators compose profile schemas using <spanx style="verb">allOf</spanx>  --  each profile's schema is included as an element. JSON Schema <spanx style="verb">allOf</spanx> uses "strictest wins" semantics: if any profile requires a member, the composed result requires it.</t>

<t>Profiles <strong>MUST</strong> be designed for independent composition. A profile's validation rules <strong>MUST NOT</strong> assume the absence of members defined by other profiles. For standard profiles, the IANA profile registry designated expert review (see Section 13.5) prevents cross-profile field naming conflicts. Vendor profiles avoid conflicts through their reverse-domain namespace isolation.</t>

</section>
<section anchor="profile-dependencies"><name>Profile Dependencies</name>

<t>A profile <strong>MAY</strong> declare dependencies on other profiles. When a profile declares a dependency, documents using that profile <strong>MUST</strong> also satisfy the dependency profile's requirements. The <spanx style="verb">profiles</spanx> array <strong>MUST</strong> include all transitive dependencies.</t>

<t>At the schema level, a dependent profile composes its parent via <spanx style="verb">allOf</spanx>:</t>

<t><spanx style="verb">json
{
  "allOf": [
    { "$ref": "https://adl-spec.org/0.2/schema.json" },
    { "$ref": "https://adl-spec.org/profiles/governance/1.0/schema.json" }
  ],
  "properties": {
    "hipaa_data_handling": { "type": "object" }
  },
  "unevaluatedProperties": false
}
</spanx></t>

<t>A dependent profile <strong>MAY</strong> tighten constraints from its parent (e.g., make an optional parent field required, narrow an enum). A dependent profile <strong>MUST NOT</strong> loosen constraints from its parent (e.g., make a required parent field optional). This follows from <spanx style="verb">allOf</spanx> semantics  --  the parent's constraints remain in force.</t>

<t>If a dependent profile needs a parent field to not be required, this indicates a design issue. Resolutions include: refactoring the parent into a base profile with looser constraints, changing the relationship from dependency to sibling, or revising the parent profile in a new major version.</t>

</section>
<section anchor="vendor-profiles"><name>Vendor Profiles</name>

<t>A <strong>vendor profile</strong> is a profile published by an organization to declare vendor-specific extensions with schema validation. Vendor profiles use the same <spanx style="verb">allOf</spanx> composition mechanism as standard profiles (Section 13.1) but target the <spanx style="verb">extensions</spanx> namespace rather than defining new top-level members. See Section 13 for an overview of the standard/vendor profile taxonomy.</t>

<t>Vendor profiles use URI identifiers controlled by the vendor (e.g., <spanx style="verb">https://acme.com/adl/extensions/v1</spanx>). The <spanx style="verb">urn:adl:profile:*</spanx> namespace is reserved for standard profiles. Vendor profiles <strong>MUST NOT</strong> use this namespace.</t>

<t>A vendor profile <strong>MAY</strong> add schema constraints to the <spanx style="verb">extensions</spanx> object at any level, validating that its reverse-domain namespace contains the expected structure. The profile schema references the base ADL schema via <spanx style="verb">allOf</spanx> and declares <spanx style="verb">properties</spanx> for <spanx style="verb">extensions</spanx> within the relevant objects.</t>

<t>A vendor profile <strong>MAY</strong> declare a dependency on a standard profile and add schema constraints to <spanx style="verb">extensions</spanx> within that profile's objects. The vendor profile composes its dependency via <spanx style="verb">allOf</spanx> and adds <spanx style="verb">extensions</spanx> constraints inside the profile-defined objects. This enables vendors to extend profile-defined objects without redefining them.</t>

<t>Vendor profiles are subject to the following constraints:</t>

<t><list style="symbols">
  <t>Vendor profiles <strong>MUST NOT</strong> redefine core ADL members or standard profile members with incompatible types.</t>
  <t>Vendor profiles <strong>MUST</strong> only add schema constraints within their own reverse-domain namespace under <spanx style="verb">extensions</spanx>.</t>
  <t>A vendor profile's <spanx style="verb">extensions</spanx> schema applies only when the vendor profile is declared in the document's <spanx style="verb">profiles</spanx> array.</t>
  <t>Documents <strong>MAY</strong> include <spanx style="verb">extensions</spanx> data for a vendor without declaring the vendor's profile. In this case, the data is preserved but unvalidated  --  implementations treat it as opaque.</t>
  <t>Multiple vendor profiles compose independently. Each vendor's <spanx style="verb">extensions</spanx> constraints apply only within its own namespace.</t>
</list></t>

<t>Vendor profiles do not require IANA registration. The reverse-domain namespace provides collision prevention through DNS ownership.</t>

<t>Vendors <strong>SHOULD</strong>:</t>

<t><list style="symbols">
  <t>Publish their profile schema at a stable, dereferenceable URI.</t>
  <t>Version their profile schemas (e.g., <spanx style="verb">/v1/</spanx>, <spanx style="verb">/v2/</spanx>).</t>
  <t>Document the semantics of their extension fields.</t>
</list></t>

</section>
<section anchor="standard-profile-registration"><name>Standard Profile Registration</name>

<t>Standard profile identifiers <strong>SHOULD</strong> be registered to prevent naming conflicts. Only standard profiles  --  those using the <spanx style="verb">urn:adl:profile:*</spanx> namespace  --  are subject to registration. Vendor profiles rely on reverse-domain namespace isolation and do not require registration (see Section 13.4).</t>

<t>The registration authority (e.g., IANA profile registry) <strong>MUST</strong> employ designated expert review to ensure:</t>

<t><list style="numbers" type="1">
  <t>New standard profiles do not redefine members from existing profiles with incompatible semantics.</t>
  <t>New standard profiles do not introduce field names that conflict with existing profiles.</t>
  <t>Dependencies between profiles are explicitly declared and acyclic.</t>
</list></t>

<t>If a member becomes cross-cutting (needed by multiple standard profiles), the registration authority <strong>MAY</strong> recommend promoting it to the core ADL specification.</t>

</section>
<section anchor="example-1"><name>Example</name>

<t><spanx style="verb">json
{
  "adl_spec": "0.2.0",
  "name": "Invoice Processor",
  "version": "2.0.0",
  "description": "Processes invoices with governance and financial compliance.",
  "data_classification": {
    "sensitivity": "confidential",
    "categories": ["financial"]
  },
  "profiles": [
    "urn:adl:profile:governance:1.0",
    "urn:adl:profile:financial:1.0"
  ]
}
</spanx></t>

</section>
</section>
<section anchor="processing-adl-documents"><name>Processing ADL Documents</name>

<section anchor="parsing"><name>Parsing</name>

<t>Implementations <strong>MUST</strong> parse ADL as JSON <xref target="RFC8259"/>, <strong>MUST</strong> reject invalid JSON, and <strong>MUST</strong> reject documents where the top-level value is not a JSON object.</t>

</section>
<section anchor="validation"><name>Validation</name>

<t>Implementations <strong>MUST</strong> validate ADL documents against the JSON Schema defined in Appendix A. Implementations <strong>MUST</strong> validate the following semantic rules:</t>

<texttable>
      <ttcol align='left'>Rule</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c>VAL-01</c>
      <c><spanx style="verb">adl_spec</spanx> MUST match a supported version</c>
      <c>VAL-02</c>
      <c>Tool names MUST be unique</c>
      <c>VAL-03</c>
      <c>Resource names MUST be unique</c>
      <c>VAL-04</c>
      <c>Prompt names MUST be unique</c>
      <c>VAL-05</c>
      <c>Timestamps MUST be valid ISO 8601</c>
      <c>VAL-06</c>
      <c>URIs MUST be valid per RFC 3986</c>
      <c>VAL-07</c>
      <c>JSON Schema in parameters/returns MUST be valid</c>
      <c>VAL-08</c>
      <c>Profile requirements MUST be satisfied</c>
      <c>VAL-09</c>
      <c><spanx style="verb">lifecycle.status</spanx> MUST be a valid status value if present</c>
      <c>VAL-10</c>
      <c><spanx style="verb">lifecycle.effective_date</spanx> MUST be valid ISO 8601 if present</c>
      <c>VAL-11</c>
      <c><spanx style="verb">lifecycle.sunset_date</spanx> MUST be valid ISO 8601 if present</c>
      <c>VAL-12</c>
      <c><spanx style="verb">lifecycle.successor</spanx> MUST be a valid URI if present</c>
      <c>VAL-13</c>
      <c>Tool names MUST match <spanx style="verb">^[a-z][a-z0-9_]*$</spanx></c>
      <c>VAL-14</c>
      <c>Resource <spanx style="verb">type</spanx> MUST be a valid resource type value</c>
      <c>VAL-15</c>
      <c><spanx style="verb">model.temperature</spanx> MUST be between 0.0 and 2.0 if present</c>
      <c>VAL-16</c>
      <c><spanx style="verb">security.authentication.type</spanx> MUST be a valid authentication type if present</c>
      <c>VAL-17</c>
      <c><spanx style="verb">security.attestation.type</spanx> MUST be a valid attestation type if present</c>
      <c>VAL-18</c>
      <c><spanx style="verb">runtime.error_handling.on_tool_error</spanx> MUST be a valid error action if present</c>
      <c>VAL-19</c>
      <c><spanx style="verb">runtime.output_handling.format</spanx> MUST be a valid format value if present</c>
      <c>VAL-20</c>
      <c><spanx style="verb">model.capabilities</spanx> items MUST be valid capability values if present</c>
      <c>VAL-21</c>
      <c>Host patterns MUST conform to Section 4.4 pattern syntax</c>
      <c>VAL-22</c>
      <c>Filesystem path patterns MUST conform to Section 4.4 pattern syntax</c>
      <c>VAL-23</c>
      <c>Environment variable patterns MUST conform to Section 4.4 pattern syntax</c>
      <c>VAL-24</c>
      <c>Attestation <spanx style="verb">signature.signed_content</spanx> value <spanx style="verb">"digest"</spanx> MUST have <spanx style="verb">digest_algorithm</spanx> and <spanx style="verb">digest_value</spanx> present</c>
      <c>VAL-25</c>
      <c><spanx style="verb">data_classification.sensitivity</spanx> MUST be a valid sensitivity level if present</c>
      <c>VAL-26</c>
      <c><spanx style="verb">data_classification.categories</spanx> items MUST be valid category values if present</c>
      <c>VAL-27</c>
      <c><spanx style="verb">data_classification.retention.min_days</spanx> MUST be less than or equal to <spanx style="verb">max_days</spanx> when both are present</c>
      <c>VAL-28</c>
      <c>Top-level <spanx style="verb">data_classification.sensitivity</spanx> MUST be &gt;= the highest <spanx style="verb">sensitivity</spanx> in any tool or resource <spanx style="verb">data_classification</spanx> (high-water mark)</c>
</texttable>

<t>Implementations <strong>MAY</strong> perform additional validation based on declared profiles.</t>

</section>
<section anchor="unknown-members"><name>Unknown Members</name>

<t>Implementations <strong>MUST</strong> preserve unrecognized members when round-tripping. Implementations <strong>MUST NOT</strong> reject documents containing <spanx style="verb">extensions</spanx> with unknown vendor namespaces. Implementations <strong>MAY</strong> warn on unknown non-extension, non-profile members.</t>

</section>
</section>
<section anchor="interoperability"><name>Interoperability</name>

<section anchor="a2a-agent-card-generation"><name>A2A Agent Card Generation</name>

<t>Implementations <strong>SHOULD</strong> support generating A2A Agent Cards from ADL (e.g., name, description, version, tools-&gt;skills, cryptographic_identity.did-&gt;id, security.authentication-&gt;authentication).</t>

</section>
<section anchor="mcp-server-configuration"><name>MCP Server Configuration</name>

<t>Implementations <strong>SHOULD</strong> support generating MCP server configurations (name, description, version, tools, resources, prompts).</t>

</section>
<section anchor="openapi-integration"><name>OpenAPI Integration</name>

<t>Tools that invoke HTTP APIs <strong>MAY</strong> reference OpenAPI specs. The tool <spanx style="verb">annotations</spanx> object <strong>MAY</strong> contain <spanx style="verb">openapi_ref</spanx> (URI) and <spanx style="verb">operation_id</spanx>.</t>

</section>
</section>
<section anchor="errors"><name>Errors</name>

<section anchor="error-format"><name>Error Format</name>

<t>Implementations <strong>SHOULD</strong> return errors in a consistent format, e.g.:</t>

<t><spanx style="verb">json
{
  "errors": [
    {
      "code": "ADL-1001",
      "title": "Invalid JSON",
      "detail": "Unexpected token at line 42, column 15",
      "source": { "pointer": "/tools/0/name" }
    }
  ]
}
</spanx></t>

<t>The <spanx style="verb">source</spanx> object <strong>MAY</strong> contain: <spanx style="verb">pointer</spanx> (JSON Pointer to the error location), <spanx style="verb">line</spanx> (1-indexed), <spanx style="verb">column</spanx> (1-indexed).</t>

</section>
<section anchor="error-codes"><name>Error Codes</name>

<texttable>
      <ttcol align='left'>Code</ttcol>
      <ttcol align='left'>Category</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c>ADL-1001</c>
      <c>Parse</c>
      <c>Invalid JSON syntax</c>
      <c>ADL-1002</c>
      <c>Parse</c>
      <c>Document is not a JSON object</c>
      <c>ADL-1003</c>
      <c>Schema</c>
      <c>Missing required member</c>
      <c>ADL-1004</c>
      <c>Schema</c>
      <c>Invalid member type</c>
      <c>ADL-1005</c>
      <c>Schema</c>
      <c>Invalid enum value</c>
      <c>ADL-1006</c>
      <c>Schema</c>
      <c>Value does not match pattern</c>
      <c>ADL-2001</c>
      <c>Semantic</c>
      <c>Unsupported ADL version</c>
      <c>ADL-2002</c>
      <c>Semantic</c>
      <c>Duplicate tool name</c>
      <c>ADL-2003</c>
      <c>Semantic</c>
      <c>Duplicate resource name</c>
      <c>ADL-2004</c>
      <c>Semantic</c>
      <c>Duplicate prompt name</c>
      <c>ADL-2005</c>
      <c>Semantic</c>
      <c>Invalid timestamp format</c>
      <c>ADL-2006</c>
      <c>Semantic</c>
      <c>Invalid URI format</c>
      <c>ADL-2007</c>
      <c>Semantic</c>
      <c>Invalid JSON Schema</c>
      <c>ADL-2008</c>
      <c>Semantic</c>
      <c>Invalid tool name pattern</c>
      <c>ADL-2009</c>
      <c>Semantic</c>
      <c>Invalid resource type value</c>
      <c>ADL-2010</c>
      <c>Semantic</c>
      <c>Temperature out of range</c>
      <c>ADL-2011</c>
      <c>Semantic</c>
      <c>Invalid authentication type</c>
      <c>ADL-2012</c>
      <c>Semantic</c>
      <c>Invalid attestation type</c>
      <c>ADL-2013</c>
      <c>Semantic</c>
      <c>Invalid error handling action</c>
      <c>ADL-2014</c>
      <c>Semantic</c>
      <c>Invalid output format</c>
      <c>ADL-2015</c>
      <c>Semantic</c>
      <c>Invalid model capability</c>
      <c>ADL-2016</c>
      <c>Semantic</c>
      <c>Invalid host pattern syntax</c>
      <c>ADL-2017</c>
      <c>Semantic</c>
      <c>Invalid filesystem path pattern</c>
      <c>ADL-2018</c>
      <c>Semantic</c>
      <c>Invalid environment variable pattern</c>
      <c>ADL-2019</c>
      <c>Semantic</c>
      <c>Missing digest fields for digest-mode signature</c>
      <c>ADL-2020</c>
      <c>Semantic</c>
      <c>Invalid data classification sensitivity level</c>
      <c>ADL-2021</c>
      <c>Semantic</c>
      <c>Invalid data classification category</c>
      <c>ADL-2022</c>
      <c>Semantic</c>
      <c>Retention min_days exceeds max_days</c>
      <c>ADL-2023</c>
      <c>Semantic</c>
      <c>Top-level sensitivity below tool/resource sensitivity (high-water mark violation)</c>
      <c>ADL-3001</c>
      <c>Profile</c>
      <c>Profile requirements not satisfied</c>
      <c>ADL-3002</c>
      <c>Profile</c>
      <c>Unknown profile</c>
      <c>ADL-4001</c>
      <c>Security</c>
      <c>Weak key algorithm</c>
      <c>ADL-4002</c>
      <c>Security</c>
      <c>Invalid signature</c>
      <c>ADL-4003</c>
      <c>Security</c>
      <c>Expired attestation</c>
      <c>ADL-5001</c>
      <c>Lifecycle</c>
      <c>Invalid lifecycle status value</c>
      <c>ADL-5002</c>
      <c>Lifecycle</c>
      <c>Successor present on active/draft agent</c>
      <c>ADL-5003</c>
      <c>Lifecycle</c>
      <c>Sunset date in the past with non-retired status</c>
</texttable>

</section>
<section anchor="error-source-examples"><name>Error Source Examples</name>

<t>The <spanx style="verb">source.pointer</spanx> member uses JSON Pointer <xref target="RFC6901"/> to identify the location of the error within the ADL document. The following examples illustrate <spanx style="verb">source</spanx> values for representative error codes from each category:</t>

<t><spanx style="verb">json
// ADL-1003 (Schema): Missing required member "data_classification"
{
  "code": "ADL-1003",
  "title": "Missing required member",
  "detail": "Required member 'data_classification' is missing",
  "source": { "pointer": "" }
}
</spanx></t>

<t><spanx style="verb">json
// ADL-2002 (Semantic): Duplicate tool name at index 2
{
  "code": "ADL-2002",
  "title": "Duplicate tool name",
  "detail": "Tool name 'search_documents' already defined at index 0",
  "source": { "pointer": "/tools/2/name" }
}
</spanx></t>

<t><spanx style="verb">json
// ADL-2016 (Semantic): Invalid host pattern in permissions
{
  "code": "ADL-2016",
  "title": "Invalid host pattern syntax",
  "detail": "Pattern '**' is not a valid host pattern",
  "source": { "pointer": "/permissions/network/allowed_hosts/1" }
}
</spanx></t>

<t><spanx style="verb">json
// ADL-2023 (Semantic): High-water mark violation on a tool
{
  "code": "ADL-2023",
  "title": "High-water mark violation",
  "detail": "Tool 'query_records' has sensitivity 'confidential' which exceeds top-level 'internal'",
  "source": { "pointer": "/tools/1/data_classification/sensitivity" }
}
</spanx></t>

<t><spanx style="verb">json
// ADL-3001 (Profile): Profile requirement not satisfied
{
  "code": "ADL-3001",
  "title": "Profile requirements not satisfied",
  "detail": "Governance profile requires 'compliance' member",
  "source": { "pointer": "/profiles/0" }
}
</spanx></t>

<t><spanx style="verb">json
// ADL-4001 (Security): Weak key algorithm
{
  "code": "ADL-4001",
  "title": "Weak key algorithm",
  "detail": "Algorithm 'RS256' with 1024-bit key does not meet minimum strength requirements",
  "source": { "pointer": "/security/attestation/public_key" }
}
</spanx></t>

<t><spanx style="verb">json
// ADL-5002 (Lifecycle): Successor on active agent
{
  "code": "ADL-5002",
  "title": "Successor present on non-retired agent",
  "detail": "Member 'successor' is only valid when lifecycle.status is 'retired'",
  "source": { "pointer": "/lifecycle/successor" }
}
</spanx></t>

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

<section anchor="media-type-1"><name>Media Type</name>

<t>This document requests IANA to register the <spanx style="verb">application/adl+json</spanx> media type in the "Media Types" registry in accordance with <xref target="RFC6838"/>.</t>

<t><list style="symbols">
  <t><strong>Type name:</strong> application</t>
  <t><strong>Subtype name:</strong> adl+json</t>
  <t><strong>Required parameters:</strong> None</t>
  <t><strong>Optional parameters:</strong>
  <list style="symbols">
      <t><spanx style="verb">profile</spanx>  --  A comma-separated list of ADL profile identifiers (URIs or registered names from the ADL Profile Registry defined in Section 17.2) that the document conforms to. Each identifier <strong>MUST</strong> be a URI conforming to <xref target="RFC3986"/>. Consumers that do not recognize a profile identifier <strong>MAY</strong> ignore the parameter and <strong>MUST</strong> preserve it when retransmitting the document.</t>
    </list></t>
  <t><strong>Encoding considerations:</strong> binary  --  ADL documents are JSON text sequences encoded in UTF-8 <xref target="RFC8259"/>. No other character encoding is permitted. Consistent with <xref target="RFC8259"/>, UTF-8 without a byte-order mark (BOM) is <strong>RECOMMENDED</strong>.</t>
  <t><strong>Security considerations:</strong> ADL documents declare agent behavior including permission grants, system prompt templates, tool invocation configuration, and cryptographic identity. Processors <strong>MUST</strong> treat content from untrusted sources with appropriate caution. Template variables in <spanx style="verb">system_prompt</spanx> and prompt templates use a <spanx style="verb">{{variable_name}}</spanx> substitution syntax; processors <strong>MUST</strong> sanitize variable values before substitution to prevent prompt injection attacks that could alter agent behavior. ADL documents include URI references in fields such as <spanx style="verb">$schema</spanx>, <spanx style="verb">openapi_ref</spanx>, <spanx style="verb">documentation</spanx>, and <spanx style="verb">repository</spanx>; processors <strong>MUST NOT</strong> automatically dereference these URIs from untrusted documents, as doing so may target internal network resources and enable Server-Side Request Forgery (SSRF). Documents that declare broad permissions (e.g., a bare <spanx style="verb">*</spanx> wildcard in <spanx style="verb">allowed_hosts</spanx>) represent elevated risk and <strong>SHOULD</strong> require explicit human review before deployment. Processors <strong>SHOULD</strong> impose limits on document size, JSON nesting depth, and array lengths to prevent resource exhaustion from adversarially crafted documents. For a comprehensive treatment of all security considerations applicable to this media type, see Section 18.</t>
  <t><strong>Interoperability considerations:</strong> ADL documents <strong>MUST</strong> be processed as JSON <xref target="RFC8259"/> regardless of authoring format. YAML is a common authoring convenience, but processors <strong>MUST</strong> operate on the JSON form; documents intended to be signed using JCS <xref target="RFC8785"/> <strong>MUST</strong> be serialized as JSON before signing. Profile declarations  --  whether via the <spanx style="verb">profile</spanx> optional parameter or the <spanx style="verb">profiles</spanx> document member  --  allow multiple profiles to compose within a single document; consumers that partially implement profile requirements <strong>SHOULD</strong> process the members they recognize and preserve unrecognized members per Section 14.3. Validation against the JSON Schema defined in Appendix A provides a baseline interoperability check. Implementations that generate A2A Agent Cards or MCP server configurations from ADL documents <strong>SHOULD</strong> follow the mappings defined in Section 15. Producers <strong>SHOULD</strong> include the <spanx style="verb">$schema</spanx> member to enable tooling-assisted validation.</t>
  <t><strong>Published specification:</strong> [this document]</t>
  <t><strong>Applications that use this media type:</strong> AI agent platforms, agent registries, development tools, orchestration frameworks, and runtime environments that provision and manage AI agents.</t>
  <t><strong>Fragment identifier considerations:</strong> Fragment identifiers for resources of this type <strong>SHOULD</strong> be interpreted as JSON Pointer expressions <xref target="RFC6901"/> identifying a location within the ADL document object.</t>
  <t><strong>Additional information:</strong>
  <list style="symbols">
      <t>Deprecated alias names for this type: N/A</t>
      <t>Magic number(s): N/A</t>
      <t>File extension(s): <spanx style="verb">.adl.json</spanx>, <spanx style="verb">.adl</spanx></t>
      <t>Macintosh file type code(s): N/A</t>
      <t>Object Identifiers: N/A</t>
    </list></t>
  <t><strong>Person and email address to contact for further information:</strong> See the Author's Address section of this document.</t>
  <t><strong>Intended usage:</strong> COMMON</t>
  <t><strong>Restrictions on usage:</strong> None</t>
  <t><strong>Author:</strong> See the Author's Address section of this document.</t>
  <t><strong>Change controller:</strong> IETF</t>
</list></t>

</section>
<section anchor="profile-registry"><name>Profile Registry</name>

<t>IANA is requested to create and maintain a new registry titled <strong>"ADL Profile Registry"</strong> within a new "Agent Definition Language (ADL)" registry group.</t>

<t><strong>Registration Policy:</strong> Specification Required <xref target="RFC8126"/>. The designated expert reviews registration requests to verify that the profile is documented in a publicly available, stable specification and that all required registration template fields are complete.</t>

<t><strong>Registration Template:</strong> Parties wishing to register a profile <strong>MUST</strong> provide all of the following fields:</t>

<texttable>
      <ttcol align='left'>Field</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c>Identifier (URI)</c>
      <c>A URI that uniquely identifies the profile, conforming to <xref target="RFC3986"/>. The URI <strong>SHOULD</strong> be dereferenceable and return a human-readable description of the profile.</c>
      <c>Name</c>
      <c>A short human-readable name for the profile (e.g., "ADL Governance Profile").</c>
      <c>Version</c>
      <c>The profile version string in MAJOR.MINOR.PATCH semantic versioning format.</c>
      <c>Specification Reference</c>
      <c>A stable, publicly accessible URI or document reference for the profile specification. The specification <strong>MUST</strong> define all profile-required members, validation rules, and any additional semantics added by the profile.</c>
      <c>ADL Version Compatibility</c>
      <c>The ADL specification version(s) with which the profile is designed to operate (e.g., "0.1.x").</c>
      <c>Contact</c>
      <c>Name and email address of the person or group responsible for the profile registration.</c>
      <c>Status</c>
      <c>One of: <spanx style="verb">active</spanx> (currently maintained) or <spanx style="verb">deprecated</spanx> (superseded or abandoned).</c>
</texttable>

<t><strong>Initial Registry Contents:</strong></t>

<texttable>
      <ttcol align='left'>Identifier (URI)</ttcol>
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>Version</ttcol>
      <c><spanx style="verb">urn:adl:profile:governance:1.0</spanx></c>
      <c>ADL Governance Profile</c>
      <c>1.0.0</c>
      <c><spanx style="verb">urn:adl:profile:portfolio:1.0</spanx></c>
      <c>ADL Portfolio Profile</c>
      <c>1.0.0</c>
      <c><spanx style="verb">urn:adl:profile:healthcare:1.0</spanx></c>
      <c>ADL Healthcare Profile</c>
      <c>1.0.0</c>
      <c><spanx style="verb">urn:adl:profile:financial:1.0</spanx></c>
      <c>ADL Financial Profile</c>
      <c>1.0.0</c>
</texttable>

<t>All initial entries reference Appendix C of this document, target ADL compatibility 0.1.x, are <spanx style="verb">active</spanx>, and list the Author's Address as contact.</t>

<t><strong>Designated Expert Criteria:</strong> The designated expert <strong>SHOULD</strong> evaluate requests against the following criteria:</t>

<t><list style="numbers" type="1">
  <t><strong>Publicly available specification:</strong> The profile specification <strong>MUST</strong> be accessible at a stable, public URI. Specifications behind paywalls or access controls are not acceptable for registration.</t>
  <t><strong>Non-conflict with core ADL:</strong> The profile <strong>MUST NOT</strong> redefine or contradict normative requirements of the core ADL specification. Profiles <strong>MAY</strong> add new members, constrain optional members to a subset of permitted values, or require that optional core members be present.</t>
  <t><strong>Complete registration template:</strong> All required template fields <strong>MUST</strong> be present and non-empty. Incomplete registrations <strong>MUST</strong> be returned to the submitter.</t>
  <t><strong>Stable identifier:</strong> The profile URI <strong>SHOULD</strong> be dereferenceable and <strong>SHOULD</strong> remain stable over time. Ephemeral or frequently changing URIs are not acceptable.</t>
  <t><strong>Legitimate purpose:</strong> The profile <strong>SHOULD</strong> address a genuine domain or deployment need not already covered by an existing active registered profile.</t>
</list></t>

</section>
<section anchor="urn-namespace"><name>URN Namespace</name>

<t>IANA is requested to register the <spanx style="verb">adl</spanx> URN namespace identifier in the "Formal URN Namespaces" registry in accordance with <xref target="RFC8141"/>.</t>

<t><list style="symbols">
  <t><strong>Namespace Identifier:</strong> <spanx style="verb">adl</spanx></t>
  <t><strong>Version:</strong> 1</t>
  <t><strong>Date:</strong> [date of publication]</t>
  <t><strong>Registrant:</strong> See the Author's Address section of this document.</t>
  <t><strong>Purpose:</strong> The <spanx style="verb">urn:adl:</spanx> namespace provides persistent, location-independent identifiers for ADL agents, profiles, and related artifacts. These identifiers are intended for use in offline catalogs, air-gapped environments, and internal registries where network resolution is unavailable. For connected environments, HTTPS URIs (Section 6.1) are the <strong>RECOMMENDED</strong> identifier format.</t>
  <t><strong>Syntax:</strong> URNs in this namespace conform to the following structure: <spanx style="verb">urn:adl:{type}:{namespace}:{name}:{version}</spanx> where <spanx style="verb">{type}</spanx> is one of <spanx style="verb">agent</spanx> or <spanx style="verb">profile</spanx>, <spanx style="verb">{namespace}</spanx> is a lowercase alphanumeric organization identifier, <spanx style="verb">{name}</spanx> is a lowercase alphanumeric resource name with hyphens, and <spanx style="verb">{version}</spanx> is a semantic version string. The formal syntax is defined by the <spanx style="verb">adl-urn</spanx> production in Appendix D.</t>
  <t><strong>Assignment:</strong> Sub-namespace assignment under <spanx style="verb">urn:adl:profile:</spanx> is governed by the ADL Profile Registry (Section 17.2). Sub-namespace assignment under <spanx style="verb">urn:adl:agent:</spanx> is at the discretion of the namespace holder; no central registry is required for agent URNs.</t>
  <t><strong>Security and Privacy:</strong> URN identifiers in this namespace are opaque strings and carry no inherent security properties. Implementations <strong>MUST NOT</strong> infer ownership, trust, or authorization from a <spanx style="verb">urn:adl:</spanx> identifier alone. Verification of agent identity <strong>MUST</strong> rely on the mechanisms described in Section 6.3 (Cryptographic Identity) and Section 10.3 (Attestation). See Section 18 for comprehensive security considerations.</t>
</list></t>

</section>
<section anchor="well-known-uri"><name>Well-Known URI</name>

<t>IANA is requested to register the <spanx style="verb">adl-agents</spanx> well-known URI suffix in the "Well-Known URIs" registry in accordance with <xref target="RFC8615"/>.</t>

<t><list style="symbols">
  <t><strong>URI suffix:</strong> adl-agents</t>
  <t><strong>Change controller:</strong> IETF</t>
  <t><strong>Specification document:</strong> Section 6.4 of [this document]</t>
  <t><strong>Status:</strong> permanent</t>
  <t><strong>Related information:</strong> The well-known URI <spanx style="verb">https://{domain}/.well-known/adl-agents</spanx> returns a JSON document listing all ADL agents published by the domain authority. The document format is defined in Section 6.4. The resource <strong>MUST</strong> be served over HTTPS.</t>
</list></t>

</section>
</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<section anchor="document-integrity"><name>Document Integrity</name>

<t>ADL documents define agent behavior, permission grants, and security requirements. The trust model for an ADL document depends on its provenance and the integrity mechanisms applied to it. Unsigned ADL documents from untrusted or unverified sources <strong>MUST</strong> be treated as potentially malicious.</t>

<t>When a document includes a cryptographic signature in <spanx style="verb">security.attestation.signature</spanx>, implementations <strong>MUST</strong> verify the signature before acting on the document's permission or security declarations. Signature verification requires serializing the document (with the signature object removed) using JCS <xref target="RFC8785"/> to produce a canonical byte sequence, then verifying the resulting digest using the algorithm and public key declared in <spanx style="verb">cryptographic_identity</spanx>. Implementations <strong>MUST</strong> reject documents that claim to be signed but whose signature does not verify. Implementations <strong>SHOULD</strong> warn when processing signed documents whose attestation has expired (<spanx style="verb">expires_at</spanx> is in the past). An ADL document whose permissions or capabilities have been modified after signing will produce a different canonical byte sequence and fail signature verification; this is the intended behavior and provides protection against privilege escalation via document tampering.</t>

</section>
<section anchor="sensitive-data-in-adl-documents"><name>Sensitive Data in ADL Documents</name>

<t>ADL documents <strong>SHOULD NOT</strong> contain secrets, credentials, or other sensitive data in plaintext. Fields such as <spanx style="verb">system_prompt</spanx>, <spanx style="verb">provider.contact</spanx>, <spanx style="verb">metadata.authors</spanx>, and tool parameter examples may inadvertently expose confidential information if documents are logged, cached, or transmitted without adequate access controls.</t>

<t>API keys, passwords, private keys, bearer tokens, and other authentication material <strong>MUST NOT</strong> appear as literal string values in ADL documents. Where agent configuration requires secret values at runtime, implementations <strong>SHOULD</strong> use environment variable references or external secret manager URIs rather than embedding values directly. Implementations <strong>SHOULD</strong> warn when string values match patterns commonly associated with credentials (e.g., values matching the format of known API key prefixes). Organizations <strong>SHOULD</strong> subject ADL documents to the same secret-scanning controls applied to source code repositories before storage or distribution.</t>

</section>
<section anchor="template-injection"><name>Template Injection</name>

<t>The <spanx style="verb">system_prompt</spanx> member (Section 7.2) and <spanx style="verb">prompts[*].template</spanx> members (Section 8.3) support a template substitution syntax using <spanx style="verb">{{variable_name}}</spanx> placeholders. If variable values are derived from untrusted user input and substituted without sanitization, an attacker may be able to alter agent behavior by injecting malicious instructions into the rendered prompt  --  including instructions that override the intended agent behavior or cause the agent to exfiltrate information.</t>

<t>Implementations <strong>MUST</strong> sanitize template variable values before substitution. At minimum, implementations <strong>SHOULD</strong> escape or reject values that contain the template delimiter sequence <spanx style="verb">{{</spanx> or <spanx style="verb">}}</spanx>, and <strong>SHOULD</strong> apply length limits to variable values. Applications that allow end users to supply template variable values <strong>SHOULD</strong> treat such values as untrusted and apply content validation appropriate to the deployment context. Runtimes operating on agents with <spanx style="verb">data_classification.sensitivity</spanx> of <spanx style="verb">confidential</spanx> or <spanx style="verb">restricted</spanx> <strong>SHOULD</strong> log rendered prompts (after variable substitution) to enable post-incident review, subject to applicable privacy constraints.</t>

</section>
<section anchor="information-disclosure"><name>Information Disclosure</name>

<t>ADL documents may reveal infrastructure details that are useful to attackers. The <spanx style="verb">name</spanx>, <spanx style="verb">description</spanx>, and tool <spanx style="verb">description</spanx> fields may disclose the existence of internal services or system architecture. The <spanx style="verb">permissions.network.allowed_hosts</spanx> list may reveal internal hostname patterns, private IP ranges, or internal service naming conventions. The <spanx style="verb">permissions.filesystem.allowed_paths</spanx> list may reveal sensitive directory structures. The <spanx style="verb">provider.url</spanx>, <spanx style="verb">metadata.documentation</spanx>, and <spanx style="verb">metadata.repository</spanx> fields may reference internal systems not intended for public visibility.</t>

<t>ADL documents intended for public distribution <strong>SHOULD</strong> be reviewed to remove or generalize infrastructure-specific information. Host patterns <strong>SHOULD</strong> use registered domain names rather than IP addresses or internal hostnames. Path patterns <strong>SHOULD</strong> avoid exposing sensitive directory names. Documents with <spanx style="verb">data_classification.sensitivity</spanx> of <spanx style="verb">confidential</spanx> or <spanx style="verb">restricted</spanx> <strong>SHOULD</strong> only be distributed to parties with appropriate access authorization and <strong>SHOULD NOT</strong> be published to public registries without thorough review.</t>

</section>
<section anchor="resource-exhaustion"><name>Resource Exhaustion</name>

<t>Implementations that parse and validate ADL documents are susceptible to resource exhaustion from adversarially crafted inputs. Specific attack vectors include: deeply nested JSON Schema in <spanx style="verb">parameters</spanx> and <spanx style="verb">returns</spanx> members (including circular <spanx style="verb">$ref</spanx> chains or exponentially expanding <spanx style="verb">allOf</spanx>/<spanx style="verb">anyOf</spanx> combinators); documents with very large numbers of tools, resources, or prompts; and documents with excessively long string values in <spanx style="verb">system_prompt</spanx>, description fields, or pattern arrays.</t>

<t>Implementations <strong>SHOULD</strong> enforce and document limits on: total document size (recommended maximum: 1 MB); JSON nesting depth (recommended maximum: 32 levels); number of entries in <spanx style="verb">tools</spanx>, <spanx style="verb">resources</spanx>, and <spanx style="verb">prompts</spanx> arrays (recommended maximum: 1000 each); string length for <spanx style="verb">system_prompt</spanx> and description fields (recommended maximum: 1 MB per field); and number of entries in any permission pattern array (recommended maximum: 500 patterns per domain). Implementations <strong>SHOULD</strong> terminate processing with an appropriate error code when any of these limits is exceeded rather than continuing to consume resources.</t>

</section>
<section anchor="pattern-matching-abuse"><name>Pattern Matching Abuse</name>

<t>The permission pattern syntax (Section 4.4) governs access grants across network, filesystem, environment variable, and execution domains. Overly permissive patterns undermine the deny-by-default permission model; patterns that are expensive to evaluate can enable denial-of-service.</t>

<t>A bare <spanx style="verb">*</spanx> as the sole value of an entry in <spanx style="verb">allowed_hosts</spanx> grants access to all hostnames and effectively disables network permission enforcement. Implementations <strong>MUST</strong> warn when a bare <spanx style="verb">*</spanx> wildcard is used in any security-sensitive permission pattern, including <spanx style="verb">allowed_hosts</spanx> and <spanx style="verb">allowed_variables</spanx>. Implementations <strong>SHOULD</strong> require explicit user acknowledgment  --  or refuse to deploy  --  agents that use bare <spanx style="verb">*</spanx> patterns in these domains. Pattern evaluation <strong>SHOULD</strong> be bounded in time and space: implementations that use backtracking pattern matchers <strong>SHOULD</strong> reject or normalize patterns that would require exponential backtracking (e.g., consecutive wildcards such as <spanx style="verb">***</spanx>). The <spanx style="verb">**</spanx> multi-segment wildcard <strong>MUST NOT</strong> appear in host, environment, or command patterns, and implementations <strong>MUST</strong> reject documents in which it does.</t>

</section>
<section anchor="uri-reference-attacks-ssrf"><name>URI Reference Attacks (SSRF)</name>

<t>Multiple ADL fields accept URI values: <spanx style="verb">$schema</spanx>, <spanx style="verb">id</spanx>, <spanx style="verb">provider.url</spanx>, <spanx style="verb">metadata.documentation</spanx>, <spanx style="verb">metadata.repository</spanx>, <spanx style="verb">resource.uri</spanx>, <spanx style="verb">tool.annotations.openapi_ref</spanx>, <spanx style="verb">lifecycle.successor</spanx>, <spanx style="verb">security.attestation.issuer</spanx>, and others defined by profiles. If an implementation automatically dereferences these URIs when processing a document from an untrusted source, an attacker may cause the implementation to issue requests to arbitrary endpoints, including internal services not reachable from the public internet  --  a class of vulnerability known as Server-Side Request Forgery (SSRF).</t>

<t>Implementations <strong>MUST NOT</strong> automatically dereference URI values from ADL documents received from untrusted sources without explicit operator or user consent. Implementations that fetch external schema documents (e.g., via <spanx style="verb">$schema</spanx>) for validation purposes <strong>SHOULD</strong> use an allowlist of trusted schema hosts and <strong>MUST NOT</strong> follow redirects that leave the trusted set. When fetching <spanx style="verb">openapi_ref</spanx> documents for tool description or validation, implementations <strong>SHOULD</strong> verify that the target URI matches a pre-approved allowlist. Implementations <strong>SHOULD</strong> validate that URI values in ADL documents conform to <xref target="RFC3986"/> and <strong>SHOULD</strong> reject URIs with schemes other than <spanx style="verb">https</spanx>, <spanx style="verb">http</spanx>, or <spanx style="verb">urn</spanx> unless the deployment context explicitly allows them.</t>

</section>
<section anchor="canonicalization-attacks"><name>Canonicalization Attacks</name>

<t>ADL supports document integrity verification via cryptographic signatures using JCS canonicalization <xref target="RFC8785"/>. The security of this mechanism depends on all conforming implementations producing identical canonical byte sequences for the same logical document. Subtle differences in JCS implementations  --  such as incorrect handling of Unicode escape sequences, floating-point number serialization, or object member ordering  --  could cause a legitimate signature to fail verification, or, more critically, allow an attacker to construct a document where different implementations produce different canonical forms, potentially enabling a signature verification bypass.</t>

<t>Implementations <strong>MUST</strong> use a conformant JCS <xref target="RFC8785"/> implementation for both signing and verification. Implementations <strong>SHOULD</strong> validate their JCS implementation against the test vectors provided in RFC 8785 before use in a production environment. Implementations <strong>MUST NOT</strong> verify signatures against non-canonical serializations such as pretty-printed JSON or YAML. Implementations that process ADL documents containing IEEE 754 floating-point values in signed content <strong>SHOULD</strong> be aware that platform-specific floating-point representation differences may affect canonicalization and <strong>SHOULD</strong> avoid floating-point values in fields that will be signed when possible.</t>

</section>
<section anchor="privacy-considerations"><name>Privacy Considerations</name>

<t>ADL documents may contain personal information subject to applicable privacy regulations. The <spanx style="verb">provider.contact</spanx> field (Section 6.2) contains a contact email address. The <spanx style="verb">metadata.authors</spanx> array (Section 12.1) may contain author names, email addresses, and URLs. The <spanx style="verb">system_prompt</spanx> member may contain information about intended user roles, user populations, or organizational context. When ADL documents are published to public registries or shared broadly, this information becomes publicly accessible.</t>

<t>Publishers <strong>SHOULD</strong> review ADL documents for personally identifiable information (PII) before public distribution and <strong>SHOULD</strong> use organizational or role-based contact addresses rather than personal email addresses. Implementations that log ADL document contents for debugging or auditing <strong>SHOULD</strong> redact or omit <spanx style="verb">provider.contact</spanx>, <spanx style="verb">metadata.authors</spanx>, and <spanx style="verb">system_prompt</spanx> fields from logs unless there is a documented operational requirement to retain them. Users <strong>SHOULD</strong> be informed when their ADL documents are transmitted to third-party services for validation, indexing, or registry queries.</t>

</section>
<section anchor="privilege-escalation"><name>Privilege Escalation</name>

<t>An ADL document that has been modified  --  whether by a malicious actor during transmission or by a compromised storage or distribution system  --  could grant an agent permissions or capabilities beyond those that were reviewed and approved for deployment. This risk is the primary motivator for the integrity mechanisms described in Section 10.3.</t>

<t>Implementations <strong>SHOULD</strong> verify document integrity (Section 10.3) before enforcing the permissions declared in a document, particularly when documents are retrieved from network locations, shared storage systems, or public registries. Runtimes that cannot verify document integrity <strong>SHOULD</strong> apply compensating controls  --  such as mandatory human review  --  before deploying agents that declare elevated permissions or sensitive data access. When a document's <spanx style="verb">data_classification.sensitivity</spanx> is <spanx style="verb">confidential</spanx> or <spanx style="verb">restricted</spanx>, runtimes <strong>SHOULD</strong> require a verified signature or a verified supply chain (e.g., document retrieved from a trusted registry over an authenticated and integrity-protected channel) before provisioning. Organizations <strong>SHOULD</strong> maintain an inventory of approved ADL documents along with their expected signatures or cryptographic digests, and <strong>SHOULD</strong> treat any discrepancy between the recorded and observed document as a potential security incident.</t>

</section>
<section anchor="cross-origin-and-supply-chain-concerns"><name>Cross-Origin and Supply Chain Concerns</name>

<t>ADL documents may be fetched from remote sources: registries, source control systems, artifact stores, or agent marketplaces. A document tampered with in transit or at the origin could cause a runtime to provision a malicious agent without the operator's knowledge.</t>

<t>ADL documents <strong>SHOULD</strong> be fetched over authenticated, integrity-protected channels (HTTPS with full certificate validation). Implementations <strong>SHOULD</strong> verify document signatures (Section 10.3) when documents are retrieved from remote or third-party sources. Implementations <strong>SHOULD</strong> validate that the signing identity declared in <spanx style="verb">cryptographic_identity</spanx> matches an expected, trusted identity for the document's declared <spanx style="verb">provider</spanx>.</t>

<t>Supply chain integrity requires attention at every reference boundary: the ADL document itself, referenced OpenAPI specifications (<spanx style="verb">openapi_ref</spanx>), and external JSON Schemas (<spanx style="verb">$schema</spanx>). Implementations that automatically resolve external references during provisioning <strong>SHOULD</strong> pin or verify all such references. When accepting ADL documents from third-party sources, implementations <strong>SHOULD</strong> apply an allowlist of trusted providers (based on <spanx style="verb">provider.name</spanx> or <spanx style="verb">id</spanx> URI authority), verify attestation signatures from trusted issuers, and treat documents from unverified sources with the same caution applied to untrusted executable code.</t>

</section>
<section anchor="permission-model-and-defense-in-depth"><name>Permission Model and Defense in Depth</name>

<t>The deny-by-default permission model (Section 9.1) is a foundational security property of ADL: an agent can only access resources and capabilities that its ADL document explicitly permits. However, the effectiveness of this model depends entirely on the runtime correctly enforcing declared permissions. No permission model is a substitute for defense in depth.</t>

<t>Runtimes <strong>MUST</strong> enforce declared permissions and <strong>MUST NOT</strong> allow agents to exceed those permissions under any circumstances, including error conditions or fallback behaviors. Runtimes that cannot enforce a specific permission domain (e.g., because the underlying platform lacks the required isolation primitives) <strong>MUST</strong> warn users before execution and <strong>SHOULD</strong> refuse to execute the agent unless the user explicitly acknowledges the limitation.</t>

<t>Beyond permission enforcement, runtimes <strong>SHOULD</strong> monitor agent behavior during execution: logging tool invocations, recording network destinations contacted, and alerting on anomalous activity such as repeated attempts to access resources outside declared permissions. The ADL document represents intended access boundaries at definition time; runtime monitoring ensures actual behavior remains within those boundaries in production.</t>

<t>Runtimes <strong>SHOULD</strong> validate tool inputs and outputs against the declared JSON Schema (Section 8.1) before passing them to or from the agent. Malformed responses from external tool implementations could inject unexpected data into agent reasoning; runtime-level schema validation provides a defense against malfunctioning or malicious tool backends. Tools annotated with <spanx style="verb">requires_confirmation: true</spanx> <strong>MUST</strong> receive explicit user confirmation before invocation; runtimes <strong>MUST NOT</strong> invoke such tools autonomously regardless of other configuration.</t>

<t>Lifecycle status <strong>MUST</strong> be enforced as a security boundary. Runtimes <strong>MUST NOT</strong> provision or execute agents with <spanx style="verb">lifecycle.status</spanx> of <spanx style="verb">retired</spanx>. Retired agents may have revoked credentials, unpatched vulnerabilities, or stale permission configurations. Agents with <spanx style="verb">lifecycle.status</spanx> of <spanx style="verb">deprecated</spanx> <strong>SHOULD</strong> trigger warnings to operators, who <strong>SHOULD</strong> migrate to the agent identified by <spanx style="verb">lifecycle.successor</spanx> before the <spanx style="verb">sunset_date</spanx> is reached.</t>

</section>
</section>


  </middle>

  <back>


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

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



<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="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="RFC6838">
  <front>
    <title>Media Type Specifications and Registration Procedures</title>
    <author fullname="N. Freed" initials="N." surname="Freed"/>
    <author fullname="J. Klensin" initials="J." surname="Klensin"/>
    <author fullname="T. Hansen" initials="T." surname="Hansen"/>
    <date month="January" year="2013"/>
    <abstract>
      <t>This document defines procedures for the specification and registration of media types for use in HTTP, MIME, and other Internet protocols. This memo documents an Internet Best Current Practice.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="13"/>
  <seriesInfo name="RFC" value="6838"/>
  <seriesInfo name="DOI" value="10.17487/RFC6838"/>
</reference>
<reference anchor="RFC6901">
  <front>
    <title>JavaScript Object Notation (JSON) Pointer</title>
    <author fullname="P. Bryan" initials="P." role="editor" surname="Bryan"/>
    <author fullname="K. Zyp" initials="K." surname="Zyp"/>
    <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
    <date month="April" year="2013"/>
    <abstract>
      <t>JSON Pointer defines a string syntax for identifying a specific value within a JavaScript Object Notation (JSON) document.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="6901"/>
  <seriesInfo name="DOI" value="10.17487/RFC6901"/>
</reference>
<reference anchor="RFC8126">
  <front>
    <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
    <author fullname="M. Cotton" initials="M." surname="Cotton"/>
    <author fullname="B. Leiba" initials="B." surname="Leiba"/>
    <author fullname="T. Narten" initials="T." surname="Narten"/>
    <date month="June" year="2017"/>
    <abstract>
      <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
      <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
      <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="26"/>
  <seriesInfo name="RFC" value="8126"/>
  <seriesInfo name="DOI" value="10.17487/RFC8126"/>
</reference>
<reference anchor="RFC8141">
  <front>
    <title>Uniform Resource Names (URNs)</title>
    <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre"/>
    <author fullname="J. Klensin" initials="J." surname="Klensin"/>
    <date month="April" year="2017"/>
    <abstract>
      <t>A Uniform Resource Name (URN) is a Uniform Resource Identifier (URI) that is assigned under the "urn" URI scheme and a particular URN namespace, with the intent that the URN will be a persistent, location-independent resource identifier. With regard to URN syntax, this document defines the canonical syntax for URNs (in a way that is consistent with URI syntax), specifies methods for determining URN-equivalence, and discusses URI conformance. With regard to URN namespaces, this document specifies a method for defining a URN namespace and associating it with a namespace identifier, and it describes procedures for registering namespace identifiers with the Internet Assigned Numbers Authority (IANA). This document obsoletes both RFCs 2141 and 3406.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8141"/>
  <seriesInfo name="DOI" value="10.17487/RFC8141"/>
</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="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="RFC8615">
  <front>
    <title>Well-Known Uniform Resource Identifiers (URIs)</title>
    <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
    <date month="May" year="2019"/>
    <abstract>
      <t>This memo defines a path prefix for "well-known locations", "/.well-known/", in selected Uniform Resource Identifier (URI) schemes.</t>
      <t>In doing so, it obsoletes RFC 5785 and updates the URI schemes defined in RFC 7230 to reserve that space. It also updates RFC 7595 to track URI schemes that support well-known URIs in their registry.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8615"/>
  <seriesInfo name="DOI" value="10.17487/RFC8615"/>
</reference>



    </references>

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



<reference anchor="RFC8785">
  <front>
    <title>JSON Canonicalization Scheme (JCS)</title>
    <author fullname="A. Rundgren" initials="A." surname="Rundgren"/>
    <author fullname="B. Jordan" initials="B." surname="Jordan"/>
    <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
    <date month="June" year="2020"/>
    <abstract>
      <t>Cryptographic operations like hashing and signing need the data to be expressed in an invariant format so that the operations are reliably repeatable. One way to address this is to create a canonical representation of the data. Canonicalization also permits data to be exchanged in its original form on the "wire" while cryptographic operations performed on the canonicalized counterpart of the data in the producer and consumer endpoints generate consistent results.</t>
      <t>This document describes the JSON Canonicalization Scheme (JCS). This specification defines how to create a canonical representation of JSON data by building on the strict serialization methods for JSON primitives defined by ECMAScript, constraining JSON data to the Internet JSON (I-JSON) subset, and by using deterministic property sorting.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8785"/>
  <seriesInfo name="DOI" value="10.17487/RFC8785"/>
</reference>

<reference anchor="A2A" target="https://a2a-protocol.org/specification">
  <front>
    <title>Agent-to-Agent Protocol Specification</title>
    <author >
      <organization>A2A Protocol Working Group</organization>
    </author>
    <date year="2025"/>
  </front>
</reference>
<reference anchor="JSON-SCHEMA" target="https://json-schema.org/draft/2020-12/json-schema-core">
  <front>
    <title>JSON Schema: A Media Type for Describing JSON Documents</title>
    <author initials="A." surname="Wright" fullname="Austin Wright">
      <organization></organization>
    </author>
    <date year="2020"/>
  </front>
</reference>
<reference anchor="MCP" target="https://modelcontextprotocol.io/specification">
  <front>
    <title>Model Context Protocol Specification</title>
    <author >
      <organization>Anthropic</organization>
    </author>
    <date year="2024"/>
  </front>
</reference>
<reference anchor="OPENAPI" target="https://spec.openapis.org/oas/v3.1.0">
  <front>
    <title>OpenAPI Specification</title>
    <author >
      <organization>OpenAPI Initiative</organization>
    </author>
    <date year="2024"/>
  </front>
</reference>
<reference anchor="W3C.DID" target="https://www.w3.org/TR/did-core/">
  <front>
    <title>Decentralized Identifiers (DIDs) v1.0</title>
    <author initials="M." surname="Sporny" fullname="Manu Sporny">
      <organization></organization>
    </author>
    <date year="2022"/>
  </front>
</reference>
<reference anchor="W3C.VC" target="https://www.w3.org/TR/vc-data-model/">
  <front>
    <title>Verifiable Credentials Data Model v1.1</title>
    <author initials="M." surname="Sporny" fullname="Manu Sporny">
      <organization></organization>
    </author>
    <date year="2022"/>
  </front>
</reference>
<reference anchor="ISO-22989" target="https://www.iso.org/standard/74296.html">
  <front>
    <title>Information technology -- Artificial intelligence -- Artificial intelligence concepts and terminology</title>
    <author >
      <organization>ISO/IEC JTC 1/SC 42</organization>
    </author>
    <date year="2022"/>
  </front>
  <seriesInfo name="ISO/IEC" value="22989:2022"/>
</reference>
<reference anchor="AI-PROTOCOLS" target="https://datatracker.ietf.org/doc/html/draft-rosenberg-ai-protocols-00">
  <front>
    <title>Framework, Use Cases and Requirements for AI Agent Protocols</title>
    <author initials="J." surname="Rosenberg" fullname="Jonathan Rosenberg">
      <organization></organization>
    </author>
    <date year="2025"/>
  </front>
  <seriesInfo name="Internet-Draft" value="draft-rosenberg-ai-protocols-00"/>
</reference>


    </references>

</references>


<?line 1516?>

<section anchor="json-schema"><name>JSON Schema</name>

<t>The normative JSON Schema for ADL is available at <spanx style="verb">https://adl-spec.org/0.2/schema.json</spanx> (JSON Schema Draft 2020-12). A minimal required-fields schema is provided in <eref target="./schema.json">schema.json</eref> in this directory.</t>

</section>
<section anchor="examples"><name>Examples</name>

<t>See the <eref target="./examples/">examples/</eref> directory:</t>

<t><list style="symbols">
  <t><strong>Minimal:</strong> <eref target="./examples/minimal.yaml">minimal.yaml</eref></t>
  <t><strong>Agent with tools:</strong> <eref target="./examples/with-tools.yaml">with-tools.yaml</eref></t>
  <t><strong>Production agent:</strong> <eref target="./examples/production.yaml">production.yaml</eref></t>
</list></t>

</section>
<section anchor="profiles-1"><name>Profiles</name>

<t>ADL profiles are maintained in the <eref target="../../profiles/">profiles/</eref> directory. Each profile is versioned independently and declares compatibility with ADL versions.</t>

<section anchor="available-profiles"><name>Available Profiles</name>

<texttable>
      <ttcol align='left'>Profile</ttcol>
      <ttcol align='left'>Identifier</ttcol>
      <ttcol align='left'>Status</ttcol>
      <c><eref target="../../profiles/governance/overview">Governance</eref></c>
      <c><spanx style="verb">urn:adl:profile:governance:1.0</spanx></c>
      <c>Draft</c>
      <c><eref target="../../profiles/portfolio/overview">Portfolio</eref></c>
      <c><spanx style="verb">urn:adl:profile:portfolio:1.0</spanx></c>
      <c>Draft</c>
      <c><eref target="../../profiles/healthcare/overview">Healthcare</eref></c>
      <c><spanx style="verb">urn:adl:profile:healthcare:1.0</spanx></c>
      <c>Draft</c>
      <c><eref target="../../profiles/financial/overview">Financial</eref></c>
      <c><spanx style="verb">urn:adl:profile:financial:1.0</spanx></c>
      <c>Draft</c>
</texttable>

<t>See the <eref target="../../profiles/">profiles/</eref> directory for the full profile index and contribution guidelines.</t>

</section>
</section>
<section anchor="abnf-grammar"><name>ABNF Grammar</name>

<t>This appendix defines formal ABNF grammar productions (RFC 5234 / RFC 7405) for syntactic constructs specified in this document. All productions use ASCII character references consistent with RFC 5234, Appendix B. The core ABNF rules <spanx style="verb">ALPHA</spanx> (letters), <spanx style="verb">DIGIT</spanx> (decimal digits), and <spanx style="verb">VCHAR</spanx> (visible ASCII characters) are defined in RFC 5234 Section 6 (B.1).</t>

<t>&lt;CODE BEGINS&gt;
```abnf
; Semantic Versioning format (Sections 5.1, 5.5)
semver          = 1<em>DIGIT "." 1</em>DIGIT "." 1*DIGIT</t>

<t>; Tool name (Section 8.1)
; All alpha characters MUST be lowercase; satisfies ^[a-z][a-z0-9<em>]*$
tool-name       = lc-alpha *( lc-alpha / DIGIT / "</em>" )
lc-alpha        = %x61-7A          ; a-z (lowercase letters only)</t>

<t>; Vendor extension namespace key (Section 4.3)
; Reverse-domain notation, minimum two segments
vendor-key     = domain-segment 1*("." domain-segment)
domain-segment = lc-alpha *(lc-alpha / DIGIT / "-")</t>

<t>; Template variable (Sections 7.2, 8.3)
; Used in system_prompt templates and prompt templates
template-var    = 2%x7B var-name 2%x7D
var-name        = ALPHA *( ALPHA / DIGIT / "_" )
                  ; First character MUST be a letter (upper or lowercase)</t>

<t>; Tag (Section 12.5)
; Lowercase alphanumeric characters and hyphens
tag             = 1*( lc-alpha / DIGIT / "-" )</t>

<t>; Pattern syntax (Section 4.4)
; An ADL pattern consists of literal characters and optional wildcard tokens
pattern         = 1<em>pattern-element
pattern-element = multi-wildcard / single-wildcard / literal-chars
multi-wildcard  = "**"
                  ; Valid only in filesystem path patterns (Section 9.3)
                  ; MUST NOT appear in host, env-variable, or command patterns
single-wildcard = "</em>"
                  ; Matches within one segment; does not cross "." in host
                  ; patterns or "/" in filesystem path patterns
literal-chars   = 1<em>literal-char
literal-char    = %x21-29 / %x2B-7E
                  ; Printable ASCII except "</em>" (%x2A)
                  ; "/" (%x2F) carries segment-boundary meaning in path patterns
                  ; "." (%x2E) carries segment-boundary meaning in host patterns
```
&lt;CODE ENDS&gt;</t>

<section anchor="cross-reference-summary"><name>Cross-Reference Summary</name>

<texttable>
      <ttcol align='left'>Production</ttcol>
      <ttcol align='left'>Normative Section</ttcol>
      <ttcol align='left'>Usage</ttcol>
      <c><spanx style="verb">semver</spanx></c>
      <c>5.1, 5.5</c>
      <c><spanx style="verb">adl_spec</spanx> and <spanx style="verb">version</spanx> values</c>
      <c><spanx style="verb">tool-name</spanx></c>
      <c>8.1</c>
      <c>Tool <spanx style="verb">name</spanx> values</c>
      <c><spanx style="verb">vendor-key</spanx></c>
      <c>4.3</c>
      <c>Vendor extension namespace keys</c>
      <c><spanx style="verb">template-var</spanx></c>
      <c>7.2, 8.3</c>
      <c><spanx style="verb">{{variable}}</spanx> references in templates</c>
      <c><spanx style="verb">tag</spanx></c>
      <c>12.5</c>
      <c><spanx style="verb">metadata.tags</spanx> array items</c>
      <c><spanx style="verb">pattern</spanx></c>
      <c>4.4, 9.2-9.5</c>
      <c>Permission domain pattern strings</c>
</texttable>

</section>
</section>
<section numbered="false" anchor="acknowledgments"><name>Acknowledgments</name>

<t>TBD</t>

</section>


  </back>

<!-- ##markdown-source:
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
vRPoncfBVgHALKUOFdY77Vx2HXAi2ri1bnQwkwNmaV9xXoWoemQZ6njPKeGi
iQrNnLfcQQSnSeQJCyub1ZIieq8L0a39ttyyOzXjzlnNjGTJ6Thsj3EgNaNW
33lLqPNicFqkYtfO/kHtQGVKzb+mpdxqQdQa2hiHgtZEWWsnHDj335p+33Yx
FH3NpbRlakUEnld5J//4wNl2KJueiBh79mhlFMldmtL6yFmWmXZcnrR3XuJS
rFhIEqv1xlRVfODzEj7WzlKVYKMNzjTN0K2y8wYh1FcCc0neF8OhJcZ1/KkZ
pUnTs5ZpvvJ/qFVaF9Fm0aKbdc7yhuBpjRYj6cebQ4VWsI2mkGZKcgQGypeE
2/u2DeAMQSPgjjsj+u/+zmjLYpiUuFBZlJl6WniBhgVJMas4/47ql7a1NTqe
a7fccvg7/TtrPTZv8LCbQpDIzohK3jK+XgDgzhMh+QvRoI44wLKI3dytfN/p
/KjbCw40UDZ4SnJ8q5UeYKtVYqulBjXcynyNuYJsapgwzAb+1/BVE6Zu/ULP
lVSTlO5sje7xJgV36ESugLWTpCj1YWUUbx9xNbK1iC9N0JiX3ALWvOHCGAMe
Z6pZOxpMLHq8GsMPqk6Jf/oqgW0karoZLyuachNVKxZMnY2wsaMtaYfefo51
Mo5tyOZzYeXznKZJHSd2HDTo1rYuJgKw/RIfRm19d6iBBS72QUN4zgNf/4Yp
JQSv6Eu1HBh5h+JCpYEZnYi3NxBAfZKar/YylAH/VVlavvOrnoIzt2ys9+Xq
0PWn3Nj0UK/e4MBHQOHpOC7NJre4KCks9u4GdvAkny+QaDLZcr2t/UfPsN5W
43nxT6SZb/LT0RVUnvT2N66WWwVJRRwoJU2Yxfdn46PeO6X1HntRsSAo7o5p
Pqh4VA1HpSl56l1j9+j556YJBVXXL4esxBRqiwVuojXJ3M303vdHLwe7e/DG
SG/RKCL5VgonazllbLQs3Na9to8hvb7lK73m+qr4xx7ahgfrHz3gsgS+b0vX
g49waqy1XgFB8I8xjmhhP//4Y84Orz8I3CEC3IsePnv62D/8BB62xwbH5ZsQ
7kg/vdpI7uWnvIOGF8Q9rzlr5p1nCP5Zep0gWU6GWHtsWY7cG5rdwt8rBl+7
2ko6zt5uOE5yfZ1QFhH1WB51AaltpL3aipZZmVTfPsx+fZgxE+Dm3sgi0jLC
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
3530/j8SQx6P/nQBAA==

-->

</rfc>

