# Avro schema fingerprint

`avro-schema-fingerprint` · version 1.0.0 · Structured formats · free, no key needed

Compute the CRC-64-AVRO fingerprint of an Avro 1.12.0 parsing canonical form.

**Use when you need to: avro schema fingerprint · crc 64 avro fingerprint · hash avro schema canonically.**

## Decide before calling

Read the [versioned contract](/v1/tools/avro-schema-fingerprint/versions/1.0.0) and the supported scope below. Reuse `avro-schema-fingerprint@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 `avro-schema-fingerprint@1.0.0` for avro schema fingerprint. 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

- avro schema fingerprint
- crc 64 avro fingerprint
- hash avro schema canonically
- compute avro schema id
- stable avro fingerprint
- fingerprint avro canonical form

## Not supported

- cryptographic schema hashing
- registry lookup or registration
- fingerprint arbitrary bytes

## Behavior

- Implements Apache Avro Specification 1.12.0 Parsing Canonical Form and Schema Fingerprints.
- Canonical UTF-8 bytes are processed with the CRC-64-AVRO initial value and polynomial; hex is an unsigned 16-digit lowercase integer.
- This is a compact schema identifier, not a cryptographic integrity or security proof.
- Rejects forward or unresolved references and all malformed, cyclic, non-JSON, duplicate, or over-limit inputs.

## Input

- `schema` (any JSON value, required)

## Output

- `canonical_form` (string, required): max length 32768
- `fingerprint_hex` (string, required): pattern `^[0-9a-f]{16}$`
- `standard_version` (constant "Apache Avro Specification 1.12.0", required)

## Limits

- max input bytes: 16384
- max schema nodes: 512
- max depth: 32
- max fields: 128
- max output bytes: 32768

## Example

Request input:

```json
{
  "schema": "null"
}
```

Response:

```json
{
  "result": {
    "canonical_form": "\"null\"",
    "fingerprint_hex": "63dd24e7cc258f8a",
    "standard_version": "Apache Avro Specification 1.12.0"
  }
}
```

## How to call it

### MCP

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

```json
{
  "id": "avro-schema-fingerprint",
  "version": "1.0.0",
  "input": {
    "schema": "null"
  }
}
```

### HTTP (no key)

```sh
curl -X POST https://computefirst.net/v1/tools/avro-schema-fingerprint/versions/1.0.0/execute \
  -H "Content-Type: application/json" \
  -d '{"schema":"null"}'
```

The machine-readable contract is at [/v1/tools/avro-schema-fingerprint/versions/1.0.0](/v1/tools/avro-schema-fingerprint/versions/1.0.0).

### CLI

```sh
node cli.mjs run avro-schema-fingerprint 1.0.0 --input input.json --base-url https://computefirst.net
```

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

## Related tools

- [Avro parsing canonical form](/tools/avro-parsing-canonical-form): Produce the Avro 1.12.0 parsing canonical form for a bounded schema.
- [Avro schema equivalence check](/tools/avro-schema-equivalence-check): Decide whether two Avro schemas have identical Avro 1.12.0 parsing canonical forms.
- [Asn1 der encode tree](/tools/asn1-der-encode-tree): Encode a schema-free ASN.1 node list as one canonical DER value.
- [Asn1 der validate](/tools/asn1-der-validate): Check one ASN.1 DER value for canonical TLV structure and return a reason.
- [INI win format](/tools/ini-win-format): Format sections and keys into stable Windows initialization-file text.
- [XML exc c14n canonicalize](/tools/xml-exc-c14n-canonicalize): Exclusive XML Canonicalization 1.0 of a whole document, with an optional inclusive prefix list.
