# AI Evidence Integrity Checker (`filipmajchrzak/ai-evidence-integrity-checker`) Actor

Checks evidence files for missing items, unsafe paths, stale or future timestamps, invalid JSON, duplicates, and SHA-256 mismatches before an AI workflow relies on them.

- **URL**: https://apify.com/filipmajchrzak/ai-evidence-integrity-checker.md
- **Developed by:** [Filip Majchrzak](https://apify.com/filipmajchrzak) (community)
- **Categories:** AI
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-usage

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## AI Evidence Integrity Checker

**Created by Filip Majchrzak.**

AI Evidence Integrity Checker is a small companion Actor for teams that want a fast sanity check before evidence is used by an AI workflow, release gate, review process, or handoff.

It checks:

- required evidence files are present;
- evidence paths are unique and safe;
- timestamps are explicit UTC values and not in the future;
- evidence is not older than the configured age limit;
- `.json` evidence contains valid JSON;
- optional expected SHA-256 values match the exact UTF-8 content bytes;
- evidence content is not empty.

The result is deliberately simple: **PASS**, **FAIL**, or **INVALID\_INPUT**, with reason codes and computed SHA-256 digests.

### Visual walkthrough

#### How it works

![AI Evidence Integrity Checker — how it works](https://ai-evidence-integrity-checker-asset.vercel.app/how-it-works.svg)

#### PASS example

![AI Evidence Integrity Checker — PASS example](https://ai-evidence-integrity-checker-asset.vercel.app/pass-example.svg)

#### FAIL example

![AI Evidence Integrity Checker — FAIL example](https://ai-evidence-integrity-checker-asset.vercel.app/fail-example.svg)

### Why this Actor exists

This is the lightweight companion to [AI Claim Readiness Checkpoint](https://apify.com/filipmajchrzak/ai-claim-checkpoint). The Integrity Checker asks: **“Are these evidence files structurally usable and internally bound?”** The Claim Readiness Checkpoint asks the broader question: **“Does the evidence satisfy the release policy well enough for a decision?”**

Public project/demo context: [AI Claim Readiness demo](https://ai-claim-readiness-demo.vercel.app/).

### Example input

```json
{
  "evaluationTime": "2026-08-23T00:00:00Z",
  "maxAgeDays": 30,
  "requiredPaths": ["tests.json", "review.json"],
  "evidenceFiles": [
    {
      "path": "tests.json",
      "observedAt": "2026-08-22T20:00:00Z",
      "content": "{\"status\":\"PASS\",\"passed\":24,\"failed\":0}"
    },
    {
      "path": "review.json",
      "observedAt": "2026-08-22T20:30:00Z",
      "content": "{\"status\":\"PASS\",\"reviewer\":\"synthetic-demo\"}"
    }
  ]
}
```

### Output

The default Dataset and `OUTPUT` key-value record contain the same bounded summary. Each evidence item gets its exact UTF-8 SHA-256, byte count, timestamp, and JSON-validity flag where applicable. Failures include stable issue codes such as `MISSING_REQUIRED_EVIDENCE`, `FUTURE_EVIDENCE`, `STALE_EVIDENCE`, `INVALID_JSON`, `DUPLICATE_EVIDENCE_PATH`, and `SHA256_MISMATCH`.

### Safety and claim ceiling

Use synthetic or non-sensitive evidence unless your own data-handling rules and Apify settings permit otherwise. This Actor checks structural integrity and bindings only. It **does not prove truth, safety, security, compliance, authorship, or production readiness**, and it does not execute an external action.

### Product relationship

- Lightweight checker: **AI Evidence Integrity Checker**
- Full decision gate: [AI Claim Readiness Checkpoint](https://apify.com/filipmajchrzak/ai-claim-checkpoint)
- Creator: **Filip Majchrzak**

# Actor input Schema

## `evaluationTime` (type: `string`):

Explicit UTC time used for future/staleness checks.

## `maxAgeDays` (type: `integer`):

Evidence older than this at evaluationTime fails the integrity check.

## `requiredPaths` (type: `array`):

Every listed path must appear exactly once in evidenceFiles.

## `evidenceFiles` (type: `array`):

Up to 50 synthetic or non-sensitive evidence items. JSON files are parsed; expectedSha256 is optional.

## Actor input object example

```json
{
  "evaluationTime": "2026-08-23T00:00:00Z",
  "maxAgeDays": 30,
  "requiredPaths": [
    "tests.json",
    "review.json"
  ],
  "evidenceFiles": [
    {
      "path": "tests.json",
      "observedAt": "2026-08-22T20:00:00Z",
      "content": "{\"status\":\"PASS\",\"passed\":24,\"failed\":0}"
    },
    {
      "path": "review.json",
      "observedAt": "2026-08-22T20:30:00Z",
      "content": "{\"status\":\"PASS\",\"reviewer\":\"synthetic-demo\"}"
    }
  ]
}
```

# Actor output Schema

## `integrityResult` (type: `string`):

Structured result stored in the default Dataset.

## `outputJson` (type: `string`):

Machine-readable integrity result.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "evaluationTime": "2026-08-23T00:00:00Z",
    "maxAgeDays": 30,
    "requiredPaths": [
        "tests.json",
        "review.json"
    ],
    "evidenceFiles": [
        {
            "path": "tests.json",
            "observedAt": "2026-08-22T20:00:00Z",
            "content": "{\"status\":\"PASS\",\"passed\":24,\"failed\":0}"
        },
        {
            "path": "review.json",
            "observedAt": "2026-08-22T20:30:00Z",
            "content": "{\"status\":\"PASS\",\"reviewer\":\"synthetic-demo\"}"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("filipmajchrzak/ai-evidence-integrity-checker").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "evaluationTime": "2026-08-23T00:00:00Z",
    "maxAgeDays": 30,
    "requiredPaths": [
        "tests.json",
        "review.json",
    ],
    "evidenceFiles": [
        {
            "path": "tests.json",
            "observedAt": "2026-08-22T20:00:00Z",
            "content": "{\"status\":\"PASS\",\"passed\":24,\"failed\":0}",
        },
        {
            "path": "review.json",
            "observedAt": "2026-08-22T20:30:00Z",
            "content": "{\"status\":\"PASS\",\"reviewer\":\"synthetic-demo\"}",
        },
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("filipmajchrzak/ai-evidence-integrity-checker").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "evaluationTime": "2026-08-23T00:00:00Z",
  "maxAgeDays": 30,
  "requiredPaths": [
    "tests.json",
    "review.json"
  ],
  "evidenceFiles": [
    {
      "path": "tests.json",
      "observedAt": "2026-08-22T20:00:00Z",
      "content": "{\\"status\\":\\"PASS\\",\\"passed\\":24,\\"failed\\":0}"
    },
    {
      "path": "review.json",
      "observedAt": "2026-08-22T20:30:00Z",
      "content": "{\\"status\\":\\"PASS\\",\\"reviewer\\":\\"synthetic-demo\\"}"
    }
  ]
}' |
apify call filipmajchrzak/ai-evidence-integrity-checker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,filipmajchrzak/ai-evidence-integrity-checker"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/36eXNEdMbJAohCbyC/builds/SRsVwtlb005dpJfbQ/openapi.json
