# Sicher Log Chain Verifier

> Sicher Log Chain Verifier is a paid API for AI agents from sicher.halowerk.com, paid per call via x402, $0.005/call, status unknown (last checked 2026-10-11).

Verifies the cryptographic integrity of an ordered audit log chain by recomputing SHA-256 record hashes and validating hash linkage, with optional Merkle root verification.

## Facts

- Endpoint: POST https://sicher.halowerk.com/v1/log-chain-verify?utm_source=zero.xyz
- Price: $0.005/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-11
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/sicher-log-chain-verifier-5b7a5b90
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_184tblZOJlTt84A4KjOPS

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability sicher-log-chain-verifier-5b7a5b90 -d '<json body>'
```

Example prompt: Can you verify the integrity of this audit log chain — I have 120 records each with an id, sequence number, timestamp, payload, previous_hash, and claimed SHA-256 hash, and I also have a root_hash I want checked against a Merkle tree?

## When to prefer this

Use this endpoint when you need to cryptographically verify a tamper-evident audit log chain that stores SHA-256 hashes linking sequential records, especially when you also need Merkle root verification. Prefer this over generic hash-checking tools when your records follow the canonical {id, sequence, timestamp, previous_hash, payload} schema and you need chain-linkage validation in addition to individual hash recomputation.

## Known failure modes

- Hash mismatch on one or more records — payload, id, sequence, timestamp, or previous_hash differs from what was used to compute the stored hash
- Broken chain link — a record's previous_hash does not match the computed hash of the preceding record
- Sequence gap or non-monotonic sequence numbers when require_monotonic_sequence is true
- Merkle root mismatch — computed Merkle tree root differs from supplied root_hash
- First record has a non-null previous_hash
- Empty records array or records exceeding 500-item limit — validation error
- Malformed hash strings (wrong length or non-hex characters)

## How this service works

Recomputes every record hash from a canonical JSON representation of id, sequence, timestamp, previous_hash and payload, then checks that each record points to the hash of the record before it. If a root_hash is supplied, the same computed record hashes are folded into a deterministic binary Merkle tree with the last leaf duplicated on odd levels.

## Output

Returns a structured verification result indicating whether the full chain is valid, which specific records have hash mismatches or broken previous-hash links, whether sequence numbers are monotonically increasing, and if a root_hash was provided, whether the deterministic Merkle tree computed from the record hashes matches the claimed root.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "records": {
   "type": "array",
   "items": {
    "type": "object",
    "required": [
     "id",
     "sequence",
     "timestamp",
     "previous_hash",
     "payload",
     "hash"
    ],
    "properties": {
     "id": {
      "type": "string",
      "maxLength": 160,
      "minLength": 1,
      "description": "Stable event id."
     },
     "hash": {
      "type": "string",
      "maxLength": 71,
      "minLength": 64,
      "description": "Claimed SHA-256 hash of this record."
     },
     "payload": {
      "description": "Event payload to include in the record hash."
     },
     "sequence": {
      "type": "integer",
      "maximum": 1000000000,
      "minimum": 0,
      "description": "Monotonic event position."
     },
     "timestamp": {
      "type": "string",
      "maxLength": 80,
      "minLength": 1,
      "description": "Event time as supplied by the log producer."
     },
     "previous_hash": {
      "anyOf": [
       {
        "type": "string",
        "maxLength": 71,
        "minLength": 64
       },
       {
        "type": "null"
       }
      ],
      "description": "Hash of the previous record, or null for the first record."
     }
    },
    "additionalProperties": false
   },
   "maxItems": 500,
   "minItems": 1,
   "description": "Audit records in chain order."
  },
  "root_hash": {
   "type": "string",
   "maxLength": 71,
   "minLength": 64,
   "description": "Optional claimed Merkle root over the computed record hashes."
  },
  "require_monotonic_sequence": {
   "type": "boolean",
   "default": true,
   "description": "Require sequence numbers to increase by one."
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/sicher-log-chain-verifier-5b7a5b90/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from sicher.halowerk.com](https://www.zero.xyz/host/sicher.halowerk.com/llms.txt)
