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.
Available components
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.
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
claude mcp add waterfallbridge-mcp -- npx -y @waterfallbridge/mcp
codex mcp add waterfallbridge-mcp -- npx -y @waterfallbridge/mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"waterfallbridge-mcp": {
"type": "local",
"command": [
"npx",
"-y",
"@waterfallbridge/mcp"
],
"enabled": true
}
}
} openclaw mcp add waterfallbridge-mcp --command npx --arg -y --arg @waterfallbridge/mcp
mcp_servers:
waterfallbridge-mcp:
command: "npx"
args: ["-y", "@waterfallbridge/mcp"] {
"mcpServers": {
"waterfallbridge-mcp": {
"command": "npx",
"args": [
"-y",
"@waterfallbridge/mcp"
]
}
}
} 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.
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 |
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.
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.
| Name | Type | Req | Description |
|---|---|---|---|
| source_file | string | yes | Absolute path to the user's source CSV / XLSX / XLSM / TSV file. |
| source_sheet | string | – | Worksheet 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.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | Absolute 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).
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | – | '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.
| Name | Type | Req | Description |
|---|---|---|---|
| target_path | string | – | Optional 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.
| Name | Type | Req | Description |
|---|---|---|---|
| target_path | string | – | Optional 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… |
| type | string | – | '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.
| Name | Type | Req | Description |
|---|---|---|---|
| string | yes | Account email of the session to forget. | |
| url | string | yes | Origin 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).
| Name | Type | Req | Description |
|---|---|---|---|
| sample_rows | integer | – | How many leading data rows (after the Data Type / Field Name header rows) to include in `sample`. Defaults to 5. |
| sheet | string | – | Sheet 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.
| Name | Type | Req | Description |
|---|---|---|---|
| preview_rows | integer | – | How many rows from the top to return (default 6, max 50). |
| source_file | string | yes | Absolute path to the source CSV / XLSX / XLSM / TSV file. |
| source_sheet | string | – | Worksheet 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).
| Name | Type | Req | Description |
|---|---|---|---|
| mode | string | – | 'read' = list/inspect/read only. 'readwrite' = also allows write_local_file / delete_local_file. Default: 'read'. |
| note | string | – | Free-form reason recorded in the audit log. |
| path | string | yes | Absolute directory (or file) path to authorize. The grant covers the path and all of its descendants. |
| scope | string | – | '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).
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | Absolute path to the file to inspect. |
| preview_rows | integer | – | Number of preview rows to return (default 20, max 200). |
| sheet | string | – | Worksheet 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.
| Name | Type | Req | Description |
|---|---|---|---|
| directory | string | – | Absolute directory path to list. If omitted, returns the set of allowed roots configured for the Agent (Downloads / Desktop / Documents by default). |
| pattern | string | – | Optional 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.
| Name | Type | Req | Description |
|---|---|---|---|
| string | yes | Account email. | |
| password | string | yes | Account password. After successful login the session is encrypted (DPAPI on Windows) and the password itself is NOT stored. |
| url | string | – | Defaults 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.
| Name | Type | Req | Description |
|---|---|---|---|
| string | – | Optional. 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_ms | integer | – | How long (milliseconds) to wait for the user to finish signing in before timing out. Default 300000 (5 min). Max 1800000 (30 min). |
| url | string | – | WaterfallBridge 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_login | boolean | – | When 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.).
| Name | Type | Req | Description |
|---|---|---|---|
| reason | string | – | Short 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:…
| Name | Type | Req | Description |
|---|---|---|---|
| column_map | array | yes | Ordered 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_prep | boolean | – | Data-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_rows | array | – | Inline data as an array of objects keyed by source column name. Useful when the AI synthesizes a small dataset on the fly. |
| output_path | string | – | OPTIONAL 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… |
| overwrite | boolean | – | If false (default), fails when output_path already exists. The AI should normally confirm with the user before setting this to true. |
| preview_only | boolean | – | If 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_file | string | – | Absolute path to a CSV / XLSX / TSV source file. Either source_file or inline_rows is required. |
| source_sheet | string | – | Worksheet 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).
| Name | Type | Req | Description |
|---|---|---|---|
| as_text | boolean | – | If true, return the file's raw UTF-8 text instead of parsing. Useful for JSON / TXT inspection. |
| file_path | string | yes | Absolute path to the file to read. |
| max_rows | integer | – | Cap the number of data rows returned (defaults to WB_FS_MAX_ROWS). |
| sheet | string | – | Worksheet (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'.
| Name | Type | Req | Description |
|---|---|---|---|
| range | string | – | Optional A1-style range, e.g. 'A1:E20'. Omit to read the sheet's used range. |
| sheet | string | yes | Sheet 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.
| Name | Type | Req | Description |
|---|---|---|---|
| path | string | yes | Absolute 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.
| Name | Type | Req | Description |
|---|---|---|---|
| wait_for_completion | boolean | – | If 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).
| Name | Type | Req | Description |
|---|---|---|---|
| wait_for_completion | boolean | – | If 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.
| Name | Type | Req | Description |
|---|---|---|---|
| export_path | string | – | Optional absolute path for the exported .xlsx. Defaults to <UserHome>/Downloads/WaterfallBridge-AI-<timestamp>.xlsx. Ignored when export_to_disk=false. |
| export_to_disk | boolean | – | When 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_browser | boolean | – | When 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.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | Absolute path to the .xlsx/.xlsm file whose sheets to list. |
| preview_columns | integer | – | How 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.
| Name | Type | Req | Description |
|---|---|---|---|
| markdown | string|null | yes | AI-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.
| Name | Type | Req | Description |
|---|---|---|---|
| field | string | yes | Dimension field name (case-insensitive). Use `get_dimensions` to enumerate. |
| values | array | yes | List 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.
| Name | Type | Req | Description |
|---|---|---|---|
| field | string | yes | Dimension field name (case-insensitive). Use `get_dimensions` to enumerate. |
| values | array | yes | List 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'.
| Name | Type | Req | Description |
|---|---|---|---|
| column | string|number | yes | Target 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. |
| sheet | string | – | Sheet name. Defaults to 'Data'. |
| type | string | yes | WaterfallBridge 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'.
| Name | Type | Req | Description |
|---|---|---|---|
| column | string|number | yes | Target 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. |
| name | string | yes | Friendly field name (Row 2). |
| sheet | string | – | Sheet 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).
| Name | Type | Req | Description |
|---|---|---|---|
| confirm_data_prep | boolean | – | Data-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_rows | integer | – | How many rows to sample for profiling. Default 200, max 2000. |
| source_file | string | yes | Absolute path to a CSV/XLSX/TSV source file. |
| source_sheet | string | – | Worksheet name (xlsx only). Defaults to first non-empty sheet. |
| user_intent | string | – | Optional 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.
| Name | Type | Req | Description |
|---|---|---|---|
| auto_run | boolean | – | If true (default), automatically click 'Build Bridge' or 'Run Analysis' after import if the app prompts. |
| file_path | string | yes | Absolute 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.
| Name | Type | Req | Description |
|---|---|---|---|
| content | string | yes | UTF-8 text content. For binary formats use prepare_bridge_xlsx. |
| file_path | string | yes | Absolute path for the destination file. Parent directory must exist and be inside an allowed root. |
| overwrite | boolean | – | If 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.