<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.43 (Ruby 3.3.6) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-lee-wimse-local-tool-call-proof-01" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="Local Tool Call Proof">Per-Call Proof for Local Tool Invocation by AI Agents</title>
    <seriesInfo name="Internet-Draft" value="draft-lee-wimse-local-tool-call-proof-01"/>
    <author initials="J." surname="Lee" fullname="Jaebin Lee">
      <organization>SSenStone Inc.</organization>
      <address>
        <postal>
          <country>Korea, Republic of</country>
        </postal>
        <email>jblee@ssenstone.com</email>
      </address>
    </author>
    <author initials="C." surname="Yoo" fullname="Chang-Hun Yoo">
      <organization>SSenStone Inc.</organization>
      <address>
        <postal>
          <country>Korea, Republic of</country>
        </postal>
        <email>chyoo@ssenstone.com</email>
      </address>
    </author>
    <author initials="M." surname="Kim" fullname="MinGyu Kim">
      <organization>SSenStone Inc.</organization>
      <address>
        <postal>
          <country>Korea, Republic of</country>
        </postal>
        <email>mgkim@ssenstone.com</email>
      </address>
    </author>
    <author initials="W." surname="Seo" fullname="WooYong Seo">
      <organization>SSenStone Inc.</organization>
      <address>
        <postal>
          <country>Korea, Republic of</country>
        </postal>
        <email>wyseo@ssenstone.com</email>
      </address>
    </author>
    <date year="2026" month="October" day="12"/>
    <area>Applications and Real-Time</area>
    <workgroup>Network Working Group</workgroup>
    <keyword>AI agent</keyword>
    <keyword>workload identity</keyword>
    <keyword>tool invocation</keyword>
    <keyword>Model Context Protocol</keyword>
    <keyword>proof of authorization</keyword>
    <abstract>
      

<t>AI agents increasingly act through local tool servers that run on the same host and are reached over inter-process channels such as the stdio transport of the Model Context Protocol (MCP). These channels are outside the scope of HTTP-based authorization: the tool server cannot tell whether a given invocation passed any policy decision, and reusable credentials typically sit in the agent's process memory.</t>
      <t>This document defines a per-call proof for local tool invocation. A Call Authority that runs outside the agent process evaluates policy, issues a short-lived, single-use proof bound to the exact tool name and arguments through a canonical action digest, and verifies that proof on behalf of the tool server. The tool server rejects invocations whose proof is missing or does not verify. The proof format is opaque to the agent and the tool server; concrete formats are defined as evidence type profiles. An MCP stdio binding is provided.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-lee-wimse-local-tool-call-proof/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Workload Identity in Multi System Environments (WIMSE) Working Group mailing list (<eref target="mailto:wimse@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/wimse/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/wimse/"/>.
      </t>
    </note>
  </front>
  <middle>
    

<section anchor="introduction">
      <name>Introduction</name>
      <t>The AI Identity Management System <xref target="I-D.ietf-wimse-aims"/> composes workload identity, short-lived credentials, transport and application layer authentication, and OAuth-based delegation into a model for authenticating and authorizing AI agents. Its focus is on interactions that cross network boundaries.</t>
      <t>A large share of agent actions, however, never cross a network boundary. An agent host commonly spawns local tool servers (filesystem access, shell execution, database and SaaS connectors) and talks to them over a local inter-process channel. In MCP <xref target="MCP"/>, this is the stdio transport, and the authorization specification states that implementations using it "<bcp14>SHOULD NOT</bcp14> follow this specification, and instead retrieve credentials from the environment" <xref target="MCP-AUTHZ"/>. The MCP local server guidance describes the agent client and a stdio server as sharing one trust domain <xref target="MCP-LOCAL"/>.</t>
      <t>That model is adequate for a single user on a personal device. It is not adequate when:</t>
      <ul spacing="normal">
        <li>
          <t>an agent host runs on shared infrastructure and acts on behalf of many users;</t>
        </li>
        <li>
          <t>local tool servers hold long-lived credentials and broad filesystem access; and</t>
        </li>
        <li>
          <t>the agent's decisions are driven by untrusted content such as issues, pull requests, documents and web pages.</t>
        </li>
      </ul>
      <t>In that setting the agent is the most exposed component, and the local tool server is the last point at which an invocation can be checked before it reaches a resource. Network enforcement points never see calls to local resources such as files and shell commands.</t>
      <t>This document specifies:</t>
      <ol spacing="normal" type="1"><li>
          <t>a canonical <strong>action digest</strong> that identifies exactly one tool invocation (<xref target="action-digest"/>);</t>
        </li>
        <li>
          <t>a <strong>Call Authority</strong> outside the agent process that issues and verifies per-call proofs (<xref target="call-authority"/>);</t>
        </li>
        <li>
          <t>an <strong>enforcement obligation</strong> on tool servers to reject invocations without a valid proof (<xref target="tool-server"/>);</t>
        </li>
        <li>
          <t>requirements for <strong>evidence type profiles</strong> (<xref target="profiles"/>); and</t>
        </li>
        <li>
          <t>a <strong>binding for the MCP stdio transport</strong> (<xref target="mcp-binding"/>).</t>
        </li>
      </ol>
      <t>The mechanism does not prevent prompt injection. It confines the effects of an injected or compromised agent to actions that policy permits, removes reusable secrets from the agent process, and makes every invocation attributable.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      

<dl>
        <dt>Agent:</dt>
        <dd>
          <t>A software component that decides, typically with the help of a language model, which tools to invoke and with which arguments. In MCP terms, the client embedded in an agent host.</t>
        </dd>
        <dt>Tool Server:</dt>
        <dd>
          <t>A local process that executes tool invocations requested by the Agent, for example an MCP server reached over stdio.</t>
        </dd>
        <dt>Call Authority:</dt>
        <dd>
          <t>A component that runs outside the Agent process, evaluates Policy, issues Call Proofs and verifies them. It holds all key material used for Call Proofs.</t>
        </dd>
        <dt>Policy:</dt>
        <dd>
          <t>A signed document loaded by the Call Authority that states which callers may invoke which tools with which argument constraints, and which actions require human approval. The policy language is out of scope.</t>
        </dd>
        <dt>Call Proof:</dt>
        <dd>
          <t>A short-lived, single-use value that commits to one Action Digest and attests that the Call Authority authorized that invocation.</t>
        </dd>
        <dt>Action Digest:</dt>
        <dd>
          <t>A canonical hash of an invocation's method, tool name and arguments (<xref target="action-digest"/>).</t>
        </dd>
        <dt>Evidence Type:</dt>
        <dd>
          <t>An identifier naming the format and semantics of a Call Proof, defined by an evidence type profile (<xref target="profiles"/>).</t>
        </dd>
      </dl>
    </section>
    <section anchor="threat-model">
      <name>Threat Model and Deployment Assumptions</name>
      <section anchor="in-scope">
        <name>In Scope</name>
        <t>T1. Injected instructions. Content processed by the Agent causes it to request a tool invocation outside its intended role, for example reading a credential file and sending its contents through another tool.</t>
        <t>T2. Theft of reusable secrets. Code execution inside the Agent process (for example through a compromised dependency) is used to extract credentials that remain usable after the compromise ends.</t>
        <t>T3. Policy bypass and proof reuse. An invocation is sent without passing a policy check, or a proof obtained for one invocation is presented for another.</t>
        <t>T4. Policy tampering. The policy is modified so that a denied action becomes allowed.</t>
      </section>
      <section anchor="out-of-scope">
        <name>Out of Scope</name>
        <ul spacing="normal">
          <li>
            <t>A malicious or compromised Tool Server. A Tool Server that ignores verification cannot be constrained by this mechanism.</t>
          </li>
          <li>
            <t>Credentials that the Tool Server itself uses to reach remote resources. Those are covered by network-level controls and the mechanisms in <xref target="I-D.ietf-wimse-aims"/>.</t>
          </li>
          <li>
            <t>Compromise of the Call Authority or of the policy signing key.</t>
          </li>
          <li>
            <t>Prevention of prompt injection itself, and actions that the policy permits.</t>
          </li>
        </ul>
      </section>
      <section anchor="isolation">
        <name>Isolation Assumption</name>
        <t>Protection against T2 requires that the Agent run in a separate isolation boundary (a different operating system user, container or virtual machine) from the Tool Server and the Call Authority. If they share one boundary, code execution in the Agent can read the Tool Server's environment or start a Tool Server without verification. In that configuration this mechanism still addresses T1, T3 and T4, where the Agent's code is intact but its decisions are not.</t>
      </section>
    </section>
    <section anchor="architecture-overview">
      <name>Architecture Overview</name>
      <figure>
        <name>Per-call proof flow</name>
        <artwork type="ascii-art"><![CDATA[
 +---------+  (1) issue(method,name,args)   +----------------+
 |  Agent  | -----------------------------> | Call Authority |
 | (no     | <----------------------------- | policy, keys,  |
 | secrets)|  (2) Call Proof                | replay cache,  |
 +---------+                                | audit log      |
      |                                     +----------------+
      | (3) invocation + Call Proof                 ^   |
      v                                             |   |
 +-------------+  (4) verify(action_digest, proof)  |   |
 | Tool Server | -----------------------------------+   |
 | + enforce-  | <---------------------------------------+
 |   ment hook |  (5) valid / invalid(reason)
 +-------------+
      | (6) execute only if valid
      v
 local resources (files, shell, local services)
]]></artwork>
      </figure>
      <ol spacing="normal" type="1"><li>
          <t>The Agent asks the Call Authority to issue a proof for an intended invocation.</t>
        </li>
        <li>
          <t>The Call Authority identifies the calling process from the platform, evaluates Policy and, if allowed, returns a Call Proof. The proof never passes through the Call Authority again on the way to the Tool Server.</t>
        </li>
        <li>
          <t>The Agent sends the invocation to the Tool Server with the Call Proof attached.</t>
        </li>
        <li>
          <t>The Tool Server computes the Action Digest from the invocation as received and asks the Call Authority to verify the proof against it.</t>
        </li>
        <li>
          <t>The Call Authority checks binding, freshness and single use, records the decision, and answers.</t>
        </li>
        <li>
          <t>The Tool Server executes the invocation only if the answer is valid.</t>
        </li>
      </ol>
      <t>Verification is delegated to the Call Authority so that the Tool Server needs no key material and no knowledge of evidence formats. This allows symmetric and asymmetric evidence types to coexist and keeps replay tracking and audit in one place.</t>
    </section>
    <section anchor="action-digest">
      <name>Action Digest</name>
      <t>The Action Digest identifies exactly one invocation. It is computed as:</t>
      <artwork><![CDATA[
action_digest = BASE64URL( SHA-256( JCS( {
  "method":    <invocation method>,
  "name":      <tool name>,
  "arguments": <arguments object, or {} if absent>
} ) ) )
]]></artwork>
      <t>where:</t>
      <ul spacing="normal">
        <li>
          <t>JCS is the JSON Canonicalization Scheme <xref target="RFC8785"/>;</t>
        </li>
        <li>
          <t>SHA-256 is as defined in <xref target="RFC6234"/>;</t>
        </li>
        <li>
          <t>BASE64URL is base64url encoding without padding (<xref section="5" sectionFormat="of" target="RFC4648"/>).</t>
        </li>
      </ul>
      <t>The arguments <bcp14>MUST</bcp14> be taken exactly as transmitted, as a JSON <xref target="RFC8259"/> value. Implementations <bcp14>MUST NOT</bcp14> normalize argument values (for example by resolving file system paths) before computing the digest. Semantic normalization belongs to policy evaluation, not to the digest.</t>
      <t>The same construction is used by proposals in the MCP community for argument commitments (<xref target="MCP-SEP-2787"/>, <xref target="MCP-SEP-2672"/>); aligning on one definition allows evidence produced under those proposals to serve as Evidence Types under this document.</t>
    </section>
    <section anchor="call-authority">
      <name>Call Authority</name>
      <section anchor="general-requirements">
        <name>General Requirements</name>
        <t>The Call Authority <bcp14>MUST NOT</bcp14> run inside the Agent process. The Agent <bcp14>MUST NOT</bcp14> have access to any key material used to create or verify Call Proofs. Where available, keys <bcp14>SHOULD</bcp14> be generated and used inside a hardware root of trust (for example a TPM) so that they are never exported.</t>
        <t>The Call Authority exposes a local interface using JSON-RPC 2.0 messages over a local endpoint such as a Unix domain socket or a named pipe. The endpoint <bcp14>MUST NOT</bcp14> be reachable from outside the host.</t>
      </section>
      <section anchor="issue">
        <name>Issue</name>
        <t>An issue request carries the intended invocation:</t>
        <sourcecode type="json"><![CDATA[
{ "jsonrpc": "2.0", "id": 1, "method": "callProof/issue",
  "params": { "method": "tools/call", "name": "read_file",
              "arguments": { "path": "repo/src/main.ts" },
              "server": "filesystem" } }
]]></sourcecode>
        <t>The Call Authority:</t>
        <ol spacing="normal" type="1"><li>
            <t><bcp14>MUST</bcp14> establish the identity of the calling process from the platform, for example from the peer credentials of the local socket or from a workload identity issued to that process such as a SPIFFE ID <xref target="SPIFFE"/>. It <bcp14>MUST NOT</bcp14> rely on an identity asserted in the request body.</t>
          </li>
          <li>
            <t><bcp14>MUST</bcp14> evaluate Policy for that identity, target server, tool and arguments.</t>
          </li>
          <li>
            <t><bcp14>MUST</bcp14> return an error and <bcp14>MUST NOT</bcp14> issue a proof if Policy denies the invocation.</t>
          </li>
          <li>
            <t><bcp14>MAY</bcp14> return an approval-required result when Policy requires human approval (<xref target="approval"/>).</t>
          </li>
          <li>
            <t>Otherwise returns <tt>{ "type": "&lt;evidence type&gt;", "value": "&lt;proof&gt;", "expiresAt": "&lt;RFC 3339 timestamp&gt;" }</tt> <xref target="RFC3339"/>.</t>
          </li>
        </ol>
      </section>
      <section anchor="verify">
        <name>Verify</name>
        <t>A verify request carries the Action Digest computed by the Tool Server and the evidence received:</t>
        <sourcecode type="json"><![CDATA[
{ "jsonrpc": "2.0", "id": 2, "method": "callProof/verify",
  "params": { "actionDigest": "<base64url>", "server": "filesystem",
              "evidence": { "type": "<evidence type>",
                            "value": "<proof>" } } }
]]></sourcecode>
        <t>The Call Authority returns <tt>{ "valid": true }</tt> or <tt>{ "valid": false, "reason": "&lt;reason&gt;" }</tt>, where reason is one of <tt>invalid</tt>, <tt>expired</tt>, <tt>replayed</tt>, <tt>mismatch</tt> or <tt>unknownType</tt> (<xref target="reasons"/>). A successful result <bcp14>MAY</bcp14> include <tt>"expiresAt"</tt>, the end of the proof's validity window as an RFC 3339 timestamp, so that it can be recorded alongside the decision. A successful verification consumes the proof. The Call Authority <bcp14>MUST</bcp14>:</t>
        <ul spacing="normal">
          <li>
            <t>treat the Action Digest supplied by the Tool Server as authoritative;</t>
          </li>
          <li>
            <t>return <tt>mismatch</tt> if the proof does not commit to that Action Digest;</t>
          </li>
          <li>
            <t>return <tt>expired</tt> if the proof is outside its validity window;</t>
          </li>
          <li>
            <t>accept a given proof at most once and return <tt>replayed</tt> for later attempts; and</t>
          </li>
          <li>
            <t>record each issue and verify decision, including caller identity, server, tool, Action Digest, result, approver if any, and time.</t>
          </li>
        </ul>
      </section>
      <section anchor="policy-integrity">
        <name>Policy Integrity</name>
        <t>Policy <bcp14>SHOULD</bcp14> be signed. The verification key for Policy <bcp14>SHOULD</bcp14> be fixed when the Call Authority is installed and <bcp14>SHOULD NOT</bcp14> be delivered together with the Policy. The Call Authority <bcp14>SHOULD</bcp14> reject a Policy whose version is lower than the currently loaded one, and <bcp14>MUST</bcp14> deny all issuance when no valid Policy is loaded.</t>
      </section>
    </section>
    <section anchor="tool-server">
      <name>Tool Server Enforcement</name>
      <t>A Tool Server that requires Call Proofs <bcp14>MUST</bcp14>, for each covered invocation:</t>
      <ol spacing="normal" type="1"><li>
          <t>compute the Action Digest from the invocation as received;</t>
        </li>
        <li>
          <t>reject the invocation if no Call Proof is present;</t>
        </li>
        <li>
          <t>otherwise call verify and reject the invocation unless the result is valid;</t>
        </li>
        <li>
          <t>reject the invocation if the Call Authority cannot be reached (fail closed); and</t>
        </li>
        <li>
          <t>perform the verification immediately before the invocation starts executing, and not when the invocation is received.</t>
        </li>
      </ol>
      <t>A Call Proof authorizes the start of one invocation. It does not bound how long the invocation runs. If execution is deferred after receipt, for example because the invocation is queued, retried or run as an asynchronous task, verification takes place when execution starts. A deferred invocation is therefore evaluated against the Policy in force at that time, and a proof that expired while waiting fails verification and has to be reissued.</t>
      <section anchor="reasons">
        <name>Rejection Reasons</name>
        <t>Rejection reasons fall into two classes that have different owners and different handling. A policy outcome means that the checks required to authorize the invocation were completed and at least one of them did not pass. An availability outcome means that a required check could not be completed. Implementations <bcp14>MUST NOT</bcp14> report an availability outcome as a policy outcome.</t>
        <table>
          <name>Rejection reasons</name>
          <thead>
            <tr>
              <th align="left">Reason</th>
              <th align="left">Class</th>
              <th align="left">Next step</th>
              <th align="left">Meaning</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">missing</td>
              <td align="left">policy</td>
              <td align="left">reissue</td>
              <td align="left">No proof was presented and no issuance failure was reported</td>
            </tr>
            <tr>
              <td align="left">invalid</td>
              <td align="left">policy</td>
              <td align="left">none</td>
              <td align="left">The proof does not verify</td>
            </tr>
            <tr>
              <td align="left">mismatch</td>
              <td align="left">policy</td>
              <td align="left">none</td>
              <td align="left">The proof commits to a different Action Digest</td>
            </tr>
            <tr>
              <td align="left">replayed</td>
              <td align="left">policy</td>
              <td align="left">none</td>
              <td align="left">The proof was already used</td>
            </tr>
            <tr>
              <td align="left">expired</td>
              <td align="left">policy</td>
              <td align="left">reissue</td>
              <td align="left">The validity check completed and the window has passed</td>
            </tr>
            <tr>
              <td align="left">unknownType</td>
              <td align="left">availability</td>
              <td align="left">none</td>
              <td align="left">The Evidence Type is not supported</td>
            </tr>
            <tr>
              <td align="left">authorityUnavailable</td>
              <td align="left">availability</td>
              <td align="left">retry</td>
              <td align="left">The Tool Server could not reach the Call Authority</td>
            </tr>
            <tr>
              <td align="left">issuanceUnavailable</td>
              <td align="left">availability</td>
              <td align="left">reissue</td>
              <td align="left">The Agent reported that it could not obtain a proof</td>
            </tr>
          </tbody>
        </table>
        <t>The next step is <tt>none</tt> when no further attempt can succeed, <tt>retry</tt> when verification of the same proof can be attempted again while the proof remains within its validity window, and <tt>reissue</tt> when a new proof has to be obtained. A proof that expired, including while an invocation was deferred, is never retried; it is reissued.</t>
      </section>
      <section anchor="records">
        <name>Recording Evaluation State</name>
        <t>A rejection reason summarizes the decision for the whole invocation. It is not an evaluation state. Records of a decision <bcp14>SHOULD</bcp14> carry, for each check that contributed to it, whether the check was completed and passed, was completed and did not pass, or could not be completed. Relevant checks include the binding of the proof to the Action Digest, its validity window, single use, and the reachability of the Call Authority. These per-check states correspond to the input states described in <xref target="I-D.konda-agentproto-evaluation-state"/> (established-positive, established-negative and not-established). For example, an expired proof is a completed validity check that did not pass, while an unreachable Call Authority leaves the required verification not completed.</t>
        <t>An Agent that could not obtain a proof because the Call Authority was unreachable <bcp14>MAY</bcp14> report this when sending the invocation without a proof. The report is a cause stated by the Agent. It <bcp14>MUST NOT</bcp14> cause the invocation to be accepted; it changes the recorded reason from <tt>missing</tt> to <tt>issuanceUnavailable</tt>. A Tool Server <bcp14>MAY</bcp14> record its own observation of the Call Authority's reachability alongside the report. Neither refutes the other: a successful check by the Tool Server at a later time does not show that the Agent could reach the Call Authority when it attempted issuance, or over its own path.</t>
      </section>
    </section>
    <section anchor="approval">
      <name>Approval-Bound Actions</name>
      <t>Policy <bcp14>MAY</bcp14> mark actions as requiring human approval. For such actions, the Call Authority <bcp14>MUST NOT</bcp14> issue a Call Proof until an approver designated by Policy has approved the specific Action Digest. Evidence type profiles define the approval channel. Profiles <bcp14>SHOULD</bcp14> present a human-readable summary of the action to the approver and <bcp14>SHOULD</bcp14> bind the approval to the Action Digest. Approval channels that do not require the Call Authority to accept inbound network connections are <bcp14>RECOMMENDED</bcp14>.</t>
    </section>
    <section anchor="profiles">
      <name>Evidence Type Profiles</name>
      <t>An evidence type profile <bcp14>MUST</bcp14> specify:</t>
      <ul spacing="normal">
        <li>
          <t>the Evidence Type identifier, using a namespaced form under a domain controlled by the profile author (for example <tt>com.example/token</tt>);</t>
        </li>
        <li>
          <t>the format of the proof value;</t>
        </li>
        <li>
          <t>how the proof commits to the Action Digest;</t>
        </li>
        <li>
          <t>the validity window, which <bcp14>SHOULD</bcp14> be 30 seconds or less, and how the Call Authority determines the expiry it reports on successful verification;</t>
        </li>
        <li>
          <t>how keys are provisioned to and protected by the Call Authority; and</t>
        </li>
        <li>
          <t>how single use is enforced.</t>
        </li>
      </ul>
      <t>Profiles <bcp14>SHOULD</bcp14> keep proof values compact. Local channels such as stdio carry one message per line, and per-call evidence such as certificate chains adds overhead to every invocation.</t>
      <t>Anticipated profiles include (informative):</t>
      <ul spacing="normal">
        <li>
          <t>a JWS envelope issued by the Call Authority, aligned with <xref target="MCP-SEP-2787"/>;</t>
        </li>
        <li>
          <t>a passkey approval for approval-bound actions, aligned with <xref target="MCP-SEP-2672"/>; and</t>
        </li>
        <li>
          <t>a compact one-time authentication code derived inside a hardware root of trust, in the lineage of HOTP <xref target="RFC4226"/> and TOTP <xref target="RFC6238"/>, to be specified separately.</t>
        </li>
      </ul>
    </section>
    <section anchor="mcp-binding">
      <name>Binding for the MCP stdio Transport</name>
      <section anchor="capability-advertisement">
        <name>Capability Advertisement</name>
        <t>An MCP server that supports this mechanism advertises the extension <tt>io.modelcontextprotocol/call-proof</tt> in its capabilities:</t>
        <sourcecode type="json"><![CDATA[
{ "capabilities": { "tools": {},
    "extensions": { "io.modelcontextprotocol/call-proof": {
        "required": true,
        "methods": ["tools/call"],
        "authority": "unix:///run/mcp-call-authority.sock" } } } }
]]></sourcecode>
        <t><tt>required</tt> set to true selects enforcement as described in <xref target="tool-server"/>; false selects audit mode. <tt>methods</tt> lists covered request methods; <tt>tools/call</tt> <bcp14>MUST</bcp14> be included. <tt>authority</tt> optionally names the Call Authority endpoint.</t>
        <t>The extension identifier is shown with the MCP official prefix for illustration. Until the extension is accepted by the MCP project, implementations <bcp14>SHOULD</bcp14> use an identifier under their own vendor prefix.</t>
      </section>
      <section anchor="carrying-the-proof">
        <name>Carrying the Proof</name>
        <t>The Call Proof is carried in the request <tt>_meta</tt> object:</t>
        <sourcecode type="json"><![CDATA[
{ "jsonrpc": "2.0", "id": 7, "method": "tools/call",
  "params": { "name": "read_file",
              "arguments": { "path": "repo/src/main.ts" },
              "_meta": { "io.modelcontextprotocol/callProof": {
                  "type": "com.example/token",
                  "value": "<opaque>" } } } }
]]></sourcecode>
        <t>For MCP, the Action Digest method is the JSON-RPC method, the name is <tt>params.name</tt>, and the arguments are <tt>params.arguments</tt>.</t>
        <t>A client that could not obtain a proof because the Call Authority was unreachable <bcp14>MAY</bcp14> send the invocation with the following member in place of a proof:</t>
        <sourcecode type="json"><![CDATA[
"_meta": { "io.modelcontextprotocol/callProofIssuance": {
             "status": "authorityUnavailable" } }
]]></sourcecode>
      </section>
      <section anchor="rejection">
        <name>Rejection</name>
        <t>A rejected invocation returns a JSON-RPC error whose <tt>data</tt> carries the reason, its class and the next step, as listed in <xref target="reasons"/>:</t>
        <sourcecode type="json"><![CDATA[
{ "jsonrpc": "2.0", "id": 7,
  "error": { "code": -32021, "message": "Call proof rejected",
             "data": { "reason": "authorityUnavailable",
                       "class": "availability",
                       "nextStep": "retry" } } }
]]></sourcecode>
        <t>The numeric error code is a placeholder pending coordination with the MCP project. Verification <bcp14>MAY</bcp14> be implemented as a server-side validator in the MCP interceptor model <xref target="MCP-SEP-1763"/>.</t>
      </section>
    </section>
    <section anchor="relationship-to-other-work">
      <name>Relationship to Other Work</name>
      <t>AIMS <xref target="I-D.ietf-wimse-aims"/> addresses agent identity, credential provisioning, authentication and delegation across network boundaries. This document addresses the local invocation boundary that AIMS does not cover, and reuses workload identity for caller identification at the Call Authority.</t>
      <t>DPoP <xref target="RFC9449"/> and HTTP Message Signatures <xref target="RFC9421"/> bind proofs to HTTP requests. Local inter-process channels have no HTTP request to bind to, and DPoP does not cover the request content. The Action Digest plays the role of the bound request representation.</t>
      <t>Proposals in the MCP community define argument-bound attestation for audit <xref target="MCP-SEP-2787"/> and per-call human approval <xref target="MCP-SEP-2672"/>. This document adds the enforcement obligation on the tool server and the requirement that issuing keys reside outside the agent process, and treats those formats as candidate evidence types.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The unit of protection is a single tool invocation. Agents decompose a user request into separate invocations, and each one is authorized and verified independently, so a request that combines permitted and forbidden steps is stopped at the forbidden step. Most tool servers expose one operation per tool (for example, separate tools to read, write or send), which lets Policy decide by tool name and arguments. General-purpose tools, such as shell execution, arbitrary database queries or code execution, and workflow tools that perform several effects in one invocation, cannot be separated this way. Policy for such tools needs to evaluate their arguments, and deployments should treat them as high risk, subject them to approval (<xref target="approval"/>), or not grant them to roles that do not need them.</t>
      <t>When a later invocation in a sequence is denied, earlier invocations have already run. Data they returned remains available to the Agent, although the denied invocation cannot carry it further. This document does not provide authorization of a multi-step plan as a whole.</t>
      <t>The protections of this mechanism depend on the isolation assumption in <xref target="isolation"/>. Deployments that cannot separate the Agent from the Tool Server and Call Authority obtain protection against injected instructions and proof reuse, but not against extraction of Tool Server credentials by code running in the Agent process.</t>
      <t>The Call Authority is a high-value component. Its compromise is equivalent to Policy compromise. Hardware-protected keys, signed Policy with rollback protection, and fail-closed behavior limit the impact of partial failures but not of full compromise.</t>
      <t>JCS removes representation differences (member order, whitespace, number and string encoding) but not semantic equivalence. Two semantically equal argument sets can produce different digests; Policy must be written against arguments as transmitted or must evaluate semantic forms explicitly.</t>
      <t>Short validity windows and single-use enforcement limit replay. Clock skew between the Call Authority's issue and verify operations is not a concern because both run in the same component.</t>
      <t>Fail-closed behavior makes the Call Authority a dependency for every covered invocation. Its availability should be monitored like any other enforcement component.</t>
      <t>Approval channels can be targeted by social engineering. Summaries shown to approvers should be generated by the Call Authority from the invocation, not supplied by the Agent.</t>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>The Call Authority records caller identity, tool names, Action Digests and approver identities. The audit log can reveal user activity and should be protected and retained according to applicable policy. Action Digests do not reveal argument values directly, but low-entropy arguments can be recovered by guessing; logs should be protected accordingly.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions. Evidence Types use namespaced identifiers under domains controlled by profile authors.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC8785">
          <front>
            <title>JSON Canonicalization Scheme (JCS)</title>
            <author fullname="A. Rundgren" initials="A." surname="Rundgren"/>
            <author fullname="B. Jordan" initials="B." surname="Jordan"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <date month="June" year="2020"/>
            <abstract>
              <t>Cryptographic operations like hashing and signing need the data to be expressed in an invariant format so that the operations are reliably repeatable. One way to address this is to create a canonical representation of the data. Canonicalization also permits data to be exchanged in its original form on the "wire" while cryptographic operations performed on the canonicalized counterpart of the data in the producer and consumer endpoints generate consistent results.</t>
              <t>This document describes the JSON Canonicalization Scheme (JCS). This specification defines how to create a canonical representation of JSON data by building on the strict serialization methods for JSON primitives defined by ECMAScript, constraining JSON data to the Internet JSON (I-JSON) subset, and by using deterministic property sorting.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8785"/>
          <seriesInfo name="DOI" value="10.17487/RFC8785"/>
        </reference>
        <reference anchor="RFC4648">
          <front>
            <title>The Base16, Base32, and Base64 Data Encodings</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <date month="October" year="2006"/>
            <abstract>
              <t>This document describes the commonly used base 64, base 32, and base 16 encoding schemes. It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters in encoded data, use of different encoding alphabets, and canonical encodings. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4648"/>
          <seriesInfo name="DOI" value="10.17487/RFC4648"/>
        </reference>
        <reference anchor="RFC3339">
          <front>
            <title>Date and Time on the Internet: Timestamps</title>
            <author fullname="G. Klyne" initials="G." surname="Klyne"/>
            <author fullname="C. Newman" initials="C." surname="Newman"/>
            <date month="July" year="2002"/>
            <abstract>
              <t>This document defines a date and time format for use in Internet protocols that is a profile of the ISO 8601 standard for representation of dates and times using the Gregorian calendar.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3339"/>
          <seriesInfo name="DOI" value="10.17487/RFC3339"/>
        </reference>
        <reference anchor="RFC6234">
          <front>
            <title>US Secure Hash Algorithms (SHA and SHA-based HMAC and HKDF)</title>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd"/>
            <author fullname="T. Hansen" initials="T." surname="Hansen"/>
            <date month="May" year="2011"/>
            <abstract>
              <t>Federal Information Processing Standard, FIPS</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6234"/>
          <seriesInfo name="DOI" value="10.17487/RFC6234"/>
        </reference>
        <reference anchor="RFC8259">
          <front>
            <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
            <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
            <date month="December" year="2017"/>
            <abstract>
              <t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data.</t>
              <t>This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="90"/>
          <seriesInfo name="RFC" value="8259"/>
          <seriesInfo name="DOI" value="10.17487/RFC8259"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="I-D.ietf-wimse-aims">
          <front>
            <title>AI Identity Management System</title>
            <author fullname="Pieter Kasselman" initials="P." surname="Kasselman">
              <organization>Defakto Security</organization>
            </author>
            <author fullname="Jeff Lombardo" initials="J." surname="Lombardo">
              <organization>AWS</organization>
            </author>
            <author fullname="Yaroslav Rosomakho" initials="Y." surname="Rosomakho">
              <organization>Zscaler</organization>
            </author>
            <author fullname="Brian Campbell" initials="B." surname="Campbell">
              <organization>Ping Identity</organization>
            </author>
            <author fullname="Nick Steele" initials="N." surname="Steele">
              <organization>OpenAI</organization>
            </author>
            <author fullname="Aaron Parecki" initials="A." surname="Parecki">
              <organization>Okta</organization>
            </author>
            <date day="15" month="September" year="2026"/>
            <abstract>
              <t>   This document proposes best practices for authentication and
   authorization of AI agent interactions.  It leverages existing
   standards such as the Workload Identity in Multi-System Environments
   (WIMSE) architecture and OAuth 2.0 family of specifications.  Rather
   than defining new protocols, this document describes how existing and
   widely deployed standards can be applied or extended to establish
   agent authentication and authorization.  By doing so, it aims to
   provide a framework within which to use existing standards, identify
   gaps and guide future standardization efforts for agent
   authentication and authorization.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-wimse-aims-00"/>
        </reference>
        <reference anchor="RFC4226">
          <front>
            <title>HOTP: An HMAC-Based One-Time Password Algorithm</title>
            <author fullname="D. M'Raihi" initials="D." surname="M'Raihi"/>
            <author fullname="M. Bellare" initials="M." surname="Bellare"/>
            <author fullname="F. Hoornaert" initials="F." surname="Hoornaert"/>
            <author fullname="D. Naccache" initials="D." surname="Naccache"/>
            <author fullname="O. Ranen" initials="O." surname="Ranen"/>
            <date month="December" year="2005"/>
            <abstract>
              <t>This document describes an algorithm to generate one-time password values, based on Hashed Message Authentication Code (HMAC). A security analysis of the algorithm is presented, and important parameters related to the secure deployment of the algorithm are discussed. The proposed algorithm can be used across a wide range of network applications ranging from remote Virtual Private Network (VPN) access, Wi-Fi network logon to transaction-oriented Web applications.</t>
              <t>This work is a joint effort by the OATH (Open AuTHentication) membership to specify an algorithm that can be freely distributed to the technical community. The authors believe that a common and shared algorithm will facilitate adoption of two-factor authentication on the Internet by enabling interoperability across commercial and open-source implementations. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4226"/>
          <seriesInfo name="DOI" value="10.17487/RFC4226"/>
        </reference>
        <reference anchor="RFC6238">
          <front>
            <title>TOTP: Time-Based One-Time Password Algorithm</title>
            <author fullname="D. M'Raihi" initials="D." surname="M'Raihi"/>
            <author fullname="S. Machani" initials="S." surname="Machani"/>
            <author fullname="M. Pei" initials="M." surname="Pei"/>
            <author fullname="J. Rydell" initials="J." surname="Rydell"/>
            <date month="May" year="2011"/>
            <abstract>
              <t>This document describes an extension of the One-Time Password (OTP) algorithm, namely the HMAC-based One-Time Password (HOTP) algorithm, as defined in RFC 4226, to support the time-based moving factor. The HOTP algorithm specifies an event-based OTP algorithm, where the moving factor is an event counter. The present work bases the moving factor on a time value. A time-based variant of the OTP algorithm provides short-lived OTP values, which are desirable for enhanced security.</t>
              <t>The proposed algorithm can be used across a wide range of network applications, from remote Virtual Private Network (VPN) access and Wi-Fi network logon to transaction-oriented Web applications. The authors believe that a common and shared algorithm will facilitate adoption of two-factor authentication on the Internet by enabling interoperability across commercial and open-source implementations. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6238"/>
          <seriesInfo name="DOI" value="10.17487/RFC6238"/>
        </reference>
        <reference anchor="RFC9449">
          <front>
            <title>OAuth 2.0 Demonstrating Proof of Possession (DPoP)</title>
            <author fullname="D. Fett" initials="D." surname="Fett"/>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="D. Waite" initials="D." surname="Waite"/>
            <date month="September" year="2023"/>
            <abstract>
              <t>This document describes a mechanism for sender-constraining OAuth 2.0 tokens via a proof-of-possession mechanism on the application level. This mechanism allows for the detection of replay attacks with access and refresh tokens.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9449"/>
          <seriesInfo name="DOI" value="10.17487/RFC9449"/>
        </reference>
        <reference anchor="RFC9421">
          <front>
            <title>HTTP Message Signatures</title>
            <author fullname="A. Backman" initials="A." role="editor" surname="Backman"/>
            <author fullname="J. Richer" initials="J." role="editor" surname="Richer"/>
            <author fullname="M. Sporny" initials="M." surname="Sporny"/>
            <date month="February" year="2024"/>
            <abstract>
              <t>This document describes a mechanism for creating, encoding, and verifying digital signatures or message authentication codes over components of an HTTP message. This mechanism supports use cases where the full HTTP message may not be known to the signer and where the message may be transformed (e.g., by intermediaries) before reaching the verifier. This document also describes a means for requesting that a signature be applied to a subsequent HTTP message in an ongoing HTTP exchange.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9421"/>
          <seriesInfo name="DOI" value="10.17487/RFC9421"/>
        </reference>
        <reference anchor="RFC7942">
          <front>
            <title>Improving Awareness of Running Code: The Implementation Status Section</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <date month="July" year="2016"/>
            <abstract>
              <t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section. This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t>
              <t>This process is not mandatory. Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications. This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="205"/>
          <seriesInfo name="RFC" value="7942"/>
          <seriesInfo name="DOI" value="10.17487/RFC7942"/>
        </reference>
        <reference anchor="MCP" target="https://modelcontextprotocol.io/specification/2026-07-28">
          <front>
            <title>Model Context Protocol Specification, version 2026-07-28</title>
            <author>
              <organization>Model Context Protocol</organization>
            </author>
            <date year="2026" month="July" day="28"/>
          </front>
        </reference>
        <reference anchor="MCP-AUTHZ" target="https://modelcontextprotocol.io/specification/2026-07-28/basic/authorization">
          <front>
            <title>Model Context Protocol: Authorization</title>
            <author>
              <organization>Model Context Protocol</organization>
            </author>
            <date year="2026" month="July" day="28"/>
          </front>
        </reference>
        <reference anchor="MCP-LOCAL" target="https://modelcontextprotocol.io/docs/draft/tutorials/security/local-server-security">
          <front>
            <title>Model Context Protocol: Local Server Security</title>
            <author>
              <organization>Model Context Protocol</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="MCP-SEP-2787" target="https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2787">
          <front>
            <title>SEP-2787: Tool Call Attestation</title>
            <author>
              <organization>Model Context Protocol contributors</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="MCP-SEP-2672" target="https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2672">
          <front>
            <title>SEP-2672: Per-Call Passkey Verified Approval for MCP Tool Calls</title>
            <author>
              <organization>Model Context Protocol contributors</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="MCP-SEP-1763" target="https://github.com/modelcontextprotocol/modelcontextprotocol/issues/1763">
          <front>
            <title>SEP-1763: Interceptors for Model Context Protocol</title>
            <author>
              <organization>Model Context Protocol contributors</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="I-D.konda-agentproto-evaluation-state">
          <front>
            <title>Preserving Evaluation State in Agent Protocol Decisions</title>
            <author fullname="Girish Konda" initials="G." surname="Konda">
         </author>
            <date day="10" month="October" year="2026"/>
            <abstract>
              <t>   Agent protocols often require a participant to establish a decision-
   time input before it acts: issuer standing, key availability,
   delegated authority, policy profile availability, consumption state,
   revocation status, or the outcome of a downstream operation.  A
   participant that establishes an input and receives a negative answer
   has learned a different fact from a participant that cannot establish
   the input at all.  Collapsing those facts into one denial or failure
   value changes retry behavior, alert routing, audit interpretation,
   incident ownership, and post-incident reconstruction.

   This document specifies requirements for preserving evaluation state
   across agent protocol boundaries: the value of an input, whether that
   value was established at decision time, the freshness of the source
   used to establish it, and whether the resulting policy decision was
   actually evaluated.  The requirements are stated independently of
   encoding, so that policy, authorization, revocation, routing, and
   audit documents can satisfy them in their own formats.  A subsequent
   revision will specify concrete representations.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-konda-agentproto-evaluation-state-01"/>
        </reference>
        <reference anchor="SPIFFE" target="https://spiffe.io/docs/latest/spiffe-about/overview/">
          <front>
            <title>Secure Production Identity Framework for Everyone (SPIFFE)</title>
            <author>
              <organization>Cloud Native Computing Foundation</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
      </references>
    </references>
    

<section anchor="example-flow">
      <name>Example Flow</name>
      <t>A code-review agent is permitted by Policy to read files under <tt>repo/</tt> and to post review comments. Content in a pull request instructs it to read <tt>~/.aws/credentials</tt>.</t>
      <ol spacing="normal" type="1"><li>
          <t>The Agent requests issue for <tt>read_file</tt> with path <tt>~/.aws/credentials</tt>.</t>
        </li>
        <li>
          <t>The Call Authority identifies the caller as the code-review agent, evaluates Policy, denies, and records the attempt.</t>
        </li>
        <li>
          <t>If the Agent sends the invocation anyway, the Tool Server finds no Call Proof and rejects it.</t>
        </li>
        <li>
          <t>If the Agent replays a proof issued earlier for <tt>repo/README.md</tt>, the Tool Server computes a different Action Digest and the Call Authority returns <tt>mismatch</tt>.</t>
        </li>
      </ol>
    </section>
    <section anchor="implementation-status">
      <name>Implementation Status</name>
      <t>This section records the status of known implementations per <xref target="RFC7942"/> and is to be removed before publication.</t>
      <t>A reference implementation consisting of a Call Authority daemon, MCP server-side enforcement, client-side issuance and two evidence type profiles is in development. Repository location: TBD.</t>
    </section>
    <section anchor="open-issues">
      <name>Open Issues</name>
      <ul spacing="normal">
        <li>
          <t>Whether the Call Authority interface belongs in this document or a companion document.</t>
        </li>
        <li>
          <t>Coverage of additional MCP methods such as <tt>resources/read</tt> and <tt>prompts/get</tt>.</t>
        </li>
        <li>
          <t>Error code coordination with the MCP project.</t>
        </li>
        <li>
          <t>Alignment of the Action Digest definition with MCP community proposals.</t>
        </li>
        <li>
          <t>Whether an IANA registry for Evidence Types is warranted.</t>
        </li>
        <li>
          <t>Plan-level authorization: evaluating a declared sequence of invocations before the first one runs, and its relation to intent declaration proposals in the OAuth working group.</t>
        </li>
        <li>
          <t>Guidance for tools that combine several effects in one invocation.</t>
        </li>
        <li>
          <t>Representation of per-check evaluation states in records, aligned with <xref target="I-D.konda-agentproto-evaluation-state"/>.</t>
        </li>
      </ul>
    </section>
    <section numbered="false" anchor="document-history">
      <name>Document History</name>
      <t>-01</t>
      <ul spacing="normal">
        <li>
          <t>Rejection reasons split into policy and availability classes, with a next step of none, retry or reissue (<xref target="reasons"/>).</t>
        </li>
        <li>
          <t>Records carry per-check evaluation states rather than relying on the rejection reason alone (<xref target="records"/>).</t>
        </li>
        <li>
          <t>Agent report of issuance failure due to an unreachable Call Authority, recorded as a cause stated by the Agent (<tt>issuanceUnavailable</tt>).</t>
        </li>
        <li>
          <t>Verification required immediately before execution starts; deferred invocations are verified when they start.</t>
        </li>
        <li>
          <t>Optional expiry in successful verify responses for records.</t>
        </li>
        <li>
          <t>Area corrected to Applications and Real-Time.</t>
        </li>
      </ul>
      <t>-00</t>
      <ul spacing="normal">
        <li>
          <t>Initial version.</t>
        </li>
      </ul>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors thank Girish Konda for review comments on failure handling and decision horizons.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA7V963obR5LlfzxFDvzDpBoALUqW3JTbMzQlWeyWLK5Ijz7v
fDONApAkq1mowlQWSGEo9rPss+yTbZyIyEsVipJ6R6PdaQOFyltkZMSJW3I8
Hg+avCnsgRme2Hp8lBWFOamr6tycV7V5Xc2zwpxVVWGOy2v60uRVaWYbc3hs
Di9s2bjhIJvNantN7ZOXYzfDATWyF1W9OTCuWQwW1bzMljTcos7Om3Fh7fgm
Xzo7LtB63FDrMX0oxiu0Hn/3cODWs2XuHA3cbFbU8PjF2ctBuV7ObH0wWFDn
B4N5VTpburU7ME29tgOazaNBVtuMZnW4WhW5TNyZrFyYd5bGOcuXdji4qeqr
i7par+i9X22Dr+Y9/U9eXphf8Hw4uLIberw4GJgxFp1h0fiMd4sqW5h8QU/y
ZoOHmL3JA6Hw6E21sEQPmrz90IAkTTWvCvzCCzT0/7N1c1nV+X9Jm2tbrmlJ
xviJvfcjHetINIJ5sy6a3JxuXGOX5kV5nddVucR+mJ33x29OX+wOqQeh17Cz
ImOWWV7Qc6b7v+S2OZ9U9QV+yOr5Jf1w2TQrd7C3h/fwKL+2E//aHh7szerq
xtk97mFvOBjIEkAk6sWY83VRyC4P/5zZGc33tbVD/ikvHZ5O4hPqNCt19fTT
6aktT5uqtMRx84m8Mq/WZQMOGv6lol0d0R6u1jPaVgMGwxtW1/S3GXHUvzhw
A/qYzKvlsGdWR5dZeTF+tS7N71WVTuxoEp981YnNLzdV9fmJvcnLXzZr85d8
mc7qzSQ++aqzWl5c5cvPz+p9Vf1eEQed2hax3k/ik686rZuNs1vEGpRVvaT+
r/l0vHt59MPTH77Xj4+fPP5BPz569OiP+vHJ/qPH/t397+npIC/P006Ox8+Z
sVUEZfS/vsP9/SexF9/3Hx8//mP4uP9QPz6lz/j45ujkgJfhBWr/2TenKzvP
z1Umjcy1rSHczP53+0/G3z0d7/8gxGiy+sI2ByacRvQ2l85W2tckr/Zc2t1e
7IU7CQeT/42xTfdOTIZliWpa3dDCxoe/nb3631+yvANzmMqzr7OWvVnm8vle
W1J+1fW9fnt0+PrL1id67tTWtHP0n/m6JqH8j62TtKDbYw2416wbWlJWuD2n
Xe2JKnQ8wNg//f9aLlZ2+uJkvP/0h6ftxYWnicI+bBrrmk9s20XeXK5nOI69
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

-->

</rfc>
