{"id":"csv-row-diff","version":"1.0.0","description":"Compare two CSV documents with identical headers by unique key tuples and report added, removed, and changed rows.","supported_operations":["csv row diff","diff csv rows by keys","compare keyed csv rows"],"unsupported_operations":["outer join","fuzzy matching","numeric comparison","case-insensitive diff","unkeyed row diff","read files","fetch urls"],"semantics":["left and right must share identical headers in the same order.","keys is a non-empty unique subset of those headers, at most 32 names.","Duplicate key tuples on either side are rejected because the diff is undefined.","Rows are classified by exact key-tuple membership and exact remaining-column string tuples.","added contains right-only keys in right row order; removed and changed follow first-seen left key order.","changed rows are the right-side (new) values with the original headers; no change column is added.","No trimming, case folding, type coercion, or numeric comparison is performed.","Empty documents without headers are rejected; header-only inputs emit the shared header and zero counts.","The first header name may not begin with U+FEFF because it is ambiguous with a CSV byte-order mark."],"limits":{"max_input_bytes":256000,"max_data_rows":5000,"max_columns":256,"max_header_name_bytes":256,"max_keys":32,"max_output_bytes":1048576},"pricing":{"status":"unpriced","charge_usd":null},"input_schema":{"type":"object","additionalProperties":false,"required":["left","right","keys"],"properties":{"left":{"type":"string","maxLength":256000},"right":{"type":"string","maxLength":256000},"keys":{"type":"array","minItems":1,"maxItems":32,"uniqueItems":true,"items":{"type":"string","minLength":1}}}},"output_schema":{"type":"object","additionalProperties":false,"required":["added","removed","changed","counts"],"properties":{"added":{"type":"string"},"removed":{"type":"string"},"changed":{"type":"string"},"counts":{"type":"object","additionalProperties":false,"required":["added","removed","changed","unchanged"],"properties":{"added":{"type":"integer"},"removed":{"type":"integer"},"changed":{"type":"integer"},"unchanged":{"type":"integer"}}}}},"examples":[{"input":{"left":"id,name,city\n1,Ada,London\n2,Lin,Paris\n3,Zoe,Berlin\n","right":"id,name,city\n1,Ada,London\n2,Lin,Rome\n4,Bob,Oslo\n","keys":["id"]},"output":{"added":"id,name,city\n4,Bob,Oslo\n","removed":"id,name,city\n3,Zoe,Berlin\n","changed":"id,name,city\n2,Lin,Rome\n","counts":{"added":1,"removed":1,"changed":1,"unchanged":1}}}],"execute_url":"/v1/tools/csv-row-diff/versions/1.0.0/execute"}