Basis
NPM · @BASIS1/MCP · 2 COMPONENTS
Parse Excel workbooks, evaluate formulas, trace dependencies and edit workbook models.
Available components
Last scanned (1 day ago)
Scores higher than 29% of npm servers
Category Data and Analytics
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 → Why this is hard to score →
Supply Chain Security50
- Malware scan not yet available for this package.Unverified
- No known CVEs affecting this package version or its production dependencies.Pass
- No install/post-install scripts declared.Pass
- 0 of 1 dependencies flagged as unhealthy. View diagnostics → Pass
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 (Apache-2.0).Pass
- Actively maintained (last published 0 days ago).Pass
- Security-disclosure policy not yet verified: we couldn't inspect the source repository.Unverified
Schema Quality & AI Usability75
- AI-judged instruction clarity (good).Pass
- Tool/resource definitions use about 2387 tokens (~99/item across 24 items; 24 tools + 0 resources), lean.Pass
- 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
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 24 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 24 captured unit(s) of tool text and found none that tries to manipulate the model reading it.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.
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.
- 4 Nov 26 50
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 4 Nov 2026 · Analysed npm/@basis1/mcp@0.1.0
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | npm |
Background: How many MCP packages publish verified provenance →
Dependencies 1 package
| Packages resolved | 1 |
|---|---|
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
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. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
add_sheet Add sheet ~64
Add a new sheet to a session's workbook. The new sheet becomes the active sheet. Only works on sessions created from blank documents (not imported xlsx files).
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | Display name for the new sheet |
| session_id | string | yes | Session ID |
No output schema declared.
No examples provided.
audit_workbook Audit workbook ~60
Run a comprehensive audit of a session's workbook. Returns statistics on sheets, cells, formulas, errors, named ranges, and the dependency graph. Use to get an overview of model structure before making changes.
| Name | Type | Req | Description |
|---|---|---|---|
| session_id | string | yes | Session ID |
No output schema declared.
No examples provided.
close_session Close session ~29
Close a computation session and release its resources.
| Name | Type | Req | Description |
|---|---|---|---|
| session_id | string | yes | Session ID to close |
No output schema declared.
No examples provided.
commit_session Commit session ~90
Create a named checkpoint of the session's current state. Returns the commit ID which can be passed to restore_session to roll back. Checkpoints live in the session only; to keep one in the Library's version history, call save_to_library after it (the version takes this message as its name).
| Name | Type | Req | Description |
|---|---|---|---|
| message | string | yes | Short description of the checkpoint |
| session_id | string | yes | Session ID |
No output schema declared.
No examples provided.
create_session Create session ~159
Create a persistent computation session for a workbook. Pass path/base64/url for xlsx input, or omit all for a blank model. Returns a session_id for subsequent calls. The workbook is uploaded to the Basis API and held there for the session. Pass library_file_id instead to open a file from your Library.
| Name | Type | Req | Description |
|---|---|---|---|
| base64 | string | – | Base64-encoded .xlsx file bytes |
| calc | object | – | Iterative-calculation settings for circular models |
| document_id | string | – | Display label for this session |
| library_file_id | string | – | Library file ID to load |
| path | string | – | Local filesystem path to an .xlsx file |
| url | string | – | URL to fetch the .xlsx file from |
No output schema declared.
No examples provided.
define_variable Define variable ~83
Create or retarget a named variable in the session's workbook.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | Variable name (e.g. "Revenue") |
| refers_to | string | yes | Cell reference (e.g. "Sheet1!$A$1") |
| scope_sheet | integer | – | Sheet index for sheet-scoped name |
| session_id | string | yes | Session ID |
No output schema declared.
No examples provided.
diff_workbooks Diff workbooks ~236
Compare two .xlsx workbooks and return the cell-level differences as JSON. Both files are parsed on the Basis API, joined on (sheet title, cell ref) and classified into added, removed, and changed (value and/or formula), with format-only changes bucketed separately. Provide exactly one of before_path/before_url/before_base64 and one of after_path/after_url/after_base64.
| Name | Type | Req | Description |
|---|---|---|---|
| after_base64 | string | – | Base64-encoded bytes of the second (after) .xlsx file |
| after_path | string | – | Local filesystem path to the second (after) .xlsx file |
| after_url | string | – | URL to fetch the second (after) .xlsx file from |
| before_base64 | string | – | Base64-encoded bytes of the first (before) .xlsx file |
| before_path | string | – | Local filesystem path to the first (before) .xlsx file |
| before_url | string | – | URL to fetch the first (before) .xlsx file from |
| include_format | boolean | – | Report cells whose only change is number format (default true) |
No output schema declared.
No examples provided.
evaluate_formula Evaluate formula ~233
Evaluate an Excel formula and return the computed result. Pass data as a map of cell references to values (e.g. {"A1": 100, "A2": 200, "B1": "hello"}) and a formula string (e.g. "SUM(A1:A2)"). The formula is placed in the first unused cell and recalculated. Supports 276 Excel functions: math, financial (NPV, IRR, XIRR, PMT, PRICE, YIELD…), statistical distributions, regression, lookup, date/time, text, logical, and dynamic arrays (FILTER, SORT, UNIQUE, SEQUENCE, CHOOSECOLS, TAKE, DROP). Runs on the Basis API (needs an API key).
| Name | Type | Req | Description |
|---|---|---|---|
| data | object | – | Cell data to populate before evaluating. Keys are cell references like "A1", "B2". Values can be numbers, strings, or booleans. |
| formula | string | yes | Excel formula to evaluate (without the leading '='), e.g. "SUM(A1:A2)" or "NPV(0.08,B1:B5)" |
No output schema declared.
No examples provided.
get_cell_formula Get cell formula ~97
Read the formula source text and computed value for a single cell in a session. Returns whether the cell contains a formula, the formula text (with = prefix), the computed value, and value type. Use to inspect what a cell actually computes.
| Name | Type | Req | Description |
|---|---|---|---|
| cell | string | yes | Cell reference, optionally with sheet prefix (e.g. "B4" or "Sheet1!B4") |
| session_id | string | yes | Session ID |
No output schema declared.
No examples provided.
get_formula_range Get formula range ~91
Batch-read formulas and computed values for a rectangular range of cells. Returns an array of {cell, formula, value, value_type} for each cell in the range. Much more efficient than calling get_cell_formula repeatedly.
| Name | Type | Req | Description |
|---|---|---|---|
| range | string | yes | Range address, e.g. "A1:D10" or "Sheet1!B2:F2" |
| session_id | string | yes | Session ID |
No output schema declared.
No examples provided.
get_job_status Get job status ~35
Check the status of a parse job submitted via submit_job.
| Name | Type | Req | Description |
|---|---|---|---|
| job_id | string | yes | Job ID returned by submit_job |
No output schema declared.
No examples provided.
get_outputs Get outputs ~54
Read computed values from a session. Pass specific names/refs, or omit to read all defined names.
| Name | Type | Req | Description |
|---|---|---|---|
| names | array | – | Specific defined names or cell refs to read |
| session_id | string | yes | Session ID |
No output schema declared.
No examples provided.
inspect_model Inspect model ~50
Inspect a session's model structure: sheets, defined names, stats, and optionally dependency edges.
| Name | Type | Req | Description |
|---|---|---|---|
| include_edges | boolean | – | Include the formula dependency graph |
| session_id | string | yes | Session ID |
No output schema declared.
No examples provided.
list_sessions List sessions ~14
List all active computation sessions.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
parse_workbook Parse workbook ~135
Parse an .xlsx workbook on the Basis API and return the full semantic NDJSON output (workbook_meta, sheet, cell, edge, image, image_summary, audit records). Handles small vs. large files transparently. The file is uploaded to the Basis API.
| Name | Type | Req | Description |
|---|---|---|---|
| base64 | string | – | Base64-encoded .xlsx file bytes |
| path | string | – | Local filesystem path to an .xlsx file (read on this machine, then uploaded) |
| url | string | – | URL to fetch the .xlsx file from |
| webhook_url | string | – | HMAC-signed POST here when the parse completes |
No output schema declared.
No examples provided.
rename_sheet Rename sheet ~111
Rename a sheet in a session's workbook. Formulas, named ranges and validations that reference the sheet are rewritten to the new name, so results don't change. Excel's rules apply: 1-31 characters, none of : \ / ? * [ ], no leading or trailing apostrophe, unique ignoring case.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | New display name for the sheet |
| session_id | string | yes | Session ID |
| sheet_index | integer | yes | 0-based index of the sheet to rename |
No output schema declared.
No examples provided.
restore_session Restore session ~66
Roll back a session to a previous commit. Reverts all cell changes made since that commit. Returns the number of cells that were changed by the rollback.
| Name | Type | Req | Description |
|---|---|---|---|
| commit_id | integer | yes | Commit ID to restore to (from commit_session) |
| session_id | string | yes | Session ID |
No output schema declared.
No examples provided.
save_to_library Save to Library ~174
Save the session's workbook to the user's Library for durable storage. If the session was loaded from the Library or was previously saved, this creates a new version of that file. Otherwise it creates a new Library file. Each save is a named version in the Library's history: pass `message`, or it takes the latest commit_session message since the last save. commit_session checkpoints themselves stay in the session, so save after each step you want kept as a version. Requires a Basis API key. Returns the library_file_id.
| Name | Type | Req | Description |
|---|---|---|---|
| message | string | – | Name for this version in the Library, e.g. "23 — revised exit cap" (defaults to the latest commit_session message) |
| name | string | – | File name (defaults to the session's document label) |
| session_id | string | yes | Session ID |
No output schema declared.
No examples provided.
set_calc_settings Set calc settings ~166
Turn iterative calculation on or off for a session and recalculate. Needed for circular models (e.g. development pro formas where loan size depends on cost, which includes the loan's interest and fees): with it on, set_inputs re-converges the loop on every call. Saved with the session's next commit (restore_session to an earlier commit rolls it back) and written to the workbook, so an exported xlsx iterates in Excel too.
| Name | Type | Req | Description |
|---|---|---|---|
| iterative | boolean | yes | Enable iterative calculation (Excel: Enable iterative calculation) |
| max_change | number | – | Converged once no value moves more than this (Excel default 0.001) |
| max_iterations | integer | – | Maximum passes (Excel default 100) |
| session_id | string | yes | Session ID |
No output schema declared.
No examples provided.
set_inputs Set inputs ~75
Set one or more input values in a session and recalculate. Keys can be defined names or cell references. Returns applied changes and which named outputs changed (effects).
| Name | Type | Req | Description |
|---|---|---|---|
| inputs | object | yes | Map of name-or-ref to value. Example: {"Revenue": 1000000} |
| session_id | string | yes | Session ID |
No output schema declared.
No examples provided.
snapshot_session Snapshot session ~55
Export the session's current state as xlsx bytes (base64). Optionally creates a commit first.
| Name | Type | Req | Description |
|---|---|---|---|
| commit_message | string | – | If provided, creates a commit before saving |
| session_id | string | yes | Session ID |
No output schema declared.
No examples provided.
stream_job Stream job output ~56
Fetch the NDJSON output of a completed parse job. Pass `since` to resume from a record index.
| Name | Type | Req | Description |
|---|---|---|---|
| job_id | string | yes | Job ID returned by submit_job |
| since | integer | – | Record index to resume from |
No output schema declared.
No examples provided.
submit_job Submit parse job ~115
Submit an .xlsx workbook to the Basis API for async parsing and get back a job handle (job_id, status_url, stream_url) without waiting for it to finish.
| Name | Type | Req | Description |
|---|---|---|---|
| base64 | string | – | Base64-encoded .xlsx file bytes |
| path | string | – | Local filesystem path to an .xlsx file (read on this machine, then uploaded) |
| url | string | – | URL to fetch the .xlsx file from |
| webhook_url | string | – | HMAC-signed POST here when the parse completes |
No output schema declared.
No examples provided.
trace_dependencies Trace dependencies ~139
Trace the formula dependency graph for a cell in a session. Returns precedents (cells this cell references) and/or dependents (cells that reference this cell), with their formulas and values. Use to understand calculation chains, debug circular refs, and find the root cause of errors.
| Name | Type | Req | Description |
|---|---|---|---|
| cell | string | yes | Cell reference, optionally with sheet prefix (e.g. "B4" or "Sheet1!B4") |
| depth | integer | – | How many levels deep to trace (default 1, max 5) |
| direction | string | – | Which direction to trace (default "both") |
| session_id | string | yes | Session ID |
No output schema declared.
No examples provided.
How do I install the Basis MCP server?
Basis runs locally as an npm package, launched with npx -y @basis1/mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · @basis1/mcp
claude mcp add tech-basis1-mcp -- npx -y @basis1/mcp
What is the Basis MCP server?
Basis is an MCP server listed in the public MCP registry as tech.basis1/mcp. Parse Excel workbooks, evaluate formulas, trace dependencies and edit workbook models. This page covers its npm package (@basis1/mcp).
Is the Basis MCP server safe to use?
Basis scores 50 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 4 November 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Basis MCP server expose?
Basis exposes 24 tools: parse_workbook, submit_job, get_job_status, stream_job, diff_workbooks, and 19 more. Their descriptions and schemas cost roughly 2,387 tokens of context every time the server is loaded.
Is the Basis MCP server still maintained?
Basis is still listed as active in the MCP registry. We last reached this channel on 4 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the Basis MCP server under?
Basis declares the Apache-2.0 licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.