docyrus.com WebMCP audit

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

4 tools registered. Strongest in tool quality, weakest in task completion.

Shared experience88
Task completion10
Tool quality96
Trust70
https://docyrus.com
Captured view of https://docyrus.com

Tools

3 read, 1 write
Loading map
list_pricing_plans: warning

list_pricing_plans

Returns all Docyrus subscription plans with annual and monthly prices, user limits, included runs/credits, and overage rates. Also returns support tiers and addon resource packs. Use this before estimating or recommending a plan. All prices shown are per-month billed annually (cheaper) — annual billing saves ~20% vs monthly. The Starter plan is free for the first 6 months when billed annually only; monthly billing starts at $36/month from day one.Answers a question. Declared read only.
pagehttps://docyrus.com/
implementation
viaimperative
entry pointdocument
registered after407ms
executepresent
api surfaceTakes no parameters.
annotations
read onlytrue
untrusted contentfalse
titlenot declared
1 finding
warningInjection surface
weight 4
3 of 4 tools carry instruction-shaped text in their own metadata: list_pricing_plans description instructs agent when to use tool.
list_pricing_plans: description instructs agent when to use tool; estimate_docyrus_cost: description instructs agent how to format output; recommend_plan: description instructs agent on user interaction before tool use
fix
{
  name: "list_pricing_plans",
  // 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_pricing_plans",
  "description": "Returns all Docyrus subscription plans with annual and monthly prices, user limits, included runs/credits, and overage rates. Also returns support tiers and addon resource packs. Use this before estimating or recommending a plan. All prices shown are per-month billed annually (cheaper) — annual billing saves ~20% vs monthly. The Starter plan is free for the first 6 months when billed annually only; monthly billing starts at $36/month from day one.",
  "inputSchema": {
    "type": "object",
    "properties": {}
  },
  "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false
  }
}
Showing list_pricing_plans

Findings

Shared experience

88 / 100 · weight 30
passPage experience
weight 20
1 of 4 page-experience marks came back short: obstruction A cookie consent banner partially obstructs the main content of the page..
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.

Task completion

10 / 100 · weight 25
failTool selection
weight 15
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 10
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

96 / 100 · weight 25
passRegistration timing
weight 1
Every measured tool registered within 407ms of navigation.
toolsubmit_contact
passCanonical entry point
weight 3
All 4 tools register on the canonical document.modelContext entry point.
passSchema validity
weight 4
All 4 declared input schemas are structurally valid object schemas.
warningSchema quality
weight 4
1 of 4 tool schemas are harder for an agent to use than they need to be: recommend_plan description is 991 characters, over Chrome's 500-character guidance.
toolrecommend_plan
recommend_plan: description is 991 characters, over Chrome's 500-character guidance; recommend_plan: 1 parameter description is over Chrome's 150-character guidance
fix
{
  name: "recommend_plan",
  inputSchema: {
    type: "object",
    properties: {
      query: { type: "string", description: "What to search for" }
    },
    required: ["query"]
  }
}
passNaming quality
weight 2
All 4 tool names are consistent, verb-led, and within Chrome's size guidance.
passStub detection
weight 4
All 4 tools declare an execute handler.
passRegistration errors
weight 2
No tool registration threw during the capture.
passDescription quality
weight 5
All 4 rated tool descriptions say what the tool does, when to use it, and what it returns.

Trust

70 / 100 · weight 20
passAnnotations present
weight 6
All 3 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 6
No tool claims to be read-only while its own name or description says it writes (4 declared hints checked).
warningUntrusted content hint
weight 4
1 of 2 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.
toolrecommend_plan
recommend_plan: note, user
fix
{ name: "recommend_plan", annotations: { untrustedContentHint: true } }
warningInjection surface
weight 4
3 of 4 tools carry instruction-shaped text in their own metadata: list_pricing_plans description instructs agent when to use tool.
toollist_pricing_plans
list_pricing_plans: description instructs agent when to use tool; estimate_docyrus_cost: description instructs agent how to format output; recommend_plan: description instructs agent on user interaction before tool use
fix
{
  name: "list_pricing_plans",
  // 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
native modelContext
chrome
148.0.7778.96
capture shim
v2
spec snapshot
2026-08-26
mode
fast
pages
1 - entry page only
tools
4
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.