# Jaro matches explain

`jaro-matches-explain` · version 1.0.0 · Text · free, no key needed

Explain the deterministic Jaro match window, paired code points, and transposition flags.

**Use when you need to: explain Jaro character matches · show Jaro match window · inspect Jaro transpositions.**

## Decide before calling

Read the [versioned contract](/v1/tools/jaro-matches-explain/versions/1.0.0) and the supported scope below. Reuse `jaro-matches-explain@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 `jaro-matches-explain@1.0.0` for explain Jaro character matches. 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

- explain Jaro character matches
- show Jaro match window
- inspect Jaro transpositions
- trace Jaro string alignment
- list matched Jaro characters
- debug Jaro similarity matching

## Not supported

- compute an edit script
- grapheme-cluster segmentation
- locale-aware character matching

## Behavior

- Indices count Unicode code points, not UTF-16 code units; input is not normalized, trimmed, or case-folded.
- The window is max(floor(max length / 2) - 1, 0); scan left indices upward and take the lowest available right index.
- Pairs are returned in ascending left index; transposed compares each left matched character with the same ordinal character in the right matched sequence.
- transpositions is half the number of flagged pairs rounded down; empty inputs return an empty explanation.

## Input

- `left` (string, required): max length 256
- `right` (string, required): max length 256

## Output

- `matches` (integer, required): min 0; max 256
- `transpositions` (integer, required): min 0; max 128
- `match_window` (integer, required): min 0; max 127
- `matched_pairs` (array of object, required): max items 256

## Limits

- max string bytes: 1024
- max string code points: 256
- max output bytes: 65536

## Example

Request input:

```json
{
  "left": "ABCD",
  "right": "ACBD"
}
```

Response:

```json
{
  "result": {
    "matches": 4,
    "transpositions": 1,
    "match_window": 1,
    "matched_pairs": [
      {
        "left_index": 0,
        "right_index": 0,
        "left_character": "A",
        "right_character": "A",
        "transposed": false
      },
      {
        "left_index": 1,
        "right_index": 2,
        "left_character": "B",
        "right_character": "B",
        "transposed": true
      },
      {
        "left_index": 2,
        "right_index": 1,
        "left_character": "C",
        "right_character": "C",
        "transposed": true
      },
      {
        "left_index": 3,
        "right_index": 3,
        "left_character": "D",
        "right_character": "D",
        "transposed": false
      }
    ]
  }
}
```

## How to call it

### MCP

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

```json
{
  "id": "jaro-matches-explain",
  "version": "1.0.0",
  "input": {
    "left": "ABCD",
    "right": "ACBD"
  }
}
```

### HTTP (no key)

```sh
curl -X POST https://computefirst.net/v1/tools/jaro-matches-explain/versions/1.0.0/execute \
  -H "Content-Type: application/json" \
  -d '{"left":"ABCD","right":"ACBD"}'
```

The machine-readable contract is at [/v1/tools/jaro-matches-explain/versions/1.0.0](/v1/tools/jaro-matches-explain/versions/1.0.0).

### CLI

```sh
node cli.mjs run jaro-matches-explain 1.0.0 --input input.json --base-url https://computefirst.net
```

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

## Related tools

- [Jaro similarity compute](/tools/jaro-similarity-compute): Compute Jaro similarity with a deterministic match window and exact reduced rational audit fields.
- [Chrf components](/tools/chrf-components): Break down chrF/chrF++ into per-order n-gram counts, precision, recall and F, with configurable orders and averaging.
- [Jaro winkler compute](/tools/jaro-winkler-compute): Compute Jaro-Winkler similarity with explicit threshold, prefix cap, and exact rational audit fields.
- [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 passage check](/tools/citation-passage-check): Check that a cited start/end span of a supplied source version reads exactly as the quoted passage.
- [Citation record key](/tools/citation-record-key): Compute transparent deterministic match keys (DOI key and folded year|author|title key) for one CSL citation record.
