# JSON array merge verify

`json-array-merge-verify` · version 1.0.0 · JSON & JSONL · free, no key needed

Verify a candidate JSON array against the deterministic three-way merge result and return an exact witness.

**Use when you need to: verify a three way array merge · check merged JSON array · validate merge candidate.**

## Decide before calling

Read the [versioned contract](/v1/tools/json-array-merge-verify/versions/1.0.0) and the supported scope below. Reuse `json-array-merge-verify@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 `json-array-merge-verify@1.0.0` for verify a three way array merge. 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

- verify a three way array merge
- check merged JSON array
- validate merge candidate
- replay JSON array merge
- audit array merge result
- compare candidate with deterministic merge

## Not supported

- merging JSON objects by key
- reading JSON text or files

## Behavior

- Values are compared by RFC 8259 JSON structure with object member names sorted; array order and number spelling after parsing follow JavaScript JSON values.
- Alignment uses longest common subsequence; on equal alternatives it advances the first input, a deterministic deletion-before-insertion tie rule. Duplicate values are identified by matched occurrence, never by value alone.
- The implementation is synchronous, offline and deterministic and reports RFC 8259 + Myers 1986 and version 1.0.0.

## Input

- `base` (array of any JSON value, required): max items 128
- `left` (array of any JSON value, required): max items 128
- `right` (array of any JSON value, required): max items 128
- `candidate` (array of any JSON value, required): max items 256

## Output

- `reference` (constant "RFC 8259 + Myers 1986", required)
- `version` (constant "1.0.0", required)
- `valid` (boolean, required)
- `reason` (one of "candidate_mismatch", "merge_has_conflicts", null, required)
- `expected` (array of any JSON value, required): max items 256
- `conflict_count` (integer, required): min 0; max 256

## Limits

- max input bytes: 65536
- max items: 128
- max candidate items: 256
- max result items: 256
- max iterations: 49152
- max output bytes: 131072

## Example

Request input:

```json
{
  "base": [
    "a"
  ],
  "left": [
    "a",
    "b"
  ],
  "right": [
    "a"
  ],
  "candidate": [
    "a",
    "b"
  ]
}
```

Response:

```json
{
  "result": {
    "reference": "RFC 8259 + Myers 1986",
    "version": "1.0.0",
    "valid": true,
    "reason": null,
    "expected": [
      "a",
      "b"
    ],
    "conflict_count": 0
  }
}
```

## How to call it

### MCP

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

```json
{
  "id": "json-array-merge-verify",
  "version": "1.0.0",
  "input": {
    "base": [
      "a"
    ],
    "left": [
      "a",
      "b"
    ],
    "right": [
      "a"
    ],
    "candidate": [
      "a",
      "b"
    ]
  }
}
```

### HTTP (no key)

```sh
curl -X POST https://computefirst.net/v1/tools/json-array-merge-verify/versions/1.0.0/execute \
  -H "Content-Type: application/json" \
  -d '{"base":["a"],"left":["a","b"],"right":["a"],"candidate":["a","b"]}'
```

The machine-readable contract is at [/v1/tools/json-array-merge-verify/versions/1.0.0](/v1/tools/json-array-merge-verify/versions/1.0.0).

### CLI

```sh
node cli.mjs run json-array-merge-verify 1.0.0 --input input.json --base-url https://computefirst.net
```

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

## Related tools

- [JSON keyed array merge](/tools/json-keyed-array-merge): Three-way merge JSON arrays by a JSON Pointer key, returning edits, moves, inserts, deletes, and conflicts.
- [JSON keyed conflicts list](/tools/json-keyed-conflicts-list): List deterministic content and order conflicts from a three-way JSON keyed-array comparison without resolving them.
- [JSON keyed resolution apply](/tools/json-keyed-resolution-apply): Apply explicit choices to every keyed-array merge conflict and return the fully reconstructed JSON array.
- [JSON array three way merge](/tools/json-array-three-way-merge): Merge base, left and right JSON arrays, returning deterministic output and explicit conflicting edit regions.
- [JSON schema batch validate](/tools/json-schema-batch-validate): Validate many JSON records against one Draft 2020-12 subset schema; per-record validity, error pointers, counts.
- [JSON schema output validate](/tools/json-schema-output-validate): Validate JSON (e.g. LLM output) against a Draft 2020-12 schema subset; returns spec output units with JSON Pointers.
