oxom.de WebMCP audit

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

5 tools registered. Strongest in task completion, weakest in trust.

Shared experience75
Task completion100
Tool quality87
Trust0
https://oxom.de
Captured view of https://oxom.de

Tools

0 read, 0 write, 5 undeclared
Loading map
oxom_check_workspace_slug: warning

oxom_check_workspace_slug

Check whether a workspace slug is still available on oxom, before someone tries to sign up with it. Returns availability for the exact slug given.No behaviour hints declared. Agents should treat it as possibly state-changing.
pagehttps://oxom.de/
implementation
viaimperative
entry pointnavigator
registered after475ms
executepresent
api surface
slugrequired
annotations
read onlynot declared
untrusted contentnot declared
titlenot declared
2 findings
warningCanonical entry point
weight 3
Every tool registers through the deprecated navigator.modelContext alias; move them to document.modelContext before the alias is removed.
fix
// document.modelContext is the canonical entry point - the navigator.modelContext alias is deprecated.
document.modelContext.registerTool({ /* ... */ });
warningNaming quality
weight 2
Tool naming makes selection harder than it needs to be: 5 names do not start with a verb (oxom_check_workspace_slug).
fix
{ name: "oxom_check_workspace_slug" /* short, unique, verb-based */ }
tool json
{
  "name": "oxom_check_workspace_slug",
  "description": "Check whether a workspace slug is still available on oxom, before someone tries to sign up with it. Returns availability for the exact slug given.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "slug": {
        "type": "string",
        "description": "The desired workspace slug, lowercase letters, digits and hyphens (for example 'easystretcher').",
        "pattern": "^[a-z0-9-]{1,64}$"
      }
    },
    "required": [
      "slug"
    ]
  },
  "annotations": {}
}
Showing oxom_check_workspace_slug

Findings

Shared experience

75 / 100 · weight 30
warningPage experience
weight 20
2 of 4 page-experience marks came back short: usable The page is mostly blank with only a header and a search bar visible..
usable: weak; clarity: weak
warningHuman parity
weight 10
The page the person sees came back short of the agent surface (2 of 4 page-experience marks came back short: usable The page is mostly blank with only a header and a search bar vis...), 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

100 / 100 · weight 25
passTool selection
weight 15
An agent chose an existing, callable tool and built a schema-valid call for all 1 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 10
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

87 / 100 · weight 25
passRegistration timing
weight 1
Every measured tool registered within 476ms of navigation.
tooloxom_agent_resources
warningCanonical entry point
weight 3
Every tool registers through the deprecated navigator.modelContext alias; move them to document.modelContext before the alias is removed.
tooloxom_check_workspace_slug
fix
// document.modelContext is the canonical entry point - the navigator.modelContext alias is deprecated.
document.modelContext.registerTool({ /* ... */ });
passSchema validity
weight 4
All 5 declared input schemas are structurally valid object schemas.
passSchema quality
weight 4
All 3 of 5 tool schemas that declare parameters describe them (the other 2 declare 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: 5 names do not start with a verb (oxom_check_workspace_slug).
tooloxom_check_workspace_slug
fix
{ name: "oxom_check_workspace_slug" /* 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

0 / 100 · weight 20
not applicableAnnotations present
weight 6
No tool name reads like a read, and an absent readOnlyHint already defaults to "this may write" - the one hint worth declaring here is readOnlyHint: true on read tools, and this set has none to declare it on.
not applicableAnnotation mismatch
weight 6
No tool declares a readOnlyHint, so there is no safety claim to contradict.
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
4 of 5 tools carry instruction-shaped text in their own metadata: oxom_get_pay_offer description instructs agent when to use tool.
tooloxom_get_pay_offer
oxom_get_pay_offer: description instructs agent when to use tool; oxom_navigate: description instructs agent when to use tool; oxom_when_to_use: description instructs agent how and when to use tool; oxom_agent_resources: description instructs agent when to use tool
fix
{
  name: "oxom_get_pay_offer",
  // 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 1 intents
I want to oxom check workspace slug on this site.ok
choseoxom_check_workspace_slugexpected oxom check workspace slugkind matched
arguments
{
  "slug": "easystretcher"
}
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
5
run time
14s
finished
Sep 2, 2026
Checked the way in-browser agents discover tools: the top-level document's modelContext registry, read after the page settles.