Goal
A future MCP server should be a read-only adapter over the public Verify API. It should not need secrets or make decisions on the user's behalf.
Is this proof id valid?
Does this file hash match a finalized scan?
What verification level and checks does this capture receipt report?
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": "L1_SERVER_VERIFIED",
"disclosure": "hashOnly",
"bundleHash": "0x...",
"checks": [
{
"name": "Artifact hashes",
"ok": true,
"level": "L1_SERVER_VERIFIED",
"detail": "artifact commitments matched the submitted bundle"
}
]
}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. - Report optional KMS or satellite checks as unavailable unless the API returns them as passed.
- Do not turn a valid receipt into a claim about ownership, address, damage cause, or an unstaged scene.
- 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.