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

16 tools registered. Strongest in tool selection, weakest in tool quality.

Shared experience87
Tool selection100
Tool quality81
Trust100
https://spree.apparel.monster
Captured view of https://spree.apparel.monster

Tools

10 read, 6 write
Loading map
search_products: warning

search_products

Search for apparel products by name, category (taxon permalink), price range, or stock status. Returns up to 20 results with name, price, and URL.Answers a question. Declared read only.
pagehttps://apparel.monster/
implementation
viaimperative
entry pointnavigator
registered after1034ms
executepresent
api surface
queryoptional
taxonoptional
min_priceoptional
max_priceoptional
in_stockoptional
sortoptional
limitoptional
annotations
read onlytrue
untrusted contentnot declared
titlenot declared
2 findings
warningCanonical entry point
weight 3
8 of 16 tools use the removed provideContext API instead of document.modelContext.registerTool().
fix
// document.modelContext is the canonical entry point - the navigator.modelContext alias is deprecated.
document.modelContext.registerTool({ /* ... */ });
warningSchema quality
weight 4
3 of 16 tool schemas are harder for an agent to use than they need to be: search_products 1 parameter has no description (limit).
search_products: 1 parameter has no description (limit); add_to_cart: 1 parameter has no description (quantity); apply_coupon: 1 parameter has no description (coupon_code); search_products: 1 paramete
fix
{
  name: "search_products",
  inputSchema: {
    type: "object",
    properties: {
      query: { type: "string", description: "What to search for" }
    },
    required: ["query"]
  }
}
tool json
{
  "name": "search_products",
  "description": "Search for apparel products by name, category (taxon permalink), price range, or stock status. Returns up to 20 results with name, price, and URL.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "query": {
        "type": "string",
        "description": "Keyword to match against product names, e.g. 'denim shirt'."
      },
      "taxon": {
        "type": "string",
        "description": "Permalink filter, e.g. 'categories/men/shirts' or 'collections/new-arrivals'."
      },
      "min_price": {
        "type": "number",
        "minimum": 0,
        "description": "Minimum price in USD."
      },
      "max_price": {
        "type": "number",
        "minimum": 0,
        "description": "Maximum price in USD."
      },
      "in_stock": {
        "type": "boolean",
        "description": "If true, only return purchasable items in stock.",
        "default": true
      },
      "sort": {
        "type": "string",
        "enum": [
          "popularity",
          "-popularity",
          "price",
          "-price",
          "name",
          "-name",
          "-available_on"
        ],
        "description": "Sort order.",
        "default": "-popularity"
      },
      "limit": {
        "type": "integer",
        "minimum": 1,
        "maximum": 20,
        "default": 10
      }
    }
  },
  "annotations": {
    "readOnlyHint": true
  }
}
Showing search_products

Findings

Shared experience

87 / 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
1 of 4 page-experience marks came back short: clarity The main content area shows placeholders, making it unclear what is being offered..
clarity: weak
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

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 commerce flow: search or browse the catalog, read one item in detail, add to or read the cart, start checkout or place an order.

Tool quality

81 / 100 · weight 25
warningRegistration timing
weight 1
The slowest tool took 1035ms to register, past the 1000ms an agent reading the registry at first paint would wait for.
tooladd_to_cart
add_to_cart: registered at 1035ms
fix
// Register tools as soon as they're ready, not behind a deferred/async chunk.
document.modelContext.registerTool({ /* ... */ });
warningCanonical entry point
weight 3
8 of 16 tools use the removed provideContext API instead of document.modelContext.registerTool().
toolsearch_products
fix
// document.modelContext is the canonical entry point - the navigator.modelContext alias is deprecated.
document.modelContext.registerTool({ /* ... */ });
passSchema validity
weight 4
All 16 declared input schemas are structurally valid object schemas.
warningSchema quality
weight 4
3 of 16 tool schemas are harder for an agent to use than they need to be: search_products 1 parameter has no description (limit).
toolsearch_products
search_products: 1 parameter has no description (limit); add_to_cart: 1 parameter has no description (quantity); apply_coupon: 1 parameter has no description (coupon_code); search_products: 1 paramete
fix
{
  name: "search_products",
  inputSchema: {
    type: "object",
    properties: {
      query: { type: "string", description: "What to search for" }
    },
    required: ["query"]
  }
}
passNaming quality
weight 2
All 16 tool names are consistent, verb-led, and within Chrome's size guidance.
passStub detection
weight 4
All 16 tools declare an execute handler.
failRegistration errors
weight 2
8 tool registrations threw during the capture, so the registry an agent reads is incomplete.
duplicate tool name registered: search_products
fix
document.modelContext.registerTool({ /* ... */ }).catch(function (err) {
  console.error("WebMCP registration failed", err);
});
passDescription quality
weight 5
All 8 rated tool descriptions say what the tool does, when to use it, and what it returns. 8 of 16 tools were not rated and are excluded from this score.

Trust

100 / 100 · weight 20
passAnnotations present
weight 5
All 10 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 (16 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 a carry-on suitcase under 300 dollars.ok
chosesearch_productsexpected product searchkind matched
arguments
{
  "query": "carry-on suitcase",
  "max_price": 300
}
Show me the details and price of the first result.ok
choseget_productexpected product detailkind matched
arguments
{
  "slug": "carry-on-suitcase"
}
Add two of them to my cart.ok
choseadd_to_cartexpected cart writekind matched
arguments
{
  "variant_id": 12345,
  "quantity": 2
}
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
16
invoked
not invoked; a live audit calls them
run time
14s
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.