ChronoVerify

Use ChronoVerify with n8n

Add image capture-time and provenance verification to an n8n workflow. Because ChronoVerify is a REST API, an HTTP Request node is the most reliable path; an MCP bridge is available if you prefer tool-style wiring.

When your agent should call ChronoVerify

Call it before you trust or act on any user-submitted or sourced image. Strong triggers:

Branch on the verdict and confidence it returns; treat anything below your bar as needing human review.

Call it from an HTTP Request node

ChronoVerify is a plain REST API and n8n is HTTP-native, so an HTTP Request node is the most reliable way to call it from a workflow.

Method:  POST
URL:     https://chronoverify.com/v1/verify
Headers: Authorization: Bearer cv_live_...     (omit for the free public path)
Body:    form-data, field "url" = {{ $json.image_url }}
         (or send a binary "file" field for an uploaded image)

As an MCP tool

n8n's built-in MCP Client Tool node connects over HTTP or SSE, not stdio, so it cannot launch npx directly. Bridge the stdio server to SSE first:

npx -y supergateway --stdio "npx -y chronoverify-mcp" --port 8000

then point the MCP Client Tool node at http://localhost:8000/sse. For most n8n workflows the HTTP Request node above is simpler.

What comes back

The response is one JSON object, the same in the browser and the API. The verdict is one of provenance_confirmed, consistent, inconclusive, metadata_anomaly, or manipulation_indicated.

{
  "schema_version": "v1",
  "verdict": "consistent",
  "confidence": 61,
  "headline": "Metadata is internally consistent. No manipulation signals fired.",
  "capture_time": {
    "value": "2026-05-18T14:32:10",
    "source": "exif",
    "consistent": null
  },
  "capture_device": {
    "make": "Canon",
    "model": "EOS R6",
    "software": "Firmware 1.8.1"
  },
  "c2pa": {
    "present": false,
    "validated": null,
    "validation_state": null,
    "signer": null
  },
  "integrity": {
    "sha256": "1313339a...",
    "sha512": "93a81e4a...",
    "format": "JPEG"
  }
}

Full field reference, including the C2PA validation state and signer, is on the method and API page and in /openapi.json.

What a verdict tells you

ChronoVerify returns the photo's capture time, the capture device, the validated provenance state, and the file hashes, as a typed verdict with a confidence. It is not a deepfake or AI-generation detector, and a verdict is investigative triage, not proof: a clean result means a file's saved data is internally consistent, not that the scene it shows is real. Never use a verdict as the sole basis for an automated decision about a person.

Common questions

Can the built-in MCP node launch chronoverify-mcp?

Not directly: it speaks HTTP and SSE, not stdio. Use an HTTP Request node, or bridge stdio to SSE with supergateway.

Do I need a key?

Omit the Authorization header for the free public path; add Bearer cv_live_... for metered use.

Is ChronoVerify C2PA conformant?

Yes. ChronoVerify is a C2PA Conformant Validator on the C2PA Conforming Products List, record 019f8a20-6452-7a43-b11b-59d0b0e4a84a, covering validation of JPEG, PNG, WebP and AVIF under C2PA specification 2.2. The list is public, so you can check the record yourself. It covers validation rather than generation: ChronoVerify reads and validates Content Credentials, it does not sign them.

See what it returns on one of your own photos.

Try the free verifier