Skip to content

Tool reference ​

This page describes all 47 tools registered by formulon-mcp. The tables follow the server schemas and implementation. MCP clients still receive the live schemas at connection time; use those schemas when a field is added after this page was published.

Common conventions ​

  • sessionId identifies an open in-memory workbook. A sheet value accepts a zero-based index or an exact sheet name. When a sheet is omitted, most session tools use the first sheet; inspection and search tools that explicitly support all sheets say so below.
  • Numeric row and col values are zero-based. A1 addresses are one-based Excel addresses such as Summary!B2.
  • Cell values use {kind, ...} envelopes. Numbers, booleans, and text carry value; error cells carry errorCode and errorName; blank cells carry only kind.
  • A successful high-level call returns compact JSON text. A failure returns MCP isError: true with a text message. Status-bearing engine results retain status, including ok, numeric status, message, and context.
  • Paths are resolved from the MCP server process's working directory. Pass an explicit outputPath to every save. Output extensions must be .xlsx or .xlsb for workbooks, and .png or .svg for previews.
  • Bounded A1 ranges must be rectangular and on one sheet. Whole-row, whole-column, and 3-D references are not accepted by the MCP A1 parser, except that styling (formulon_style_range and the style operation of formulon_apply_layout) takes whole rows and columns.

Low-level calls and operation tools that dispatch workbook methods return {session, method, result}. The outer session is a public session record, and result retains the engine response. A mutation may return a Status directly inside result; an accessor usually has result.status and its own value fields.

Engine and one-shot tools ​

ToolPurposeInputs, defaults, and limitsSuccessful response
formulon_versionReport the loaded engine and server versions.No arguments.{version, serverVersion}.
formulon_eval_formulaEvaluate one Excel formula without writing a cell. With sessionId, references and defined names resolve in that session and row and col anchor relative references and ROW() or COLUMN().formula required, with or without =. sessionId optional. sheet, row, and col default to 0; a sheet name requires sessionId. Global mode uses the engine's default profile; use a profiled session for locale-dependent formulas.Global mode returns {formula, status, value}. Session mode returns {session, method, result}, with the engine {status, value} envelope under result.
formulon_inspect_workbookLoad a path, optionally recalculate, and return a summary without retaining a session.path required, .xlsx or .xlsb. recalc defaults false; includeCells defaults false; maxCellsPerSheet defaults 200, maximum 10,000. profile optional Excel profile id; when omitted, FORMULON_MCP_PROFILE, then win-365-en_US applies.{sheets, definedNames, tables}. Each sheet has index, name, cellCount, and optional sparse cells with cellsTruncated; the inventory includes formatted cells, explicit blanks, and spill phantoms.
formulon_update_workbookLoad or create a workbook, apply a batch of cell mutations, optionally recalculate, and save in one call.inputPath optional. outputPath required and must end in .xlsx or .xlsb. recalc defaults true. mutations has 1 to 10,000 entries with concrete zero-based sheet, row, col and type number, bool, text, blank, or formula. profile optional Excel profile id; when omitted, FORMULON_MCP_PROFILE, then win-365-en_US applies.{outputPath, bytes, format, losses?, summary}. bytes is a count; summary contains sheets, defined names, and tables.
formulon_workbook_apiDiscover the installed Formulon Workbook methods and their source declarations before a low-level call. This tool is session-free.operation is search by default or describe. Search accepts optional case-insensitive query, limit default 20 and maximum 100, and offset default 0. Describe requires exact method.Search returns {version, operation, query?, total, truncated, count, methods}. Describe adds declarations, declarationsTruncated, and optional truncation; declarations are bounded by count, depth, and character limits.
formulon_function_lookupList registered functions, read metadata, or convert function names and whole formulas between the stored English form and an Excel profile's spelling.sessionId required. operation is names, metadata, localize, canonicalize, localizeFormula, canonicalizeFormula, or localeFacts. name is required for metadata, localize, and canonicalize; formula for the two formula operations. profile is an Excel profile id and defaults to the session's profile.{session, method, result}. result contains the engine response: an accessor envelope such as {status,value}, {status,items}, or {status,comment}, a mutation Status, or method-specific fields.
formulon_workbook_callCall one installed Workbook method through the explicit server allowlist.sessionId, exact method, and positional JSON args array. args defaults to []; argument validation and limits belong to the discovered method. The allowlist reaches shapes, slicers, data tables, sparklines, workbook and range protection, table styles, calculation settings, PivotTable read-back, sheet selection, split panes, and the active sheet; the readers are classified read-only. Methods such as save, callback-taking APIs, and the opaque-byte snapshot and restore pairs are withheld.{session, method, result}. result contains the engine response: an accessor envelope such as {status,value}, {status,items}, or {status,comment}, a mutation Status, or method-specific fields.

Session and inspection tools ​

ToolPurposeInputs, defaults, and limitsSuccessful response
formulon_open_workbookCreate a session from a workbook path or a new profile-shaped workbook. Opening a file recalculates it once.path optional .xlsx or .xlsb; omit it for a new workbook whose first-sheet name follows profile. sessionId optional; omitted value is a UUID. profile optional Excel profile id; defaults to FORMULON_MCP_PROFILE, else win-365-en_US. Workflows using Sheet1 should pass win-365-en_US explicitly.{session} with id, paths, timestamps, dirty, and optional loadLosses; a new session has no sourcePath.
formulon_list_sessionsList currently open sessions.No arguments.{sessions} containing public session records, without native workbook handles.
formulon_close_workbookRelease one session and its native workbook handle.sessionId required.{session} with the final public session state.
formulon_inspect_sessionReturn workbook structure and optional sparse cell entries.sessionId required. includeCells defaults false; maxCellsPerSheet defaults 200, maximum 10,000. cellCount and cells use the written-coordinate inventory, including formatted cells, explicit blanks, and spill phantoms.{session, workbook} where workbook has sheets, definedNames, and tables.
formulon_recalc_sessionRecalculate the open workbook and update cached formula values.sessionId required.{session, status}. Recalculation marks the session dirty because cached values are model state.
formulon_find_cellsSearch text cell values and formula text.sessionId and non-empty query required. Optional sheet limits the search to one sheet; omit it to search all. target defaults both and accepts texts, formulas, or both. target: "texts" also searches numeric and boolean constants as strings, such as 42, TRUE, and FALSE; it does not search formula results. matchCase, wholeCell, and regex default false. maxResults defaults 1,000, maximum 10,000. wholeCell applies only when regex is false; anchor a full-cell regex with ^ and $.{session, query, options, results, count, truncated}. Each result has sheet coordinates, A1 ref, target kind, and matched text.
formulon_replace_cellsReplace matching text values and/or formula text.The search fields plus required replacement. Replacement changes only string cells and formula text; numeric and boolean constants are not replaced. maxResults defaults 1,000, maximum 10,000; maxReplacements defaults to maxResults, maximum 10,000; when specified, maxReplacements is the replacement cap and maxResults adds no second cap. recalc defaults true.{session, query, replacement, options, replacements, count, truncated}. Each replacement includes before, after, address, target kind, and engine status.
formulon_inspect_layoutRead stable per-sheet layout data without inference.sessionId required. Optional sheet selects one sheet; omit it for all. includeCells defaults true; includeStyles defaults false; maxCells defaults 10,000, maximum 50,000 per selected sheet.{session, sheets}. Each sheet includes usedRange, cellCount, merged ranges, view, columns, rows, protection, optional cells, and truncated.
formulon_detect_regionsDetect table-like regions, label-value pairs, and total-like regions with rule-based evidence.sessionId required. Optional sheet selects one sheet or all when omitted. maxCells defaults 10,000, maximum 50,000 per inspected sheet.{session, sheets, regions}. Regions carry type, sheet, range, confidence, evidence, and table or label-value details.
formulon_analyze_workbookClassify workbook shape from deterministic features such as tables, labels, and totals.sessionId required. includeEvidence defaults true; maxCellsPerSheet defaults 10,000, maximum 50,000.{session, classification, summary, evidence?, warnings}. Classification includes primaryType, confidence, and ranked candidates; summary includes likely title, tables, totals, and key fields.
formulon_session_metadataRead registered function names or external links.sessionId required. kind is functions or externalLinks.{session, kind, value}. value is a plain array of function names or external-link records.

Cells, structure, and persistence ​

ToolPurposeInputs, defaults, and limitsSuccessful response
formulon_get_cellRead one cell from a session or a path.Pass exactly one of sessionId or path. Pass a1, or pass row and col; sheet defaults 0. recalc defaults true. A path read accepts .xlsx or .xlsb, is not retained, and calls loadWorkbook without applying FORMULON_MCP_PROFILE; use a session for locale-dependent reads.An address object with sheet, row, col, and A1, plus status, value, formula, and optional decoded number-format fields. Date and time formats decode under the workbook's 1900 or 1904 date system.
formulon_get_rangeRead a sparse rectangular range from an open session.sessionId and range required. Optional fallback sheet; maxCells defaults 10,000, maximum 50,000; includeFormulas and recalc default false. Only populated cells in the requested rectangle are enumerated; there is no scan-area cap. truncated is true only when more cells exist beyond maxCells.{session, range, cellCount, truncated, cells}. Formula-free blanks, including styled blanks, are omitted; each cell has A1 coordinates, value, and optional formula and formatted-number fields. Non-General numeric formats can add engine display text and textStatus (overflow or invalidFormat).
formulon_save_sessionWrite an open session as XLSX or XLSB.sessionId required. outputPath must end in .xlsx or .xlsb. It is optional in the schema, but an omitted path falls back to the previous save destination and then to the source path, so it can overwrite the input; a new session without one fails. The save does not recalculate.{session, outputPath, bytes, format, losses?}. losses reports dropped, downgraded, deferred, or other non-zero writer counters; a lossy save leaves session.dirty true.
formulon_set_cellsApply unrelated cell mutations to a session.sessionId required. mutations has 1 to 10,000 entries. Each entry is number, bool, text, blank, or formula, addressed with A1 or optional sheet plus zero-based row and col; numbers must be finite. recalc defaults true.{session, applied, errorCells}. applied records index, sheet, A1, and status; errorCells reports written formulas that evaluate to Excel errors.
formulon_set_rangeWrite a row-major 2-D block from one A1 anchor.sessionId, start, and at least one values row required. Values are numbers, booleans, strings, {"f":"=..."}, {"blank":true}, or null to skip. Optional fallback sheet; recalc defaults true. Addresses must stay within the Excel grid, up to row 1,048,576 and column XFD.{session, range:{sheet,start,end?}, cellsWritten, errorCells}. A block containing only null writes zero cells.
formulon_sheet_operationAdd, remove, rename, or move a worksheet.sessionId and operation required. add uses name; remove and rename use index; rename also uses newName; move uses fromIndex and toIndex. Indices are non-negative.{session, status}.
formulon_set_defined_nameAdd, replace, or remove a workbook or sheet-local defined name.sessionId, name, and formula required. An empty formula removes the name. Omit sheet for workbook scope; provide a zero-based index or name for local scope. A leading = is accepted and stripped, and a name's formula reads back without it. Optional comment sets the note shown in Excel's Name Manager (an empty string clears it) and hidden hides the name from it; replacing a formula keeps both unless they are given. Neither can accompany an empty formula.{session, status, localSheetId}; workbook scope is -1.
formulon_edit_structureInsert or delete rows or columns while the engine rewrites affected references.sessionId, operation, start, and positive count required. Operation is insertRows, deleteRows, insertCols, or deleteCols. sheet defaults 0.{session, sheet, status}.
formulon_set_sheet_viewSet zoom, frozen or split panes, scroll origin, tab visibility, formula or outline-symbol display, or make the sheet the active one.sessionId required. sheet defaults 0. zoom is optional from 10 to 400; freezeRows and freezeCols are non-negative. Pass both frozen-pane counts when changing them: an omitted count becomes 0 instead of preserving its previous value. splitX and splitY are unfrozen split positions in points from the left and top edges (0 removes the split on that axis); a view is either frozen or split, so the two groups cannot be combined. topLeft is the first visible cell, such as A100, without a sheet name. showFormulas and showOutlineSymbols are booleans. active: true makes the sheet the one Excel opens on and it must be visible. Use either hidden for two-state visibility or visibility with visible, hidden, veryHidden. The engine refuses to hide the last visible sheet, and hiding the active sheet activates the next visible one. Visibility is applied before activation, so one call can unhide and activate a sheet.{session, sheet, statuses}. Each stated setting has its own engine status.
formulon_traceRead precedents, dependents, or dynamic-array spill information for one cell.sessionId, operation, row, and col required. sheet defaults 0. Operation is precedents, dependents, or spillInfo; depth defaults 1 and is capped at 32.Precedent or dependent mode returns {session, operation, cell, depth, count, cells} with A1 references. Spill mode returns {session, operation, cell, spill} with engaged state, anchor, rows, cols, and range.

Presentation and preview tools ​

ToolPurposeInputs, defaults, and limitsSuccessful response
formulon_dimension_operationList or change column widths and row heights, hidden state, or outline levels.sessionId, axis (column or row), and operation (list, size, resetSize, hidden, outline, collapsed) required. sheet defaults 0. Columns use inclusive first and last, with last defaulting to first; rows use row. Size units default to chars for columns and pt for rows, with px and mm converted through 96-DPI geometry. A column's chars value is Excel's stored width with padding included, as <col width> holds it; a default Calibri 11 column is 9.140625. collapsed takes a collapsed boolean and marks the outline group's summary row or column only; hide the detail with hidden, as Excel stores both. Column width is capped at 255 stored characters; row height at 409 points. resetSize removes the width override of columns first to last (or the height override of row), returning it to the sheet default while keeping hidden, outline, and style state. includeGeometry adds points, pixels, and millimetres to list results.List returns {session, axis, operation, sheet, value} with dimension arrays. Writes return {session, axis, operation, sheet, status} and, for size, stored units, stored size, and display geometry.
formulon_build_documentCreate a block-composed document with positions, formulas, formats, borders, merges, widths, and optional print setup resolved together.sessionId required. Optional sheet; start defaults B2; width defaults to the widest table. blocks has at least one title, text, fields, table, summary, or spacer block. sameRow reuses the current row group; it does not automatically move a block to the next free column. Table formulas use {key} and named ranges such as {table.Amount}. ISO date strings under a date format become serials in the workbook's date system. Optional theme, print preset (a4-portrait, a4-portrait-fit, a4-landscape, a4-landscape-fit, letter-portrait, letter-portrait-fit, letter-landscape, letter-landscape-fit), and repeatTableHeader defaulting true.{session, sheet, sheetName, start, range, width, blocks, names, pageCount?}. names maps generated names to A1 references for later refinement.
formulon_style_rangeApply font, fill, border, number-format, and alignment deltas to an A1 range, whole columns, or whole rows.sessionId, range, and style required. range is a bounded range, whole columns (C:C, B:D), or whole rows (1:1, 3:5), optionally sheet-qualified. Optional fallback sheet; baseOn defaults existing and accepts default. Colors are #RRGGBB or #AARRGGBB; alignment and border vocabulary follows the live schema. A bounded range materializes blank cells and is capped at 100,000 cells; whole columns and rows create no cells, apply to values written later, and have no cap. An outline border needs a bounded range.{session, range:{sheet,sheetName,start,end}, regions}. Each region is {range, baseXfIndex, xfIndex}: the band styled (the whole range, or an outline band) with one entry per distinct base style in it.
formulon_default_fontRead or change the workbook-wide default font used by otherwise unstyled cells.sessionId required. Omit font to read; otherwise pass deltas such as name, size, bold, italic, strike, underline, vertAlign, and color.Read returns {session, font}. A write returns {session, font} with the applied font.
formulon_print_settingsRead or partially update page setup, margins, print options, header and footer, print area, titles, and manual breaks.sessionId required; sheet defaults 0. Omit all settings to read. Page setup supports orientation, paper size, scale, fit-to-width, fit-to-height, and fit-to-page. Margins (left, right, top, bottom, header, footer) use inches; 0.5 is 12.7 mm. Print areas are comma-separated A1 ranges; row and column breaks accept up to 10,000 zero-based entries. Raw XML fields are available for unsupported attributes.{session, sheet, sheetName, applied?, settings}. Settings include normalized values, raw XML fragments, breaks, and computed pageCount. layout adds resolved paper, marginsPt, printable area, print scale, page order, manual flags for row/column breaks, and up to 50 page ranges with pagesTruncated.
formulon_apply_layoutApply an ordered, preflighted batch of dimensions, merges, styles, and print settings.sessionId and 1 to 200 operations required; sheet defaults 0. Operations are column, row, merge, style, or print. Column width is Excel's stored width with padding included, capped at 255 characters; row height is capped at 409 points; expanded row writes at 10,000, and styled cells at 100,000. A style operation also takes whole columns or rows, which count as no cells toward that cap; an outline border on them is refused. A failed preflight leaves the session unchanged.{session, sheet, sheetName, operations}. Each result records the resolved range or stored geometry, style regions, merge status, or applied print settings.
formulon_preview_rangeRender a bounded range as a PNG for visual review, with geometry and warning metadata.sessionId required. Optional sheet, range, and outputPath; omit range to choose a print area or used cells plus merges. scale defaults 1 and accepts 0.25 through 2; showGridLines defaults false; showPageBreaks defaults true; recalc defaults false. The range is capped at 10,000 cells, each image edge at 4,096 pixels, total pixels at 8,000,000, and SVG output at 4 MiB.MCP content contains an image item first and JSON metadata second. Metadata includes sheet, range, logical and scaled dimensions, fonts, page count, page breaks, bounded cell geometry, warnings, and truncation counts. pages adds print scale, paper dimensions/orientation, up to 50 page ranges and rangesTruncated; objects lists drawing ids, kinds, names, and rendered flags. When outputPath is supplied, the artifact is written to that path.

Rich workbook objects ​

ToolPurposeInputs, defaults, and limitsSuccessful response
formulon_image_operationList drawing objects, retrieve a picture, insert an image file, or move, reorder, or remove a picture or chart. Shapes are edited with formulon_shape_operation.sessionId and operation (list, get, insert, move, reorder, remove) required; sheet defaults to the first. get / move / reorder / remove require positive objectId. Insert requires path (PNG/JPEG/GIF/BMP, at most 20 MiB) and an unqualified cell anchor. offsetX, offsetY, width, height use {size,unit?} with finite nonnegative size and unit pt (default), px, or mm. One omitted dimension preserves aspect ratio; both omitted use 96 DPI. anchorKind is oneCell or twoCell and has no schema default: insert uses oneCell when it is omitted, move keeps the current kind. name and description are optional for insert and rejected for move. Move changes only the stated anchor, offsetX, offsetY, width, height, and anchorKind; a lone width or height keeps the current aspect ratio, and the object keeps its id, name, and alt text; a picture also keeps its crop and rotation. Reorder requires index, the target position in list order, which runs back to front (0 is the back). Get accepts optional outputPath.List: {session,sheet,sheetName,count,objects} with ids, kinds, anchors and pt/px sizes. Insert: {session,sheet,objectId,source,placed?}. Move: {session,sheet,objectId,placed}. Reorder: {session,sheet,objectId,index,order}, with the object ids in the new order. Remove: {session,sheet,objectId,removed:true}. Get: image content when the format is known, then JSON {session,sheet,objectId,format,pxWidth,pxHeight,byteLength,outputPath?}.
formulon_shape_operationList, insert, update, or remove drawing shapes, text boxes, and connectors (lines and arrows).sessionId and operation (list, insert, update, remove) required; sheet defaults to the first. update and remove require positive objectId from list. Insert requires an unqualified cell anchor and places a one-cell shape with width and height, or a two-cell shape spanning anchor to to. offsetX, offsetY, width, height, and lineWidth use {size,unit?} as in the image tool. geometry is a DrawingML preset such as rect (default), roundRect, ellipse, rightArrow, line, or straightConnector1; line and connector geometries hold no text. Also text (newlines separate paragraphs), textBox, name, fill and line (opaque #RRGGBB or none), rotation in clockwise degrees, and hidden. An update changes only what it states, keeps the anchor kind, and needs at least one field. Shapes have no stacking-order control.List: {session,sheet,sheetName,count,shapes} with id, kind, name, geometry, text, anchors, fill, and line. Insert and update: {session,sheet,objectId,placed?}. Remove: {session,sheet,objectId,removed:true}.
formulon_sparkline_operationList, add, update, or remove sparkline groups: in-cell line, column, or win/loss charts.sessionId and operation (list, add, update, remove) required; sheet defaults to the first. index from list is required for update and remove; group indexes shift when one is removed. sparklines is an array of {data, location}, each plotting one data range (such as B2:M2) into one location cell; it is required for add and replaces the group's sparklines on update. Group settings: type (line, column, winLoss; line on add), the booleans markers, high, low, first, last, negative, displayXAxis, displayHidden, colors (series, negative, axis, markers, first, last, high, low; #RRGGBB or #AARRGGBB), positive lineWeight in points, emptyCells (gap, zero, span), minAxis and maxAxis (individual, group, or a fixed number), and dateAxis (a date range; an empty string removes it). An update changes only the stated settings.List: {session,sheet,sheetName,count,groups}. Add and update: {session,sheet,group}. Remove: {session,sheet,removed} with the removed group.
formulon_data_table_operationGet, add, or remove a What-If data table ({=TABLE(row_input,col_input)}), or recompute every data table.sessionId and operation (get, add, remove, recalc) required; sheet defaults to the first. add requires range, the result range on the selected sheet (such as C3:E8), and at least one of rowInput (receives the values in the row above the range) and colInput (receives the values in the column left of it); a two-variable table sets both. get and remove require cell, any result cell of the table. Result cells refuse writes until the table is removed. add recalculates, so the results are readable at once.Get and add: {session,sheet,dataTable} with range, twoDimensional, and the input cells (null for get when no table covers cell). Remove: {session,sheet,removed}. Recalc: {session,status}.
formulon_merge_operationList, add, remove, remove by index, or clear merged ranges.sessionId required; sheet defaults 0. operation is list, add, remove, removeAt, or clear. Add and remove use a bounded zero-based {firstRow, firstCol, lastRow, lastCol} range; removeAt uses non-negative index.{session, method, result}. result contains the engine response: an accessor envelope such as {status,value}, {status,items}, or {status,comment}, a mutation Status, or method-specific fields.
formulon_comment_operationList, read, set, or remove cell comments, or show or hide one.sessionId required; sheet defaults 0. operation is list, get, set, remove, or visibility. row and col are required except for list; author and text are optional for set and are cleared for remove. visibility requires visible: true keeps the comment open on the sheet, false shows it on hover only.{session, method, result}. result contains the engine response: an accessor envelope such as {status,value}, {status,items}, or {status,comment}, a mutation Status, or method-specific fields.
formulon_hyperlink_operationList, add, remove, remove by index, or clear hyperlinks.sessionId required; sheet defaults 0. Operations are list, add, remove, removeAt, and clear. Add uses row, col, optional inclusive lastRow and lastCol, target, display, tooltip, and location. An empty target with location creates an in-workbook link.{session, method, result}. result contains the engine response: an accessor envelope such as {status,value}, {status,items}, or {status,comment}, a mutation Status, or method-specific fields.
formulon_validation_operationList, add, remove by index, or clear data-validation rules. Examples: Conditional formats and validation.sessionId required; sheet defaults 0. operation is list, add, removeAt, or clear; index is required for removeAt; validation is required for add. Validation ranges are inclusive zero-based rectangles. Types are 0 none, 1 whole, 2 decimal, 3 list, 4 date, 5 time, 6 text length, 7 custom. Omitted booleans default false; showDropDown defaults true.{session, method, result}. result contains the engine response: an accessor envelope such as {status,value}, {status,items}, or {status,comment}, a mutation Status, or method-specific fields.
formulon_conditional_format_operationList, add, remove by index, clear, or evaluate conditional-format rules. Styles through addDxf and examples: Conditional formats and validation.sessionId required; sheet defaults 0. Operation is list, add, removeAt, clear, or evaluate. Add uses the live conditional-format schema for expression, cell, color-scale, data-bar, icon-set, top/bottom, average, text, blank, error, time-period, duplicate, and unique rules. removeAt needs index; evaluate needs firstRow, firstCol, lastRow, and lastCol. todaySerial is optional and controls time-period evaluation.{session, method, result}. result contains the engine response: an accessor envelope such as {status,value}, {status,items}, or {status,comment}, a mutation Status, or method-specific fields.
formulon_table_operationList, create, update, or remove a native worksheet Table.sessionId and operation required. For list, omit sheet to return all tables, or pass it to filter one sheet. ref is an alias for range; pass only one. For create, range is required and an unqualified range uses the first sheet; qualified ranges supply their own sheet. Create also accepts name, optional columns, style or styleName, headerRow default true, and totalsRow default false; omitted columns are derived from a unique non-empty text header row. update and remove use global workbook index; an unqualified update range uses the existing table's sheet. A changed range must keep the original width. On update, name renames the table and rewrites the structured references that point to it. The booleans showFirstColumn, showLastColumn, showRowStripes, and showColumnStripes set the style toggles. totals writes totals-row cells and requires the totals row: each entry has a column (name or zero-based index) and one of function (none, sum, min, max, average, count, countNums, stdDev, var, custom), a text label, or a formula for custom. An update must state at least one change.List returns {session,count,tables}. Create and update return {session,table,status}; remove returns {session,removed,status}. Table indices are global across the workbook.
formulon_create_pivotBuild a native PivotCache and PivotTable from a bounded worksheet range.sessionId, sourceRange, target, name, and at least one values entry required. sourceSheet and targetSheet are fallbacks; targets may include sheet names. rows, columns, and pages default to empty arrays. Each value has field, aggregation default sum, optional display name, and optional Excel numberFormat. Supported aggregations are sum, count, average, max, min, product, countNumbers, stddev, stddevp, var, and varp. layout defaults compact; grand totals default on when stated; sourceLimit defaults 10,000 and is capped at 10,000, with at least 2 source cells. Every source header must be assigned exactly once, except repeated value aggregations.{session, source:{sheet,sheetName,ref,headers,rows}, target, cacheId, pivotIndex, layout, status}. Source formulas are recalculated before the cache is read.

Formula audit ​

ToolPurposeInputs, defaults, and limitsSuccessful response
formulon_audit_formulasReview repeated formula patterns, constants, blanks, outliers, and formula errors. It never repairs cells and does not prove a formula is correct.sessionId required. Optional sheet defaults to the first sheet; optional range can qualify the sheet. direction is vertical (default), horizontal, or both; window defaults 5 and accepts 2–50, minPeers defaults 3 and accepts 3–20, maxCells defaults 50,000 and is capped there, maxFindings defaults 100 and is capped at 500, and recalc defaults false. minPeers cannot exceed twice window; the stored-cell inventory is capped at 1,000,000 only when range is omitted; an explicit range uses sparse range reads.{complete, session, sheet, sheetName, range, direction, window, minPeers, scannedCells, formulaCells, unsupportedFormulaCells, findingCount, findings, findingsTruncated, warnings}. Findings include the cell, direction, issue type, neighboring evidence, and reason for review. A blank row or column is a hard boundary.

For an end-to-end session sequence, see Workflow. The Advanced API guide explains discovery, allowlist behavior, response envelopes, pinned time, and the WASM calculation path in more detail.