Goal
The first MCP server should be a thin adapter over the public Verify API. It should not need secrets.
Is this proof id valid?
Does this file hash match a finalized scan?
What verification level does this physical-world claim have?
Are there public assets the user intentionally exposed?
Proposed tools
verify_proof
{
"verifyId": "proof_demo_123"
}{
"ok": true,
"verifyId": "proof_demo_123",
"status": "finalized",
"verificationLevel": "L2_COSIGNED",
"disclosure": "hashOnly",
"bundleHash": "0x...",
"checks": [
{
"name": "KMS co-signature",
"ok": true,
"level": "L2_COSIGNED",
"detail": "cosignature matched canonical device signing hash"
}
]
}verify_bundle_hash
Verify by canonical bundle hash.
list_recent_proofs
Read the public explorer feed.
get_public_assets
Return public asset metadata and links for a proof if disclosure allows it. Return an empty list for private proofs instead of treating privacy as an error.
verify_artifact_hash
{
"verifyId": "proof_demo_123",
"sha256": "4d9671..."
}Agent behavior
- Say "not publicly disclosed" when location, files, capture time, or app details are absent.
- Do not imply absent private fields are missing evidence.
- Treat
bundleHashas the immutable commitment. - Treat
assetsas optional user-disclosed material. - For high-value decisions, recommend re-checking the API at decision time.
Implementation notes
- Base all tools on
https://verify.realityproof.app/openapi.json. - Keep the server unauthenticated for public verification.
- Add optional
VERIFY_API_BASE_URLfor staging. - Do not add write routes to the MCP server.
- Do not cache failed lookups by default.
For product integration details, see the integration guide.