strideclub.in WebMCP audit

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

11 tools registered. Strongest in tool quality, weakest in trust.

Shared experience78
Task completion50
Tool quality92
Trust0
https://strideclub.in
Captured view of https://strideclub.in

Tools

0 read, 6 write, 5 undeclared
Loading map
search_stride: fail

search_stride

Search Stride Run Club for anything on this site: upcoming runs and races in Bengaluru, what an event costs, how the milestone tiers work, blog posts, the team, or a FAQ answer. Returns structured schema.org results with URLs. Use this from any page — it does not depend on which page is open.No behaviour hints declared. Agents should treat it as possibly state-changing.
pagehttps://www.strideclub.in/
implementation
viaimperative
entry pointdocument
registered after546ms
executepresent
api surface
queryrequired
annotations
read onlynot declared
untrusted contentnot declared
titlenot declared
2 findings
failAnnotations present
weight 6
3 of 3 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.)
search_stride, get_stride_info, list_faq_questions
fix
{
  name: "search_stride",
  // 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 }
}
failTool selection
weight 15
An agent chose an existing tool and built a schema-valid call that held up on 1 of 3 canonical intents; on "Show me everything on that record." the tool it chose does not look like the kind of tool the intent needs. Nothing was executed, so this verifies selection, not outcomes.
tool json
{
  "name": "search_stride",
  "description": "Search Stride Run Club for anything on this site: upcoming runs and races in Bengaluru, what an event costs, how the milestone tiers work, blog posts, the team, or a FAQ answer. Returns structured schema.org results with URLs. Use this from any page — it does not depend on which page is open.",
  "inputSchema": {
    "type": "object",
    "required": [
      "query"
    ],
    "properties": {
      "query": {
        "type": "string",
        "description": "A natural-language question, e.g. \"free beginner runs this weekend\"."
      }
    }
  },
  "annotations": {}
}
Showing search_stride

Findings

Shared experience

78 / 100 · weight 30
warningPage experience
weight 20
2 of 4 page-experience marks came back short: clarity The main content is a slogan, and the purpose of the page is unclear..
clarity: weak; obstruction: weak
passHuman parity
weight 10
The person co-browsing can see and use this page - the same page the agent's tools act on, and 6 declarative forms double as visible counterparts.

Task completion

50 / 100 · weight 25
failTool selection
weight 15
An agent chose an existing tool and built a schema-valid call that held up on 1 of 3 canonical intents; on "Show me everything on that record." the tool it chose does not look like the kind of tool the intent needs. Nothing was executed, so this verifies selection, not outcomes.
toolsearch_stride
warningCoverage vs. site type
weight 10
The tool set covers 3 of the 4 things an agent needs on a saas site; it cannot update or move an existing record.

Tool quality

92 / 100 · weight 25
passRegistration timing
weight 1
Every measured tool registered within 681ms of navigation. 6 further tools carried no measurable registration time.
toollist_faq_questions
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.
passSchema quality
weight 4
All 3 of 11 tool schemas that declare parameters describe them (the other 8 declare no parameters), and every description stays within Chrome's size guidance.
warningNaming quality
weight 2
Tool naming makes selection harder than it needs to be: 8 names do not start with a verb (open_stride_page).
toolopen_stride_page
fix
{ name: "open_stride_page" /* 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.
warningDescription quality
weight 5
6 of 11 tool descriptions leave an agent guessing: open_faq_who_can_join bare restatement of tool name.
toolopen_faq_who_can_join
open_faq_who_can_join: weak; open_faq_how_to_join: weak; open_faq_where_do_you_meet: weak; open_faq_membership_fee: weak
fix
{
  name: "open_faq_who_can_join",
  description: "Describe what this tool does, when to use it, and what it returns."
}

Trust

0 / 100 · weight 20
failAnnotations present
weight 6
3 of 3 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.)
toolsearch_stride
search_stride, get_stride_info, list_faq_questions
fix
{
  name: "search_stride",
  // 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 }
}
not applicableAnnotation mismatch
weight 6
No tool declares a readOnlyHint, so there is no safety claim to contradict.
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.
not applicableInjection surface
weight 4
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

33% across 3 intents
Find the record for a company called Northwind.ok
chosesearch_strideexpected record searchkind matched
arguments
{
  "query": "Northwind"
}
Show me everything on that record.missed
chosesearch_strideexpected record detailkind mismatch
The tool the model chose does not look like the kind of tool this intent needs.
arguments
{
  "query": "Northwind"
}
Create a new contact called Dana Reeve.missed
choseno toolexpected record createkind 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
v1
spec snapshot
2026-08-26
mode
fast
pages
1 - entry page only
tools
11
run time
13s
finished
Sep 1, 2026
Checked the way in-browser agents discover tools: the top-level document's modelContext registry, read after the page settles.