{"id":"csv-dedupe","version":"1.0.0","description":"Remove duplicate CSV data rows while preserving the first occurrence.","supported_operations":["csv dedupe","csv deduplicate","remove duplicate csv rows","dedupe csv by named columns"],"unsupported_operations":["normalize values","fuzzy matching","merge rows","read files","fetch urls"],"semantics":["The first CSV record is the header row.","Duplicate and empty header names are rejected.","Without key_columns, equality uses every field in row order.","With key_columns, equality uses the exact string values of those named columns.","No trimming, case folding, type coercion, or other normalization is performed.","The first data row for each key is retained; output order is unchanged."],"limits":{"max_input_bytes":256000,"max_data_rows":5000,"max_columns":256,"max_header_name_bytes":256,"max_key_columns":100},"pricing":{"status":"unpriced","charge_usd":null},"input_schema":{"type":"object","additionalProperties":false,"required":["csv"],"properties":{"csv":{"type":"string","maxLength":256000},"key_columns":{"type":"array","minItems":1,"uniqueItems":true,"items":{"type":"string","minLength":1},"maxItems":100}}},"output_schema":{"type":"object","additionalProperties":false,"required":["csv","rows_in","rows_out","duplicates_removed"],"properties":{"csv":{"type":"string"},"rows_in":{"type":"integer"},"rows_out":{"type":"integer"},"duplicates_removed":{"type":"integer"}}},"examples":[{"input":{"csv":"id,name\n1,Ada\n1,Ada\n2,Lin\n"},"output":{"csv":"id,name\n1,Ada\n2,Lin\n","rows_in":3,"rows_out":2,"duplicates_removed":1}}],"execute_url":"/v1/tools/csv-dedupe/versions/1.0.0/execute"}