# Text edit alignment

`text-edit-alignment` · version 1.0.0 · Text · free, no key needed

Return a bounded optimal edit alignment with a documented deterministic tie-break order.

**Use when you need to: produce optimal edit alignment · show minimum edit operations · align source tokens to target.**

## Decide before calling

Read the [versioned contract](/v1/tools/text-edit-alignment/versions/1.0.0) and the supported scope below. Reuse `text-edit-alignment@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-edit-alignment@1.0.0` for produce optimal edit alignment. 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

- produce optimal edit alignment
- show minimum edit operations
- align source tokens to target
- deterministic edit script
- backtrack string correction matrix
- explain text transformation path

## Not supported

- unbounded text comparison
- locale-sensitive collation
- semantic similarity scoring

## Behavior

- Costs default to one and may be caller supplied as nonnegative integers.
- Backtracking tie-break order is match, substitute, delete, insert among optimal predecessors.
- Operations are forward ordered; absent sides are represented by the empty string.
- token_mode defaults to code_point. grapheme is a simple fixed rule, not UAX #29: a token is a character plus any following combining marks, variation selectors and emoji skin-tone modifiers, anything joined by U+200D stays together, and regional indicators pair up. So a\u200db is one token, and CRLF, Hangul jamo, Indic conjuncts and emoji tag sequences stay split into several.
- Pure bounded dynamic programming; no clock, locale, network, or randomness.

## Input

- `source` (string, required): max length 2048
- `target` (string, required): max length 2048
- `token_mode` (one of "code_point", "grapheme", optional)
- `costs` (object, optional)

## Output

- `distance` (integer, required): min 0; max 512000
- `source_tokens` (integer, required): min 0; max 128
- `target_tokens` (integer, required): min 0; max 128
- `operations` (array of object, required): max items 256

## Limits

- max input bytes: 2048
- max tokens per text: 128
- max cost: 1000
- max cells: 16641

## Example

Request input:

```json
{
  "source": "a",
  "target": "b"
}
```

Response:

```json
{
  "result": {
    "distance": 1,
    "source_tokens": 1,
    "target_tokens": 1,
    "operations": [
      {
        "operation": "substitute",
        "source": "a",
        "target": "b"
      }
    ]
  }
}
```

## How to call it

### MCP

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

```json
{
  "id": "text-edit-alignment",
  "version": "1.0.0",
  "input": {
    "source": "a",
    "target": "b"
  }
}
```

### HTTP (no key)

```sh
curl -X POST https://computefirst.net/v1/tools/text-edit-alignment/versions/1.0.0/execute \
  -H "Content-Type: application/json" \
  -d '{"source":"a","target":"b"}'
```

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

### CLI

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

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

## Related tools

- [Text weighted edit distance](/tools/text-weighted-edit-distance): Compute bounded weighted insertion, deletion, and substitution distance over text tokens.
- [Text damerau distance](/tools/text-damerau-distance): Compute bounded optimal-string-alignment distance with adjacent transpositions.
- [Text levenshtein distance](/tools/text-levenshtein-distance): Compute bounded Levenshtein distance over code points or deterministic grapheme tokens.
- [Jaro matches explain](/tools/jaro-matches-explain): Explain the deterministic Jaro match window, paired code points, and transposition flags.
- [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.
- [Chrf components](/tools/chrf-components): Break down chrF/chrF++ into per-order n-gram counts, precision, recall and F, with configurable orders and averaging.
