{
  "markdown": "# chronoverify-mcp\n\n[![chronoverify-mcp MCP server](https://glama.ai/mcp/servers/beeswaxpat/chronoverify-mcp/badges/score.svg)](https://glama.ai/mcp/servers/beeswaxpat/chronoverify-mcp) [![smithery badge](https://smithery.ai/badge/beeswaxpat/chronoverify-mcp)](https://smithery.ai/servers/beeswaxpat/chronoverify-mcp)\n\nAn [MCP](https://modelcontextprotocol.io) server for [ChronoVerify](https://chronoverify.com). It gives any MCP-compatible AI agent (Claude Desktop, Cursor, Cline, VS Code, and others) the tools to check a photo's capture time and provenance: C2PA Content Credentials, EXIF and XMP metadata, and classical pixel forensics, fused into one verdict (`provenance_confirmed`, `consistent`, `inconclusive`, `metadata_anomaly`, or `manipulation_indicated`) with a 0 to 100 confidence.\n\nProvenance-first, not a deepfake or AI-generation detector. Results are investigative triage to support human review, not proof.\n\nChronoVerify is a C2PA Conformant Validator, listed on the C2PA Conforming Products List (record 019f8a20-6452-7a43-b11b-59d0b0e4a84a; validation of JPEG, PNG, WebP, and AVIF). Details: https://chronoverify.com/compliance#conformance\n\nSource and issues: [github.com/beeswaxpat/chronoverify-mcp](https://github.com/beeswaxpat/chronoverify-mcp)\n\nListed on Smithery: https://smithery.ai/servers/beeswaxpat/chronoverify-mcp\n\n> **Get an API key** (the first 100 verifications each month are included): https://chronoverify.com/pricing . Without a key, `verify_image` uses the free, rate-limited public path. A signed report requires a key.\n\n## Install\n\nAdd it to your MCP client config. For Claude Desktop (`claude_desktop_config.json`) or any MCP client:\n\n```json\n{\n  \"mcpServers\": {\n    \"chronoverify\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"chronoverify-mcp\"],\n      \"env\": { \"CHRONOVERIFY_API_KEY\": \"cv_live_...\" }\n    }\n  }\n}\n```\n\nOmit the `env` block to use the free public path (verification only; signed reports always need a key).\n\n## Tools\n\n### `verify_image`\n\nVerify a photo's capture time and provenance. Takes exactly one of:\n\n- `url`: a publicly reachable image URL (the server fetches it),\n- `file_path`: an absolute path to a local image, or\n- `image_base64`: base64-encoded image bytes.\n\nOptionally set `permalink: true` to also store the verdict (never the image) and get back an unlisted, shareable link to it in the `permalink` field, for citing the result to people or in reports. Keyless links expire after 90 days; links minted with an API key do not expire.\n\nIt returns a human-readable summary **and** a typed structured object so an agent can branch on the result without parsing prose:\n\n```json\n{\n  \"schema_version\": \"v1\",\n  \"verdict\": \"consistent\",\n  \"confidence\": 58,\n  \"headline\": \"Metadata is internally consistent. No manipulation signals fired.\",\n  \"summary\": \"...\",\n  \"capture_time\": { \"value\": \"2026-03-14T09:21:30\", \"source\": \"exif\", \"consistent\": null },\n  \"capture_device\": { \"make\": \"Canon\", \"model\": \"EOS R6\", \"software\": \"Firmware 1.8.1\" },\n  \"capture_location\": { \"present\": false, \"place\": null },\n  \"c2pa\": {\n    \"present\": false,\n    \"validated\": null,\n    \"validation_state\": null,\n    \"signature_valid\": null,\n    \"trust_list_match\": null,\n    \"signer\": null\n  },\n  \"integrity\": {\n    \"sha256\": \"1313339a...\",\n    \"sha512\": \"93a81e4a...\",\n    \"format\": \"JPEG\",\n    \"width\": 1200,\n    \"height\": 800,\n    \"c2pa_validator_enabled\": true\n  },\n  \"permalink\": null,\n  \"limits\": \"ChronoVerify returns investigative triage, not proof.\",\n  \"source\": \"ChronoVerify (https://chronoverify.com)\"\n}\n```\n\nThe verdict enum:\n\n- `provenance_confirmed`: a trusted C2PA Content Credential validated against the official trust list.\n- `consistent`: metadata holds up and no manipulation signal fired (consistent with an unedited capture, not proof).\n- `inconclusive`: not enough signal to decide.\n- `metadata_anomaly`: the metadata contradicts itself.\n- `manipulation_indicated`: pixel forensics flagged possible editing for human review.\n\n### `get_signed_report`\n\nGenerate a signed PDF audit report for one image: the chain-of-custody / compliance record (for example an EU AI Act Article 50 transparency record, an insurance or legal evidence file, or a newsroom audit trail). Takes one of `file_path` or `image_base64` (this endpoint does not fetch URLs) and an optional `out_path`. Writes the PDF and returns the path. **Requires** `CHRONOVERIFY_API_KEY`; metered as a premium report unit. The report carries an Ed25519 signature you can verify against the public key at `https://chronoverify.com/v1/key`.\n\n## Example prompts\n\n- \"Verify the provenance of /Users/me/Downloads/photo.jpg\"\n- \"When was the photo at this URL taken, and has it been edited? https://example.com/photo.jpg\"\n- \"Validate the C2PA Content Credentials on this image and tell me the signer.\"\n- \"Verify this photo and give me a shareable link to the verdict.\"\n- \"Generate a signed provenance report for ./evidence/claim-001.jpg and save it to ./reports/\"\n\n## License\n\nMIT\n",
  "bytes": 5003,
  "sha": "e4d59efbe32b585bd4c75d186ba12bdd0baf18f90d395af889967ea53fb8bee2",
  "repo_slug": "beeswaxpat/chronoverify-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_beeswaxpat_chronoverify_d092ffc1/readme"
}