Skip to content

Change RegisteredTool#inputSchema type from DOMString to object - #241

Merged
domfarolino merged 2 commits into
webmachinelearning:mainfrom
beaufortfrancois:inputSchemaObject
Aug 14, 2026
Merged

Change RegisteredTool#inputSchema type from DOMString to object#241
domfarolino merged 2 commits into
webmachinelearning:mainfrom
beaufortfrancois:inputSchemaObject

Conversation

@beaufortfrancois

@beaufortfrancois beaufortfrancois commented Aug 12, 2026

Copy link
Copy Markdown
Collaborator

As discussed in #237 (comment), ModelContextTool#inputSchema was defined as an object during registration, but RegisteredTool#inputSchema returned a stringified JSON schema (DOMString) from getTools().
This change aligns RegisteredTool#inputSchema to be an object (JavaScript object), matching ModelContextTool#inputSchema and the MCP Tool specification.

Hopefully we'll apply the same reasoning to executeTool(myTool, {}) instead of executeTool(myTool, '{}') in #226


Preview | Diff

Comment thread index.bs
Comment thread index.bs
beaufortfrancois added a commit to beaufortfrancois/model-context-tool-inspector that referenced this pull request Aug 13, 2026
Ensure `inputSchema` is serialized to a string when returned as an object from `document.modelContext.getTools()`, aligning with the updated WebMCP specification and Chromium implementation.

References:
- https://chromium-review.googlesource.com/c/chromium/src/+/8248081
- webmachinelearning/webmcp#241
@domfarolino

Copy link
Copy Markdown
Collaborator

Hopefully we'll apply the same reasoning to executeTool(myTool, {}) instead of executeTool(myTool, '{}') in #226

I agree we should do this, but let's do it in a follow-up, since I've landed #226 to agree with the current spec, and I'll now land this PR on top of it.

@domfarolino
domfarolino merged commit 384e110 into webmachinelearning:main Aug 14, 2026
2 checks passed
github-actions Bot added a commit that referenced this pull request Aug 14, 2026
…#241)

SHA: 384e110
Reason: push, by domfarolino

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
@beaufortfrancois
beaufortfrancois deleted the inputSchemaObject branch August 20, 2026 07:51
beckysiegel pushed a commit to chromium/chromium that referenced this pull request Aug 20, 2026
This CL updates the WebIDL definition for RegisteredTool.inputSchema
from DOMString to object to align with the WebMCP specification:
webmachinelearning/webmcp#241

In Blink, JSONStringToScriptObject() is used in
ModelContext::OnGetScriptToolsCompleted() to parse the mojo string
into a ScriptObject when constructing the RegisteredTool results.

Web platform tests in external/wpt/webmcp/imperative/ are updated to
expect inputSchema as a JavaScript object rather than a serialized
JSON string.

Bug: 489045948
Change-Id: I7a28b36d725c85e24726708aecee4cd9f3cbb476
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/8248081
Reviewed-by: Dominic Farolino <dom@chromium.org>
Commit-Queue: Fr <beaufort.francois@gmail.com>
Cr-Commit-Position: refs/heads/main@{#1682945}
chromium-wpt-export-bot pushed a commit to web-platform-tests/wpt that referenced this pull request Aug 20, 2026
This CL updates the WebIDL definition for RegisteredTool.inputSchema
from DOMString to object to align with the WebMCP specification:
webmachinelearning/webmcp#241

In Blink, JSONStringToScriptObject() is used in
ModelContext::OnGetScriptToolsCompleted() to parse the mojo string
into a ScriptObject when constructing the RegisteredTool results.

Web platform tests in external/wpt/webmcp/imperative/ are updated to
expect inputSchema as a JavaScript object rather than a serialized
JSON string.

Bug: 489045948
Change-Id: I7a28b36d725c85e24726708aecee4cd9f3cbb476
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/8248081
Reviewed-by: Dominic Farolino <dom@chromium.org>
Commit-Queue: Fr <beaufort.francois@gmail.com>
Cr-Commit-Position: refs/heads/main@{#1682945}
chromium-wpt-export-bot pushed a commit to web-platform-tests/wpt that referenced this pull request Aug 20, 2026
This CL updates the WebIDL definition for RegisteredTool.inputSchema
from DOMString to object to align with the WebMCP specification:
webmachinelearning/webmcp#241

In Blink, JSONStringToScriptObject() is used in
ModelContext::OnGetScriptToolsCompleted() to parse the mojo string
into a ScriptObject when constructing the RegisteredTool results.

Web platform tests in external/wpt/webmcp/imperative/ are updated to
expect inputSchema as a JavaScript object rather than a serialized
JSON string.

Bug: 489045948
Change-Id: I7a28b36d725c85e24726708aecee4cd9f3cbb476
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/8248081
Reviewed-by: Dominic Farolino <dom@chromium.org>
Commit-Queue: Fr <beaufort.francois@gmail.com>
Cr-Commit-Position: refs/heads/main@{#1682945}
brave-builds pushed a commit to brave/chromium that referenced this pull request Aug 21, 2026
This reverts commit ec5ace9.

Reason for revert: A packaging update failure with the "WebMCP - Model Context Tool Inspector" extension is currently blocking Chrome Canary users from interacting with WebMCP tools. Reverting this change temporarily to unblock users during my upcoming OOO; the CL will be relanded once the extension update is published.

Original change's description:
> [WebMCP] Expose RegisteredTool.inputSchema as an object
>
> This CL updates the WebIDL definition for RegisteredTool.inputSchema
> from DOMString to object to align with the WebMCP specification:
> webmachinelearning/webmcp#241
>
> In Blink, JSONStringToScriptObject() is used in
> ModelContext::OnGetScriptToolsCompleted() to parse the mojo string
> into a ScriptObject when constructing the RegisteredTool results.
>
> Web platform tests in external/wpt/webmcp/imperative/ are updated to
> expect inputSchema as a JavaScript object rather than a serialized
> JSON string.
>
> Bug: 489045948
> Change-Id: I7a28b36d725c85e24726708aecee4cd9f3cbb476
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/8248081
> Reviewed-by: Dominic Farolino <dom@chromium.org>
> Commit-Queue: Fr <beaufort.francois@gmail.com>
> Cr-Commit-Position: refs/heads/main@{#1682945}

Bug: 489045948
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Change-Id: Id3fbbf9e22d902cc9341bd14fae78927582e1cfe
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/8276309
Reviewed-by: Dominic Farolino <dom@chromium.org>
Commit-Queue: Fr <beaufort.francois@gmail.com>
Cr-Commit-Position: refs/heads/main@{#1683806}
chromium-wpt-export-bot pushed a commit to web-platform-tests/wpt that referenced this pull request Aug 21, 2026
This reverts commit ec5ace9a94e9b4610a8f0ed1b9548ced902c6315.

Reason for revert: A packaging update failure with the "WebMCP - Model Context Tool Inspector" extension is currently blocking Chrome Canary users from interacting with WebMCP tools. Reverting this change temporarily to unblock users during my upcoming OOO; the CL will be relanded once the extension update is published.

Original change's description:
> [WebMCP] Expose RegisteredTool.inputSchema as an object
>
> This CL updates the WebIDL definition for RegisteredTool.inputSchema
> from DOMString to object to align with the WebMCP specification:
> webmachinelearning/webmcp#241
>
> In Blink, JSONStringToScriptObject() is used in
> ModelContext::OnGetScriptToolsCompleted() to parse the mojo string
> into a ScriptObject when constructing the RegisteredTool results.
>
> Web platform tests in external/wpt/webmcp/imperative/ are updated to
> expect inputSchema as a JavaScript object rather than a serialized
> JSON string.
>
> Bug: 489045948
> Change-Id: I7a28b36d725c85e24726708aecee4cd9f3cbb476
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/8248081
> Reviewed-by: Dominic Farolino <dom@chromium.org>
> Commit-Queue: Fr <beaufort.francois@gmail.com>
> Cr-Commit-Position: refs/heads/main@{#1682945}

Bug: 489045948
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Change-Id: Id3fbbf9e22d902cc9341bd14fae78927582e1cfe
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/8276309
Reviewed-by: Dominic Farolino <dom@chromium.org>
Commit-Queue: Fr <beaufort.francois@gmail.com>
Cr-Commit-Position: refs/heads/main@{#1683806}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants