Xlsx For AI
50 spreadsheet tools for.xlsx: recalc formulas, repair broken refs, read/write, diff, audit.
Connector by senoff · GitHub account verified by the MCP Registry
Install
Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.
npx agentmarket install connector/senoff-xlsx-for-ai
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 25, 2026.
Runs code on install
Its package runs an install script (such as npm postinstall or setup.py code) as soon as you install it, before any tool is called. Read the script first.
- Tools
- 32 read · 19 write · 0 delete · 27 not yet classified
- Secrets
- None asked for
- Install scripts
- Runs code on install
- Runs as
- Node.js package
Tools by what they do 78
Read from the source code; the running server may list different tools.
Read 32 · Look things up without changing anything.
csv_checkimportable_convertimportable_entitiesimportable_job_statusxlsx_chartsxlsx_checkxlsx_conditional_formatsxlsx_convertxlsx_data_validationsxlsx_describexlsx_diffxlsx_eval
Show 20 more tools
xlsx_external_linksxlsx_form_controlsxlsx_formulasxlsx_hyperlinksxlsx_imagesxlsx_list_sheetsxlsx_macrosxlsx_named_rangesxlsx_pii_scanxlsx_pivot_tablesxlsx_readxlsx_read_handlexlsx_slicers_timelinesxlsx_tablesxlsx_validatexlsx_value_countsxlsx_vault_scanxlsx_verify_receiptxlsx_verify_stampxlsx_workbook_views
Write 19 · Create, change, send or run things.
importable_importprintful_catalog_importprintify_catalog_importshopify_collections_importshopify_inventory_importshopify_product_metafields_importshopify_products_importshopify_products_import_fixshopify_url_redirects_importshopify_variant_metafields_importxlsx_commentsxlsx_healer_cure
Show 7 more tools
xlsx_merged_cellsxlsx_post_slackxlsx_post_teamsxlsx_receiptxlsx_session_set_validationsxlsx_stampxlsx_write
Not yet classified 27 · We could not tell from the name and description.
importable_connectimportable_exportprintful_catalog_pullprintify_catalog_pullshopify_amazon_feedshopify_ebay_feedshopify_google_feedshopify_metafields_safe_reimportshopify_ups_feedxlsx_aggregatexlsx_data_cleanxlsx_doctor
Show 15 more tools
xlsx_filterxlsx_healer_diagnosexlsx_healer_intentxlsx_healer_simulatexlsx_pii_cleanxlsx_pivotxlsx_print_settingsxlsx_propertiesxlsx_protectionxlsx_redactxlsx_schemaxlsx_sortxlsx_stylesxlsx_topologyxlsx_vault_cure
Network hosts it talks to 8
api.xlsx-for-ai.dev· found in codedocs.google.com· found in codedrive.google.com· found in codeexample.invalid· found in codegithub.com· found in codeglama.ai· found in codetoken.actions.githubusercontent.com· found in codexlsx-for-ai.dev· found in code
Files it touches
/opt/homebrew/Users/you/foo.xlsx/usr/local- Your home directory (~)
~/Desktop/foo.xlsx- Any path the agent passes to its tools
Tools (78)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
csv_checkVerify CSV structure and injection safety
importable_connectConnect this agent to a Shopify store via a merchant-minted code
importable_convertConvert a merchant file to a Shopify import plan (dry-run)
importable_entitiesList Importable-drivable Shopify entities
importable_exportExport a Shopify entity from the connected store
importable_importApply a file to the connected Shopify store (dry-run, then owner-approved commit)
importable_job_statusCheck the status of an Importable import or export run
printful_catalog_importProduce Shopify products import CSV from Printful catalog
printful_catalog_pullPull Printful catalog snapshot
printify_catalog_importProduce Shopify products import CSV from Printify catalog
printify_catalog_pullPull Printify catalog snapshot
shopify_amazon_feedProduce Amazon inventory feed
shopify_collections_importProduce Shopify collections import CSV
shopify_ebay_feedProduce eBay File Exchange feed CSV
shopify_google_feedProduce Google Shopping feed CSV
Show 63 more tools
shopify_inventory_importProduce Shopify inventory import CSV
shopify_metafields_safe_reimportProduce a safe Shopify metafields re-import CSV
shopify_product_metafields_importProduce Shopify product-metafields import CSV
shopify_products_importProduce Shopify products import CSV
shopify_products_import_fixFix Shopify products import CSV
shopify_ups_feedProduce UPS WorldShip batch CSV
shopify_url_redirects_importProduce Shopify URL redirects import CSV
shopify_variant_metafields_importProduce Shopify variant-metafields import CSV
xlsx_aggregatepandas-style df.groupby([cols]).agg({col: func}) on a LOCAL .xlsx file. funcs: sum / mean / min / max / count / count_distinct. Type-aware: numeric aggregations skip non-numeric values cleanly instead of pandas' silent NaN promotion. USE WHEN: the user asks "what's the total / average / count of X by Y?" on a LOCAL .xlsx file. Returns one row per group with the requested aggregations as a markdown table. DO NOT USE WHEN: the user wants to see individual rows (use xlsx_filter). Or for a 2D pivot (use xlsx_pivot).
xlsx_chartsList every chart in a LOCAL .xlsx file with type (bar / line / pie / scatter / area / doughnut / radar / stock / surface / bubble), title, axis titles, and per-series formula refs (the cell ranges the chart pulls from). Sheet attribution via the OOXML drawing rel chain. Gives you the chart contract — "Sheet2 has a bar chart titled Q4 Revenue plotting Sheet1!B2:B10 against Sheet1!A2:A10" — without rendering anything. USE WHEN: documenting a financial model / dashboard so an LLM knows "what does this visualize, from which cells?". Or auditing for chart-data drift after a refactor. DO NOT USE …
xlsx_checkVerify Excel workbook with an independent engine
xlsx_commentslist every cell comment in a workbook — both legacy notes (yellow stickies, cell.note) AND modern threaded comments (multi-author conversations stored separately in the OOXML zip). Per entry: kind, sheet, cell, author, text, plus any reply thread. No other tool can do this: pandas drops both comment systems on read entirely; openpyxl reads only legacy notes (not threaded comments). xlsx_comments reads both, maps personId → display name via xl/persons/person.xml, and folds reply chains into each root comment. USE WHEN: extracting reviewer feedback / approval threads from a spreadsheet (this is…
xlsx_conditional_formatslist every conditional formatting rule in a workbook — color scales, data bars, icon sets, formula-based highlights, top-N, duplicate / unique values, contains-text, time-period, above-average. Per rule: range, type, operator, formulae, priority, stopIfTrue. No other tool can do this: pandas drops conditional formatting on read entirely; openpyxl exposes the raw CF objects but offers no rollup or classification. This surfaces every rule plus a per-type tally so an agent can answer "does this workbook use color scales?" without scanning every row. USE WHEN: auditing a dashboard / financial mod…
xlsx_convertuniversal spreadsheet format converter. Reads ANY of 25+ input formats (xlsx, xlsb, xlsm, xls, ods, fods, numbers, csv, tsv, dbf, lotus 1-2-3, quattro pro, sylk, dif, html, rtf, etc.) and emits ANY supported output format (xlsx, csv, json, md, html, etc.). No other tool in the MCP space ingests legacy formats — pandas.read_excel only reads xlsx/xls; openpyxl is xlsx-only. xlsx_convert is the only "any-spreadsheet → LLM-readable" hosted endpoint. USE WHEN: the user has a .xls / .xlsb / .ods / Numbers / .csv / Lotus / Quattro / dBASE file they want to read or convert. Output to text formats (cs…
xlsx_data_cleanAI-native data cleaning for a LOCAL .xlsx file. Scans for the seven most common data-grime issues — NA variants (N/A, NA, null, -), merged-cell residue, type-coercion mistakes (numeric-as-text / date-as-serial / leading-zero stripped), trailing-row noise (footers / totals), header-row-not-first (preamble before headers), encoding glitches (UTF-8-as-CP1252 mojibake), and duplicate column headers — and either flags them (diagnose mode) or applies deterministic fixes (execute mode). Informer-not-enforcer: every fix surfaces as a Finding the caller can accept / reject / scope-override before the …
xlsx_data_validationslist every cell-level data validation rule (dropdowns, numeric/date bounds, text-length caps, custom formulas) defined in a workbook — the constraints that Excel enforces when a human types into the cell. No other tool can do this: pandas drops validations entirely on read; openpyxl exposes them but only on a per-cell loop; this surfaces them in one shot with target cells, formulae, error messages, and prompt text. USE WHEN: auditing a form / data-entry workbook to know what inputs are legal. Or extracting a dropdown list for use elsewhere. Or generating fixtures that match the validation con…
xlsx_describepandas-style df.describe() per column — count, nulls, unique, min/max/mean/std for numerics, dtype with purity score. Unlike pandas.read_excel followed by df.describe(), this does not silently flatten merged cells or drop named ranges. USE WHEN: the user wants a quick summary of a LOCAL .xlsx file — "what's in this data?". Returns a markdown table with one row per column. Faster + more structured than dumping full contents through xlsx_read. DO NOT USE WHEN: the user uploaded a file via paperclip/attach (built-in skill). Or for in-memory data the agent already holds.
xlsx_diffcompute a semantic diff between two LOCAL .xlsx files — cell-level deltas, formula changes, added/removed rows. Output is byte-deterministic — calling twice with the same inputs returns identical text + diff_hash in _meta. Use that hash for caching/idempotence. USE WHEN: the user provides two LOCAL .xlsx file paths to compare. Suitable for version control, audit trails, and change review. Built-in skills cannot produce deterministic, structured diffs. DO NOT USE WHEN: either file came from an upload/attachment rather than a local path.
xlsx_doctorONE-CALL workbook health report for a LOCAL .xlsx file. Scans for macros, external workbook references, hidden / veryHidden sheets, missing creator metadata, large embedded images, and surfaces interesting feature flags (LAMBDA, dynamic arrays, pivot cache, slicers, threaded comments). Findings ranked HIGH / MEDIUM / LOW. Plus quick_facts: sheet count, formulas, named ranges, merges, hyperlinks, validations, images, file size. The "check this workbook" call agents should make BEFORE any other tool — single round trip, ranked output an LLM can read at a glance. USE WHEN: an agent has been han…
xlsx_evalevaluate Excel formulas against a LOCAL .xlsx file with our own recalc engine. xlwings-style. Two modes: pass `formulas` (array of "=SUM(A1:A10)" expressions to compute against the workbook) or `cells` (array of "Sheet1!A1" cell refs to fresh-evaluate). Replaces pandas' "trust the cached value" behavior with a real eval — if the cache is stale or missing, this still produces the right answer. USE WHEN: the user wants the live computed value of a formula, not the cached one. Or when a workbook has formulas that depend on external data the cache might be stale on. Engine omits INDIRECT/HYPERLIN…
xlsx_external_linkslist every external workbook reference this file depends on — `=[Budget.xlsx]Sheet1!A1` style formulas. Per link: target path (decoded), classification (http / network share / absolute / relative), sheets pulled from the external workbook, count of cached cell values, and defined-name references. No other tool can do this consistently: pandas, openpyxl, and ExcelJS all surface external links partially or inconsistently. xlsx_external_links reads xl/externalLinks/*.xml directly and warns when targets are absolute paths or network shares — those break the moment the workbook moves elsewhere. US…
xlsx_filterpandas-style row filter on a LOCAL .xlsx file with predicates AND-combined: eq/ne/gt/gte/lt/lte/contains/in/is_null/not_null. Operates on real cell values — formulas evaluated server-side, not the cached results that pandas trusts blindly. USE WHEN: the user asks for "rows where X" / "show me only Y" against a LOCAL .xlsx file. Returns matching rows as a markdown table, capped at 1000 rows by default with the actual match count. DO NOT USE WHEN: the user wants raw access to all rows (use xlsx_read). Or when the file came from an upload.
xlsx_form_controlslist every form control (Check Box, Button, Drop-down, List Box, Option Button, Scroll Bar, Spinner, Label, Group Box) in a workbook with the linked cell, current value, dropdown source range, and min/max/step bounds where applicable. No other tool gives this in a single call: ExcelJS doesn't expose form controls; pandas drops them entirely; openpyxl support is partial. xlsx_form_controls reads xl/ctrlProps/ctrlProp*.xml directly + maps to sheets via the rel chain. USE WHEN: documenting a survey workbook, scoring rubric, dashboard, or forms-as-spreadsheets template where the interactive UI ca…
xlsx_formulasextract every formula in a LOCAL .xlsx workbook — cell coord (A1), formula text, cached result. openpyxl-style read-only metadata. Distinct from xlsx_read which returns evaluated values; this returns the formulas themselves so an agent can audit, transform, or rewrite them. USE WHEN: the user wants to see what formulas a workbook uses — spot-checking a model, auditing references, debugging unexpected results. pandas cannot extract formulas; this is the only way for an agent to see them. DO NOT USE WHEN: the user wants computed values (use xlsx_read). Or for upload/attached files.
xlsx_healer_cureApply ONE specific cure operation against a diagnosed workbook. Operations: rename_move (rewrite ref paths), pattern_bulk (regex-style ref rewrites), source_deleted_freeze (replace broken refs with cached values), source_deleted_redirect (point at a replacement file), source_deleted_localize (snapshot external source into a local copy), permission_denied (strip credentials), structure_changed (rewrite formulas for moved cells), format_change (re-link after extension change), make_standalone (fully dereference all externals). Returns cured workbook bytes + receipt. USE WHEN: a diagnostic repor…
xlsx_healer_diagnoseproduce a structured diagnostic report of external references that are broken or at risk in a workbook. Returns five classes of finding: (1) external-workbook references that can't resolve, (2) defined-name external refs, (3) Power Query connections with embedded credentials, (4) #REF! propagation maps from upstream breakage, (5) multi-hop chains (workbook → workbook → workbook). Findings carry reference_id keys that downstream cure operations key on. USE WHEN: a workbook shows #REF! errors, an agent moves a file and refs need rewriting, a customer reports "the workbook stopped working after …
xlsx_healer_intentGoal-driven healing. Caller declares an INTENT (`make-it-work`, `make-standalone`, or `migrate`) instead of a specific cure operation; Healer plans the operation sequence + applies it. make-it-work: minimum surgery to clear errors. make-standalone: fully de-externalize (snapshot every external dep). migrate: rewrite all references against a from/to prefix pair. Returns the planned operations, cured bytes, and an unactionable list. USE WHEN: the user describes the goal in plain English ("just make this work for the recipient" / "send a self-contained version" / "we moved the share root, update…
xlsx_healer_simulatesimulate recipient-side accessibility of a workbook's external references. Given a list of paths the recipient CAN see (`accessible_paths`), returns which references will still resolve at the recipient end and which will break (and why). Read-only; produces no output workbook. USE WHEN: an agent or user wants to know "will this workbook work when I send it to <person>?" before sharing — e.g., before posting to Slack, attaching to email, or sharing a OneDrive link. Or auditing a workbook against a known recipient-accessible-paths inventory. DO NOT USE WHEN: the user wants to FIX the breakage …
xlsx_hyperlinkslist every hyperlink in a workbook with its anchor cell, target URL/anchor, display text, tooltip, and a kind classifier (external / internal / mailto / unknown). No other tool can do this: pandas drops hyperlinks on read entirely; openpyxl gives raw access but does not classify or aggregate; this surfaces all links plus a per-kind tally for instant audit. USE WHEN: security-auditing a workbook before opening it (what URLs does it point at?). Or extracting a reference list of URLs from a financial model / dashboard. Or finding mailto links for a contact-list workbook. Counts as one file towar…
xlsx_imagesList every embedded image in a LOCAL .xlsx file with format (png / jpg / gif / svg / bmp / tiff / emf / wmf), size in bytes, sheet attribution, and anchor cell range (the cells the image floats over). Reads xl/media/* + xl/drawings/* directly. Surfaces "Sheet1 has a 4 KB PNG anchored at B2:D6" — what an LLM needs to know whether the workbook ships with branding / charts-as-images / signatures. USE WHEN: cataloging visual assets. Or auditing a workbook for embedded images that need to be replaced (logos, signatures). Or fingerprinting a template by its image inventory. DO NOT USE WHEN: you w…
xlsx_list_sheetslist sheet names, dimensions, and visibility for a LOCAL .xlsx file. Use this when you only need names + dims, not cell content. If you'll read content anyway, skip this and call xlsx_read directly. USE WHEN: the user references a LOCAL file path and you need to discover sheet names before reading. Fast orientation call — use before xlsx_read when you need metadata only. DO NOT USE WHEN: the file came from an upload/attachment (built-in skill handles that). Or when you already know the sheet structure. Or when you plan to call xlsx_read immediately after (just call xlsx_read).
xlsx_macrosInspect xlsm / xlsb workbooks for VBA macro presence, vbaProject.bin size, and likely module names (ThisWorkbook / Sheet<N> / Module<N> / Class<N> / UserForm<N> via heuristic UTF-16LE scan). Returns short safety advice the LLM should relay to the user. By DELIBERATE POLICY this tool does NOT extract or execute macro source code. Surfaces presence + module-name candidates only — security-audit metadata for "should I trust this file?" decisions. USE WHEN: receiving a macro-enabled workbook from an unknown sender and you want to know what to expect before opening. Or auditing many workbooks for…
xlsx_merged_cellslist every merged-cell region with master-cell value, range, span dimensions, and kind heuristic ("header" / "horizontal" / "vertical" / "block"). Pandas reads merged cells by dropping the relationship — it sees one value in the master cell and three blanks alongside. xlsx_merged_cells is the layout-aware view: "A1:D1 is ONE cell that says Q4 2024" rather than four cells where three are mysteriously empty. No other tool surfaces merges with master values rolled in: pandas drops merge metadata; openpyxl exposes ranges but not the master value alongside. USE WHEN: parsing report templates, dash…
xlsx_named_rangeslist all defined names (named ranges) in a LOCAL .xlsx workbook — name, scope (workbook or sheet), kind (cell / range / formula), reference. pandas.read_excel collapses named ranges into anonymous ranges; this tool surfaces them so the agent can reason about formulas like =NPV(DiscountRate, Cashflows) before reading data. USE WHEN: the agent is reasoning about a financial / engineering model and needs to know what cells named-range references resolve to. Call before xlsx_read to orient. DO NOT USE WHEN: the workbook has no formulas (named ranges are mostly relevant for formula contexts). Or …
xlsx_pii_cleanRedact personal or sensitive data from an Excel file
xlsx_pii_scanScan Excel for personal or sensitive data
xlsx_pivotpandas-style pivot_table() on a LOCAL .xlsx file — reshape a flat table into a 2D matrix where rows are unique values of `index`, columns are unique values of `columns`, and cells are an aggregation of `values`. agg modes: sum / mean / min / max / count / count_distinct. Optional fill_value for missing index×column combinations. USE WHEN: the user wants a cross-tab — "X by Y", "rows by columns" — that needs more than groupby. Returns a markdown table. DO NOT USE WHEN: there's only one grouping dimension (use xlsx_aggregate). Or for upload/attached files.
xlsx_pivot_tablesList every PRE-EXISTING pivot table definition in a LOCAL .xlsx file (the ones an Excel user already built). Per pivot: sheet, name, location range, source range (or named-range / table reference), row / column / page fields, and data fields with their agg function (sum / count / average / max / min / product / stdDev / etc.). Distinct from `xlsx_pivot` which COMPUTES a fresh pivot from raw data — this tool surfaces the existing pivot CONTRACT so an agent can answer "what does PivotTable3 on the Summary sheet actually compute?". USE WHEN: documenting a financial model that uses pivot tables.…
xlsx_post_slackupload a local .xlsx file to a Slack channel as a file attachment, with an optional accompanying message. Token intake: set SLACK_BOT_TOKEN in the environment (recommended — keeps the token out of conversation logs). Alternatively pass slack_token as a tool argument (legacy; token will appear in MCP conversation history). Posts via Slack's 3-step external upload flow (files.getUploadURLExternal → upload → files.completeUploadExternal), which is the only sanctioned path as of 2024+. USE WHEN: the user asks "post this workbook to #channel," "share this with the team in Slack," or any other outb…
xlsx_post_teamsUpload a local .xlsx file to a Microsoft Teams channel as a file attachment, with an optional accompanying message. Token intake: set TEAMS_GRAPH_TOKEN in the environment (recommended — keeps the token out of conversation logs). Alternatively pass graph_token as a tool argument (legacy; token will appear in MCP history). Uses Microsoft Graph's upload-session + chatMessage flow. USE WHEN: the user asks "post this workbook to my Teams channel" or any outbound-file-to-Teams request after producing or modifying a workbook. DO NOT USE WHEN: posting to Slack (use xlsx_post_slack). Or when no Micr…
xlsx_print_settingssurface "what would Excel print right now" per worksheet — print area, orientation, paper size (A4 / Letter / Legal / Tabloid / etc.), scale or fitToPage, margins, headers/footers split into Excel's L/C/R zones, print titles (rows / columns repeated on every page), manual page breaks, plus B&W / draft / centered flags. No other tool can do this rolled-up: pandas drops every bit of print configuration; openpyxl exposes it but in nested object form. xlsx_print_settings is the "if a human hits Cmd+P, what comes out?" answer. USE WHEN: about to PDF / print a workbook and want to know what it'll l…
xlsx_propertiesSurface the workbook's identity card from a LOCAL .xlsx file. Core: creator, last_modified_by, created/modified/lastPrinted timestamps, title, subject, company, manager, keywords, category, description. Application: app name + version, doc security label, hyperlink base. Custom: every user-defined Info > Properties entry (Department, ReviewedBy, ApprovalRequired, etc.) with type tag and value. Reads docProps/core.xml, docProps/app.xml, and docProps/custom.xml directly — a surface pandas drops entirely. USE WHEN: auditing a workbook for attribution ("who built this and when?"). Or stripping s…
xlsx_protectionSurface every protection setting in a LOCAL .xlsx file so an agent knows what it can and cannot edit. Workbook-level (lockStructure, lockWindows), per-sheet (protected? password? hidden state?), per-action allow/block list (formatCells, sort, insertRows, pivotTables, etc.), and per-cell unlocked / hidden samples — these are the cells a human would actually be allowed to type into when the sheet is otherwise read-only. Reads sheetProtection action attrs directly from the OOXML zip (workaround for ExcelJS stripping them on round-trip). USE WHEN: an agent is about to suggest edits and you want …
xlsx_readxfa — read an .xlsx file by path and return a rendered markdown/JSON/SQL representation. The path resolves on the SERVER's filesystem. In a LOCAL-CLI deployment (npx xlsx-for-ai-mcp) the server IS the user's machine, so /Users/..., /home/..., or ~-prefixed paths work directly. In a remote/hosted deployment the server runs on a different host — ingest user-provided files via the upload-handle flow first, then use xlsx_read_handle. DEFAULT returns ALL sheets — do not re-call per-sheet. Pass sheet="<name>" only to filter. format="md" (markdown table, default), "json", or "sql". Synonyms: "markd…
xlsx_read_handleread a workbook that has already been uploaded to the server via the chunked upload flow, by its server-side cache handle, WITHOUT re-transferring the bytes. Returns the same shape as xlsx_read (text / json / markdown) but skips the file_b64 round-trip. USE WHEN: the workbook has already been chunked + finalized into the server-side workbook cache (a `workbook_handle` was returned from the finalize call) and you want to read it again — e.g., a multi-step session where the same large workbook is queried repeatedly. Avoids re-uploading the bytes on every call. DO NOT USE WHEN: you have a local…
xlsx_receiptAttach an AI-generation receipt to a LOCAL .xlsx file — a cryptographic attestation embedded in docProps/custom.xml that says "this file was generated by THIS agent, at THIS time, against THESE inputs." Returns the receipted workbook as base64 in _meta.file_b64; pass out_path to write to disk. Honesty boundary (load-bearing): the server signs the CALLER-DECLARED `agent.name` — it does NOT verify the caller actually IS that agent. The signature proves "this server signed these strings at this time," not "this came from claude-sonnet-4-6." Caller is responsible for honest declaration. Cryptogra…
xlsx_redactredact PII and sensitive values from a LOCAL .xlsx file before sharing or archiving. DEFAULT preserves formulas + comments + named ranges + styles, strips only cell values. Pass strip_formulas=true / strip_comments=true to remove those too. ALWAYS pass out_path when the user wants the redacted file saved to disk. WITHOUT out_path: redacted bytes return in _meta.file_b64 (base64) — caller must save them. The response text confirms whether a save happened — trust the response, do not infer. USE WHEN: the user provides a LOCAL .xlsx path and wants PII removed. Server-side detection; returns a r…
xlsx_schemainfer column schema of a LOCAL .xlsx file — types, nullable flags, header row, sample values. Use when the agent needs to reason about column types BEFORE deciding how to handle data. Includes confidence (high/medium/low) per column. USE WHEN: the user references a LOCAL file path and you need to understand column types before processing or writing code against the data. Useful before xlsx_read when downstream handling depends on types. DO NOT USE WHEN: the file came from an upload/attachment. Or for in-memory data the agent already holds.
xlsx_session_set_validationsconfigure per-session data-validation rules the server will apply to subsequent calls in the same session (e.g., reject rows missing required columns, enforce enum values on a category column, range-bound numeric inputs). Stateful — affects this session only. USE WHEN: the workflow has multiple write/clean steps in sequence and you want consistent server-side validation across them without restating the rules on every call. Or when validating user-supplied data against a known schema you want enforced for the rest of the session. DO NOT USE WHEN: you only have a single call to make (just inc…
xlsx_slicers_timelinesList every slicer (interactive filter button) and timeline (date-range filter visual) in a LOCAL .xlsx file with their captions, source bindings (table column or pivot table), and timeline granularity (years / quarters / months / days) plus the currently-selected date range. Reads the OOXML zip (xl/slicers/*, xl/slicerCaches/*, xl/timelines/*, xl/timelineCaches/*) directly — a surface ExcelJS silently drops on round-trip. USE WHEN: documenting a dashboard so an LLM knows what filter UI a human sees. Or auditing whether a slicer's binding still matches the underlying data after a refactor. D…
xlsx_sortpandas-style df.sort_values() on a LOCAL .xlsx file with multi-column sort and per-column direction (asc/desc, default asc). Stable across all sort keys; type-aware comparison; nulls always sort last. USE WHEN: the user wants rows ordered by one or more columns. Returns the sorted rows as a markdown table. DO NOT USE WHEN: the data is already sorted as desired (use xlsx_read). Or for upload/attached files.
xlsx_stampSign a LOCAL .xlsx file with a "workbook integrity verification" stamp — a cryptographic attestation embedded in docProps/custom.xml that says "this file was generated by these tools, passed these N specific checks, signed at this time, and hasn't been tampered with since." Factual claims only (never an opinion-shaped seal of approval). Returns the stamped workbook as base64 in _meta.file_b64; pass out_path to write to disk. The caller supplies the `checks` array (e.g., from a supervisor review): list of named tests, each with passed/failed/skipped status. Verifiers see the individual check r…
xlsx_stylessurface cell formatting (number formats, fonts, fills, alignment) so an agent knows what a cell LOOKS like, not just its raw value. Default mode: per-sheet rollup of top-N number formats / fonts / fills with counts. Detailed mode (opt-in, capped at 1000 cells): per-cell breakdown for narrow queries. No other tool can do this with this fidelity: pandas drops styles on read entirely. The single most valuable slice is number formats — pandas hands an LLM "45292" and the cell rendered as "2024-01-01" because format was "yyyy-mm-dd". xlsx_styles is what makes that recoverable. USE WHEN: an LLM is …
xlsx_tableslist every Excel ListObject ("Format as Table" structures) in a LOCAL .xlsx workbook — name, sheet, range, header/totals flags, columns. pandas cannot see ListObjects; if a workbook uses Excel Tables, this is the only way to enumerate them. USE WHEN: the user references a "table" in a workbook by name, or you need to know what structured tables exist before reading. Useful for workbooks with multiple tables on one sheet. DO NOT USE WHEN: the workbook has no Excel-Tables (just data ranges). Or for upload/attached files.
xlsx_topologyone-call workbook orientation. Returns sheets × dimensions × formulas × named ranges × tables × validations × hyperlinks × merges in one shot, plus feature flags (macros / external refs / pivots / LAMBDA / dynamic arrays). No other tool can do this: pandas gives you a frame per sheet but no structure; openpyxl makes you fan out across 6+ object trees to learn the same thing; this is the "what is in this workbook?" call you make first to decide which other tool to call next. USE WHEN: an agent has just been handed a workbook and needs to orient before drilling in. Or surveying many workbooks f…
xlsx_validatesoundness check on a LOCAL .xlsx file — parses the workbook with the server's own OOXML engine and reports whether it loads cleanly (truncated zip, encrypted container, no worksheets, or a damaged sheet body each fail), with a per-sheet structural summary. Lenient readers silently turn a damaged workbook into an empty-but-valid one; xlsx_validate makes that judgment explicit. USE WHEN: the user is about to send the workbook downstream for analysis or as an authoritative source — pre-flight check. Or for audit / regression testing across engine versions. Counts as one file toward your monthly …
xlsx_value_countspandas-style Series.value_counts() on one column of a LOCAL .xlsx file — count each unique value, sorted by frequency desc, with percentage. Excludes nulls by default; pass include_nulls=true to count them. USE WHEN: the user asks "what's the distribution of X?" / "how often does each value appear?". Returns a markdown table. DO NOT USE WHEN: the user wants groupby + multi-column aggregations (use xlsx_aggregate). Or for upload/attached files.
xlsx_vault_cureClean hidden or risky content from an Excel file
xlsx_vault_scanScan Excel for hidden or risky content
xlsx_verify_receiptverify a workbook's embedded AI-generation receipt. Returns whether the signature is valid, whether the recomputed content hash matches the hash IN the receipt, and the full caller-declared claims (agent identity, generation timestamp, source-file hashes, prompt hash, MCP tools called, description). A workbook can fail verification three ways: (1) no receipt present (never receipted, or receipt was stripped); (2) signature_valid=false (claims modified after signing); (3) hash_matches=false (workbook bytes modified after receipt was generated). Honesty: a valid receipt proves the SERVER signed …
xlsx_verify_stampverify a workbook's embedded integrity-verification stamp. Returns whether the cryptographic signature is valid, whether the workbook bytes match what was signed (recomputed hash vs hash IN the stamp), and the full check-result content of the stamp. A workbook can fail verification three ways: (1) no stamp present (file was never stamped, or the stamp was stripped); (2) signature_valid=false (someone modified the claims after signing, or signed with a different key); (3) hash_matches=false (someone modified the workbook bytes after signing). Each is a distinct trust signal. USE WHEN: the agen…
xlsx_workbook_viewsSurface the UI state of a LOCAL .xlsx file — what a human sees when they open it in Excel. Per sheet: visibility (visible / hidden / veryHidden), view state, zoom, active cell + selection, frozen-pane breakdown, gridlines / row-col headers / ruler / RTL flags, tab color. Workbook level: which sheet is active when Excel opens. The "when the user opens this file, what do they see?" rollup — useful when an agent needs to reason about UI continuity (resume editing, notice a hidden sheet, replicate frozen panes in a generated workbook). USE WHEN: handed a workbook mid-workflow and need "where was…
xlsx_writecreate or update a LOCAL .xlsx file from a structured spec. Spec shape: `{sheets: [{name, cells: [{address, value | formula}]}]}`. Each cell has an A1 address ("A1", "B2") and EITHER `value` (string|number|boolean|null) OR `formula` (string, no leading "="). Minimal example: `{"sheets":[{"name":"Sheet1","cells":[{"address":"A1","value":"id"},{"address":"A2","value":1},{"address":"B2","formula":"A2*2"}]}]}` ALWAYS pass out_path to save to disk. Without out_path the workbook bytes return in _meta.file_b64. USE WHEN: the user wants to write or edit a spreadsheet at a LOCAL file path. Server-va…
Compare and alternatives
Featured in
Signals
- Stars
- 6
- Forks
- 0
- Open issues
- 0
- Last commit
- Oct 16, 2026 (12 days ago)
- Last release
- Oct 15, 2026 (13 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- Registry name
io.github.senoff/xlsx-for-ai- Version
- 4.2.10
- Auth
- No auth
- Packages
- npm xlsx-for-ai
- License
- MIT
- Repository
- github.com/senoff/xlsx-for-ai
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
Cite this page
Xlsx For AI MCP server. Agent Mart. https://agentmart.dev/connectors/senoff-xlsx-for-ai (last updated 2026-10-24)