create-excel
Generate styled Excel (XLSX) or CSV spreadsheets for budgets, datasets, and reports. Supports formulas, auto-format, and zebra striping.
Instructions
Create a styled Excel XLSX (or CSV). USE for ANY tabular/numeric data — budgets, trackers, datasets, KPIs, price lists, schedules; even a table inside a 'report' belongs here, not in a doc. EXCEL SUPERPOWERS: a cell whose string starts with '=' becomes a LIVE formula (e.g. "=SUM(B2:B9)", "=B2C2") that Excel computes on open; columns whose header looks like money ($/price/cost/revenue) or percent (%) auto-format; the header row gets autofilter dropdowns; columns auto-fit. The first row of each sheet is the header (auto-styled bold/filled), body rows get zebra striping — you only supply values. Set outputFormat: "csv" for a plain CSV (first sheet only; no styling/formulas). EXAMPLE: sheets: [{ name: "Q2 Revenue", data: [["Month","Units","Price","Revenue"],["Apr",120,9.99,"=B2C2"],["Total","=SUM(B2:B2)","","=SUM(D2:D2)"]] }]. Sheet names MUST be specific (rejects 'Sheet1', 'Data', etc.). Use dryRun: true for preview.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Tags for registry search and discovery. | |
| style | No | Optional fine-grained overrides merged on top of stylePreset. | |
| title | No | Workbook title (used for filename, registry, and auto-categorization). | |
| dryRun | No | Return a preview without writing (default: false). | |
| sheets | Yes | Array of sheet definitions. At least one is required. A cell string starting with '=' becomes a live formula (e.g. "=SUM(B2:B9)"). | |
| docType | No | Tone and depth of the documentation. | |
| category | No | Document category for subfolder organization. | |
| uploadUrl | No | OPTIONAL. HTTPS URL of a receiver that will accept a JSON envelope `{data:base64, filename, mimeType, size}` POSTed with this Bearer auth. If you have NOT been given an uploadUrl in your context, OMIT this field and the tool just writes the file locally. Single-use semantics — do not retry on 4xx. Works with any compliant receiver (CogniRunner attachment-upload web trigger is the reference implementation, but the contract is generic). | |
| clientHint | No | How the response should be shaped. 'interactive' = polished one-line message for end-users (no chatty registry/lineage notes). 'agent' = verbose response with all metadata for AI consumption. 'auto' (default) = detect from input shape or MCP_CLIENT_TYPE env var, falling back to 'agent'. | |
| outputPath | No | Optional. Default: derived from title. | |
| description | No | Brief description stored in the registry. | |
| stylePreset | No | Style preset. 'claude-like' (modern blue-accented professional) is the default for general-purpose docs. 'professional' is the executive serif look. Auto-selected from category if omitted. | |
| outputFormat | No | 'xlsx' (default — full styling, formulas, autofilter) or 'csv' (plain text, first sheet only). | |
| uploadFilename | No | OPTIONAL. Filename to put in the upload envelope. Defaults to the local file's basename. Useful when the local file got auto-suffixed (e.g. duplicate prevention) and you want a clean name on the receiver side. | |
| uploadAuthHeader | No | OPTIONAL. Authorization header value for uploadUrl (e.g. 'Bearer abc123'). REQUIRED when uploadUrl is set; ignored otherwise. Never logged. | |
| enforceDocsFolder | No | If false, allow output outside docs/. Default: true. | |
| preventDuplicates | No | If false, allow same-name duplicates. Default: true. |