{"name":"io.github.senoff/xlsx-for-ai","slug":"senoff-xlsx-for-ai","title":null,"description":"50 spreadsheet tools for .xlsx: recalc formulas, repair broken refs, read/write, diff, audit.","url":"https://mcp.market/server/senoff-xlsx-for-ai","rating":null,"grade":"B","score":77,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":37,"stars":6,"forks":0,"downloads_week":506,"last_push_at":"2026-09-16T05:21:18.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/senoff/xlsx-for-ai","website":null,"version":"4.0.6","remotes":[],"packages":[{"registryType":"npm","identifier":"xlsx-for-ai","version":"4.0.6","transport":{"type":"stdio"}}],"tools":[{"name":"csv_check","description":"Verify CSV structure and injection safety","write_action":false,"price_micros":0,"input_schema":null},{"name":"importable_connect","description":"Connect this agent to a Shopify store via a merchant-minted code","write_action":false,"price_micros":0,"input_schema":null},{"name":"importable_convert","description":"Convert a merchant file to a Shopify import plan (dry-run)","write_action":true,"price_micros":0,"input_schema":null},{"name":"importable_entities","description":"List Importable-drivable Shopify entities","write_action":false,"price_micros":0,"input_schema":null},{"name":"importable_export","description":"Export a Shopify entity from the connected store","write_action":false,"price_micros":0,"input_schema":null},{"name":"importable_import","description":"Apply a file to the connected Shopify store (dry-run, then owner-approved commit)","write_action":true,"price_micros":0,"input_schema":null},{"name":"importable_job_status","description":"Check the status of an Importable import or export run","write_action":true,"price_micros":0,"input_schema":null},{"name":"printful_catalog_import","description":"Produce Shopify products import CSV from Printful catalog","write_action":false,"price_micros":0,"input_schema":null},{"name":"printful_catalog_pull","description":"Pull Printful catalog snapshot","write_action":false,"price_micros":0,"input_schema":null},{"name":"printify_catalog_import","description":"Produce Shopify products import CSV from Printify catalog","write_action":false,"price_micros":0,"input_schema":null},{"name":"printify_catalog_pull","description":"Pull Printify catalog snapshot","write_action":false,"price_micros":0,"input_schema":null},{"name":"shopify_amazon_feed","description":"Produce Amazon inventory feed","write_action":false,"price_micros":0,"input_schema":null},{"name":"shopify_collections_import","description":"Produce Shopify collections import CSV","write_action":false,"price_micros":0,"input_schema":null},{"name":"shopify_ebay_feed","description":"Produce eBay File Exchange feed CSV","write_action":false,"price_micros":0,"input_schema":null},{"name":"shopify_google_feed","description":"Produce Google Shopping feed CSV","write_action":false,"price_micros":0,"input_schema":null},{"name":"shopify_inventory_import","description":"Produce Shopify inventory import CSV","write_action":false,"price_micros":0,"input_schema":null},{"name":"shopify_metafields_safe_reimport","description":"Produce a safe Shopify metafields re-import CSV","write_action":false,"price_micros":0,"input_schema":null},{"name":"shopify_product_metafields_import","description":"Produce Shopify product-metafields import CSV","write_action":false,"price_micros":0,"input_schema":null},{"name":"shopify_products_import","description":"Produce Shopify products import CSV","write_action":false,"price_micros":0,"input_schema":null},{"name":"shopify_products_import_fix","description":"Fix Shopify products import CSV","write_action":false,"price_micros":0,"input_schema":null},{"name":"shopify_ups_feed","description":"Produce UPS WorldShip batch CSV","write_action":false,"price_micros":0,"input_schema":null},{"name":"shopify_url_redirects_import","description":"Produce Shopify URL redirects import CSV","write_action":false,"price_micros":0,"input_schema":null},{"name":"shopify_variant_metafields_import","description":"Produce Shopify variant-metafields import CSV","write_action":false,"price_micros":0,"input_schema":null},{"name":"xlsx_aggregate","description":"pandas-style df.groupby([cols]).agg({col: func}) on a LOCAL .xlsx file. funcs: sum / mean / min / max / count / count_distinct.","write_action":false,"price_micros":0,"input_schema":null},{"name":"xlsx_charts","description":"List 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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"xlsx_check","description":"Verify Excel workbook with an independent engine","write_action":false,"price_micros":0,"input_schema":null},{"name":"xlsx_comments","description":"list 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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"xlsx_conditional_formats","description":"list 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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"xlsx_convert","description":"universal 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.).","write_action":false,"price_micros":0,"input_schema":null},{"name":"xlsx_data_clean","description":"AI-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 — ","write_action":false,"price_micros":0,"input_schema":null},{"name":"xlsx_data_validations","description":"list 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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"xlsx_describe","description":"pandas-style df.describe() per column — count, nulls, unique, min/max/mean/std for numerics, dtype with purity score.","write_action":false,"price_micros":0,"input_schema":null},{"name":"xlsx_diff","description":"compute a semantic diff between two LOCAL .xlsx files — cell-level deltas, formula changes, added/removed rows.","write_action":false,"price_micros":0,"input_schema":null},{"name":"xlsx_doctor","description":"ONE-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, v","write_action":false,"price_micros":0,"input_schema":null},{"name":"xlsx_eval","description":"evaluate Excel formulas against a LOCAL .xlsx file with our own recalc engine. xlwings-style.","write_action":false,"price_micros":0,"input_schema":null},{"name":"xlsx_external_links","description":"list 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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"xlsx_filter","description":"pandas-style row filter on a LOCAL .xlsx file with predicates AND-combined: eq/ne/gt/gte/lt/lte/contains/in/is_null/not_null.","write_action":false,"price_micros":0,"input_schema":null},{"name":"xlsx_form_controls","description":"list 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.","write_action":true,"price_micros":0,"input_schema":null},{"name":"xlsx_formulas","description":"extract every formula in a LOCAL .xlsx workbook — cell coord (A1), formula text, cached result. openpyxl-style read-only metadata.","write_action":false,"price_micros":0,"input_schema":null},{"name":"xlsx_healer_cure","description":"Apply 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 (rew","write_action":false,"price_micros":0,"input_schema":null},{"name":"xlsx_healer_diagnose","description":"produce 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 re","write_action":false,"price_micros":0,"input_schema":null},{"name":"xlsx_healer_intent","description":"Goal-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, cure","write_action":false,"price_micros":0,"input_schema":null},{"name":"xlsx_healer_simulate","description":"simulate 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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"xlsx_hyperlinks","description":"list every hyperlink in a workbook with its anchor cell, target URL/anchor, display text, tooltip, and a kind classifier (external / internal / mailto / unknown).","write_action":false,"price_micros":0,"input_schema":null},{"name":"xlsx_images","description":"List 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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"xlsx_list_sheets","description":"list sheet names, dimensions, and visibility for a LOCAL .xlsx file.","write_action":false,"price_micros":0,"input_schema":null},{"name":"xlsx_macros","description":"Inspect 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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"xlsx_merged_cells","description":"list 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 mysterious","write_action":false,"price_micros":0,"input_schema":null},{"name":"xlsx_named_ranges","description":"list all defined names (named ranges) in a LOCAL .xlsx workbook — name, scope (workbook or sheet), kind (cell / range / formula), reference.","write_action":false,"price_micros":0,"input_schema":null},{"name":"xlsx_pii_clean","description":"Redact personal or sensitive data from an Excel file","write_action":false,"price_micros":0,"input_schema":null},{"name":"xlsx_pii_scan","description":"Scan Excel for personal or sensitive data","write_action":false,"price_micros":0,"input_schema":null},{"name":"xlsx_pivot","description":"pandas-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`.","write_action":false,"price_micros":0,"input_schema":null},{"name":"xlsx_pivot_tables","description":"List 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.).","write_action":false,"price_micros":0,"input_schema":null},{"name":"xlsx_post_slack","description":"upload a local .xlsx file to a Slack channel as a file attachment, with an optional accompanying message.","write_action":true,"price_micros":0,"input_schema":null},{"name":"xlsx_post_teams","description":"Upload a local .xlsx file to a Microsoft Teams channel as a file attachment, with an optional accompanying message.","write_action":true,"price_micros":0,"input_schema":null},{"name":"xlsx_print_settings","description":"surface \"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"xlsx_properties","description":"Surface 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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"xlsx_protection","description":"Surface 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","write_action":false,"price_micros":0,"input_schema":null},{"name":"xlsx_read","description":"xfa — read an .xlsx file by path and return a rendered markdown/JSON/SQL representation.","write_action":false,"price_micros":0,"input_schema":null},{"name":"xlsx_read_handle","description":"read 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.","write_action":true,"price_micros":0,"input_schema":null},{"name":"xlsx_receipt","description":"Attach 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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"xlsx_redact","description":"redact PII and sensitive values from a LOCAL .xlsx file before sharing or archiving.","write_action":false,"price_micros":0,"input_schema":null},{"name":"xlsx_schema","description":"infer column schema of a LOCAL .xlsx file — types, nullable flags, header row, sample values.","write_action":false,"price_micros":0,"input_schema":null},{"name":"xlsx_session_set_validations","description":"configure 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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"xlsx_slicers_timelines","description":"List 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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"xlsx_sort","description":"pandas-style df.sort_values() on a LOCAL .xlsx file with multi-column sort and per-column direction (asc/desc, default asc).","write_action":false,"price_micros":0,"input_schema":null},{"name":"xlsx_stamp","description":"Sign 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; pas","write_action":false,"price_micros":0,"input_schema":null},{"name":"xlsx_styles","description":"surface 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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"xlsx_tables","description":"list every Excel ListObject (\"Format as Table\" structures) in a LOCAL .xlsx workbook — name, sheet, range, header/totals flags, columns.","write_action":false,"price_micros":0,"input_schema":null},{"name":"xlsx_topology","description":"one-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).","write_action":false,"price_micros":0,"input_schema":null},{"name":"xlsx_validate","description":"cross-engine consistency check on a LOCAL .xlsx file — runs the workbook through TWO independent renderers (@protobi/exceljs and @cj-tech-master/excelts) and reports cell-level divergences.","write_action":false,"price_micros":0,"input_schema":null},{"name":"xlsx_value_counts","description":"pandas-style Series.value_counts() on one column of a LOCAL .xlsx file — count each unique value, sorted by frequency desc, with percentage.","write_action":false,"price_micros":0,"input_schema":null},{"name":"xlsx_vault_cure","description":"Clean hidden or risky content from an Excel file","write_action":false,"price_micros":0,"input_schema":null},{"name":"xlsx_vault_scan","description":"Scan Excel for hidden or risky content","write_action":false,"price_micros":0,"input_schema":null},{"name":"xlsx_verify_receipt","description":"verify 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).","write_action":false,"price_micros":0,"input_schema":null},{"name":"xlsx_verify_stamp","description":"verify 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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"xlsx_workbook_views","description":"Surface 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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"xlsx_write","description":"create or update a LOCAL .xlsx file from a structured spec.","write_action":true,"price_micros":0,"input_schema":null}],"scan":{"score":77,"grade":"B","scanned_at":"2026-09-19T20:15:17.339Z","report":{"scannerVersion":"0.1.5","scannedAt":"2026-09-19T20:15:17.300Z","components":{"code":{"score":15,"max":25,"notes":["15 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":15,"max":15,"notes":["last push 4 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[{"id":"install.script","severity":"medium","component":"code","title":"npm install lifecycle script present"},{"id":"install.script","severity":"medium","component":"code","title":"npm install lifecycle script present","evidence":"package.json: …cripts/check-publish-allowlist.js\", \"postinstall\": \"node scripts/postinstall.js\" }, \"k…"}],"inputs":{"packages":[{"registryType":"npm","identifier":"xlsx-for-ai","version":"4.0.6","found":true,"license":"MIT","hasInstallScripts":true,"dependencyCount":1,"publishedAt":"2026-09-11T15:45:08.448Z","repositoryUrl":"git+https://github.com/senoff/xlsx-for-ai.git","weeklyDownloads":506}],"repo":{"found":true,"owner":"senoff","repo":"xlsx-for-ai","archived":false,"pushedAt":"2026-09-16T05:21:18Z","stars":6,"forks":0,"openIssues":1,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/4248173?v=4","ownerCreatedAt":"2013-04-24T18:09:05Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/4248173?v=4&s=128","source":"registry"},"presence":{"stars":6,"forks":0,"downloadsWeek":506,"license":"MIT","lastPushAt":"2026-09-16T05:21:18.000Z","score":37}}}},"grade_history":[],"reviews":[]}