Convert and clean tables: CSV, JSON, dedupe, stats. Free.
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Clean a table: trim whitespace in cells, drop fully empty rows, and optionally remove duplicate rows; returns the table in the same format with before/after row counts. Use when preparing messy pasted data. Do NOT use to change format; use convert_table.
The whole table as text, first row = header. CSV/TSV text (quoted cells allowed), or a JSON array of flat objects, e.g. "name,age\nAsha,30".
Trim leading/trailing whitespace in every cell. Default true.
Remove exact duplicate data rows, keeping the first. Default false.
Format of 'data' and of the returned table: csv, tsv or json. Default csv.
Remove rows whose cells are all empty. Default true.
Clean a table: trim whitespace in cells, drop fully empty rows, and optionally remove duplicate rows; returns the table in the same format with before/after row counts. Use when preparing messy pasted data. Do NOT use to change format; use convert_table.
| Argument | Type | Description |
|---|---|---|
| data* | string | The whole table as text, first row = header. CSV/TSV text (quoted cells allowed), or a JSON array of flat objects, e.g. "name,age\nAsha,30". |
| trim | boolean | Trim leading/trailing whitespace in every cell. Default true. |
| dedupe | boolean | Remove exact duplicate data rows, keeping the first. Default false. |
| format | string | Format of 'data' and of the returned table: csv, tsv or json. Default csv. |
| drop_empty_rows | boolean | Remove rows whose cells are all empty. Default true. |
{
"type": "object",
"required": [
"data"
],
"properties": {
"data": {
"type": "string",
"minLength": 1,
"description": "The whole table as text, first row = header. CSV/TSV text (quoted cells allowed), or a JSON array of flat objects, e.g. \"name,age\\nAsha,30\"."
},
"trim": {
"type": "boolean",
"description": "Trim leading/trailing whitespace in every cell. Default true."
},
"dedupe": {
"type": "boolean",
"description": "Remove exact duplicate data rows, keeping the first. Default false."
},
"format": {
"enum": [
"csv",
"tsv",
"json"
],
"type": "string",
"description": "Format of 'data' and of the returned table: csv, tsv or json. Default csv."
},
"drop_empty_rows": {
"type": "boolean",
"description": "Remove rows whose cells are all empty. Default true."
}
}
}Compute one statistic over a single column: sum, avg, min or max (numeric, rounded to 2 dp, blanks ignored), count of non-empty cells, or the sorted distinct values. Use for quick answers like 'total of the price column'. Do NOT use to reshape the table; use split_column or convert_table.
| Argument | Type | Description |
|---|---|---|
| op* | string | Statistic: sum, avg, min, max (column must be numeric), count (non-empty cells) or distinct (unique values). |
| data* | string | The whole table as text, first row = header. CSV/TSV text (quoted cells allowed), or a JSON array of flat objects, e.g. "name,age\nAsha,30". |
| column* | string | Column to use: the exact header name (case-sensitive), or a 0-based column index as digits, e.g. "price" or "2". |
| format | string | Format of 'data' and of the returned table: csv, tsv or json. Default csv. |
{
"type": "object",
"required": [
"data",
"column",
"op"
],
"properties": {
"op": {
"enum": [
"sum",
"avg",
"min",
"max",
"count",
"distinct"
],
"type": "string",
"description": "Statistic: sum, avg, min, max (column must be numeric), count (non-empty cells) or distinct (unique values)."
},
"data": {
"type": "string",
"minLength": 1,
"description": "The whole table as text, first row = header. CSV/TSV text (quoted cells allowed), or a JSON array of flat objects, e.g. \"name,age\\nAsha,30\"."
},
"column": {
"type": "string",
"minLength": 1,
"description": "Column to use: the exact header name (case-sensitive), or a 0-based column index as digits, e.g. \"price\" or \"2\"."
},
"format": {
"enum": [
"csv",
"tsv",
"json"
],
"type": "string",
"description": "Format of 'data' and of the returned table: csv, tsv or json. Default csv."
}
}
}Convert a table from CSV, TSV or JSON into CSV, TSV, JSON (array of objects) or a Markdown table. Cell values are kept as text. Use when the user wants the same table in another format. Do NOT use to trim, dedupe or drop rows; use clean_table.
| Argument | Type | Description |
|---|---|---|
| data* | string | The whole table as text, first row = header. CSV/TSV text (quoted cells allowed), or a JSON array of flat objects, e.g. "name,age\nAsha,30". |
| to_format* | string | Output format: csv, tsv, json (array of objects keyed by header) or markdown (pipe table). |
| from_format* | string | Format of the input 'data': csv, tsv or json. |
{
"type": "object",
"required": [
"data",
"from_format",
"to_format"
],
"properties": {
"data": {
"type": "string",
"minLength": 1,
"description": "The whole table as text, first row = header. CSV/TSV text (quoted cells allowed), or a JSON array of flat objects, e.g. \"name,age\\nAsha,30\"."
},
"to_format": {
"enum": [
"csv",
"tsv",
"json",
"markdown"
],
"type": "string",
"description": "Output format: csv, tsv, json (array of objects keyed by header) or markdown (pipe table)."
},
"from_format": {
"enum": [
"csv",
"tsv",
"json"
],
"type": "string",
"description": "Format of the input 'data': csv, tsv or json."
}
}
}Split one column into several columns on a delimiter (e.g. 'full name' on a space), inserted in place; short rows are padded with empty cells. Returns the table in the same format. Use when one column packs several values. Do NOT use to clean or change format; use clean_table or convert_table.
| Argument | Type | Description |
|---|---|---|
| data* | string | The whole table as text, first row = header. CSV/TSV text (quoted cells allowed), or a JSON array of flat objects, e.g. "name,age\nAsha,30". |
| column* | string | Column to use: the exact header name (case-sensitive), or a 0-based column index as digits, e.g. "price" or "2". |
| format | string | Format of 'data' and of the returned table: csv, tsv or json. Default csv. |
| delimiter* | string | Literal text to split on, e.g. " ", "-" or "|". |
| new_names | array | Header names for the new columns; count must equal the maximum number of parts. Default <column>_1, <column>_2, ... |
{
"type": "object",
"required": [
"data",
"column",
"delimiter"
],
"properties": {
"data": {
"type": "string",
"minLength": 1,
"description": "The whole table as text, first row = header. CSV/TSV text (quoted cells allowed), or a JSON array of flat objects, e.g. \"name,age\\nAsha,30\"."
},
"column": {
"type": "string",
"minLength": 1,
"description": "Column to use: the exact header name (case-sensitive), or a 0-based column index as digits, e.g. \"price\" or \"2\"."
},
"format": {
"enum": [
"csv",
"tsv",
"json"
],
"type": "string",
"description": "Format of 'data' and of the returned table: csv, tsv or json. Default csv."
},
"delimiter": {
"type": "string",
"minLength": 1,
"description": "Literal text to split on, e.g. \" \", \"-\" or \"|\"."
},
"new_names": {
"type": "array",
"items": {
"type": "string"
},
"description": "Header names for the new columns; count must equal the maximum number of parts. Default <column>_1, <column>_2, ..."
}
}
}