Skip to content

Commit 2adcc80

Browse files
Add consequentialHint to ToolAnnotations
1 parent 1aece7c commit 2adcc80

1 file changed

Lines changed: 21 additions & 0 deletions

File tree

index.bs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,9 @@ A <dfn>tool definition</dfn> is a [=struct=] with the following [=struct/items=]
178178
: <dfn>untrusted content hint</dfn>
179179
:: a [=boolean=], initially false.
180180

181+
: <dfn>consequential hint</dfn>
182+
:: a [=boolean=], initially false.
183+
181184
: <dfn>exposed origins</dfn>
182185
:: a [=list=] or [=origins=], initially [=list/empty=].
183186
</dl>
@@ -396,6 +399,9 @@ The <dfn method for=ModelContext>registerTool(<var>tool</var>, <var>options</var
396399
1. Let |untrusted content hint| be true if |tool|'s {{ModelContextTool/annotations}} [=map/exists=] and
397400
its {{ToolAnnotations/untrustedContentHint}} is true. Otherwise, let it be false.
398401

402+
1. Let |consequential hint| be true if |tool|'s {{ModelContextTool/annotations}} [=map/exists=] and
403+
its {{ToolAnnotations/consequentialHint}} is true. Otherwise, let it be false.
404+
399405
1. Let |promise| be [=a new promise=] created in [=this=]'s [=relevant realm=].
400406

401407
1. Let |signal| be |options|'s {{ModelContextRegisterToolOptions/signal}}.
@@ -448,6 +454,9 @@ The <dfn method for=ModelContext>registerTool(<var>tool</var>, <var>options</var
448454
: [=tool definition/untrusted content hint=]
449455
:: |untrusted content hint|
450456

457+
: [=tool definition/consequential hint=]
458+
:: |consequential hint|
459+
451460
: [=tool definition/exposed origins=]
452461
:: |exposed origins|
453462

@@ -483,6 +492,7 @@ dictionary ModelContextTool {
483492
dictionary ToolAnnotations {
484493
boolean readOnlyHint = false;
485494
boolean untrustedContentHint = false;
495+
boolean consequentialHint = false;
486496
};
487497

488498
callback ToolExecuteCallback = Promise<any> (object input);
@@ -532,6 +542,9 @@ The {{ToolAnnotations}} dictionary provides optional metadata about a tool:
532542

533543
: <code><var ignore>annotations</var>["{{ToolAnnotations/untrustedContentHint}}"]</code>
534544
:: If true, indicates that the tool's output contains data that is untrusted, from the perspective of the author registering the tool.
545+
546+
: <code><var ignore>annotations</var>["{{ToolAnnotations/consequentialHint}}"]</code>
547+
:: If true, indicates that executing the tool will result in consequential actions, ex: booking a flight, transferring money.
535548
</dl>
536549

537550

@@ -1102,6 +1115,14 @@ respective private browsing modes are safely exposed to [=agents=] and that thes
11021115

11031116
**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.
11041117

1118+
<h4 id="mitigation-consequential-annotation">Consequential Annotation for Tool Executions</h4>
1119+
1120+
**What:** Providing agents with a signal that a tool's execution results in significant, real-world, or non-reversible consequences.
1121+
1122+
**Threats addressed:** [[#misrepresentation-of-intent]]
1123+
1124+
**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.
1125+
11051126
<h2 id="accessibility">Accessibility considerations</h2>
11061127

11071128

0 commit comments

Comments
 (0)