Scan at scalePages with broken WebMCP tools
Pages with broken WebMCP tools
A per-URL report: one row per page that matches, over the pages a crawl reached.
What this report returns
WebMCP lets a page register tools that in-browser agents can call.
A row appears here when any of these is wrong, worst first:
- Tool Missing NameA tool (declarative form or imperative
registerTool) has no name, so agents have nothing to call. AregisterToolcall without one is rejected outright under the W3C draft; the declarative form's rules aren't written yet, so this is reported as a readiness fault rather than a specification violation.Fix Give every tool a name (the declarative toolname attribute, orregisterTool's name field). - Invalid Tool NameA tool name is outside what the W3C draft allows for
registerTool(1-128 characters, only A-Z a-z 0-9 _ - .), so it is rejected there; the declarative form has no published naming rules, so this is a readiness fault rather than a specification violation.Fix Rename it within those characters, e.g.search_flights. - Tool Missing DescriptionA declarative form tool has no tooldescription, which Chrome's declarative API expects (the W3C draft no longer specifies the declarative form), so an agent can't know what the tool does.Fix Add a tooldescription attribute saying what the tool does and when to use it.
- Imperative Missing DescriptionA
registerToolcall has no (or an empty) description, which is required, so agents can't tell what the tool does.Fix Pass a description saying what it does and when to call it. - Imperative Missing ExecuteA
registerToolcall omits its execute handler, so the tool is described but can never actually run.Fix Pass an execute function implementing the tool. - Input Schema Not An ObjectA
registerToolcall passesinputSchemaas a JSON string. The WebMCP dictionary member is an object (it was a string until 14 Aug 2026), so a current browser rejects the registration and the tool never exists for agents.Fix Pass the schema object itself, notJSON.stringifyof it:inputSchema:{ type: "object", properties: { … } }. - Duplicate Tool NameTwo tools share the same (case-sensitive) name, so calls are ambiguous and one tool shadows the other. Names are compared across declarative forms and
registerToolcalls together: a duplicateregisterToolcall is rejected under the W3C draft, while a collision between the two surfaces is a readiness fault rather than a specification violation.Fix Give every tool a unique name. - Param Missing DescriptionA tool parameter has no usable description (no toolparamdescription, associated label, or aria-description), so agents can't supply it correctly.Fix Describe every parameter, e.g.
toolparamdescription="Departure date, YYYY-MM-DD".
The Conformance Issue Detected column is true only when an imperative registerTool call omits description or execute, which the W3C WebMCP draft requires; the name, duplicate-name and declarative-description rules are Lumar's readiness bar and Chrome's guidance, and they are deliberately not spec claims because the same flag can fire on a declarative form whose rules the draft has not yet written.
An inputSchema passed as a JSON string is a defect of its own: the WebMCP dictionary member is an object (it was a string until 14 Aug 2026), so a current browser refuses the registration and the tool never exists.
The columns it shows
Every defect this technology can carry is a column in the grid, worst first, so nothing is hidden behind a filter you have to know to apply.
- WebMCP Valid
webMcpValid - WebMCP Conformance Issue Detected
webMcpConformanceIssueDetected - WebMCP Findings
webMcpFindings - WebMCP Tool Names
webMcpToolNames - WebMCP Undescribed Tool Names
webMcpUndescribedToolNames - WebMCP Undescribed Parameters
webMcpUndescribedParamNames - WebMCP Tool Missing Name
webMcpToolMissingName - WebMCP Invalid Tool Name
webMcpInvalidToolName - WebMCP Tool Missing Description
webMcpToolMissingDescription - WebMCP Imperative Missing Description
webMcpImperativeMissingDescription - WebMCP Imperative Missing Execute
webMcpImperativeMissingExecute - WebMCP Input Schema Not An Object
webMcpInputSchemaNotObject - WebMCP Duplicate Tool Name
webMcpDuplicateToolName - WebMCP Param Missing Description
webMcpParamMissingDescription - WebMCP Imperative Missing Input Schema
webMcpImperativeMissingInputSchema
About WebMCP
In-page tools a browsing agent can call directly.
Read how WebMCP is checked, including the specification it is validated against and a worked correct and broken example.
Running it
This report comes with Agentic Readiness in Lumar and appears on every crawl of any project that has it turned on. See the whole set, or check a single URL with the scanner on this site, which runs the same code with no account.