Skill instructions
build-checked-workbook1.7 KB
View saved version →
---
name: build-checked-workbook
description: "Build a new Excel workbook, such as a budget, expense or inventory tracker, attendance roster, project tracker, invoice, grade book or profit and loss, with its formulas checked on sample rows before download. Do not use for a single formula (lookup-and-match-formulas, version-aware-formula), checking a file the user already has (check-workbook-health) or converting a statement or invoice PDF (statement-to-excel, invoices-to-excel)."
---
Use this when the user wants a new spreadsheet file rather than a single formula. For a common layout (budget, inventory, attendance, project, rental cash flow, quote or invoice, grade book, profit and loss) use `build_workbook_from_template`; for anything else use `build_workbook` with the user's description.
The first call creates a private preview whose live formulas are checked on sample rows, with a line saying how many checks passed. The .xlsx file is delivered only when the user chooses download in the widget. Keep the chat reply short and let the user review the preview there. Do not claim the file was downloaded or opened.
If the user asks how many credits they have left, use `get_account_status`. These tools do not read or edit a file the user already has; for that, use the `check-workbook-health` skill.
If `build_workbook` is not in the current tool list, do not invent a call or claim the work was done. Say this connection does not offer it yet and link to `https://www.formulagenius.co/workbooks`. Stop on an authentication, credit or unsupported-file response and report it plainly. Do not route around it with another tool, mention prices or advertise an upgrade. Never create a share link unless the user asks for one.
Referenced files: 1 — file references are metadata, not package contents.
check-workbook-health1.52 KB
View saved version →
---
name: check-workbook-health
description: "Scan an attached Excel (.xlsx) or CSV file for error values, broken links, duplicate rows, numbers stored as text, inconsistent or hard-coded formulas, and report where each problem is. Do not use for building a new workbook (build-checked-workbook), fixing one formula (diagnose-formula) or converting PDF statements and invoices."
---
Use this when the user attaches an .xlsx or UTF-8 CSV file (up to 5 MiB) and asks what is wrong with it, wants it cleaned, or wants duplicates found. Pass the attached file reference to `check_workbook_health` unchanged; never invent a file ID or URL. Macro files (.xlsm), older .xls files and files over 5 MiB are not supported: say so and ask for an .xlsx or CSV copy.
Leave the options empty unless the user explicitly asks to clean the data or remove exact duplicate rows. The scan is static: formulas are not recalculated and the original file is never changed. Report the counts and locations the tool returns; do not add problems it did not find. Offer to fix a specific formula it flagged with the `diagnose-formula` skill.
If `check_workbook_health` is not in the current tool list, do not invent a call or claim the work was done. Say this connection does not offer it yet and link to `https://www.formulagenius.co/workbooks?mode=check`. Stop on an authentication, credit or unsupported-file response and report it plainly. Do not route around it with another tool, mention prices or advertise an upgrade. Never create a share link unless the user asks for one.
Referenced files: 1 — file references are metadata, not package contents.
diagnose-formula2.44 KB
View saved version →
---
name: diagnose-formula
description: "Explain or debug an Excel or Google Sheets formula that produces an error or unexpected result, using the user's expected behavior. Do not use for writing a new formula from scratch (lookup-and-match-formulas, version-aware-formula) or scanning a whole attached file (check-workbook-health)."
---
Use `explain_formula` for explanation-only requests. For repair requests, collect the formula, error (if any), and intended result; use `debug_formula` with `formula`, optional `error`, and `expected`. Include relevant application/version context and a small user-provided expected-versus-observed example in the expected-behavior text when useful.
The debug tool proposes a correction; it does not run those examples as tests. Do not invent a `samples` parameter or a `repair_formula` tool. Distinguish the proposed correction from verified behavior and explain the material change. If the user wants to compare two alternatives, use `compare_formulas` with `formulaA`, `formulaB`, `description`, and `criteria`.
When the user supplies explicit sample cells and expected answers, use `check_formula_samples` with `formula`, `platform` (`excel` or `sheets`), `intendedResult`, and `sampleCases` containing `{label?, cells, expected}`. Up to three cases are allowed, with at most 100 supplied cells within A1–Z100 each. Expected answers must be supplied or approved by the user: preserve numbers, text, booleans and null distinctly; do not invent missing cells or replace an expectation with the formula's actual output. Report each returned `sample_matched`, `sample_mismatch`, `unsupported`, or `not_checked` status and its actual/expected values or unsupported reason. This authenticated deterministic checker makes no generation-model call and neither saves work nor executes Excel/Sheets. Do not describe it as a full-workbook verification.
For requested broader generated-case verification without explicit expected samples, use `validate_formula` with the proposed formula and intended behavior. That existing tool has its own allowance and scope; the sample checker is not a fallback to evade its quota denial. Respect authentication/entitlement responses and report actual coverage, including unsupported functions. Do not turn a prediction into a passed test or claim the workbook was changed. Ask for minimal non-sensitive examples rather than requesting an entire confidential workbook. Create a share link only when explicitly requested.
Referenced files: 1 — file references are metadata, not package contents.
draft-spreadsheet-automation1.5 KB
View saved version →
---
name: draft-spreadsheet-automation
description: "Draft reviewable Excel VBA, Google Apps Script, Airtable automation, or SQL for a described workflow, with clear assumptions and execution effects. Do not use for a single spreadsheet formula, a standalone SQL query (write-sql-query) or a regular expression (write-regex)."
---
Identify the target environment and the desired transformation from the user's request. Use `generate_vba`, `generate_apps_script`, or `generate_airtable_script` for an explicit target; use `generate_script` only when its platform has been established. Inputs are `request` and optional `context`; the generic tool also takes `platform` (`excel_vba`, `google_apps_script`, or `airtable`). For database work use `generate_sql` with `request`, `database` (`mysql`, `postgresql`, `sqlserver`, or `sqlite`), and optional schema `context`.
Ask for missing table/sheet names or column meanings when needed. Prefer a small representative schema to credentials or a production data dump. Describe generated code's inputs, outputs, permissions, and any overwrite/delete/email effects. For mutating SQL, include a read-only preview of the affected scope when practical and explain transaction/backup assumptions for review.
These tools draft code; they do not execute it, schedule jobs, connect databases, or send emails. Do not imply any of those actions occurred or trigger external execution without the user's instruction. Respect tool authentication/quota failures and existing permissions. Keep sharing opt-in.
Referenced files: 1 — file references are metadata, not package contents.
invoices-to-excel1.8 KB
View saved version →
---
name: invoices-to-excel
description: "Turn PDF, PNG or JPEG invoices and receipts into an Excel line-item ledger, or a QuickBooks or Xero CSV, with totals tie-outs and duplicate warnings, after the user consents and reviews each row (Beta). Do not use for bank statements (statement-to-excel), spending summaries (summarize-statement-spending) or spreadsheet formulas."
---
Use `open_invoice_extractor` when the user wants invoices or receipts in a spreadsheet. If the user attached a file, pass the host-provided `file` reference as given (`download_url`, `file_id`, optional `mime_type` and `file_name`); never invent a file ID or URL. With no attachment, open the workspace so the user can choose a file. Up to 3 documents, 3 MiB in total, 3 pages and 60 items per document.
Opening the workspace does not send anything to AI. The user must consent in the widget and start extraction there. `extract_invoice_receipts` and `deliver_invoice_ledger` are app-only actions of that widget: never call them from chat or give consent for the user. Line items and totals stay in the private widget. Ask the user to review each row against the original before exporting, and do not describe extracted values as verified. After review the widget exports Excel, a plain CSV, or a QuickBooks or Xero mapping CSV; ask the user to check the columns in their accounting import before confirming it.
If `open_invoice_extractor` is not in the current tool list, do not invent a call or claim the work was done. Say this connection does not offer it yet and link to `https://www.formulagenius.co/data/bank-statement?kind=invoice`. Stop on an authentication, credit or unsupported-file response and report it plainly. Do not route around it with another tool, mention prices or advertise an upgrade. Never create a share link unless the user asks for one.
Referenced files: 1 — file references are metadata, not package contents.
lookup-and-match-formulas1.67 KB
View saved version →
---
name: lookup-and-match-formulas
description: "Write Excel or Google Sheets lookup formulas such as XLOOKUP, VLOOKUP, INDEX/MATCH, FILTER or SUMIFS that find, match or total values across ranges or sheets. Do not use for comparing two whole tables (reconcile-tables-with-formula), fixing a broken formula (diagnose-formula) or converting PDFs."
---
Use this for lookups and conditional totals: find a price by SKU, pull a name by ID from another sheet, return several matches, sum or count rows that meet conditions, or look up by two keys.
Ask only for details that change the formula: the application and version (XLOOKUP and FILTER need Excel 2021, Microsoft 365 or Google Sheets), the lookup and return ranges or sheet names, what to show when nothing matches, whether keys can repeat, and the argument separator if the user's locale uses semicolons.
Call `generate_formula` with `request`, `spreadsheet` (`excel`, `sheets` or `both`) and `context`. Put the version, ranges, sheet names, separator, duplicate handling and the not-found result in `context`. For older Excel, ask for INDEX/MATCH or SUMPRODUCT alternatives rather than XLOOKUP.
Return the formula, the cell to put it in, how to fill it down, and the assumptions. If the user wants it checked and gives sample cells with expected answers, use `check_formula_samples`; for broader checks use `validate_formula`, and report the coverage it returns exactly. A simulated check is not a run in the user's workbook.
Stop on an authentication, credit or unsupported-file response and report it plainly. Do not route around it with another tool, mention prices or advertise an upgrade. Never create a share link unless the user asks for one.
Referenced files: 1 — file references are metadata, not package contents.
reconcile-tables-with-formula1.96 KB
View saved version →
---
name: reconcile-tables-with-formula
description: "Design a spreadsheet formula to compare two user-described tables by a key and identify missing, duplicate, or mismatched values. This skill does not import files. Do not use for a single lookup (lookup-and-match-formulas) or a bank statement balance check (statement-to-excel)."
---
Clarify only the details needed to design the formula: application/version, source ranges, key columns, compared value, duplicate handling, and desired output. Distinguish missing keys, duplicate keys, and value differences; avoid assuming every key is unique. For amounts, ask about rounding or tolerance only if it affects the requested comparison.
Call `generate_formula` with the chosen spreadsheet and a request describing the discrepancy to find. Put the two schemas, key rules, output location, locale, and small non-sensitive examples in `context`. Show the proposed formula, placement, and assumptions. If requested, use `validate_formula` for supported simulation and report the actual coverage.
This formula workflow cannot read the web app's browser-local CSV/PDF files or reconcile imported transactions. If the user attaches two .xlsx or CSV files, say that this connection cannot read two files together yet, offer a comparison formula built from the columns they describe, and link to `https://www.formulagenius.co/reconcile` for a row-by-row file comparison. For statement-to-Excel requests, use the `statement-to-excel` skill when the connected server exposes `open_statement_converter`; that separate beta requires explicit AI consent and individual review in its widget. If the tool is unavailable, explain the current connection's limitation and link to `https://www.formulagenius.co/data/bank-statement` without claiming processing occurred. File cleanup remains a web workflow. Do not invent uploaded-file contents or report totals/matches from data you have not received. Stop on auth/quota failures; sharing requires an explicit user request.
Referenced files: 1 — file references are metadata, not package contents.
statement-to-excel3.94 KB
View saved version →
---
name: statement-to-excel
description: "Open a bank statement PDF review workspace and guide consent, individual transaction review, and Excel, QuickBooks/Xero CSV or OFX/QFX/QBO bank-file export through the Formula Genius statement beta. Do not use for invoices or receipts (invoices-to-excel), spending summaries (summarize-statement-spending) or spreadsheet formulas."
---
Use `open_statement_converter` when the connected Formula Genius server exposes it. This opens intake without downloading or analyzing a PDF. Pass an optional host-provided `file` reference unchanged (`download_url`, `file_id`, optional `mime_type` and `file_name`); never invent a file ID or signed URL. With no attachment, open the workspace so the user can choose a PDF. The connection cannot access files merely opened in a different web tab.
The user chooses local text extraction or AI vision in the widget. AI vision supports one unencrypted English, single-account checking statement: up to 3 MiB, 3 pages, 60 transactions, and currencies with two decimal places. Selecting a file does not start an AI call. Before AI extraction, the user must check consent to send the PDF via Formula Genius to OpenAI and choose **Extract with vision**. A validated AI attempt uses credits from the account's shared balance; if extraction fails, the credits are returned. `extract_bank_statement` is an app-only tool for this widget action: do not invoke it from chat, set consent on the user's behalf, or use another tool to bypass authentication or limits.
Keep the conversational response brief. Financial rows, balances, raw evidence, and warnings arrive only in private widget metadata. Do not request them in model-visible tool results, copy them into conversation or widget state, create a public share, or save them to account history. Formula Genius does not store the statement; OpenAI/ChatGPT processing and retention rules still apply.
Every transaction starts **Needs review**. Ask the user to compare each row with the original PDF, correct errors, confirm currency, and individually mark every row reviewed. Edits invalidate review. Source evidence and AI-inferred balances require comparison with the original; a matched reconciliation does not prove completeness or authenticity. Do not automatically approve rows, supply missing financial facts, or describe AI output as verified.
Only after review can the user export an actual XLSX workbook or a QuickBooks or Xero bank-import CSV; a CSV export uses no extra credits. In ChatGPT, export sends the reviewed file to the host to prepare a download without requesting optional file-library saving. A ready link is not evidence that a file was downloaded or reopened. If the host lacks the required file-delivery helpers or rejects the format, report that limitation and offer **Open web workspace**; this starts a separate review session and does not transfer the current working copy. Do not substitute one format for another while claiming the requested one. When the workspace shows the OFX / QFX / QBO section, the user enters the account and bank identifiers, sees the credits the file uses on its button, and confirms. The identifiers go only to Formula Genius to build the file; do not ask for them in chat. If that section is not shown, offer the web workspace at `https://www.formulagenius.co/data/bank-statement` for those formats, which is a separate review session.
If the user has no statement to hand, offer the fictional sample at `https://www.formulagenius.co/samples/sample-bank-statement.pdf`: they can download and attach it (AI extraction uses credits as usual), or try the sample in the web workspace, which uses none.
If `open_statement_converter` is missing from the current tool list, do not invent a call or claim native conversion is available. Explain that this connection has not exposed the beta, and offer `https://www.formulagenius.co/data/bank-statement`. Stop on authentication, quota, unsupported-file, or host-delivery e
Preview of the first 4,000 characters. Read full instructions →
Referenced files: 1 — file references are metadata, not package contents.
summarize-statement-spending1.96 KB
View saved version →
---
name: summarize-statement-spending
description: "Build a checked Excel spending summary (totals by category, by month and top payees) that the user fills with their own reviewed statement or card export. Do not use for converting a PDF statement (statement-to-excel), invoices (invoices-to-excel) or checking an existing file (check-workbook-health)."
---
Use this when the user wants to see where their money went: spending by category, by month, or their largest payees, from a bank or card statement.
Formula Genius does not keep statements, and the rows reviewed in the statement workspace never enter this chat. So build the summary as a workbook the user fills in themselves:
1. If the statement is still a PDF, use the `statement-to-excel` skill first so the user reviews and exports the rows (Excel or CSV).
2. Call `build_workbook` with a description like: "Spending summary. Sheet Transactions with columns Date, Description, Amount (negative for money out) and Category (a dropdown list of common categories plus Other). Sheet Summary with total spending by category using SUMIFS, total by month, and the top 10 payees by total spent." Add any categories or currency the user names. Never put the user's own transactions in the description.
3. The preview checks the formulas on sample rows. Tell the user to download it, paste their reviewed rows into Transactions, and pick a category for each row; the Summary sheet updates by itself.
If the user only wants one formula (for example, total spent on groceries in March), use the `lookup-and-match-formulas` skill instead.
If `build_workbook` is not in the current tool list, do not invent a call. Write the SUMIFS formulas for the user's layout and link to `https://www.formulagenius.co/workbooks`. Stop on an authentication or credit response and report it plainly, without prices or upgrade wording. Do not total or categorize the user's transactions yourself from memory of the statement workspace; you do not have those rows.
Referenced files: 1 — file references are metadata, not package contents.
version-aware-formula2.02 KB
View saved version →
---
name: version-aware-formula
description: "Create Excel or Google Sheets formulas for a specified application version, locale, and separator. Use when workbook compatibility or localized syntax matters. Do not use for debugging an existing formula (diagnose-formula) or for SQL, regular expressions or scripts."
---
Use the user's stated spreadsheet application, version, and locale. Ask only for missing details that change the formula; web account preferences are not available through this MCP server.
Call `generate_formula` with `request`, `spreadsheet` (`excel`, `sheets`, or `both`), and `context`. Put version, separator, column meanings, ranges, and relevant constraints in `context`. For older Excel versions explicitly request supported alternatives to newer functions; do not assert compatibility was executed or proven.
Return the proposed formula, where to place it, assumptions, and version caveats. Preserve locale syntax in the formula; do not blindly replace punctuation inside strings or array literals. If the user requested verification, use `validate_formula` with `formula`, `description`, and optional `expectedBehavior`. Report the returned VERIFIED/PARTIAL/SKIPPED scope and limitations exactly; simulation is not execution in the user's workbook.
If the user instead provides explicit sample cells and expected outputs, use `check_formula_samples` with the formula, `platform` (`excel` or `sheets`), `intendedResult`, optional `locale`/`separator`, and up to three `sampleCases` of `{label?, cells, expected}` (at most 100 cells in A1–Z100 each). The intended platform is descriptive, not proof of native or version compatibility. Preserve supplied expected values and report actual matches, mismatches and unsupported reasons. Do not generate unapproved expectations or use this tool as a workaround for a denied `validate_formula` call.
Stop on an authentication, quota, or unsupported-check response. Do not route around it with another tool or advertise an upgrade. Never create a share link unless the user requests sharing.
Referenced files: 1 — file references are metadata, not package contents.
write-regex1.15 KB
View saved version →
---
name: write-regex
description: "Build, explain or fix a regular expression for a matching or extraction task, for a named runtime such as JavaScript, Python or Google Sheets REGEXMATCH. Do not use for spreadsheet lookup formulas, SQL (write-sql-query) or whole automation scripts (draft-spreadsheet-automation)."
---
Use this when the user needs a regular expression: validate a format, extract part of a string, or find and replace text.
Ask which runtime it will run in if that changes the syntax (JavaScript, Python, .NET, PCRE, or Google Sheets RE2 for REGEXMATCH, REGEXEXTRACT and REGEXREPLACE). Collect a few strings that should match and a few that should not.
Call `generate_regex` with the task and put the runtime and examples in the request or context. Return the pattern, flags and a short explanation of each part. The tool does not run the pattern against the user's data, so present the examples as expectations, not test results.
Stop on an authentication, credit or unsupported-file response and report it plainly. Do not route around it with another tool, mention prices or advertise an upgrade. Never create a share link unless the user asks for one.
Referenced files: 1 — file references are metadata, not package contents.
write-sql-query1.22 KB
View saved version →
---
name: write-sql-query
description: "Write a SQL query for MySQL, PostgreSQL, SQL Server or SQLite from a plain-language request and a described schema. Do not use for spreadsheet formulas, regular expressions (write-regex) or VBA and Apps Script automation (draft-spreadsheet-automation)."
---
Use this when the user wants a SQL query: a report, a join, a group-by total, a window function, a date filter, or an insert, update or delete.
Confirm the database (`mysql`, `postgresql`, `sqlserver` or `sqlite`) and the tables and columns involved. Ask for a small schema description, never for credentials or a data dump. Call `generate_sql` with `request`, `database` and the schema in `context`.
Return the query and explain what it reads or changes. For a query that updates or deletes rows, show a read-only `SELECT` of the affected rows first and remind the user to run it in a transaction or after a backup. The tool drafts SQL; it does not connect to or run anything in a database, so never say a query was executed.
Stop on an authentication, credit or unsupported-file response and report it plainly. Do not route around it with another tool, mention prices or advertise an upgrade. Never create a share link unless the user asks for one.
Referenced files: 1 — file references are metadata, not package contents.