audited Sep 6, 2026in 12s
77/ 100100% of the applicable check weight evaluated

5 tools registered. Strongest in shared experience, weakest in tool selection.

Shared experience100
Tool selection33
Tool quality95
Trust76
https://specification.website
Captured view of https://specification.website

Tools

3 read, 2 write
Loading map
search_spec: warning

search_spec

Search The Website Specification for matching topics. Returns ranked results with title, status, category, canonical URL, and a one-line summary. Use this when the user asks about a topic by keyword (e.g. "CSP", "alt text", "llms.txt").Answers a question. Declared read only.
pagehttps://specification.website/
implementation
viaimperative
entry pointdocument
registered after454ms
executepresent
api surface
queryrequired
limitoptional
annotations
read onlytrue
untrusted contentnot declared
titlenot declared
2 findings
warningSchema quality
weight 4
1 of 5 tool schemas are harder for an agent to use than they need to be: search_spec 1 parameter has no description (limit).
search_spec: 1 parameter has no description (limit)
fix
{
  name: "search_spec",
  inputSchema: {
    type: "object",
    properties: {
      query: { type: "string", description: "What to search for" }
    },
    required: ["query"]
  }
}
warningInjection surface
weight 3
5 of 5 tools carry instruction-shaped text in their own metadata: search_spec Description instructs agent when to use tool.
search_spec: Description instructs agent when to use tool; list_topics: Description instructs agent when to use tool; get_topic: Description instructs agent when to use tool; open_search: Description instructs agent to use another tool
fix
{
  name: "search_spec",
  // Metadata DESCRIBES the tool - it never addresses the agent reading it.
  // Rewrite any name, description, title, or schema field description that
  // instructs the agent (which tool to prefer, what to output, rules to
  // ignore) so it states what the tool does and what it returns instead.
  description: "Searches the catalog and returns matching items with prices."
}
tool json
{
  "name": "search_spec",
  "description": "Search The Website Specification for matching topics. Returns ranked results with title, status, category, canonical URL, and a one-line summary. Use this when the user asks about a topic by keyword (e.g. \"CSP\", \"alt text\", \"llms.txt\").",
  "inputSchema": {
    "type": "object",
    "properties": {
      "query": {
        "type": "string",
        "description": "Free-text query.",
        "minLength": 1
      },
      "limit": {
        "type": "integer",
        "minimum": 1,
        "maximum": 25,
        "default": 5
      }
    },
    "required": [
      "query"
    ]
  },
  "annotations": {
    "readOnlyHint": true
  }
}
Showing search_spec

Findings

Shared experience

100 / 100 · weight 30
not applicableVisible effect
weight 6
Not invoked on this run: this audit did not call any tool. Scheduled re-audits only read the registry; a live audit from the report page calls the tools that declare readOnlyHint: true.
passPage experience
weight 16
The page a person sees holds up next to the agent surface: a working interface, visible actions, readable content, nothing in the way.
passHuman parity
weight 8
The person co-browsing can see and use this page - the same page the agent's tools act on.

Tool selection

33 / 100 · weight 25
not applicableInvoke success rate
weight 6
Not invoked on this run: this audit did not call any tool. Scheduled re-audits only read the registry; a live audit from the report page calls the tools that declare readOnlyHint: true.
failTool selection
weight 12
An agent chose an existing tool and built a schema-valid call that held up on 1 of 3 canonical intents; on "I want to search spec on this site." the tool it chose does not look like the kind of tool the intent needs. Nothing was executed, so this verifies selection, not outcomes.
toolopen_search
not applicableCoverage vs. site type
weight 7
This tool set does not place the site in a category with a known expected tool shape, so there is no coverage baseline to score it against.

Tool quality

95 / 100 · weight 25
passRegistration timing
weight 1
Every measured tool registered within 455ms of navigation.
toollist_topics
passCanonical entry point
weight 3
All 5 tools register on the canonical document.modelContext entry point.
passSchema validity
weight 4
All 5 declared input schemas are structurally valid object schemas.
warningSchema quality
weight 4
1 of 5 tool schemas are harder for an agent to use than they need to be: search_spec 1 parameter has no description (limit).
toolsearch_spec
search_spec: 1 parameter has no description (limit)
fix
{
  name: "search_spec",
  inputSchema: {
    type: "object",
    properties: {
      query: { type: "string", description: "What to search for" }
    },
    required: ["query"]
  }
}
warningNaming quality
weight 2
Tool naming makes selection harder than it needs to be: 2 names do not start with a verb (open_search).
toolopen_search
fix
{ name: "open_search" /* short, unique, verb-based */ }
passStub detection
weight 4
All 5 tools declare an execute handler.
passRegistration errors
weight 2
No tool registration threw during the capture.
passDescription quality
weight 5
All 5 rated tool descriptions say what the tool does, when to use it, and what it returns.

Trust

76 / 100 · weight 20
passAnnotations present
weight 5
All 3 read-shaped tools declare readOnlyHint: true - the one declared claim that lets an agent treat a call as safe to make without asking.
passAnnotation mismatch
weight 5
No tool claims to be read-only while its own name or description says it writes (5 declared hints checked).
not applicableUntrusted content hint
weight 3
No tool's contract suggests it returns text written by somebody other than the site, so there is nothing to flag as untrusted.
not applicableHint vs. observed
weight 4
Not invoked on this run: this audit did not call any tool. Scheduled re-audits only read the registry; a live audit from the report page calls the tools that declare readOnlyHint: true.
warningInjection surface
weight 3
5 of 5 tools carry instruction-shaped text in their own metadata: search_spec Description instructs agent when to use tool.
toolsearch_spec
search_spec: Description instructs agent when to use tool; list_topics: Description instructs agent when to use tool; get_topic: Description instructs agent when to use tool; open_search: Description instructs agent to use another tool
fix
{
  name: "search_spec",
  // Metadata DESCRIBES the tool - it never addresses the agent reading it.
  // Rewrite any name, description, title, or schema field description that
  // instructs the agent (which tool to prefer, what to output, rules to
  // ignore) so it states what the tool does and what it returns instead.
  description: "Searches the catalog and returns matching items with prices."
}

Tool selection

33% across 3 intents
I want to search spec on this site.missed
choseopen_searchexpected search speckind mismatch
The tool the model chose does not look like the kind of tool this intent needs.
arguments
{}
I want to list topics on this site.ok
choselist_topicsexpected list topicskind matched
arguments
{}
I want to get topic on this site.missed
choseno toolexpected get topickind not applicable
No tool was picked for this intent.
arguments
{}
model: gemini-2.5-flash

Add the tools this site is missing

Our scanner reads your website and suggests the right WebMCP tools for it.
Reads the site's public pages; takes a few seconds.
The open source webmcp plugin teaches your coding agent to audit a site, implement tools on document.modelContext, and verify them in a real browser. npx @ora-ai/webmcp-verify runs the verification on its own. No signup, no hosted service.
how this was captured
observed via
capture shim (Chromium 151.0.7922.34)
chrome
151.0.7922.34
capture shim
v3
spec snapshot
2026-08-26
mode
fast
pages
1 - entry page only
tools
5
invoked
not invoked; a live audit calls them
run time
12s
finished
Sep 6, 2026
Checked the way in-browser agents discover tools: the top-level document's modelContext registry, read after the page settles.
Listed in the community directory.