agentrail.co WebMCP audit

audited Oct 19, 2026in 8s
70/ 100Incomplete audit · 44% of the applicable check weight evaluated

One tool registered. Strongest in tool quality, weakest in shared experience. Tool selection and trust were not measured.

Shared experience50
Tool selectionN/A
Tool quality95
TrustN/A
https://agentrail.co
Captured view of https://agentrail.co

Tools

0 read, 0 write, 1 undeclared
Loading map
join_agentrail_waitlist: warning

join_agentrail_waitlist

Join the Agentrail early-access waitlist with an email address. Returns the spot, the private status page and the share link.No behaviour hints declared. Agents should treat it as possibly state-changing.
pagehttps://www.agentrail.co/
implementation
viaimperative
entry pointdocument
registered after178ms
executepresent
api surface
emailrequired
first_nameoptional
annotations
read onlynot declared
untrusted contentnot declared
titlenot declared
3 findings
passRegistration timing
weight 1
Every measured tool registered within 178ms of navigation.
warningNaming quality
weight 2
Tool naming makes selection harder than it needs to be: 1 name does not start with a verb (join_agentrail_waitlist).
fix
{ name: "join_agentrail_waitlist" /* short, unique, verb-based */ }
warningHuman parity
weight 8
1 of 1 tools run through the JavaScript API with nothing on the page marking what the agent can do; the page itself was not graded on this run, so parity rests on the visible counterparts alone. A visible effect in your existing UI when a tool runs closes the gap.
join_agentrail_waitlist
fix
// Make the tool's effect visible on the page the person is looking at:
// update the same UI your existing human flow uses when join_agentrail_waitlist runs,
// so the person co-browsing sees what the agent just did.
execute: async (args, { signal }) => {
  const result = await performAction(args, signal);
  renderResultInPage(result); // the human-visible half of the same action
  return result;
}
tool json
{
  "name": "join_agentrail_waitlist",
  "description": "Join the Agentrail early-access waitlist with an email address. Returns the spot, the private status page and the share link.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "email": {
        "type": "string",
        "description": "Email address to add to the waitlist"
      },
      "first_name": {
        "type": "string",
        "description": "Optional first name"
      }
    },
    "required": [
      "email"
    ]
  },
  "annotations": {}
}
Showing join_agentrail_waitlist

Findings

Shared experience

50 / 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.
not measuredPage experience
weight 16
The page-experience model hop returned no usable result, so the page was not graded.
warningHuman parity
weight 8
1 of 1 tools run through the JavaScript API with nothing on the page marking what the agent can do; the page itself was not graded on this run, so parity rests on the visible counterparts alone. A visible effect in your existing UI when a tool runs closes the gap.
tooljoin_agentrail_waitlist
join_agentrail_waitlist
fix
// Make the tool's effect visible on the page the person is looking at:
// update the same UI your existing human flow uses when join_agentrail_waitlist runs,
// so the person co-browsing sees what the agent just did.
execute: async (args, { signal }) => {
  const result = await performAction(args, signal);
  renderResultInPage(result); // the human-visible half of the same action
  return result;
}

Tool selection

not measured
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.
not measuredTool selection
weight 12
The tool-selection model hop returned no usable result.
not applicableCoverage vs. site type
weight 7
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

95 / 100 · weight 25
passRegistration timing
weight 1
Every measured tool registered within 178ms of navigation.
tooljoin_agentrail_waitlist
passCanonical entry point
weight 3
The one registered tool registers on the canonical document.modelContext entry point.
passSchema validity
weight 4
All 1 declared input schema is a structurally valid object schema.
passSchema quality
weight 4
All 1 tool schema describe their parameters, and every description stays within Chrome's size guidance.
warningNaming quality
weight 2
Tool naming makes selection harder than it needs to be: 1 name does not start with a verb (join_agentrail_waitlist).
tooljoin_agentrail_waitlist
fix
{ name: "join_agentrail_waitlist" /* short, unique, verb-based */ }
passStub detection
weight 4
The one registered tool declares an execute handler.
passRegistration errors
weight 2
No tool registration threw during the capture.
not measuredDescription quality
weight 5
The description-quality model hop returned no usable result, so descriptions were not rated.

Trust

not measured
not applicableAnnotations present
weight 5
No tool name reads like a read, and an absent readOnlyHint already defaults to "this may write" - the one hint worth declaring here is readOnlyHint: true on read tools, and this set has none to declare it on.
not applicableAnnotation mismatch
weight 5
No tool declares a readOnlyHint, so there is no safety claim to contradict.
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 measuredInjection surface
weight 3
The injection-surface model hop returned no usable result, so tool contracts were not reviewed for injection surface.

Tool selection

The tool-selection model hop returned no usable result.

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
1
invoked
not invoked; a live audit calls them
run time
8s
finished
Oct 19, 2026
Checked the way in-browser agents discover tools: the top-level document's modelContext registry, read after the page settles.