# Jaro winkler compute

`jaro-winkler-compute` · version 1.0.0 · Text · free, no key needed

Compute Jaro-Winkler similarity with explicit threshold, prefix cap, and exact rational audit fields.

**Use when you need to: compute Jaro Winkler similarity · prefix adjusted name similarity · exact Jaro Winkler score.**

## Decide before calling

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

- compute Jaro Winkler similarity
- prefix adjusted name similarity
- exact Jaro Winkler score
- compare strings with Jaro Winkler
- audit Winkler threshold and prefix
- deterministic fuzzy name matching

## Not supported

- configurable prefix scale
- phonetic name matching
- locale-aware normalization

## Behavior

- Jaro uses exact Unicode code-point matches, the standard deterministic window, and ascending lowest-index pairing.
- The common prefix is capped at 4 code points and its scaling factor is exactly 1/10.
- Apply J + prefix/10 × (1-J) only when the exact Jaro fraction is strictly greater than 7/10; equality is not boosted.
- The reduced final fraction is authoritative; score and jaro_score are deterministic 12-place half-up decimal renderings.

## Input

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

## Output

- `score` (string, required): pattern `^(0|1|0\.[0-9]{12})$`
- `numerator` (string, required): pattern `^[0-9]+$`
- `denominator` (string, required): pattern `^[1-9][0-9]*$`
- `matches` (integer, required): min 0; max 256
- `transpositions` (integer, required): min 0; max 128
- `match_window` (integer, required): min 0; max 127
- `jaro_score` (string, required): pattern `^(0|1|0\.[0-9]{12})$`
- `jaro_numerator` (string, required): pattern `^[0-9]+$`
- `jaro_denominator` (string, required): pattern `^[1-9][0-9]*$`
- `prefix_length` (integer, required): min 0; max 4
- `prefix_cap` (constant 4, required)
- `threshold_numerator` (constant 7, required)
- `threshold_denominator` (constant 10, required)

## Limits

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

## Example

Request input:

```json
{
  "left": "DIXON",
  "right": "DICKSONX"
}
```

Response:

```json
{
  "result": {
    "score": "0.813333333333",
    "numerator": "61",
    "denominator": "75",
    "matches": 4,
    "transpositions": 0,
    "match_window": 3,
    "jaro_score": "0.766666666667",
    "jaro_numerator": "23",
    "jaro_denominator": "30",
    "prefix_length": 2,
    "prefix_cap": 4,
    "threshold_numerator": 7,
    "threshold_denominator": 10
  }
}
```

## How to call it

### MCP

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

```json
{
  "id": "jaro-winkler-compute",
  "version": "1.0.0",
  "input": {
    "left": "DIXON",
    "right": "DICKSONX"
  }
}
```

### HTTP (no key)

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

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

### CLI

```sh
node cli.mjs run jaro-winkler-compute 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.
- [Text shingle similarity](/tools/text-shingle-similarity): Exact shingle-set resemblance (Jaccard) and containment of two texts, with counts and shared shingles.
- [Chrf compute](/tools/chrf-compute): Compute exact chrF (character 6-gram F-beta, Popovic 2015) for hypothesis/reference segments, corpus and per segment.
- [Bleu corpus compute](/tools/bleu-corpus-compute): Compute canonical corpus BLEU from pre-tokenized segments: score, brevity penalty, lengths, clipped n-gram counts.
- [Bleu sentence compute](/tools/bleu-sentence-compute): Compute sentence-level BLEU for one tokenized hypothesis with a chosen smoothing method (none or Chen-Cherry 1-3).
- [Bleu smoothing compute](/tools/bleu-smoothing-compute): Apply none or Chen-Cherry smoothing 1-3 to BLEU match/total counts; return smoothed counts, BP and BLEU.
