Skip to content
Merged
Changes from 3 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
26 changes: 25 additions & 1 deletion index.bs
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,15 @@ A <dfn>tool definition</dfn> is a [=struct=] with the following [=struct/items=]
:: a [=string=] uniquely identifying a tool registered within a [=model context=]'s [=model
context/tool map=]; it is the same as the [=map/key=] identifying this object.

The [=tool definition/name=] SHOULD:
* Have a [=string/length=] between 1 and 128, inclusive.
* Be considered case-sensitive.
* Only consist of [=ASCII alphanumeric=] [=code points=], U+005F LOW LINE (_), U+002D HYPHEN-MINUS (-), and U+002E FULL STOP (.).

: <dfn>title</dfn>
Comment thread
DavidMulder0 marked this conversation as resolved.
:: A [=string=] representing a human-readable title of the tool to be used in the user interface
to represent the tool.

: <dfn>description</dfn>
:: a [=string=].

Expand Down Expand Up @@ -206,12 +215,18 @@ The <dfn method for=ModelContext>registerTool(<var>tool</var>)</dfn> method step

1. Let |tool name| be |tool|'s {{ModelContextTool/name}}.

1. Let |tool title| be |tool|'s {{ModelContextTool/title}}.

1. If |tool map|[|tool name|] [=map/exists=], then [=exception/throw=] an {{InvalidStateError}}
{{DOMException}}.

1. If either |tool name| or {{ModelContextTool/description}} is the empty string, then
1. If |tool name|, |tool title| or {{ModelContextTool/description}} is an empty string, then
[=exception/throw=] an {{InvalidStateError}} {{DOMException}}.

1. If |tool name|'s [=string/length=] is greater than 128, or if |tool name| contains a
[=code point=] that is not an [=ASCII alphanumeric=], U+005F (_), U+002D (-), or U+002E (.),
then [=exception/throw=] an {{InvalidStateError}}.

1. Let |stringified input schema| be the empty string.

1. If |tool|'s {{ModelContextTool/inputSchema}} [=map/exists=], then set |stringified input schema|
Expand Down Expand Up @@ -240,6 +255,9 @@ The <dfn method for=ModelContext>registerTool(<var>tool</var>)</dfn> method step
: [=tool definition/name=]
:: |tool name|

: [=tool definition/title=]
:: |tool title|

: [=tool definition/description=]
:: |tool|'s {{ModelContextTool/description}}

Expand Down Expand Up @@ -275,6 +293,7 @@ The {{ModelContextTool}} dictionary describes a tool that can be invoked by [=ag
<xmp class="idl">
dictionary ModelContextTool {
required DOMString name;
required DOMString title;
Comment thread
domfarolino marked this conversation as resolved.
Outdated
required DOMString description;
object inputSchema;
required ToolExecuteCallback execute;
Expand All @@ -294,6 +313,11 @@ callback ToolExecuteCallback = Promise<any> (object input, ModelContextClient cl
<p>A unique identifier for the tool. This is used by [=agents=] to reference the tool when making tool calls.
</dd>

<dt><code><var ignore>tool</var>["{{ModelContextTool/title}}"]</code></dt>
<dd>
<p>A label for the tool. This is used by the user agent to reference the tool in the user interface.
Comment thread
domfarolino marked this conversation as resolved.
</dd>

<dt><code><var ignore>tool</var>["{{ModelContextTool/description}}"]</code></dt>
<dd>
<p>A natural language description of the tool's functionality. This helps [=agents=] understand when and how to use the tool.
Expand Down