# SemVer compare

`semver-compare` · version 1.0.0 · Versions & config · free, no key needed

Compare two strict Semantic Versions by precedence.

**Use when you need to: semver compare · compare semver · cmp semantic versions.**

## Supported

- semver compare
- compare semver
- cmp semantic versions

## Not supported

- loose versions
- descending option
- npm lookup

## Behavior

- Use installed semver 7.8.5 with loose: false. Same strict regex as baseline example-tests / semver-sort.
- result is semver.compare(a,b): -1, 0, or 1. Build metadata does not affect precedence.
- Reject v-prefix, spaces, leading zeros, latest, empty.

## Input

- `a` (string, required): min length 1; max length 256
- `b` (string, required): min length 1; max length 256

## Output

- `result` (one of -1, 0, 1, required)

## Limits

- max version length: 256

## Example

Request input:

```json
{
  "a": "1.0.0-alpha",
  "b": "1.0.0"
}
```

Response:

```json
{
  "result": {
    "result": -1
  }
}
```

## How to call it

### MCP

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

```json
{
  "id": "semver-compare",
  "version": "1.0.0",
  "input": {
    "a": "1.0.0-alpha",
    "b": "1.0.0"
  }
}
```

### HTTP (no key)

```sh
curl -X POST https://computefirst.net/v1/tools/semver-compare/versions/1.0.0/execute \
  -H "Content-Type: application/json" \
  -d '{"a":"1.0.0-alpha","b":"1.0.0"}'
```

The machine-readable contract is at [/v1/tools/semver-compare/versions/1.0.0](/v1/tools/semver-compare/versions/1.0.0).

### CLI

```sh
node cli.mjs run semver-compare 1.0.0 --input input.json --base-url https://computefirst.net
```

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

## Related tools

- [SemVer sort](/tools/semver-sort): Sort strict valid Semantic Versions in ascending precedence order.
- [SemVer filter](/tools/semver-filter): Filter strict versions that satisfy a range, preserving original order and strings.
- [SemVer satisfies](/tools/semver-satisfies): Test whether a strict version satisfies a semver range.
- [.env merge](/tools/env-merge): Overlay two dotenv-subset documents, replacing left values and appending right-only keys.
- [.env parse](/tools/env-parse): Parse a strict dotenv-subset document into ordered key/value entries.
- [.env stringify](/tools/env-stringify): Serialize unique env key/value entries to a canonical dotenv-subset document.
