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

11 tools registered. Strongest in shared experience, weakest in task completion.

Shared experience88
Task completion20
Tool quality87
Trust75
https://fitcheck-gray.vercel.app
Captured view of https://fitcheck-gray.vercel.app

Tools

7 read, 0 write, 4 undeclared
Loading map
get_fit_profile: pass

get_fit_profile

Return the current fit profile: gender, width, foot-length range, and fit statements.Answers a question. Declared read only.
pagehttps://fitcheck-gray.vercel.app/
implementation
viaimperative
entry pointdocument
registered after346ms
executepresent
api surfaceTakes no parameters.
annotations
read onlytrue
untrusted contentnot declared
titlenot declared
0 findingsNo check named this tool.
tool json
{
  "name": "get_fit_profile",
  "description": "Return the current fit profile: gender, width, foot-length range, and fit statements.",
  "inputSchema": {
    "type": "object",
    "properties": {}
  },
  "annotations": {
    "readOnlyHint": true
  }
}
Showing get_fit_profile

Findings

Shared experience

88 / 100 · weight 30
passPage experience
weight 20
1 of 4 page-experience marks came back short: clarity The purpose of the page and its elements is not immediately clear..
clarity: weak
passHuman parity
weight 10
The person co-browsing can see and use this page - the same page the agent's tools act on.

Task completion

20 / 100 · weight 25
failTool selection
weight 15
An agent chose an existing tool and built a schema-valid call that held up on 0 of 3 canonical intents; on "Find a carry-on suitcase under 300 dollars." no tool on the page served it. Nothing was executed, so this verifies selection, not outcomes.
warningCoverage vs. site type
weight 10
The tool set covers 2 of the 4 things an agent needs on a commerce site; it cannot add to or read the cart or start checkout or place an order.

Tool quality

87 / 100 · weight 25
passRegistration timing
weight 1
Every measured tool registered within 347ms of navigation.
toolrecommend_size
passCanonical entry point
weight 3
All 11 tools register on the canonical document.modelContext entry point.
passSchema validity
weight 4
All 11 declared input schemas are structurally valid object schemas.
warningSchema quality
weight 4
8 of 11 tool schemas are harder for an agent to use than they need to be: update_fit_profile 3 parameters have no description (gender, width, statements).
toolupdate_fit_profile
update_fit_profile: 3 parameters have no description (gender, width, statements); add_fit_statement: 4 parameters have no description (brand, value, gender, system); remove_fit_statement: 1 parameter 
fix
{
  name: "update_fit_profile",
  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: 1 name does not start with a verb (negotiate_store).
toolnegotiate_store
fix
{ name: "negotiate_store" /* short, unique, verb-based */ }
passStub detection
weight 4
All 11 tools declare an execute handler.
passRegistration errors
weight 2
No tool registration threw during the capture.
passDescription quality
weight 5
1 of 11 tool descriptions leave an agent guessing: negotiate_store Does not specify what comes back from the negotiation..
toolnegotiate_store
negotiate_store: weak

Trust

75 / 100 · weight 20
passAnnotations present
weight 6
All 6 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 6
No tool claims to be read-only while its own name or description says it writes (7 declared hints checked).
not applicableUntrusted content hint
weight 4
No tool's contract suggests it returns text written by somebody other than the site, so there is nothing to flag as untrusted.
warningInjection surface
weight 4
1 of 11 tools carry instruction-shaped text in their own metadata: find_shoe description instructs agent to prefer another tool.
toolfind_shoe
find_shoe: description instructs agent to prefer another tool
fix
{
  name: "find_shoe",
  // 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

0% across 3 intents
Find a carry-on suitcase under 300 dollars.missed
choseno toolexpected product searchkind not applicable
No tool was picked for this intent.
arguments
{}
Show me the details and price of the first result.missed
choseno toolexpected product detailkind not applicable
No tool was picked for this intent.
arguments
{}
Add two of them to my cart.missed
choseno toolexpected cart writekind 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 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
11
run time
12s
finished
Sep 1, 2026
Checked the way in-browser agents discover tools: the top-level document's modelContext registry, read after the page settles.