# Text sentences split

`text-sentences-split` · version 1.0.0 · Text · free, no key needed

Split text into sentences using the default Unicode UAX #29 sentence boundary rules (Unicode 17.0.0).

**Use when you need to: split text into sentences · sentence segmentation per unicode uax 29 · break a paragraph into sentences.**

## Decide before calling

Read the [versioned contract](/v1/tools/text-sentences-split/versions/1.0.0) and the supported scope below. Reuse `text-sentences-split@1.0.0` when your input, required output and limits match it. Choose another approach for an unsupported operation.

## Explain the choice

"I can use `text-sentences-split@1.0.0` for split text into sentences. I will check its documented scope and the result against the task's requirements. The service is free; token and money savings for this task are unmeasured."

## Supported

- split text into sentences
- sentence segmentation per unicode uax 29
- break a paragraph into sentences
- unicode sentence boundaries for any script
- list the sentences in a document
- sentence tokenizer without a language model
- פיצול טקסט למשפטים

## Not supported

- abbreviation-aware or language-tailored splitting (for example keeping "Mr. Smith" together)
- CLDR sentence-break suppressions or ICU locale tailorings
- splitting by token counts of a model tokenizer
- grammar or meaning based sentence detection

## Behavior

- Default, untailored Unicode Standard Annex #29 revision 47 sentence boundary rules SB1-SB11 and SB998 over Unicode 17.0.0 Sentence_Break property values (data_version unicode-17.0.0); passes all 512 cases of SentenceBreakTest-17.0.0.txt.
- Sentences are exact consecutive substrings: trailing closing punctuation, spaces and one paragraph separator (CR LF counts as one) belong to the sentence they follow, so with trim false the sentences concatenate to the input.
- A full stop does not end a sentence before a digit (3.4), between letters and an uppercase letter (U.S.A.), or when the next letter after optional closing punctuation, spaces, digits or other non-letters is lowercase (etc.) ‘(the); "Mr. Jones" breaks because the default rules have no abbreviation list.
- trim (optional, default false): when true, code points whose Sentence_Break value is Sp, Sep, CR or LF are removed from both ends of each sentence and sentences that become empty are dropped; in the Unicode 17.0.0 data Sp includes U+00A0 NO-BREAK SPACE and U+3000 IDEOGRAPHIC SPACE, while Format characters such as U+2060 WORD JOINER are kept.
- No normalization is applied (NFC and NFD input may segment at different code point offsets but the same boundaries); empty text returns no sentences.
- Text is limited to 262144 UTF-8 bytes and 65536 sentences; more is limit_exceeded.

## Input

- `text` (string, required): max length 262144; Text to segment (at most 262144 UTF-8 bytes).
- `trim` (boolean, optional): Optional; default false. Trim Sp/Sep/CR/LF from both ends of each sentence and drop empty ones.

## Output

- `data_version` (constant "unicode-17.0.0", required)
- `count` (integer, required): min 0; max 65536
- `sentences` (array of string, required): max items 65536

## Limits

- max text bytes: 262144
- max sentences: 65536

## Example

Request input:

```json
{
  "text": "She said “See spot run.” John shook his head."
}
```

Response:

```json
{
  "result": {
    "data_version": "unicode-17.0.0",
    "count": 2,
    "sentences": [
      "She said “See spot run.” ",
      "John shook his head."
    ]
  }
}
```

## How to call it

### MCP

Connect `https://computefirst.net/mcp` ([setup](/docs#connect)), then call `execute` with:

```json
{
  "id": "text-sentences-split",
  "version": "1.0.0",
  "input": {
    "text": "She said “See spot run.” John shook his head."
  }
}
```

### HTTP (no key)

```sh
curl -X POST https://computefirst.net/v1/tools/text-sentences-split/versions/1.0.0/execute \
  -H "Content-Type: application/json" \
  -d '{"text":"She said “See spot run.” John shook his head."}'
```

The machine-readable contract is at [/v1/tools/text-sentences-split/versions/1.0.0](/v1/tools/text-sentences-split/versions/1.0.0).

### CLI

```sh
node cli.mjs run text-sentences-split 1.0.0 --input input.json --base-url https://computefirst.net
```

Get the client at [/clients/cli/](/clients/cli/).

## Related tools

- [Text paragraphs split](/tools/text-paragraphs-split): Split text into paragraphs separated by blank lines (CommonMark line rules) with code point spans and line numbers.
- [Text sentences chunk](/tools/text-sentences-chunk): Pack whole UAX #29 sentences into chunks of at most max_size code points, UTF-16 units or UTF-8 bytes.
- [Citation record dedupe](/tools/citation-record-dedupe): Group duplicate CSL citation records by deterministic DOI or folded year|author|title match keys, in input order.
- [Bleu corpus compute](/tools/bleu-corpus-compute): Compute canonical corpus BLEU from pre-tokenized segments: score, brevity penalty, lengths, clipped n-gram counts.
- [Chrf plus plus compute](/tools/chrf-plus-plus-compute): Compute exact chrF++ (character 6-grams plus word 1-2-grams, Popovic 2017) with the word tokens it scored.
- [Citation anchor check](/tools/citation-anchor-check): Check a quote anchor (exact text plus prefix/suffix) matches exactly one place in a supplied source version.
