Check spreadsheet for errors
check_spreadsheetUse this when the user wants to check a spreadsheet for errors or validate data before importing or sending it: "check spreadsheet for errors", "data validation excel", "find duplicates in excel", "check this csv for errors", "find invalid dates", "are there bad emails in this list". Attach a CSV, TSV or .xlsx file or paste the table. With no rules it detects column types from the values and checks impossible, ambiguous and mixed-format dates, invalid emails and email typos, phone digit counts, duplicate IDs and duplicate rows, blank cells in mostly filled columns, text in number columns, numbers stored as text, mixed decimal marks, leading/trailing spaces, IDs that lost leading zeros or became 1.2E+15, formula errors and row totals that do not add up. Optional rules: required_columns, unique_columns, allowed_values, ranges, total_rules. Returns each issue with row, column and cell value, counts per check, a column health score, an Excel copy with problem cells highlighted plus an Issues sheet, and an issues CSV. Does not edit or clean the data, does not verify that mailboxes or phone lines exist, and does not compare two files (use a comparison tool for that).
Tool call template
This tool declares no required parameters. Add optional parameters from the input schema as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {},
"name": "check_spreadsheet"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| file | No | The spreadsheet to check: CSV, TSV or Excel .xlsx, e.g. customers.xlsx. | |
| sheet | No | Sheet name or number in an Excel workbook, e.g. Orders or 2. Default: the first sheet with data. | |
| table | No | Only when no file is attached: the table pasted as CSV, tab-separated or a Markdown table with its header row, e.g. "id,date,email\n1,2026-02-30,ana@example.com". A list of rows also works. | |
| ranges | No | Numeric limits per column, e.g. {"Age":"0-120","Discount":{"min":0,"max":50}} or "Age: 0-120; Qty: >= 1". | |
| date_order | No | Day/month order for dates like 03/04/2026: auto (default), MDY (US, month first) or DMY (day first). | |
| header_row | No | Only if the headings were detected wrongly: the row number of the header, e.g. 3. | |
| skip_checks | No | Checks to turn off, e.g. ["extra_spaces"]. Options: impossible_date, mixed_date_order, ambiguous_date, mixed_date_format, implausible_date, not_a_date, invalid_email, email_typo, invalid_phone, duplicate_id, duplicate_row, blank_required, not_a_number, number_as_text, mixed_decimal, extra_spaces, lost_leading_zeros, scientific_notation, total_mismatch, formula_error, inconsistent_spelling, extra_cell, impossible_time, not_allowed, out_of_range. | |
| total_rules | No | Totals that must add up, e.g. "Total = Q1 + Q2 + Q3 + Q4" or "Amount = Qty * Price". Default: total columns are detected and checked automatically. | |
| allowed_values | No | Allowed values per column, e.g. {"Status":["Open","Closed"]} or "Status: Open, Closed; Region: North, South". | |
| unique_columns | No | Columns whose values must not repeat, e.g. "Order ID". Default: the ID column is detected from its header and values. | |
| required_columns | No | Columns that must never be blank, e.g. ["Email","Order ID"] or "Email, Order ID". Default: columns that are almost fully filled are treated as required (blanks reported as warnings). |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| copy | Yes | ||
| file | Yes | ||
| kind | Yes | ||
| notes | Yes | ||
| checks | Yes | ||
| columns | Yes | ||
| summary | Yes | ||
| downloads | Yes | ||
| rules_applied | Yes | ||
| issues_preview | Yes | ||
| totals_checked | Yes |