{"slug":"an-ietf-draft-adds-intent-matching-before-agent-discovery-even-starts","citations":[{"url":"https://www.ietf.org/archive/id/draft-cui-ai-agent-discovery-invocation-01.html","committed_hash":"sha256:950aa7132f9159dba125b27cd1b1fdada420d71a4a2ca1f1a85708bd77596a6d","committed_hash_short":"sha256:950aa713…77596a6d","mime_type":"text/html","committed_at":"2026-09-12T16:00:22.707963+00:00","content_snapshot":"<!DOCTYPE html>\n<html lang=\"en\" class=\"Internet-Draft\">\n<head>\n<meta charset=\"utf-8\">\n<meta content=\"Common,Han,Latin\" name=\"scripts\">\n<meta content=\"initial-scale=1.0\" name=\"viewport\">\n<title>AI Agent Discovery and Invocation Protocol</title>\n<meta content=\"Yong Cui\" name=\"author\">\n<meta content=\"Yihan Chao\" name=\"author\">\n<meta content=\"Chenguang Du\" name=\"author\">\n<meta content=\"\n       This document proposes a standardized protocol for discovery and invocation of AI agents. It defines a common metadata format for describing AI agents (including capabilities, I/O specifications, supported languages, tags, authentication methods, etc.), a capability-based discovery mechanism, and a unified RESTful invocation interface. \n       This revision additionally specifies an optional extension that enables intent-based agent selection prior to discovery and invocation, without changing existing discovery or invocation semantics. \n       The goal is to enable cross-platform interoperability among AI agents by providing a discover-and-match mechanism and a unified invocation entry point. Security considerations, including authentication and trust measures, are also discussed. This specification aims to facilitate the formation of multi-agent systems by making it easy to find the right agent for a task and invoke it in a consistent manner across different vendors and platforms. \n    \" name=\"description\">\n<meta content=\"xml2rfc 3.31.0\" name=\"generator\">\n<meta content=\"AI Agent\" name=\"keyword\">\n<meta content=\"Service Discovery\" name=\"keyword\">\n<meta content=\"draft-cui-ai-agent-discovery-invocation-01\" name=\"ietf.draft\">\n<!-- Generator version information:\n  xml2rfc 3.31.0\n    Python 3.12.12\n    ConfigArgParse 1.7.1\n    google-i18n-address 3.1.1\n    intervaltree 3.2.1\n    Jinja2 3.1.6\n    lxml 6.0.2\n    platformdirs 4.5.1\n    pycountry 24.6.1\n    PyYAML 6.0.3\n    requests 2.32.5\n    wcwidth 0.5.3\n    weasyprint 68.0\n-->\n<link href=\"draft-cui-ai-agent-discovery-invocation-01.xml\" rel=\"alternate\" type=\"application/rfc+xml\">\n<link href=\"#copyright\" rel=\"license\">\n<style type=\"text/css\">/*\n\n  NOTE: Changes at the bottom of this file overrides some earlier settings.\n\n  Once the style has stabilized and has been adopted as an official RFC style,\n  this can be consolidated so that style settings occur only in one place, but\n  for now the contents of this file consists first of the initial CSS work as\n  provided to the RFC Formatter (xml2rfc) work, followed by itemized and\n  commented changes found necessary during the development of the v3\n  formatters.\n\n*/\n\n/* fonts */\n@import url('https://static.ietf.org/fonts/noto-sans/import.css'); /* Sans-serif */\n@import url('https://static.ietf.org/fonts/noto-serif/import.css'); /* Serif (print) */\n@import url('https://static.ietf.org/fonts/roboto-mono/import.css'); /* Monospace */\n\n:root {\n  --font-sans: 'Noto Sans', Arial, Helvetica, sans-serif;\n  --font-serif: 'Noto Serif', 'Times', 'Times New Roman', serif;\n  --font-mono: 'Roboto Mono', Courier, 'Courier New', monospace;\n}\n\n@viewport {\n  zoom: 1.0;\n}\n@-ms-viewport {\n  width: extend-to-zoom;\n  zoom: 1.0;\n}\n/* general and mobile first */\nhtml {\n}\nbody {\n  max-width: 90%;\n  margin: 1.5em auto;\n  color: #222;\n  background-color: #fff;\n  font-size: 14px;\n  font-family: var(--font-sans);\n  line-height: 1.6;\n  scroll-behavior: smooth;\n  overflow-wrap: break-word;\n}\n.ears {\n  display: none;\n}\n\n/* headings */\n#title, h1, h2, h3, h4, h5, h6 {\n  margin: 1em 0 0.5em;\n  font-weight: bold;\n  line-height: 1.3;\n}\n#title {\n  clear: both;\n  border-bottom: 1px solid #ddd;\n  margin: 0 0 0.5em 0;\n  padding: 1em 0 0.5em;\n}\n.author {\n  padding-bottom: 4px;\n}\nh1 {\n  font-size: 26px;\n  margin: 1em 0;\n}\nh2 {\n  font-size: 22px;\n  margin-top: -20px;  /* provide offset for in-page anchors */\n  padding-top: 33px;\n}\nh3 {\n  font-size: 18px;\n  margin-top: -36px;  /* provide offset for in-page anchors */\n  padding-top: 42px;\n}\nh4 {\n  font-size: 16px;\n  margin-top: -36px;  /* provide offset for in-page anchors */\n  padding-top: 42px;\n}\nh5, h6 {\n  font-size: 14px;\n}\n#n-copyright-notice {\n  border-bottom: 1px solid #ddd;\n  padding-bottom: 1em;\n  margin-bottom: 1em;\n}\n/* general structure */\np {\n  padding: 0;\n  margin: 0 0 1em 0;\n  text-align: left;\n}\ndiv, span {\n  position: relative;\n}\ndiv {\n  margin: 0;\n}\n.alignRight.art-text {\n  background-color: #f9f9f9;\n  border: 1px solid #eee;\n  border-radius: 3px;\n  padding: 1em 1em 0;\n  margin-bottom: 1.5em;\n}\n.alignRight.art-text pre {\n  padding: 0;\n}\n.alignRight {\n  margin: 1em 0;\n}\n.alignRight > *:first-child {\n  border: none;\n  margin: 0;\n  float: right;\n  clear: both;\n}\n.alignRight > *:nth-child(2) {\n  clear: both;\n  display: block;\n  border: none;\n}\nsvg {\n  display: block;\n}\n@media print {\n  svg {\n    max-height: 850px;\n    max-width: 660px;\n  }\n}\nsvg[font-family~=\"serif\" i], svg [font-family~=\"serif\" i] {\n  font-family: var(--font-serif);\n}\nsvg[font-family~=\"sans-serif\" i], svg [font-family~=\"sans-serif\" i] {\n  font-family: var(--font-sans);\n}\nsvg[font-family~=\"monospace\" i], svg [font-family~=\"monospace\" i] {\n  font-family: var(--font-mono);\n}\n.alignCenter.art-text {\n  background-color: #f9f9f9;\n  border: 1px solid #eee;\n  border-radius: 3px;\n  padding: 1em 1em 0;\n  margin-bottom: 1.5em;\n}\n.alignCenter.art-text pre {\n  padding: 0;\n}\n.alignCenter {\n  margin: 1em 0;\n}\n.alignCenter > *:first-child {\n  display: table;\n  border: none;\n  margin: 0 auto;\n}\n\n/* lists */\nol, ul {\n  padding: 0;\n  margin: 0 0 1em 2em;\n}\nol ol, ul ul, ol ul, ul ol {\n  margin-left: 1em;\n}\nli {\n  margin: 0 0 0.25em 0;\n}\n.ulCompact li {\n  margin: 0;\n}\nul.empty, .ulEmpty {\n  list-style-type: none;\n}\nul.empty li, .ulEmpty li {\n  margin-top: 0.5em;\n}\nul.ulBare, li.ulBare {\n  margin-left: 0em !important;\n}\nul.compact, .ulCompact,\nol.compact, .olCompact {\n  line-height: 100%;\n  margin: 0 0 0 2em;\n}\n\n/* definition lists */\ndl {\n}\ndl > dt {\n  float: left;\n  margin-right: 1em;\n}\n/* \ndl.nohang > dt {\n  float: none;\n}\n*/\ndl > dd {\n  margin-bottom: .8em;\n  min-height: 1.3em;\n}\ndl.compact > dd, .dlCompact > dd {\n  margin-bottom: 0em;\n}\ndl > dd > dl {\n  margin-top: 0.5em;\n  margin-bottom: 0em;\n}\n\n/* links */\na {\n  text-decoration: none;\n}\na[href] {\n  color: #22e; /* Arlen: WCAG 2019 */\n}\na[href]:hover {\n  background-color: #f2f2f2;\n}\nfigcaption a[href],\na[href].selfRef {\n  color: #222;\n}\n/* XXX probably not this:\na.selfRef:hover {\n  background-color: transparent;\n  cursor: default;\n} */\n\n/* Figures */\ntt, code, pre {\n  background-color: #f9f9f9;\n  font-family: var(--font-mono);\n}\npre {\n  border: 1px solid #eee;\n  margin: 0;\n  padding: 1em;\n}\nimg {\n  max-width: 100%;\n}\nfigure {\n  margin: 0;\n}\nfigure blockquote {\n  margin: 0.8em 0.4em 0.4em;\n}\nfigcaption {\n  font-style: italic;\n  margin: 0 0 1em 0;\n}\n@media screen {\n  pre {\n    overflow-x: auto;\n    max-width: 100%;\n    max-width: calc(100% - 22px);\n  }\n}\n\n/* aside, blockquote */\naside, blockquote {\n  margin-left: 0;\n  padding: 1.2em 2em;\n}\nblockquote {\n  background-color: #f9f9f9;\n  color: #111; /* Arlen: WCAG 2019 */\n  border: 1px solid #ddd;\n  border-radius: 3px;\n  margin: 1em 0;\n}\nblockquote > *:last-child {\n  margin-bottom: 0;\n}\ncite {\n  display: block;\n  text-align: right;\n  font-style: italic;\n}\n.xref {\n  overflow-wrap: normal;\n}\n\n/* tables */\ntable {\n  width: 100%;\n  margin: 0 0 1em;\n  border-collapse: collapse;\n  border: 1px solid #eee;\n}\nth, td {\n  text-align: left;\n  vertical-align: top;\n  padding: 0.5em 0.75em;\n}\nth {\n  text-align: left;\n  background-color: #e9e9e9;\n}\ntr:nth-child(2n+1) > td {\n  background-color: #f5f5f5;\n}\ntable caption {\n  font-style: italic;\n  margin: 0;\n  padding: 0;\n  text-align: left;\n}\ntable p {\n  /* XXX to avoid bottom margin on table row signifiers. If paragraphs should\n     be allowed within tables more generally, it would be far better to select on a class. */\n  margin: 0;\n}\n\n/* pilcrow */\na.pilcrow {\n  color: #666; /* Arlen: AHDJ 2019 */\n  text-decoration: none;\n  visibility: hidden;\n  user-select: none;\n  -ms-user-select: none;\n  -o-user-select:none;\n  -moz-user-select: none;\n  -khtml-user-select: none;\n  -webkit-user-select: none;\n  -webkit-touch-callout: none;\n}\n@media screen {\n  aside:hover > a.pilcrow,\n  p:hover > a.pilcrow,\n  blockquote:hover > a.pilcrow,\n  div:hover > a.pilcrow,\n  li:hover > a.pilcrow,\n  pre:hover > a.pilcrow {\n    visibility: visible;\n  }\n  a.pilcrow:hover {\n    background-color: transparent;\n  }\n}\n\n/* misc */\nhr {\n  border: 0;\n  border-top: 1px solid #eee;\n}\n.bcp14 {\n  font-variant: small-caps;\n}\n\n.role {\n  font-variant: all-small-caps;\n}\n\n/* info block */\n#identifiers {\n  margin: 0;\n  font-size: 0.9em;\n}\n#identifiers dt {\n  width: 3em;\n  clear: left;\n}\n#identifiers dd {\n  float: left;\n  margin-bottom: 0;\n}\n/* Fix PDF info block run off issue */\n@media print {\n  #identifiers dd {\n    max-width: 100%;\n  }\n}\n#identifiers .authors .author {\n  display: inline-block;\n  margin-right: 1.5em;\n}\n#identifiers .authors .org {\n  font-style: italic;\n}\n\n/* The prepared/rendered info at the very bottom of the page */\n.docInfo {\n  color: #666; /* Arlen: WCAG 2019 */\n  font-size: 0.9em;\n  font-style: italic;\n  margin-top: 2em;\n}\n.docInfo .prepared {\n  float: left;\n}\n.docInfo .prepared {\n  float: right;\n}\n\n/* table of contents */\n#toc  {\n  padding: 0.75em 0 2em 0;\n  margin-bottom: 1em;\n}\nnav.toc ul {\n  margin: 0 0.5em 0 0;\n  padding: 0;\n  list-style: none;\n}\nnav.toc li {\n  line-height: 1.3em;\n  margin: 0.75em 0;\n  padding-left: 1.2em;\n  text-indent: -1.2em;\n}\n/* references */\n.references dt {\n  text-align: right;\n  font-weight: bold;\n  min-width: 7em;\n}\n.references dd {\n  margin-left: 8em;\n  overflow: auto;\n}\n\n.refInstance {\n  margin-bottom: 1.25em;\n}\n\n.refSubseries {\n  margin-bottom: 1.25em;\n}\n\n.references .ascii {\n  margin-bottom: 0.25em;\n}\n\n/* index */\n.index ul {\n  margin: 0 0 0 1em;\n  padding: 0;\n  list-style: none;\n}\n.index ul ul {\n  margin: 0;\n}\n.index li {\n  margin: 0;\n  text-indent: -2em;\n  padding-left: 2em;\n  padding-bottom: 5px;\n}\n.indexIndex {\n  margin: 0.5em 0 1em;\n}\n.index a {\n  font-weight: 700;\n}\n/* make the index two-column on all but the smallest screens */\n@media (min-width: 600px) {\n  .index ul {\n    -moz-column-count: 2;\n    -moz-column-gap: 20px;\n  }\n  .index ul ul {\n    -moz-column-count: 1;\n    -moz-column-gap: 0;\n  }\n}\n\n/* authors */\naddress.vcard {\n  font-style: normal;\n  margin: 1em 0;\n}\n\naddress.vcard .nameRole {\n  font-weight: 700;\n  margin-left: 0;\n}\naddress.vcard .label {\n  font-family: var(--font-sans);\n  margin: 0.5em 0;\n}\naddress.vcard .type {\n  display: none;\n}\n.alternative-contact {\n  margin: 1.5em 0 1em;\n}\nhr.addr {\n  border-top: 1px dashed;\n  margin: 0;\n  color: #ddd;\n  max-width: calc(100% - 16px);\n}\n\n/* temporary notes */\n.rfcEditorRemove::before {\n  position: absolute;\n  top: 0.2em;\n  right: 0.2em;\n  padding: 0.2em;\n  content: \"The RFC Editor will remove this note\";\n  color: #9e2a00; /* Arlen: WCAG 2019 */\n  background-color: #ffd; /* Arlen: WCAG 2019 */\n}\n.rfcEditorRemove {\n  position: relative;\n  padding-top: 1.8em;\n  background-color: #ffd; /* Arlen: WCAG 2019 */\n  border-radius: 3px;\n}\n.cref {\n  background-color: #ffd; /* Arlen: WCAG 2019 */\n  padding: 2px 4px;\n}\n.crefSource {\n  font-style: italic;\n}\n/* alternative layout for smaller screens */\n@media screen and (max-width: 1023px) {\n  body {\n    padding-top: 2em;\n  }\n  #title {\n    padding: 1em 0;\n  }\n  h1 {\n    font-size: 24px;\n  }\n  h2 {\n    font-size: 20px;\n    margin-top: -18px;  /* provide offset for in-page anchors */\n    padding-top: 38px;\n  }\n  #identifiers dd {\n    max-width: 60%;\n  }\n  #toc {\n    position: fixed;\n    z-index: 2;\n    top: 0;\n    right: 0;\n    padding: 0;\n    margin: 0;\n    background-color: inherit;\n    border-bottom: 1px solid #ccc;\n  }\n  #toc h2 {\n    margin: -1px 0 0 0;\n    padding: 4px 0 4px 6px;\n    padding-right: 1em;\n    min-width: 190px;\n    font-size: 1.1em;\n    text-align: right;\n    background-color: #444;\n    color: white;\n    cursor: pointer;\n  }\n  #toc h2::before { /* css hamburger */\n    float: right;\n    position: relative;\n    width: 1em;\n    height: 1px;\n    left: -164px;\n    margin: 6px 0 0 0;\n    background: white none repeat scroll 0 0;\n    box-shadow: 0 4px 0 0 white, 0 8px 0 0 white;\n    content: \"\";\n  }\n  #toc nav {\n    display: none;\n    padding: 0.5em 1em 1em;\n    overflow: auto;\n    height: calc(100vh - 48px);\n    border-left: 1px solid #ddd;\n  }\n}\n\n/* alternative layout for wide screens */\n@media screen and (min-width: 1024px) {\n  body {\n    max-width: 724px;\n    margin: 42px auto;\n    padding-left: 1.5em;\n    padding-right: 29em;\n  }\n  #toc {\n    position: fixed;\n    top: 42px;\n    right: 42px;\n    width: 25%;\n    margin: 0;\n    padding: 0 1em;\n    z-index: 1;\n  }\n  #toc h2 {\n    border-top: none;\n    border-bottom: 1px solid #ddd;\n    font-size: 1em;\n    font-weight: normal;\n    margin: 0;\n    padding: 0.25em 1em 1em 0;\n  }\n  #toc nav {\n    display: block;\n    height: calc(90vh - 84px);\n    bottom: 0;\n    padding: 0.5em 0 0;\n    overflow: auto;\n  }\n  img { /* future proofing */\n    max-width: 100%;\n    height: auto;\n  }\n}\n\n/* pagination */\n@media print {\n  body {\n    width: 100%;\n  }\n  p {\n    orphans: 3;\n    widows: 3;\n  }\n  #n-copyright-notice {\n    border-bottom: none;\n  }\n  #toc, #n-introduction {\n    page-break-before: always;\n  }\n  #toc {\n    border-top: none;\n    padding-top: 0;\n  }\n  figure, pre {\n    page-break-inside: avoid;\n  }\n  figure {\n    overflow: scroll;\n  }\n  .breakable pre {\n    break-inside: auto;\n  }\n  h1, h2, h3, h4, h5, h6 {\n    page-break-after: avoid;\n  }\n  h2+*, h3+*, h4+*, h5+*, h6+* {\n    page-break-before: avoid;\n  }\n  pre {\n    white-space: pre-wrap;\n    word-wrap: break-word;\n    font-size: 10pt;\n  }\n  table {\n    border: 1px solid #ddd;\n  }\n  td {\n    border-top: 1px solid #ddd;\n  }\n}\n\n/* This is commented out here, as the string-set: doesn't\n   pass W3C validation currently */\n/*\n.ears thead .left {\n  string-set: ears-top-left content();\n}\n\n.ears thead .center {\n  string-set: ears-top-center content();\n}\n\n.ears thead .right {\n  string-set: ears-top-right content();\n}\n\n.ears tfoot .left {\n  string-set: ears-bottom-left content();\n}\n\n.ears tfoot .center {\n  string-set: ears-bottom-center content();\n}\n\n.ears tfoot .right {\n  string-set: ears-bottom-right content();\n}\n*/\n\n@page :first {\n  padding-top: 0;\n  @top-left {\n    content: normal;\n    border: none;\n  }\n  @top-center {\n    content: normal;\n    border: none;\n  }\n  @top-right {\n    content: normal;\n    border: none;\n  }\n}\n\n@page {\n  size: A4;\n  margin-bottom: 45mm;\n  padding-top: 20px;\n  /* The following is commented out here, but set appropriately by in code, as\n     the content depends on the document */\n  /*\n  @top-left {\n    content: 'Internet-Draft';\n    vertical-align: bottom;\n    border-bottom: solid 1px #ccc;\n  }\n  @top-left {\n    content: string(ears-top-left);\n    vertical-align: bottom;\n    border-bottom: solid 1px #ccc;\n  }\n  @top-center {\n    content: string(ears-top-center);\n    vertical-align: bottom;\n    border-bottom: solid 1px #ccc;\n  }\n  @top-right {\n    content: string(ears-top-right);\n    vertical-align: bottom;\n    border-bottom: solid 1px #ccc;\n  }\n  @bottom-left {\n    content: string(ears-bottom-left);\n    vertical-align: top;\n    border-top: solid 1px #ccc;\n  }\n  @bottom-center {\n    content: string(ears-bottom-center);\n    vertical-align: top;\n    border-top: solid 1px #ccc;\n  }\n  @bottom-right {\n      content: '[Page ' counter(page) ']';\n      vertical-align: top;\n      border-top: solid 1px #ccc;\n  }\n  */\n\n}\n\n/* Changes introduced to fix issues found during implementation */\n/* Make sure links are clickable even if overlapped by following H* */\na {\n  z-index: 2;\n}\n/* Separate body from document info even without intervening H1 */\nsection {\n  clear: both;\n}\n\n\n/* Top align author divs, to avoid names without organization dropping level with org names */\n.author {\n  vertical-align: top;\n}\n\n/* Leave room in document info to show Internet-Draft on one line */\n#identifiers dt {\n  width: 8em;\n}\n\n/* Don't waste quite as much whitespace between label and value in doc info */\n#identifiers dd {\n  margin-left: 1em;\n}\n\n/* Give floating toc a background color (needed when it's a div inside section */\n#toc {\n  background-color: white;\n}\n\n/* Make the collapsed ToC header render white on gray also when it's a link */\n@media screen and (max-width: 1023px) {\n  #toc h2 a,\n  #toc h2 a:link,\n  #toc h2 a:focus,\n  #toc h2 a:hover,\n  #toc a.toplink,\n  #toc a.toplink:hover {\n    color: white;\n    background-color: #444;\n    text-decoration: none;\n  }\n}\n\n/* Give the bottom of the ToC some whitespace */\n@media screen and (min-width: 1024px) {\n  #toc {\n    padding: 0 0 1em 1em;\n  }\n}\n\n/* Style section numbers with more space between number and title */\n.section-number {\n  padding-right: 0.5em;\n}\n\n/* prevent monospace from becoming overly large */\ntt, code, pre {\n  font-size: 95%;\n}\n\n/* Fix the height/width aspect for ascii art*/\n.sourcecode pre,\n.art-text pre {\n  line-height: 1.12;\n}\n\n\n/* Add styling for a link in the ToC that points to the top of the document */\na.toplink {\n  float: right;\n  margin-right: 0.5em;\n}\n\n/* Fix the dl styling to match the RFC 7992 attributes */\ndl > dt,\ndl.dlParallel > dt {\n  float: left;\n  margin-right: 1em;\n}\ndl.dlNewline > dt {\n  float: none;\n}\n\n/* Provide styling for table cell text alignment */\ntable td.text-left,\ntable th.text-left {\n  text-align: left;\n}\ntable td.text-center,\ntable th.text-center {\n  text-align: center;\n}\ntable td.text-right,\ntable th.text-right {\n  text-align: right;\n}\n\n/* Make the alternative author contact information look less like just another\n   author, and group it closer with the primary author contact information */\n.alternative-contact {\n  margin: 0.5em 0 0.25em 0;\n}\naddress .non-ascii {\n  margin: 0 0 0 2em;\n}\n\n/* With it being possible to set tables with alignment\n  left, center, and right, { width: 100%; } does not make sense */\ntable {\n  width: auto;\n}\n\n/* Avoid reference text that sits in a block with very wide left margin,\n   because of a long floating dt label.*/\n.references dd {\n  overflow: visible;\n}\n\n/* Control caption placement */\ncaption {\n  caption-side: bottom;\n}\n\n/* Limit the width of the author address vcard, so names in right-to-left\n   script don't end up on the other side of the page. */\n\naddress.vcard {\n  max-width: 30em;\n  margin-right: auto;\n}\n\n/* For address alignment dependent on LTR or RTL scripts */\naddress div.left {\n  text-align: left;\n}\naddress div.right {\n  text-align: right;\n}\n\n/* Provide table alignment support.  We can't use the alignX classes above\n   since they do unwanted things with caption and other styling. */\ntable.right {\n margin-left: auto;\n margin-right: 0;\n}\ntable.center {\n margin-left: auto;\n margin-right: auto;\n}\ntable.left {\n margin-left: 0;\n margin-right: auto;\n}\n\n/* Give the table caption label the same styling as the figcaption */\ncaption a[href] {\n  color: #222;\n}\n\n@media print {\n  .toplink {\n    display: none;\n  }\n\n  /* avoid overwriting the top border line with the ToC header */\n  #toc {\n    padding-top: 1px;\n  }\n\n  /* Avoid page breaks inside dl and author address entries */\n  .vcard {\n    page-break-inside: avoid;\n  }\n\n}\n/* Tweak the bcp14 keyword presentation */\n.bcp14 {\n  font-variant: small-caps;\n  font-weight: bold;\n  font-size: 0.9em;\n}\n/* Tweak the invisible space above H* in order not to overlay links in text above */\n h2 {\n  margin-top: -18px;  /* provide offset for in-page anchors */\n  padding-top: 31px;\n }\n h3 {\n  margin-top: -18px;  /* provide offset for in-page anchors */\n  padding-top: 24px;\n }\n h4 {\n  margin-top: -18px;  /* provide offset for in-page anchors */\n  padding-top: 24px;\n }\n/* Float artwork pilcrow to the right */\n@media screen {\n  .artwork a.pilcrow {\n    display: block;\n    line-height: 0.7;\n    margin-top: 0.15em;\n  }\n}\n/* Make pilcrows on dd visible */\n@media screen {\n  dd:hover > a.pilcrow {\n    visibility: visible;\n  }\n}\n/* Make the placement of figcaption match that of a table's caption\n   by removing the figure's added bottom margin */\n.alignLeft.art-text,\n.alignCenter.art-text,\n.alignRight.art-text {\n   margin-bottom: 0;\n}\n.alignLeft,\n.alignCenter,\n.alignRight {\n  margin: 1em 0 0 0;\n}\n/* In print, the pilcrow won't show on hover, so prevent it from taking up space,\n   possibly even requiring a new line */\n@media print {\n  a.pilcrow {\n    display: none;\n  }\n}\n/* Styling for the external metadata */\ndiv#external-metadata {\n  background-color: #eee;\n  padding: 0.5em;\n  margin-bottom: 0.5em;\n  display: none;\n}\ndiv#internal-metadata {\n  padding: 0.5em;                       /* to match the external-metadata padding */\n}\n/* Styling for title RFC Number */\nh1#rfcnum {\n  clear: both;\n  margin: 0 0 -1em;\n  padding: 1em 0 0 0;\n}\n/* Make .olPercent look the same as <ol><li> */\ndl.olPercent > dd {\n  margin-bottom: 0.25em;\n  min-height: initial;\n}\n/* Give aside some styling to set it apart */\naside {\n  border-left: 1px solid #ddd;\n  margin: 1em 0 1em 2em;\n  padding: 0.2em 2em;\n}\naside > dl,\naside > ol,\naside > ul,\naside > table,\naside > p {\n  margin-bottom: 0.5em;\n}\n/* Additional page break settings */\n@media print {\n  figcaption, table caption {\n    page-break-before: avoid;\n  }\n}\n/* Font size adjustments for print */\n@media print {\n  body  { font-size: 10pt;      line-height: normal; max-width: 96%; }\n  h1    { font-size: 1.72em;    padding-top: 1.5em; } /* 1*1.2*1.2*1.2 */\n  h2    { font-size: 1.44em;    padding-top: 1.5em; } /* 1*1.2*1.2 */\n  h3    { font-size: 1.2em;     padding-top: 1.5em; } /* 1*1.2 */\n  h4    { font-size: 1em;       padding-top: 1.5em; }\n  h5, h6 { font-size: 1em;      margin: initial; padding: 0.5em 0 0.3em; }\n}\n/* Sourcecode margin in print, when there's no pilcrow */\n@media print {\n  .artwork,\n  .artwork > pre,\n  .sourcecode {\n    margin-bottom: 1em;\n  }\n}\n/* Avoid narrow tables forcing too narrow table captions, which may render badly */\ntable {\n  min-width: 20em;\n}\n/* ol type a */\nol.type-a { list-style-type: lower-alpha; }\nol.type-A { list-style-type: upper-alpha; }\nol.type-i { list-style-type: lower-roman; }\nol.type-I { list-style-type: upper-roman; }\n/* Apply the print table and row borders in general, on request from the RPC,\nand increase the contrast between border and odd row background slightly */\ntable {\n  border: 1px solid #ddd;\n}\ntd {\n  border-top: 1px solid #ddd;\n}\ntr {\n  break-inside: avoid;\n}\ntr:nth-child(2n+1) > td {\n  background-color: #f8f8f8;\n}\n/* Use style rules to govern display of the TOC. */\n@media screen and (max-width: 1023px) {\n  #toc nav { display: none; }\n  #toc.active nav { display: block; }\n}\n/* Add support for keepWithNext */\n.keepWithNext {\n  break-after: avoid-page;\n  break-after: avoid-page;\n}\n/* Add support for keepWithPrevious */\n.keepWithPrevious {\n  break-before: avoid-page;\n}\n/* Change the approach to avoiding breaks inside artwork etc. */\nfigure, pre, table, .artwork, .sourcecode  {\n  break-before: auto;\n  break-after: auto;\n}\n/* Avoid breaks between <dt> and <dd> */\ndl {\n  break-before: auto;\n  break-inside: auto;\n}\ndt {\n  break-before: auto;\n  break-after: avoid-page;\n}\ndd {\n  break-before: avoid-page;\n  break-after: auto;\n  orphans: 3;\n  widows: 3\n}\nspan.break, dd.break {\n  margin-bottom: 0;\n  min-height: 0;\n  break-before: auto;\n  break-inside: auto;\n  break-after: auto;\n}\n/* Undo break-before ToC */\n@media print {\n  #toc {\n    break-before: auto;\n  }\n}\n/* Text in compact lists should not get extra bottom margin space,\n   since that would makes the list not compact */\nul.compact p, .ulCompact p,\nol.compact p, .olCompact p {\n margin: 0;\n}\n/* But the list as a whole needs the extra space at the end */\nsection ul.compact,\nsection .ulCompact,\nsection ol.compact,\nsection .olCompact {\n  margin-bottom: 1em;                    /* same as p not within ul.compact etc. */\n}\n/* The tt and code background above interferes with for instance table cell\n   backgrounds.  Changed to something a bit more selective. */\ntt, code {\n  background-color: transparent;\n}\np tt, p code, li tt, li code, dt tt, dt code {\n  background-color: #f8f8f8;\n}\n/* Tweak the pre margin -- 0px doesn't come out well */\npre {\n   margin-top: 0.5px;\n}\n/* Tweak the compact list text */\nul.compact, .ulCompact,\nol.compact, .olCompact,\ndl.compact, .dlCompact {\n  line-height: normal;\n}\n/* Don't add top margin for nested lists */\nli > ul, li > ol, li > dl,\ndd > ul, dd > ol, dd > dl,\ndl > dd > dl {\n  margin-top: initial;\n}\n/* Elements that should not be rendered on the same line as a <dt> */\n/* This should match the element list in writer.text.TextWriter.render_dl() */\ndd > div.artwork:first-child,\ndd > aside:first-child,\ndd > blockquote:first-child,\ndd > figure:first-child,\ndd > ol:first-child,\ndd > div.sourcecode:first-child,\ndd > table:first-child,\ndd > ul:first-child {\n  clear: left;\n}\n/* fix for weird browser behaviour when <dd/> is empty */\ndt+dd:empty::before{\n  content: \"\\00a0\";\n}\n/* Make paragraph spacing inside <li> smaller than in body text, to fit better within the list */\nli > p {\n  margin-bottom: 0.5em\n}\n/* Don't let p margin spill out from inside list items */\nli > p:last-of-type:only-child {\n  margin-bottom: 0;\n}\n</style>\n<link href=\"rfc-local.css\" rel=\"stylesheet\" type=\"text/css\">\n<script type=\"application/javascript\">async function addMetadata(){try{const e=document.styleSheets[0].cssRules;for(let t=0;t<e.length;t++)if(/#identifiers/.exec(e[t].selectorText)){const a=e[t].cssText.replace(\"#identifiers\",\"#external-updates\");document.styleSheets[0].insertRule(a,document.styleSheets[0].cssRules.length)}}catch(e){console.log(e)}const e=document.getElementById(\"external-metadata\");if(e)try{var t,a=\"\",o=function(e){const t=document.getElementsByTagName(\"meta\");for(let a=0;a<t.length;a++)if(t[a].getAttribute(\"name\")===e)return t[a].getAttribute(\"content\");return\"\"}(\"rfc.number\");if(o){t=\"https://www.rfc-editor.org/rfc/rfc\"+o+\".json\";try{const e=await fetch(t);a=await e.json()}catch(e){t=document.URL.indexOf(\"html\")>=0?document.URL.replace(/html$/,\"json\"):document.URL+\".json\";const o=await fetch(t);a=await o.json()}}if(!a)return;e.style.display=\"block\";const s=\"\",d=\"https://datatracker.ietf.org/doc\",n=\"https://datatracker.ietf.org/ipr/search\",c=\"https://www.rfc-editor.org/info\",l=a.doc_id.toLowerCase(),i=a.doc_id.slice(0,3).toLowerCase(),f=a.doc_id.slice(3).replace(/^0+/,\"\"),u={status:\"Status\",obsoletes:\"Obsoletes\",obsoleted_by:\"Obsoleted By\",updates:\"Updates\",updated_by:\"Updated By\",see_also:\"See Also\",errata_url:\"Errata\"};let h=\"<dl style='overflow:hidden' id='external-updates'>\";[\"status\",\"obsoletes\",\"obsoleted_by\",\"updates\",\"updated_by\",\"see_also\",\"errata_url\"].forEach(e=>{if(\"status\"==e){a[e]=a[e].toLowerCase();var t=a[e].split(\" \"),o=t.length,w=\"\",p=1;for(let e=0;e<o;e++)p<o?w=w+r(t[e])+\" \":w+=r(t[e]),p++;a[e]=w}else if(\"obsoletes\"==e||\"obsoleted_by\"==e||\"updates\"==e||\"updated_by\"==e){var g,m=\"\",b=1;g=a[e].length;for(let t=0;t<g;t++)a[e][t]&&(a[e][t]=String(a[e][t]).toLowerCase(),m=b<g?m+\"<a href='\"+s+\"/rfc/\".concat(a[e][t])+\"'>\"+a[e][t].slice(3)+\"</a>, \":m+\"<a href='\"+s+\"/rfc/\".concat(a[e][t])+\"'>\"+a[e][t].slice(3)+\"</a>\",b++);a[e]=m}else if(\"see_also\"==e){var y,L=\"\",C=1;y=a[e].length;for(let t=0;t<y;t++)if(a[e][t]){a[e][t]=String(a[e][t]);var _=a[e][t].slice(0,3),v=a[e][t].slice(3).replace(/^0+/,\"\");L=C<y?\"RFC\"!=_?L+\"<a href='\"+s+\"/info/\"+_.toLowerCase().concat(v.toLowerCase())+\"'>\"+_+\" \"+v+\"</a>, \":L+\"<a href='\"+s+\"/info/\"+_.toLowerCase().concat(v.toLowerCase())+\"'>\"+v+\"</a>, \":\"RFC\"!=_?L+\"<a href='\"+s+\"/info/\"+_.toLowerCase().concat(v.toLowerCase())+\"'>\"+_+\" \"+v+\"</a>\":L+\"<a href='\"+s+\"/info/\"+_.toLowerCase().concat(v.toLowerCase())+\"'>\"+v+\"</a>\",C++}a[e]=L}else if(\"errata_url\"==e){var R=\"\";R=a[e]?R+\"<a href='\"+a[e]+\"'>Errata exist</a> | <a href='\"+d+\"/\"+l+\"'>Datatracker</a>| <a href='\"+n+\"/?\"+i+\"=\"+f+\"&submit=\"+i+\"'>IPR</a> | <a href='\"+c+\"/\"+l+\"'>Info page</a>\":\"<a href='\"+d+\"/\"+l+\"'>Datatracker</a> | <a href='\"+n+\"/?\"+i+\"=\"+f+\"&submit=\"+i+\"'>IPR</a> | <a href='\"+c+\"/\"+l+\"'>Info page</a>\",a[e]=R}\"\"!=a[e]?\"Errata\"==u[e]?h+=`<dt>More info:</dt><dd>${a[e]}</dd>`:h+=`<dt>${u[e]}:</dt><dd>${a[e]}</dd>`:\"Errata\"==u[e]&&(h+=`<dt>More info:</dt><dd>${a[e]}</dd>`)}),h+=\"</dl>\",e.innerHTML=h}catch(e){console.log(e)}else console.log(\"Could not locate metadata <div> element\");function r(e){return e.charAt(0).toUpperCase()+e.slice(1)}}window.removeEventListener(\"load\",addMetadata),window.addEventListener(\"load\",addMetadata);</script>\n</head>\n<body class=\"xml2rfc\">\n<table class=\"ears\">\n<thead><tr>\n<td class=\"left\">Internet-Draft</td>\n<td class=\"center\">AIDIP</td>\n<td class=\"right\">February 2026</td>\n</tr></thead>\n<tfoot><tr>\n<td class=\"left\">Cui, et al.</td>\n<td class=\"center\">Expires 16 August 2026</td>\n<td class=\"right\">[Page]</td>\n</tr></tfoot>\n</table>\n<div id=\"external-metadata\" class=\"document-information\"></div>\n<div id=\"internal-metadata\" class=\"document-information\">\n<dl id=\"identifiers\">\n<dt class=\"label-workgroup\">Workgroup:</dt>\n<dd class=\"workgroup\">Network Working Group</dd>\n<dt class=\"label-internet-draft\">Internet-Draft:</dt>\n<dd class=\"internet-draft\">draft-cui-ai-agent-discovery-invocation-01</dd>\n<dt class=\"label-published\">Published:</dt>\n<dd class=\"published\">\n<time datetime=\"2026-02-12\" class=\"published\">12 February 2026</time>\n    </dd>\n<dt class=\"label-intended-status\">Intended Status:</dt>\n<dd class=\"intended-status\">Informational</dd>\n<dt class=\"label-expires\">Expires:</dt>\n<dd class=\"expires\"><time datetime=\"2026-08-16\">16 August 2026</time></dd>\n<dt class=\"label-authors\">Authors:</dt>\n<dd class=\"authors\">\n<div class=\"author\">\n      <div class=\"author-name\">Y. Cui</div>\n<div class=\"org\">Tsinghua University</div>\n</div>\n<div class=\"author\">\n      <div class=\"author-name\">Y. Chao</div>\n<div class=\"org\">Zhongguancun Laboratory</div>\n</div>\n<div class=\"author\">\n      <div class=\"author-name\">C. Du</div>\n<div class=\"org\">Zhongguancun Laboratory</div>\n</div>\n</dd>\n</dl>\n</div>\n<h1 id=\"title\">AI Agent Discovery and Invocation Protocol</h1>\n<section id=\"section-abstract\">\n      <h2 id=\"abstract\"><a href=\"#abstract\" class=\"selfRef\">Abstract</a></h2>\n<p id=\"section-abstract-1\">This document proposes a standardized protocol for discovery and invocation of AI agents. It defines a common metadata format for describing AI agents (including capabilities, I/O specifications, supported languages, tags, authentication methods, etc.), a capability-based discovery mechanism, and a unified RESTful invocation interface.<a href=\"#section-abstract-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-abstract-2\">This revision additionally specifies an optional extension that enables intent-based agent selection prior to discovery and invocation, without changing existing discovery or invocation semantics.<a href=\"#section-abstract-2\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-abstract-3\">The goal is to enable cross-platform interoperability among AI agents by providing a discover-and-match mechanism and a unified invocation entry point. Security considerations, including authentication and trust measures, are also discussed. This specification aims to facilitate the formation of multi-agent systems by making it easy to find the right agent for a task and invoke it in a consistent manner across different vendors and platforms.<a href=\"#section-abstract-3\" class=\"pilcrow\">¶</a></p>\n</section>\n<section class=\"note rfcEditorRemove\" id=\"section-note.1\">\n      <h2 id=\"name-about-this-document\">\n<a href=\"#name-about-this-document\" class=\"section-name selfRef\">About This Document</a>\n      </h2>\n<p id=\"section-note.1-1\">This note is to be removed before publishing as an RFC.<a href=\"#section-note.1-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-note.1-2\">\n        The latest revision of this draft can be found at <span><a href=\"https://example.com/LATEST\">https://example.com/LATEST</a></span>.\n        Status information for this document may be found at <span><a href=\"https://datatracker.ietf.org/doc/draft-cui-ai-agent-discovery-invocation/\">https://datatracker.ietf.org/doc/draft-cui-ai-agent-discovery-invocation/</a></span>.<a href=\"#section-note.1-2\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-note.1-3\">\n        Discussion of this document takes place on the\n        WG Working Group mailing list (<span><a href=\"mailto:WG@example.com\">mailto:WG@example.com</a></span>),\n        which is archived at <span><a href=\"https://example.com/WG\">https://example.com/WG</a></span>.<a href=\"#section-note.1-3\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-note.1-4\">Source for this draft and an issue tracker can be found at\n        <span><a href=\"https://github.com/USER/REPO\">https://github.com/USER/REPO</a></span>.<a href=\"#section-note.1-4\" class=\"pilcrow\">¶</a></p>\n</section>\n<div id=\"status-of-memo\">\n<section id=\"section-boilerplate.1\">\n        <h2 id=\"name-status-of-this-memo\">\n<a href=\"#name-status-of-this-memo\" class=\"section-name selfRef\">Status of This Memo</a>\n        </h2>\n<p id=\"section-boilerplate.1-1\">\n        This Internet-Draft is submitted in full conformance with the\n        provisions of BCP 78 and BCP 79.<a href=\"#section-boilerplate.1-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-boilerplate.1-2\">\n        Internet-Drafts are working documents of the Internet Engineering Task\n        Force (IETF). Note that other groups may also distribute working\n        documents as Internet-Drafts. The list of current Internet-Drafts is\n        at <span><a href=\"https://datatracker.ietf.org/drafts/current/\">https://datatracker.ietf.org/drafts/current/</a></span>.<a href=\"#section-boilerplate.1-2\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-boilerplate.1-3\">\n        Internet-Drafts are draft documents valid for a maximum of six months\n        and may be updated, replaced, or obsoleted by other documents at any\n        time. It is inappropriate to use Internet-Drafts as reference\n        material or to cite them other than as \"work in progress.\"<a href=\"#section-boilerplate.1-3\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-boilerplate.1-4\">\n        This Internet-Draft will expire on 16 August 2026.<a href=\"#section-boilerplate.1-4\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"copyright\">\n<section id=\"section-boilerplate.2\">\n        <h2 id=\"name-copyright-notice\">\n<a href=\"#name-copyright-notice\" class=\"section-name selfRef\">Copyright Notice</a>\n        </h2>\n<p id=\"section-boilerplate.2-1\">\n            Copyright (c) 2026 IETF Trust and the persons identified as the\n            document authors. All rights reserved.<a href=\"#section-boilerplate.2-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-boilerplate.2-2\">\n            This document is subject to BCP 78 and the IETF Trust's Legal\n            Provisions Relating to IETF Documents\n            (<span><a href=\"https://trustee.ietf.org/license-info\">https://trustee.ietf.org/license-info</a></span>) in effect on the date of\n            publication of this document. Please review these documents\n            carefully, as they describe your rights and restrictions with\n            respect to this document. Code Components extracted from this\n            document must include Revised BSD License text as described in\n            Section 4.e of the Trust Legal Provisions and are provided without\n            warranty as described in the Revised BSD License.<a href=\"#section-boilerplate.2-2\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"toc\">\n<section id=\"section-toc.1\">\n        <a href=\"#\" onclick=\"scroll(0,0)\" class=\"toplink\">▲</a><h2 id=\"name-table-of-contents\">\n<a href=\"#name-table-of-contents\" class=\"section-name selfRef\">Table of Contents</a>\n        </h2>\n<nav class=\"toc\"><ul class=\"compact toc ulBare ulEmpty\">\n<li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.1\">\n            <p id=\"section-toc.1-1.1.1\" class=\"keepWithNext\"><a href=\"#section-1\" class=\"auto internal xref\">1</a>.  <a href=\"#name-introduction\" class=\"internal xref\">Introduction</a></p>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.2\">\n            <p id=\"section-toc.1-1.2.1\" class=\"keepWithNext\"><a href=\"#section-2\" class=\"auto internal xref\">2</a>.  <a href=\"#name-conventions-and-definitions\" class=\"internal xref\">Conventions and Definitions</a></p>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.3\">\n            <p id=\"section-toc.1-1.3.1\"><a href=\"#section-3\" class=\"auto internal xref\">3</a>.  <a href=\"#name-agent-metadata-specificatio\" class=\"internal xref\">Agent Metadata Specification</a></p>\n<ul class=\"compact toc ulBare ulEmpty\">\n<li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.3.2.1\">\n                <p id=\"section-toc.1-1.3.2.1.1\" class=\"keepWithNext\"><a href=\"#section-3.1\" class=\"auto internal xref\">3.1</a>.  <a href=\"#name-core-fields\" class=\"internal xref\">Core Fields</a></p>\n</li>\n              <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.3.2.2\">\n                <p id=\"section-toc.1-1.3.2.2.1\"><a href=\"#section-3.2\" class=\"auto internal xref\">3.2</a>.  <a href=\"#name-operations-and-i-o-schema\" class=\"internal xref\">Operations and I/O Schema</a></p>\n</li>\n              <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.3.2.3\">\n                <p id=\"section-toc.1-1.3.2.3.1\"><a href=\"#section-3.3\" class=\"auto internal xref\">3.3</a>.  <a href=\"#name-example-agent-metadata\" class=\"internal xref\">Example Agent Metadata</a></p>\n</li>\n            </ul>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.4\">\n            <p id=\"section-toc.1-1.4.1\"><a href=\"#section-4\" class=\"auto internal xref\">4</a>.  <a href=\"#name-agent-discovery-mechanism\" class=\"internal xref\">Agent Discovery Mechanism</a></p>\n<ul class=\"compact toc ulBare ulEmpty\">\n<li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.4.2.1\">\n                <p id=\"section-toc.1-1.4.2.1.1\"><a href=\"#section-4.1\" class=\"auto internal xref\">4.1</a>.  <a href=\"#name-registry-overview\" class=\"internal xref\">Registry Overview</a></p>\n</li>\n              <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.4.2.2\">\n                <p id=\"section-toc.1-1.4.2.2.1\"><a href=\"#section-4.2\" class=\"auto internal xref\">4.2</a>.  <a href=\"#name-agent-registration\" class=\"internal xref\">Agent Registration</a></p>\n</li>\n              <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.4.2.3\">\n                <p id=\"section-toc.1-1.4.2.3.1\"><a href=\"#section-4.3\" class=\"auto internal xref\">4.3</a>.  <a href=\"#name-querying-agents\" class=\"internal xref\">Querying Agents</a></p>\n<ul class=\"compact toc ulBare ulEmpty\">\n<li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.4.2.3.2.1\">\n                    <p id=\"section-toc.1-1.4.2.3.2.1.1\"><a href=\"#section-4.3.1\" class=\"auto internal xref\">4.3.1</a>.  <a href=\"#name-attribute-based-query-filte\" class=\"internal xref\">Attribute-Based Query (Filter)</a></p>\n</li>\n                  <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.4.2.3.2.2\">\n                    <p id=\"section-toc.1-1.4.2.3.2.2.1\"><a href=\"#section-4.3.2\" class=\"auto internal xref\">4.3.2</a>.  <a href=\"#name-semantic-query-natural-lang\" class=\"internal xref\">Semantic Query (Natural Language Search)</a></p>\n</li>\n                  <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.4.2.3.2.3\">\n                    <p id=\"section-toc.1-1.4.2.3.2.3.1\"><a href=\"#section-4.3.3\" class=\"auto internal xref\">4.3.3</a>.  <a href=\"#name-retrieve-single-agent\" class=\"internal xref\">Retrieve Single Agent</a></p>\n</li>\n                </ul>\n</li>\n            </ul>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.5\">\n            <p id=\"section-toc.1-1.5.1\"><a href=\"#section-5\" class=\"auto internal xref\">5</a>.  <a href=\"#name-agent-invocation\" class=\"internal xref\">Agent Invocation</a></p>\n<ul class=\"compact toc ulBare ulEmpty\">\n<li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.5.2.1\">\n                <p id=\"section-toc.1-1.5.2.1.1\"><a href=\"#section-5.1\" class=\"auto internal xref\">5.1</a>.  <a href=\"#name-invocation-request\" class=\"internal xref\">Invocation Request</a></p>\n</li>\n              <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.5.2.2\">\n                <p id=\"section-toc.1-1.5.2.2.1\"><a href=\"#section-5.2\" class=\"auto internal xref\">5.2</a>.  <a href=\"#name-invocation-response\" class=\"internal xref\">Invocation Response</a></p>\n</li>\n              <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.5.2.3\">\n                <p id=\"section-toc.1-1.5.2.3.1\"><a href=\"#section-5.3\" class=\"auto internal xref\">5.3</a>.  <a href=\"#name-additional-considerations-f\" class=\"internal xref\">Additional Considerations for Invocation</a></p>\n</li>\n            </ul>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.6\">\n            <p id=\"section-toc.1-1.6.1\"><a href=\"#section-6\" class=\"auto internal xref\">6</a>.  <a href=\"#name-agent-semantic-resolution\" class=\"internal xref\">Agent Semantic Resolution</a></p>\n<ul class=\"compact toc ulBare ulEmpty\">\n<li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.6.2.1\">\n                <p id=\"section-toc.1-1.6.2.1.1\"><a href=\"#section-6.1\" class=\"auto internal xref\">6.1</a>.  <a href=\"#name-non-goals\" class=\"internal xref\">Non-Goals</a></p>\n</li>\n            </ul>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.7\">\n            <p id=\"section-toc.1-1.7.1\"><a href=\"#section-7\" class=\"auto internal xref\">7</a>.  <a href=\"#name-semantic-routing-platform\" class=\"internal xref\">Semantic Routing Platform</a></p>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.8\">\n            <p id=\"section-toc.1-1.8.1\"><a href=\"#section-8\" class=\"auto internal xref\">8</a>.  <a href=\"#name-backward-compatibility\" class=\"internal xref\">Backward Compatibility</a></p>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.9\">\n            <p id=\"section-toc.1-1.9.1\"><a href=\"#section-9\" class=\"auto internal xref\">9</a>.  <a href=\"#name-security-considerations\" class=\"internal xref\">Security Considerations</a></p>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.10\">\n            <p id=\"section-toc.1-1.10.1\"><a href=\"#section-10\" class=\"auto internal xref\">10</a>. <a href=\"#name-example-interaction-flow\" class=\"internal xref\">Example Interaction Flow</a></p>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.11\">\n            <p id=\"section-toc.1-1.11.1\"><a href=\"#section-11\" class=\"auto internal xref\">11</a>. <a href=\"#name-iana-considerations\" class=\"internal xref\">IANA Considerations</a></p>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.12\">\n            <p id=\"section-toc.1-1.12.1\"><a href=\"#section-12\" class=\"auto internal xref\">12</a>. <a href=\"#name-normative-references\" class=\"internal xref\">Normative References</a></p>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.13\">\n            <p id=\"section-toc.1-1.13.1\"><a href=\"#appendix-A\" class=\"auto internal xref\"></a><a href=\"#name-acknowledgments\" class=\"internal xref\">Acknowledgments</a></p>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.14\">\n            <p id=\"section-toc.1-1.14.1\"><a href=\"#appendix-B\" class=\"auto internal xref\"></a><a href=\"#name-authors-addresses\" class=\"internal xref\">Authors' Addresses</a></p>\n</li>\n        </ul>\n</nav>\n</section>\n</div>\n<div id=\"introduction\">\n<section id=\"section-1\">\n      <h2 id=\"name-introduction\">\n<a href=\"#section-1\" class=\"section-number selfRef\">1. </a><a href=\"#name-introduction\" class=\"section-name selfRef\">Introduction</a>\n      </h2>\n<p id=\"section-1-1\">As artificial intelligence technologies advance rapidly, AI agents—autonomous software components capable of perceiving their environment, reasoning, and taking actions to achieve goals—have emerged as a powerful paradigm for task execution. Today, many organizations develop specialized AI agents for various purposes: from text translation and summarization, to code generation, to data analysis and beyond. These agents are often offered as services, accessible over the network and may be integrated into larger systems. However, despite the proliferation of AI agents, there is currently no standard protocol for discovering available agents and invoking their capabilities in a uniform way.<a href=\"#section-1-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-1-2\">Existing agent frameworks and platforms facilitate building agents but typically operate in isolated ecosystems, making cross-platform or cross-organization agent interoperability difficult. Each platform tends to define its own APIs for agent description and invocation, which means a client wishing to use agents from multiple sources must adapt to disparate interfaces. This lack of standardization creates friction, increases integration costs, and hampers the development of multi-agent collaborative systems.<a href=\"#section-1-2\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-1-3\">This document addresses these issues by proposing a standardized AI Agent Discovery and Invocation Protocol. The protocol provides:<a href=\"#section-1-3\" class=\"pilcrow\">¶</a></p>\n<ol start=\"1\" type=\"1\" class=\"normal type-1\" id=\"section-1-4\">\n<li id=\"section-1-4.1\">\n          <p id=\"section-1-4.1.1\"><strong>Agent Metadata Specification:</strong> A structured JSON Schema for describing an agent's identity, capabilities, inputs, outputs, authentication requirements, and other attributes. This enables agents to publish their specifications in a machine-readable form.<a href=\"#section-1-4.1.1\" class=\"pilcrow\">¶</a></p>\n</li>\n        <li id=\"section-1-4.2\">\n          <p id=\"section-1-4.2.1\"><strong>Discovery Mechanism:</strong> A registry-based approach where agents register themselves and clients can search for agents by capability, tags, or semantic queries. The registry is language and platform agnostic, facilitating cross-platform discovery.<a href=\"#section-1-4.2.1\" class=\"pilcrow\">¶</a></p>\n</li>\n        <li id=\"section-1-4.3\">\n          <p id=\"section-1-4.3.1\"><strong>Invocation Interface:</strong> A RESTful API that enables a client (which could be a human user application, another agent, or an orchestration system) to invoke an agent's capabilities through a standard endpoint and JSON payloads.<a href=\"#section-1-4.3.1\" class=\"pilcrow\">¶</a></p>\n</li>\n        <li id=\"section-1-4.4\">\n          <p id=\"section-1-4.4.1\"><strong>Security Considerations:</strong> Guidelines for authentication, authorization, encrypted transport (TLS), and trust establishment, ensuring that discovery and invocation happen securely.<a href=\"#section-1-4.4.1\" class=\"pilcrow\">¶</a></p>\n</li>\n        <li id=\"section-1-4.5\">\n          <p id=\"section-1-4.5.1\"><strong>Interoperability with Existing Standards:</strong> This specification references existing standards such as JSON Schema, OAuth 2.0 <span>[<a href=\"#RFC6749\" class=\"cite xref\">RFC6749</a>]</span>, and OpenAPI concepts, and leverages established web technologies for broad compatibility.<a href=\"#section-1-4.5.1\" class=\"pilcrow\">¶</a></p>\n</li>\n      </ol>\n<p id=\"section-1-5\">The primary audience for this specification includes developers of AI agent platforms, providers of AI agent services, and system architects building AI-enabled applications or multi-agent systems. By adopting this protocol, an AI agent developer can make their agent accessible to a wide ecosystem, and a client application can integrate AI agents from multiple vendors without custom integration for each.<a href=\"#section-1-5\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-1-6\">This revision extends the base protocol with an optional Agent Semantic Resolution layer that enables intent-based agent selection. This extension allows a Host Agent or coordinator to describe a task intent and receive candidate agents without predetermining which agent to invoke. ASR does not replace discovery; it adds a semantic matching phase that can precede or augment the capability-based search defined in earlier sections.<a href=\"#section-1-6\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"conventions-and-definitions\">\n<section id=\"section-2\">\n      <h2 id=\"name-conventions-and-definitions\">\n<a href=\"#section-2\" class=\"section-number selfRef\">2. </a><a href=\"#name-conventions-and-definitions\" class=\"section-name selfRef\">Conventions and Definitions</a>\n      </h2>\n<p id=\"section-2-1\">The key words \"<span class=\"bcp14\">MUST</span>\", \"<span class=\"bcp14\">MUST NOT</span>\", \"<span class=\"bcp14\">REQUIRED</span>\", \"<span class=\"bcp14\">SHALL</span>\", \"<span class=\"bcp14\">SHALL NOT</span>\", \"<span class=\"bcp14\">SHOULD</span>\", \"<span class=\"bcp14\">SHOULD NOT</span>\", \"<span class=\"bcp14\">RECOMMENDED</span>\", \"<span class=\"bcp14\">NOT RECOMMENDED</span>\",\n\"<span class=\"bcp14\">MAY</span>\", and \"<span class=\"bcp14\">OPTIONAL</span>\" in this document are to be interpreted as\ndescribed in BCP 14 <span>[<a href=\"#RFC2119\" class=\"cite xref\">RFC2119</a>]</span> <span>[<a href=\"#RFC8174\" class=\"cite xref\">RFC8174</a>]</span> when, and only when, they\nappear in all capitals, as shown here.<a href=\"#section-2-1\" class=\"pilcrow\">¶</a></p>\n<ul class=\"normal\">\n<li class=\"normal\" id=\"section-2-2.1\">\n          <p id=\"section-2-2.1.1\"><strong>AI Agent:</strong> An autonomous software component that can perform tasks using artificial intelligence capabilities. Agents may wrap language models, specialized ML models, or reasoning engines, exposing their abilities via defined interfaces.<a href=\"#section-2-2.1.1\" class=\"pilcrow\">¶</a></p>\n</li>\n        <li class=\"normal\" id=\"section-2-2.2\">\n          <p id=\"section-2-2.2.1\"><strong>Agent Metadata:</strong> A structured description of an agent, including name, description, capabilities, input/output schemas, authentication requirements, and endpoint information.<a href=\"#section-2-2.2.1\" class=\"pilcrow\">¶</a></p>\n</li>\n        <li class=\"normal\" id=\"section-2-2.3\">\n          <p id=\"section-2-2.3.1\"><strong>Agent Registry (Discovery Service):</strong> A service that maintains a directory of registered agents and supports queries for discovering agents by attributes or semantic search.<a href=\"#section-2-2.3.1\" class=\"pilcrow\">¶</a></p>\n</li>\n        <li class=\"normal\" id=\"section-2-2.4\">\n          <p id=\"section-2-2.4.1\"><strong>Gateway:</strong> (Optional) An intermediary service that routes client requests to appropriate agents. In some deployments, the registry or another service acts as a gateway to simplify client-to-agent connections.<a href=\"#section-2-2.4.1\" class=\"pilcrow\">¶</a></p>\n</li>\n        <li class=\"normal\" id=\"section-2-2.5\">\n          <p id=\"section-2-2.5.1\"><strong>Invocation Endpoint:</strong> The URL provided by an agent (or gateway) where clients send requests to invoke the agent's capabilities.<a href=\"#section-2-2.5.1\" class=\"pilcrow\">¶</a></p>\n</li>\n        <li class=\"normal\" id=\"section-2-2.6\">\n          <p id=\"section-2-2.6.1\"><strong>Capability:</strong> A high-level function an agent can perform, identified by a string (e.g., \"translation\", \"summarization\", \"image_classification\").<a href=\"#section-2-2.6.1\" class=\"pilcrow\">¶</a></p>\n</li>\n        <li class=\"normal\" id=\"section-2-2.7\">\n          <p id=\"section-2-2.7.1\"><strong>Operation:</strong> A specific action supported by an agent. Some agents may have multiple operations; for example, an agent offering both translation and language detection could list these as separate operations, each with its own input/output schema.<a href=\"#section-2-2.7.1\" class=\"pilcrow\">¶</a></p>\n</li>\n      </ul>\n</section>\n</div>\n<div id=\"agent-metadata-specification\">\n<section id=\"section-3\">\n      <h2 id=\"name-agent-metadata-specificatio\">\n<a href=\"#section-3\" class=\"section-number selfRef\">3. </a><a href=\"#name-agent-metadata-specificatio\" class=\"section-name selfRef\">Agent Metadata Specification</a>\n      </h2>\n<p id=\"section-3-1\">The Agent Metadata Specification defines a standard JSON document that describes an agent. All agents that wish to be discoverable and invocable through this protocol <span class=\"bcp14\">MUST</span> provide a metadata document conforming to the schema below. This metadata is used for agent registration and returned to clients during discovery.<a href=\"#section-3-1\" class=\"pilcrow\">¶</a></p>\n<div id=\"core-fields\">\n<section id=\"section-3.1\">\n        <h3 id=\"name-core-fields\">\n<a href=\"#section-3.1\" class=\"section-number selfRef\">3.1. </a><a href=\"#name-core-fields\" class=\"section-name selfRef\">Core Fields</a>\n        </h3>\n<p id=\"section-3.1-1\">The following are the core fields of an agent metadata document:<a href=\"#section-3.1-1\" class=\"pilcrow\">¶</a></p>\n<ul class=\"normal\">\n<li class=\"normal\" id=\"section-3.1-2.1\">\n            <p id=\"section-3.1-2.1.1\"><strong>id (string):</strong> A globally unique identifier for the agent. This could be a UUID or a similarly unique value, assigned by the registry upon registration or by the agent provider in advance. This ID is used to refer to the agent in all subsequent operations (e.g., retrieval, invocation routing).<a href=\"#section-3.1-2.1.1\" class=\"pilcrow\">¶</a></p>\n</li>\n          <li class=\"normal\" id=\"section-3.1-2.2\">\n            <p id=\"section-3.1-2.2.1\"><strong>name (string):</strong> A human-readable name for the agent (e.g., \"Chinese-English Translator Agent\"). Names need not be unique but should be descriptive.<a href=\"#section-3.1-2.2.1\" class=\"pilcrow\">¶</a></p>\n</li>\n          <li class=\"normal\" id=\"section-3.1-2.3\">\n            <p id=\"section-3.1-2.3.1\"><strong>description (string):</strong> A detailed description of the agent, its purpose, and capabilities in natural language. This helps both human users and semantic search algorithms understand what the agent does.<a href=\"#section-3.1-2.3.1\" class=\"pilcrow\">¶</a></p>\n</li>\n          <li class=\"normal\" id=\"section-3.1-2.4\">\n            <p id=\"section-3.1-2.4.1\"><strong>version (string):</strong> The version of the agent or its metadata (e.g., \"1.0.0\"). This allows tracking of agent updates over time.<a href=\"#section-3.1-2.4.1\" class=\"pilcrow\">¶</a></p>\n</li>\n          <li class=\"normal\" id=\"section-3.1-2.5\">\n            <p id=\"section-3.1-2.5.1\"><strong>publisher (string):</strong> The name or identifier of the entity publishing the agent (e.g., an organization name or developer name).<a href=\"#section-3.1-2.5.1\" class=\"pilcrow\">¶</a></p>\n</li>\n          <li class=\"normal\" id=\"section-3.1-2.6\">\n            <p id=\"section-3.1-2.6.1\"><strong>capabilities (array of strings):</strong> A list of capabilities the agent supports. Capabilities are high-level descriptors (like tags or categories) that clients can filter by. Examples: <code>[\"translation\", \"summarization\", \"text_generation\"]</code>.<a href=\"#section-3.1-2.6.1\" class=\"pilcrow\">¶</a></p>\n</li>\n          <li class=\"normal\" id=\"section-3.1-2.7\">\n            <p id=\"section-3.1-2.7.1\"><strong>tags (array of strings):</strong> Additional tags for search and categorization (e.g., <code>[\"nlp\", \"chinese\", \"transformer_model\", \"cloud\"]</code>). Tags differ from capabilities in that they can include broader or orthogonal categories (like domain, language support, deployment model, etc.).<a href=\"#section-3.1-2.7.1\" class=\"pilcrow\">¶</a></p>\n</li>\n          <li class=\"normal\" id=\"section-3.1-2.8\">\n            <p id=\"section-3.1-2.8.1\"><strong>endpoint (string):</strong> The URL of the agent's invocation endpoint. If the agent is behind a gateway, this could be either the direct endpoint or, if direct access is not allowed, a gateway path (e.g., the gateway might provide a unified endpoint like <code>/agents/{id}/invoke</code> and internally route to the actual agent endpoint).<a href=\"#section-3.1-2.8.1\" class=\"pilcrow\">¶</a></p>\n</li>\n          <li class=\"normal\" id=\"section-3.1-2.9\">\n            <p id=\"section-3.1-2.9.1\"><strong>supported_languages (array of strings, optional):</strong> A list of languages the agent supports (e.g., <code>[\"en\", \"zh\", \"fr\"]</code>). For agents dealing with natural language tasks, this field indicates which languages are handled. If omitted, the agent is either language-agnostic or should not be filtered by language.<a href=\"#section-3.1-2.9.1\" class=\"pilcrow\">¶</a></p>\n</li>\n          <li class=\"normal\" id=\"section-3.1-2.10\">\n            <p id=\"section-3.1-2.10.1\"><strong>authentication (object, optional):</strong> Describes the authentication mechanism required to invoke the agent. This object may include:<a href=\"#section-3.1-2.10.1\" class=\"pilcrow\">¶</a></p>\n<ul class=\"normal\">\n<li class=\"normal\" id=\"section-3.1-2.10.2.1\">\n                <p id=\"section-3.1-2.10.2.1.1\"><strong>type (string):</strong> e.g., \"api_key\", \"oauth2_bearer\", \"mtls\" (mutual TLS), \"none\".<a href=\"#section-3.1-2.10.2.1.1\" class=\"pilcrow\">¶</a></p>\n</li>\n              <li class=\"normal\" id=\"section-3.1-2.10.2.2\">\n                <p id=\"section-3.1-2.10.2.2.1\"><strong>instructions (string):</strong> Human-readable note or URL for obtaining credentials.<a href=\"#section-3.1-2.10.2.2.1\" class=\"pilcrow\">¶</a></p>\n</li>\n              <li class=\"normal\" id=\"section-3.1-2.10.2.3\">\n                <p id=\"section-3.1-2.10.2.3.1\"><strong>scopes (array of strings):</strong> If OAuth 2.0 is used, the OAuth scopes required.<a href=\"#section-3.1-2.10.2.3.1\" class=\"pilcrow\">¶</a></p>\n</li>\n            </ul>\n<p id=\"section-3.1-2.10.3\">\nIf no authentication is required, this field can be omitted or set with <code>type: \"none\"</code>.<a href=\"#section-3.1-2.10.3\" class=\"pilcrow\">¶</a></p>\n</li>\n          <li class=\"normal\" id=\"section-3.1-2.11\">\n            <p id=\"section-3.1-2.11.1\"><strong>status (string, optional):</strong> Operational status of the agent (e.g., <code>\"active\"</code>, <code>\"inactive\"</code>, <code>\"deprecated\"</code>). The registry may use this to filter out agents that are not currently available.<a href=\"#section-3.1-2.11.1\" class=\"pilcrow\">¶</a></p>\n</li>\n          <li class=\"normal\" id=\"section-3.1-2.12\">\n            <p id=\"section-3.1-2.12.1\"><strong>additional fields:</strong> Additional fields may include metadata about rate limits (e.g., max calls per minute), pricing info (if the agent charges per use), or links to documentation. These are not standardized here but can be included in agent metadata as needed.<a href=\"#section-3.1-2.12.1\" class=\"pilcrow\">¶</a></p>\n</li>\n        </ul>\n</section>\n</div>\n<div id=\"operations-and-io-schema\">\n<section id=\"section-3.2\">\n        <h3 id=\"name-operations-and-i-o-schema\">\n<a href=\"#section-3.2\" class=\"section-number selfRef\">3.2. </a><a href=\"#name-operations-and-i-o-schema\" class=\"section-name selfRef\">Operations and I/O Schema</a>\n        </h3>\n<p id=\"section-3.2-1\">Each agent <span class=\"bcp14\">MUST</span> describe its input and output formats. This is done using the <strong>operations</strong> field:<a href=\"#section-3.2-1\" class=\"pilcrow\">¶</a></p>\n<ul class=\"normal\">\n<li class=\"normal\" id=\"section-3.2-2.1\">\n            <p id=\"section-3.2-2.1.1\"><strong>operations (array of objects):</strong> A list of operations the agent supports. Each operation object has:<a href=\"#section-3.2-2.1.1\" class=\"pilcrow\">¶</a></p>\n<ul class=\"normal\">\n<li class=\"normal\" id=\"section-3.2-2.1.2.1\">\n                <p id=\"section-3.2-2.1.2.1.1\"><strong>name (string):</strong> The operation name/identifier (e.g., \"translateText\", \"summarize\").<a href=\"#section-3.2-2.1.2.1.1\" class=\"pilcrow\">¶</a></p>\n</li>\n              <li class=\"normal\" id=\"section-3.2-2.1.2.2\">\n                <p id=\"section-3.2-2.1.2.2.1\"><strong>description (string):</strong> A description of what the operation does.<a href=\"#section-3.2-2.1.2.2.1\" class=\"pilcrow\">¶</a></p>\n</li>\n              <li class=\"normal\" id=\"section-3.2-2.1.2.3\">\n                <p id=\"section-3.2-2.1.2.3.1\"><strong>inputs (object):</strong> A JSON Schema describing the expected input. This allows clients to understand what data to send. The JSON Schema can specify required fields, types, enums, etc.<a href=\"#section-3.2-2.1.2.3.1\" class=\"pilcrow\">¶</a></p>\n</li>\n              <li class=\"normal\" id=\"section-3.2-2.1.2.4\">\n                <p id=\"section-3.2-2.1.2.4.1\"><strong>outputs (object):</strong> A JSON Schema describing the output format.<a href=\"#section-3.2-2.1.2.4.1\" class=\"pilcrow\">¶</a></p>\n</li>\n              <li class=\"normal\" id=\"section-3.2-2.1.2.5\">\n                <p id=\"section-3.2-2.1.2.5.1\"><strong>examples (array of objects, optional):</strong> Example input/output pairs. Each example is an object <code>{\"input\": {...}, \"output\": {...}}</code> showing a sample invocation.<a href=\"#section-3.2-2.1.2.5.1\" class=\"pilcrow\">¶</a></p>\n</li>\n            </ul>\n</li>\n        </ul>\n<p id=\"section-3.2-3\">If an agent has a single operation, this array will have one element. If it can do multiple distinct tasks, each is listed here. Some agents may not have structured operations (e.g., a general-purpose language model that just produces text). In that case, the operations field might include a generic operation like <code>{\"name\": \"generate\", ...}</code>.<a href=\"#section-3.2-3\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-3.2-4\">If an agent has a single operation, this array will have one element. If it can do multiple distinct tasks, each is listed here. For simple agents with one primary function, an alternative is to use top-level <code>inputs</code> and <code>outputs</code> fields directly (instead of an operations array). In that case, the whole agent effectively has one implied operation. This spec allows both styles, but using <code>operations</code> is recommended for future extensibility.<a href=\"#section-3.2-4\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"example-agent-metadata\">\n<section id=\"section-3.3\">\n        <h3 id=\"name-example-agent-metadata\">\n<a href=\"#section-3.3\" class=\"section-number selfRef\">3.3. </a><a href=\"#name-example-agent-metadata\" class=\"section-name selfRef\">Example Agent Metadata</a>\n        </h3>\n<p id=\"section-3.3-1\">Below is an example metadata JSON for a translation agent:<a href=\"#section-3.3-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-3.3-2\"><code>json\n{\n  \"id\": \"agent-12345\",\n  \"name\": \"Chinese-English Translator\",\n  \"description\": \"Translates text between Chinese and English with high accuracy using a fine-tuned model.\",\n  \"version\": \"1.2.0\",\n  \"publisher\": \"ExampleAI Inc.\",\n  \"capabilities\": [\"translation\"],\n  \"tags\": [\"nlp\", \"chinese\", \"english\", \"cloud\"],\n  \"endpoint\": \"https://api.example.com/agents/translate\",\n  \"supported_languages\": [\"en\", \"zh\"],\n  \"authentication\": {\n    \"type\": \"api_key\",\n    \"instructions\": \"Include 'X-API-Key' header with your API key.\"\n  },\n  \"status\": \"active\",\n  \"operations\": [\n    {\n      \"name\": \"translateText\",\n      \"description\": \"Translates text from source language to target language.\",\n      \"inputs\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"text\": {\"type\": \"string\"},\n          \"source_language\": {\"type\": \"string\", \"enum\": [\"en\", \"zh\"]},\n          \"target_language\": {\"type\": \"string\", \"enum\": [\"en\", \"zh\"]}\n        },\n        \"required\": [\"text\", \"source_language\", \"target_language\"]\n      },\n      \"outputs\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"translated_text\": {\"type\": \"string\"}\n        }\n      },\n      \"examples\": [\n        {\n          \"input\": {\"text\": \"你好世界\", \"source_language\": \"zh\", \"target_language\": \"en\"},\n          \"output\": {\"translated_text\": \"Hello World\"}\n        }\n      ]\n    }\n  ]\n}\n</code><a href=\"#section-3.3-2\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-3.3-3\">This metadata tells us the agent is an active translation agent for Chinese and English, requires an API key for authentication, and has one operation <code>translateText</code> with a clear input/output schema.<a href=\"#section-3.3-3\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n</section>\n</div>\n<div id=\"agent-discovery-mechanism\">\n<section id=\"section-4\">\n      <h2 id=\"name-agent-discovery-mechanism\">\n<a href=\"#section-4\" class=\"section-number selfRef\">4. </a><a href=\"#name-agent-discovery-mechanism\" class=\"section-name selfRef\">Agent Discovery Mechanism</a>\n      </h2>\n<p id=\"section-4-1\">The discovery mechanism allows clients to find agents that meet certain criteria. Discovery is provided by an Agent Registry (or Discovery Service) that aggregates metadata from multiple agents.<a href=\"#section-4-1\" class=\"pilcrow\">¶</a></p>\n<div id=\"registry-overview\">\n<section id=\"section-4.1\">\n        <h3 id=\"name-registry-overview\">\n<a href=\"#section-4.1\" class=\"section-number selfRef\">4.1. </a><a href=\"#name-registry-overview\" class=\"section-name selfRef\">Registry Overview</a>\n        </h3>\n<p id=\"section-4.1-1\">The Agent Registry is a network-accessible service that:<a href=\"#section-4.1-1\" class=\"pilcrow\">¶</a></p>\n<ol start=\"1\" type=\"1\" class=\"normal type-1\" id=\"section-4.1-2\">\n<li id=\"section-4.1-2.1\">\n            <p id=\"section-4.1-2.1.1\">Allows agents (or their administrators) to register metadata about the agent.<a href=\"#section-4.1-2.1.1\" class=\"pilcrow\">¶</a></p>\n</li>\n          <li id=\"section-4.1-2.2\">\n            <p id=\"section-4.1-2.2.1\">Stores and indexes these metadata entries for efficient search.<a href=\"#section-4.1-2.2.1\" class=\"pilcrow\">¶</a></p>\n</li>\n          <li id=\"section-4.1-2.3\">\n            <p id=\"section-4.1-2.3.1\">Provides endpoints for clients to query and retrieve agent information.<a href=\"#section-4.1-2.3.1\" class=\"pilcrow\">¶</a></p>\n</li>\n        </ol>\n<p id=\"section-4.1-3\">A registry may be operated by an organization for its internal agents, or by a third party acting as a directory of agents across multiple providers. Multiple registries can coexist; interoperability between registries is facilitated by consistent metadata formats, though formal registry federation is out of scope for this draft.<a href=\"#section-4.1-3\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"agent-registration\">\n<section id=\"section-4.2\">\n        <h3 id=\"name-agent-registration\">\n<a href=\"#section-4.2\" class=\"section-number selfRef\">4.2. </a><a href=\"#name-agent-registration\" class=\"section-name selfRef\">Agent Registration</a>\n        </h3>\n<p id=\"section-4.2-1\">An agent (or its administrator) registers with the registry by sending its metadata to a registration endpoint:<a href=\"#section-4.2-1\" class=\"pilcrow\">¶</a></p>\n<ul class=\"normal\">\n<li class=\"normal\" id=\"section-4.2-2.1\">\n            <p id=\"section-4.2-2.1.1\"><strong>Endpoint:</strong> <code>POST /agents</code><a href=\"#section-4.2-2.1.1\" class=\"pilcrow\">¶</a></p>\n</li>\n          <li class=\"normal\" id=\"section-4.2-2.2\">\n            <p id=\"section-4.2-2.2.1\"><strong>Request Body:</strong> The agent metadata JSON document.<a href=\"#section-4.2-2.2.1\" class=\"pilcrow\">¶</a></p>\n</li>\n          <li class=\"normal\" id=\"section-4.2-2.3\">\n            <p id=\"section-4.2-2.3.1\"><strong>Response:</strong> On success, the registry returns <strong>201 Created</strong> (if a new agent was added) or <strong>200 OK</strong> (if an existing agent was updated), with the stored agent metadata (including the assigned <code>id</code> if the agent did not provide one). If validation fails (e.g., missing required fields), the registry returns a <strong>400 Bad Request</strong> with error details.<a href=\"#section-4.2-2.3.1\" class=\"pilcrow\">¶</a></p>\n</li>\n        </ul>\n<p id=\"section-4.2-3\">The registry <span class=\"bcp14\">MUST</span> validate the metadata against the schema. Registration may require authentication (for example, the registry only allows verified publishers to register agents).<a href=\"#section-4.2-3\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-4.2-4\">Updates to an agent's metadata (e.g., a new version, changed endpoint, etc.) can be done via a PUT request to the agent's entry:<a href=\"#section-4.2-4\" class=\"pilcrow\">¶</a></p>\n<ul class=\"normal\">\n<li class=\"normal\" id=\"section-4.2-5.1\">\n            <p id=\"section-4.2-5.1.1\"><strong>Endpoint:</strong> <code>PUT /agents/{id}</code><a href=\"#section-4.2-5.1.1\" class=\"pilcrow\">¶</a></p>\n</li>\n          <li class=\"normal\" id=\"section-4.2-5.2\">\n            <p id=\"section-4.2-5.2.1\"><strong>Request Body:</strong> Updated metadata.<a href=\"#section-4.2-5.2.1\" class=\"pilcrow\">¶</a></p>\n</li>\n          <li class=\"normal\" id=\"section-4.2-5.3\">\n            <p id=\"section-4.2-5.3.1\"><strong>Response:</strong> <strong>200 OK</strong> on success; <strong>404 Not Found</strong> if no agent with that ID exists; <strong>403 Forbidden</strong> if the requester is not authorized to update that agent.<a href=\"#section-4.2-5.3.1\" class=\"pilcrow\">¶</a></p>\n</li>\n        </ul>\n</section>\n</div>\n<div id=\"querying-agents\">\n<section id=\"section-4.3\">\n        <h3 id=\"name-querying-agents\">\n<a href=\"#section-4.3\" class=\"section-number selfRef\">4.3. </a><a href=\"#name-querying-agents\" class=\"section-name selfRef\">Querying Agents</a>\n        </h3>\n<p id=\"section-4.3-1\">Clients query the registry using the search endpoint. The protocol supports two types of queries:<a href=\"#section-4.3-1\" class=\"pilcrow\">¶</a></p>\n<div id=\"attribute-based-query-filter\">\n<section id=\"section-4.3.1\">\n          <h4 id=\"name-attribute-based-query-filte\">\n<a href=\"#section-4.3.1\" class=\"section-number selfRef\">4.3.1. </a><a href=\"#name-attribute-based-query-filte\" class=\"section-name selfRef\">Attribute-Based Query (Filter)</a>\n          </h4>\n<p id=\"section-4.3.1-1\">Clients can specify criteria to filter agents by capabilities, tags, supported languages, etc.<a href=\"#section-4.3.1-1\" class=\"pilcrow\">¶</a></p>\n<ul class=\"normal\">\n<li class=\"normal\" id=\"section-4.3.1-2.1\">\n              <p id=\"section-4.3.1-2.1.1\"><strong>Endpoint:</strong> <code>GET /agents?capabilities=X&amp;tags=Y&amp;language=Z</code><a href=\"#section-4.3.1-2.1.1\" class=\"pilcrow\">¶</a></p>\n</li>\n            <li class=\"normal\" id=\"section-4.3.1-2.2\">\n              <p id=\"section-4.3.1-2.2.1\">or a structured query via <strong>POST /agents/search</strong> with a JSON body.<a href=\"#section-4.3.1-2.2.1\" class=\"pilcrow\">¶</a></p>\n</li>\n          </ul>\n<p id=\"section-4.3.1-3\">For simplicity, <strong>POST /agents/search</strong> is recommended for more complex queries. The body might look like:<a href=\"#section-4.3.1-3\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-4.3.1-4\"><code>json\n{\n  \"filters\": {\n    \"capabilities\": [\"translation\"],\n    \"supported_languages\": [\"en\", \"zh\"],\n    \"tags\": [\"nlp\"]\n  },\n  \"top\": 10\n}\n</code><a href=\"#section-4.3.1-4\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-4.3.1-5\">This returns up to 10 agents that match all the specified filters. Filters are combined with AND logic (the agent must satisfy all conditions). Capabilities and tags are matched by set intersection (the agent must have at least the ones listed).<a href=\"#section-4.3.1-5\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-4.3.1-6\">The response is a JSON array of agent summary objects:<a href=\"#section-4.3.1-6\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-4.3.1-7\"><code>json\n[\n  {\n    \"id\": \"agent-12345\",\n    \"name\": \"Chinese-English Translator\",\n    \"description\": \"...\",\n    \"endpoint\": \"https://api.example.com/agents/translate\",\n    \"capabilities\": [\"translation\"]\n  },\n  ...\n]\n</code><a href=\"#section-4.3.1-7\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-4.3.1-8\">Summary objects include essential fields to help the client decide which agent to use, without returning the full detailed metadata. A client can retrieve full metadata via the single-agent endpoint.<a href=\"#section-4.3.1-8\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"semantic-query-natural-language-search\">\n<section id=\"section-4.3.2\">\n          <h4 id=\"name-semantic-query-natural-lang\">\n<a href=\"#section-4.3.2\" class=\"section-number selfRef\">4.3.2. </a><a href=\"#name-semantic-query-natural-lang\" class=\"section-name selfRef\">Semantic Query (Natural Language Search)</a>\n          </h4>\n<p id=\"section-4.3.2-1\">In addition to attribute-based search, the registry <span class=\"bcp14\">MAY</span> support semantic search where the client describes a need in natural language, and the registry uses AI techniques (embeddings, LLM-based matching) to find relevant agents. This is an optional feature for registries.<a href=\"#section-4.3.2-1\" class=\"pilcrow\">¶</a></p>\n<ul class=\"normal\">\n<li class=\"normal\" id=\"section-4.3.2-2.1\">\n              <p id=\"section-4.3.2-2.1.1\"><strong>Endpoint:</strong> <code>POST /agents/search</code><a href=\"#section-4.3.2-2.1.1\" class=\"pilcrow\">¶</a></p>\n</li>\n            <li class=\"normal\" id=\"section-4.3.2-2.2\">\n              <p id=\"section-4.3.2-2.2.1\"><strong>Request Body:</strong>\n                <code>json\n{\n  \"query\": \"I need an agent that can summarize long legal documents in Chinese.\",\n  \"top\": 5\n}\n</code><a href=\"#section-4.3.2-2.2.1\" class=\"pilcrow\">¶</a></p>\n</li>\n          </ul>\n<p id=\"section-4.3.2-3\">The registry returns a ranked list of agents whose descriptions match the query semantically, possibly including a match score. For example:<a href=\"#section-4.3.2-3\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-4.3.2-4\"><code>json\n[\n  {\n    \"id\": \"agent-67890\",\n    \"name\": \"Legal Document Summarizer\",\n    \"description\": \"...\",\n    \"score\": 0.93\n  },\n  ...\n]\n</code><a href=\"#section-4.3.2-4\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-4.3.2-5\">Semantic search enables flexible discovery beyond exact filter matching, aligning with how users or orchestrating agents might reason about tasks. Registries not supporting semantic search simply ignore the <code>query</code> text and rely on provided filters.<a href=\"#section-4.3.2-5\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"retrieve-single-agent\">\n<section id=\"section-4.3.3\">\n          <h4 id=\"name-retrieve-single-agent\">\n<a href=\"#section-4.3.3\" class=\"section-number selfRef\">4.3.3. </a><a href=\"#name-retrieve-single-agent\" class=\"section-name selfRef\">Retrieve Single Agent</a>\n          </h4>\n<ul class=\"normal\">\n<li class=\"normal\" id=\"section-4.3.3-1.1\">\n              <p id=\"section-4.3.3-1.1.1\"><strong>Endpoint:</strong> <code>GET /agents/{id}</code><a href=\"#section-4.3.3-1.1.1\" class=\"pilcrow\">¶</a></p>\n</li>\n            <li class=\"normal\" id=\"section-4.3.3-1.2\">\n              <p id=\"section-4.3.3-1.2.1\"><strong>Response:</strong> Full metadata JSON for the specified agent, or <strong>404</strong> if not found.<a href=\"#section-4.3.3-1.2.1\" class=\"pilcrow\">¶</a></p>\n</li>\n          </ul>\n</section>\n</div>\n</section>\n</div>\n</section>\n</div>\n<div id=\"agent-invocation\">\n<section id=\"section-5\">\n      <h2 id=\"name-agent-invocation\">\n<a href=\"#section-5\" class=\"section-number selfRef\">5. </a><a href=\"#name-agent-invocation\" class=\"section-name selfRef\">Agent Invocation</a>\n      </h2>\n<p id=\"section-5-1\">Once a client discovers a suitable agent, it invokes the agent by sending a request to the agent's endpoint. This section defines the interface for invocation.<a href=\"#section-5-1\" class=\"pilcrow\">¶</a></p>\n<div id=\"invocation-request\">\n<section id=\"section-5.1\">\n        <h3 id=\"name-invocation-request\">\n<a href=\"#section-5.1\" class=\"section-number selfRef\">5.1. </a><a href=\"#name-invocation-request\" class=\"section-name selfRef\">Invocation Request</a>\n        </h3>\n<p id=\"section-5.1-1\">To invoke an agent, the client sends an HTTP POST request to the agent's invocation endpoint with a JSON body containing the input data for the agent's task.<a href=\"#section-5.1-1\" class=\"pilcrow\">¶</a></p>\n<ul class=\"normal\">\n<li class=\"normal\" id=\"section-5.1-2.1\">\n            <p id=\"section-5.1-2.1.1\"><strong>Method:</strong> POST<a href=\"#section-5.1-2.1.1\" class=\"pilcrow\">¶</a></p>\n</li>\n          <li class=\"normal\" id=\"section-5.1-2.2\">\n            <p id=\"section-5.1-2.2.1\"><strong>URL:</strong> The <code>endpoint</code> URL from the agent's metadata (e.g., <code>https://api.example.com/agents/translate</code>). If a gateway is used, the URL might be a gateway-provided path.<a href=\"#section-5.1-2.2.1\" class=\"pilcrow\">¶</a></p>\n</li>\n          <li class=\"normal\" id=\"section-5.1-2.3\">\n            <p id=\"section-5.1-2.3.1\"><strong>Headers:</strong><a href=\"#section-5.1-2.3.1\" class=\"pilcrow\">¶</a></p>\n<ul class=\"normal\">\n<li class=\"normal\" id=\"section-5.1-2.3.2.1\">\n                <p id=\"section-5.1-2.3.2.1.1\"><code>Content-Type: application/json</code><a href=\"#section-5.1-2.3.2.1.1\" class=\"pilcrow\">¶</a></p>\n</li>\n              <li class=\"normal\" id=\"section-5.1-2.3.2.2\">\n                <p id=\"section-5.1-2.3.2.2.1\">Authentication header as required (e.g., <code>Authorization: Bearer &lt;token&gt;</code> or <code>X-API-Key: &lt;key&gt;</code>).<a href=\"#section-5.1-2.3.2.2.1\" class=\"pilcrow\">¶</a></p>\n</li>\n            </ul>\n</li>\n          <li class=\"normal\" id=\"section-5.1-2.4\">\n            <p id=\"section-5.1-2.4.1\"><strong>Body:</strong> A JSON object containing input data as per the agent's input schema.<a href=\"#section-5.1-2.4.1\" class=\"pilcrow\">¶</a></p>\n</li>\n        </ul>\n<p id=\"section-5.1-3\">For example, invoking the translation agent:<a href=\"#section-5.1-3\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-5.1-4\"><code>json\n{\n  \"text\": \"Hello, how are you?\",\n  \"source_language\": \"en\",\n  \"target_language\": \"fr\"\n}\n</code><a href=\"#section-5.1-4\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-5.1-5\">This corresponds to the agent's expected input fields. If the agent had multiple operations and a unified endpoint, there might be an additional field to specify which operation or capability to use. For instance, the JSON could include something like <code>\"operation\": \"translateText\"</code> if needed. Alternatively, different operations could be exposed at different URLs (e.g., <code>/agents/xyz/translate</code> vs <code>/agents/xyz/summarize</code>), in which case the operation is selected by the URL and no extra field is required.<a href=\"#section-5.1-5\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-5.1-6\">The protocol does not fix a specific parameter naming; it defers to the agent's published schema. The only requirement is that the client's JSON must conform to what the agent expects. For interoperability, using clear field names and standard data types (strings, numbers, booleans, or structured objects) is encouraged. Binary data (like images for an image-processing agent) should be handled carefully: typically, binary inputs can be provided either as URLs (pointing to where the data is stored), or as base64-encoded strings within the JSON, or by using a multipart request. This specification suggests that if agents need to receive large binary payloads, they either use URL references or out-of-scope mechanisms (like a separate upload and then an ID in the JSON). The core invocation remains JSON-based for simplicity and consistency.<a href=\"#section-5.1-6\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-5.1-7\"><strong>Headers:</strong> If authentication is required (see Security section), the client must also include the appropriate headers (e.g., <code>Authorization: Bearer &lt;token&gt;</code> or an API key header) as dictated by the agent's metadata. The invocation request may also include optional headers for correlation or debugging, such as a request ID, but those are not standardized here.<a href=\"#section-5.1-7\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"invocation-response\">\n<section id=\"section-5.2\">\n        <h3 id=\"name-invocation-response\">\n<a href=\"#section-5.2\" class=\"section-number selfRef\">5.2. </a><a href=\"#name-invocation-response\" class=\"section-name selfRef\">Invocation Response</a>\n        </h3>\n<p id=\"section-5.2-1\">The agent (or gateway) will process the request and return a response. The status code and JSON body of the response follow these guidelines:<a href=\"#section-5.2-1\" class=\"pilcrow\">¶</a></p>\n<ul class=\"normal\">\n<li class=\"normal\" id=\"section-5.2-2.1\">\n            <p id=\"section-5.2-2.1.1\"><strong>Success (2xx status):</strong> If the agent successfully performed its task and produced a result, the status <span class=\"bcp14\">SHOULD</span> be <strong>200 OK</strong> (or <strong>201 Created</strong> if a new resource was created as a result, though usually for these actions 200 is fine). The response body will contain the output data in JSON. Ideally, the output JSON conforms to the agent's advertised output schema.<a href=\"#section-5.2-2.1.1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-5.2-2.1.2\">\nFor example, for the translation request above, a success response might be:<a href=\"#section-5.2-2.1.2\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-5.2-2.1.3\"><code>json\n{\n  \"translated_text\": \"Bonjour, comment êtes-vous?\"\n}\n</code><a href=\"#section-5.2-2.1.3\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-5.2-2.1.4\">\nHere the JSON structure matches what was described in the agent metadata's <code>outputs</code>. If the output is complex (e.g., multiple fields or nested objects), those should appear accordingly. The response can include other informational fields if necessary (for example, some agents might return usage metrics, like tokens used or time taken, or a trace id for debugging, but these are optional and out of scope of the core spec).<a href=\"#section-5.2-2.1.4\" class=\"pilcrow\">¶</a></p>\n</li>\n          <li class=\"normal\" id=\"section-5.2-2.2\">\n            <p id=\"section-5.2-2.2.1\"><strong>Client Error (4xx status):</strong> If the request was malformed or invalid, the agent returns a <strong>4xx</strong> status code. The most common would be <strong>400 Bad Request</strong> for a JSON that doesn't conform to the expected schema or missing required fields. For example, if the client omitted a required field <code>target_language</code>, the agent might respond with 400. The response body <span class=\"bcp14\">SHOULD</span> include an error object explaining what went wrong. We define a simple standard for error objects:<a href=\"#section-5.2-2.2.1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-5.2-2.2.2\"><code>json\n{\n  \"error\": {\n    \"code\": \"InvalidInput\",\n    \"message\": \"Required field 'target_language' is missing.\"\n  }\n}\n</code><a href=\"#section-5.2-2.2.2\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-5.2-2.2.3\">\nHere, <code>\"code\"</code> is a short string identifier for the error type (e.g., <code>InvalidInput</code>, <code>Unauthorized</code>, <code>NotFound</code>), and <code>\"message\"</code> is a human-readable description. The agent can include additional details if available (e.g., a field name that is wrong, etc.). If the error is due to unauthorized access, <strong>401 Unauthorized</strong> or <strong>403 Forbidden</strong> should be used (with an appropriate error message indicating credentials are missing or insufficient). If the agent ID is not found (perhaps the client used an outdated reference), <strong>404 Not Found</strong> is appropriate.<a href=\"#section-5.2-2.2.3\" class=\"pilcrow\">¶</a></p>\n</li>\n          <li class=\"normal\" id=\"section-5.2-2.3\">\n            <p id=\"section-5.2-2.3.1\"><strong>Server/Agent Error (5xx status):</strong> If something goes wrong on the agent's side during processing (an exception, a timeout while executing the task, etc.), the agent (or gateway) returns a <strong>5xx</strong> status (most likely <strong>500 Internal Server Error</strong> or <strong>502/504</strong> if there are upstream issues). The response should again include an error object. For example:<a href=\"#section-5.2-2.3.1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-5.2-2.3.2\"><code>json\n{\n  \"error\": {\n    \"code\": \"AgentError\",\n    \"message\": \"The agent encountered an unexpected error while processing the request.\"\n  }\n}\n</code><a href=\"#section-5.2-2.3.2\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-5.2-2.3.3\">\nThe agent might log the detailed error internally, but only convey a generic message to the client for security. A <strong>503 Service Unavailable</strong> might be returned if the agent is temporarily overloaded or offline, indicating the client could retry later.<a href=\"#section-5.2-2.3.3\" class=\"pilcrow\">¶</a></p>\n</li>\n          <li class=\"normal\" id=\"section-5.2-2.4\">\n            <p id=\"section-5.2-2.4.1\"><strong>Status Codes Summary:</strong> In short, this protocol expects the use of standard status codes to reflect outcome (200 for success, 4xx for client-side issues, 5xx for server-side issues). Agents should avoid using 2xx if the operation did not semantically succeed (even if technically a response was generated). For example, if an agent is a composite that calls other services and one of those calls fails, it should propagate an error rather than returning 200 with an error in the data.<a href=\"#section-5.2-2.4.1\" class=\"pilcrow\">¶</a></p>\n</li>\n        </ul>\n</section>\n</div>\n<div id=\"additional-considerations-for-invocation\">\n<section id=\"section-5.3\">\n        <h3 id=\"name-additional-considerations-f\">\n<a href=\"#section-5.3\" class=\"section-number selfRef\">5.3. </a><a href=\"#name-additional-considerations-f\" class=\"section-name selfRef\">Additional Considerations for Invocation</a>\n        </h3>\n<ul class=\"normal\">\n<li class=\"normal\" id=\"section-5.3-1.1\">\n            <p id=\"section-5.3-1.1.1\"><strong>Streaming Responses:</strong> Some agents (especially those wrapping large language models) may produce results that are streamed (for example, token-by-token outputs). While this base protocol assumes a request-response pattern with the full result delivered at once, it can be extended to support streaming by using chunked responses or WebSockets. For instance, an agent might accept a parameter like <code>stream: true</code> and then send partial outputs as they become available. This is an advanced use case and not elaborated in this draft, but implementers should consider compatibility with streaming if real-time responsiveness is needed.<a href=\"#section-5.3-1.1.1\" class=\"pilcrow\">¶</a></p>\n</li>\n          <li class=\"normal\" id=\"section-5.3-1.2\">\n            <p id=\"section-5.3-1.2.1\"><strong>Batch Requests:</strong> If a client wants to send multiple independent requests to an agent in one go (for efficiency), the protocol can support that by allowing an array of input objects in the POST body instead of a single object. The response would then be an array of output results. This is optional and depends on agent support.<a href=\"#section-5.3-1.2.1\" class=\"pilcrow\">¶</a></p>\n</li>\n          <li class=\"normal\" id=\"section-5.3-1.3\">\n            <p id=\"section-5.3-1.3.1\"><strong>Idempotency and Retries:</strong> Most agent invocations are not strictly idempotent (since an agent might perform an action or have side effects), but many are pure functions (e.g., translate text). Clients and gateways should design with retry logic carefully — if a network failure happens, a retry might re-run an operation. It's best to ensure that agents' operations are either idempotent or have safeguards (for example, an operation that sends an email might have an idempotency key).<a href=\"#section-5.3-1.3.1\" class=\"pilcrow\">¶</a></p>\n</li>\n          <li class=\"normal\" id=\"section-5.3-1.4\">\n            <p id=\"section-5.3-1.4.1\"><strong>Operation Metadata:</strong> In cases where the agent defines multiple <code>operations</code> in its metadata, the invocation interface might allow a generic endpoint that accepts an operation name. Alternatively, each operation could be a sub-resource. This draft leaves the exact mechanism flexible: an implementation could choose one of these approaches. The key is that the invocation uses POST and a JSON body following the agent's schema.<a href=\"#section-5.3-1.4.1\" class=\"pilcrow\">¶</a></p>\n</li>\n        </ul>\n</section>\n</div>\n</section>\n</div>\n<div id=\"agent-semantic-resolution\">\n<section id=\"section-6\">\n      <h2 id=\"name-agent-semantic-resolution\">\n<a href=\"#section-6\" class=\"section-number selfRef\">6. </a><a href=\"#name-agent-semantic-resolution\" class=\"section-name selfRef\">Agent Semantic Resolution</a>\n      </h2>\n<p id=\"section-6-1\">Agent Semantic Resolution (ASR) is an optional extension to the discovery mechanism defined in this document. ASR enables a client to resolve a task intent into one or more candidate agents prior to invoking any specific agent.<a href=\"#section-6-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-6-2\">ASR operates on the following conceptual model:<a href=\"#section-6-2\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-6-3\"><code>\n(Intent, Context, Policy) → (Agent Endpoint(s), Invocation Metadata)\n</code><a href=\"#section-6-3\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-6-4\">The intent represents the task to be performed, while context and policy may include domain constraints, trust requirements, or performance considerations.<a href=\"#section-6-4\" class=\"pilcrow\">¶</a></p>\n<div id=\"non-goals\">\n<section id=\"section-6.1\">\n        <h3 id=\"name-non-goals\">\n<a href=\"#section-6.1\" class=\"section-number selfRef\">6.1. </a><a href=\"#name-non-goals\" class=\"section-name selfRef\">Non-Goals</a>\n        </h3>\n<p id=\"section-6.1-1\">ASR explicitly does not provide:<a href=\"#section-6.1-1\" class=\"pilcrow\">¶</a></p>\n<ul class=\"normal\">\n<li class=\"normal\" id=\"section-6.1-2.1\">\n            <p id=\"section-6.1-2.1.1\">Name-to-address resolution<a href=\"#section-6.1-2.1.1\" class=\"pilcrow\">¶</a></p>\n</li>\n          <li class=\"normal\" id=\"section-6.1-2.2\">\n            <p id=\"section-6.1-2.2.1\">Global or persistent agent identifiers<a href=\"#section-6.1-2.2.1\" class=\"pilcrow\">¶</a></p>\n</li>\n          <li class=\"normal\" id=\"section-6.1-2.3\">\n            <p id=\"section-6.1-2.3.1\">Replacement for DNS, ANS, or URI-based registries<a href=\"#section-6.1-2.3.1\" class=\"pilcrow\">¶</a></p>\n</li>\n        </ul>\n<p id=\"section-6.1-3\">ASR answers the question \"Which agent(s) should handle this task now?\" rather than \"Where is agent X located?\".<a href=\"#section-6.1-3\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-6.1-4\"></p>\n</section>\n</div>\n</section>\n</div>\n<div id=\"semantic-routing-platform\">\n<section id=\"section-7\">\n      <h2 id=\"name-semantic-routing-platform\">\n<a href=\"#section-7\" class=\"section-number selfRef\">7. </a><a href=\"#name-semantic-routing-platform\" class=\"section-name selfRef\">Semantic Routing Platform</a>\n      </h2>\n<p id=\"section-7-1\">A Semantic Routing Platform (SRP) is a control-plane service that implements ASR. An SRP assists a Host Agent in selecting appropriate agents before standard discovery and invocation procedures are used.<a href=\"#section-7-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-7-2\">An SRP <span class=\"bcp14\">MAY</span> perform semantic matching, ranking, and policy-based filtering of candidate agents. The SRP does not participate in task execution and does not alter the invocation semantics defined in this document.<a href=\"#section-7-2\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-7-3\">Interaction with an SRP is <span class=\"bcp14\">OPTIONAL</span>. Clients that do not support ASR continue to operate using the discovery and invocation mechanisms defined in earlier sections.<a href=\"#section-7-3\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-7-4\"></p>\n</section>\n</div>\n<div id=\"backward-compatibility\">\n<section id=\"section-8\">\n      <h2 id=\"name-backward-compatibility\">\n<a href=\"#section-8\" class=\"section-number selfRef\">8. </a><a href=\"#name-backward-compatibility\" class=\"section-name selfRef\">Backward Compatibility</a>\n      </h2>\n<p id=\"section-8-1\">All discovery and invocation mechanisms defined in previous revisions of this document remain valid and unchanged.<a href=\"#section-8-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-8-2\">Agent Semantic Resolution is an optional extension. Implementations <span class=\"bcp14\">MAY</span> support ASR incrementally, and registries <span class=\"bcp14\">MAY</span> provide semantic resolution capabilities without affecting existing clients.<a href=\"#section-8-2\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"security-considerations\">\n<section id=\"section-9\">\n      <h2 id=\"name-security-considerations\">\n<a href=\"#section-9\" class=\"section-number selfRef\">9. </a><a href=\"#name-security-considerations\" class=\"section-name selfRef\">Security Considerations</a>\n      </h2>\n<p id=\"section-9-1\">Security is a critical aspect of this protocol. All discovery and invocation traffic <span class=\"bcp14\">MUST</span> be protected with TLS <span>[<a href=\"#RFC8446\" class=\"cite xref\">RFC8446</a>]</span>, and authentication mechanisms such as OAuth 2.0 <span>[<a href=\"#RFC6749\" class=\"cite xref\">RFC6749</a>]</span>  bearer tokens, API keys, or mutual TLS are required except for public discovery endpoints. Registries <span class=\"bcp14\">MUST</span> enforce per-client entitlements, ensuring that both search results and invocation access respect permissions and scopes. Gateways forwarding requests should authenticate themselves to agents, and agents should maintain stable identifiers and use signed responses when integrity is essential. All communication <span class=\"bcp14\">MUST</span> be encrypted, and agents are encouraged to disclose data-retention or logging practices, while sensitive data is best handled by on-premises or certified agents. To mitigate abuse, registries and agents <span class=\"bcp14\">MUST</span> implement rate limiting and quotas, particularly in semantic search scenarios. Trust mechanisms such as certification, test harnesses, or reputation systems may be used to validate agent claims, and metadata fields like \"certification\" or \"quality_score\" can inform client trust decisions. Systems <span class=\"bcp14\">SHOULD</span> also provide audit and logging with privacy-aware retention, while clients must treat agent outputs as untrusted until verified, using sandboxing and validation before executing code or commands.<a href=\"#section-9-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-9-2\">When Agent Semantic Resolution is used, security considerations extend to the pre-invocation phase. Resolution services <span class=\"bcp14\">SHOULD</span> validate agent capability claims, apply policy constraints, and exclude agents that do not meet trust or reputation requirements. Agents deemed unsafe <span class=\"bcp14\">SHOULD NOT</span> be returned as resolution candidates.<a href=\"#section-9-2\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"example-interaction-flow\">\n<section id=\"section-10\">\n      <h2 id=\"name-example-interaction-flow\">\n<a href=\"#section-10\" class=\"section-number selfRef\">10. </a><a href=\"#name-example-interaction-flow\" class=\"section-name selfRef\">Example Interaction Flow</a>\n      </h2>\n<ol start=\"1\" type=\"1\" class=\"normal type-1\" id=\"section-10-1\">\n<li id=\"section-10-1.1\">\n          <p id=\"section-10-1.1.1\"><strong>Search:</strong> Client <code>POST /agents/search</code> with <code>{\"query\":\"summarize an English document\",\"filters\":{\"capabilities\":[\"summarization\"],\"supported_language\":\"en\"},\"top\":3}</code>.<a href=\"#section-10-1.1.1\" class=\"pilcrow\">¶</a></p>\n</li>\n        <li id=\"section-10-1.2\">\n          <p id=\"section-10-1.2.1\"><strong>Select:</strong> Registry returns candidate agents with <code>id</code>, <code>name</code>, <code>description</code>, and <code>score</code>. Client retrieves full metadata via <code>GET /agents/{id}</code> if needed.<a href=\"#section-10-1.2.1\" class=\"pilcrow\">¶</a></p>\n</li>\n        <li id=\"section-10-1.3\">\n          <p id=\"section-10-1.3.1\"><strong>Invoke:</strong> Client <code>POST</code> to the agent's <code>endpoint</code> (or gateway path) with inputs conforming to agent schema and required auth header.<a href=\"#section-10-1.3.1\" class=\"pilcrow\">¶</a></p>\n</li>\n        <li id=\"section-10-1.4\">\n          <p id=\"section-10-1.4.1\"><strong>Handle Response:</strong> Client processes success or error response; may log usage and optionally rate/feedback the agent.<a href=\"#section-10-1.4.1\" class=\"pilcrow\">¶</a></p>\n</li>\n      </ol>\n</section>\n</div>\n<div id=\"iana-considerations\">\n<section id=\"section-11\">\n      <h2 id=\"name-iana-considerations\">\n<a href=\"#section-11\" class=\"section-number selfRef\">11. </a><a href=\"#name-iana-considerations\" class=\"section-name selfRef\">IANA Considerations</a>\n      </h2>\n<p id=\"section-11-1\">This document has no IANA actions.<a href=\"#section-11-1\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"sec-normative-references\">\n<section id=\"section-12\">\n      <h2 id=\"name-normative-references\">\n<a href=\"#section-12\" class=\"section-number selfRef\">12. </a><a href=\"#name-normative-references\" class=\"section-name selfRef\">Normative References</a>\n      </h2>\n<dl class=\"references\">\n<dt id=\"RFC2119\">[RFC2119]</dt>\n      <dd>\n<span class=\"refAuthor\">Bradner, S.</span>, <span class=\"refTitle\">\"Key words for use in RFCs to Indicate Requirement Levels\"</span>, <span class=\"seriesInfo\">BCP 14</span>, <span class=\"seriesInfo\">RFC 2119</span>, <span class=\"seriesInfo\">DOI 10.17487/RFC2119</span>, <time datetime=\"1997-03\" class=\"refDate\">March 1997</time>, <span>&lt;<a href=\"https://www.rfc-editor.org/rfc/rfc2119\">https://www.rfc-editor.org/rfc/rfc2119</a>&gt;</span>. </dd>\n<dd class=\"break\"></dd>\n<dt id=\"RFC6749\">[RFC6749]</dt>\n      <dd>\n<span class=\"refAuthor\">Hardt, D., Ed.</span>, <span class=\"refTitle\">\"The OAuth 2.0 Authorization Framework\"</span>, <span class=\"seriesInfo\">RFC 6749</span>, <span class=\"seriesInfo\">DOI 10.17487/RFC6749</span>, <time datetime=\"2012-10\" class=\"refDate\">October 2012</time>, <span>&lt;<a href=\"https://www.rfc-editor.org/rfc/rfc6749\">https://www.rfc-editor.org/rfc/rfc6749</a>&gt;</span>. </dd>\n<dd class=\"break\"></dd>\n<dt id=\"RFC8174\">[RFC8174]</dt>\n      <dd>\n<span class=\"refAuthor\">Leiba, B.</span>, <span class=\"refTitle\">\"Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words\"</span>, <span class=\"seriesInfo\">BCP 14</span>, <span class=\"seriesInfo\">RFC 8174</span>, <span class=\"seriesInfo\">DOI 10.17487/RFC8174</span>, <time datetime=\"2017-05\" class=\"refDate\">May 2017</time>, <span>&lt;<a href=\"https://www.rfc-editor.org/rfc/rfc8174\">https://www.rfc-editor.org/rfc/rfc8174</a>&gt;</span>. </dd>\n<dd class=\"break\"></dd>\n<dt id=\"RFC8259\">[RFC8259]</dt>\n      <dd>\n<span class=\"refAuthor\">Bray, T., Ed.</span>, <span class=\"refTitle\">\"The JavaScript Object Notation (JSON) Data Interchange Format\"</span>, <span class=\"seriesInfo\">STD 90</span>, <span class=\"seriesInfo\">RFC 8259</span>, <span class=\"seriesInfo\">DOI 10.17487/RFC8259</span>, <time datetime=\"2017-12\" class=\"refDate\">December 2017</time>, <span>&lt;<a href=\"https://www.rfc-editor.org/rfc/rfc8259\">https://www.rfc-editor.org/rfc/rfc8259</a>&gt;</span>. </dd>\n<dd class=\"break\"></dd>\n<dt id=\"RFC8446\">[RFC8446]</dt>\n      <dd>\n<span class=\"refAuthor\">Rescorla, E.</span>, <span class=\"refTitle\">\"The Transport Layer Security (TLS) Protocol Version 1.3\"</span>, <span class=\"seriesInfo\">RFC 8446</span>, <span class=\"seriesInfo\">DOI 10.17487/RFC8446</span>, <time datetime=\"2018-08\" class=\"refDate\">August 2018</time>, <span>&lt;<a href=\"https://www.rfc-editor.org/rfc/rfc8446\">https://www.rfc-editor.org/rfc/rfc8446</a>&gt;</span>. </dd>\n<dd class=\"break\"></dd>\n<dt id=\"RFC9110\">[RFC9110]</dt>\n    <dd>\n<span class=\"refAuthor\">Fielding, R., Ed.</span>, <span class=\"refAuthor\">Nottingham, M., Ed.</span>, and <span class=\"refAuthor\">J. Reschke, Ed.</span>, <span class=\"refTitle\">\"HTTP Semantics\"</span>, <span class=\"seriesInfo\">STD 97</span>, <span class=\"seriesInfo\">RFC 9110</span>, <span class=\"seriesInfo\">DOI 10.17487/RFC9110</span>, <time datetime=\"2022-06\" class=\"refDate\">June 2022</time>, <span>&lt;<a href=\"https://www.rfc-editor.org/rfc/rfc9110\">https://www.rfc-editor.org/rfc/rfc9110</a>&gt;</span>. </dd>\n<dd class=\"break\"></dd>\n</dl>\n</section>\n</div>\n<div id=\"acknowledgments\">\n<section id=\"appendix-A\">\n      <h2 id=\"name-acknowledgments\">\n<a href=\"#name-acknowledgments\" class=\"section-name selfRef\">Acknowledgments</a>\n      </h2>\n<p id=\"appendix-A-1\">TODO acknowledge.<a href=\"#appendix-A-1\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"authors-addresses\">\n<section id=\"appendix-B\">\n      <h2 id=\"name-authors-addresses\">\n<a href=\"#name-authors-addresses\" class=\"section-name selfRef\">Authors' Addresses</a>\n      </h2>\n<address class=\"vcard\">\n        <div dir=\"auto\" class=\"left\"><span class=\"fn nameRole\">Yong Cui</span></div>\n<div dir=\"auto\" class=\"left\"><span class=\"org\">Tsinghua University</span></div>\n<div dir=\"auto\" class=\"left\">\n<span class=\"region\">Beijing</span>, <span class=\"postal-code\">100084</span>\n</div>\n<div dir=\"auto\" class=\"left\"><span class=\"country-name\">China</span></div>\n<div class=\"email\">\n<span>Email:</span>\n<a href=\"mailto:cuiyong@tsinghua.edu.cn\" class=\"email\">cuiyong@tsinghua.edu.cn</a>\n</div>\n<div class=\"url\">\n<span>URI:</span>\n<a href=\"http://www.cuiyong.net/\" class=\"url\">http://www.cuiyong.net/</a>\n</div>\n</address>\n<address class=\"vcard\">\n        <div dir=\"auto\" class=\"left\"><span class=\"fn nameRole\">Yihan Chao</span></div>\n<div dir=\"auto\" class=\"left\"><span class=\"org\">Zhongguancun Laboratory</span></div>\n<div dir=\"auto\" class=\"left\">\n<span class=\"region\">Beijing</span>, <span class=\"postal-code\">100094</span>\n</div>\n<div dir=\"auto\" class=\"left\"><span class=\"country-name\">China</span></div>\n<div class=\"email\">\n<span>Email:</span>\n<a href=\"mailto:chaoyh@zgclab.edu.cn\" class=\"email\">chaoyh@zgclab.edu.cn</a>\n</div>\n</address>\n<address class=\"vcard\">\n        <div dir=\"auto\" class=\"left\"><span class=\"fn nameRole\">Chenguang Du</span></div>\n<div dir=\"auto\" class=\"left\"><span class=\"org\">Zhongguancun Laboratory</span></div>\n<div dir=\"auto\" class=\"left\">\n<span class=\"region\">Beijing</span>, <span class=\"postal-code\">100094</span>\n</div>\n<div dir=\"auto\" class=\"left\"><span class=\"country-name\">China</span></div>\n<div class=\"email\">\n<span>Email:</span>\n<a href=\"mailto:ducg@zgclab.edu.cn\" class=\"email\">ducg@zgclab.edu.cn</a>\n</div>\n</address>\n</section>\n</div>\n<script>const toc = document.getElementById(\"toc\");\ntoc.querySelector(\"h2\").addEventListener(\"click\", e => {\n  toc.classList.toggle(\"active\");\n});\ntoc.querySelector(\"nav\").addEventListener(\"click\", e => {\n  toc.classList.remove(\"active\");\n});\n</script>\n<script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML=\"window.__CF$cv$params={r:'a3a01fed58c114cc',t:'MTc4OTIyODgyMg=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);\";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script></body>\n</html>\n","snapshot_chars":102949,"live_check":"changed"},{"url":"https://datatracker.ietf.org/doc/html/draft-daniel-ai-agent-internet-architecture-00","committed_hash":"sha256:a0fda8a46322b384ad6e757b251e087331de8aefb4e0a66e07d2899110da501c","committed_hash_short":"sha256:a0fda8a4…10da501c","mime_type":"text/html","committed_at":"2026-09-12T16:00:22.829164+00:00","content_snapshot":"\n<!DOCTYPE html>\n\n\n\n\n\n\n\n<html data-bs-theme=\"auto\" lang=\"en\">\n    <head>\n        \n        <meta charset=\"utf-8\">\n        <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n        <title>\n            \n                draft-daniel-ai-agent-internet-architecture-00\n            \n        </title>\n        <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n        <link href=\"https://static.ietf.org/fonts/inter/import.css\" rel=\"stylesheet\">\n        <link href=\"https://static.ietf.org/fonts/noto-sans-mono/import.css\" rel=\"stylesheet\">\n        \n            <link rel=\"stylesheet\" href=\"https://static.ietf.org/dt/12.75.0/ietf/css/document_html_referenced.css\">\n            \n                <link rel=\"stylesheet\" href=\"https://static.ietf.org/dt/12.75.0/ietf/css/document_html_txt.css\">\n            \n            <script type=\"module\" crossorigin=\"\" src=\"https://static.ietf.org/dt/12.75.0/assets/embedded-881b2388.js\"></script>\n<link href=\"https://static.ietf.org/dt/12.75.0/assets/create-pinia-singleton-d62960d6.js\" type=\"text/javascript\" crossorigin=\"anonymous\" rel=\"modulepreload\" as=\"script\" />\n<link href=\"https://static.ietf.org/dt/12.75.0/assets/Scrollbar-8c74800b.js\" type=\"text/javascript\" crossorigin=\"anonymous\" rel=\"modulepreload\" as=\"script\" />\n            <script src=\"https://static.ietf.org/dt/12.75.0/ietf/js/document_html.js\"></script>\n            <script src=\"https://static.ietf.org/dt/12.75.0/ietf/js/theme.js\"></script>\n        \n        <link rel=\"alternate\" type=\"application/atom+xml\" title=\"Document changes\" href=\"/feed/document-changes/draft-daniel-ai-agent-internet-architecture/\">\n        <meta name=\"description\"\n            \n                content=\"Architectural Requirements for Supporting AI Agents on the Internet (Internet-Draft, 2026)\"\n            >\n        \n\n<link rel=\"apple-touch-icon\"\n      sizes=\"180x180\"\n      href=\"https://static.ietf.org/dt/12.75.0/ietf/images/ietf-logo-nor-180.png\">\n<link rel=\"icon\"\n      sizes=\"32x32\"\n      href=\"https://static.ietf.org/dt/12.75.0/ietf/images/ietf-logo-nor-32.png\">\n<link rel=\"icon\"\n      sizes=\"16x16\"\n      href=\"https://static.ietf.org/dt/12.75.0/ietf/images/ietf-logo-nor-16.png\">\n<link rel=\"manifest\" href=\"/site.webmanifest\">\n<link rel=\"mask-icon\"\n      href=\"https://static.ietf.org/dt/12.75.0/ietf/images/ietf-logo-nor-mask.svg\"\n      color=\"#ffffff\">\n<meta name=\"msapplication-TileColor\"\n      content=\"#ffffff\">\n<meta name=\"theme-color\"\n      content=\"#ffffff\">\n        \n\n\n\n\n<meta property=\"og:title\" content=\"Architectural Requirements for Supporting AI Agents on the Internet\">\n<meta property=\"og:url\" content=\"https://datatracker.ietf.org/doc/html/draft-daniel-ai-agent-internet-architecture-00\">\n\n\n<link rel=\"canonical\" href=\"https://datatracker.ietf.org/doc/html/draft-daniel-ai-agent-internet-architecture-00\">\n\n<meta property=\"og:site_name\" content=\"IETF Datatracker\">\n<meta property=\"og:description\" content=\"Autonomous AI agents are evolving from interactive assistants into networked software workloads that discover services, invoke tools, delegate authority, transact, communicate with other agents, and act asynchronously on behalf of humans and organizations. Existing Internet protocols provide strong foundations, but agent autonomy, dynamic delegation, machine-speed execution, and cross-domain interaction create requirements that span multiple protocol families. This document describes architectural requirements for supporting AI agents on the Internet across naming and discovery, HTTP, authentication, authorization and delegation, TLS and workload identity, asynchronous messaging, capability and intent-based resolution, payments, provenance, auditability, revocation, security, and privacy. It favors profiling and extending existing Internet protocols over defining a monolithic new agent protocol, and identifies the need for IETF-wide architectural coordination.\">\n<meta property=\"og:type\" content=\"article\">\n\n<meta property=\"article:section\" content=\"Individual Internet-Draft\">\n\n<meta property=\"article:author\" content=\"Soohong Daniel Park\">\n\n\n\n        \n        <style>\n            \n            .diff-form .select2-selection__rendered {\n                direction: rtl;\n                text-align: left;\n            }\n        </style>\n    </head>\n    <body>\n        \n        <noscript><iframe class=\"status\" title=\"Site status\" src=\"/status/latest\"></iframe></noscript>\n<div class=\"vue-embed\" data-component=\"Status\"></div>\n        <div class=\"btn-toolbar sidebar-toolbar position-fixed top-0 end-0 m-2 m-lg-3 d-print-none\">\n            <div class=\"dropdown\">\n                <button class=\"btn btn-outline-secondary btn-sm me-1 dropdown-toggle d-flex align-items-center\"\n                    id=\"bd-theme\" type=\"button\" aria-expanded=\"false\" data-bs-toggle=\"dropdown\"\n                    aria-label=\"Toggle theme\">\n                        <i class=\"theme-icon-active bi bi-circle-half\"></i>\n                </button>\n\n                <ul class=\"dropdown-menu\" aria-labelledby=\"bd-theme\">\n                    <li>\n                        <button type=\"button\" class=\"dropdown-item d-flex align-items-center\"\n                            data-bs-theme-value=\"light\" aria-pressed=\"false\">\n                            <i class=\"me-2 opacity-50 theme-icon bi bi-sun-fill\"></i>\n                            Light<i class=\"bi bi-check2 ms-auto d-none\"></i>\n                        </button>\n                    </li>\n                    <li>\n                        <button type=\"button\" class=\"dropdown-item d-flex align-items-center\"\n                            data-bs-theme-value=\"dark\" aria-pressed=\"false\">\n                            <i class=\"me-2 opacity-50 theme-icon bi bi-moon-stars-fill\"></i>\n                            Dark<i class=\"bi bi-check2 ms-auto d-none\"></i>\n                        </button>\n                    </li>\n                    <li>\n                        <button type=\"button\" class=\"dropdown-item d-flex align-items-center active\"\n                            data-bs-theme-value=\"auto\" aria-pressed=\"true\">\n                            <i class=\"me-2 opacity-50 theme-icon bi bi-circle-half\"></i>\n                            Auto<i class=\"bi bi-check2 ms-auto d-none\"></i>\n                        </button>\n                    </li>\n                </ul>\n            </div>\n            <button class=\"btn btn-outline-secondary btn-sm sidebar-toggle\"\n                    type=\"button\"\n                    data-bs-toggle=\"collapse\"\n                    data-bs-target=\"#sidebar\"\n                    aria-expanded=\"true\"\n                    aria-controls=\"sidebar\"\n                    aria-label=\"Toggle metadata sidebar\"\n                    title=\"Toggle metadata sidebar\">\n            <i class=\"bi bi-arrow-bar-left sidebar-shown\"></i>\n            <i class=\"bi bi-arrow-bar-right sidebar-collapsed\"></i>\n            </button>\n        </div>\n        <nav class=\"navbar bg-light-subtle px-1 fixed-top d-print-none d-md-none\">\n            <a class=\"nav-link ps-1\"\n               href=\"/doc/draft-daniel-ai-agent-internet-architecture/\">\n                 \n                    draft-daniel-ai-agent-internet-architecture-00\n                \n                <br class=\"d-sm-none\">\n\n                <span class=\"ms-sm-3 badge rounded-pill badge-draft\">\n                    \n                        Internet-Draft\n                    \n                </span>\n            </a>\n            <button class=\"navbar-toggler p-1\"\n                    type=\"button\"\n                    data-bs-toggle=\"collapse\"\n                    data-bs-target=\"#docinfo-collapse\"\n                    aria-controls=\"docinfo-collapse\"\n                    aria-expanded=\"false\"\n                    aria-label=\"Show document information\">\n                <span class=\"navbar-toggler-icon small\"></span>\n            </button>\n            <div class=\"navbar-nav navbar-nav-scroll overscroll-none collapse pt-1\" id=\"docinfo-collapse\">\n                <div class=\"bg-light-subtle p-0\">\n                    <table class=\"table table-sm table-borderless small\">\n                        <tbody class=\"meta align-top\">\n                            <tr>\n                                <th scope=\"row\"></th>\n                                <th scope=\"row\">Title</th>\n                                <td class=\"edit\"></td>\n                                <td>Architectural Requirements for Supporting AI Agents on the Internet</td>\n                            </tr>\n                        </tbody>\n                        \n\n\n\n\n\n\n\n<tbody class=\"meta align-top \">\n    <tr>\n        <th scope=\"row\">Document</th>\n        <th scope=\"row\">Document type</th>\n        <td class=\"edit\"></td>\n        <td>\n            \n\n\n\n\n\n\n\n    <div>This is an older version of an Internet-Draft whose latest revision state is \"Active\".</div>\n\n            \n            \n            \n                \n\n\n\n\n    <div class=\"alert alert-warning small p-2 mt-2\" role=\"alert\">\n        This document is an Internet-Draft (I-D).\n        Anyone may submit an I-D to the IETF.\n        This I-D is <strong>not endorsed by the IETF</strong> and has <strong>no formal standing</strong> in the\n        <a href=\"/doc/rfc2026/\">IETF standards process</a>.\n    </div>\n\n\n            \n        </td>\n    </tr>\n    \n        <tr>\n            <td></td>\n            <th scope=\"row\">Select version</th>\n            <td class=\"edit\"></td>\n            <td>\n                \n\n\n\n    <ul class=\"revision-list pagination pagination-sm text-center flex-wrap my-0\">\n        \n            \n                 \n                    <li class=\"page-item active\">\n                        <a class=\"page-link\"\n                        href=\"/doc/html/draft-daniel-ai-agent-internet-architecture-00\"\n                        >\n                            00\n                        </a>\n                    </li>\n                \n            \n                 \n                    <li class=\"page-item \">\n                        <a class=\"page-link\"\n                        href=\"/doc/html/draft-daniel-ai-agent-internet-architecture-01\"\n                        rel=\"nofollow\">\n                            01\n                        </a>\n                    </li>\n                \n            \n                 \n                    <li class=\"page-item \">\n                        <a class=\"page-link\"\n                        href=\"/doc/html/draft-daniel-ai-agent-internet-architecture-02\"\n                        rel=\"nofollow\">\n                            02\n                        </a>\n                    </li>\n                \n            \n                 \n                    <li class=\"page-item \">\n                        <a class=\"page-link\"\n                        href=\"/doc/html/draft-daniel-ai-agent-internet-architecture-03\"\n                        >\n                            03\n                        </a>\n                    </li>\n                \n            \n            \n        \n    </ul>\n\n            </td>\n        </tr>\n        \n            <tr>\n                <td></td>\n                <th scope=\"row\">Compare versions</th>\n                <td class=\"edit\"></td>\n                <td>\n                    \n\n\n\n<form class=\"form-horizontal diff-form\"\n      action=\"https://author-tools.ietf.org/iddiff\"\n      method=\"get\"\n      target=\"_blank\">\n\n            <select class=\"form-select form-select-sm mb-1 select2-field\"\n                    data-max-entries=\"1\"\n                    data-width=\"resolve\"\n                    data-allow-clear=\"false\"\n                    data-minimum-input-length=\"0\"\n                    aria-label=\"From revision\"\n                    name=\"url1\">\n                \n                    <option value=\"draft-daniel-ai-agent-internet-architecture-03\">\n                        draft-daniel-ai-agent-internet-architecture-03\n                        \n                    </option>\n                \n                    <option value=\"draft-daniel-ai-agent-internet-architecture-02\" selected>\n                        draft-daniel-ai-agent-internet-architecture-02\n                        \n                    </option>\n                \n                    <option value=\"draft-daniel-ai-agent-internet-architecture-01\">\n                        draft-daniel-ai-agent-internet-architecture-01\n                        \n                    </option>\n                \n                    <option value=\"draft-daniel-ai-agent-internet-architecture-00\">\n                        draft-daniel-ai-agent-internet-architecture-00\n                        \n                    </option>\n                \n                \n            </select>\n\n            <select class=\"form-select form-select-sm mb-1 select2-field\"\n                    data-max-entries=\"1\"\n                    data-width=\"resolve\"\n                    data-allow-clear=\"false\"\n                    data-minimum-input-length=\"0\"\n                    aria-label=\"To revision\"\n                    name=\"url2\">\n                \n                    <option value=\"draft-daniel-ai-agent-internet-architecture-03\" selected>\n                        draft-daniel-ai-agent-internet-architecture-03\n                        \n                    </option>\n                \n                    <option value=\"draft-daniel-ai-agent-internet-architecture-02\">\n                        draft-daniel-ai-agent-internet-architecture-02\n                        \n                    </option>\n                \n                    <option value=\"draft-daniel-ai-agent-internet-architecture-01\">\n                        draft-daniel-ai-agent-internet-architecture-01\n                        \n                    </option>\n                \n                    <option value=\"draft-daniel-ai-agent-internet-architecture-00\">\n                        draft-daniel-ai-agent-internet-architecture-00\n                        \n                    </option>\n                \n                \n            </select>\n\n            <button type=\"submit\"\n                    class=\"btn btn-primary btn-sm\"\n                    value=\"--html\"\n                    name=\"difftype\">\n                Side-by-side\n            </button>\n            \n            <button type=\"submit\"\n                    class=\"btn btn-primary btn-sm\"\n                    value=\"--hwdiff\"\n                    name=\"difftype\">\n                Inline\n            </button>\n\n</form>\n                </td>\n            </tr>\n        \n    \n    <tr>\n        <td></td>\n        <th scope=\"row\">Author</th>\n        <td class=\"edit\">\n            \n        </td>\n        <td>\n            \n            \n                <span ><a \n           title=\"Datatracker profile of Soohong Daniel Park\"\n            href=\"/person/soohong.park@samsung.com\" >Soohong Daniel Park</a> <a \n               href=\"mailto:soohong.park%40samsung.com\"\n               aria-label=\"Compose email to soohong.park@samsung.com\"\n               title=\"Compose email to soohong.park@samsung.com\">\n                <i class=\"bi bi-envelope\"></i></a></span>\n            \n            \n        </td>\n    </tr>\n    \n    \n        \n        \n        \n    \n    <tr>\n        <td></td>\n        <th scope=\"row\">\n            RFC stream\n        </th>\n        <td class=\"edit\">\n            \n        </td>\n        <td class=\"text-body-secondary\">\n            \n                (None)\n            \n        </td>\n    </tr>\n    \n    <tr>\n        <td></td>\n        <th scope=\"row\">\n            Other formats\n        </th>\n        <td class=\"edit\">\n        </td>\n        <td>\n            \n                \n    <div class=\"buttonlist\">\n    \n        \n        <a class=\"btn btn-primary btn-sm\"\n          \n          target=\"_blank\"\n          href=\"https://www.ietf.org/archive/id/draft-daniel-ai-agent-internet-architecture-00.txt\">\n            \n                <i class=\"bi bi-file-text\"></i> txt\n            \n        </a>\n        \n    \n        \n        <a class=\"btn btn-primary btn-sm\"\n          \n          target=\"_blank\"\n          href=\"https://www.ietf.org/archive/id/draft-daniel-ai-agent-internet-architecture-00.html\">\n            \n                <i class=\"bi bi-file-code\"></i> html\n            \n        </a>\n        \n    \n        \n        <a class=\"btn btn-primary btn-sm\"\n          \n          target=\"_blank\"\n          href=\"https://www.ietf.org/archive/id/draft-daniel-ai-agent-internet-architecture-00.xml\">\n            \n                <i class=\"bi bi-file-code\"></i> xml\n            \n        </a>\n        \n    \n        \n    \n        \n        <a class=\"btn btn-primary btn-sm\"\n          \n          target=\"_blank\"\n          href=\"/doc/draft-daniel-ai-agent-internet-architecture/00/bibtex/\">\n            \n                <i class=\"bi bi-file-ruled\"></i> bibtex\n            \n        </a>\n        \n    \n        \n        <a class=\"btn btn-primary btn-sm\"\n          \n          target=\"_blank\"\n          href=\"/doc/bibxml3/draft-daniel-ai-agent-internet-architecture-00.xml\">\n            \n                <i class=\"bi bi-file-code\"></i> bibxml\n            \n        </a>\n        \n    \n</div>\n\n            \n        </td>\n    </tr>\n    \n    \n        \n    \n</tbody>\n                        <tr>\n                            <th scope=\"row\"></th>\n                            <th scope=\"row\"></th>\n                            <td class=\"edit\"></td>\n                            <td>\n                                <a class=\"btn btn-sm btn-warning mb-3\"\n                                target=\"_blank\"\n                                href=\"https://github.com/ietf-tools/datatracker/issues/new/choose\">\n                                    Report a bug\n                                    <i class=\"bi bi-bug\"></i>\n                                </a>\n                            </td>\n                        </tr>\n                    </table>\n                </div>\n            </div>\n        </nav>\n        <div class=\"row g-0\">\n            <div class=\"col-md-9 d-flex justify-content-center lh-sm\"\n                 data-bs-spy=\"scroll\"\n                 data-bs-target=\"#toc-nav\"\n                 data-bs-smooth-scroll=\"true\"\n                 tabindex=\"0\"\n                 id=\"content\">\n                \n                    <div class=\"rfchtml\">\n                        <br class=\"noprint\">\n                        <div class=\"xml2rfc\">\n<table class=\"ears\">\n<thead><tr>\n<td class=\"left\">Internet-Draft</td>\n<td class=\"center\">AI Agent Internet Architecture</td>\n<td class=\"right\">August 2026</td>\n</tr></thead>\n<tfoot><tr>\n<td class=\"left\">Park</td>\n<td class=\"center\">Expires 15 February 2027</td>\n<td class=\"right\">[Page]</td>\n</tr></tfoot>\n</table>\n<div id=\"external-metadata\" class=\"document-information\"></div>\n<div id=\"internal-metadata\" class=\"document-information\">\n<dl id=\"identifiers\">\n<dt class=\"label-workgroup\">Workgroup:</dt>\n<dd class=\"workgroup\">Internet Engineering Task Force</dd>\n<dt class=\"label-internet-draft\">Internet-Draft:</dt>\n<dd class=\"internet-draft\">draft-daniel-ai-agent-internet-architecture-00</dd>\n<dt class=\"label-published\">Published:</dt>\n<dd class=\"published\">\n<time datetime=\"2026-08-14\" class=\"published\">14 August 2026</time>\n    </dd>\n<dt class=\"label-intended-status\">Intended Status:</dt>\n<dd class=\"intended-status\">Informational</dd>\n<dt class=\"label-expires\">Expires:</dt>\n<dd class=\"expires\"><time datetime=\"2027-02-15\">15 February 2027</time></dd>\n<dt class=\"label-authors\">Author:</dt>\n<dd class=\"authors\">\n<div class=\"author\">\n      <div class=\"author-name\">S. D. Park</div>\n<div class=\"org\">Samsung Electronics</div>\n</div>\n</dd>\n</dl>\n</div>\n<h1 id=\"title\">Architectural Requirements for Supporting AI Agents on the Internet</h1>\n<section id=\"section-abstract\">\n      <h2 id=\"abstract\"><a href=\"#abstract\" class=\"selfRef\">Abstract</a></h2>\n<p id=\"section-abstract-1\">Autonomous AI agents are evolving from interactive assistants into networked software workloads that discover services, invoke tools, delegate authority, transact, communicate with other agents, and act asynchronously on behalf of humans and organizations. Existing Internet protocols provide strong foundations, but agent autonomy, dynamic delegation, machine-speed execution, and cross-domain interaction create requirements that span multiple protocol families.<a href=\"#section-abstract-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-abstract-2\">This document describes architectural requirements for supporting AI agents on the Internet across naming and discovery, HTTP, authentication, authorization and delegation, TLS and workload identity, asynchronous messaging, capability and intent-based resolution, payments, provenance, auditability, revocation, security, and privacy. It favors profiling and extending existing Internet protocols over defining a monolithic new agent protocol, and identifies the need for IETF-wide architectural coordination.<a href=\"#section-abstract-2\" class=\"pilcrow\">¶</a></p>\n</section>\n<div id=\"status-of-memo\">\n<section id=\"section-boilerplate.1\">\n        <h2 id=\"name-status-of-this-memo\">\n<a href=\"#name-status-of-this-memo\" class=\"section-name selfRef\">Status of This Memo</a>\n        </h2>\n<p id=\"section-boilerplate.1-1\">\n        This Internet-Draft is submitted in full conformance with the\n        provisions of BCP 78 and BCP 79.<a href=\"#section-boilerplate.1-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-boilerplate.1-2\">\n        Internet-Drafts are working documents of the Internet Engineering Task\n        Force (IETF). Note that other groups may also distribute working\n        documents as Internet-Drafts. The list of current Internet-Drafts is\n        at <span><a href=\"https://datatracker.ietf.org/drafts/current/\">https://datatracker.ietf.org/drafts/current/</a></span>.<a href=\"#section-boilerplate.1-2\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-boilerplate.1-3\">\n        Internet-Drafts are draft documents valid for a maximum of six months\n        and may be updated, replaced, or obsoleted by other documents at any\n        time. It is inappropriate to use Internet-Drafts as reference\n        material or to cite them other than as \"work in progress.\"<a href=\"#section-boilerplate.1-3\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-boilerplate.1-4\">\n        This Internet-Draft will expire on 15 February 2027.<a href=\"#section-boilerplate.1-4\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"copyright\">\n<section id=\"section-boilerplate.2\">\n        <h2 id=\"name-copyright-notice\">\n<a href=\"#name-copyright-notice\" class=\"section-name selfRef\">Copyright Notice</a>\n        </h2>\n<p id=\"section-boilerplate.2-1\">\n            Copyright (c) 2026 IETF Trust and the persons identified as the\n            document authors. All rights reserved.<a href=\"#section-boilerplate.2-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-boilerplate.2-2\">\n            This document is subject to BCP 78 and the IETF Trust's Legal\n            Provisions Relating to IETF Documents\n            (<span><a href=\"https://trustee.ietf.org/license-info\">https://trustee.ietf.org/license-info</a></span>) in effect on the date of\n            publication of this document. Please review these documents\n            carefully, as they describe your rights and restrictions with\n            respect to this document. Code Components extracted from this\n            document must include Revised BSD License text as described in\n            Section 4.e of the Trust Legal Provisions and are provided without\n            warranty as described in the Revised BSD License.<a href=\"#section-boilerplate.2-2\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"toc\">\n<section id=\"section-toc.1\">\n        <a href=\"#\" onclick=\"scroll(0,0)\" class=\"toplink\">▲</a><h2 id=\"name-table-of-contents\">\n<a href=\"#name-table-of-contents\" class=\"section-name selfRef\">Table of Contents</a>\n        </h2>\n<nav class=\"toc\"><ul class=\"compact toc ulBare ulEmpty\">\n<li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.1\">\n            <p id=\"section-toc.1-1.1.1\" class=\"keepWithNext\"><a href=\"#section-1\" class=\"auto internal xref\">1</a>.  <a href=\"#name-introduction\" class=\"internal xref\">Introduction</a></p>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.2\">\n            <p id=\"section-toc.1-1.2.1\" class=\"keepWithNext\"><a href=\"#section-2\" class=\"auto internal xref\">2</a>.  <a href=\"#name-terminology-and-conventions\" class=\"internal xref\">Terminology and Conventions</a></p>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.3\">\n            <p id=\"section-toc.1-1.3.1\" class=\"keepWithNext\"><a href=\"#section-3\" class=\"auto internal xref\">3</a>.  <a href=\"#name-scope-and-non-goals\" class=\"internal xref\">Scope and Non-Goals</a></p>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.4\">\n            <p id=\"section-toc.1-1.4.1\"><a href=\"#section-4\" class=\"auto internal xref\">4</a>.  <a href=\"#name-problem-statement\" class=\"internal xref\">Problem Statement</a></p>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.5\">\n            <p id=\"section-toc.1-1.5.1\"><a href=\"#section-5\" class=\"auto internal xref\">5</a>.  <a href=\"#name-architectural-principles\" class=\"internal xref\">Architectural Principles</a></p>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.6\">\n            <p id=\"section-toc.1-1.6.1\"><a href=\"#section-6\" class=\"auto internal xref\">6</a>.  <a href=\"#name-reference-interaction-model\" class=\"internal xref\">Reference Interaction Model</a></p>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.7\">\n            <p id=\"section-toc.1-1.7.1\"><a href=\"#section-7\" class=\"auto internal xref\">7</a>.  <a href=\"#name-naming-and-discovery-requir\" class=\"internal xref\">Naming and Discovery Requirements</a></p>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.8\">\n            <p id=\"section-toc.1-1.8.1\"><a href=\"#section-8\" class=\"auto internal xref\">8</a>.  <a href=\"#name-http-requirements\" class=\"internal xref\">HTTP Requirements</a></p>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.9\">\n            <p id=\"section-toc.1-1.9.1\"><a href=\"#section-9\" class=\"auto internal xref\">9</a>.  <a href=\"#name-authentication-authorizatio\" class=\"internal xref\">Authentication, Authorization, and Delegation</a></p>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.10\">\n            <p id=\"section-toc.1-1.10.1\"><a href=\"#section-10\" class=\"auto internal xref\">10</a>. <a href=\"#name-tls-pki-workload-identity-a\" class=\"internal xref\">TLS, PKI, Workload Identity, and Trust</a></p>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.11\">\n            <p id=\"section-toc.1-1.11.1\"><a href=\"#section-11\" class=\"auto internal xref\">11</a>. <a href=\"#name-asynchronous-agent-communic\" class=\"internal xref\">Asynchronous Agent Communication</a></p>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.12\">\n            <p id=\"section-toc.1-1.12.1\"><a href=\"#section-12\" class=\"auto internal xref\">12</a>. <a href=\"#name-capability-and-intent-based\" class=\"internal xref\">Capability and Intent-Based Resolution</a></p>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.13\">\n            <p id=\"section-toc.1-1.13.1\"><a href=\"#section-13\" class=\"auto internal xref\">13</a>. <a href=\"#name-payment-and-economic-intera\" class=\"internal xref\">Payment and Economic Interaction</a></p>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.14\">\n            <p id=\"section-toc.1-1.14.1\"><a href=\"#section-14\" class=\"auto internal xref\">14</a>. <a href=\"#name-provenance-auditability-and\" class=\"internal xref\">Provenance, Auditability, and Accountability</a></p>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.15\">\n            <p id=\"section-toc.1-1.15.1\"><a href=\"#section-15\" class=\"auto internal xref\">15</a>. <a href=\"#name-revocation-suspension-and-e\" class=\"internal xref\">Revocation, Suspension, and Emergency Control</a></p>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.16\">\n            <p id=\"section-toc.1-1.16.1\"><a href=\"#section-16\" class=\"auto internal xref\">16</a>. <a href=\"#name-relationship-to-existing-ag\" class=\"internal xref\">Relationship to Existing Agent Protocols</a></p>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.17\">\n            <p id=\"section-toc.1-1.17.1\"><a href=\"#section-17\" class=\"auto internal xref\">17</a>. <a href=\"#name-candidate-ietf-work-items\" class=\"internal xref\">Candidate IETF Work Items</a></p>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.18\">\n            <p id=\"section-toc.1-1.18.1\"><a href=\"#section-18\" class=\"auto internal xref\">18</a>. <a href=\"#name-current-ietf-work-landscape\" class=\"internal xref\">Current IETF Work Landscape and Coordination Gap</a></p>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.19\">\n            <p id=\"section-toc.1-1.19.1\"><a href=\"#section-19\" class=\"auto internal xref\">19</a>. <a href=\"#name-recommendation-for-ietf-wid\" class=\"internal xref\">Recommendation for IETF-Wide Coordination of AI Agent Protocol Work</a></p>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.20\">\n            <p id=\"section-toc.1-1.20.1\"><a href=\"#section-20\" class=\"auto internal xref\">20</a>. <a href=\"#name-security-considerations\" class=\"internal xref\">Security Considerations</a></p>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.21\">\n            <p id=\"section-toc.1-1.21.1\"><a href=\"#section-21\" class=\"auto internal xref\">21</a>. <a href=\"#name-privacy-considerations\" class=\"internal xref\">Privacy Considerations</a></p>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.22\">\n            <p id=\"section-toc.1-1.22.1\"><a href=\"#section-22\" class=\"auto internal xref\">22</a>. <a href=\"#name-operational-considerations\" class=\"internal xref\">Operational Considerations</a></p>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.23\">\n            <p id=\"section-toc.1-1.23.1\"><a href=\"#section-23\" class=\"auto internal xref\">23</a>. <a href=\"#name-iana-considerations\" class=\"internal xref\">IANA Considerations</a></p>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.24\">\n            <p id=\"section-toc.1-1.24.1\"><a href=\"#section-24\" class=\"auto internal xref\">24</a>. <a href=\"#name-open-issues\" class=\"internal xref\">Open Issues</a></p>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.25\">\n            <p id=\"section-toc.1-1.25.1\"><a href=\"#section-25\" class=\"auto internal xref\">25</a>. <a href=\"#name-normative-references\" class=\"internal xref\">Normative References</a></p>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.26\">\n            <p id=\"section-toc.1-1.26.1\"><a href=\"#section-26\" class=\"auto internal xref\">26</a>. <a href=\"#name-informative-references\" class=\"internal xref\">Informative References</a></p>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.27\">\n            <p id=\"section-toc.1-1.27.1\"><a href=\"#appendix-A\" class=\"auto internal xref\">Appendix A</a>.  <a href=\"#name-document-history\" class=\"internal xref\">Document History</a></p>\n</li>\n          <li class=\"compact toc ulBare ulEmpty\" id=\"section-toc.1-1.28\">\n            <p id=\"section-toc.1-1.28.1\"><a href=\"#appendix-B\" class=\"auto internal xref\"></a><a href=\"#name-authors-address\" class=\"internal xref\">Author's Address</a></p>\n</li>\n        </ul>\n</nav>\n</section>\n</div>\n<div id=\"sec-introduction\">\n<section id=\"section-1\">\n      <h2 id=\"name-introduction\">\n<a href=\"#section-1\" class=\"section-number selfRef\">1. </a><a href=\"#name-introduction\" class=\"section-name selfRef\">Introduction</a>\n      </h2>\n<p id=\"section-1-1\">AI agents are becoming autonomous Internet participants rather than merely user-interface features. An agent can interpret a goal, discover remote services, acquire or present delegated authority, select another agent, invoke tools, initiate payments, maintain state, and continue work without a human being present for each network transaction.<a href=\"#section-1-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-1-2\">Application protocols and frameworks can address important agent interaction patterns, but they do not by themselves solve Internet-wide problems of naming, discovery, identity, delegated authorization, trust, payment negotiation, asynchronous delivery, provenance, and accountability across administrative domains.<a href=\"#section-1-2\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-1-3\">AI-agent-related Internet-Drafts are already emerging across authentication and authorization, discovery, agent-to-agent and agent-to-tool communication, transport, and related areas. This breadth indicates that supporting AI agents is not a single application-protocol problem. It also creates a coordination risk if common concepts such as agent identity, capability, delegation, discovery metadata, intent, and transaction context are defined independently.<a href=\"#section-1-3\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-1-4\">This document defines architectural requirements for supporting AI agents on the Internet. It does not define a separate Internet, a new network layer, or a universal agent protocol. The preferred direction is coordinated evolution of existing Internet mechanisms and new mechanisms only where demonstrated gaps remain.<a href=\"#section-1-4\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"sec-terminology-and-conventions\">\n<section id=\"section-2\">\n      <h2 id=\"name-terminology-and-conventions\">\n<a href=\"#section-2\" class=\"section-number selfRef\">2. </a><a href=\"#name-terminology-and-conventions\" class=\"section-name selfRef\">Terminology and Conventions</a>\n      </h2>\n<p id=\"section-2-1\">The key words MUST, MUST NOT, REQUIRED, SHALL, SHALL NOT, SHOULD, SHOULD NOT, RECOMMENDED, NOT RECOMMENDED, MAY, and OPTIONAL in this document are to be interpreted as described in BCP 14 when, and only when, they appear in all capitals.<a href=\"#section-2-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-2-2\">Agent: An autonomous or semi-autonomous software entity that can take network actions based on goals, policies, delegated authority, and contextual state.<a href=\"#section-2-2\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-2-3\">Principal: A human, organization, workload, service, or agent whose identity or authority is relevant to an action.<a href=\"#section-2-3\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-2-4\">Delegation: A grant of authority from one principal to another, including scope, time, value, context, or re-delegation constraints.<a href=\"#section-2-4\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-2-5\">Capability: A machine-readable description of an operation or service that an agent can provide.<a href=\"#section-2-5\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-2-6\">Intent: The desired outcome or declared purpose associated with an agent action. Intent is not, by itself, an authorization signal.<a href=\"#section-2-6\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-2-7\">Agent Descriptor: Machine-readable metadata describing an agent's identity, capabilities, endpoints, protocols, security requirements, and related operational properties.<a href=\"#section-2-7\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-2-8\">AI Agent Internet Architecture: The set of Internet protocol mechanisms and coordinated extensions needed to support autonomous AI agents across administrative and trust boundaries. This term does not imply replacement of the existing Internet architecture.<a href=\"#section-2-8\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"sec-scope-and-non-goals\">\n<section id=\"section-3\">\n      <h2 id=\"name-scope-and-non-goals\">\n<a href=\"#section-3\" class=\"section-number selfRef\">3. </a><a href=\"#name-scope-and-non-goals\" class=\"section-name selfRef\">Scope and Non-Goals</a>\n      </h2>\n<p id=\"section-3-1\">This document focuses on protocol-layer interoperability across independently administered Internet domains. It covers discovery, identity, authorization and delegation, trust establishment, HTTP interaction, payment negotiation, asynchronous communication, capability resolution, provenance, auditability, revocation, and privacy.<a href=\"#section-3-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-3-2\">This document does not standardize model behavior, prompt formats, reasoning traces, agent planning algorithms, model evaluation, or a universal agent runtime. It does not select a single application framework as the interaction protocol for all agents.<a href=\"#section-3-2\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"sec-problem-statement\">\n<section id=\"section-4\">\n      <h2 id=\"name-problem-statement\">\n<a href=\"#section-4\" class=\"section-number selfRef\">4. </a><a href=\"#name-problem-statement\" class=\"section-name selfRef\">Problem Statement</a>\n      </h2>\n<p id=\"section-4-1\">Existing Internet protocols can transport agent traffic, but they do not consistently expose the semantics required when autonomous software acts as a principal. A server can authenticate a TLS peer or validate an OAuth access token without necessarily knowing which agent is acting, which human or organization delegated the action, whether re-delegation was permitted, or whether the transaction remains within a spending or operational limit.<a href=\"#section-4-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-4-2\">DNS can locate hosts and services, but Internet-wide agent discovery can require resolution by organization, agent name, capability, supported protocol, security profile, or intent. Long-running agent tasks can also require asynchronous delivery and correlation beyond a single synchronous request/response exchange.<a href=\"#section-4-2\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-4-3\">An interoperable architecture therefore needs machine-processable answers to: who is acting; who operates the agent; on whose behalf it acts; what it is authorized to do; whether that authority may be delegated; what the counterparty can do; how the counterparty is discovered and authenticated; what protocol and security profile to use; what payment is required; and what evidence remains after the action.<a href=\"#section-4-3\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"sec-architectural-principles\">\n<section id=\"section-5\">\n      <h2 id=\"name-architectural-principles\">\n<a href=\"#section-5\" class=\"section-number selfRef\">5. </a><a href=\"#name-architectural-principles\" class=\"section-name selfRef\">Architectural Principles</a>\n      </h2>\n<p id=\"section-5-1\">Evolution Before Replacement: Agent-related mechanisms SHOULD reuse deployed Internet protocols and registries where practical. A new protocol SHOULD be introduced only when existing mechanisms cannot provide the required semantics, security properties, deployment model, or scale.<a href=\"#section-5-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-5-2\">Separation of Concerns: Identity, authentication, authorization, delegation, capability, intent, trust, payment, and audit are distinct concepts and MUST NOT be implicitly conflated.<a href=\"#section-5-2\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-5-3\">Cross-Domain Operation: Mechanisms MUST assume that agents, principals, authorization services, resource servers, and discovery infrastructure can belong to different administrative domains.<a href=\"#section-5-3\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-5-4\">Least Authority: Delegated authority SHOULD be narrowly scoped by operation, audience, resource, time, value, and context. Re-delegation SHOULD be explicit rather than assumed.<a href=\"#section-5-4\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-5-5\">Human and Organizational Accountability: When an agent acts for a human or organization, protocols SHOULD preserve sufficient verifiable evidence to identify the accountable principal without exposing unnecessary personal data.<a href=\"#section-5-5\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-5-6\">Decentralized Deployability: The architecture SHOULD NOT require a single global agent registry, identity provider, payment provider, or trust-score operator.<a href=\"#section-5-6\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"sec-reference-interaction-model\">\n<section id=\"section-6\">\n      <h2 id=\"name-reference-interaction-model\">\n<a href=\"#section-6\" class=\"section-number selfRef\">6. </a><a href=\"#name-reference-interaction-model\" class=\"section-name selfRef\">Reference Interaction Model</a>\n      </h2>\n<p id=\"section-6-1\">A representative transaction can involve a User Principal, a User Agent, one or more Specialist Agents, an Agent Service, an Authorization Server, a Discovery Service, and a Resource Server. These roles can be co-located or distributed across domains.<a href=\"#section-6-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-6-2\">A typical sequence is: the principal delegates a constrained task; the agent discovers candidate services or agents; discovery returns endpoints, capabilities, supported protocols, and security metadata; the agent authenticates and presents delegated authority; a specialist agent may receive a bounded re-delegation; a resource may advertise payment or policy requirements; the agent verifies those requirements against its authority; the action is completed; and material authorization, payment, and provenance evidence is retained for audit.<a href=\"#section-6-2\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"sec-naming-and-discovery-requirements\">\n<section id=\"section-7\">\n      <h2 id=\"name-naming-and-discovery-requir\">\n<a href=\"#section-7\" class=\"section-number selfRef\">7. </a><a href=\"#name-naming-and-discovery-requir\" class=\"section-name selfRef\">Naming and Discovery Requirements</a>\n      </h2>\n<p id=\"section-7-1\">DNS is a natural component of agent discovery because it provides globally delegated naming, caching, service discovery, and security extensions. DNS for AI Discovery (DNS-AID) is one example of current IETF work in this space.<a href=\"#section-7-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-7-2\">REQ-DISC-1: An agent discovery mechanism MUST support discovery when an organization and agent identifier are known.<a href=\"#section-7-2\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-7-3\">REQ-DISC-2: It SHOULD support discovery when the organization is known but the specific agent is not, using capability or service metadata.<a href=\"#section-7-3\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-7-4\">REQ-DISC-3: The architecture SHOULD define how capability-only or intent-assisted discovery can be federated without requiring a mandatory centralized registry.<a href=\"#section-7-4\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-7-5\">REQ-DISC-4: Discovery results SHOULD be able to express endpoint, protocol, protocol version, capability identifiers, authentication requirements, authorization metadata, payment support, and relevant trust material.<a href=\"#section-7-5\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-7-6\">REQ-DISC-5: Discovery metadata MUST have a mechanism for authenticity and integrity protection.<a href=\"#section-7-6\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-7-7\">REQ-DISC-6: Discovery mechanisms SHOULD define caching, freshness, negative caching, key rotation, endpoint mobility, and downgrade behavior.<a href=\"#section-7-7\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"sec-http-requirements\">\n<section id=\"section-8\">\n      <h2 id=\"name-http-requirements\">\n<a href=\"#section-8\" class=\"section-number selfRef\">8. </a><a href=\"#name-http-requirements\" class=\"section-name selfRef\">HTTP Requirements</a>\n      </h2>\n<p id=\"section-8-1\">HTTP is expected to remain a primary substrate for agent interactions. Agent requirements should preferentially use existing HTTP extensibility mechanisms, including status codes, fields, authentication schemes, content negotiation, HTTP Message Signatures, and Well-Known URIs.<a href=\"#section-8-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-8-2\">Programmatic Payment: HTTP 402 Payment Required and x402-style flows demonstrate a machine-operable payment challenge model. Generic standardization should remain independent of a particular currency, ledger, wallet, or settlement provider.<a href=\"#section-8-2\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-8-3\">REQ-HTTP-1: A payment challenge SHOULD identify the payment scheme, amount or pricing rule, asset or unit, recipient, expiration, replay constraints, and verification method in machine-readable form.<a href=\"#section-8-3\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-8-4\">REQ-HTTP-2: Payment authorization SHOULD be bindable to the agent's delegated spending authority, request target, and transaction context.<a href=\"#section-8-4\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-8-5\">REQ-HTTP-3: Payment mechanisms SHOULD support receipts and SHOULD define failure, retry, duplicate-payment, cancellation, and refund semantics.<a href=\"#section-8-5\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-8-6\">Agent Authentication: HTTP Message Signatures provide a relevant primitive for cryptographically authenticating selected message components.<a href=\"#section-8-6\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-8-7\">REQ-HTTP-4: An agent authentication profile SHOULD define how an agent identifier, signing key, operator identity, request freshness, and key-discovery mechanism are bound to a signed request.<a href=\"#section-8-7\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-8-8\">Intent and Policy Signaling: Any standardized intent or purpose signal MUST be treated as a declaration rather than proof of authorization, and SHOULD be cryptographically bound to the authenticated request when relied upon for policy.<a href=\"#section-8-8\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-8-9\">Capability Negotiation: HTTP-based agent protocols SHOULD reuse standard content negotiation and extensibility patterns rather than creating incompatible negotiation mechanisms for every framework.<a href=\"#section-8-9\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"sec-authentication-authorization-and-delegation\">\n<section id=\"section-9\">\n      <h2 id=\"name-authentication-authorizatio\">\n<a href=\"#section-9\" class=\"section-number selfRef\">9. </a><a href=\"#name-authentication-authorizatio\" class=\"section-name selfRef\">Authentication, Authorization, and Delegation</a>\n      </h2>\n<p id=\"section-9-1\">Authorization is a central gap for AI-agent use cases. Current IETF work on AI Agent Authentication and Authorization applies workload identity and the OAuth 2.0 family to agent interactions and seeks to identify gaps before defining unnecessary new protocols.<a href=\"#section-9-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-9-2\">REQ-AUTH-1: The architecture MUST distinguish agent identity from the identity of the human or organization on whose behalf the agent acts.<a href=\"#section-9-2\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-9-3\">REQ-AUTH-2: Authorization evidence MUST be audience-restricted and SHOULD be narrowly scoped to resources and operations.<a href=\"#section-9-3\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-9-4\">REQ-AUTH-3: Multi-hop delegation SHOULD preserve the original principal and each authorized delegation step in verifiable form, while allowing privacy-preserving disclosure where intermediaries do not require the full chain.<a href=\"#section-9-4\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-9-5\">REQ-AUTH-4: Delegation SHOULD express time limits, transaction or value limits, context constraints, and whether re-delegation is permitted.<a href=\"#section-9-5\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-9-6\">REQ-AUTH-5: A resource server MUST be able to determine the effective authority applicable to the current request without trusting unauthenticated claims from an intermediary agent.<a href=\"#section-9-6\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-9-7\">REQ-AUTH-6: Delegated authority MUST be revocable or naturally short-lived, and revocation semantics SHOULD address active multi-agent chains.<a href=\"#section-9-7\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"sec-tls-pki-workload-identity-and-trust\">\n<section id=\"section-10\">\n      <h2 id=\"name-tls-pki-workload-identity-a\">\n<a href=\"#section-10\" class=\"section-number selfRef\">10. </a><a href=\"#name-tls-pki-workload-identity-a\" class=\"section-name selfRef\">TLS, PKI, Workload Identity, and Trust</a>\n      </h2>\n<p id=\"section-10-1\">TLS protects channels and authenticates endpoints, but an agentic system can require additional bindings among endpoint identity, workload identity, agent identity, operator, and delegating principal.<a href=\"#section-10-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-10-2\">REQ-ID-1: Agent identity SHOULD be verifiably bound to a key or workload identity that supports rotation and short lifetimes.<a href=\"#section-10-2\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-10-3\">REQ-ID-2: The architecture SHOULD support proof that an agent is authorized to represent a domain or organization.<a href=\"#section-10-3\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-10-4\">REQ-ID-3: Endpoint authentication and agent authentication SHOULD be independently verifiable where they represent different principals.<a href=\"#section-10-4\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-10-5\">REQ-ID-4: Trust decisions MUST NOT be inferred solely from successful authentication.<a href=\"#section-10-5\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-10-6\">REQ-ID-5: Designs SHOULD avoid globally stable identifiers when a scoped or pairwise identifier can satisfy the use case.<a href=\"#section-10-6\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"sec-asynchronous-agent-communication\">\n<section id=\"section-11\">\n      <h2 id=\"name-asynchronous-agent-communic\">\n<a href=\"#section-11\" class=\"section-number selfRef\">11. </a><a href=\"#name-asynchronous-agent-communic\" class=\"section-name selfRef\">Asynchronous Agent Communication</a>\n      </h2>\n<p id=\"section-11-1\">Long-running research, procurement, orchestration, and offline workflows do not always fit synchronous HTTP request/response. Current individual proposals explore asynchronous store-and-forward semantics for agents.<a href=\"#section-11-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-11-2\">REQ-MSG-1: An asynchronous agent messaging mechanism SHOULD support globally unique message identifiers, correlation identifiers, expiration, retry, delivery status, and duplicate detection.<a href=\"#section-11-2\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-11-3\">REQ-MSG-2: It SHOULD provide end-to-end integrity and SHOULD allow confidentiality independent of relay hops.<a href=\"#section-11-3\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-11-4\">REQ-MSG-3: Relay infrastructure MUST be able to apply abuse controls without requiring access to unnecessary private task content.<a href=\"#section-11-4\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-11-5\">REQ-MSG-4: The mechanism SHOULD define how authorization and delegation evidence is carried or referenced across delayed delivery.<a href=\"#section-11-5\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-11-6\">REQ-MSG-5: The IETF should first evaluate whether profiles of existing HTTP, messaging, event, or mail technologies can meet these requirements before defining a new transport.<a href=\"#section-11-6\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"sec-capability-and-intent-based-resolution\">\n<section id=\"section-12\">\n      <h2 id=\"name-capability-and-intent-based\">\n<a href=\"#section-12\" class=\"section-number selfRef\">12. </a><a href=\"#name-capability-and-intent-based\" class=\"section-name selfRef\">Capability and Intent-Based Resolution</a>\n      </h2>\n<p id=\"section-12-1\">AI-agent systems add a resolution problem above IP routing: selecting a service or agent because it can satisfy a requested capability under policy constraints. This is service selection and resolution at a higher layer, not a replacement for IP routing.<a href=\"#section-12-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-12-2\">REQ-CAP-1: Capability identifiers SHOULD have stable semantics independent of a single vendor or agent framework.<a href=\"#section-12-2\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-12-3\">REQ-CAP-2: Capability descriptions SHOULD be separable from endpoint location.<a href=\"#section-12-3\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-12-4\">REQ-CAP-3: Query and matching mechanisms SHOULD support constraints such as language, protocol, security profile, jurisdiction, price, latency, and policy.<a href=\"#section-12-4\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-12-5\">REQ-CAP-4: Ranking and reputation information MUST NOT be treated as authoritative identity or authorization evidence.<a href=\"#section-12-5\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-12-6\">REQ-CAP-5: Intent-based discovery SHOULD minimize disclosure because the query itself can reveal sensitive user goals.<a href=\"#section-12-6\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"sec-payment-and-economic-interaction\">\n<section id=\"section-13\">\n      <h2 id=\"name-payment-and-economic-intera\">\n<a href=\"#section-13\" class=\"section-number selfRef\">13. </a><a href=\"#name-payment-and-economic-intera\" class=\"section-name selfRef\">Payment and Economic Interaction</a>\n      </h2>\n<p id=\"section-13-1\">Autonomous agents can purchase API calls, data, compute, content, reservations, or other services. Payment must compose with discovery, authorization, spending policy, identity, and audit rather than exist as an isolated wallet operation.<a href=\"#section-13-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-13-2\">REQ-PAY-1: A principal MUST be able to constrain an agent's spending by amount, currency or asset class, recipient or category, time, and transaction type.<a href=\"#section-13-2\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-13-3\">REQ-PAY-2: A payment proof SHOULD be bound to the resource request sufficiently to prevent replay for a different resource or amount.<a href=\"#section-13-3\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-13-4\">REQ-PAY-3: The protocol architecture SHOULD permit multiple payment schemes and SHOULD NOT require a particular blockchain or settlement network.<a href=\"#section-13-4\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-13-5\">REQ-PAY-4: Services SHOULD provide machine-readable receipts that can be correlated with authorization and audit records.<a href=\"#section-13-5\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"sec-provenance-auditability-and-accountability\">\n<section id=\"section-14\">\n      <h2 id=\"name-provenance-auditability-and\">\n<a href=\"#section-14\" class=\"section-number selfRef\">14. </a><a href=\"#name-provenance-auditability-and\" class=\"section-name selfRef\">Provenance, Auditability, and Accountability</a>\n      </h2>\n<p id=\"section-14-1\">Agent actions can have financial, operational, legal, or security consequences. Protocols should preserve evidence of consequential actions without requiring disclosure of model chain-of-thought or unnecessary private content.<a href=\"#section-14-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-14-2\">REQ-AUD-1: Audit evidence SHOULD support correlation of agent identity, operator or accountable principal, authorization context, request identifier, timestamp, material policy constraints, result status, and payment reference when applicable.<a href=\"#section-14-2\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-14-3\">REQ-AUD-2: Audit evidence SHOULD be tamper-evident and SHOULD support selective disclosure.<a href=\"#section-14-3\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-14-4\">REQ-AUD-3: Protocols MUST NOT require collection of private reasoning traces as a condition of accountability.<a href=\"#section-14-4\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-14-5\">REQ-AUD-4: Audit identifiers SHOULD be scoped to reduce cross-service tracking.<a href=\"#section-14-5\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"sec-revocation-suspension-and-emergency-control\">\n<section id=\"section-15\">\n      <h2 id=\"name-revocation-suspension-and-e\">\n<a href=\"#section-15\" class=\"section-number selfRef\">15. </a><a href=\"#name-revocation-suspension-and-e\" class=\"section-name selfRef\">Revocation, Suspension, and Emergency Control</a>\n      </h2>\n<p id=\"section-15-1\">Autonomy and machine-speed execution make revocation a first-order protocol requirement.<a href=\"#section-15-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-15-2\">REQ-REV-1: Credentials and delegated authority SHOULD support short validity periods and explicit revocation where risk requires it.<a href=\"#section-15-2\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-15-3\">REQ-REV-2: Revocation of a parent delegation SHOULD invalidate or constrain dependent re-delegations according to explicit semantics.<a href=\"#section-15-3\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-15-4\">REQ-REV-3: Services SHOULD support rapid suspension of compromised agents or keys without requiring deletion of historical audit evidence.<a href=\"#section-15-4\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-15-5\">REQ-REV-4: Emergency controls SHOULD be fail-safe and SHOULD avoid a single globally privileged kill switch.<a href=\"#section-15-5\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"sec-relationship-to-existing-agent-protocols\">\n<section id=\"section-16\">\n      <h2 id=\"name-relationship-to-existing-ag\">\n<a href=\"#section-16\" class=\"section-number selfRef\">16. </a><a href=\"#name-relationship-to-existing-ag\" class=\"section-name selfRef\">Relationship to Existing Agent Protocols</a>\n      </h2>\n<p id=\"section-16-1\">Application-layer agent protocols and frameworks are complementary to the Internet mechanisms described here. They can benefit from standardized discovery, authentication, delegated authorization, payment, and trust mechanisms.<a href=\"#section-16-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-16-2\">The architectural objective is composability: discovery identifies a candidate endpoint; identity authenticates it; authorization determines permitted actions; an interaction protocol carries the task; payment settles economic requirements; and provenance or audit mechanisms retain evidence. No single layer should be expected to solve all of these functions.<a href=\"#section-16-2\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"sec-candidate-ietf-work-items\">\n<section id=\"section-17\">\n      <h2 id=\"name-candidate-ietf-work-items\">\n<a href=\"#section-17\" class=\"section-number selfRef\">17. </a><a href=\"#name-candidate-ietf-work-items\" class=\"section-name selfRef\">Candidate IETF Work Items</a>\n      </h2>\n<p id=\"section-17-1\">Candidate cross-area work includes an agent identity profile; an OAuth-compatible multi-hop delegation profile; DNS and Well-Known based agent discovery profiles; a framework-neutral capability vocabulary and discovery metadata model; an HTTP Message Signatures profile for agents; authenticated intent and policy metadata; generic HTTP payment negotiation and receipt semantics; asynchronous agent messaging requirements; privacy-preserving provenance and audit evidence; and revocation semantics for delegation chains.<a href=\"#section-17-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-17-2\">Protocol-specific wire work should remain with established expert Working Groups where appropriate. Cross-area work is needed for common terminology, architecture, gap analysis, and composability.<a href=\"#section-17-2\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"sec-current-ietf-work-landscape-and-coordination-gap\">\n<section id=\"section-18\">\n      <h2 id=\"name-current-ietf-work-landscape\">\n<a href=\"#section-18\" class=\"section-number selfRef\">18. </a><a href=\"#name-current-ietf-work-landscape\" class=\"section-name selfRef\">Current IETF Work Landscape and Coordination Gap</a>\n      </h2>\n<p id=\"section-18-1\">As of August 2026, AI-agent-related Internet-Drafts span several protocol domains. Examples include DNS for AI Discovery (DNS-AID); AI Agent Authentication and Authorization; Agentic AI Use Cases and Requirements; and individual proposals addressing agent discovery, invocation, transport, and authorization.<a href=\"#section-18-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-18-2\">This activity is evidence of a broad protocol problem, but it also exposes a coordination gap. The drafts do not necessarily share a common model for agent identity, operator identity, capability identifiers, delegation, discovery metadata, intent, transaction context, or trust. Similar functions can therefore be specified independently at different layers or by different communities.<a href=\"#section-18-2\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-18-3\">The architectural requirement is not that every proposal use the same wire protocol. It is that common concepts have clear ownership and composable semantics. Discovery should be able to reference an authorization profile without redefining authorization; payment should be bindable to delegated authority without defining a new identity system; and agent interaction protocols should be able to consume common discovery and security metadata.<a href=\"#section-18-3\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-18-4\">A cross-IETF gap analysis and terminology effort is therefore needed before multiple overlapping mechanisms become widely deployed.<a href=\"#section-18-4\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"sec-recommendation-for-ietf-wide-coordination-of-ai-agent-protocol-work\">\n<section id=\"section-19\">\n      <h2 id=\"name-recommendation-for-ietf-wid\">\n<a href=\"#section-19\" class=\"section-number selfRef\">19. </a><a href=\"#name-recommendation-for-ietf-wid\" class=\"section-name selfRef\">Recommendation for IETF-Wide Coordination of AI Agent Protocol Work</a>\n      </h2>\n<p id=\"section-19-1\">The requirements in this document cut across several existing IETF Areas and protocol families. Naming and discovery touch DNS and Internet-area work; authentication, authorization, delegation, and provenance touch Security and OAuth or workload-identity work; HTTP semantics and messaging touch Applications and Real-Time and transport-related communities; and deployment and lifecycle management touch Operations and Management.<a href=\"#section-19-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-19-2\">Without explicit coordination, independently developed solutions risk duplicating functions, defining incompatible identity or capability models, creating overlapping discovery mechanisms, and placing agent-specific semantics at inconsistent layers of the Internet architecture.<a href=\"#section-19-2\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-19-3\">This document RECOMMENDS that the IETF initiate a community-wide discussion on a dedicated coordination structure for AI-agent-related Internet protocol work. If the scope, volume, and persistence of the work justify Area-level organization, the IETF should consider a new AI Agents Area. The purpose would not be to standardize AI models or relocate every AI-related specification. Its purpose would be to coordinate Internet protocol evolution required to support autonomous AI agents and maintain architectural consistency across affected protocol families.<a href=\"#section-19-3\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-19-4\">A dedicated coordination structure could cover agent naming and discovery; agent and operator identity; authentication; delegated and multi-hop authorization; capability and intent representation; agent-to-agent and asynchronous communication; HTTP agent semantics; payment negotiation; provenance and auditability; revocation and lifecycle management; privacy; abuse prevention; and interoperability with application-layer agent protocols.<a href=\"#section-19-4\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-19-5\">The coordination structure SHOULD follow an extend-before-invent principle. Work should remain in an established Working Group when an existing protocol clearly owns the mechanism and the required expertise exists there.<a href=\"#section-19-5\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-19-6\">As an incremental path, the IETF could first convene a BOF or other community discussion, establish a directorate or cross-area design team, publish an architectural gap analysis, and then determine whether a permanent Area and one or more Working Groups are justified.<a href=\"#section-19-6\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-19-7\">The success criterion is not creation of a new Area itself. The success criterion is that Internet standards for autonomous agents evolve as a coherent architecture: reusable across vendors and agent frameworks, decentralized where appropriate, secure by design, and compatible with the existing Internet.<a href=\"#section-19-7\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"sec-security-considerations\">\n<section id=\"section-20\">\n      <h2 id=\"name-security-considerations\">\n<a href=\"#section-20\" class=\"section-number selfRef\">20. </a><a href=\"#name-security-considerations\" class=\"section-name selfRef\">Security Considerations</a>\n      </h2>\n<p id=\"section-20-1\">AI-agent protocols amplify existing Internet threats because actions can be chained and executed at machine speed. Threats include agent impersonation, compromised credentials, confused-deputy behavior, malicious or poisoned discovery metadata, unauthorized re-delegation, replay of payment or authorization proofs, prompt- or tool-induced privilege escalation, downgrade attacks, trust manipulation, denial-of-wallet attacks, recursive agent loops, and automated abuse.<a href=\"#section-20-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-20-2\">Implementations MUST apply least privilege, audience restriction, freshness and replay defenses, secure key management, explicit re-delegation policy, and strong separation between untrusted content and authorization decisions. Discovery results SHOULD be authenticated where feasible. High-impact actions SHOULD support policy-enforced limits and, where appropriate, explicit human approval.<a href=\"#section-20-2\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-20-3\">Agent descriptors and capability advertisements are untrusted input until authenticated and authorized. Authenticated descriptive text still MUST NOT be interpreted as executable authorization policy.<a href=\"#section-20-3\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"sec-privacy-considerations\">\n<section id=\"section-21\">\n      <h2 id=\"name-privacy-considerations\">\n<a href=\"#section-21\" class=\"section-number selfRef\">21. </a><a href=\"#name-privacy-considerations\" class=\"section-name selfRef\">Privacy Considerations</a>\n      </h2>\n<p id=\"section-21-1\">Agent identity, discovery queries, capability requirements, delegation chains, payment metadata, and audit records can reveal sensitive behavior and relationships. Designs SHOULD minimize globally visible metadata, support selective disclosure, and avoid stable cross-context identifiers where unnecessary.<a href=\"#section-21-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-21-2\">Capability-only and intent-based discovery deserves particular scrutiny because a query can reveal user goals. Personal-agent presence SHOULD NOT be made globally discoverable by default.<a href=\"#section-21-2\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-21-3\">Multi-hop delegation SHOULD permit a resource server to verify sufficient authority without automatically learning every upstream intermediary or unrelated user attribute.<a href=\"#section-21-3\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"sec-operational-considerations\">\n<section id=\"section-22\">\n      <h2 id=\"name-operational-considerations\">\n<a href=\"#section-22\" class=\"section-number selfRef\">22. </a><a href=\"#name-operational-considerations\" class=\"section-name selfRef\">Operational Considerations</a>\n      </h2>\n<p id=\"section-22-1\">Agent discovery and authorization infrastructure will be highly dynamic. Specifications should define cache lifetimes, stale-data behavior, key rotation, clock-skew tolerance, endpoint migration, retry policy, rate limits, and failure modes.<a href=\"#section-22-1\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-22-2\">Interoperability profiles should support incremental deployment. A conventional API client should remain able to use a service when optional agent metadata is absent, unless the service explicitly requires an agent-specific security profile.<a href=\"#section-22-2\" class=\"pilcrow\">¶</a></p>\n<p id=\"section-22-3\">Operators should be able to distinguish protocol failures from policy denials and from agent-level task failures without exposing sensitive internal policy details.<a href=\"#section-22-3\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"sec-iana-considerations\">\n<section id=\"section-23\">\n      <h2 id=\"name-iana-considerations\">\n<a href=\"#section-23\" class=\"section-number selfRef\">23. </a><a href=\"#name-iana-considerations\" class=\"section-name selfRef\">IANA Considerations</a>\n      </h2>\n<p id=\"section-23-1\">This document requests no IANA actions. Future specifications may require registrations for HTTP fields, Well-Known URI suffixes, OAuth metadata, DNS service labels or SVCB parameters, media types, capability namespaces, or agent messaging parameters.<a href=\"#section-23-1\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"sec-open-issues\">\n<section id=\"section-24\">\n      <h2 id=\"name-open-issues\">\n<a href=\"#section-24\" class=\"section-number selfRef\">24. </a><a href=\"#name-open-issues\" class=\"section-name selfRef\">Open Issues</a>\n      </h2>\n<p id=\"section-24-1\">Open issues include whether an agent should become a distinct Internet security principal or remain a workload or application identity profile; whether capability-only discovery can be decentralized at Internet scale; how much of a delegation chain a resource server must see; where generic agent semantics belong relative to application-layer frameworks; whether a dedicated asynchronous transport is justified; how payment authorization should bind to delegated authority; and what minimum audit evidence provides accountability without enabling pervasive tracking.<a href=\"#section-24-1\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<section id=\"section-25\">\n      <h2 id=\"name-normative-references\">\n<a href=\"#section-25\" class=\"section-number selfRef\">25. </a><a href=\"#name-normative-references\" class=\"section-name selfRef\">Normative References</a>\n      </h2>\n<dl class=\"references\">\n<dt id=\"RFC2119\">[RFC2119]</dt>\n      <dd>\n<span class=\"refAuthor\">Bradner, S.</span>, <span class=\"refTitle\">\"Key words for use in RFCs to Indicate Requirement Levels\"</span>, <span class=\"seriesInfo\">RFC 2119</span>, <time datetime=\"1997-03\" class=\"refDate\">March 1997</time>, <span>&lt;<a href=\"https://www.rfc-editor.org/info/rfc2119\">https://www.rfc-editor.org/info/rfc2119</a>&gt;</span>. </dd>\n<dd class=\"break\"></dd>\n<dt id=\"RFC8174\">[RFC8174]</dt>\n      <dd>\n<span class=\"refAuthor\">Leiba, B.</span>, <span class=\"refTitle\">\"Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words\"</span>, <span class=\"seriesInfo\">RFC 8174</span>, <time datetime=\"2017-05\" class=\"refDate\">May 2017</time>, <span>&lt;<a href=\"https://www.rfc-editor.org/info/rfc8174\">https://www.rfc-editor.org/info/rfc8174</a>&gt;</span>. </dd>\n<dd class=\"break\"></dd>\n<dt id=\"RFC9421\">[RFC9421]</dt>\n      <dd>\n<span class=\"refAuthor\">al., A. B. E.</span>, <span class=\"refTitle\">\"HTTP Message Signatures\"</span>, <span class=\"seriesInfo\">RFC 9421</span>, <time datetime=\"2024-02\" class=\"refDate\">February 2024</time>, <span>&lt;<a href=\"https://www.rfc-editor.org/info/rfc9421\">https://www.rfc-editor.org/info/rfc9421</a>&gt;</span>. </dd>\n<dd class=\"break\"></dd>\n<dt id=\"RFC9728\">[RFC9728]</dt>\n      <dd>\n<span class=\"refAuthor\">al., M. J. E.</span>, <span class=\"refTitle\">\"OAuth 2.0 Protected Resource Metadata\"</span>, <span class=\"seriesInfo\">RFC 9728</span>, <time datetime=\"2025-04\" class=\"refDate\">April 2025</time>, <span>&lt;<a href=\"https://www.rfc-editor.org/info/rfc9728\">https://www.rfc-editor.org/info/rfc9728</a>&gt;</span>. </dd>\n<dd class=\"break\"></dd>\n<dt id=\"RFC8414\">[RFC8414]</dt>\n      <dd>\n<span class=\"refAuthor\">al., M. J. E.</span>, <span class=\"refTitle\">\"OAuth 2.0 Authorization Server Metadata\"</span>, <span class=\"seriesInfo\">RFC 8414</span>, <time datetime=\"2018-06\" class=\"refDate\">June 2018</time>, <span>&lt;<a href=\"https://www.rfc-editor.org/info/rfc8414\">https://www.rfc-editor.org/info/rfc8414</a>&gt;</span>. </dd>\n<dd class=\"break\"></dd>\n<dt id=\"RFC6763\">[RFC6763]</dt>\n      <dd>\n<span class=\"refAuthor\">Krochmal, S. C. A. M.</span>, <span class=\"refTitle\">\"DNS-Based Service Discovery\"</span>, <span class=\"seriesInfo\">RFC 6763</span>, <time datetime=\"2013-02\" class=\"refDate\">February 2013</time>, <span>&lt;<a href=\"https://www.rfc-editor.org/info/rfc6763\">https://www.rfc-editor.org/info/rfc6763</a>&gt;</span>. </dd>\n<dd class=\"break\"></dd>\n<dt id=\"RFC9460\">[RFC9460]</dt>\n      <dd>\n<span class=\"refAuthor\">al., B. S. E.</span>, <span class=\"refTitle\">\"Service Binding and Parameter Specification via the DNS\"</span>, <span class=\"seriesInfo\">RFC 9460</span>, <time datetime=\"2023-11\" class=\"refDate\">November 2023</time>, <span>&lt;<a href=\"https://www.rfc-editor.org/info/rfc9460\">https://www.rfc-editor.org/info/rfc9460</a>&gt;</span>. </dd>\n<dd class=\"break\"></dd>\n<dt id=\"RFC8615\">[RFC8615]</dt>\n    <dd>\n<span class=\"refAuthor\">Nottingham, M.</span>, <span class=\"refTitle\">\"Well-Known Uniform Resource Identifiers (URIs)\"</span>, <span class=\"seriesInfo\">RFC 8615</span>, <time datetime=\"2019-05\" class=\"refDate\">May 2019</time>, <span>&lt;<a href=\"https://www.rfc-editor.org/info/rfc8615\">https://www.rfc-editor.org/info/rfc8615</a>&gt;</span>. </dd>\n<dd class=\"break\"></dd>\n</dl>\n</section>\n<section id=\"section-26\">\n      <h2 id=\"name-informative-references\">\n<a href=\"#section-26\" class=\"section-number selfRef\">26. </a><a href=\"#name-informative-references\" class=\"section-name selfRef\">Informative References</a>\n      </h2>\n<dl class=\"references\">\n<dt id=\"DNS-AID\">[DNS-AID]</dt>\n      <dd>\n<span class=\"refAuthor\">al., J. M. E.</span>, <span class=\"refTitle\">\"DNS for AI Discovery\"</span>, <span class=\"refContent\">Work in Progress</span>, <span class=\"seriesInfo\">Internet-Draft, draft-mozleywilliams-dnsop-dnsaid-02</span>, <time datetime=\"2026-05\" class=\"refDate\">May 2026</time>, <span>&lt;<a href=\"https://datatracker.ietf.org/doc/draft-mozleywilliams-dnsop-dnsaid/\">https://datatracker.ietf.org/doc/draft-mozleywilliams-dnsop-dnsaid/</a>&gt;</span>. </dd>\n<dd class=\"break\"></dd>\n<dt id=\"AI-AUTH\">[AI-AUTH]</dt>\n      <dd>\n<span class=\"refAuthor\">al., P. K. E.</span>, <span class=\"refTitle\">\"AI Agent Authentication and Authorization\"</span>, <span class=\"refContent\">Work in Progress</span>, <span class=\"seriesInfo\">Internet-Draft, draft-klrc-aiagent-auth-02</span>, <time datetime=\"2026-06\" class=\"refDate\">June 2026</time>, <span>&lt;<a href=\"https://datatracker.ietf.org/doc/draft-klrc-aiagent-auth/\">https://datatracker.ietf.org/doc/draft-klrc-aiagent-auth/</a>&gt;</span>. </dd>\n<dd class=\"break\"></dd>\n<dt id=\"AGENTIC-UCREQ\">[AGENTIC-UCREQ]</dt>\n      <dd>\n<span class=\"refAuthor\">al., T. R. E.</span>, <span class=\"refTitle\">\"Agentic AI Use Cases and Requirements\"</span>, <span class=\"refContent\">Work in Progress</span>, <span class=\"seriesInfo\">Internet-Draft, draft-agentic-ai-usecases-requirements-00</span>, <time datetime=\"2026-05\" class=\"refDate\">May 2026</time>, <span>&lt;<a href=\"https://datatracker.ietf.org/doc/draft-agentic-ai-usecases-requirements/\">https://datatracker.ietf.org/doc/draft-agentic-ai-usecases-requirements/</a>&gt;</span>. </dd>\n<dd class=\"break\"></dd>\n<dt id=\"AI-AUTH-REQ\">[AI-AUTH-REQ]</dt>\n      <dd>\n<span class=\"refAuthor\">Su, M. C. A. L.</span>, <span class=\"refTitle\">\"New requirements for Authentication and Authorization in the AI Agents era\"</span>, <span class=\"refContent\">Work in Progress</span>, <span class=\"seriesInfo\">Internet-Draft, draft-chen-ai-agent-auth-new-requirements-00</span>, <time datetime=\"2026-01\" class=\"refDate\">January 2026</time>, <span>&lt;<a href=\"https://datatracker.ietf.org/doc/draft-chen-ai-agent-auth-new-requirements/\">https://datatracker.ietf.org/doc/draft-chen-ai-agent-auth-new-requirements/</a>&gt;</span>. </dd>\n<dd class=\"break\"></dd>\n<dt id=\"AIDIP\">[AIDIP]</dt>\n      <dd>\n<span class=\"refAuthor\">al., Y. C. E.</span>, <span class=\"refTitle\">\"AI Agent Discovery and Invocation Protocol\"</span>, <span class=\"refContent\">Work in Progress</span>, <span class=\"seriesInfo\">Internet-Draft, draft-cui-ai-agent-discovery-invocation-01</span>, <time datetime=\"2026-02\" class=\"refDate\">February 2026</time>, <span>&lt;<a href=\"https://datatracker.ietf.org/doc/draft-cui-ai-agent-discovery-invocation/\">https://datatracker.ietf.org/doc/draft-cui-ai-agent-discovery-invocation/</a>&gt;</span>. </dd>\n<dd class=\"break\"></dd>\n<dt id=\"ADP\">[ADP]</dt>\n      <dd>\n<span class=\"refAuthor\">Lian, H.</span>, <span class=\"refTitle\">\"Agent Discovery Protocol (ADP)\"</span>, <span class=\"refContent\">Work in Progress</span>, <span class=\"seriesInfo\">Internet-Draft, draft-pro-adp-agent-discovery-00</span>, <time datetime=\"2026-06\" class=\"refDate\">June 2026</time>, <span>&lt;<a href=\"https://datatracker.ietf.org/doc/draft-pro-adp-agent-discovery/\">https://datatracker.ietf.org/doc/draft-pro-adp-agent-discovery/</a>&gt;</span>. </dd>\n<dd class=\"break\"></dd>\n<dt id=\"RFC3710\">[RFC3710]</dt>\n    <dd>\n<span class=\"refAuthor\">Alvestrand, H.</span>, <span class=\"refTitle\">\"An IESG Charter\"</span>, <span class=\"seriesInfo\">RFC 3710</span>, <time datetime=\"2004-02\" class=\"refDate\">February 2004</time>, <span>&lt;<a href=\"https://www.rfc-editor.org/info/rfc3710\">https://www.rfc-editor.org/info/rfc3710</a>&gt;</span>. </dd>\n<dd class=\"break\"></dd>\n</dl>\n</section>\n<div id=\"appendix-history\">\n<section id=\"appendix-A\">\n      <h2 id=\"name-document-history\">\n<a href=\"#appendix-A\" class=\"section-number selfRef\">Appendix A. </a><a href=\"#name-document-history\" class=\"section-name selfRef\">Document History</a>\n      </h2>\n<p id=\"appendix-A-1\">This is the initial -00 submission. Earlier working copies were not submitted to the IETF.<a href=\"#appendix-A-1\" class=\"pilcrow\">¶</a></p>\n</section>\n</div>\n<div id=\"authors-addresses\">\n<section id=\"appendix-B\">\n      <h2 id=\"name-authors-address\">\n<a href=\"#name-authors-address\" class=\"section-name selfRef\">Author's Address</a>\n      </h2>\n<address class=\"vcard\">\n        <div dir=\"auto\" class=\"left\"><span class=\"fn nameRole\">Soohong Daniel Park</span></div>\n<div dir=\"auto\" class=\"left\"><span class=\"org\">Samsung Electronics</span></div>\n<div dir=\"auto\" class=\"left\"><span class=\"street-address\">Open Source Group</span></div>\n<div dir=\"auto\" class=\"left\"><span class=\"country-name\">Republic of Korea</span></div>\n<div class=\"email\">\n<span>Email:</span>\n<a href=\"mailto:soohongp@gmail.com\" class=\"email\">soohongp@gmail.com</a>\n</div>\n</address>\n</section>\n</div>\n</div>\n\n                    </div>\n                \n            </div>\n            <div class=\"d-print-none col-md-3 bg-light-subtle collapse show\" id=\"sidebar\">\n                <div class=\"position-fixed border-start sidebar overflow-scroll overscroll-none no-scrollbar\">\n                    <div class=\"d-flex flex-column vh-100 pt-2 pt-lg-3 ps-3 pl-md-2 pl-lg-3\">\n                        <div>\n                            <a class=\"btn btn-primary btn-sm\" href=\"/doc/draft-daniel-ai-agent-internet-architecture/\">Datatracker</a>\n                            <p class=\"fw-bold pt-2\">\n                                \n                                    draft-daniel-ai-agent-internet-architecture-00\n                                \n                                <br>\n                                \n\n\n\n\n\n\n\n    <div>This is an older version of an Internet-Draft whose latest revision state is \"Active\".</div>\n\n                            </p>\n                        </div>\n                        \n                        <ul class=\"nav nav-tabs nav-fill small me-2\" role=\"tablist\">\n                            <li class=\"nav-item\" role=\"presentation\" title=\"Document information\">\n                                <button class=\"nav-link px-2\"\n                                        id=\"docinfo-tab\"\n                                        data-bs-toggle=\"tab\"\n                                        data-bs-target=\"#docinfo-tab-pane\"\n                                        type=\"button\"\n                                        role=\"tab\"\n                                        aria-controls=\"docinfo-tab-pane\"\n                                        aria-selected=\"true\">\n                                    <i class=\"bi bi-info-circle\"></i><span class=\"d-none d-md-block d-xl-inline ms-xl-1\">Info</span>\n                                </button>\n                            </li>\n                            <li class=\"nav-item\" role=\"presentation\" title=\"Table of contents\">\n                                <button class=\"nav-link px-2\"\n                                        id=\"toc-tab\"\n                                        data-bs-toggle=\"tab\"\n                                        data-bs-target=\"#toc-tab-pane\"\n                                        type=\"button\"\n                                        role=\"tab\"\n                                        aria-controls=\"toc-tab-pane\"\n                                        aria-selected=\"false\">\n                                    <i class=\"bi bi-list-ol\"></i><span class=\"d-none d-md-block d-xl-inline ms-xl-1\">Contents</span>\n                                </button>\n                            </li>\n                            <li class=\"nav-item\" role=\"presentation\" title=\"Preferences\">\n                                <button class=\"nav-link px-2\"\n                                        id=\"pref-tab\"\n                                        data-bs-toggle=\"tab\"\n                                        data-bs-target=\"#pref-tab-pane\"\n                                        type=\"button\"\n                                        role=\"tab\"\n                                        aria-controls=\"pref-tab-pane\"\n                                        aria-selected=\"false\">\n                                    <i class=\"bi bi-gear\"></i><span class=\"d-none d-md-block d-xl-inline ms-xl-1\">Prefs</span>\n                                </button>\n                            </li>\n                        </ul>\n                        <div class=\"overflow-auto tab-content pt-2 me-2\">\n                            <div class=\"tab-pane\"\n                                 id=\"docinfo-tab-pane\"\n                                 role=\"tabpanel\"\n                                 aria-labelledby=\"docinfo-tab\"\n                                 tabindex=\"0\">\n                                <table class=\"table table-sm table-borderless\">\n                                    \n\n\n\n\n\n\n\n<tbody class=\"meta align-top \">\n    <tr>\n        <th scope=\"row\">Document</th>\n        <th scope=\"row\">Document type</th>\n        <td class=\"edit\"></td>\n        <td>\n            \n\n\n\n\n\n\n\n    <div>This is an older version of an Internet-Draft whose latest revision state is \"Active\".</div>\n\n            \n            \n            \n                \n\n\n\n\n    <div class=\"alert alert-warning small p-2 mt-2\" role=\"alert\">\n        This document is an Internet-Draft (I-D).\n        Anyone may submit an I-D to the IETF.\n        This I-D is <strong>not endorsed by the IETF</strong> and has <strong>no formal standing</strong> in the\n        <a href=\"/doc/rfc2026/\">IETF standards process</a>.\n    </div>\n\n\n            \n        </td>\n    </tr>\n    \n        <tr>\n            <td></td>\n            <th scope=\"row\">Select version</th>\n            <td class=\"edit\"></td>\n            <td>\n                \n\n\n\n    <ul class=\"revision-list pagination pagination-sm text-center flex-wrap my-0\">\n        \n            \n                 \n                    <li class=\"page-item active\">\n                        <a class=\"page-link\"\n                        href=\"/doc/html/draft-daniel-ai-agent-internet-architecture-00\"\n                        >\n                            00\n                        </a>\n                    </li>\n                \n            \n                 \n                    <li class=\"page-item \">\n                        <a class=\"page-link\"\n                        href=\"/doc/html/draft-daniel-ai-agent-internet-architecture-01\"\n                        rel=\"nofollow\">\n                            01\n                        </a>\n                    </li>\n                \n            \n                 \n                    <li class=\"page-item \">\n                        <a class=\"page-link\"\n                        href=\"/doc/html/draft-daniel-ai-agent-internet-architecture-02\"\n                        rel=\"nofollow\">\n                            02\n                        </a>\n                    </li>\n                \n            \n                 \n                    <li class=\"page-item \">\n                        <a class=\"page-link\"\n                        href=\"/doc/html/draft-daniel-ai-agent-internet-architecture-03\"\n                        >\n                            03\n                        </a>\n                    </li>\n                \n            \n            \n        \n    </ul>\n\n            </td>\n        </tr>\n        \n            <tr>\n                <td></td>\n                <th scope=\"row\">Compare versions</th>\n                <td class=\"edit\"></td>\n                <td>\n                    \n\n\n\n<form class=\"form-horizontal diff-form\"\n      action=\"https://author-tools.ietf.org/iddiff\"\n      method=\"get\"\n      target=\"_blank\">\n\n            <select class=\"form-select form-select-sm mb-1 select2-field\"\n                    data-max-entries=\"1\"\n                    data-width=\"resolve\"\n                    data-allow-clear=\"false\"\n                    data-minimum-input-length=\"0\"\n                    aria-label=\"From revision\"\n                    name=\"url1\">\n                \n                    <option value=\"draft-daniel-ai-agent-internet-architecture-03\">\n                        draft-daniel-ai-agent-internet-architecture-03\n                        \n                    </option>\n                \n                    <option value=\"draft-daniel-ai-agent-internet-architecture-02\" selected>\n                        draft-daniel-ai-agent-internet-architecture-02\n                        \n                    </option>\n                \n                    <option value=\"draft-daniel-ai-agent-internet-architecture-01\">\n                        draft-daniel-ai-agent-internet-architecture-01\n                        \n                    </option>\n                \n                    <option value=\"draft-daniel-ai-agent-internet-architecture-00\">\n                        draft-daniel-ai-agent-internet-architecture-00\n                        \n                    </option>\n                \n                \n            </select>\n\n            <select class=\"form-select form-select-sm mb-1 select2-field\"\n                    data-max-entries=\"1\"\n                    data-width=\"resolve\"\n                    data-allow-clear=\"false\"\n                    data-minimum-input-length=\"0\"\n                    aria-label=\"To revision\"\n                    name=\"url2\">\n                \n                    <option value=\"draft-daniel-ai-agent-internet-architecture-03\" selected>\n                        draft-daniel-ai-agent-internet-architecture-03\n                        \n                    </option>\n                \n                    <option value=\"draft-daniel-ai-agent-internet-architecture-02\">\n                        draft-daniel-ai-agent-internet-architecture-02\n                        \n                    </option>\n                \n                    <option value=\"draft-daniel-ai-agent-internet-architecture-01\">\n                        draft-daniel-ai-agent-internet-architecture-01\n                        \n                    </option>\n                \n                    <option value=\"draft-daniel-ai-agent-internet-architecture-00\">\n                        draft-daniel-ai-agent-internet-architecture-00\n                        \n                    </option>\n                \n                \n            </select>\n\n            <button type=\"submit\"\n                    class=\"btn btn-primary btn-sm\"\n                    value=\"--html\"\n                    name=\"difftype\">\n                Side-by-side\n            </button>\n            \n            <button type=\"submit\"\n                    class=\"btn btn-primary btn-sm\"\n                    value=\"--hwdiff\"\n                    name=\"difftype\">\n                Inline\n            </button>\n\n</form>\n                </td>\n            </tr>\n        \n    \n    <tr>\n        <td></td>\n        <th scope=\"row\">Author</th>\n        <td class=\"edit\">\n            \n        </td>\n        <td>\n            \n            \n                <span ><a \n           title=\"Datatracker profile of Soohong Daniel Park\"\n            href=\"/person/soohong.park@samsung.com\" >Soohong Daniel Park</a> <a \n               href=\"mailto:soohong.park%40samsung.com\"\n               aria-label=\"Compose email to soohong.park@samsung.com\"\n               title=\"Compose email to soohong.park@samsung.com\">\n                <i class=\"bi bi-envelope\"></i></a></span>\n            \n            \n        </td>\n    </tr>\n    \n    \n        \n        \n        \n    \n    <tr>\n        <td></td>\n        <th scope=\"row\">\n            RFC stream\n        </th>\n        <td class=\"edit\">\n            \n        </td>\n        <td class=\"text-body-secondary\">\n            \n                (None)\n            \n        </td>\n    </tr>\n    \n    <tr>\n        <td></td>\n        <th scope=\"row\">\n            Other formats\n        </th>\n        <td class=\"edit\">\n        </td>\n        <td>\n            \n                \n    <div class=\"buttonlist\">\n    \n        \n        <a class=\"btn btn-primary btn-sm\"\n          \n          target=\"_blank\"\n          href=\"https://www.ietf.org/archive/id/draft-daniel-ai-agent-internet-architecture-00.txt\">\n            \n                <i class=\"bi bi-file-text\"></i> txt\n            \n        </a>\n        \n    \n        \n        <a class=\"btn btn-primary btn-sm\"\n          \n          target=\"_blank\"\n          href=\"https://www.ietf.org/archive/id/draft-daniel-ai-agent-internet-architecture-00.html\">\n            \n                <i class=\"bi bi-file-code\"></i> html\n            \n        </a>\n        \n    \n        \n        <a class=\"btn btn-primary btn-sm\"\n          \n          target=\"_blank\"\n          href=\"https://www.ietf.org/archive/id/draft-daniel-ai-agent-internet-architecture-00.xml\">\n            \n                <i class=\"bi bi-file-code\"></i> xml\n            \n        </a>\n        \n    \n        \n    \n        \n        <a class=\"btn btn-primary btn-sm\"\n          \n          target=\"_blank\"\n          href=\"/doc/draft-daniel-ai-agent-internet-architecture/00/bibtex/\">\n            \n                <i class=\"bi bi-file-ruled\"></i> bibtex\n            \n        </a>\n        \n    \n        \n        <a class=\"btn btn-primary btn-sm\"\n          \n          target=\"_blank\"\n          href=\"/doc/bibxml3/draft-daniel-ai-agent-internet-architecture-00.xml\">\n            \n                <i class=\"bi bi-file-code\"></i> bibxml\n            \n        </a>\n        \n    \n</div>\n\n            \n        </td>\n    </tr>\n    \n    \n        \n    \n</tbody>\n                                </table>\n                                <a class=\"btn btn-sm btn-warning mb-3\"\n                                target=\"_blank\"\n                                href=\"https://github.com/ietf-tools/datatracker/issues/new/choose\">\n                                    Report a datatracker bug\n                                    <i class=\"bi bi-bug\"></i>\n                                </a>\n                            </div>\n                            <div class=\"tab-pane mb-5\"\n                                 id=\"toc-tab-pane\"\n                                 role=\"tabpanel\"\n                                 aria-labelledby=\"toc-tab\"\n                                 tabindex=\"0\">\n                                <nav class=\"nav nav-pills flex-column small\" id=\"toc-nav\">\n                                </nav>\n                            </div>\n                            <div class=\"tab-pane mb-5 small\"\n                                 id=\"pref-tab-pane\"\n                                 role=\"tabpanel\"\n                                 aria-labelledby=\"pref-tab\"\n                                 tabindex=\"0\">\n                                <label class=\"form-label fw-bold mb-2\">Show sidebar by default</label>\n                                <div class=\"btn-group-vertical btn-group-sm d-flex\" role=\"group\">\n                                    <input type=\"radio\" class=\"btn-check\" name=\"sidebar\" id=\"on-radio\">\n                                    <label class=\"btn btn-outline-primary\" for=\"on-radio\">Yes</label>\n                                    <input type=\"radio\" class=\"btn-check\" name=\"sidebar\" id=\"off-radio\">\n                                    <label class=\"btn btn-outline-primary\" for=\"off-radio\">No</label>\n                                </div>\n                                <label class=\"form-label fw-bold mt-4 mb-2\">Tab to show by default</label>\n                                <div class=\"btn-group-vertical btn-group-sm d-flex\" role=\"group\">\n                                    <input type=\"radio\" class=\"btn-check\" name=\"deftab\" id=\"docinfo-radio\">\n                                    <label class=\"btn btn-outline-primary\" for=\"docinfo-radio\">\n                                        <i class=\"bi bi-info-circle me-1\"></i>Info\n                                    </label>\n                                    <input type=\"radio\" class=\"btn-check\" name=\"deftab\" id=\"toc-radio\">\n                                    <label class=\"btn btn-outline-primary\" for=\"toc-radio\">\n                                        <i class=\"bi bi-list-ol me-1\"></i>Contents\n                                    </label>\n                                </div>\n                                <label class=\"form-label fw-bold mt-4 mb-2\">HTMLization configuration</label>\n                                <div class=\"btn-group-vertical btn-group-sm d-flex\" role=\"group\">\n                                    <input type=\"radio\" class=\"btn-check\" name=\"htmlconf\" id=\"txt-radio\">\n                                    <label class=\"btn btn-outline-primary\" for=\"txt-radio\" title=\"This is the traditional HTMLization method.\">\n                                        <i class=\"bi bi-badge-sd me-1\"></i>HTMLize the plaintext\n                                    </label>\n                                    <input type=\"radio\" class=\"btn-check\" name=\"htmlconf\" id=\"html-radio\">\n                                    <label class=\"btn btn-outline-primary\" for=\"html-radio\" title=\"This is the modern HTMLization method.\">\n                                        <i class=\"bi bi-badge-hd me-1\"></i>Plaintextify the HTML\n                                    </label>\n                                </div>\n                                <label class=\"form-label fw-bold mt-4 mb-2\" for=\"ptsize\">Maximum font size</label>\n                                <input type=\"range\" class=\"form-range\" min=\"7\" max=\"16\" id=\"ptsize\" oninput=\"ptdemo.value = ptsize.value\">\n                                <label class=\"form-label fw-bold mt-4 mb-2\">Page dependencies</label>\n                                <div class=\"btn-group-vertical btn-group-sm d-flex\" role=\"group\">\n                                    <input type=\"radio\" class=\"btn-check\" name=\"pagedeps\" id=\"inline-radio\">\n                                    <label class=\"btn btn-outline-primary\" for=\"inline-radio\" title=\"Generate larger, standalone web pages that do not require network access to render.\">\n                                        <i class=\"bi bi-box me-1\"></i>Inline\n                                    </label>\n                                    <input type=\"radio\" class=\"btn-check\" name=\"pagedeps\" id=\"reference-radio\">\n                                    <label class=\"btn btn-outline-primary\" for=\"reference-radio\" title=\"Generate regular web pages that require network access to render.\">\n                                        <i class=\"bi bi-link-45deg me-1\"></i>Reference\n                                    </label>\n                                </div>\n                                <label class=\"form-label fw-bold mt-4 mb-2\">Citation links</label>\n                                <div class=\"btn-group-vertical btn-group-sm d-flex\" role=\"group\">\n                                    <input type=\"radio\" class=\"btn-check\" name=\"reflinks\" id=\"refsection-radio\">\n                                    <label class=\"btn btn-outline-primary\" for=\"refsection-radio\" title=\"Citation links go to the reference section.\">\n                                        <i class=\"bi bi-arrow-clockwise\"></i> Go to reference section\n                                    </label>\n                                    <input type=\"radio\" class=\"btn-check\" name=\"reflinks\" id=\"citation-radio\">\n                                    <label class=\"btn btn-outline-primary\" for=\"citation-radio\" title=\"Citation links go directly to the cited document.\">\n                                        <i class=\"bi bi-link-45deg me-1\"></i>Go to linked document\n                                    </label>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n    \n<script>\n  var _paq = window._paq || [];\n  \n  _paq.push(['disableCookies']);\n  _paq.push(['trackPageView']);\n  _paq.push(['enableLinkTracking']);\n  (function() {\n    var u=\"//analytics.ietf.org/\";\n    _paq.push(['setTrackerUrl', u+'matomo.php']);\n    _paq.push(['setSiteId', 7]);\n    var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];\n    g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);\n  })();\n</script>\n<noscript><p><img src=\"//analytics.ietf.org/matomo.php?idsite=7\" style=\"border:0;\" alt=\"\" /></p></noscript>\n\n    <script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML=\"window.__CF$cv$params={r:'a3a01fee1bf7c6c6',t:'MTc4OTIyODgyMg=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);\";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script></body>\n</html>\n","snapshot_chars":99286,"live_check":"changed"}]}