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

5 tools registered. Strongest in tool selection, weakest in trust.

Shared experience87
Tool selection100
Tool quality89
Trust62
https://spreadfront.com
Captured view of https://spreadfront.com

Tools

3 read, 0 write, 2 undeclared
Loading map
get_spreadfront_info: warning

get_spreadfront_info

Information about the SpreadFront platform (turn a Google Sheet into a hosted online store). Pick a topic to get just that section, or "all" for everything: overview (what it is, principles, signup + live demo store URL), how_it_works (3-step setup), agentic_commerce (how stores support AI agents), payments (how merchants get paid, 0% commission), docs (guide/manual/terms links). Returns JSON with the requested sections: {topic, product?: {name, url, what, signupUrl, demoStoreUrl, principles[]}, howItWorks?: string[], agentic?: string, payments?: string, docs?: {guide, manual, terms, refunds}}.Answers a question. Declared read only.
pagehttps://spreadfront.com/
implementation
viaimperative
entry pointdocument
registered after88ms
executepresent
api surface
topicoptional
annotations
read onlytrue
untrusted contentnot declared
titlenot declared
1 finding
warningSchema quality
weight 4
3 of 5 tool schemas are harder for an agent to use than they need to be: get_spreadfront_info description is 601 characters, over Chrome's 500-character guidance.
get_spreadfront_info: description is 601 characters, over Chrome's 500-character guidance; copy_template_sheet: description is 724 characters, over Chrome's 500-character guidance; start_free_store: d
fix
{
  name: "get_spreadfront_info",
  inputSchema: {
    type: "object",
    properties: {
      query: { type: "string", description: "What to search for" }
    },
    required: ["query"]
  }
}
tool json
{
  "name": "get_spreadfront_info",
  "description": "Information about the SpreadFront platform (turn a Google Sheet into a hosted online store). Pick a topic to get just that section, or \"all\" for everything: overview (what it is, principles, signup + live demo store URL), how_it_works (3-step setup), agentic_commerce (how stores support AI agents), payments (how merchants get paid, 0% commission), docs (guide/manual/terms links). Returns JSON with the requested sections: {topic, product?: {name, url, what, signupUrl, demoStoreUrl, principles[]}, howItWorks?: string[], agentic?: string, payments?: string, docs?: {guide, manual, terms, refunds}}.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "topic": {
        "type": "string",
        "enum": [
          "overview",
          "how_it_works",
          "agentic_commerce",
          "payments",
          "docs",
          "all"
        ],
        "description": "Which section to return. Default \"overview\"."
      }
    }
  },
  "annotations": {
    "readOnlyHint": true
  }
}
Showing get_spreadfront_info

Findings

Shared experience

87 / 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
1 of 4 page-experience marks came back short: obstruction A cookie banner partially obscures the bottom of the page content..
obstruction: weak
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.
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

89 / 100 · weight 25
passRegistration timing
weight 1
Every measured tool registered within 88ms of navigation.
toolsearch_docs
passCanonical entry point
weight 3
All 5 tools register on the canonical document.modelContext entry point.
passSchema validity
weight 4
All 5 declared input schemas are structurally valid object schemas.
warningSchema quality
weight 4
3 of 5 tool schemas are harder for an agent to use than they need to be: get_spreadfront_info description is 601 characters, over Chrome's 500-character guidance.
toolget_spreadfront_info
get_spreadfront_info: description is 601 characters, over Chrome's 500-character guidance; copy_template_sheet: description is 724 characters, over Chrome's 500-character guidance; start_free_store: d
fix
{
  name: "get_spreadfront_info",
  inputSchema: {
    type: "object",
    properties: {
      query: { type: "string", description: "What to search for" }
    },
    required: ["query"]
  }
}
warningNaming quality
weight 2
Tool naming makes selection harder than it needs to be: 1 name does not start with a verb (copy_template_sheet).
toolcopy_template_sheet
fix
{ name: "copy_template_sheet" /* short, unique, verb-based */ }
passStub detection
weight 4
All 5 tools declare an execute handler.
passRegistration errors
weight 2
No tool registration threw during the capture.
passDescription quality
weight 5
All 5 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 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 5
No tool claims to be read-only while its own name or description says it writes (3 declared hints checked).
warningUntrusted content hint
weight 3
2 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.
toolcopy_template_sheet
copy_template_sheet: note, user; start_free_store: note, user, email
fix
{ name: "copy_template_sheet", 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
2 of 5 tools carry instruction-shaped text in their own metadata: copy_template_sheet Description instructs agent on tool preference and call sequence.
toolcopy_template_sheet
copy_template_sheet: Description instructs agent on tool preference and call sequence; start_free_store: Description instructs agent on tool preference and call sequence
fix
{
  name: "copy_template_sheet",
  // 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 spreadfront info on this site.ok
choseget_spreadfront_infoexpected get spreadfront infokind matched
arguments
{}
I want to search docs on this site.ok
chosesearch_docsexpected search docskind matched
arguments
{
  "query": ""
}
I want to copy template sheet on this site.ok
chosecopy_template_sheetexpected copy template sheetkind 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-08-26
mode
fast
pages
1 - entry page only
tools
5
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.
Listed in the community directory.