audited Sep 9, 2026in 14s
72/ 100100% of the applicable check weight evaluated

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

Shared experience87
Tool selection100
Tool quality86
Trust0
https://homemoneyfinder.com
Captured view of https://homemoneyfinder.com

Tools

0 read, 0 write, 4 undeclared
Loading map
find_homebuyer_options: fail

find_homebuyer_options

Run the Texas Homebuyer Money Finder assessment and return POSSIBLE Texas homebuyer-assistance program matches (grants, down-payment assistance, closing-cost help). Returns possible matches only — never a qualification, eligibility, or approval decision. No credit pull or SSN is used.No behaviour hints declared. Agents should treat it as possibly state-changing.
pagehttps://homemoneyfinder.com/
implementation
viaimperative
entry pointdocument
registered after609ms
executepresent
api surface
cityoptional
countyoptional
householdSizeoptional
incomeRangeoptional
firstTimeBuyeroptional
needDownPaymentoptional
veteranStatusoptional
occupationoptional
ruralOpenoptional
creditRangeoptional
priceRangeoptional
completedEducationoptional
annotations
read onlynot declared
untrusted contentnot declared
titlenot declared
2 findings
warningCanonical entry point
weight 3
2 of 4 tools use the removed provideContext API instead of document.modelContext.registerTool().
fix
// document.modelContext is the canonical entry point - the navigator.modelContext alias is deprecated.
document.modelContext.registerTool({ /* ... */ });
failAnnotations present
weight 5
4 of 4 read-shaped tools do not declare readOnlyHint: true, so an agent has to treat them as possible writes and ask before calling. (Declaring readOnlyHint: false earns nothing - it is the default.)
find_homebuyer_options, get_valid_inputs, find_homebuyer_options, get_valid_inputs
fix
{
  name: "find_homebuyer_options",
  // Declare readOnlyHint: true on tools that truly have no side effects -
  // that is the claim that lets an agent relax confirmation on reads.
  // (false is the default, so declaring it adds no information.)
  annotations: { readOnlyHint: true }
}
tool json
{
  "name": "find_homebuyer_options",
  "description": "Run the Texas Homebuyer Money Finder assessment and return POSSIBLE Texas homebuyer-assistance program matches (grants, down-payment assistance, closing-cost help). Returns possible matches only — never a qualification, eligibility, or approval decision. No credit pull or SSN is used.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "city": {
        "type": "string",
        "description": "City where the buyer intends to purchase."
      },
      "county": {
        "type": "string",
        "description": "County where the buyer intends to purchase."
      },
      "householdSize": {
        "type": "integer",
        "description": "Number of people in the household.",
        "minimum": 1
      },
      "incomeRange": {
        "type": "string",
        "enum": [
          "under_40k",
          "40k_60k",
          "60k_80k",
          "80k_100k",
          "100k_120k",
          "120k_140k",
          "over_140k"
        ],
        "description": "Approximate annual household income range."
      },
      "firstTimeBuyer": {
        "type": "string",
        "enum": [
          "yes",
          "no",
          "not_sure"
        ],
        "description": "Whether the buyer has owned a home in the last 3 years."
      },
      "needDownPayment": {
        "type": "string",
        "enum": [
          "down_payment",
          "closing_costs",
          "both",
          "not_sure"
        ],
        "description": "Type of assistance the buyer is seeking."
      },
      "veteranStatus": {
        "type": "string",
        "enum": [
          "none",
          "veteran",
          "active_duty",
          "national_guard",
          "surviving_spouse"
        ],
        "description": "Military service status, if any."
      },
      "occupation": {
        "type": "string",
        "enum": [
          "none",
          "teacher",
          "nurse",
          "first_responder",
          "corrections",
          "other_public",
          "other"
        ],
        "description": "Profession-based pathway factor, if any."
      },
      "ruralOpen": {
        "type": "string",
        "enum": [
          "yes",
          "no",
          "maybe"
        ],
        "description": "Whether the buyer is open to a rural or small-town property."
      },
      "creditRange": {
        "type": "string",
        "enum": [
          "below_580",
          "580_619",
          "620_639",
          "640_679",
          "680_plus"
        ],
        "description": "Self-estimated credit score range (no credit is pulled)."
      },
      "priceRange": {
        "type": "string",
        "enum": [
          "under_200k",
          "200k_300k",
          "300k_400k",
          "400k_500k",
          "over_500k"
        ],
        "description": "Target purchase price range."
      },
      "completedEducation": {
        "type": "string",
        "enum": [
          "yes",
          "no",
          "started"
        ],
        "description": "Homebuyer education status."
      }
    },
    "required": [],
    "additionalProperties": false
  },
  "annotations": {}
}
Showing find_homebuyer_options

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: readability The text is difficult to read due to low contrast with the background..
readability: 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 2 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

86 / 100 · weight 25
passRegistration timing
weight 1
Every measured tool registered within 610ms of navigation.
toolget_valid_inputs
warningCanonical entry point
weight 3
2 of 4 tools use the removed provideContext API instead of document.modelContext.registerTool().
toolfind_homebuyer_options
fix
// document.modelContext is the canonical entry point - the navigator.modelContext alias is deprecated.
document.modelContext.registerTool({ /* ... */ });
passSchema validity
weight 4
All 4 declared input schemas are structurally valid object schemas.
passSchema quality
weight 4
All 2 of 4 tool schemas that declare parameters describe them (the other 2 declare no parameters), and every description stays within Chrome's size guidance.
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.
failRegistration errors
weight 2
2 tool registrations threw during the capture, so the registry an agent reads is incomplete.
duplicate tool name registered: find_homebuyer_options
fix
document.modelContext.registerTool({ /* ... */ }).catch(function (err) {
  console.error("WebMCP registration failed", err);
});
passDescription quality
weight 5
All 2 rated tool descriptions say what the tool does, when to use it, and what it returns. 2 of 4 tools were not rated and are excluded from this score.

Trust

0 / 100 · weight 20
failAnnotations present
weight 5
4 of 4 read-shaped tools do not declare readOnlyHint: true, so an agent has to treat them as possible writes and ask before calling. (Declaring readOnlyHint: false earns nothing - it is the default.)
toolfind_homebuyer_options
find_homebuyer_options, get_valid_inputs, find_homebuyer_options, get_valid_inputs
fix
{
  name: "find_homebuyer_options",
  // Declare readOnlyHint: true on tools that truly have no side effects -
  // that is the claim that lets an agent relax confirmation on reads.
  // (false is the default, so declaring it adds no information.)
  annotations: { readOnlyHint: true }
}
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 applicableInjection surface
weight 3
No tool's metadata carries instruction-shaped text aimed at the agent reading it. This check only ever flags; it never credits a site.

Tool selection

100% across 2 intents
I want to find homebuyer options on this site.ok
chosefind_homebuyer_optionsexpected find homebuyer optionskind matched
arguments
{
  "city": "Austin",
  "county": "Travis",
  "householdSize": 2,
  "incomeRange": "80k_100k",
  "firstTimeBuyer": "yes",
  "needDownPayment": "both",
  "veteranStatus": "no"
}
I want to get valid inputs on this site.ok
choseget_valid_inputsexpected get valid inputskind 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
4
invoked
not invoked; a live audit calls them
run time
14s
finished
Sep 9, 2026
Checked the way in-browser agents discover tools: the top-level document's modelContext registry, read after the page settles.