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

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

Shared experience100
Task completion100
Tool quality69
Trust0
https://hashtagweb3.com
Captured view of https://hashtagweb3.com

Tools

0 read, 1 write
Loading map
search_jobs: fail

search_jobs

Search verified Web3, crypto, DeFi, and blockchain jobsRegistered without an execute function, so calling it does nothing.
pagehttps://hashtagweb3.com/
implementation
viaimperative
entry pointdocument
registered after761ms
executemissing
api surfaceTakes no parameters.
annotations
read onlynot declared
untrusted contentnot declared
titlenot declared
3 findings
failStub detection
weight 4
Every registered tool is a facade: none declares an execute handler, so an agent that calls one gets nothing back.
search_jobs, search_glossary
fix
{
  name: "search_jobs",
  execute: async (args, { signal }) => {
    // Perform the real action here - return live data, not a static placeholder.
    // Pass signal to any fetch so cancellation propagates.
    return result;
  }
}
failAnnotations present
weight 6
2 of 2 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_jobs, search_glossary
fix
{
  name: "search_jobs",
  // 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 }
}
warningDescription quality
weight 5
2 of 2 tool descriptions leave an agent guessing: search_jobs Omits what comes back and how it differs from other job search tools.. 1 of 3 tools were not rated and are excluded from this score.
search_jobs: weak; search_glossary: weak
fix
{
  name: "search_jobs",
  description: "Describe what this tool does, when to use it, and what it returns."
}
tool json
{
  "name": "search_jobs",
  "description": "Search verified Web3, crypto, DeFi, and blockchain jobs",
  "inputSchema": null,
  "annotations": {}
}
Showing search_jobs

Findings

Shared experience

100 / 100 · weight 30
passPage experience
weight 20
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 10
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.

Task completion

100 / 100 · weight 25
passTool selection
weight 15
An agent chose an existing, callable tool and built a schema-valid call for all 1 canonical intents, each matching the kind of tool its intent needs. Nothing was executed, so this verifies selection, not outcomes.
not applicableCoverage vs. site type
weight 10
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

69 / 100 · weight 25
passRegistration timing
weight 1
Every measured tool registered within 762ms of navigation. 1 further tool carried no measurable registration time.
toolsearch_glossary
passCanonical entry point
weight 3
All 2 tools register on the canonical document.modelContext entry point.
not applicableSchema validity
weight 4
2 tools declare no input schema, which is spec-legal for a zero-argument tool, so there is no schema to validate.
passSchema quality
weight 4
3 tools declare no parameters, and every description stays within Chrome's size guidance.
passNaming quality
weight 2
All 3 tool names are consistent, verb-led, and within Chrome's size guidance.
failStub detection
weight 4
Every registered tool is a facade: none declares an execute handler, so an agent that calls one gets nothing back.
toolsearch_jobs
search_jobs, search_glossary
fix
{
  name: "search_jobs",
  execute: async (args, { signal }) => {
    // Perform the real action here - return live data, not a static placeholder.
    // Pass signal to any fetch so cancellation propagates.
    return result;
  }
}
passRegistration errors
weight 2
No tool registration threw during the capture.
warningDescription quality
weight 5
2 of 2 tool descriptions leave an agent guessing: search_jobs Omits what comes back and how it differs from other job search tools.. 1 of 3 tools were not rated and are excluded from this score.
toolsearch_jobs
search_jobs: weak; search_glossary: weak
fix
{
  name: "search_jobs",
  description: "Describe what this tool does, when to use it, and what it returns."
}

Trust

0 / 100 · weight 20
failAnnotations present
weight 6
2 of 2 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_jobs
search_jobs, search_glossary
fix
{
  name: "search_jobs",
  // 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

100% across 1 intents
I want to search jobs on this site.ok
chosesearch_jobsexpected search jobskind matched
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
3
run time
12s
finished
Sep 3, 2026
Checked the way in-browser agents discover tools: the top-level document's modelContext registry, read after the page settles.