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

3 tools registered. Strongest in shared experience, weakest in tool selection.

Shared experience100
Tool selection9
Tool quality97
Trust62
https://harshith-nayaka-l-portfolio.vercel.app
Captured view of https://harshith-nayaka-l-portfolio.vercel.app

Tools

1 read, 1 write, 1 undeclared
Loading map
list_projects: warning

list_projects

List the engineering projects Harshith Nayaka L has built, with a one-line outcome, the technologies used, and the case-study slug for each. Use this to answer questions about his work or to find the right slug before calling open_case_study.Answers a question. Declared read only.
pagehttps://harshith-nayaka-l-portfolio.vercel.app/
implementation
viaimperative
entry pointdocument
registered after572ms
executepresent
api surfaceTakes no parameters.
annotations
read onlytrue
untrusted contentnot declared
titlenot declared
1 finding
warningInjection surface
weight 3
3 of 3 tools carry instruction-shaped text in their own metadata: list_projects Description instructs agent when to use tool.
list_projects: Description instructs agent when to use tool; open_case_study: Description instructs agent when to use tool; draft_project_enquiry: Description instructs agent on its scope and limitations
fix
{
  name: "list_projects",
  // 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 json
{
  "name": "list_projects",
  "description": "List the engineering projects Harshith Nayaka L has built, with a one-line outcome, the technologies used, and the case-study slug for each. Use this to answer questions about his work or to find the right slug before calling open_case_study.",
  "inputSchema": {
    "type": "object",
    "properties": {}
  },
  "annotations": {
    "readOnlyHint": true
  }
}
Showing list_projects

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

9 / 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.
failTool selection
weight 12
An agent chose an existing tool and built a schema-valid call that held up on 0 of 3 canonical intents; on "Find the record for a company called Northwind." no tool on the page served it. Nothing was executed, so this verifies selection, not outcomes.
failCoverage vs. site type
weight 7
The tool set covers 1 of the 4 things an agent needs on a saas site; it cannot read one item in detail or create a record or start a job or update or move an existing record.

Tool quality

97 / 100 · weight 25
passRegistration timing
weight 1
Every measured tool registered within 575ms of navigation. 1 further tool carried no measurable registration time.
toolopen_case_study
passCanonical entry point
weight 3
All 2 tools register on the canonical document.modelContext entry point.
passSchema validity
weight 4
All 2 declared input schemas are structurally valid object schemas.
passSchema quality
weight 4
All 1 of 3 tool schemas that declare parameters describe them (the other 2 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: 2 names do not start with a verb (open_case_study).
toolopen_case_study
fix
{ name: "open_case_study" /* short, unique, verb-based */ }
passStub detection
weight 4
All 2 tools declare an execute handler.
passRegistration errors
weight 2
No tool registration threw during the capture.
passDescription quality
weight 5
All 3 rated tool descriptions say what the tool does, when to use it, and what it returns.

Trust

62 / 100 · weight 20
passAnnotations present
weight 5
All 1 read-shaped tool declares 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 (1 declared hint checked).
warningUntrusted content hint
weight 3
1 of 1 tools look like they return text written by other people but declare no untrustedContentHint, so an agent will treat the response as the site speaking.
tooldraft_project_enquiry
draft_project_enquiry: review, message
fix
{ name: "draft_project_enquiry", annotations: { untrustedContentHint: true } }
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.
warningInjection surface
weight 3
3 of 3 tools carry instruction-shaped text in their own metadata: list_projects Description instructs agent when to use tool.
toollist_projects
list_projects: Description instructs agent when to use tool; open_case_study: Description instructs agent when to use tool; draft_project_enquiry: Description instructs agent on its scope and limitations
fix
{
  name: "list_projects",
  // 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 the record for a company called Northwind.missed
choseno toolexpected record searchkind not applicable
No tool was picked for this intent.
arguments
{}
Show me everything on that record.missed
choseno toolexpected record detailkind not applicable
No tool was picked for this intent.
arguments
{}
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
v2
spec snapshot
2026-08-26
mode
fast
pages
1 - entry page only
tools
3
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.