Skip to content
proof of reality

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 bundleHash as the immutable commitment.
  • Treat assets as 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_URL for 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.