Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 22 additions & 2 deletions index.bs
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,9 @@ An <dfn>annotations</dfn> is a [=struct=] with the following [=struct/items=]:

: <dfn>untrusted content hint</dfn>
:: a [=boolean=], initially false.

: <dfn>consequential hint</dfn>
:: a [=boolean=], initially false.
</dl>


Expand Down Expand Up @@ -463,6 +466,9 @@ The <dfn method for=ModelContext>registerTool(<var>tool</var>, <var>options</var
: [=annotations/untrusted content hint=]
:: |tool|'s {{ModelContextTool/annotations}}'s {{ToolAnnotations/untrustedContentHint}}

: [=annotations/consequential hint=]
:: |tool|'s {{ModelContextTool/annotations}}'s {{ToolAnnotations/consequentialHint}}

: [=tool definition/exposed origins=]
:: |exposed origins|

Expand Down Expand Up @@ -574,9 +580,11 @@ The <dfn method for=ModelContext>getTools(<var>options</var>)</dfn> method steps
: {{RegisteredTool/annotations}}
:: if |tool definition|'s [=tool definition/annotations=] is not null, a
{{ToolAnnotations}} dictionary whose {{ToolAnnotations/readOnlyHint}} is |tool
definition|'s [=tool definition/annotations=]'s [=annotations/read-only hint=] and
definition|'s [=tool definition/annotations=]'s [=annotations/read-only hint=],
{{ToolAnnotations/untrustedContentHint}} is |tool definition|'s [=tool
definition/annotations=]'s [=annotations/untrusted content hint=].
definition/annotations=]'s [=annotations/untrusted content hint=], and
{{ToolAnnotations/consequentialHint}} is |tool definition|'s [=tool
definition/annotations=]'s [=annotations/consequential hint=].

1. [=list/Append=] |registeredTool| to |tools|.

Expand Down Expand Up @@ -609,6 +617,7 @@ dictionary ModelContextTool {
dictionary ToolAnnotations {
boolean readOnlyHint = false;
boolean untrustedContentHint = false;
boolean consequentialHint = false;
};

callback ToolExecuteCallback = Promise<any> (object input);
Expand Down Expand Up @@ -658,6 +667,9 @@ The {{ToolAnnotations}} dictionary provides optional metadata about a tool:

: <code><var ignore>annotations</var>["{{ToolAnnotations/untrustedContentHint}}"]</code>
:: If true, indicates that the tool's output contains data that is untrusted, from the perspective of the author registering the tool.

: <code><var ignore>annotations</var>["{{ToolAnnotations/consequentialHint}}"]</code>
:: If true, indicates that executing the tool will result in consequential actions that are significant, real-world, or non-reversible, ex: booking a flight, transferring money.
</dl>


Expand Down Expand Up @@ -1299,6 +1311,14 @@ respective private browsing modes are safely exposed to [=agents=] and that thes

**How:** A boolean {{ToolAnnotations/untrustedContentHint}} annotation that acts as a signal to the client that the payload requires heightened security handling, allowing the client to sanitize the payload, use indicators such as spotlighting [[SPOTLIGHTING]] to highlight untrustworthy content to the model, or hide that part of the response entirely.

<h4 id="mitigation-consequential-annotation">Consequential Annotation for Tool Executions</h4>

**What:** Providing agents with a signal that a tool's execution results in significant, real-world, or non-reversible consequences.
Comment thread
beaufortfrancois marked this conversation as resolved.

**Threats addressed:** [[#misrepresentation-of-intent]]

**How:** A boolean {{ToolAnnotations/consequentialHint}} annotation acts as a signal to the client or agent that the tool performs a consequential action, such as booking a flight or transferring money. This way they can selectively enforce mandatory user confirmation prompts before executing high-stakes tools, directly mitigating the risk of accidental or malicious misrepresentation of intent.

<h2 id="accessibility">Accessibility considerations</h2>


Expand Down
Loading