watchfor.io WebMCP audit

audited Sep 4, 2026in 13s
97/ 100100% of the applicable check weight evaluated

10 tools registered. Strongest in shared experience, weakest in trust.

Shared experience100
Tool selection100
Tool quality95
Trust92
https://watchfor.io
Captured view of https://watchfor.io

Tools

6 read, 1 write, 3 undeclared
Loading map
get_site_overview: pass

get_site_overview

Returns a short description of WatchFor — the monitor types, locations, alerting, incident and status-page features, plans — together with the paths of its machine-readable guides (llms.txt, agents.md, OpenAPI specification, MCP manifest). Takes no parameters.Answers a question. Declared read only.
pagehttps://watchfor.io/
implementation
viaimperative
entry pointdocument
registered after726ms
executepresent
api surfaceTakes no parameters.
annotations
read onlytrue
untrusted contentnot declared
titlenot declared
0 findingsNo check named this tool.
tool json
{
  "name": "get_site_overview",
  "description": "Returns a short description of WatchFor — the monitor types, locations, alerting, incident and status-page features, plans — together with the paths of its machine-readable guides (llms.txt, agents.md, OpenAPI specification, MCP manifest). Takes no parameters.",
  "inputSchema": {
    "type": "object",
    "properties": {}
  },
  "annotations": {
    "readOnlyHint": true
  }
}
Showing get_site_overview

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, and 1 declarative form doubles as visible counterparts.

Tool selection

100 / 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.
passTool selection
weight 12
An agent chose an existing, callable tool and built a schema-valid call for all 3 canonical intents, each matching the kind of tool its intent needs. Nothing was executed, so this verifies selection, not outcomes.
passCoverage vs. site type
weight 7
The tool set covers the whole core docs flow: search or browse the catalog, read a page or article, navigate the documentation tree.

Tool quality

95 / 100 · weight 25
passRegistration timing
weight 1
Every measured tool registered within 727ms of navigation. 1 further tool carried no measurable registration time.
toolcheck_website
passCanonical entry point
weight 3
All 9 tools register on the canonical document.modelContext entry point.
passSchema validity
weight 4
All 9 declared input schemas are structurally valid object schemas.
warningSchema quality
weight 4
2 of 10 tool schemas are harder for an agent to use than they need to be: list_docs declares no required list, so an agent cannot tell which parameters are mandatory.
toollist_docs
list_docs: declares no required list, so an agent cannot tell which parameters are mandatory; read_page: declares no required list, so an agent cannot tell which parameters are mandatory
fix
{
  name: "list_docs",
  inputSchema: {
    type: "object",
    properties: {
      query: { type: "string", description: "What to search for" }
    },
    required: ["query"]
  }
}
passNaming quality
weight 2
All 10 tool names are consistent, verb-led, and within Chrome's size guidance.
passStub detection
weight 4
All 9 tools declare an execute handler.
passRegistration errors
weight 2
No tool registration threw during the capture.
passDescription quality
weight 5
1 of 10 tool descriptions leave an agent guessing: submit_website_audit Omits what comes back, and how it differs from check_website.
toolsubmit_website_audit
submit_website_audit: weak

Trust

92 / 100 · weight 20
warningAnnotations present
weight 5
1 of 7 read-shaped tools do not declare readOnlyHint: true, so an agent has to treat them as possible writes and ask before calling. (Declaring readOnlyHint: false earns nothing - it is the default.)
toolcheck_website
check_website
fix
{
  name: "check_website",
  // Declare readOnlyHint: true on tools that truly have no side effects -
  // that is the claim that lets an agent relax confirmation on reads.
  // (false is the default, so declaring it adds no information.)
  annotations: { readOnlyHint: true }
}
passAnnotation mismatch
weight 5
No tool claims to be read-only while its own name or description says it writes (6 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.
not applicableInjection surface
weight 3
No tool's metadata carries instruction-shaped text aimed at the agent reading it. This check only ever flags; it never credits a site.

Tool selection

100% across 3 intents
Find the page that explains authentication.ok
chosesearch_docsexpected docs searchkind matched
arguments
{
  "query": "authentication"
}
Read that page to me.ok
choseread_pageexpected page readkind matched
arguments
{
  "path": "/docs/api/authentication"
}
What other pages are in the same section?ok
choselist_docsexpected navigationkind matched
arguments
{
  "section": "api"
}
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 148.0.7778.96)
chrome
148.0.7778.96
capture shim
v2
spec snapshot
2026-08-26
mode
fast
pages
1 - entry page only
tools
10
invoked
not invoked; a live audit calls them
run time
13s
finished
Sep 4, 2026
Checked the way in-browser agents discover tools: the top-level document's modelContext registry, read after the page settles.