audited Nov 10, 2026in 13s
93/ 100100% of the applicable check weight evaluated

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

Shared experience100
Tool selection100
Tool quality99
Trust66
https://studiomeyer.io
Captured view of https://studiomeyer.io

Tools

6 read, 0 write
Loading map
get_memory_purchase: pass

get_memory_purchase

Read new Memory Pro or Team subscription purchase information: current price, localized purchase link and account-management link. Account status is unknown; existing paid subscribers should use account management first. This request starts no checkout session or payment. The user starts checkout and confirms payment themselves.Answers a question. Declared read only.
pagehttps://studiomeyer.io/de
implementation
viaimperative
entry pointdocument
registered after364ms
executepresent
api surface
planrequired
localeoptional
annotations
read onlytrue
untrusted contentnot declared
titlenot declared
0 findingsNo check named this tool.
tool json
{
  "name": "get_memory_purchase",
  "description": "Read new Memory Pro or Team subscription purchase information: current price, localized purchase link and account-management link. Account status is unknown; existing paid subscribers should use account management first. This request starts no checkout session or payment. The user starts checkout and confirms payment themselves.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "plan": {
        "type": "string",
        "enum": [
          "pro",
          "team"
        ],
        "description": "Existing paid Memory plan: pro or team."
      },
      "locale": {
        "default": "de",
        "description": "Purchase-page language. HTTP defaults to de; browser tools use the current page language when omitted.",
        "type": "string",
        "enum": [
          "de",
          "en",
          "es"
        ]
      }
    },
    "required": [
      "plan"
    ],
    "additionalProperties": false
  },
  "annotations": {
    "readOnlyHint": true
  }
}
Showing get_memory_purchase

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 and not consequentialHint: 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.

Tool selection

100 / 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 and not consequentialHint: true.
passTool selection
weight 12
An agent chose an existing, callable tool and built a schema-valid call for all 3 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 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

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

Trust

66 / 100 · weight 20
passAnnotations present
weight 4
All 4 read-shaped tools declare readOnlyHint: true - the one declared claim that lets an agent treat a call as safe to make without asking.
warningAnnotation mismatch
weight 4
1 tool declares readOnlyHint: true although the name says the call writes (generate_agents_json).
toolgenerate_agents_json
generate_agents_json: readOnlyHint=true
fix
// readOnlyHint must match what the tool actually does - drop it (or set false) on a tool that writes,
// and never pair readOnlyHint: true with consequentialHint: true. If the write is significant or
// hard to undo (a purchase, a booking, a payment), declare consequentialHint: true so the agent
// confirms with the person first.
{ name: "generate_agents_json", annotations: { readOnlyHint: false } }
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 applicableConsequential hint
weight 3
No tool name reads like a consequential action (a purchase, a booking, a payment, a transfer, a deletion), so there is no consequentialHint to expect.
not applicableHint vs. observed
weight 3
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 and not consequentialHint: true.
warningInjection surface
weight 3
1 of 6 tools carry instruction-shaped text in their own metadata: request_quote Schema field description instructs agent to ignore a field.
toolrequest_quote
request_quote: Schema field description instructs agent to ignore a field
fix
{
  name: "request_quote",
  // 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

100% across 3 intents
I want to get memory purchase on this site.ok
choseget_memory_purchaseexpected get memory purchasekind matched
arguments
{
  "plan": "pro"
}
I want to browse portfolio on this site.ok
chosebrowse_portfolioexpected browse portfoliokind matched
arguments
{
  "industry": "alle",
  "style": "alle"
}
I want to request quote on this site.ok
choserequest_quoteexpected request quotekind 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 151.0.7922.34)
chrome
151.0.7922.34
capture shim
v3
spec snapshot
2026-11-10
mode
fast
pages
1 - entry page only
tools
6
invoked
not invoked; a live audit calls them
run time
13s
finished
Nov 10, 2026
Checked the way in-browser agents discover tools: the top-level document's modelContext registry, read after the page settles.