audited Sep 2, 2026in 11s
60/ 100100% of the applicable check weight evaluated

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

Shared experience63
Task completion13
Tool quality92
Trust75
https://grounded-demo.keegangaffney.com
Captured view of https://grounded-demo.keegangaffney.com

Tools

5 read, 2 write
Loading map
create_assistance_request: warning

create_assistance_request

Queue one Assistance Request requiring a Point Set or text response from a Senior Project Manager. For a Point Set, include references to other immutable documents that support the requested judgment. Returns immediately with the durable request identity.Takes an action on the site.
pagehttps://grounded-demo.keegangaffney.com/
implementation
viaimperative
entry pointdocument
registered after271ms
executepresent
api surfaceTakes no parameters.
annotations
read onlyfalse
untrusted contenttrue
titlenot declared
1 finding
warningSchema validity
weight 4
2 of 7 declared input schemas cannot be read by an agent: create_assistance_request input schema declares type instead of "object".
create_assistance_request: input schema declares type  instead of "object"; inspect_document_evidence: input schema declares type  instead of "object"
fix
{
  name: "create_assistance_request",
  inputSchema: { type: "object", properties: { /* ... */ }, required: [] }
}
tool json
{
  "name": "create_assistance_request",
  "description": "Queue one Assistance Request requiring a Point Set or text response from a Senior Project Manager. For a Point Set, include references to other immutable documents that support the requested judgment. Returns immediately with the durable request identity.",
  "inputSchema": {
    "anyOf": [
      {
        "additionalProperties": false,
        "type": "object",
        "required": [
          "question",
          "responseType",
          "documentId",
          "documentVersionId",
          "recommendedPageIds"
        ],
        "properties": {
          "question": {
            "minLength": 1,
            "maxLength": 4000,
            "pattern": "\\S",
            "description": "One focused construction judgment or clarification for the Senior Project Manager.",
            "type": "string"
          },
          "responseType": {
            "description": "Use point_set when the response should identify marked document locations; use text for a plain-text response.",
            "const": "point_set",
            "type": "string"
          },
          "documentId": {
            "minLength": 1,
            "maxLength": 200,
            "description": "The immutable document ID on which a returned Point Set should be placed.",
            "type": "string"
          },
          "documentVersionId": {
            "minLength": 1,
            "maxLength": 200,
            "description": "The immutable document version on which a returned Point Set should be placed.",
            "type": "string"
          },
          "recommendedPageIds": {
            "maxItems": 25,
            "uniqueItems": true,
            "description": "Suggested starting pages for review, not a restriction on where the final response may point.",
            "type": "array",
            "items": {
              "minLength": 1,
              "maxLength": 200,
              "description": "A suggested starting page ID in the Point Set target document.",
              "type": "string"
            }
          },
          "supportingDocumentReferences": {
            "minItems": 1,
            "maxItems": 10,
            "description": "Immutable document and page references that support the judgment, distinct from the Point Set target document.",
            "type": "array",
            "items": {
              "additionalProperties": false,
              "type": "object",
              "required": [
                "documentId",
                "documentVersionId",
                "pageIds"
              ],
              "properties": {
                "documentId": {
                  "minLength": 1,
                  "maxLength": 200,
                  "description": "The immutable supporting evidence document ID.",
                  "type": "string"
                },
                "documentVersionId": {
                  "minLength": 1,
                  "maxLength": 200,
                  "description": "The immutable supporting evidence version paired with documentId.",
                  "type": "string"
                },
                "pageIds": {
                  "minItems": 1,
                  "maxItems": 25,
                  "uniqueItems": true,
                  "description": "One to twenty-five page IDs in the supporting document version that support the judgment.",
                  "type": "array",
                  "items": {
                    "minLength": 1,
                    "maxLength": 200,
                    "description": "A page ID in the supporting document version.",
                    "type": "string"
                  }
                }
              }
            }
          }
        }
      },
      {
        "additionalProperties": false,
        "type": "object",
        "required": [
          "question",
          "responseType"
        ],
        "properties": {
          "question": {
            "minLength": 1,
            "maxLength": 4000,
            "pattern": "\\S",
            "description": "One focused construction judgment or clarification for the Senior Project Manager.",
            "type": "string"
          },
          "responseType": {
            "description": "Use point_set when the response should identify marked document locations; use text for a plain-text response.",
            "const": "text",
            "type": "string"
          }
        }
      }
    ]
  },
  "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": true
  }
}
Showing create_assistance_request

Findings

Shared experience

63 / 100 · weight 30
warningPage experience
weight 20
3 of 4 page-experience marks came back short: usable The page is stuck rendering a PDF, making it unusable..
usable: weak; clarity: weak; obstruction: weak
warningHuman parity
weight 10
The page the person sees came back short of the agent surface (3 of 4 page-experience marks came back short: usable The page is stuck rendering a PDF, making it unusable..), so the two are not sharing an equal experience.
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 your_tool_name 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;
}

Task completion

13 / 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 "Open the document I was working on most recently." 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 3 things an agent needs on a editor site; it cannot edit or write content or save, publish, or share the result.

Tool quality

92 / 100 · weight 25
passRegistration timing
weight 1
Every measured tool registered within 272ms of navigation.
toolnavigate_document
passCanonical entry point
weight 3
All 7 tools register on the canonical document.modelContext entry point.
warningSchema validity
weight 4
2 of 7 declared input schemas cannot be read by an agent: create_assistance_request input schema declares type instead of "object".
toolcreate_assistance_request
create_assistance_request: input schema declares type  instead of "object"; inspect_document_evidence: input schema declares type  instead of "object"
fix
{
  name: "create_assistance_request",
  inputSchema: { type: "object", properties: { /* ... */ }, required: [] }
}
warningSchema quality
weight 4
1 of 7 tool schemas are harder for an agent to use than they need to be: navigate_document 1 parameter has no description (target).
toolnavigate_document
navigate_document: 1 parameter has no description (target)
fix
{
  name: "navigate_document",
  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: 2 names do not start with a verb (inspect_document_evidence).
toolinspect_document_evidence
fix
{ name: "inspect_document_evidence" /* short, unique, verb-based */ }
passStub detection
weight 4
All 7 tools declare an execute handler.
passRegistration errors
weight 2
No tool registration threw during the capture.
passDescription quality
weight 5
All 7 rated tool descriptions say what the tool does, when to use it, and what it returns.

Trust

75 / 100 · weight 20
passAnnotations present
weight 6
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.
passAnnotation mismatch
weight 6
No tool claims to be read-only while its own name or description says it writes (7 declared hints checked).
not applicableUntrusted content hint
weight 4
No tool's contract suggests it returns text written by somebody other than the site, so there is nothing to flag as untrusted.
warningInjection surface
weight 4
2 of 7 tools carry instruction-shaped text in their own metadata: get_project_workspace The description instructs the agent to introduce the project..
toolget_project_workspace
get_project_workspace: The description instructs the agent to introduce the project.; search_project_documents: The description instructs the agent on how to use the tool.
fix
{
  name: "get_project_workspace",
  // 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
Open the document I was working on most recently.missed
choseno toolexpected document openkind not applicable
No tool was picked for this intent.
arguments
{}
Add a short summary paragraph at the top.missed
choseno toolexpected content editkind not applicable
No tool was picked for this intent.
arguments
{}
Save it and give me a link I can share.missed
choseno toolexpected save or sharekind 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
7
run time
11s
finished
Sep 2, 2026
Checked the way in-browser agents discover tools: the top-level document's modelContext registry, read after the page settles.