Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

io.github.waterfallbridge/mcp

NPM · @WATERFALLBRIDGE/MCP · SCANNED AUG 8

Explain why any KPI or rate metric changed: bridge/variance analysis by driver, from CSV/Excel.

+51 this week 51 Trust /100
Trust breakdown (6 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score →

Supply Chain Security87
  • No malware found by supply-chain analysis.Pass
  • CVE check failed: a known medium-severity CVE affects @hono/node-server 1.19.17, a direct dependency. A fixed version is available. View diagnostics → Fail
  • No install/post-install scripts declared.Pass
  • 87 of 184 dependencies flagged as unhealthy (6 deprecated). View diagnostics → Partial
Provenance & Transparency19
  • Repository check failed: the declared repository URL returned HTTP 404. See how to fix → View diagnostics → Fail
  • Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 61 days ago).Pass
  • Security-disclosure policy not yet verified: we couldn't inspect the source repository.Unverified
Schema Quality & AI Usability30
  • AI-judged instruction clarity (poor).Fail
  • Context-footprint check failed: tool/resource definitions use about 9269 tokens (~181/item across 51 items; 51 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management0
  • Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass

Unverified: 1 category

A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

Install

Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.

npm · @waterfallbridge/mcp

# add to Claude Code
claude mcp add waterfallbridge-mcp -- npx -y @waterfallbridge/mcp
# add to Codex CLI
codex mcp add waterfallbridge-mcp -- npx -y @waterfallbridge/mcp
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "waterfallbridge-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@waterfallbridge/mcp"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add waterfallbridge-mcp --command npx --arg -y --arg @waterfallbridge/mcp
# ~/.hermes/config.yaml
mcp_servers:
  waterfallbridge-mcp:
    command: "npx"
    args: ["-y", "@waterfallbridge/mcp"]
// mcp.json
{
  "mcpServers": {
    "waterfallbridge-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@waterfallbridge/mcp"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 7 Aug 26 +3
    • Dependency health: partial → 0.78 functional
  • 6 Aug 26 +21
    • Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window). security
    • MCP protocol: unverified → pass functional
    • Tool coverage: unverified → 100 functional
    • First check of Schema quality: poor functional
    • First check of Tool coverage: 100 functional
    • First check of Schema quality: fail functional
    • First check of Schema quality: fail functional
  • 5 Aug 26 0
    • CVE-2026-69207 no longer affects this package security
  • 4 Aug 26 0
    • CVE-2026-69207 affects this package: medium security
  • 2 Aug 26 +27
    • GHSA-frvp-7c67-39w9 affects this package: medium security
    • CVE-2026-41907 affects this package: medium security
    • Provenance: unverified → fail security
    • Known CVEs: unverified → fail security
    • Install scripts: unverified → pass security
    • Malware scan: unverified → pass security
    • Stability: Stability not yet verified: our sandbox run of this package did not complete, so we have no schema to compare. security
    • License: unverified → pass functional
    • Dependency health: unverified → partial functional
    • Maintenance: unverified → pass functional
    • Tool coverage: Tool coverage not yet verified: our sandbox run of this package did not complete, so we have no tool definitions to assess. functional
    • Schema quality: Schema quality not yet verified: our sandbox run of this package did not complete, so we have no schema to assess. functional
    • Capabilities: Protocol version not yet verified: our sandbox run of this package did not complete, so we never saw its MCP handshake. functional
    • Licence: MIT functional
  • 31 Jul 26 −18
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 30 Jul 26 0
    • Tool coverage: Tool coverage not yet verified: our sandbox run of this package did not complete, so we have no tool definitions to assess. functional
    • Schema quality: Schema quality not yet verified: our sandbox run of this package did not complete, so we have no schema to assess. functional
  • 27 Jul 26 18

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 8 Aug 2026 · Analysed npm/@waterfallbridge/[email protected]

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem npm
Vulnerabilities 2 findings
ID CVE Severity Vector Fix available
GHSA-frvp-7c67-39w9 medium CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N yes
GHSA-w5hq-g745-h8pq CVE-2026-41907 high CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N yes
Dependencies 184 packages
Packages resolved 184
Deprecated 6
Stale 84
Tree resolution Complete
MCP tools · 51 exposed · ~8,751 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.

Tool Tokens
check_data_preparation ~311

Validate that a source file is in the FLAT, one-dimensional 'tidy data' layout WaterfallBridge requires (see https://www.waterfallbridge.com/data-preparation). Detects merged cells, crosstab/pivot layouts, cross-row or cross-sheet / non-arithmetic formulas, title rows above the table, mixed-type columns and stray summary rows. CALL THIS FIRST — right after the worksheet is chosen and BEFORE inspect_local_file / suggest_bridge_schema / prepare_bridge_xlsx or any Data-Type work. When it returns blocking issues (uiHint.requiresConfirmation=true) the data is NOT ready: the structural problems require the USER to reshape the data (you must NOT guess an unpivot or delete rows yourself). How to surface the issues depends on your environment: the WaterfallBridge Web AI Panel shows a fix-it card (the user's confirmation arrives as the next user message); in any other MCP host (Cursor / Codex / Claude Desktop) there is NO panel — list each issue's howToFix to the user in chat, then call this tool again after they edit & re-save the file. Either way write a one-sentence summary and STOP this turn.

NameTypeReqDescription
source_filestringyesAbsolute path to the user's source CSV / XLSX / XLSM / TSV file.
source_sheetstringWorksheet to check (xlsx/xlsm only). Defaults to the first non-empty sheet. On a multi-sheet workbook pass the sheet the user confirmed via select_source_sheet.

No output schema declared.

No examples provided.

close_app ~31

Close the controlled browser and end the automation session. Persisted login state is retained for the next open_app call.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

delete_local_file ~48

Delete a file (NOT a directory) inside an allowed root. The AI should confirm with the user before calling this.

NameTypeReqDescription
file_pathstringyesAbsolute path of the file to delete.

No output schema declared.

No examples provided.

dismiss_dialog ~52

Dismiss any currently visible dialog (error panel, progress complete, or confirmation prompt).

NameTypeReqDescription
actionstring'confirm' clicks the primary button; 'cancel' clicks the cancel button. Defaults to 'confirm'.

No output schema declared.

No examples provided.

export_report ~77

Open the AppHeader 'Report' dialog and download the Bridge analysis report as a PDF. Requires a successful Bridge run first.

NameTypeReqDescription
target_pathstringOptional absolute file path to save the PDF report to (e.g. C:/Users/me/Documents/MyBridge.pdf). When omitted the file is kept in Playwright's temp download dir.

No output schema declared.

No examples provided.

export_xlsx ~118

Export the current workbook or Bridge analysis result as an Excel file. Returns the absolute path the file was written to.

NameTypeReqDescription
target_pathstringOptional absolute file path to save the exported XLSX to. When set, the file is moved to this path and `path` is returned. When omitted, the file lands in Playwright's temp download dir (returned in…
typestring'workbook' exports the full workbook; 'bridge' exports only the Bridge result sheet. Defaults to 'bridge'.

No output schema declared.

No examples provided.

forget_session ~62

Delete a persisted login session. The next open_app call for this (url, email) pair will return needsLogin: true.

NameTypeReqDescription
emailstringyesAccount email of the session to forget.
urlstringyesOrigin URL of the session to forget.

No output schema declared.

No examples provided.

get_active_dialog ~66

Inspect the currently open dialog / overlay (error, progress, confirm, subscription, upgrade, expiry, welcome, trial-ended, notifications, export-report). Returns { kind: 'none' } when nothing is open. Useful BEFORE calling dismiss_dialog to know what the user is being asked.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_chart_data ~31

Get the waterfall chart data from the most recent analysis: labels, values, total positions, and number format.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_contribution_table ~98

Read the Contribution Analysis table from the Bridge sheet (column E and right). Returns headers, product names, and a 2-D values matrix. Returns null if Bridge has not been built yet. Use this (with get_chart_data + get_insights) to write a DETAILED final analysis: call out the biggest positive/negative contributors BY NAME with their values, plus Added/Removed Data rows — don't just restate the headline.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_data_sheet_preview ~170

Get a compact JSON snapshot of a Bridge Data sheet. Sheet layout: column A is the Bridge label column (A1='Data Type', A2='Header', A3='Data', A4+ empty); user data lives in columns B onwards (Row 1 Data Types, Row 2 Field Names, Row 3+ values). Use this before deciding what to edit. Column letters/indices returned by this tool are SHEET coordinates: the first user column is 'B' (index 1), never 'A' (index 0).

NameTypeReqDescription
sample_rowsintegerHow many leading data rows (after the Data Type / Field Name header rows) to include in `sample`. Defaults to 5.
sheetstringSheet name. Defaults to 'Data'.

No output schema declared.

No examples provided.

get_dimensions ~29

Get available dimension fields and their current Baseline / Comparison filter selections. Useful before running a filtered analysis.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_insights ~82

Get the auto-generated Key Findings (level 0/1/2 insights) for the most recent Bridge run. Each insight has tone (positive/negative/neutral) and inline emphasis hints. Use this — together with get_chart_data and get_contribution_table — as raw material for a thorough, number-cited final analysis (not just a one-line summary).

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_notifications ~38

Get a snapshot of the user's notifications inbox: items (id, title, message, url, type, isRead), unreadCount, readCount.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_result ~29

Get the result of the last Bridge analysis: success status, errors, and the full waterfall chart payload.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_sheet_names ~30

List all visible & hidden sheet names in the current workbook. Useful before reading or editing a particular sheet.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_source_sheet_preview ~178

Preview the first rows of a worksheet straight from the SOURCE FILE on disk (NOT the loaded workbook — use get_data_sheet_preview for that). Use it to compare on-disk source data against what is currently loaded in the app (e.g. to verify a user's manual edit was saved, or to see the raw layout before preparing it). Returns rows verbatim as text arrays plus a content signature.

NameTypeReqDescription
preview_rowsintegerHow many rows from the top to return (default 6, max 50).
source_filestringyesAbsolute path to the source CSV / XLSX / XLSM / TSV file.
source_sheetstringWorksheet to read (xlsx/xlsm only). Defaults to the first non-empty sheet. On a multi-sheet workbook pass the sheet the user confirmed via select_source_sheet.

No output schema declared.

No examples provided.

get_status ~32

Get the current status of the WaterfallBridge app: login state, subscription, bridge progress, errors, current file.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_subscription ~47

Get the user's subscription state: status (active/trialing/expired/…), planType (free/online/complete), accessExpiresAt, isDemo. Use this before suggesting an upgrade.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

grant_path_access ~190

Authorize the Agent to access an additional directory. This is the user's explicit consent — call only after the user has agreed in chat to allow access to the path (or when the user has typed the command directly). Cannot grant access to system directories (Windows / Program Files / other apps' AppData).

NameTypeReqDescription
modestring'read' = list/inspect/read only. 'readwrite' = also allows write_local_file / delete_local_file. Default: 'read'.
notestringFree-form reason recorded in the audit log.
pathstringyesAbsolute directory (or file) path to authorize. The grant covers the path and all of its descendants.
scopestring'session' = forgotten on Agent exit. 'persistent' = saved to <dataDir>/granted-roots.json and reloaded on next start. Default: 'session'.

No output schema declared.

No examples provided.

inspect_local_file ~169

Peek at the structure of a local data file: detect format, list sheet names (for .xlsx), extract headers, infer column types, and return the first few rows. Use this before deciding how to map data into WaterfallBridge format. GATE: on a multi-sheet workbook called WITHOUT a `sheet`, this returns { success:false, blocked:true, sheets:[…] } — ask the user which worksheet to use, then re-call with that `sheet` name (do NOT guess the tab).

NameTypeReqDescription
file_pathstringyesAbsolute path to the file to inspect.
preview_rowsintegerNumber of preview rows to return (default 20, max 200).
sheetstringWorksheet name (for .xlsx). Defaults to the first non-empty sheet.

No output schema declared.

No examples provided.

list_granted_paths ~50

List every directory the AI can currently read/write, including the static WB_FS_ALLOWED_ROOTS white-list, any user-granted paths from previous sessions (persistent), and any granted just for this session.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

list_local_files ~101

List files in a directory. Without a directory argument, returns the set of folders the AI is allowed to browse on this machine.

NameTypeReqDescription
directorystringAbsolute directory path to list. If omitted, returns the set of allowed roots configured for the Agent (Downloads / Desktop / Documents by default).
patternstringOptional case-insensitive substring filter applied to file names (not paths). Use this to find 'sales*.xlsx' style matches.

No output schema declared.

No examples provided.

list_sessions ~35

List all persisted login sessions known to the Agent (origin + email + last update). Useful when deciding which session open_app should use.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

login ~93

Perform a one-time interactive login and persist the resulting session so future open_app calls do not need credentials. The password is used exactly once and never written to disk.

NameTypeReqDescription
emailstringyesAccount email.
passwordstringyesAccount password. After successful login the session is encrypted (DPAPI on Windows) and the password itself is NOT stored.
urlstringDefaults to the configured WB_DEFAULT_URL.

No output schema declared.

No examples provided.

new_bridge_template ~102

Clear the current workbook and create a fresh Bridge template with a blank Data sheet. Layout: column A = label column (A1='Data Type', A2='Header', A3='Data', A4+ empty); columns B onwards are the user data area (Row 1 = Data Type dropdown, Row 2 = Field Name, Row 3+ = values). Equivalent to clicking 'New Template' in the Analysis Panel. Disabled in Demo Mode.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

open_app ~484

Open the WaterfallBridge web app in a controlled Chromium instance. Restores a persisted login session when available; otherwise opens a visible sign-in window and blocks until the user signs in by hand. The password never leaves the browser — neither the AI nor the Agent process ever sees it. After a successful manual sign-in, the resulting session is persisted so subsequent open_app calls skip authentication. RESULT SHAPES — the AI MUST inspect these BEFORE calling any other tool: • { success: true, mode: 'restored'|'already-logged-in'|'manual-login' } → Logged in, OK to proceed. • { success: false, actionRequired: 'user-must-sign-in', ... } → STOP. Show `userMessage` to the user verbatim. If the user has no account yet, point them to the 'Register' link on the same sign-in page (new accounts get a free Complete trial). Do NOT call upload_file / run_bridge / etc. until the user reports back that sign-in (or registration) succeeded, then re-call open_app to verify. If `wait_for_manual_login` is false (or the process is running headless), only the second shape is returned — no blocking.

NameTypeReqDescription
emailstringOptional. When provided alongside a previously saved session for the same URL+email, the saved session is restored instead of the most recently used one. Credentials are NOT required here.
login_timeout_msintegerHow long (milliseconds) to wait for the user to finish signing in before timing out. Default 300000 (5 min). Max 1800000 (30 min).
urlstringWaterfallBridge app URL. Defaults to the configured WB_DEFAULT_URL (http://127.0.0.1:5173/app/ in dev, https://waterfallbridge.com/app/ in prod).
wait_for_manual_loginbooleanWhen no saved session exists and this is true (default), the tool opens a visible Chromium window on the sign-in page and waits for the user to authenticate themselves. The AI MUST tell the user to c…

No output schema declared.

No examples provided.

open_notifications ~31

Open the Notifications panel for the user (handy after `get_notifications` indicates unread items the user should see).

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

open_subscription_modal ~37

Open the Subscription / billing modal in the UI so the user can change their plan or manage payment. The AI never handles credit-card data.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

open_upgrade_modal ~67

Open the Upgrade modal asking the user to pick a paid plan, optionally with a reason that explains why (row limits, premium features, etc.).

NameTypeReqDescription
reasonstringShort human-readable reason shown to the user (e.g. 'Your dataset exceeds the Free Plan row limit.').

No output schema declared.

No examples provided.

prepare_bridge_xlsx ~1,936

Convert a user's local data file into a WaterfallBridge-ready Excel workbook. ═══ What is preserved from the source xlsx ═══ • Source-cell FORMULAS on SumY / SumN columns are re-emitted in the target file (column letters + row numbers automatically remapped). Bridge's remoteFormulaBreakdown service depends on these formulas to decompose the Result into per-input drivers, so this is not just cosmetic — dropping a formula degrades the analysis quality. • Source row-2 NUMBER FORMATS (e.g. '#,##0', '0.00%', '$#,##0') are copied onto target row 3 cells. Bridge's engine reads the first data row's numFmt to pick chart and contribution-table display formats. numFmt priority per output column: (1) `num_fmt` explicitly set on the column_map entry (use this for Result columns where you want '0.00%' even though there is no source cell to inherit from); (2) inherited from the source column's row-2 numFmt — works for any column that declared `source`, INCLUDING Result columns that point at a source column purely to inherit its format (the Result row data still comes from `formula`, not from the source cells). • Formulas referencing columns NOT in column_map fall back to the cached scalar value (the file still opens cleanly). Return values `preservedFormulaCells` / `droppedFormulaCells` / `appliedNumFmtCells` report what happened. ═══ Sheet layout (FIXED — required by Bridge) ═══ Column A — Bridge label column. Only A1/A2/A3 are populated with the literal strings 'Data Type', 'Header', 'Data'. Rows A4+ stay empty. This column is auto-emitted by prepare_bridge_xlsx; do NOT include it in column_map. Column B onwards — your data columns. Row 1 = Data Type (Dimension/Key/SumY/SumN/Result), Row 2 = Field Name, Row 3+ = values. column_map[0] → sheet column B, column_map[1] → C, etc. Result formulas reference sheet letters (e.g. '=E3-F3'). IMPORTANT:…

NameTypeReqDescription
column_maparrayyesOrdered list of output columns. The first entry is written to sheet column B, the second to column C, etc. (Sheet column A is reserved for the Bridge label column — 'Data Type' in A1, 'Header' in A2,…
confirm_data_prepbooleanData-preparation gate override. Leave UNSET normally. If the source file still has BLOCKING data-prep issues this tool returns { blocked:true } instead of running — fix the file (or have the user fix…
inline_rowsarrayInline data as an array of objects keyed by source column name. Useful when the AI synthesizes a small dataset on the fly.
output_pathstringOPTIONAL absolute output path for the generated workbook (must be inside an allowed root and end with .xlsx). LEAVE IT UNSET in the normal flow: this workbook is just the Bridge-ready INPUT that gets…
overwritebooleanIf false (default), fails when output_path already exists. The AI should normally confirm with the user before setting this to true.
preview_onlybooleanIf true, validate the plan and return the first 10 transformed rows without writing the file. Useful for the AI to confirm with the user.
source_filestringAbsolute path to a CSV / XLSX / TSV source file. Either source_file or inline_rows is required.
source_sheetstringWorksheet name to read from source_file (xlsx only). Defaults to the first non-empty sheet.

No output schema declared.

No examples provided.

read_local_file ~182

Read a local CSV / XLSX / TSV / TXT file. Returns parsed rows as an array of objects when possible. Bound by WB_FS_MAX_BYTES and WB_FS_MAX_ROWS. GATE: on a multi-sheet workbook called WITHOUT a `sheet` (and not as_text), this returns { success:false, blocked:true, sheets:[…] } — ask the user which worksheet to use, then re-call with that `sheet` name (do NOT guess the tab).

NameTypeReqDescription
as_textbooleanIf true, return the file's raw UTF-8 text instead of parsing. Useful for JSON / TXT inspection.
file_pathstringyesAbsolute path to the file to read.
max_rowsintegerCap the number of data rows returned (defaults to WB_FS_MAX_ROWS).
sheetstringWorksheet (xlsx only).

No output schema declared.

No examples provided.

read_sheet ~150

Read a rectangular range of the workbook as a 2-D array of values. Returns null if the sheet does not exist. For the 'Data' sheet, remember that column A is the Bridge label column (A1='Data Type', A2='Header', A3='Data', A4+ empty) and user data lives in B onwards. To inspect just the user portion read e.g. 'B1:Z100'; to verify the labels read 'A1:A3'.

NameTypeReqDescription
rangestringOptional A1-style range, e.g. 'A1:E20'. Omit to read the sheet's used range.
sheetstringyesSheet name (case-sensitive).

No output schema declared.

No examples provided.

refresh_bridge ~176

RE-RUN the Bridge analysis using the CURRENT Baseline_Filters / Comparison_Filters selections. Equivalent to clicking 'Run Analysis' in the Analysis Panel. PRESERVES filter selections (this is the key difference vs run_bridge). STANDARD WORKFLOW for filter-driven analysis: 1. `upload_file` + `run_bridge` (first build, all filters selected) 2. `set_baseline { field, values }` 3. `set_comparison { field, values }` 4. `refresh_bridge` ← THIS TOOL (re-runs with the new selections) 5. `get_result` / `get_contribution_table` Requires `run_bridge` to have been called at least once on the currently loaded data (otherwise the 'Run Analysis' button is disabled).

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

reset_analysis ~135

Clear the residual analysis state — the last Bridge result, errors, AI insight, dimension fields and Baseline/Comparison filter selections — WITHOUT unloading the workbook or signing the user out. WHY: the app is stateful and shared across conversations. Leftover result/filters from a PREVIOUS request must not be mistaken for the current request's answer. Call this at the START of a fresh analysis (before `upload_file` / `run_bridge`) so you build from a clean slate. It does NOT rebuild anything — follow it with the normal pipeline (`upload_file` → `run_bridge` → set filters → `refresh_bridge`).

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

reset_filters ~29

Reset both Baseline and Comparison selections so every dimension is fully selected ('Select All' on both sides).

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

revoke_path_access ~58

Remove a previously granted directory access. Static white-list entries (from WB_FS_ALLOWED_ROOTS) cannot be revoked at runtime — edit the environment variable instead.

NameTypeReqDescription
pathstringyesAbsolute path of the grant to revoke (must match exactly).

No output schema declared.

No examples provided.

run_analysis ~138

Re-run the Bridge analysis with the CURRENT Baseline / Comparison selections. Equivalent to clicking 'Run Analysis' in the panel. Functionally identical to `refresh_bridge` — both PRESERVE filter selections (unlike `run_bridge`, which is the 'Build Bridge' button and would reset filters). This tool dispatches a refresh event via the JS API; `refresh_bridge` clicks the UI button. Prefer `refresh_bridge` unless you have a reason not to.

NameTypeReqDescription
wait_for_completionbooleanIf true (default), block until analysis finishes and return the result. If false, dispatch and return immediately — poll get_status / get_result.

No output schema declared.

No examples provided.

run_bridge ~233

BUILD a fresh Bridge analysis from the currently loaded Data sheet. Equivalent to clicking 'Build Bridge' (or 'New Bridge') in the app UI. ⚠ SIDE EFFECT: this rebuilds every internal sheet (BaselinePT, ComparisonPT, Bridge Data, Process, Bridge, …) AND RESETS the Baseline_Filters / Comparison_Filters sheets to the default 'select all' state. Any prior `set_baseline` / `set_comparison` choices are LOST when you call this. WHEN TO USE: • First time after `upload_file` (no Bridge structure exists yet). • After re-uploading or significantly editing the Data sheet. • When you explicitly want to reset filters back to 'all selected'. DO NOT USE after `set_baseline` / `set_comparison` — those changes will be overwritten. Use `refresh_bridge` instead (it preserves the filter selections and just re-runs the calculation).

NameTypeReqDescription
wait_for_completionbooleanIf true (default), block until the analysis finishes and return the result. If false, return immediately and poll with get_status.

No output schema declared.

No examples provided.

save_workbook ~332

Persist the current workbook so the user can keep it. WaterfallBridge stores no user data on the server, and the Agent-controlled Chromium has its own IndexedDB profile that is isolated from the user's daily browser. By default this tool therefore does BOTH of the following: 1. Save the Univer snapshot to the Agent Chromium's IndexedDB (equivalent to Ctrl+S inside that window). 2. Export an .xlsx copy to <UserHome>/Downloads so the user can import it from their regular browser (or open it in Excel). Disable either side via `to_browser=false` / `export_to_disk=false`. Returns the exported file path so the AI can tell the user where their result was saved.

NameTypeReqDescription
export_pathstringOptional absolute path for the exported .xlsx. Defaults to <UserHome>/Downloads/WaterfallBridge-AI-<timestamp>.xlsx. Ignored when export_to_disk=false.
export_to_diskbooleanWhen true (default), also export an .xlsx copy of the workbook to the user's Downloads folder so the user can later import it from their regular browser. This is what makes the AI's work user-visible…
to_browserbooleanWhen true (default), persist the workbook to the Agent-controlled Chromium's IndexedDB — equivalent to clicking Save / pressing Ctrl+S inside that window. NOTE: this storage is local to the Agent's C…

No output schema declared.

No examples provided.

select_source_sheet ~278

List every worksheet in an .xlsx/.xlsm workbook with its row/column counts, a header preview, and whether it already looks like a Bridge 'Data' sheet. CALL THIS BEFORE inspect_local_file / suggest_bridge_schema / prepare_bridge_xlsx WHENEVER a workbook has more than one worksheet — do NOT guess which tab the user means. When the workbook has 2+ non-empty sheets the result carries uiHint.requiresConfirmation=true. How to surface the choice depends on your environment: the WaterfallBridge Web AI Panel renders a sheet-picker card (the user's choice arrives as the next user message); in any other MCP host (Cursor / Codex / Claude Desktop) there is NO panel — ASK THE USER in chat which sheet to use, then call the data tool again passing their choice as the sheet argument. Either way STOP and wait after calling this; do not call other tools in the same turn. A `recommendedSheet` is provided (a Bridge-formatted or 'Data'-named sheet when present, else the first non-empty sheet) and is pre-selected in the card, but the user must still confirm it.

NameTypeReqDescription
file_pathstringyesAbsolute path to the .xlsx/.xlsm file whose sheets to list.
preview_columnsintegerHow many header columns to preview per sheet (default 12).

No output schema declared.

No examples provided.

set_ai_insight ~474

Write the AI's narrative interpretation of the current Bridge analysis into the 'AI Insights' panel below Key Findings. ═══ When to call ═══ Call this AFTER `run_bridge` / `refresh_bridge` and AFTER you have inspected the result via `get_chart_data` / `get_contribution_table` / `get_insights`. The panel auto-clears on every new bridge run so you only need to call it once per analysis. ═══ Why this exists ═══ Key Findings (the existing panel above) is deterministic template output — guaranteed accurate, audit-safe, every number traceable to the chart. Useful for compliance/finance scenarios. AI Insights is the additive layer where YOU can: • interpret the result in plain business language • identify root causes (e.g. 'SkyView X1 is the portfolio's margin diluter — high volume, low GM') • recommend actions (e.g. 'Review pricing on category X') • compare across analyses ('Q1 mix shift is the opposite of Q4') ═══ Visibility ═══ The AI Insights panel is ONLY rendered when the page is running inside the Agent-controlled Chromium (the MCP-mode flag). Human-launched browsers never see this panel — they only see Key Findings. So this tool is a no-op for human users; it is purely a channel for AI clients. ═══ Format guidance ═══ Keep it concise — 5-15 lines is typical. A useful structure is: ## Summary (1-2 sentences of the headline finding) ## Root causes (bullet list of factor → contribution) ## Recommended actions (bullet list of next steps) Do not duplicate Key Findings — focus on interpretation and business judgement that the template cannot infer.

NameTypeReqDescription
markdownstring|nullyesAI-authored narrative analysis. Plain markdown — headings (# / ## / ###), **bold**, *italic*, `inline code`, bullets (- / *), numbered lists (1.), and tables (`| col | col |` with `|---|---|` separat…

No output schema declared.

No examples provided.

set_baseline ~185

Set the Baseline filter selection for a dimension. The change is persisted to the Baseline_Filters sheet and marks filters as stale. ⚠ CRITICAL: After calling set_baseline / set_comparison you MUST use `refresh_bridge` (NOT `run_bridge`) to apply the change. `run_bridge` is the 'Build Bridge' button — it would RESET your filter selections back to 'select all' before running, undoing this call. Requires `run_bridge` to have been called at least once on the currently loaded data so the Baseline_Filters sheet exists.

NameTypeReqDescription
fieldstringyesDimension field name (case-insensitive). Use `get_dimensions` to enumerate.
valuesarrayyesList of values to keep selected for this side. Pass [] to keep nothing (equivalent to 'Select None'). Unknown values are ignored and reported.

No output schema declared.

No examples provided.

set_comparison ~182

Set the Comparison filter selection for a dimension. The change is persisted to the Comparison_Filters sheet and marks filters as stale. ⚠ CRITICAL: After calling set_baseline / set_comparison you MUST use `refresh_bridge` (NOT `run_bridge`) to apply the change. `run_bridge` is the 'Build Bridge' button — it would RESET your filter selections back to 'select all' before running, undoing this call. Requires `run_bridge` to have been called at least once on the currently loaded data so the Comparison_Filters sheet exists.

NameTypeReqDescription
fieldstringyesDimension field name (case-insensitive). Use `get_dimensions` to enumerate.
valuesarrayyesList of values to keep selected for this side. Pass [] to keep nothing (equivalent to 'Select None'). Unknown values are ignored and reported.

No output schema declared.

No examples provided.

set_data_type ~270

Set the Data Type (Row 1) of a column on a Data sheet — one of Dimension / Key / SumY / SumN / Result. Bridge requires exactly one Key, exactly one Result, and at least one SumY column. USE THIS to fix the data-type row of a workbook that is ALREADY loaded in Bridge (e.g. a Dimension column was misclassified as a Key, or you forgot to mark Year as a Dimension). After updating types, call run_bridge to re-run the analysis with the new layout — DO NOT regenerate the file with prepare_bridge_xlsx and re-upload; it is slower and loses any in-app edits. Note: Sheet column A is the Bridge label column ('Data Type'/'Header'/'Data'); user columns start at B. Pass 'B' / 'C' / 'D' etc., not 'A'.

NameTypeReqDescription
columnstring|numberyesTarget column letter ('B','C',…) or 0-based index. Sheet column A (index 0) is the Bridge label column and is NOT a valid target — the first user column is always 'B' / 1.
sheetstringSheet name. Defaults to 'Data'.
typestringyesWaterfallBridge data type for the column.

No output schema declared.

No examples provided.

set_field_name ~186

Set the Field Name (Row 2) for a column on a Data sheet. Field names must be non-empty and unique across the sheet. After renaming, call run_bridge to refresh the analysis — no need to re-import the file. Note: Sheet column A is the Bridge label column ('Data Type'/'Header'/'Data'); user columns start at B. Pass 'B' / 'C' / 'D' etc., not 'A'.

NameTypeReqDescription
columnstring|numberyesTarget column letter ('B','C',…) or 0-based index. Sheet column A (index 0) is the Bridge label column and is NOT a valid target — the first user column is always 'B' / 1.
namestringyesFriendly field name (Row 2).
sheetstringSheet name. Defaults to 'Data'.

No output schema declared.

No examples provided.

suggest_bridge_schema ~488

Profile a source CSV/XLSX file and recommend a Bridge column_map (Dimension / Key / SumY / SumN / Result) for each column based on content type, cardinality, additivity heuristics, and any existing cell formulas. Call this BEFORE prepare_bridge_xlsx when the user hasn't given an explicit mapping, then present the suggestion to the user for confirmation (the Web AI Panel renders a confirm card; in other MCP hosts like Cursor / Codex / Claude there is NO panel — show the proposed types + Result formula in chat, DEFINE each Data Type using the returned `dataTypeGlossary`, give the user the `helpUrl` link, and ask them to confirm, then call prepare_bridge_xlsx with the agreed column_map). Returns a `dataReadinessIssues` array when the source cannot be bridged so the AI can ask for better data. GATE: if the source file still has BLOCKING data-preparation issues (merged cells, crosstab layout, bad formulas, title rows) this returns { success:false, blocked:true, issues:[…] } WITHOUT profiling — call check_data_preparation / show the user the issues, let them fix the file, then retry (or pass confirm_data_prep:true to override a false positive).

NameTypeReqDescription
confirm_data_prepbooleanData-preparation gate override. Leave UNSET normally. If the source file still has BLOCKING data-prep issues this tool returns { blocked:true } instead of profiling — fix the file (or have the user f…
sample_rowsintegerHow many rows to sample for profiling. Default 200, max 2000.
source_filestringyesAbsolute path to a CSV/XLSX/TSV source file.
source_sheetstringWorksheet name (xlsx only). Defaults to first non-empty sheet.
user_intentstringOptional free-text description of what the user wants to analyse (e.g. 'YoY revenue bridge by product', 'GM% change between Q1 and Q2'). Used to bias Key / Result suggestions.

No output schema declared.

No examples provided.

swap_filters ~33

Swap the Baseline and Comparison selections (handy when the user phrases the comparison the other way around). Marks filters stale.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

upload_file ~87

Upload an Excel (.xlsx) file to the WaterfallBridge app. The file must contain a Data worksheet with valid Data Type headers.

NameTypeReqDescription
auto_runbooleanIf true (default), automatically click 'Build Bridge' or 'Run Analysis' after import if the app prompts.
file_pathstringyesAbsolute path to a Bridge-formatted .xlsx file on the local filesystem.

No output schema declared.

No examples provided.

write_local_file ~129

Write UTF-8 text content (CSV / JSON / TXT) to a file inside an allowed root. Refuses to overwrite by default; the user should be informed before set overwrite=true.

NameTypeReqDescription
contentstringyesUTF-8 text content. For binary formats use prepare_bridge_xlsx.
file_pathstringyesAbsolute path for the destination file. Parent directory must exist and be inside an allowed root.
overwritebooleanIf false (default), fails when the file already exists. Set to true to allow overwriting; the AI should normally confirm with the user first.

No output schema declared.

No examples provided.