An open-source MCP server that verifies C2PA content credentials and returns LLM-ready provenance verdicts. Built by c2paviewer.com.
Four well-named tools with strong descriptions (150 - 250 chars each) and clear use cases. All tools have documented input schemas with type definitions and parameter descriptions. Tool names follow verb_noun pattern (verify_*, scan_*, c2pa_info). Schemas are present and mostly complete. However, output schemas are not explicitly documented in the source, responses are described narratively but lack formal JSON Schema definitions. Error handling is present but generic in places. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite all tools being read-only. Parameter descriptions are good but could be more prescriptive about constraints (e.g., maxFiles range, URL format validation rules).
Report the verification engine version, the media types this server can verify, and the active trust-list configuration. Use this to check capabilities before verifying.
Audit a folder of media files: report which ones carry C2PA Content Credentials, their verdict, signer, and whether each is AI-generated. Non-recursive. Use this to triage a directory of images/videos at once.
Verify the C2PA Content Credentials (provenance) of a local image, video, audio, or PDF file. Returns a plain-language verdict (trusted / valid_untrusted / invalid / no_credentials), the signer, whether the content is AI-generated, its edit history, provenance lineage, and any validation issues. Use this when you have a file path on disk. The file is read locally and never uploaded.
Download a remote image, video, audio, or PDF over https and verify its C2PA Content Credentials. Returns the same plain-language verdict, signer, AI-generation status, lineage, and issues as verify_c2pa_file. Use this for a web URL. Only public https URLs are allowed (private/internal hosts are refused).
Output schemas not formally documented. Responses described narratively ('returns a plain-language verdict, signer, AI-generation status...') but no JSON Schema definition visible for structured output. LLMs cannot reliably extract fields without explicit schema.
No tool annotations despite all tools being read-only. Missing readOnlyHint declarations would help clients understand safety profile and enable optimizations (caching, parallel execution).
Parameter constraints not fully specified. maxFiles has default (200) and max (1000) mentioned in description but not in schema constraints. URL format validation rules not explicit. Path format (absolute/relative/file://) documented but not as enum or pattern.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | B | 71 | 2025-06-18+ | v2 |
Error messages are generic in places. Code shows 'Cannot access the requested path' for both not-found and permission errors, preventing LLM from distinguishing root causes. FetchErrorCode enum exists but error help text is not always actionable.
includeRaw parameter lacks guidance on when to use it. Description says 'include the full raw C2PA manifest store' but does not explain token cost, use cases, or when LLM should request it. Agents may not know when to set this flag.