fume.finance WebMCP audit

audited Sep 12, 2026in 12s
53/ 100100% of the applicable check weight evaluated

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

Shared experience50
Tool selection66
Tool quality88
Trust0
https://fume.finance
Captured view of https://fume.finance

Tools

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

search_tokenized_funds

Search Fume's Tokenized Fund Registry — tokenized investment funds with their manager, strategy, asset class, AUM, chain, token standard, fees and jurisdiction. Returns JSON; every fund carries a `url` to its page on this site.No behaviour hints declared. Agents should treat it as possibly state-changing.
pagehttps://www.fume.finance/
implementation
viaimperative
entry pointprovideContext
registered after462ms
executepresent
api surface
qoptional
chainoptional
assetClassoptional
jurisdictionoptional
statusoptional
limitoptional
annotations
read onlynot declared
untrusted contentnot declared
titlenot declared
2 findings
failCanonical entry point
weight 3
Every tool uses the removed provideContext API; register each tool with 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.)
search_tokenized_funds, search_fund_service_providers, search_fume_docs, read_page_as_markdown
fix
{
  name: "search_tokenized_funds",
  // 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": "search_tokenized_funds",
  "description": "Search Fume's Tokenized Fund Registry — tokenized investment funds with their manager, strategy, asset class, AUM, chain, token standard, fees and jurisdiction. Returns JSON; every fund carries a `url` to its page on this site.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "q": {
        "type": "string",
        "description": "Free-text search over name, manager, issuer, strategy and description."
      },
      "chain": {
        "type": "string",
        "description": "Blockchain to filter by, e.g. Ethereum, Arbitrum, Base."
      },
      "assetClass": {
        "type": "string",
        "description": "Asset class to filter by, e.g. Fixed Income, Private Credit."
      },
      "jurisdiction": {
        "type": "string",
        "description": "Jurisdiction to filter by, e.g. Luxembourg, Cayman Islands."
      },
      "status": {
        "type": "string",
        "description": "Fund status: live, upcoming or closed."
      },
      "limit": {
        "type": "integer",
        "description": "Maximum funds to return (1-200). Defaults to 50.",
        "minimum": 1,
        "maximum": 200
      }
    },
    "required": []
  },
  "annotations": {}
}
Showing search_tokenized_funds

Findings

Shared experience

50 / 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.
warningPage experience
weight 16
3 of 4 page-experience marks came back short: usable The page is mostly blank, with only a header and a cookie banner visible..
usable: weak; clarity: poor; obstruction: weak
warningHuman parity
weight 8
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 mostly blank, with only a header and a cookie banner...), 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;
}

Tool selection

66 / 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.
warningTool selection
weight 12
An agent chose an existing tool and built a schema-valid call that held up on 2 of 3 canonical intents; on "What other pages are in the same section?" no tool on the page served it. Nothing was executed, so this verifies selection, not outcomes.
warningCoverage vs. site type
weight 7
The tool set covers 2 of the 3 things an agent needs on a docs site; it cannot navigate the documentation tree.

Tool quality

88 / 100 · weight 25
passRegistration timing
weight 1
Every measured tool registered within 462ms of navigation.
toolsearch_fund_service_providers
failCanonical entry point
weight 3
Every tool uses the removed provideContext API; register each tool with document.modelContext.registerTool().
toolsearch_tokenized_funds
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 3 of 4 tool schemas that declare parameters describe them (the other 1 declares 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.
passRegistration errors
weight 2
No tool registration threw during the capture.
passDescription quality
weight 5
All 4 rated tool descriptions say what the tool does, when to use it, and what it returns.

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.)
toolsearch_tokenized_funds
search_tokenized_funds, search_fund_service_providers, search_fume_docs, read_page_as_markdown
fix
{
  name: "search_tokenized_funds",
  // 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

67% across 3 intents
Find the page that explains authentication.ok
chosesearch_fume_docsexpected docs searchkind matched
arguments
{
  "query": "authentication"
}
Read that page to me.ok
choseread_page_as_markdownexpected page readkind matched
arguments
{}
What other pages are in the same section?missed
choseno toolexpected navigationkind 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 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
12s
finished
Sep 12, 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.