<?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-00" 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="February" 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 81?>

<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 93?>

<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="relationship-to-other-specifications"><name>Relationship to Other Specifications</name>

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

<t><list style="symbols">
  <t><strong>JSON <xref target="RFC8259"/></strong> — ADL documents are valid JSON.</t>
  <t><strong>JSON Schema <xref target="JSON-SCHEMA"/></strong> — ADL documents are validated against JSON Schema; tool parameters use JSON Schema for types.</t>
  <t><strong>A2A Protocol <xref target="A2A"/></strong> — ADL documents can generate A2A Agent Cards.</t>
  <t><strong>Model Context Protocol (MCP) <xref target="MCP"/></strong> — ADL documents can generate MCP server configurations; tools, resources, and prompts align with MCP primitives.</t>
  <t><strong>OpenAPI <xref target="OPENAPI"/></strong> — ADL can reference OpenAPI specifications for HTTP-based tools.</t>
  <t><strong>W3C DIDs <xref target="W3C.DID"/> / Verifiable Credentials <xref target="W3C.VC"/></strong> — 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 <strong>MUST</strong>, <strong>MUST NOT</strong>, <strong>REQUIRED</strong>, <strong>SHALL</strong>, <strong>SHALL NOT</strong>, <strong>SHOULD</strong>, <strong>SHOULD NOT</strong>, <strong>RECOMMENDED</strong>, <strong>NOT RECOMMENDED</strong>, <strong>MAY</strong>, and <strong>OPTIONAL</strong> in this document are to be interpreted as in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/>.</t>

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

<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 system capable of autonomous operation within defined boundaries, described by an ADL document.</c>
      <c><strong>tool</strong></c>
      <c>A function or capability that an agent can invoke (equivalent to "function" in function-calling).</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.</c>
      <c><strong>runtime</strong></c>
      <c>The system or environment that executes an agent based on its ADL definition.</c>
      <c><strong>model</strong></c>
      <c>The LLM or other AI model that powers the agent's reasoning.</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>Extension members:</strong> Custom data without a full profile. Names <strong>MUST</strong> be prefixed with <spanx style="verb">x_</spanx> followed by a namespace identifier (e.g., <spanx style="verb">x_acme_internal_id</spanx>).</t>
</list></t>

<t>Implementations <strong>MUST</strong> preserve extension members when processing but <strong>MAY</strong> ignore their contents. Implementations <strong>MUST NOT</strong> reject documents containing unknown <spanx style="verb">x_</spanx>-prefixed members.</t>

<t>Extension members (prefixed with <spanx style="verb">x_</spanx>) <strong>MAY</strong> appear in any object within an ADL document, including nested objects such as <spanx style="verb">lifecycle</spanx>, <spanx style="verb">provider</spanx>, <spanx style="verb">model</spanx>, <spanx style="verb">permissions</spanx>, and <spanx style="verb">security</spanx>. Extension member names <strong>MUST</strong> match the pattern <spanx style="verb">x_</spanx> followed by a namespace identifier using only lowercase letters, digits, and underscores (e.g., <spanx style="verb">x_acme_internal_id</spanx>). Extension member names <strong>MUST</strong> conform to the <spanx style="verb">ext-member-name</spanx> production in Appendix D.</t>

<t>Example:</t>

<t><spanx style="verb">json
{
  "name": "Invoice Processor",
  "version": "2.0.0",
  "adl_spec": "0.1.0",
  "description": "Processes and routes invoices.",
  "data_classification": { "sensitivity": "confidential" },
  "x_acme_internal_id": "inv-proc-007",
  "x_acme_cost_center": "engineering",
  "model": {
    "name": "acme-large-2024",
    "x_acme_model_tier": "premium"
  }
}
</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.1.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.1.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.1: <spanx style="verb">https://adl-spec.org/0.1/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 ≥ 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. Profiles <strong>MUST NOT</strong> redefine core ADL members; they <strong>MAY</strong> add top-level members, add members to existing objects, define validation rules, or require specific values for optional members.</t>

<t><strong>Standard profiles (examples):</strong> Governance (<spanx style="verb">urn:adl:profile:governance:1.0</spanx>), Healthcare, Financial. Additional profiles may be registered (e.g., IANA profile registry).</t>

<t>Example:</t>

<t><spanx style="verb">json
{
  "adl_spec": "0.1.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 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 unknown <spanx style="verb">x_</spanx>-prefixed members. 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→skills, cryptographic_identity.did→id, security.authentication→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>
      <ttcol align='left'>Specification Reference</ttcol>
      <ttcol align='left'>ADL Compatibility</ttcol>
      <ttcol align='left'>Contact</ttcol>
      <ttcol align='left'>Status</ttcol>
      <c><spanx style="verb">urn:adl:profile:governance:1.0</spanx></c>
      <c>ADL Governance Profile</c>
      <c>1.0.0</c>
      <c>Appendix C, [this document]</c>
      <c>0.1.x</c>
      <c>See Author's Address</c>
      <c>active</c>
      <c><spanx style="verb">urn:adl:profile:portfolio:1.0</spanx></c>
      <c>ADL Portfolio Profile</c>
      <c>1.0.0</c>
      <c>Appendix C, [this document]</c>
      <c>0.1.x</c>
      <c>See Author's Address</c>
      <c>active</c>
      <c><spanx style="verb">urn:adl:profile:healthcare:1.0</spanx></c>
      <c>ADL Healthcare Profile</c>
      <c>1.0.0</c>
      <c>Appendix C, [this document]</c>
      <c>0.1.x</c>
      <c>See Author's Address</c>
      <c>active</c>
      <c><spanx style="verb">urn:adl:profile:financial:1.0</spanx></c>
      <c>ADL Financial Profile</c>
      <c>1.0.0</c>
      <c>Appendix C, [this document]</c>
      <c>0.1.x</c>
      <c>See Author's Address</c>
      <c>active</c>
</texttable>

<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>
<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>



    </references>

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

<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>


    </references>

</references>


<?line 1369?>

<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.1/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>```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>; Extension member name (Section 4.3)
; "x_" prefix followed by a namespace identifier
ext-member-name = "x_" ns-id
ns-id           = 1*( 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
```</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">ext-member-name</spanx></c>
      <c>4.3</c>
      <c>Custom extension member names</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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
JbxLAQA=

-->

</rfc>

