{"id":"text-split-exact","version":"1.0.0","description":"Split text on an exact literal separator and reject results that exceed max_parts.","supported_operations":["text split exact","split text on exact separator","exact substring split"],"unsupported_operations":["regular expression split","truncating split limits","case-insensitive split","keep-separator mode","locale-aware tokenization","read files"],"semantics":["text is a UTF-8 bounded string of at most 250 KiB. Empty text always yields parts [\"\"] (one empty part).","separator is a non-empty literal string of at most 4096 UTF-8 bytes, never a regular expression.","max_parts is a required JSON integer 1..10000. If the split would produce more parts than max_parts, the tool throws split exceeds max_parts.","Matching is exact UTF-16 code-unit equality, left to right and non-overlapping, without case folding or Unicode normalization.","Consecutive separators produce empty parts. A leading or trailing separator produces a leading or trailing empty part.","Successful splits satisfy parts.join(separator) === text."],"limits":{"max_text_bytes":256000,"max_separator_bytes":4096,"max_parts":10000},"pricing":{"status":"unpriced","charge_usd":null},"input_schema":{"type":"object","additionalProperties":false,"required":["text","separator","max_parts"],"properties":{"text":{"type":"string","maxLength":256000},"separator":{"type":"string","minLength":1,"maxLength":4096},"max_parts":{"type":"integer","minimum":1,"maximum":10000}}},"output_schema":{"type":"object","additionalProperties":false,"required":["parts"],"properties":{"parts":{"type":"array","minItems":1,"maxItems":10000,"items":{"type":"string"}}}},"examples":[{"input":{"text":"a,b,c","separator":",","max_parts":10},"output":{"parts":["a","b","c"]}}],"execute_url":"/v1/tools/text-split-exact/versions/1.0.0/execute"}