{"id":"csv-sort","version":"1.0.0","description":"Stably sort CSV rows by exact named string columns.","supported_operations":["csv sort","sort csv rows","sort csv ascending","sort csv descending","sort csv by columns"],"unsupported_operations":["numeric sort","locale sort","natural sort","fuzzy matching","mixed sort directions","read files","fetch urls"],"semantics":["key_columns names unique existing headers exactly; listed order determines multi-key precedence.","Values are compared lexicographically by JavaScript UTF-16 code units without locale or numeric coercion.","order is ascending by default and may be descending; equal keys retain input order in either direction.","Header-only input is supported; an empty document is rejected because it has no header.","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_key_columns":256,"max_output_bytes":256000},"pricing":{"status":"unpriced","charge_usd":null},"input_schema":{"type":"object","additionalProperties":false,"required":["csv","key_columns"],"properties":{"csv":{"type":"string","maxLength":256000},"key_columns":{"type":"array","minItems":1,"maxItems":256,"uniqueItems":true,"items":{"type":"string","minLength":1}},"order":{"type":"string","enum":["ascending","descending"],"default":"ascending"}}},"output_schema":{"type":"string"},"examples":[{"input":{"csv":"team,name\nb,Ada\na,Zoe\na,Ada\n","key_columns":["team","name"]},"output":"team,name\na,Ada\na,Zoe\nb,Ada\n"}],"execute_url":"/v1/tools/csv-sort/versions/1.0.0/execute"}