{"id":"text-slice-codepoints","version":"1.0.0","description":"Slice a string by Unicode code-point indexes, not UTF-16 code units.","supported_operations":["text slice codepoints","slice text by unicode code points","code point substring"],"unsupported_operations":["UTF-16 code-unit slicing","grapheme cluster slicing","negative indexes","python wrap-around slicing","byte-offset slicing","read files"],"semantics":["text is a UTF-8 bounded string of at most 250 KiB.","start and length are JSON integers >= 0. Negative indexes and wrap-around are rejected.","Indexes count Unicode code points as in Array.from(text), not UTF-16 units and not grapheme clusters.","If start is greater than the code-point count, or start + length is greater than the code-point count, the tool throws slice out of range.","A zero-length slice at start equal to the code-point count is allowed and returns an empty string.","No Unicode normalization or case folding is applied."],"limits":{"max_text_bytes":256000},"pricing":{"status":"unpriced","charge_usd":null},"input_schema":{"type":"object","additionalProperties":false,"required":["text","start","length"],"properties":{"text":{"type":"string","maxLength":256000},"start":{"type":"integer","minimum":0},"length":{"type":"integer","minimum":0}}},"output_schema":{"type":"object","additionalProperties":false,"required":["text"],"properties":{"text":{"type":"string","maxLength":256000}}},"examples":[{"input":{"text":"hello","start":1,"length":3},"output":{"text":"ell"}}],"execute_url":"/v1/tools/text-slice-codepoints/versions/1.0.0/execute"}