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

XLIDE

PYPI · XLIDE-MCP

Read, write, analyze, test and diff the VBA in Office files, and the document around it

Available components

+15 this week 96 Trust /100

Last scanned (19 hours ago)

Scores higher than 98% of PyPI servers

Category Documents and Files

Trust breakdown (7 categories)

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

Supply Chain Security100
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • Runs setuptools.build_meta at install time, a recognised build step with no custom scripting around it. View diagnostics → Pass
  • 2 of 32 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency100
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to WilliamSmithEdward/xlide_mcp). View diagnostics → Pass
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 21 days ago).Pass
  • Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability80
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 15909 tokens (~237/item across 67 items; 65 tools + 2 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 Management100
  • No destabilizing schema changes in the last 30 days.Pass
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
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 67 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass
Changelog

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

  • 2 Nov 26 +15
    • Malware scan: unverified → pass ▲ security
  • 1 Nov 26 −15
    • Malware scan: pass → unverified ▼ security
  • 30 Oct 26 +15
    • Malware scan: unverified → pass ▲ security
  • 28 Oct 26 −15
    • Malware scan: pass → unverified ▼ security
  • 27 Oct 26 +15
    • Malware scan: unverified → pass ▲ security
  • 26 Oct 26 −15
    • Malware scan: pass → unverified ▼ security
  • 25 Oct 26 +15
    • Malware scan: unverified → pass ▲ security
  • 20 Oct 26 −15
    • Malware scan: pass → unverified ▼ security
    • Stability: 0.97 → pass security
Diagnostics

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

Captured 4 Nov 2026 · Analysed pypi/xlide-mcp@1.2.4

Provenance Verified

A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.

Result Verified
Ecosystem pypi
Reason Verified
Discovered via Registry attestation endpoint
Source repo WilliamSmithEdward/xlide_mcp
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/WilliamSmithEdward/xlide_mcp/.github/workflows/publish.yml@refs/tags/v1.2.4
Rekor log index 3245381838
Predicate type PyPI publish attestation https://docs.pypi.org/attestations/publish/v1
Subject digest sha256:3010d28c74f29eeeb80ac7de34e2bcfd6b497363dcef7745e9a52296fcf30983

Background: How many MCP packages publish verified provenance →

Install scripts 1 script
Hook Tier Command
build_backend allowlisted setuptools.build_meta

Background: Why install scripts are a supply-chain risk →

Dependencies 32 packages
Packages resolved 32
Stale 1
No linked repository 1
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 65 exposed · ~14,849 tokens

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

Tool Tokens
xlide_access_catalog ~230

Lists what an Access database holds besides its code: tables with their columns, saved queries with their SQL, and the relationships between tables. An .accdb is an application rather than a document, and the VBA in it is written against these, so reading the modules alone shows half of it. Use include with offset and next_offsets to page through a large catalog. Long query SQL is previewed; use xlide_read_access_query for the whole text. If one query's SQL cannot be read, that entry has sql=null and sql_error rather than hiding the catalog. Access files only.

NameTypeReqDescription
file_pathstringyesAbsolute path to the Access database.
includestring–'tables', 'queries', 'relationships' or 'all'.
include_systemboolean–Include the MSys tables and relationships Access keeps its own objects in. Off by default: every database has them, and listing them buries the few that are about the user's data.
max_resultsinteger–Most items per list.
offsetinteger–Items to skip in each list.

Structured output declared, but exposes no named fields.

No examples provided.

xlide_add_chart ~327

Adds a chart of a block of cells to a worksheet and saves the workbook, written as Excel's Insert Chart writes one of the same type. The block's first row names the series and its first column holds the categories, as Excel reads a selection; a block taller than it is wide makes a series of each column. The data can be on another sheet, as Data!A1:C13. Place it with cell or left and top in points. xlide_list_shapes reports it afterwards with each series' formula.

NameTypeReqDescription
cellstring–The chart's top-left cell, such as H2.
chart_namestring–Its name. Empty gives Chart 1, Chart 2 and so on.
chart_typestring–column, bar, line, lineMarkers, pie, doughnut, scatter or area.
data_rangestringyesThe block to chart, header row and category column included.
file_pathstringyesAbsolute path to the Excel file.
heightnumber–Points. 0 gives Excel's 216.
leftnumber–Without cell: points from the left.
series_instring–'columns' or 'rows' to say which way the series run. Empty decides.
sheetstringyesWorksheet the chart goes on.
titlestring–The title. Empty keeps Excel's automatic one.
topnumber–Without cell: points from the top.
widthnumber–Points. 0 gives Excel's 360.

Structured output declared, but exposes no named fields.

No examples provided.

xlide_analyze ~233

Runs static analysis over every VBA module in an Office file and returns the problems with module, line, column, code and message. Needs no Office installation and runs nothing. Each file is measured against its own host's object model, so Word code is never judged by Excel's surface, and a Visual Basic 6 project against no host at all, because its code does not run in one. Call this after every VBA change and treat any problem at error severity as a build failure: fix it and analyze again until it is clean. Warnings are worth reading; some are style, some are the bug. Use offset and next_offset to read later findings.

NameTypeReqDescription
file_pathstringyesAbsolute path to the Office file.
max_resultsinteger–Return at most this many findings.
min_severitystring–Lowest severity to report: 'error', 'warning' or 'information'.
module_namestring–Report only this module's problems. The whole project is still analyzed, so cross-module references still resolve.
offsetinteger–Skip this many matching findings.

Structured output declared, but exposes no named fields.

No examples provided.

xlide_analyze_source ~256

Runs static analysis over VBA source you are holding, before it is written to a file. Use it to check code you have just generated: it costs nothing, needs no file, and catches the compile errors that would otherwise surface in front of the user. Pass host so the code is measured against the right object model, and file_path instead if the code is destined for a file that already exists, which resolves calls into the rest of that project. Use offset and next_offset to read later findings from a long result.

NameTypeReqDescription
file_pathstring–An existing Office file this module belongs to. Its other modules are read as context, so calls into them resolve; only this source is analyzed. Overrides host.
hoststring–'excel', 'word', 'powerpoint' or 'access'. Empty checks the language alone, with no host object model.
kindstring–'standard', 'class', 'document' or 'userform'.
max_resultsinteger–Return at most this many findings.
module_namestring–Name to report problems against.
offsetinteger–Skip this many findings.
sourcestringyesThe VBA source to check.

Structured output declared, but exposes no named fields.

No examples provided.

xlide_check_cells ~184

Lists cells Excel would mark with a green error-checking triangle, such as numbers stored as text, inconsistent formulas, or formulas with cached errors. Returns the rule and cell for each finding. Excel hides ignored findings unless include_ignored=true. Formula-dependent checks use the file's cached results, which may be stale until Excel recalculates and saves it. Works on .xlsx, .xlsm and .xlam; page through long lists with offset and next_offset.

NameTypeReqDescription
file_pathstringyesAbsolute path to the Excel file.
include_ignoredboolean–Include findings Excel was told to ignore.
max_resultsinteger–Most findings to return.
offsetinteger–Findings to skip.
rules––Excel error-rule names; omit for its enabled rules.
sheetstringyesWorksheet name, matched without case.

Structured output declared, but exposes no named fields.

No examples provided.

xlide_close_in_app ~258

Closes a file in the Office application the user has it open in, which frees it for a write. Only that file: the application stays, unless this server started the instance and nothing else is open in it. A copy holding unsaved work is left open and reported, unless save_changes saves it first or discard_changes closes it without saving; losing the user's work is their decision, so ask them. When the application does not answer, or the file stays locked, end_process ends the process Windows says holds the file, and every unsaved document in that process is lost with it: ask the user first. Where the user was in the file is remembered, and xlide_open_in_app puts them back there. Windows only.

NameTypeReqDescription
discard_changesboolean–Close without saving, losing unsaved changes. Ask the user first.
end_processboolean–If the application does not answer, or the file stays locked, end the process holding it. Loses unsaved work in every document open in it. Ask the user first.
file_pathstringyesAbsolute path to the Office file.
save_changesboolean–Save unsaved changes before closing. Not for a read-only copy.

Structured output declared, but exposes no named fields.

No examples provided.

xlide_compile_check ~130

Asks the real VBA editor to compile a file's project, and reports whether it accepted it. Windows only. This is the compiler's own verdict, where xlide_analyze is a static analyzer's; run the analyzer first, because it is free and needs no Office, and use this when the last word matters. Excel is made visible for the check, because a hidden instance does not surface the compile-error dialog and would report a rejection as a pass.

NameTypeReqDescription
file_pathstringyesAbsolute path to the Office file.
timeoutnumber–Seconds to wait for the verdict.

Structured output declared, but exposes no named fields.

No examples provided.

xlide_copy_cells ~282

Copies a range to another cell or block, on the same sheet or another sheet, and saves the workbook. Paste Special can select values, formulas, formats, comments, validation, links or other parts; it can also transpose, skip blanks or combine values arithmetically. The destination may hold data, which the paste can replace. Set allow_overwrite=true only after the user agrees to replace it. Formulas and their relative references move as Excel's Copy does. Works on .xlsx, .xlsm and .xlam.

NameTypeReqDescription
allow_overwriteboolean–Required: the paste may replace data. Set after user agreement.
destinationstringyesDestination cell or repeatable block.
destination_sheetstring–Destination sheet; empty means the source sheet.
file_pathstringyesAbsolute path to the Excel file.
operationstring–add, subtract, multiply or divide; empty replaces.
pastestring–all, values, formulas, formats, comments, validation, link, or another Excel Paste Special kind.
sheetstringyesSource worksheet name.
skip_blanksboolean–Leave destination cells unchanged for blank source cells.
source_rangestringyesSource range such as A1:D20.
transposeboolean–Turn source rows into destination columns.

Structured output declared, but exposes no named fields.

No examples provided.

xlide_create_project ~189

Creates a new Office file with an empty VBA project at the given absolute path, from a template the application itself authored, so it opens with no repair prompt. Extensions: .xlsm, .xlsb, .xlam, .docm, .pptm, .accdb, and .xlsx for a workbook with Power Query and no macros. It never overwrites a file or replaces a project that is already there. A .xlsm, .docm or .pptm saved before its first macro has no VBA project at all; xlide_write_module gives it one along with the first module. This tool also gives an existing .docm or .accdb with no project the empty one its application makes.

NameTypeReqDescription
file_pathstringyesAbsolute path to create, whose extension picks the format, or an existing .docm or .accdb with no VBA project.

Structured output declared, but exposes no named fields.

No examples provided.

xlide_delete_module ~196

Permanently deletes a VBA module from an Office file and saves it. There is no undo: ask the user first, and read the module before deleting it so its code can be put back if they change their mind. Document modules cannot be deleted. For Excel, the write is refused if the server cannot check whether a shape still calls the module.

NameTypeReqDescription
allow_invalidate_signatureboolean–Permit saving a change that removes the VBA project's digital signature, where applicable. Set true only after the user agrees.
allow_protectedboolean–Permit saving a password-protected VBA project. Set true only after the user agrees.
expected_content_tokenstring–The content_token from your read, so a module that changed since is not deleted on the strength of a stale look at it.
file_pathstringyesAbsolute path to the Office file.
module_namestringyesModule to delete.

Structured output declared, but exposes no named fields.

No examples provided.

xlide_doctor ~67

Reports what this server can reach: its workspace roots, whether it is read-only, which optional layers are installed, and, on Windows, which Office applications are available to run macros and tests. Call it when a tool reports something missing, or before promising the user a test run.

Input schema present but exposes no named parameters.

Structured output declared, but exposes no named fields.

No examples provided.

xlide_edit_form ~440

Changes one form's design and saves the file: add a control, remove one, or set a property on one. Geometry is in points for a UserForm and twips for an Access design. Setting a property to null clears it, putting the control back at its default. Removing a container takes its children with it, so ask the user first. Adding a control does not write its event procedure; do that with xlide_write_module on the form's code module.

NameTypeReqDescription
actionstringyes'add_control', 'remove_control' or 'set_property'.
allow_invalidate_signatureboolean–Permit saving a change that removes the VBA project's digital signature, where applicable. Set true only after the user agrees.
allow_protectedboolean–Permit saving a password-protected VBA project. Set true only after the user agrees.
captionstring–For add_control on an Access design: the control's caption.
containerstring–For add_control: the Frame or page to put it in.
control_namestringyesThe control to add, remove or change.
control_typestring–For add_control: Label, TextBox, CommandButton, CheckBox, OptionButton, ComboBox, ListBox, Frame, MultiPage, Image, SpinButton and the rest.
file_pathstringyesAbsolute path to the Office file.
form_namestringyesForm to change.
heightnumber–0 uses the type's default.
leftnumber–For add_control.
property_namestring–For set_property: the property to set.
property_value––For set_property. null clears it to the default.
sectionstring–For add_control on an Access design: the band to put it in, such as Detail, PageHeaderSection or PageFooterSection. xlide_list_forms names the ones a design has. Ignored for a UserForm, which has no…
topnumber–For add_control.
widthnumber–0 uses the type's default.

Structured output declared, but exposes no named fields.

No examples provided.

xlide_edit_module ~264

Replaces, inserts or deletes several line ranges in one existing VBA module and saves once. Lines are 1-based against the original source returned by xlide_read_module, without the attribute header. Each edit has start_line, end_line inclusive, and replacement text. For insertion, set end_line to start_line - 1; an empty replacement deletes the named lines. Ranges must not overlap. expected_content_token is required and refuses a stale edit. Set preview_only to validate the edits and see the proposed diff without saving. An applied edit includes the read-back diff and new token. Analyze the file afterward.

NameTypeReqDescription
allow_invalidate_signatureboolean–Permit saving a change that removes the VBA project's digital signature, where applicable. Set true only after the user agrees.
allow_protectedboolean–Permit saving a password-protected VBA project. Set true only after the user agrees.
editsarrayyesLine edits against the original module body, applied together.
expected_content_tokenstringyesContent token from the last read; required.
file_pathstringyesAbsolute path to the Office file.
module_namestringyesExisting module to edit.
preview_onlyboolean–Show the proposed diff without saving.

Structured output declared, but exposes no named fields.

No examples provided.

xlide_evaluate_formula ~180

Works out what a formula would give in a cell of a workbook, without writing it there: to check a formula before xlide_write_cells, or to ask the workbook a question, such as =SUMIFS(Sales[Amount],Sales[Region],"West"). Uses pyOfficeEditor's formula engine, 493 of Excel's functions, with the workbook's cells as they stand. A formula written for one cell answers with one value, as Excel would give it there. Changes nothing. .xlsx, .xlsm and .xlam.

NameTypeReqDescription
atstring–The cell it is imagined in, which relative references count from.
file_pathstringyesAbsolute path to the Excel file.
formulastringyesThe formula, with or without its '='.
sheetstringyesWorksheet the formula is evaluated on.

Structured output declared, but exposes no named fields.

No examples provided.

xlide_export_modules ~177

Writes every VBA module in an Office file to a folder as .bas and .cls files, for source control or review. Previews by default: it reports what it would create, update and leave alone, and writes nothing until apply=true. Only when the user asks for it. Applying a plan leaves unchanged files alone. The exported files are copies: editing one changes nothing inside the Office file until xlide_import_modules runs.

NameTypeReqDescription
applyboolean–Write the files. False previews the plan.
delete_staleboolean–Delete .bas and .cls files in the folder that match no module. Ask the user first.
export_folderstring–Folder to write into. Empty uses a folder named after the file, beside it.
file_pathstringyesAbsolute path to the Office file.

Structured output declared, but exposes no named fields.

No examples provided.

xlide_format_cells ~573

Changes how a range looks: bold and font, fill colour, borders, alignment, number format, and merging. Only what you pass is changed, so each cell keeps the rest of its own format and making a header row bold does not flatten the number formats under it. Colours are RRGGBB or AARRGGBB hex without a leading hash. A number format is an Excel format code such as '#,##0.00' or 'yyyy-mm-dd'; that code is also what decides whether a number is shown as a date. Merging clears values and formulas outside the top-left cell; allow_overwrite is required when that would discard content. Works on .xlsx, .xlsm and .xlam.

NameTypeReqDescription
allow_overwriteboolean–For merge: allow clearing values or formulas in cells other than the top-left cell. Ask the user first.
bold––Bold on or off.
border_colorstring–Border colour as hex. Defaults to automatic.
border_stylestring–Border on all four sides: thin, medium, thick, double, dotted, dashed, hair, or none to remove.
cell_rangestringyesA1-style range, such as A1:D1, or a single cell.
file_pathstringyesAbsolute path to the Excel file.
fill_colorstring–Solid background colour as hex. 'none' clears the fill back to no fill.
font_colorstring–Text colour as hex, such as 'FF0000'.
font_namestring–Typeface, such as 'Calibri'.
font_sizenumber–Points. 0 leaves it alone.
horizontalstring–left, center, right, fill, justify or general.
italic––Italic on or off.
mergestring–'merge' joins the range into one cell, keeping only the top-left value. 'unmerge' splits it back. Empty leaves merging alone.
number_formatstring–Excel format code, such as '#,##0.00', '0%' or 'yyyy-mm-dd'.
sheetstringyesWorksheet name, matched without case.
strike––Strikethrough on or off.
stylestring–A named cell style, applied first: one of Excel's own, such as Good, Bad, Neutral, Title, Heading 1, Total, Input, Output, Note or 20% - Accent1, or one the workbook defines. It sets only the parts t…
underline––Single underline on or off.
verticalstring–top, center, bottom, justify or distributed.
wrap_text––Wrap text in the cell.

Structured output declared, but exposes no named fields.

No examples provided.

xlide_git_changes ~196

Lists what changed inside an Office file since a git revision, one entry per VBA module and Power Query, with a unified diff. git diff cannot show this: the file is binary, so a commit that changed one line and one that replaced the whole project look the same. Call this before committing, and to review what an agent or a colleague changed. Worksheet cell values are not compared. Defaults to HEAD; pass any revision git understands. Needs the file to be inside a git repository and tracked in that revision.

NameTypeReqDescription
file_pathstringyesAbsolute path to the Office file.
include_diffboolean–Include the unified diff. Off gives just what changed and by how much.
revisionstring–Any revision git understands: HEAD, a branch, a tag, a SHA.
sectionstring–Only this one, named as a module or a query is named. Empty reports every one.

Structured output declared, but exposes no named fields.

No examples provided.

xlide_import_modules ~197

Reads .bas and .cls files from a folder back into an Office file's VBA project and saves it. Previews by default: it reports which modules would change and by how much, and writes nothing until apply=true. A file whose name matches no module creates one. Document modules such as ThisWorkbook are written but never created. Applying an unchanged plan skips the save. After a change, call xlide_analyze.

NameTypeReqDescription
allow_invalidate_signatureboolean–Permit saving a change that removes the VBA project's digital signature, where applicable. Set true only after the user agrees.
allow_protectedboolean–Permit saving a password-protected VBA project. Set true only after the user agrees.
applyboolean–Write the modules. False previews the plan.
file_pathstringyesAbsolute path to the Office file.
source_folderstringyesFolder holding the .bas/.cls files.

Structured output declared, but exposes no named fields.

No examples provided.

xlide_is_open ~87

Says whether a file is open in its Office application, in any running instance: read-only or for editing, with unsaved changes or not, and which processes hold it locked. Call it when a write reports the file is locked, before closing anything, or when the user asks. Windows only. Changes nothing.

NameTypeReqDescription
file_pathstringyesAbsolute path to the Office file.

Structured output declared, but exposes no named fields.

No examples provided.

xlide_list_forms ~148

Lists the UserForms in an Office file, or the forms and reports in an Access database, with each one's control count and, for Access, the sections a control can go in. A design's code is a module of the same name, read with xlide_read_module. An unreadable report collection is a failure, not an empty list. An unreadable design's sections are marked unknown with sections_error. Use offset and next_offset to read large form lists in pages.

NameTypeReqDescription
file_pathstringyesAbsolute path to the Office file.
max_resultsinteger–Return at most this many forms.
offsetinteger–Skip this many forms before a page.

Structured output declared, but exposes no named fields.

No examples provided.

xlide_list_modules ~129

Lists the VBA modules in an Office file: name, kind (standard, class, document or userform), line count, and a content_token to pass to a guarded write. xlide_project_info returns this and more in one call; use this one when the file is already known and only the module list is wanted. Use offset and next_offset to read large projects in pages.

NameTypeReqDescription
file_pathstringyesAbsolute path to the Office file.
max_resultsinteger–Return at most this many modules.
offsetinteger–Skip this many modules before a page.

Structured output declared, but exposes no named fields.

No examples provided.

xlide_list_procedures ~130

Lists the Sub, Function and Property procedures in one module, with each one's kind, scope, line number and signature. The module's content_token can guard an xlide_edit_module call. Use it to find where to change something without reading a long module in full. Use offset and next_offset to page through a module with many procedures.

NameTypeReqDescription
file_pathstringyesAbsolute path to the Office file.
max_resultsinteger–Most procedures to return.
module_namestringyesModule name, matched without case.
offsetinteger–Procedures to skip.

Structured output declared, but exposes no named fields.

No examples provided.

xlide_list_projects ~209

Finds the Office files in this server's workspace and returns their absolute paths, host application and whether their VBA can be opened. Call this first when the user has not named a file. Covers Excel (.xlsm, .xlsb, .xlam, .xls, and .xlsx for Power Query and sheets), Word (.docm, .dotm, .doc), PowerPoint (.pptm, .potm), Access (.accdb, .mdb), and Visual Basic 6 projects (.vbp, whose modules are the files its manifest names). Files whose extension is recognized but not openable are listed with the reason, so a template or add-in is not silently missing. Use offset and next_offset to read large workspaces in pages.

NameTypeReqDescription
max_resultsinteger–Return at most this many files.
offsetinteger–Skip this many files before a page.
subfolderstring–Limit the search to this folder. Empty searches every workspace root.

Structured output declared, but exposes no named fields.

No examples provided.

xlide_list_queries ~151

Lists the Power Query queries in an Excel workbook: name, group, description, where each loads, and its applied step names. If the M formula cannot be parsed, steps is null with steps_error rather than an empty list. Queries live outside the VBA project, so a plain .xlsx has them too. Call this when asked what a workbook does; a workbook with no macros can still be doing most of its work here. Use offset and next_offset to read large query lists in pages.

NameTypeReqDescription
file_pathstringyesAbsolute path to the Excel workbook.
max_resultsinteger–Return at most this many queries.
offsetinteger–Skip this many queries before a page.

Structured output declared, but exposes no named fields.

No examples provided.

xlide_list_references ~108

Lists the type libraries a VBA project references: the name code uses to qualify them, the kind, and the registry or file path the project recorded. Call it when a name will not resolve, when deciding between early and late binding, or when code works on one machine and not another: a reference names a path and a version, so a project can be broken by the machine rather than by its own code.

NameTypeReqDescription
file_pathstringyesAbsolute path to the Office file.

Structured output declared, but exposes no named fields.

No examples provided.

xlide_list_shapes ~224

Lists what sits on a worksheet's drawing layer: buttons, form controls, AutoShapes, text boxes, pictures, charts and groups, each with the cells it covers, its position in points and, where it has one, the macro a click runs. A form control also carries what it holds: a check box's state, a list's chosen item, a spinner's value and bounds, the cell it is linked to. Call it when asked how a workbook is started, or before renaming a Sub: a button's OnAction names a procedure and nothing rewrites it. ActiveX controls are listed but have no macro; their code is event procedures in the sheet's module. For a crowded sheet, use sheet with offset and next_offset to read later shapes.

NameTypeReqDescription
file_pathstringyesAbsolute path to the Excel file.
max_resultsinteger–Return at most this many per sheet.
offsetinteger–Skip this many shapes on one sheet.
sheetstring–One worksheet. Empty lists every sheet's shapes.

Structured output declared, but exposes no named fields.

No examples provided.

xlide_list_sheets ~175

Lists the worksheets in an Excel file with their used ranges, whether each is hidden, and the pivot tables on each, the chart sheets, and the workbook's named ranges. Call this before reading cells, so the range you ask for is one that holds data. On .xlsx, .xlsm and .xlam the file also supplies pivot tables, chart sheets and named ranges. For .xlsb and .xls, Windows with Excel is required; that path surveys sheet names, used ranges and visibility only. Unreadable visibility or pivot metadata is marked unknown with hidden_error or pivot_tables_error. A malformed Excel survey is refused rather than returned as a partial sheet list.

NameTypeReqDescription
file_pathstringyesAbsolute path to the Excel file.
timeoutnumber–Seconds allowed if Excel has to answer.

Structured output declared, but exposes no named fields.

No examples provided.

xlide_live_read_module ~246

Reads a module's text as the running editor holds it, including edits the user has not saved. This is the one read that can differ from xlide_read_module, and the difference is exactly the user's unsaved work. Use it to see what they are actually working on; use xlide_read_module for what is in the file. surface_only=true reads the modern editor's own copy instead, which exists only for a module the user has open in a tab. start_line and end_line read a slice of long live source; content_token describes the whole live module.

NameTypeReqDescription
end_lineinteger–Last source line. 0 means the end.
module_namestringyesModule name as the editor shows it.
pidinteger–Which session, by process id.
projectstring–Which project, when two documents are open and both hold a module of this name.
start_lineinteger–First source line. 0 means the start.
surface_onlyboolean–Read the modern editor's own copy, which only exists for an open tab. Off reads the module through the editor, which always answers.

Structured output declared, but exposes no named fields.

No examples provided.

xlide_live_request ~145

Calls one read route on a running xlide_vbide session and returns its JSON. Start with route='agent', which answers with the session's own route table and what each one is for. Allowed routes: agent, agent/examples, agent/routes, analyzer, doctor, engine, model, native, project, projects, state, stats, windows. Routes that drive the editor are deliberately not reachable here.

NameTypeReqDescription
pidinteger–Which session, by process id.
querystring–Query string for the route, such as 'name=Module1' or 'type=Range'.
routestringyesOne of the read routes listed above.

Structured output declared, but exposes no named fields.

No examples provided.

xlide_live_sessions ~104

Lists the running xlide_vbide sessions this machine can reach: one per Office process that has opened the Visual Basic Editor with the add-in loaded. Use it to find out whether the user has a live editor before asking about what is on their screen. Windows only, and the add-in's local API has to be switched on by the user. Each session is probed before it is listed, because a discovery file outlives the process that wrote it.

Input schema present but exposes no named parameters.

Structured output declared, but exposes no named fields.

No examples provided.

xlide_live_state ~110

What the running Visual Basic Editor is doing right now: the module and project on screen, whether the project is in break mode, whether there are unsaved edits, the procedure the caret is in, and whether the analyzer engine is answering. Use it when the user asks about what they are looking at, or before suggesting an edit to a module they may have unsaved changes in.

NameTypeReqDescription
pidinteger–Which session, by process id. 0 uses the only one, or refuses.

Structured output declared, but exposes no named fields.

No examples provided.

xlide_manage_comment ~306

Lists, writes, answers or removes the comments on a worksheet's cells. Excel has two kinds: a note, the yellow box that shows on hover, and a threaded comment, the conversation on the Review tab with replies and a resolved state. action='list' reads both and changes nothing. 'set' writes a note, replacing one already on the cell, or with kind='thread' starts a conversation; 'reply' and 'resolve' act on a thread; 'remove' takes either kind off the cell. Use a note to explain a cell to whoever reads the workbook next.

NameTypeReqDescription
actionstring–list, set, reply, resolve or remove.
authorstring–Who wrote it, as the workbook shows the name.
cellstring–The cell, such as B4. For list, empty lists the sheet.
file_pathstringyesAbsolute path to the Excel file.
kindstring–For set: 'note' or 'thread'.
max_resultsinteger–For list: most comments to return.
offsetinteger–For list: comments to skip.
resolvedboolean–For resolve: false opens a thread again.
sheetstringyesWorksheet name, matched without case.
textstring–For set and reply: what the comment says.
visibleboolean–For a note: shown all the time, not only on hover.

Structured output declared, but exposes no named fields.

No examples provided.

xlide_manage_conditional_format ~331

Lists, adds or clears conditional formatting: the rules that colour cells by what is in them. rule='cell_is' with an operator and a value paints cells that compare true; rule='expression' takes a formula written for the top-left cell of the range and applied relatively, the way Excel's 'Use a formula' box works; rule='color_scale' and 'data_bar' are the gradient and in-cell bar. The paint itself is the fill and font arguments, which is what Excel calls a differential format.

NameTypeReqDescription
actionstring–list, add or clear.
bold––Make matching cells bold.
cell_rangestring–For add and clear: the range. Empty clears the whole sheet.
file_pathstringyesAbsolute path to the Excel file.
fill_colorstring–Fill to paint matching cells, as hex.
font_colorstring–Text colour for matching cells, as hex.
formulastring–For expression: a formula for the range's top-left cell.
max_resultsinteger–For list: most to return.
offsetinteger–For list: format ranges to skip.
operatorstring–For cell_is: greaterThan, between, etc.
other_valuestring–For cell_is with between: the second value.
rulestring–cell_is, expression, color_scale or data_bar.
sheetstringyesWorksheet name, matched without case.
valuestring–For cell_is: the value compared against.

Structured output declared, but exposes no named fields.

No examples provided.

xlide_manage_filter ~482

Lists, sets, reapplies or clears the autofilter on a worksheet or on an Excel table, and hides the rows it filters out. Excel does not apply a filter when it opens a workbook: it shows the rows as the file marks them, so the rows are worked out here, held to what Excel keeps. action='list' reads the filters and changes nothing. 'set' filters one column and keeps what the others already filter by; call it once per column. Give criteria as VBA's Range.AutoFilter spells Criteria1 and Criteria2: '>=10', '=North', '=*east*', '=' for blanks, '<>' for anything; or top for the top N items (negative for the bottom), or dynamic for aboveAverage, thisMonth, Q1 and the like. 'reapply' filters again after the data changed; 'clear' removes the filter and shows every row.

NameTypeReqDescription
actionstring–list, set, reapply or clear.
cell_rangestring–For set on a sheet: the block with its header row, such as A1:F200. Empty keeps the range of the filter already there.
columnstring–For set: the column, by header text or by number from 1 in the range.
criteria1string–For set: Criteria1, such as '>=10' or '=West'.
criteria2string–For set: Criteria2, such as '<100'.
dynamicstring–For set: aboveAverage, belowAverage, today, yesterday, tomorrow, thisWeek, lastWeek, nextWeek, thisMonth, lastMonth, nextMonth, thisQuarter, lastQuarter, nextQuarter, thisYear, lastYear, nextYear, ye…
file_pathstringyesAbsolute path to the Excel file.
match_allboolean–With two criteria: true keeps rows meeting both, false either.
percentboolean–top counts percent rather than items.
sheetstringyesWorksheet name, matched without case.
tablestring–Filter this Excel table rather than a range.
topinteger–For set: keep the top N items, or with a negative N the bottom N.

Structured output declared, but exposes no named fields.

No examples provided.

xlide_manage_form ~303

Creates a UserForm, or an Access form or report, and saves the file. A form is a designer storage and a code module of the same name, and this writes both, which is why it exists rather than xlide_write_module. Renaming and deleting work on Access designs, where both halves move together; for a UserForm they are refused, because nothing here can move the designer storage and doing half of it loses the form. Add controls afterwards with xlide_edit_form, and write its event procedures with xlide_write_module.

NameTypeReqDescription
actionstringyes'create', 'rename' or 'delete'.
allow_invalidate_signatureboolean–Permit saving a change that removes the VBA project's digital signature, where applicable. Set true only after the user agrees.
allow_protectedboolean–Permit saving a password-protected VBA project. Set true only after the user agrees.
captionstring–For create: the caption it opens with.
designstring–For create in Access: 'form' or 'report'. Elsewhere, a form.
file_pathstringyesAbsolute path to the Office file.
form_namestringyesThe form or report to act on.
heightnumber–For create.
new_namestring–For rename: the new name.
widthnumber–For create. Points for a UserForm, twips for Access.

Structured output declared, but exposes no named fields.

No examples provided.

xlide_manage_hyperlink ~231

Lists, adds or removes hyperlinks on a worksheet. A link either goes out to a target, which is a URL or a file path, or inside the workbook to a location such as 'Summary!A1'. Pass one or the other. The cell's displayed text is separate from the link and is left alone unless you pass display.

NameTypeReqDescription
actionstring–list, add or remove.
cell_rangestring–For add and remove: the cell or range.
displaystring–For add: text to put in the cell.
file_pathstringyesAbsolute path to the Excel file.
locationstring–For add: a place in this workbook, like Summary!A1.
max_resultsinteger–For list: most links to return.
offsetinteger–For list: links to skip.
sheetstringyesWorksheet name, matched without case.
targetstring–For add: a URL or file path to open.
tooltipstring–For add: the hover text.

Structured output declared, but exposes no named fields.

No examples provided.

xlide_manage_name ~223

Lists, adds or removes a workbook's defined names. A defined name is what lets a formula say TaxRate rather than Config!$B$7, and VBA reads them too, so removing one can break code as well as formulas. action='list' changes nothing. For a range, qualify refers_to with its sheet and use absolute addresses to avoid following the active sheet or moving with a copied formula, for example Data!$A$1:$A$50.

NameTypeReqDescription
actionstring–list, add or remove.
file_pathstringyesAbsolute path to the Excel file.
max_resultsinteger–For list: most names to return.
namestring–For add and remove: the defined name.
offsetinteger–For list: names to skip.
refers_tostring–For add: what it points at, such as Data!$A$1:$A$50.
scopestring–A sheet name to scope it to that sheet. Empty means the workbook.

Structured output declared, but exposes no named fields.

No examples provided.

xlide_manage_reference ~376

Adds or removes a type library reference in a VBA project and saves the file. Use it when xlide_analyze reports missing-library-reference, or when code needs early binding, as Dim d As Scripting.Dictionary does. Name the library: Excel, Word, PowerPoint and Access work anywhere, and on Windows any library the VBA editor's References dialog lists resolves by its description (Microsoft Scripting Runtime) or by the name code writes (Scripting), taking its GUID, version and path from this machine's registry. A name that matches several libraries is refused with the candidates. Off Windows, pass guid and version. Adding the host's own library, or removing Microsoft Forms while a UserForm exists, is refused: the first is implicit and the second stops the project compiling.

NameTypeReqDescription
actionstringyes'add' or 'remove'.
allow_invalidate_signatureboolean–Permit saving a change that removes the VBA project's digital signature, where applicable. Set true only after the user agrees.
allow_protectedboolean–Permit saving a password-protected VBA project. Set true only after the user agrees.
file_pathstringyesAbsolute path to the Office file.
guidstring–For add: the library's GUID, when it is not registered on this machine. library is then the name the reference is recorded under.
librarystringyesFor add: the library's description, the name code uses, or Excel, Word, PowerPoint or Access. For remove: the name xlide_list_references reports, or the GUID.
versionstring–For add with guid: major.minor in hexadecimal, as the registry spells it, such as 1.0 or 2.8. Empty takes the newest registered, or 1.0.

Structured output declared, but exposes no named fields.

No examples provided.

xlide_manage_rows_columns ~251

Inserts, deletes, resizes, hides, shows, groups or ungroups whole rows or columns. Inserting and deleting move every reference in the workbook with them: a formula pointing below an inserted row follows it, and one pointing into deleted cells becomes #REF!, exactly as Excel does it. Deleting has no undo, so ask the user first. Widths are in characters and heights in points, which is what Excel's own dialogs use. Works on .xlsx, .xlsm and .xlam.

NameTypeReqDescription
actionstringyesinsert, delete, resize, hide, show, group or ungroup.
collapsedboolean–For group: start the new group collapsed.
countinteger–How many, counting from first.
file_pathstringyesAbsolute path to the Excel file.
firstintegeryesFirst row or column, 1-based. Column A is 1.
sheetstringyesWorksheet name, matched without case.
sizenumber–For resize: column width in characters, or row height in points. -1 restores the sheet default.
whichstringyes'rows' or 'columns'.

Structured output declared, but exposes no named fields.

No examples provided.

xlide_manage_shape ~500

Adds a Forms control, an AutoShape, a text box, a line or a picture to a worksheet, or removes one, and saves the workbook. The usual case is a button that runs a macro: kind='button', a caption in text, and the procedure in macro as Proc or Module.Proc, written first. Place it with cell, its top-left cell, or with left and top in points; width and height are points, with a size to start from when left at 0. Check boxes, option buttons, lists and drop-downs take linked_cell, and lists and drop-downs list_range. A Forms control lives in four parts that have to agree, and they are written and removed together. Removing a shape that runs a macro leaves the macro; removing a chart is not offered. Excel workbooks only; .xlsx, .xlsm and .xlam.

NameTypeReqDescription
actionstringyes'add' or 'remove'.
cellstring–For add: the top-left cell, such as B2.
file_pathstringyesAbsolute path to the Excel file.
geometrystring–For kind='shape': the preset, such as rect, roundRect or ellipse.
heightnumber–Points. 0 picks one.
image_pathstring–For kind='picture': a PNG, JPEG or GIF file.
kindstring–For add: button, checkBox, optionButton, dropDown, listBox, scrollBar, spinner, label, groupBox, shape, textBox, line or picture.
leftnumber–For add without cell: points from the left.
linked_cellstring–The cell a control writes its value to: $D$6.
list_rangestring–The cells a list or drop-down offers: $H$1:$H$9.
macrostring–The procedure a click runs: Proc or Module.Proc.
shape_namestringyesThe shape's name: new for add, as listed for remove.
sheetstringyesWorksheet name, matched without case.
textstring–A control's caption, a shape's text, or a picture's alt text.
topnumber–For add without cell: points from the top.
widthnumber–Points. 0 picks one.

Structured output declared, but exposes no named fields.

No examples provided.

xlide_manage_sheet ~287

Adds, removes, renames, moves, hides, shows, protects or unprotects a worksheet. Renaming rewrites the formulas and defined names that referred to the old name, so nothing breaks. Removing a sheet takes its cells, tables and everything on it, and formulas elsewhere that pointed at it become #REF!, which has no undo: ask the user first. Protecting a sheet stops editing in Excel; it is not a security boundary and the password is trivially recovered. Works on .xlsx, .xlsm, .xlam.

NameTypeReqDescription
actionstringyesadd, remove, rename, move, hide, show, protect or unprotect.
file_pathstringyesAbsolute path to the Excel file.
indexinteger–For add and move: 0-based position. -1 means the end.
new_namestring–For rename: the new name.
passwordstring–For protect: an optional password. Excel's sheet password is obfuscation, not encryption, so do not use one the user relies on elsewhere.
sheetstring–The sheet to act on. For add, the name to give the new one.
very_hiddenboolean–For hide: hide it so that Excel's own Unhide dialog does not list it. Only the VBA editor can bring it back.

Structured output declared, but exposes no named fields.

No examples provided.

xlide_manage_table ~231

Lists, adds or removes Excel tables, the ListObjects that Ctrl+T creates. A table names a block so formulas can say Sales[Amount] instead of an address that breaks when rows move, and it is what a Power Query load writes into. action='list' reads them and changes nothing. Adding one takes the column names from the header row of the range you give. Removing one leaves the cells and takes the table, so structured references to it break.

NameTypeReqDescription
actionstring–list, add or remove.
cell_rangestring–For add: the range including its header row, such as A1:D20.
file_pathstringyesAbsolute path to the Excel file.
max_resultsinteger–For list: most tables to return.
offsetinteger–For list: tables to skip.
sheetstring–Worksheet. Empty lists every sheet's tables.
table_namestring–For add and remove: the table's name.
totals_rowboolean–For add: give the table a totals row.

Structured output declared, but exposes no named fields.

No examples provided.

xlide_manage_validation ~327

Lists, adds or clears data validation: what a cell will accept, and the dropdown it shows. kind='list' with formula1 as a comma-separated set of values gives a dropdown; kind='list' with a range reference gives one driven by cells. The other kinds take an operator and one or two formulas, which may be literals or references. Validation stops typing in Excel, not writing through this server, and Excel does not re-check cells that already held a value.

NameTypeReqDescription
actionstring–list, add or clear.
allow_blankboolean–Let the cell be left empty.
cell_rangestring–For add and clear: the range. Empty clears the whole sheet.
error_messagestring–What Excel says when the entry is refused.
file_pathstringyesAbsolute path to the Excel file.
formula1string–The allowed values. For kind='list', either 'Red,Green,Blue' or a range like $H$1:$H$9. For the others, the bound, such as 0.
formula2string–The second bound, for between and notBetween.
kindstring–whole, decimal, list, date, time, textLength or custom.
max_resultsinteger–For list: most to return.
offsetinteger–For list: validations to skip.
operatorstring–between, greaterThan, lessThan and so on.
sheetstringyesWorksheet name, matched without case.

Structured output declared, but exposes no named fields.

No examples provided.

xlide_open_in_app ~207

Opens a file in its Office application on the user's screen, for them to see or work in: after a change they should look at, or to put back a copy xlide_close_in_app closed. Already open, it is brought forward instead. read_only opens a copy that cannot be saved over the file, and new_instance a separate Excel or Word the user's other files are not in. bring_to_front=false reopens it behind whatever the user is doing. Macros follow the user's Trust Center settings, as for a file they open themselves. Windows only.

NameTypeReqDescription
bring_to_frontboolean–Bring its window forward. False leaves it behind.
file_pathstringyesAbsolute path to the Office file.
new_instanceboolean–Open it in a new instance of the application rather than the one running. PowerPoint has only one; Access always gets its own.
read_onlyboolean–Open a copy that cannot be saved over it.

Structured output declared, but exposes no named fields.

No examples provided.

xlide_page_setup ~103

Reads how a worksheet is set up to print: orientation, paper size, margins, the print area, the rows or columns repeated on every page, whether it is scaled to fit, and the header and footer. Call it when asked why a sheet prints the way it does, or before changing a layout somebody set up deliberately.

NameTypeReqDescription
file_pathstringyesAbsolute path to the Excel file.
sheetstringyesWorksheet name, matched without case.

Structured output declared, but exposes no named fields.

No examples provided.

xlide_project_info ~164

A summary of one Office file in a single call: its VBA modules with kinds and line counts, its UserForms, its Power Query queries, its worksheets with used ranges and named ranges, and whether the VBA project is password-protected or digitally signed. has_vba_project is false for a macro-enabled file saved before its first macro, which is normal: the first xlide_write_module gives it a project. Call this once per file before working on it. Each module carries a content_token for a guarded write. For .xlsb and .xls sheet details, call xlide_list_sheets on Windows with Excel. An unreadable form or query summary is reported as unknown rather than empty.

NameTypeReqDescription
file_pathstringyesAbsolute path to the Office file.

Structured output declared, but exposes no named fields.

No examples provided.

xlide_read_access_query ~133

Reads the SQL of one saved query in an Access database. Use it after xlide_access_catalog when a query's SQL was previewed. offset and max_chars read long SQL in character slices; next_offset points to the next slice. content_token describes the whole SQL, so compare it across pages if the database may have changed. Access files only.

NameTypeReqDescription
file_pathstringyesAbsolute path to the Access database.
max_charsinteger–Most SQL characters to return.
offsetinteger–Characters to skip.
query_namestringyesSaved query name, matched without case.

Structured output declared, but exposes no named fields.

No examples provided.

xlide_read_cells ~313

Reads a range of cells from a worksheet and returns a grid of values, formulas, both, or the text each cell shows under its number format. On .xlsx, .xlsm and .xlam, values are what Excel last calculated and stored; calculate=true works formulas out in memory with pyOfficeEditor's engine and names cells it could not work out. A failed formatted or rich-text read names the cell and refuses rather than returning an empty value. On .xlsb and .xls, Windows with Excel is required and only calculated values are available, not formulas or formatted text. A partial grid from Excel is refused. At most 20,000 cells per call.

NameTypeReqDescription
calculateboolean–For .xlsx, .xlsm and .xlam, work formulas out in memory before reading. The file is not changed. Binary .xlsb and .xls reads use Excel instead.
cell_rangestringyesA1-style range, such as A1:D50, or a single cell.
file_pathstringyesAbsolute path to the Excel file.
includestring–'values', 'formulas', 'both', 'text' for what each cell shows, such as 12.5% or 1/15/2024, or 'rich_text' for the font runs of text written in more than one font.
sheetstringyesWorksheet name, matched without case.
timeoutnumber–Seconds allowed if Excel has to answer.

Structured output declared, but exposes no named fields.

No examples provided.

xlide_read_form ~182

Reads one form's design: every control with its name, type, the container it sits in, and the properties the developer set. Properties left at their default are not stored and so are not listed. A property read failure appears as _read_error, not an empty property set; unreadable sections have sections_error. Use offset and next_offset to read large forms in pages. Use it to understand a form's layout, or to see which control an event procedure belongs to.

NameTypeReqDescription
file_pathstringyesAbsolute path to the Office file.
form_namestringyesForm name, matched without case.
include_propertiesboolean–Include each control's set properties. Off gives just the tree.
max_controlsinteger–Return at most this many controls.
offsetinteger–Skip this many controls before a page.

Structured output declared, but exposes no named fields.

No examples provided.

Install

How do I install the XLIDE MCP server?

XLIDE runs locally as a PyPI package, launched with uvx xlide-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

pypi · xlide-mcp

# add to Claude Code
claude mcp add williamsmithedward-xlide-excel-office-vba-mcp -- uvx xlide-mcp
Common questions

What is the XLIDE MCP server?

XLIDE is an MCP server listed in the public MCP registry as io.github.WilliamSmithEdward/xlide-excel-office-vba-mcp. Read, write, analyze, test and diff the VBA in Office files, and the document around it. This page covers its PyPI package (xlide-mcp).

Is the XLIDE MCP server safe to use?

XLIDE scores 96 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 4 November 2026. Its build provenance is signed and verified. 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 XLIDE MCP server expose?

XLIDE exposes 65 tools: xlide_list_projects, xlide_project_info, xlide_validate_project, xlide_create_project, xlide_doctor, and 60 more. Their descriptions and schemas cost roughly 14,849 tokens of context every time the server is loaded.

Is the XLIDE MCP server still maintained?

XLIDE 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 XLIDE MCP server under?

XLIDE declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.