VerifyProof API
v0.2.0 · checks PP-SPEC-077 v0.8.x Units of Proof · Author: Craig Ellrod, Nebulonium, Inc., originator of the Proof Economy
Send a proof, get a verdict. Every check names the Proof Protocol section it enforces, so anyone can repeat it. People use this API; agents use the same checks over MCP. Both get the same answer.
Quick start
curl -X POST https://verifyproof.org/api/v1/check \
-H "Content-Type: application/json" \
-d @proof.json
Where proof.json is {"record": { ...Unit of Proof... }}. The response is HTTP 200 whatever the verdict; read verdict. No key needed. Machine-readable spec: /openapi.json (OpenAPI 3.1).
Verdicts
| valid | Every check passed, including signer trust, Merkle inclusion, registration and revocation. |
| invalid | At least one check failed. Not proof. |
| incomplete | Nothing failed, but a required check could not run. Not proof until the gaps listed in gaps are closed: send commitments or merkle_proof, trusted_keys, and check_registry: true. |
Try it
Paste a request body for /api/v1/check. The sample is a correctly signed demo record; it comes back incomplete because nothing pins its keys or confirms its registration.
Endpoints
POST /api/v1/check
Check a proof. Verify a Unit of Proof: schema, Record ID, issuer and witness signatures, signer trust, Merkle inclusion, commitment opening, consistency, registration and revocation.
| Field | Meaning |
|---|---|
record required | The Unit of Proof JSON record |
merkle_proof | Inclusion path from the commitment to merkle_root, leaf-up. Omit promoted levels. |
commitments | All c_i of the run in leaf order; R is recomputed (9.5). Use instead of merkle_proof. |
reveal | Public reveal for this canary (9.4.1); opens the commitment. |
content_reveal | Holder-only content reveal (9.4.2); checks d_i. |
trusted_keys | Pinned Ed25519 public keys per role (hex, base64, multibase z..., or PEM). |
check_registry | Fetch proofregister_uri and the revocation endpoint. |
curl -X POST https://verifyproof.org/api/v1/check \
-H "Content-Type: application/json" \
-d '{"record":"<Unit of Proof JSON>"}'POST /api/v1/check-uri
Fetch a proof from a Registry and check it. Fetch the record at `uri` (e.g. proofregister.com) and check it, including the registry lookup.
| Field | Meaning |
|---|---|
uri required | Registry URI of the record |
merkle_proof | Inclusion path from the commitment to merkle_root, leaf-up. Omit promoted levels. |
commitments | All c_i of the run in leaf order; R is recomputed (9.5). Use instead of merkle_proof. |
reveal | Public reveal for this canary (9.4.1); opens the commitment. |
content_reveal | Holder-only content reveal (9.4.2); checks d_i. |
trusted_keys | Pinned Ed25519 public keys per role (hex, base64, multibase z..., or PEM). |
check_registry | Fetch proofregister_uri and the revocation endpoint. |
curl -X POST https://verifyproof.org/api/v1/check-uri \
-H "Content-Type: application/json" \
-d '{"uri":"https://proofregister.com/record/PR-2026-00001"}'POST /api/v1/record-id
Compute a Record ID. SHA-256("DCP-1:record" || RFC 8785 canonical form), registration fields and uop_id removed (SPEC 21.1).
| Field | Meaning |
|---|---|
record required | The Unit of Proof JSON record |
curl -X POST https://verifyproof.org/api/v1/record-id \
-H "Content-Type: application/json" \
-d '{...}'POST /api/v1/merkle/verify
Verify Merkle inclusion. Check that commitment c_i is in root R (SPEC 9.2: leaf 0x43, node 0x45, odd node promoted). Give an inclusion path or the full commitment list.
| Field | Meaning |
|---|---|
commitment required | string |
merkle_root required | string |
merkle_proof | array |
commitments | array |
curl -X POST https://verifyproof.org/api/v1/merkle/verify \
-H "Content-Type: application/json" \
-d '{...}'GET /api/v1/schemas/uop
PP-SPEC-077 Unit of Proof JSON Schema.
curl https://verifyproof.org/api/v1/schemas/uopGET /healthz
Health.
curl https://verifyproof.org/healthzConnect over MCP
Agents connect to https://verifyproof.org/mcp (Streamable HTTP). Tools: check_proof, check_proof_by_uri, compute_record_id, verify_merkle_inclusion.
claude mcp add --transport http verifyproof https://verifyproof.org/mcp
Proof Protocol License 1.0. Licensor: Nebulonium, Inc. Security reports: craig@hackerverse.ai.