Submit ZK Proof
proof.submitPURPOSE: Verifies Groth16/Poseidon BN254 coordinates, indexes their lifecycle in process memory, and attempts Nostr NIP-78 publication for a valid proof. USAGE: Use to submit proof coordinates for lifecycle lookup and optional Nostr publication. Do NOT use when only validating an encoded proof against telemetry data; use proof.verify instead. PARAMETERS: proof is an object containing pi_a as three decimal strings, pi_b as three pairs of decimal strings, and pi_c as three decimal strings; publicSignals is exactly five decimal strings ordered as blockHeight, thermodynamicHash, timestamp, valuationSat, and snapshotDigest; snapshotDigest accepts a decimal field digest or IPFS CID and, when supplied, must equal publicSignals[4]. BEHAVIOR: Validates and indexes Groth16/BN254 ZK proof attestations through a bounded process-memory lifecycle; records can be refreshed or evicted, so the index is neither durable nor append-only. Valid proofs may be published as NIP-78 attestations. This MCP API exposes no deletion tool. Rate limit: 60 req/min per IP shared across /mcp. RETURNS: Object containing proofHash, status as verified or invalid, submittedAt, and attestationStatus describing Nostr publication or why it was not attempted. ERRORS: -32602 (Invalid Parameters) for malformed coordinates, signals, fields, or a snapshotDigest mismatch; HTTP 429 (Rate Limit) when the shared limit is exceeded; cryptographic rejection is returned as status invalid and publication failure is reported by attestationStatus. No 402 payment required.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| proof | Yes | Groth16/Poseidon zk-SNARK proof coordinates over the BN254 curve. | |
| publicSignals | Yes | Public signals ordered as blockHeight, thermodynamicHash, timestamp, valuationSat, and snapshotDigest. | |
| snapshotDigest | No | Decimal field digest or IPFS CID that must equal publicSignals[4] when supplied. | 1 |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| status | Yes | Immediate Groth16 verification result for the submitted proof and public signals. | verified |
| proofHash | Yes | 0x-prefixed lowercase hexadecimal SHA-256 digest of the canonical proof. | 0x1a2b3c4d5e6f789001234567890abcdef1234567890abcdef1234567890abcd |
| submittedAt | Yes | ISO 8601 UTC date string format. | 2026-09-19T06:20:00.000Z |
| attestationStatus | Yes | Nostr NIP-78 publication result: broadcast_confirmed, broadcast_failed, not_configured, or not_broadcast_invalid_proof. | broadcast_confirmed |