Skip to content

Csv Dedupe MCP tool

MCP findutils:csv_dedupe

Remove duplicate rows from a CSV or TSV table. With no keys, a row is a duplicate when every cell matches an earlier row; with keys (column names), when those columns match, so rows with the same email but a different name count as duplicates. keep "first" (default) keeps the earliest occurrence and "last" keeps the latest, and either way the kept rows stay in their original file order. trim (default true) ignores surrounding spaces when matching and ignore_case (default false) ignores letter case; cells are written out unchanged. A row whose key cells are all blank is kept as unique unless blank_keys is "collapse". Returns cleaned_csv (header + kept rows) and duplicates_csv (header + removed rows) in the input delimiter, counts, and a preview of removed rows. Quoted fields, embedded commas and line breaks are preserved; a quote that never closes stops with UNCLOSED_QUOTE and the line it opens on. Nothing is uploaded when used on the browser page.

Arguments

application/json
  • csv

    string required

    CSV or TSV text. Up to about 10 MB.

  • keys

    array optional

    Column names that decide a duplicate. Omit for whole-row matching.

  • keep

    string optional

    Which occurrence of a duplicate to keep. Default first. One of first · last. Default "first".

  • trim

    boolean optional

    Ignore leading and trailing spaces when matching. Default true. Default true.

  • ignore_case

    boolean optional

    Match without regard to letter case. Default false. Default false.

  • blank_keys

    string optional

    distinct (default): rows whose key cells are all blank are never duplicates. collapse: they are deduplicated like any other key. One of distinct · collapse. Default "distinct".

  • delimiter

    string optional

    Field separator. Default auto: detected from the first line. One of auto · , · · ; · |. Default "auto".

  • header

    boolean optional

    The first row is a header. Default true. When false, columns are named column_1..N and the outputs carry no header. Default true.

Example arguments

Verified
{
  "csv": "email,name\[email protected],Ada\[email protected],Ada L.\[email protected],Grace",
  "keys": [
    "email"
  ]
}