> ## Documentation Index
> Fetch the complete documentation index at: https://docs.peaq.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Trust levels

> Three tiers classifying how trustworthy a submitted event is.

Trust level classifies how trustworthy the data in a submitted event is. Higher trust levels indicate stronger guarantees about the event's authenticity.

## The three levels

<CardGroup cols={1}>
  <Card title="Self-reported" icon="user-pen">
    The machine or operator attests to the event. No external verification: the submitter's word is the source of truth.
  </Card>

  <Card title="On-chain verifiable" icon="link">
    The event is backed by an on-chain reference (transaction hash, receipt, or cross-chain proof) that anyone can independently verify.
  </Card>

  <Card title="Hardware-signed" icon="microchip">
    The event is signed by attested hardware (secure enclave, TPM, or equivalent) that binds the event to a specific physical device.
  </Card>
</CardGroup>

Choose the highest level you can honestly attest to.

## Trust weight in the MCR

Higher trust levels contribute more to the [MCR](/peaqos/concepts/machine-credit-rating) score. Hardware-signed events carry the strongest weight, on-chain verifiable events sit in the middle, and self-reported events the lowest.

Self-reported machines with a sustained track record (a year or more of event history) earn a small graduation bonus on their trust contribution, though they remain below the on-chain tier.

A machine flagged with a [negative event](/peaqos/api-reference/get-mcr) incurs a temporary penalty on its trust contribution for a fixed window from the flag timestamp, after which the penalty expires automatically.

## Admin overrides

peaq operates two on-chain admin functions (`AdminFlags` contract) that adjust how the MCR treats a machine. Both are owner-only and emit events.

| Override                             | Effect                                                                                                                                                                                  |
| :----------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `setTrustOverride(machineId, value)` | Replaces the trust contribution for this machine within a permitted range. Reverts with `InvalidTrustOverride(value)` if the value is out of range. Use `clearTrustOverride` to remove. |
| `flagMachine(machineId)`             | Sets the negative-event flag at `block.timestamp`. The penalty applies for a fixed window from this timestamp. Use `clearFlag` to lift early.                                           |

Submitting an event with `trustLevel > 2` reverts on `EventRegistry.submitEvent` with `InvalidTrustLevel()`.
