diff --git a/index.bs b/index.bs
index 4274a31..70b527f 100644
--- a/index.bs
+++ b/index.bs
@@ -562,8 +562,12 @@ The getTools(options) method steps
:: |tool definition|'s [=tool definition/description=]
: {{RegisteredTool/inputSchema}}
- :: |tool definition|'s [=tool definition/input schema=] if it is not the empty string;
- otherwise undefined.
+ :: the result of [=parse a JSON string to a JavaScript value=] given |tool
+ definition|'s [=tool definition/input schema=], if |tool definition|'s [=tool
+ definition/input schema=] is not the empty string; otherwise undefined.
+
+ Note: This will never throw an exception, because the string stored in the tool
+ definition is always a valid JSON string.
: {{RegisteredTool/window}}
:: |targetDocument|'s [=relevant global object=]
@@ -713,7 +717,7 @@ dictionary RegisteredTool {
// done, and there's no need to do it again on tool exposure.
DOMString title;
required DOMString description;
- DOMString inputSchema;
+ object inputSchema;
required Window window;
required USVString origin;
ToolAnnotations annotations;
@@ -734,9 +738,9 @@ dictionary RegisteredTool {
tool registration, via {{ModelContextTool/description}}.
: tool["{{RegisteredTool/inputSchema}}"]
- :: A stringified JSON Schema object describing the expected input parameters for the tool
- [[!JSON-SCHEMA]]. It is the string derived from {{ModelContextTool/inputSchema}} during
- registration.
+ :: A JSON Schema object describing the expected input parameters for the tool
+ [[!JSON-SCHEMA]]. It is a deep copy of the schema provided at tool registration, via
+ {{ModelContextTool/inputSchema}}.
: tool["{{RegisteredTool/window}}"]
:: The {{Window}} of the document that registered the tool.