Skip to main content
Glama

Verify Groth16 or OpenTimestamps Proof

proof.verify

Execute cryptographic verification for supplied Groth16 telemetry or drift zk-SNARK proofs, or OpenTimestamps receipts. Returns proof validity; verification can update a bounded in-memory lifecycle index, and drift checks require a Bitcoin block provider. Use this tool to verify supplied proofs; use proof.submit to register new Groth16 proofs and proof.get_by_hash to retrieve retained proofs or signed receipts by a known identifier.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
validYesTrue only for a digest-matching, Bitcoin-attested OTS record with a valid chain-header lookup. Example: true.
statusNoWhether the OTS record is Bitcoin-attested; calendar-only receipts are unverified. Constraints: allowed values: bitcoin_block_attested, unverified. Example: "bitcoin_block_attested".
verifiedAtNoISO 8601 UTC time when this verification finished. Constraints: format: date-time. Example: "2026-09-19T01:41:36.458Z".
blockHeightNoBitcoin attestation height, or null if not verified. Example: 920000.
bitcoinHeaderHashNoCanonical Bitcoin block header hash at the attested height, or null if not verified. Example: "abababababababababababababababababababababababababababababababab".
computationTimeMsNoServer-side proof verification duration in milliseconds. Constraints: minimum: 0. Example: 3.284.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed11 schema fields changed
    • changedInput schema / description
      Previous value: -"Input arguments containing an encoded Groth16 proof, typed public inputs, a verification-key identifier, and telemetry data."New value: +"Select groth16 (default) or ots, supplying only fields for the selected verification path."
    • changedInput schema / examples
      Previous value: -[
      -  {
      -    "data": [
      -      {
      -        "block": {
      -          "height": 920000
      -        },
      -        "observed_at": "2026-09-19T00:00:00.000Z",
      -        "thermodynamic": {
      -          "target_multiplier": 125.83
      -        }
      -      }
      -    ],
      -    "proof": "eyJwaV9hIjpbIjEyMyIsIjQ1NiIsIjEiXX0",
      -    "publicInputs": {
      -      "blockHeight": 920000,
      -      "snapshotDigest": "1534979302823651498736582947365829473658294736582947365829473658294",
      -      "thermodynamicHash": "782365829473658294736582947365829473658294736582947365829473658294",
      -      "timestamp": 1789776000000,
      -      "valuationSat": 12583
      -    },
      -    "verificationKeyId": "sha256:4c095e183ea45a9d"
      -  },
      -  {
      -    "blockHash": "abababababababababababababababababababababababababababababababab",
      -    "circuit": "zk.drift.v1",
      -    "compactTarget": 486604799,
      -    "driftScore": 0.25,
      -    "entropyThreshold": 0.75,
      -    "isAligned": true,
      -    "proof": {
      -      "circuit": "zk.drift.v1",
      -      "pi_a": [
      -        "1",
      -        "2",
      -        "1"
      -      ],
      -      "pi_b": [
      -        [
      -          "1",
      -          "2"
      -        ],
      -        [
      -          "3",
      -          "4"
      -        ],
      -        [
      -          "1",
      -          "0"
      -        ]
      -      ],
      -      "pi_c": [
      -        "1",
      -        "2",
      -        "1"
      -      ],
      -      "publicSignals": [
      -        "1",
      -        "2"
      -      ],
      -      "verificationKeyId": "sha256:4c095e183ea45a9d"
      -    },
      -    "sessionContextHash": "abababababababababababababababababababababababababababababababab",
      -    "targetBlockHeight": 920000,
      -    "thermodynamicEntropyBits": 0.5
      -  }
      -]New value: +[
      +  {
      +    "data": [
      +      {
      +        "block": {
      +          "height": 920000
      +        },
      +        "observed_at": "2026-09-19T00:00:00.000Z",
      +        "thermodynamic": {
      +          "target_multiplier": 125.83
      +        }
      +      }
      +    ],
      +    "proof": "eyJwaV9hIjpbIjEyMyIsIjQ1NiIsIjEiXX0",
      +    "publicInputs": {
      +      "blockHeight": 920000,
      +      "snapshotDigest": "1534979302823651498736582947365829473658294736582947365829473658294",
      +      "thermodynamicHash": "782365829473658294736582947365829473658294736582947365829473658294",
      +      "timestamp": 1789776000000,
      +      "valuationSat": 12583
      +    },
      +    "verificationKeyId": "sha256:4c095e183ea45a9d"
      +  },
      +  {
      +    "blockHash": "abababababababababababababababababababababababababababababababab",
      +    "circuit": "zk.drift.v1",
      +    "compactTarget": 486604799,
      +    "driftScore": 0.25,
      +    "entropyThreshold": 0.75,
      +    "isAligned": true,
      +    "proof": {
      +      "circuit": "zk.drift.v1",
      +      "pi_a": [
      +        "1",
      +        "2",
      +        "1"
      +      ],
      +      "pi_b": [
      +        [
      +          "1",
      +          "2"
      +        ],
      +        [
      +          "3",
      +          "4"
      +        ],
      +        [
      +          "1",
      +          "0"
      +        ]
      +      ],
      +      "pi_c": [
      +        "1",
      +        "2",
      +        "1"
      +      ],
      +      "publicSignals": [
      +        "1",
      +        "2"
      +      ],
      +      "verificationKeyId": "sha256:4c095e183ea45a9d"
      +    },
      +    "sessionContextHash": "abababababababababababababababababababababababababababababababab",
      +    "targetBlockHeight": 920000,
      +    "thermodynamicEntropyBits": 0.5
      +  },
      +  {
      +    "otsProof": "AQID",
      +    "proofType": "ots",
      +    "targetHash": "abababababababababababababababababababababababababababababababab"
      +  }
      +]
    • changedInput schema / oneOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "description": "Legacy telemetry-bound Groth16 proof verification input. Example: provide a proof, public inputs, verification key, and telemetry data.",
      -    "examples": [
      -      {
      -        "data": [
      -          {
      -            "block": {
      -              "height": 920000
      -            },
      -            "observed_at": "2026-09-19T00:00:00.000Z",
      -            "thermodynamic": {
      -              "target_multiplier": 125.83
      -            }
      -          }
      -        ],
      -        "proof": "eyJwaV9hIjpbIjEyMyIsIjQ1NiIsIjEiXX0",
      -        "publicInputs": {
      -          "blockHeight": 920000,
      -          "snapshotDigest": "1534979302823651498736582947365829473658294736582947365829473658294",
      -          "thermodynamicHash": "782365829473658294736582947365829473658294736582947365829473658294",
      -          "timestamp": 1789776000000,
      -          "valuationSat": 12583
      -        },
      -        "verificationKeyId": "sha256:4c095e183ea45a9d"
      -      }
      -    ],
      -    "properties": {
      -      "data": {
      -        "description": "Telemetry snapshot payload object or array of objects containing canonical state values. Example: [{\"block\":{\"height\":920000},\"observed_at\":\"2026-09-19T00:00:00.000Z\",\"thermodynamic\":{\"target_multiplier\":125.83}}].",
      -        "example": [
      -          {
      -            "block": {
      -              "height": 920000
      -            },
      -            "observed_at": "2026-09-19T00:00:00.000Z",
      -            "thermodynamic": {
      -              "target_multiplier": 125.83
      -            }
      -          }
      -        ],
      -        "examples": [
      -          [
      -            {
      -              "block": {
      -                "height": 920000
      -              },
      -              "observed_at": "2026-09-19T00:00:00.000Z",
      -              "thermodynamic": {
      -                "target_multiplier": 125.83
      -              }
      -            }
      -          ]
      -        ],
      -        "type": [
      -          "object",
      -          "array"
      -        ]
      -      },
      -      "proof": {
      -        "description": "Base64url-encoded Groth16/Poseidon BN254 proof string without padding. Constraints: minLength: 1. Example: \"eyJwaV9hIjpbIjEyMyIsIjQ1NiIsIjEiXX0\".",
      -        "example": "eyJwaV9hIjpbIjEyMyIsIjQ1NiIsIjEiXX0",
      -        "examples": [
      -          "eyJwaV9hIjpbIjEyMyIsIjQ1NiIsIjEiXX0"
      -        ],
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "publicInputs": {
      -        "additionalProperties": false,
      -        "description": "Expected public constants committed by the proof; fields must match the corresponding telemetry payload in data: non-negative blockHeight, non-empty snapshotDigest and thermodynamicHash, non-negative Unix-millisecond timestamp, and non-negative valuationSat. Example: blockHeight 920000 and valuationSat 12583.",
      -        "examples": [
      -          {
      -            "blockHeight": 920000,
      -            "snapshotDigest": "1534979302823651498736582947365829473658294736582947365829473658294",
      -            "thermodynamicHash": "782365829473658294736582947365829473658294736582947365829473658294",
      -            "timestamp": 1789776000000,
      -            "valuationSat": 12583
      -          }
      -        ],
      -        "properties": {
      -          "blockHeight": {
      -            "description": "Bitcoin block height committed into the proof. Constraints: minimum: 0. Example: 920000.",
      -            "example": 920000,
      -            "examples": [
      -              920000
      -            ],
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "snapshotDigest": {
      -            "description": "Poseidon field digest of the canonical snapshot payload. Constraints: minLength: 1. Example: \"1534979302823651498736582947365829473658294736582947365829473658294\".",
      -            "example": "1534979302823651498736582947365829473658294736582947365829473658294",
      -            "examples": [
      -              "1534979302823651498736582947365829473658294736582947365829473658294"
      -            ],
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "thermodynamicHash": {
      -            "description": "Poseidon field hash of the thermodynamic telemetry values. Constraints: minLength: 1. Example: \"782365829473658294736582947365829473658294736582947365829473658294\".",
      -            "example": "782365829473658294736582947365829473658294736582947365829473658294",
      -            "examples": [
      -              "782365829473658294736582947365829473658294736582947365829473658294"
      -            ],
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "timestamp": {
      -            "description": "Unix timestamp in milliseconds committed into the proof. Constraints: minimum: 0. Example: 1789776000000.",
      -            "example": 1789776000000,
      -            "examples": [
      -              1789776000000
      -            ],
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "valuationSat": {
      -            "description": "Satoshi valuation committed into the proof. Constraints: minimum: 0. Example: 12583.",
      -            "example": 12583,
      -            "examples": [
      -              12583
      -            ],
      -            "minimum": 0,
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "blockHeight",
      -          "snapshotDigest",
      -          "thermodynamicHash",
      -          "timestamp",
      -          "valuationSat"
      -        ],
      -        "type": "object"
      -      },
      -      "verificationKeyId": {
      -        "description": "SHA-256 verification-key identifier string formatted with 'sha256:' prefix. Constraints: minLength: 1. Example: \"sha256:4c095e183ea45a9d\".",
      -        "example": "sha256:4c095e183ea45a9d",
      -        "examples": [
      -          "sha256:4c095e183ea45a9d"
      -        ],
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "proof",
      -      "publicInputs",
      -      "verificationKeyId",
      -      "data"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "description": "Native zk.drift.v1 proof verification input, optionally bound to the complete verifier response. Example: supply the circuit discriminator, session hash, target height, threshold, and proof.",
      -    "examples": [
      -      {
      -        "blockHash": "abababababababababababababababababababababababababababababababab",
      -        "circuit": "zk.drift.v1",
      -        "compactTarget": 486604799,
      -        "driftScore": 0.25,
      -        "entropyThreshold": 0.75,
      -        "isAligned": true,
      -        "proof": {
      -          "circuit": "zk.drift.v1",
      -          "pi_a": [
      -            "1",
      -            "2",
      -            "1"
      -          ],
      -          "pi_b": [
      -            [
      -              "1",
      -              "2"
      -            ],
      -            [
      -              "3",
      -              "4"
      -            ],
      -            [
      -              "1",
      -              "0"
      -            ]
      -          ],
      -          "pi_c": [
      -            "1",
      -            "2",
      -            "1"
      -          ],
      -          "publicSignals": [
      -            "1",
      -            "2"
      -          ],
      -          "verificationKeyId": "sha256:4c095e183ea45a9d"
      -        },
      -        "sessionContextHash": "abababababababababababababababababababababababababababababababab",
      -        "targetBlockHeight": 920000,
      -        "thermodynamicEntropyBits": 0.5
      -      }
      -    ],
      -    "properties": {
      -      "blockHash": {
      -        "description": "Bitcoin block hash bound to the complete verifier response. Constraints: pattern: ^[0-9a-fA-F]{64}$. Example: \"abababababababababababababababababababababababababababababababab\".",
      -        "example": "abababababababababababababababababababababababababababababababab",
      -        "examples": [
      -          "abababababababababababababababababababababababababababababababab"
      -        ],
      -        "pattern": "^[0-9a-fA-F]{64}$",
      -        "type": "string"
      -      },
      -      "circuit": {
      -        "const": "zk.drift.v1",
      -        "description": "Drift proof circuit discriminator. Example: \"zk.drift.v1\".",
      -        "example": "zk.drift.v1",
      -        "examples": [
      -          "zk.drift.v1"
      -        ],
      -        "type": "string"
      -      },
      -      "compactTarget": {
      -        "description": "Raw compact target bits bound to the complete verifier response. Constraints: minimum: 0; maximum: 4294967295. Example: 486604799.",
      -        "example": 486604799,
      -        "examples": [
      -          486604799
      -        ],
      -        "maximum": 4294967295,
      -        "minimum": 0,
      -        "type": "integer"
      -      },
      -      "driftScore": {
      -        "description": "Drift score bound to the complete verifier response. Example: 0.25.",
      -        "example": 0.25,
      -        "examples": [
      -          0.25
      -        ],
      -        "type": "number"
      -      },
      -      "entropyThreshold": {
      -        "description": "Maximum accepted thermodynamic entropy threshold. Constraints: minimum: 0; maximum: 1. Example: 0.75.",
      -        "example": 0.75,
      -        "examples": [
      -          0.75
      -        ],
      -        "maximum": 1,
      -        "minimum": 0,
      -        "type": "number"
      -      },
      -      "isAligned": {
      -        "description": "Alignment result bound to the complete verifier response. Example: true.",
      -        "example": true,
      -        "examples": [
      -          true
      -        ],
      -        "type": "boolean"
      -      },
      -      "proof": {
      -        "additionalProperties": false,
      -        "description": "Groth16 proof points, public signals, and verification-key identifier for zk.drift.v1. Example: pi_a, pi_b, pi_c, and public signals.",
      -        "examples": [
      -          {
      -            "circuit": "zk.drift.v1",
      -            "pi_a": [
      -              "1",
      -              "2",
      -              "1"
      -            ],
      -            "pi_b": [
      -              [
      -                "1",
      -                "2"
      -              ],
      -              [
      -                "3",
      -                "4"
      -              ],
      -              [
      -                "1",
      -                "0"
      -              ]
      -            ],
      -            "pi_c": [
      -              "1",
      -              "2",
      -              "1"
      -            ],
      -            "publicSignals": [
      -              "1",
      -              "2"
      -            ],
      -            "verificationKeyId": "sha256:4c095e183ea45a9d"
      -          }
      -        ],
      -        "properties": {
      -          "circuit": {
      -            "const": "zk.drift.v1",
      -            "description": "Proof circuit discriminator. Example: \"zk.drift.v1\".",
      -            "example": "zk.drift.v1",
      -            "examples": [
      -              "zk.drift.v1"
      -            ],
      -            "type": "string"
      -          },
      -          "pi_a": {
      -            "description": "Three Groth16 pi_a field elements. Example: [\"1\", \"2\", \"1\"].",
      -            "examples": [
      -              [
      -                "1",
      -                "2",
      -                "1"
      -              ]
      -            ],
      -            "items": {
      -              "description": "Groth16 pi_a field element. Constraints: minLength: 1. Example: \"1\".",
      -              "example": "1",
      -              "examples": [
      -                "1"
      -              ],
      -              "minLength": 1,
      -              "type": "string"
      -            },
      -            "maxItems": 3,
      -            "minItems": 3,
      -            "type": "array"
      -          },
      -          "pi_b": {
      -            "description": "Three pairs of Groth16 pi_b field elements. Example: [[\"1\", \"2\"], [\"3\", \"4\"], [\"1\", \"0\"]].",
      -            "examples": [
      -              [
      -                [
      -                  "1",
      -                  "2"
      -                ],
      -                [
      -                  "3",
      -                  "4"
      -                ],
      -                [
      -                  "1",
      -                  "0"
      -                ]
      -              ]
      -            ],
      -            "items": {
      -              "description": "A pair of Groth16 pi_b field elements. Example: [\"1\", \"2\"].",
      -              "examples": [
      -                [
      -                  "1",
      -                  "2"
      -                ]
      -              ],
      -              "items": {
      -                "description": "Groth16 pi_b field element. Constraints: minLength: 1. Example: \"1\".",
      -                "example": "1",
      -                "examples": [
      -                  "1"
      -                ],
      -                "minLength": 1,
      -                "type": "string"
      -              },
      -              "maxItems": 2,
      -              "minItems": 2,
      -              "type": "array"
      -            },
      -            "maxItems": 3,
      -            "minItems": 3,
      -            "type": "array"
      -          },
      -          "pi_c": {
      -            "description": "Three Groth16 pi_c field elements. Example: [\"1\", \"2\", \"1\"].",
      -            "examples": [
      -              [
      -                "1",
      -                "2",
      -                "1"
      -              ]
      -            ],
      -            "items": {
      -              "description": "Groth16 pi_c field element. Constraints: minLength: 1. Example: \"1\".",
      -              "example": "1",
      -              "examples": [
      -                "1"
      -              ],
      -              "minLength": 1,
      -              "type": "string"
      -            },
      -            "maxItems": 3,
      -            "minItems": 3,
      -            "type": "array"
      -          },
      -          "publicSignals": {
      -            "description": "Public field elements bound to the drift proof. Example: [\"1\", \"2\"].",
      -            "examples": [
      -              [
      -                "1",
      -                "2"
      -              ]
      -            ],
      -            "items": {
      -              "description": "Public signal field element. Constraints: minLength: 1. Example: \"1\".",
      -              "example": "1",
      -              "examples": [
      -                "1"
      -              ],
      -              "minLength": 1,
      -              "type": "string"
      -            },
      -            "minItems": 1,
      -            "type": "array"
      -          },
      -          "verificationKeyId": {
      -            "description": "Identifier of the verification key to use. Constraints: minLength: 1. Example: \"sha256:4c095e183ea45a9d\".",
      -            "example": "sha256:4c095e183ea45a9d",
      -            "examples": [
      -              "sha256:4c095e183ea45a9d"
      -            ],
      -            "minLength": 1,
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "circuit",
      -          "pi_a",
      -          "pi_b",
      -          "pi_c",
      -          "publicSignals",
      -          "verificationKeyId"
      -        ],
      -        "type": "object"
      -      },
      -      "sessionContextHash": {
      -        "description": "Hash binding this proof to its agent session context. Constraints: pattern: ^[0-9a-fA-F]{64}$. Example: \"abababababababababababababababababababababababababababababababab\".",
      -        "example": "abababababababababababababababababababababababababababababababab",
      -        "examples": [
      -          "abababababababababababababababababababababababababababababababab"
      -        ],
      -        "pattern": "^[0-9a-fA-F]{64}$",
      -        "type": "string"
      -      },
      -      "targetBlockHeight": {
      -        "description": "Bitcoin block height being evaluated. Constraints: minimum: 0; maximum: 4294967295. Example: 920000.",
      -        "example": 920000,
      -        "examples": [
      -          920000
      -        ],
      -        "maximum": 4294967295,
      -        "minimum": 0,
      -        "type": "integer"
      -      },
      -      "thermodynamicEntropyBits": {
      -        "description": "Thermodynamic entropy value bound to the complete verifier response. Constraints: minimum: 0. Example: 0.5.",
      -        "example": 0.5,
      -        "examples": [
      -          0.5
      -        ],
      -        "minimum": 0,
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "circuit",
      -      "sessionContextHash",
      -      "targetBlockHeight",
      -      "entropyThreshold",
      -      "proof"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "description": "Legacy telemetry-bound Groth16 proof verification input. Example: provide a proof, public inputs, verification key, and telemetry data.",
      +    "examples": [
      +      {
      +        "data": [
      +          {
      +            "block": {
      +              "height": 920000
      +            },
      +            "observed_at": "2026-09-19T00:00:00.000Z",
      +            "thermodynamic": {
      +              "target_multiplier": 125.83
      +            }
      +          }
      +        ],
      +        "proof": "eyJwaV9hIjpbIjEyMyIsIjQ1NiIsIjEiXX0",
      +        "publicInputs": {
      +          "blockHeight": 920000,
      +          "snapshotDigest": "1534979302823651498736582947365829473658294736582947365829473658294",
      +          "thermodynamicHash": "782365829473658294736582947365829473658294736582947365829473658294",
      +          "timestamp": 1789776000000,
      +          "valuationSat": 12583
      +        },
      +        "verificationKeyId": "sha256:4c095e183ea45a9d"
      +      }
      +    ],
      +    "properties": {
      +      "data": {
      +        "description": "Telemetry snapshot payload object or array of objects containing canonical state values. Example: [{\"block\":{\"height\":920000},\"observed_at\":\"2026-09-19T00:00:00.000Z\",\"thermodynamic\":{\"target_multiplier\":125.83}}].",
      +        "example": [
      +          {
      +            "block": {
      +              "height": 920000
      +            },
      +            "observed_at": "2026-09-19T00:00:00.000Z",
      +            "thermodynamic": {
      +              "target_multiplier": 125.83
      +            }
      +          }
      +        ],
      +        "examples": [
      +          [
      +            {
      +              "block": {
      +                "height": 920000
      +              },
      +              "observed_at": "2026-09-19T00:00:00.000Z",
      +              "thermodynamic": {
      +                "target_multiplier": 125.83
      +              }
      +            }
      +          ]
      +        ],
      +        "type": [
      +          "object",
      +          "array"
      +        ]
      +      },
      +      "proof": {
      +        "description": "Base64url-encoded Groth16/Poseidon BN254 proof string without padding. Constraints: minLength: 1. Example: \"eyJwaV9hIjpbIjEyMyIsIjQ1NiIsIjEiXX0\".",
      +        "example": "eyJwaV9hIjpbIjEyMyIsIjQ1NiIsIjEiXX0",
      +        "examples": [
      +          "eyJwaV9hIjpbIjEyMyIsIjQ1NiIsIjEiXX0"
      +        ],
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "proofType": {
      +        "const": "groth16",
      +        "default": "groth16",
      +        "description": "Groth16 verification (default). Example: \"groth16\".",
      +        "example": "groth16",
      +        "examples": [
      +          "groth16"
      +        ],
      +        "type": "string"
      +      },
      +      "publicInputs": {
      +        "additionalProperties": false,
      +        "description": "Expected public constants committed by the proof; fields must match the corresponding telemetry payload in data: non-negative blockHeight, non-empty snapshotDigest and thermodynamicHash, non-negative Unix-millisecond timestamp, and non-negative valuationSat. Example: blockHeight 920000 and valuationSat 12583.",
      +        "examples": [
      +          {
      +            "blockHeight": 920000,
      +            "snapshotDigest": "1534979302823651498736582947365829473658294736582947365829473658294",
      +            "thermodynamicHash": "782365829473658294736582947365829473658294736582947365829473658294",
      +            "timestamp": 1789776000000,
      +            "valuationSat": 12583
      +          }
      +        ],
      +        "properties": {
      +          "blockHeight": {
      +            "description": "Bitcoin block height committed into the proof. Constraints: minimum: 0. Example: 920000.",
      +            "example": 920000,
      +            "examples": [
      +              920000
      +            ],
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "snapshotDigest": {
      +            "description": "Poseidon field digest of the canonical snapshot payload. Constraints: minLength: 1. Example: \"1534979302823651498736582947365829473658294736582947365829473658294\".",
      +            "example": "1534979302823651498736582947365829473658294736582947365829473658294",
      +            "examples": [
      +              "1534979302823651498736582947365829473658294736582947365829473658294"
      +            ],
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "thermodynamicHash": {
      +            "description": "Poseidon field hash of the thermodynamic telemetry values. Constraints: minLength: 1. Example: \"782365829473658294736582947365829473658294736582947365829473658294\".",
      +            "example": "782365829473658294736582947365829473658294736582947365829473658294",
      +            "examples": [
      +              "782365829473658294736582947365829473658294736582947365829473658294"
      +            ],
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "timestamp": {
      +            "description": "Unix timestamp in milliseconds committed into the proof. Constraints: minimum: 0. Example: 1789776000000.",
      +            "example": 1789776000000,
      +            "examples": [
      +              1789776000000
      +            ],
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "valuationSat": {
      +            "description": "Satoshi valuation committed into the proof. Constraints: minimum: 0. Example: 12583.",
      +            "example": 12583,
      +            "examples": [
      +              12583
      +            ],
      +            "minimum": 0,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "blockHeight",
      +          "snapshotDigest",
      +          "thermodynamicHash",
      +          "timestamp",
      +          "valuationSat"
      +        ],
      +        "type": "object"
      +      },
      +      "verificationKeyId": {
      +        "description": "SHA-256 verification-key identifier string formatted with 'sha256:' prefix. Constraints: minLength: 1. Example: \"sha256:4c095e183ea45a9d\".",
      +        "example": "sha256:4c095e183ea45a9d",
      +        "examples": [
      +          "sha256:4c095e183ea45a9d"
      +        ],
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "proof",
      +      "publicInputs",
      +      "verificationKeyId",
      +      "data"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "description": "Native zk.drift.v1 proof verification input, optionally bound to the complete verifier response. Example: supply the circuit discriminator, session hash, target height, threshold, and proof.",
      +    "examples": [
      +      {
      +        "blockHash": "abababababababababababababababababababababababababababababababab",
      +        "circuit": "zk.drift.v1",
      +        "compactTarget": 486604799,
      +        "driftScore": 0.25,
      +        "entropyThreshold": 0.75,
      +        "isAligned": true,
      +        "proof": {
      +          "circuit": "zk.drift.v1",
      +          "pi_a": [
      +            "1",
      +            "2",
      +            "1"
      +          ],
      +          "pi_b": [
      +            [
      +              "1",
      +              "2"
      +            ],
      +            [
      +              "3",
      +              "4"
      +            ],
      +            [
      +              "1",
      +              "0"
      +            ]
      +          ],
      +          "pi_c": [
      +            "1",
      +            "2",
      +            "1"
      +          ],
      +          "publicSignals": [
      +            "1",
      +            "2"
      +          ],
      +          "verificationKeyId": "sha256:4c095e183ea45a9d"
      +        },
      +        "sessionContextHash": "abababababababababababababababababababababababababababababababab",
      +        "targetBlockHeight": 920000,
      +        "thermodynamicEntropyBits": 0.5
      +      }
      +    ],
      +    "properties": {
      +      "blockHash": {
      +        "description": "Bitcoin block hash bound to the complete verifier response. Constraints: pattern: ^[0-9a-fA-F]{64}$. Example: \"abababababababababababababababababababababababababababababababab\".",
      +        "example": "abababababababababababababababababababababababababababababababab",
      +        "examples": [
      +          "abababababababababababababababababababababababababababababababab"
      +        ],
      +        "pattern": "^[0-9a-fA-F]{64}$",
      +        "type": "string"
      +      },
      +      "circuit": {
      +        "const": "zk.drift.v1",
      +        "description": "Drift proof circuit discriminator. Example: \"zk.drift.v1\".",
      +        "example": "zk.drift.v1",
      +        "examples": [
      +          "zk.drift.v1"
      +        ],
      +        "type": "string"
      +      },
      +      "compactTarget": {
      +        "description": "Raw compact target bits bound to the complete verifier response. Constraints: minimum: 0; maximum: 4294967295. Example: 486604799.",
      +        "example": 486604799,
      +        "examples": [
      +          486604799
      +        ],
      +        "maximum": 4294967295,
      +        "minimum": 0,
      +        "type": "integer"
      +      },
      +      "driftScore": {
      +        "description": "Drift score bound to the complete verifier response. Example: 0.25.",
      +        "example": 0.25,
      +        "examples": [
      +          0.25
      +        ],
      +        "type": "number"
      +      },
      +      "entropyThreshold": {
      +        "description": "Maximum accepted thermodynamic entropy threshold. Constraints: minimum: 0; maximum: 1. Example: 0.75.",
      +        "example": 0.75,
      +        "examples": [
      +          0.75
      +        ],
      +        "maximum": 1,
      +        "minimum": 0,
      +        "type": "number"
      +      },
      +      "isAligned": {
      +        "description": "Alignment result bound to the complete verifier response. Example: true.",
      +        "example": true,
      +        "examples": [
      +          true
      +        ],
      +        "type": "boolean"
      +      },
      +      "proof": {
      +        "additionalProperties": false,
      +        "description": "Groth16 proof points, public signals, and verification-key identifier for zk.drift.v1. Example: pi_a, pi_b, pi_c, and public signals.",
      +        "examples": [
      +          {
      +            "circuit": "zk.drift.v1",
      +            "pi_a": [
      +              "1",
      +              "2",
      +              "1"
      +            ],
      +            "pi_b": [
      +              [
      +                "1",
      +                "2"
      +              ],
      +              [
      +                "3",
      +                "4"
      +              ],
      +              [
      +                "1",
      +                "0"
      +              ]
      +            ],
      +            "pi_c": [
      +              "1",
      +              "2",
      +              "1"
      +            ],
      +            "publicSignals": [
      +              "1",
      +              "2"
      +            ],
      +            "verificationKeyId": "sha256:4c095e183ea45a9d"
      +          }
      +        ],
      +        "properties": {
      +          "circuit": {
      +            "const": "zk.drift.v1",
      +            "description": "Proof circuit discriminator. Example: \"zk.drift.v1\".",
      +            "example": "zk.drift.v1",
      +            "examples": [
      +              "zk.drift.v1"
      +            ],
      +            "type": "string"
      +          },
      +          "pi_a": {
      +            "description": "Three Groth16 pi_a field elements. Example: [\"1\", \"2\", \"1\"].",
      +            "examples": [
      +              [
      +                "1",
      +                "2",
      +                "1"
      +              ]
      +            ],
      +            "items": {
      +              "description": "Groth16 pi_a field element. Constraints: minLength: 1. Example: \"1\".",
      +              "example": "1",
      +              "examples": [
      +                "1"
      +              ],
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "maxItems": 3,
      +            "minItems": 3,
      +            "type": "array"
      +          },
      +          "pi_b": {
      +            "description": "Three pairs of Groth16 pi_b field elements. Example: [[\"1\", \"2\"], [\"3\", \"4\"], [\"1\", \"0\"]].",
      +            "examples": [
      +              [
      +                [
      +                  "1",
      +                  "2"
      +                ],
      +                [
      +                  "3",
      +                  "4"
      +                ],
      +                [
      +                  "1",
      +                  "0"
      +                ]
      +              ]
      +            ],
      +            "items": {
      +              "description": "A pair of Groth16 pi_b field elements. Example: [\"1\", \"2\"].",
      +              "examples": [
      +                [
      +                  "1",
      +                  "2"
      +                ]
      +              ],
      +              "items": {
      +                "description": "Groth16 pi_b field element. Constraints: minLength: 1. Example: \"1\".",
      +                "example": "1",
      +                "examples": [
      +                  "1"
      +                ],
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "maxItems": 2,
      +              "minItems": 2,
      +              "type": "array"
      +            },
      +            "maxItems": 3,
      +            "minItems": 3,
      +            "type": "array"
      +          },
      +          "pi_c": {
      +            "description": "Three Groth16 pi_c field elements. Example: [\"1\", \"2\", \"1\"].",
      +            "examples": [
      +              [
      +                "1",
      +                "2",
      +                "1"
      +              ]
      +            ],
      +            "items": {
      +              "description": "Groth16 pi_c field element. Constraints: minLength: 1. Example: \"1\".",
      +              "example": "1",
      +              "examples": [
      +                "1"
      +              ],
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "maxItems": 3,
      +            "minItems": 3,
      +            "type": "array"
      +          },
      +          "publicSignals": {
      +            "description": "Public field elements bound to the drift proof. Example: [\"1\", \"2\"].",
      +            "examples": [
      +              [
      +                "1",
      +                "2"
      +              ]
      +            ],
      +            "items": {
      +              "description": "Public signal field element. Constraints: minLength: 1. Example: \"1\".",
      +              "example": "1",
      +              "examples": [
      +                "1"
      +              ],
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "minItems": 1,
      +            "type": "array"
      +          },
      +          "verificationKeyId": {
      +            "description": "Identifier of the verification key to use. Constraints: minLength: 1. Example: \"sha256:4c095e183ea45a9d\".",
      +            "example": "sha256:4c095e183ea45a9d",
      +            "examples": [
      +              "sha256:4c095e183ea45a9d"
      +            ],
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "circuit",
      +          "pi_a",
      +          "pi_b",
      +          "pi_c",
      +          "publicSignals",
      +          "verificationKeyId"
      +        ],
      +        "type": "object"
      +      },
      +      "proofType": {
      +        "const": "groth16",
      +        "default": "groth16",
      +        "description": "Groth16 verification (default). Example: \"groth16\".",
      +        "example": "groth16",
      +        "examples": [
      +          "groth16"
      +        ],
      +        "type": "string"
      +      },
      +      "sessionContextHash": {
      +        "description": "Hash binding this proof to its agent session context. Constraints: pattern: ^[0-9a-fA-F]{64}$. Example: \"abababababababababababababababababababababababababababababababab\".",
      +        "example": "abababababababababababababababababababababababababababababababab",
      +        "examples": [
      +          "abababababababababababababababababababababababababababababababab"
      +        ],
      +        "pattern": "^[0-9a-fA-F]{64}$",
      +        "type": "string"
      +      },
      +      "targetBlockHeight": {
      +        "description": "Bitcoin block height being evaluated. Constraints: minimum: 0; maximum: 4294967295. Example: 920000.",
      +        "example": 920000,
      +        "examples": [
      +          920000
      +        ],
      +        "maximum": 4294967295,
      +        "minimum": 0,
      +        "type": "integer"
      +      },
      +      "thermodynamicEntropyBits": {
      +        "description": "Thermodynamic entropy value bound to the complete verifier response. Constraints: minimum: 0. Example: 0.5.",
      +        "example": 0.5,
      +        "examples": [
      +          0.5
      +        ],
      +        "minimum": 0,
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "circuit",
      +      "sessionContextHash",
      +      "targetBlockHeight",
      +      "entropyThreshold",
      +      "proof"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "description": "OTS mode requires proofType ots, a complete receipt, and its SHA-256 file digest.",
      +    "examples": [
      +      {
      +        "otsProof": "AQID",
      +        "targetHash": "abababababababababababababababababababababababababababababababab"
      +      }
      +    ],
      +    "properties": {
      +      "otsProof": {
      +        "description": "Canonical base64 or even-length hex serialized .ots receipt (maximum 512 KiB decoded). Constraints: minLength: 1; maxLength: 1048576. Example: \"AQID\".",
      +        "example": "AQID",
      +        "examples": [
      +          "AQID"
      +        ],
      +        "maxLength": 1048576,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "proofType": {
      +        "const": "ots",
      +        "description": "OpenTimestamps Bitcoin verification. Example: \"ots\".",
      +        "example": "ots",
      +        "examples": [
      +          "ots"
      +        ],
      +        "type": "string"
      +      },
      +      "targetHash": {
      +        "description": "64-character SHA-256 digest recorded by the receipt; not a Bitcoin header hash. Constraints: pattern: ^[0-9a-fA-F]{64}$. Example: \"abababababababababababababababababababababababababababababababab\".",
      +        "example": "abababababababababababababababababababababababababababababababab",
      +        "examples": [
      +          "abababababababababababababababababababababababababababababababab"
      +        ],
      +        "pattern": "^[0-9a-fA-F]{64}$",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "proofType",
      +      "otsProof",
      +      "targetHash"
      +    ],
      +    "type": "object"
      +  }
      +]
    • changedOutput schema / description
      Previous value: -"Cryptographic proof verification result."New value: +"Groth16 verification timing or OTS Bitcoin attestation result, depending on proofType."
    • changedOutput schema / examples
      Previous value: -[
      -  {
      -    "computationTimeMs": 3.284,
      -    "valid": true,
      -    "verifiedAt": "2026-09-19T01:41:36.458Z"
      -  }
      -]New value: +[
      +  {
      +    "computationTimeMs": 3.284,
      +    "valid": true,
      +    "verifiedAt": "2026-09-19T01:41:36.458Z"
      +  },
      +  {
      +    "bitcoinHeaderHash": "abababababababababababababababababababababababababababababababab",
      +    "blockHeight": 920000,
      +    "status": "bitcoin_block_attested",
      +    "valid": true
      +  }
      +]
    • addedOutput schema / oneOf
      Added value: +[
      +  {
      +    "required": [
      +      "verifiedAt",
      +      "computationTimeMs"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "status",
      +      "blockHeight",
      +      "bitcoinHeaderHash"
      +    ]
      +  }
      +]
    • addedOutput schema / properties / bitcoinHeaderHash
      Added value: +{
      +  "description": "Canonical Bitcoin block header hash at the attested height, or null if not verified. Example: \"abababababababababababababababababababababababababababababababab\".",
      +  "example": "abababababababababababababababababababababababababababababababab",
      +  "examples": [
      +    "abababababababababababababababababababababababababababababababab"
      +  ],
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / blockHeight
      Added value: +{
      +  "description": "Bitcoin attestation height, or null if not verified. Example: 920000.",
      +  "example": 920000,
      +  "examples": [
      +    920000
      +  ],
      +  "type": [
      +    "integer",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / status
      Added value: +{
      +  "description": "Whether the OTS record is Bitcoin-attested; calendar-only receipts are unverified. Constraints: allowed values: bitcoin_block_attested, unverified. Example: \"bitcoin_block_attested\".",
      +  "enum": [
      +    "bitcoin_block_attested",
      +    "unverified"
      +  ],
      +  "example": "bitcoin_block_attested",
      +  "examples": [
      +    "bitcoin_block_attested"
      +  ],
      +  "type": "string"
      +}
    • changedOutput schema / properties / valid / description
      Previous value: -"Whether the proof is valid and bound to the snapshot. Example: true."New value: +"True only for a digest-matching, Bitcoin-attested OTS record with a valid chain-header lookup. Example: true."
    • changedOutput schema / required
      Previous value: -[
      -  "valid",
      -  "verifiedAt",
      -  "computationTimeMs"
      -]New value: +[
      +  "valid"
      +]
  2. Changed5 schema fields changed
    • removedInput schema / additionalProperties
      Removed value: -false
    • changedInput schema / examples
      Previous value: -[
      -  {
      -    "data": [
      -      {
      -        "block": {
      -          "height": 920000
      -        },
      -        "observed_at": "2026-09-19T00:00:00.000Z",
      -        "thermodynamic": {
      -          "target_multiplier": 125.83
      -        }
      -      }
      -    ],
      -    "proof": "eyJwaV9hIjpbIjEyMyIsIjQ1NiIsIjEiXX0",
      -    "publicInputs": {
      -      "blockHeight": 920000,
      -      "snapshotDigest": "1534979302823651498736582947365829473658294736582947365829473658294",
      -      "thermodynamicHash": "782365829473658294736582947365829473658294736582947365829473658294",
      -      "timestamp": 1789776000000,
      -      "valuationSat": 12583
      -    },
      -    "verificationKeyId": "sha256:4c095e183ea45a9d"
      -  }
      -]New value: +[
      +  {
      +    "data": [
      +      {
      +        "block": {
      +          "height": 920000
      +        },
      +        "observed_at": "2026-09-19T00:00:00.000Z",
      +        "thermodynamic": {
      +          "target_multiplier": 125.83
      +        }
      +      }
      +    ],
      +    "proof": "eyJwaV9hIjpbIjEyMyIsIjQ1NiIsIjEiXX0",
      +    "publicInputs": {
      +      "blockHeight": 920000,
      +      "snapshotDigest": "1534979302823651498736582947365829473658294736582947365829473658294",
      +      "thermodynamicHash": "782365829473658294736582947365829473658294736582947365829473658294",
      +      "timestamp": 1789776000000,
      +      "valuationSat": 12583
      +    },
      +    "verificationKeyId": "sha256:4c095e183ea45a9d"
      +  },
      +  {
      +    "blockHash": "abababababababababababababababababababababababababababababababab",
      +    "circuit": "zk.drift.v1",
      +    "compactTarget": 486604799,
      +    "driftScore": 0.25,
      +    "entropyThreshold": 0.75,
      +    "isAligned": true,
      +    "proof": {
      +      "circuit": "zk.drift.v1",
      +      "pi_a": [
      +        "1",
      +        "2",
      +        "1"
      +      ],
      +      "pi_b": [
      +        [
      +          "1",
      +          "2"
      +        ],
      +        [
      +          "3",
      +          "4"
      +        ],
      +        [
      +          "1",
      +          "0"
      +        ]
      +      ],
      +      "pi_c": [
      +        "1",
      +        "2",
      +        "1"
      +      ],
      +      "publicSignals": [
      +        "1",
      +        "2"
      +      ],
      +      "verificationKeyId": "sha256:4c095e183ea45a9d"
      +    },
      +    "sessionContextHash": "abababababababababababababababababababababababababababababababab",
      +    "targetBlockHeight": 920000,
      +    "thermodynamicEntropyBits": 0.5
      +  }
      +]
    • addedInput schema / oneOf
      Added value: +[
      +  {
      +    "additionalProperties": false,
      +    "description": "Legacy telemetry-bound Groth16 proof verification input. Example: provide a proof, public inputs, verification key, and telemetry data.",
      +    "examples": [
      +      {
      +        "data": [
      +          {
      +            "block": {
      +              "height": 920000
      +            },
      +            "observed_at": "2026-09-19T00:00:00.000Z",
      +            "thermodynamic": {
      +              "target_multiplier": 125.83
      +            }
      +          }
      +        ],
      +        "proof": "eyJwaV9hIjpbIjEyMyIsIjQ1NiIsIjEiXX0",
      +        "publicInputs": {
      +          "blockHeight": 920000,
      +          "snapshotDigest": "1534979302823651498736582947365829473658294736582947365829473658294",
      +          "thermodynamicHash": "782365829473658294736582947365829473658294736582947365829473658294",
      +          "timestamp": 1789776000000,
      +          "valuationSat": 12583
      +        },
      +        "verificationKeyId": "sha256:4c095e183ea45a9d"
      +      }
      +    ],
      +    "properties": {
      +      "data": {
      +        "description": "Telemetry snapshot payload object or array of objects containing canonical state values. Example: [{\"block\":{\"height\":920000},\"observed_at\":\"2026-09-19T00:00:00.000Z\",\"thermodynamic\":{\"target_multiplier\":125.83}}].",
      +        "example": [
      +          {
      +            "block": {
      +              "height": 920000
      +            },
      +            "observed_at": "2026-09-19T00:00:00.000Z",
      +            "thermodynamic": {
      +              "target_multiplier": 125.83
      +            }
      +          }
      +        ],
      +        "examples": [
      +          [
      +            {
      +              "block": {
      +                "height": 920000
      +              },
      +              "observed_at": "2026-09-19T00:00:00.000Z",
      +              "thermodynamic": {
      +                "target_multiplier": 125.83
      +              }
      +            }
      +          ]
      +        ],
      +        "type": [
      +          "object",
      +          "array"
      +        ]
      +      },
      +      "proof": {
      +        "description": "Base64url-encoded Groth16/Poseidon BN254 proof string without padding. Constraints: minLength: 1. Example: \"eyJwaV9hIjpbIjEyMyIsIjQ1NiIsIjEiXX0\".",
      +        "example": "eyJwaV9hIjpbIjEyMyIsIjQ1NiIsIjEiXX0",
      +        "examples": [
      +          "eyJwaV9hIjpbIjEyMyIsIjQ1NiIsIjEiXX0"
      +        ],
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "publicInputs": {
      +        "additionalProperties": false,
      +        "description": "Expected public constants committed by the proof; fields must match the corresponding telemetry payload in data: non-negative blockHeight, non-empty snapshotDigest and thermodynamicHash, non-negative Unix-millisecond timestamp, and non-negative valuationSat. Example: blockHeight 920000 and valuationSat 12583.",
      +        "examples": [
      +          {
      +            "blockHeight": 920000,
      +            "snapshotDigest": "1534979302823651498736582947365829473658294736582947365829473658294",
      +            "thermodynamicHash": "782365829473658294736582947365829473658294736582947365829473658294",
      +            "timestamp": 1789776000000,
      +            "valuationSat": 12583
      +          }
      +        ],
      +        "properties": {
      +          "blockHeight": {
      +            "description": "Bitcoin block height committed into the proof. Constraints: minimum: 0. Example: 920000.",
      +            "example": 920000,
      +            "examples": [
      +              920000
      +            ],
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "snapshotDigest": {
      +            "description": "Poseidon field digest of the canonical snapshot payload. Constraints: minLength: 1. Example: \"1534979302823651498736582947365829473658294736582947365829473658294\".",
      +            "example": "1534979302823651498736582947365829473658294736582947365829473658294",
      +            "examples": [
      +              "1534979302823651498736582947365829473658294736582947365829473658294"
      +            ],
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "thermodynamicHash": {
      +            "description": "Poseidon field hash of the thermodynamic telemetry values. Constraints: minLength: 1. Example: \"782365829473658294736582947365829473658294736582947365829473658294\".",
      +            "example": "782365829473658294736582947365829473658294736582947365829473658294",
      +            "examples": [
      +              "782365829473658294736582947365829473658294736582947365829473658294"
      +            ],
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "timestamp": {
      +            "description": "Unix timestamp in milliseconds committed into the proof. Constraints: minimum: 0. Example: 1789776000000.",
      +            "example": 1789776000000,
      +            "examples": [
      +              1789776000000
      +            ],
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "valuationSat": {
      +            "description": "Satoshi valuation committed into the proof. Constraints: minimum: 0. Example: 12583.",
      +            "example": 12583,
      +            "examples": [
      +              12583
      +            ],
      +            "minimum": 0,
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "blockHeight",
      +          "snapshotDigest",
      +          "thermodynamicHash",
      +          "timestamp",
      +          "valuationSat"
      +        ],
      +        "type": "object"
      +      },
      +      "verificationKeyId": {
      +        "description": "SHA-256 verification-key identifier string formatted with 'sha256:' prefix. Constraints: minLength: 1. Example: \"sha256:4c095e183ea45a9d\".",
      +        "example": "sha256:4c095e183ea45a9d",
      +        "examples": [
      +          "sha256:4c095e183ea45a9d"
      +        ],
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "proof",
      +      "publicInputs",
      +      "verificationKeyId",
      +      "data"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "description": "Native zk.drift.v1 proof verification input, optionally bound to the complete verifier response. Example: supply the circuit discriminator, session hash, target height, threshold, and proof.",
      +    "examples": [
      +      {
      +        "blockHash": "abababababababababababababababababababababababababababababababab",
      +        "circuit": "zk.drift.v1",
      +        "compactTarget": 486604799,
      +        "driftScore": 0.25,
      +        "entropyThreshold": 0.75,
      +        "isAligned": true,
      +        "proof": {
      +          "circuit": "zk.drift.v1",
      +          "pi_a": [
      +            "1",
      +            "2",
      +            "1"
      +          ],
      +          "pi_b": [
      +            [
      +              "1",
      +              "2"
      +            ],
      +            [
      +              "3",
      +              "4"
      +            ],
      +            [
      +              "1",
      +              "0"
      +            ]
      +          ],
      +          "pi_c": [
      +            "1",
      +            "2",
      +            "1"
      +          ],
      +          "publicSignals": [
      +            "1",
      +            "2"
      +          ],
      +          "verificationKeyId": "sha256:4c095e183ea45a9d"
      +        },
      +        "sessionContextHash": "abababababababababababababababababababababababababababababababab",
      +        "targetBlockHeight": 920000,
      +        "thermodynamicEntropyBits": 0.5
      +      }
      +    ],
      +    "properties": {
      +      "blockHash": {
      +        "description": "Bitcoin block hash bound to the complete verifier response. Constraints: pattern: ^[0-9a-fA-F]{64}$. Example: \"abababababababababababababababababababababababababababababababab\".",
      +        "example": "abababababababababababababababababababababababababababababababab",
      +        "examples": [
      +          "abababababababababababababababababababababababababababababababab"
      +        ],
      +        "pattern": "^[0-9a-fA-F]{64}$",
      +        "type": "string"
      +      },
      +      "circuit": {
      +        "const": "zk.drift.v1",
      +        "description": "Drift proof circuit discriminator. Example: \"zk.drift.v1\".",
      +        "example": "zk.drift.v1",
      +        "examples": [
      +          "zk.drift.v1"
      +        ],
      +        "type": "string"
      +      },
      +      "compactTarget": {
      +        "description": "Raw compact target bits bound to the complete verifier response. Constraints: minimum: 0; maximum: 4294967295. Example: 486604799.",
      +        "example": 486604799,
      +        "examples": [
      +          486604799
      +        ],
      +        "maximum": 4294967295,
      +        "minimum": 0,
      +        "type": "integer"
      +      },
      +      "driftScore": {
      +        "description": "Drift score bound to the complete verifier response. Example: 0.25.",
      +        "example": 0.25,
      +        "examples": [
      +          0.25
      +        ],
      +        "type": "number"
      +      },
      +      "entropyThreshold": {
      +        "description": "Maximum accepted thermodynamic entropy threshold. Constraints: minimum: 0; maximum: 1. Example: 0.75.",
      +        "example": 0.75,
      +        "examples": [
      +          0.75
      +        ],
      +        "maximum": 1,
      +        "minimum": 0,
      +        "type": "number"
      +      },
      +      "isAligned": {
      +        "description": "Alignment result bound to the complete verifier response. Example: true.",
      +        "example": true,
      +        "examples": [
      +          true
      +        ],
      +        "type": "boolean"
      +      },
      +      "proof": {
      +        "additionalProperties": false,
      +        "description": "Groth16 proof points, public signals, and verification-key identifier for zk.drift.v1. Example: pi_a, pi_b, pi_c, and public signals.",
      +        "examples": [
      +          {
      +            "circuit": "zk.drift.v1",
      +            "pi_a": [
      +              "1",
      +              "2",
      +              "1"
      +            ],
      +            "pi_b": [
      +              [
      +                "1",
      +                "2"
      +              ],
      +              [
      +                "3",
      +                "4"
      +              ],
      +              [
      +                "1",
      +                "0"
      +              ]
      +            ],
      +            "pi_c": [
      +              "1",
      +              "2",
      +              "1"
      +            ],
      +            "publicSignals": [
      +              "1",
      +              "2"
      +            ],
      +            "verificationKeyId": "sha256:4c095e183ea45a9d"
      +          }
      +        ],
      +        "properties": {
      +          "circuit": {
      +            "const": "zk.drift.v1",
      +            "description": "Proof circuit discriminator. Example: \"zk.drift.v1\".",
      +            "example": "zk.drift.v1",
      +            "examples": [
      +              "zk.drift.v1"
      +            ],
      +            "type": "string"
      +          },
      +          "pi_a": {
      +            "description": "Three Groth16 pi_a field elements. Example: [\"1\", \"2\", \"1\"].",
      +            "examples": [
      +              [
      +                "1",
      +                "2",
      +                "1"
      +              ]
      +            ],
      +            "items": {
      +              "description": "Groth16 pi_a field element. Constraints: minLength: 1. Example: \"1\".",
      +              "example": "1",
      +              "examples": [
      +                "1"
      +              ],
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "maxItems": 3,
      +            "minItems": 3,
      +            "type": "array"
      +          },
      +          "pi_b": {
      +            "description": "Three pairs of Groth16 pi_b field elements. Example: [[\"1\", \"2\"], [\"3\", \"4\"], [\"1\", \"0\"]].",
      +            "examples": [
      +              [
      +                [
      +                  "1",
      +                  "2"
      +                ],
      +                [
      +                  "3",
      +                  "4"
      +                ],
      +                [
      +                  "1",
      +                  "0"
      +                ]
      +              ]
      +            ],
      +            "items": {
      +              "description": "A pair of Groth16 pi_b field elements. Example: [\"1\", \"2\"].",
      +              "examples": [
      +                [
      +                  "1",
      +                  "2"
      +                ]
      +              ],
      +              "items": {
      +                "description": "Groth16 pi_b field element. Constraints: minLength: 1. Example: \"1\".",
      +                "example": "1",
      +                "examples": [
      +                  "1"
      +                ],
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "maxItems": 2,
      +              "minItems": 2,
      +              "type": "array"
      +            },
      +            "maxItems": 3,
      +            "minItems": 3,
      +            "type": "array"
      +          },
      +          "pi_c": {
      +            "description": "Three Groth16 pi_c field elements. Example: [\"1\", \"2\", \"1\"].",
      +            "examples": [
      +              [
      +                "1",
      +                "2",
      +                "1"
      +              ]
      +            ],
      +            "items": {
      +              "description": "Groth16 pi_c field element. Constraints: minLength: 1. Example: \"1\".",
      +              "example": "1",
      +              "examples": [
      +                "1"
      +              ],
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "maxItems": 3,
      +            "minItems": 3,
      +            "type": "array"
      +          },
      +          "publicSignals": {
      +            "description": "Public field elements bound to the drift proof. Example: [\"1\", \"2\"].",
      +            "examples": [
      +              [
      +                "1",
      +                "2"
      +              ]
      +            ],
      +            "items": {
      +              "description": "Public signal field element. Constraints: minLength: 1. Example: \"1\".",
      +              "example": "1",
      +              "examples": [
      +                "1"
      +              ],
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "minItems": 1,
      +            "type": "array"
      +          },
      +          "verificationKeyId": {
      +            "description": "Identifier of the verification key to use. Constraints: minLength: 1. Example: \"sha256:4c095e183ea45a9d\".",
      +            "example": "sha256:4c095e183ea45a9d",
      +            "examples": [
      +              "sha256:4c095e183ea45a9d"
      +            ],
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "circuit",
      +          "pi_a",
      +          "pi_b",
      +          "pi_c",
      +          "publicSignals",
      +          "verificationKeyId"
      +        ],
      +        "type": "object"
      +      },
      +      "sessionContextHash": {
      +        "description": "Hash binding this proof to its agent session context. Constraints: pattern: ^[0-9a-fA-F]{64}$. Example: \"abababababababababababababababababababababababababababababababab\".",
      +        "example": "abababababababababababababababababababababababababababababababab",
      +        "examples": [
      +          "abababababababababababababababababababababababababababababababab"
      +        ],
      +        "pattern": "^[0-9a-fA-F]{64}$",
      +        "type": "string"
      +      },
      +      "targetBlockHeight": {
      +        "description": "Bitcoin block height being evaluated. Constraints: minimum: 0; maximum: 4294967295. Example: 920000.",
      +        "example": 920000,
      +        "examples": [
      +          920000
      +        ],
      +        "maximum": 4294967295,
      +        "minimum": 0,
      +        "type": "integer"
      +      },
      +      "thermodynamicEntropyBits": {
      +        "description": "Thermodynamic entropy value bound to the complete verifier response. Constraints: minimum: 0. Example: 0.5.",
      +        "example": 0.5,
      +        "examples": [
      +          0.5
      +        ],
      +        "minimum": 0,
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "circuit",
      +      "sessionContextHash",
      +      "targetBlockHeight",
      +      "entropyThreshold",
      +      "proof"
      +    ],
      +    "type": "object"
      +  }
      +]
    • removedInput schema / properties
      Removed value: -{
      -  "data": {
      -    "description": "Telemetry snapshot payload object or array of objects containing canonical state values. Example: [{\"block\":{\"height\":920000},\"observed_at\":\"2026-09-19T00:00:00.000Z\",\"thermodynamic\":{\"target_multiplier\":125.83}}].",
      -    "example": [
      -      {
      -        "block": {
      -          "height": 920000
      -        },
      -        "observed_at": "2026-09-19T00:00:00.000Z",
      -        "thermodynamic": {
      -          "target_multiplier": 125.83
      -        }
      -      }
      -    ],
      -    "examples": [
      -      [
      -        {
      -          "block": {
      -            "height": 920000
      -          },
      -          "observed_at": "2026-09-19T00:00:00.000Z",
      -          "thermodynamic": {
      -            "target_multiplier": 125.83
      -          }
      -        }
      -      ]
      -    ],
      -    "type": [
      -      "object",
      -      "array"
      -    ]
      -  },
      -  "proof": {
      -    "description": "Base64url-encoded Groth16/Poseidon BN254 proof string without padding. Constraints: minLength: 1. Example: \"eyJwaV9hIjpbIjEyMyIsIjQ1NiIsIjEiXX0\".",
      -    "example": "eyJwaV9hIjpbIjEyMyIsIjQ1NiIsIjEiXX0",
      -    "examples": [
      -      "eyJwaV9hIjpbIjEyMyIsIjQ1NiIsIjEiXX0"
      -    ],
      -    "minLength": 1,
      -    "type": "string"
      -  },
      -  "publicInputs": {
      -    "additionalProperties": false,
      -    "description": "Expected public constants committed by the proof; fields must match the corresponding telemetry payload in data: non-negative blockHeight, non-empty snapshotDigest and thermodynamicHash, non-negative Unix-millisecond timestamp, and non-negative valuationSat. Example: blockHeight 920000 and valuationSat 12583.",
      -    "examples": [
      -      {
      -        "blockHeight": 920000,
      -        "snapshotDigest": "1534979302823651498736582947365829473658294736582947365829473658294",
      -        "thermodynamicHash": "782365829473658294736582947365829473658294736582947365829473658294",
      -        "timestamp": 1789776000000,
      -        "valuationSat": 12583
      -      }
      -    ],
      -    "properties": {
      -      "blockHeight": {
      -        "description": "Bitcoin block height committed into the proof. Constraints: minimum: 0. Example: 920000.",
      -        "example": 920000,
      -        "examples": [
      -          920000
      -        ],
      -        "minimum": 0,
      -        "type": "integer"
      -      },
      -      "snapshotDigest": {
      -        "description": "Poseidon field digest of the canonical snapshot payload. Constraints: minLength: 1. Example: \"1534979302823651498736582947365829473658294736582947365829473658294\".",
      -        "example": "1534979302823651498736582947365829473658294736582947365829473658294",
      -        "examples": [
      -          "1534979302823651498736582947365829473658294736582947365829473658294"
      -        ],
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "thermodynamicHash": {
      -        "description": "Poseidon field hash of the thermodynamic telemetry values. Constraints: minLength: 1. Example: \"782365829473658294736582947365829473658294736582947365829473658294\".",
      -        "example": "782365829473658294736582947365829473658294736582947365829473658294",
      -        "examples": [
      -          "782365829473658294736582947365829473658294736582947365829473658294"
      -        ],
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "timestamp": {
      -        "description": "Unix timestamp in milliseconds committed into the proof. Constraints: minimum: 0. Example: 1789776000000.",
      -        "example": 1789776000000,
      -        "examples": [
      -          1789776000000
      -        ],
      -        "minimum": 0,
      -        "type": "integer"
      -      },
      -      "valuationSat": {
      -        "description": "Satoshi valuation committed into the proof. Constraints: minimum: 0. Example: 12583.",
      -        "example": 12583,
      -        "examples": [
      -          12583
      -        ],
      -        "minimum": 0,
      -        "type": "integer"
      -      }
      -    },
      -    "required": [
      -      "blockHeight",
      -      "snapshotDigest",
      -      "thermodynamicHash",
      -      "timestamp",
      -      "valuationSat"
      -    ],
      -    "type": "object"
      -  },
      -  "verificationKeyId": {
      -    "description": "SHA-256 verification-key identifier string formatted with 'sha256:' prefix. Constraints: minLength: 1. Example: \"sha256:4c095e183ea45a9d\".",
      -    "example": "sha256:4c095e183ea45a9d",
      -    "examples": [
      -      "sha256:4c095e183ea45a9d"
      -    ],
      -    "minLength": 1,
      -    "type": "string"
      -  }
      -}
    • removedInput schema / required
      Removed value: -[
      -  "proof",
      -  "publicInputs",
      -  "verificationKeyId",
      -  "data"
      -]
  3. Changed4 schema fields changed
    • changedOutput schema / examples
      Previous value: -[
      -  {
      -    "computationTimeMs": 3.284,
      -    "error": "Verification key identifier does not match the proof.",
      -    "valid": true,
      -    "verifiedAt": "2026-09-19T01:41:36.458Z"
      -  }
      -]New value: +[
      +  {
      +    "computationTimeMs": 3.284,
      +    "valid": true,
      +    "verifiedAt": "2026-09-19T01:41:36.458Z"
      +  }
      +]
    • removedOutput schema / properties / error
      Removed value: -{
      -  "description": "Human-readable verification error message when verification cannot validate the proof. Example: 'Verification key identifier does not match the proof.'. Example: \"Verification key identifier does not match the proof.\".",
      -  "example": "Verification key identifier does not match the proof.",
      -  "examples": [
      -    "Verification key identifier does not match the proof."
      -  ],
      -  "type": "string"
      -}
    • changedOutput schema / properties / verifiedAt / description
      Previous value: -"ISO 8601 UTC date string format. Example: \"2026-09-19T01:41:36.458Z\"."New value: +"ISO 8601 UTC time when this verification finished. Constraints: format: date-time. Example: \"2026-09-19T01:41:36.458Z\"."
    • addedOutput schema / properties / verifiedAt / format
      Added value: +"date-time"
  4. Changed1 schema field changed
    • changedInput schema / properties / publicInputs / description
      Previous value: -"Object containing five typed public statement inputs committed by the proof: non-negative blockHeight, non-empty snapshotDigest and thermodynamicHash, non-negative Unix-millisecond timestamp, and non-negative valuationSat. Example: blockHeight 920000 and valuationSat 12583."New value: +"Expected public constants committed by the proof; fields must match the corresponding telemetry payload in data: non-negative blockHeight, non-empty snapshotDigest and thermodynamicHash, non-negative Unix-millisecond timestamp, and non-negative valuationSat. Example: blockHeight 920000 and valuationSat 12583."
  5. Changed26 schema fields changed
    • removedInput schema / properties / data / default
      Removed value: -[
      -  {
      -    "block": {
      -      "height": 920000
      -    },
      -    "observed_at": "2026-09-19T00:00:00.000Z",
      -    "thermodynamic": {
      -      "target_multiplier": 125.83
      -    }
      -  }
      -]
    • changedInput schema / properties / data / description
      Previous value: -"Telemetry snapshot payload object or array of objects containing canonical state values."New value: +"Telemetry snapshot payload object or array of objects containing canonical state values. Example: [{\"block\":{\"height\":920000},\"observed_at\":\"2026-09-19T00:00:00.000Z\",\"thermodynamic\":{\"target_multiplier\":125.83}}]."
    • removedInput schema / properties / proof / default
      Removed value: -"eyJwaV9hIjpbIjEyMyIsIjQ1NiIsIjEiXX0"
    • changedInput schema / properties / proof / description
      Previous value: -"Base64url-encoded Groth16/Poseidon BN254 proof string without padding."New value: +"Base64url-encoded Groth16/Poseidon BN254 proof string without padding. Constraints: minLength: 1. Example: \"eyJwaV9hIjpbIjEyMyIsIjQ1NiIsIjEiXX0\"."
    • removedInput schema / properties / publicInputs / default
      Removed value: -{
      -  "blockHeight": 920000,
      -  "snapshotDigest": "1534979302823651498736582947365829473658294736582947365829473658294",
      -  "thermodynamicHash": "782365829473658294736582947365829473658294736582947365829473658294",
      -  "timestamp": 1789776000000,
      -  "valuationSat": 12583
      -}
    • changedInput schema / properties / publicInputs / description
      Previous value: -"Object containing five typed public statement inputs committed by the proof."New value: +"Object containing five typed public statement inputs committed by the proof: non-negative blockHeight, non-empty snapshotDigest and thermodynamicHash, non-negative Unix-millisecond timestamp, and non-negative valuationSat. Example: blockHeight 920000 and valuationSat 12583."
    • removedInput schema / properties / publicInputs / properties / blockHeight / default
      Removed value: -920000
    • changedInput schema / properties / publicInputs / properties / blockHeight / description
      Previous value: -"Bitcoin block height committed into the proof."New value: +"Bitcoin block height committed into the proof. Constraints: minimum: 0. Example: 920000."
    • removedInput schema / properties / publicInputs / properties / snapshotDigest / default
      Removed value: -"1534979302823651498736582947365829473658294736582947365829473658294"
    • changedInput schema / properties / publicInputs / properties / snapshotDigest / description
      Previous value: -"Poseidon field digest of the canonical snapshot payload."New value: +"Poseidon field digest of the canonical snapshot payload. Constraints: minLength: 1. Example: \"1534979302823651498736582947365829473658294736582947365829473658294\"."
    • removedInput schema / properties / publicInputs / properties / thermodynamicHash / default
      Removed value: -"782365829473658294736582947365829473658294736582947365829473658294"
    • changedInput schema / properties / publicInputs / properties / thermodynamicHash / description
      Previous value: -"Poseidon field hash of the thermodynamic telemetry values."New value: +"Poseidon field hash of the thermodynamic telemetry values. Constraints: minLength: 1. Example: \"782365829473658294736582947365829473658294736582947365829473658294\"."
    • removedInput schema / properties / publicInputs / properties / timestamp / default
      Removed value: -1789776000000
    • changedInput schema / properties / publicInputs / properties / timestamp / description
      Previous value: -"Unix timestamp in milliseconds committed into the proof."New value: +"Unix timestamp in milliseconds committed into the proof. Constraints: minimum: 0. Example: 1789776000000."
    • removedInput schema / properties / publicInputs / properties / valuationSat / default
      Removed value: -12583
    • changedInput schema / properties / publicInputs / properties / valuationSat / description
      Previous value: -"Satoshi valuation committed into the proof."New value: +"Satoshi valuation committed into the proof. Constraints: minimum: 0. Example: 12583."
    • removedInput schema / properties / verificationKeyId / default
      Removed value: -"sha256:4c095e183ea45a9d"
    • changedInput schema / properties / verificationKeyId / description
      Previous value: -"SHA-256 verification-key identifier string formatted with 'sha256:' prefix."New value: +"SHA-256 verification-key identifier string formatted with 'sha256:' prefix. Constraints: minLength: 1. Example: \"sha256:4c095e183ea45a9d\"."
    • removedOutput schema / properties / computationTimeMs / default
      Removed value: -3.284
    • changedOutput schema / properties / computationTimeMs / description
      Previous value: -"Server-side proof verification duration in milliseconds."New value: +"Server-side proof verification duration in milliseconds. Constraints: minimum: 0. Example: 3.284."
    • removedOutput schema / properties / error / default
      Removed value: -"Verification key identifier does not match the proof."
    • changedOutput schema / properties / error / description
      Previous value: -"Human-readable verification error message when verification cannot validate the proof. Example: 'Verification key identifier does not match the proof.'."New value: +"Human-readable verification error message when verification cannot validate the proof. Example: 'Verification key identifier does not match the proof.'. Example: \"Verification key identifier does not match the proof.\"."
    • removedOutput schema / properties / valid / default
      Removed value: -true
    • changedOutput schema / properties / valid / description
      Previous value: -"Whether the proof is valid and bound to the snapshot."New value: +"Whether the proof is valid and bound to the snapshot. Example: true."
    • removedOutput schema / properties / verifiedAt / default
      Removed value: -"2026-09-19T01:41:36.458Z"
    • changedOutput schema / properties / verifiedAt / description
      Previous value: -"ISO 8601 UTC date string format."New value: +"ISO 8601 UTC date string format. Example: \"2026-09-19T01:41:36.458Z\"."
  6. Changed3 schema fields changed
    • changedInput schema / description
      Previous value: -"Input arguments containing Groth16 proof coordinates and public signals for stateless elliptic curve verification."New value: +"Input arguments containing an encoded Groth16 proof, typed public inputs, a verification-key identifier, and telemetry data."
    • changedInput schema / properties / data / description
      Previous value: -"Telemetry snapshot payload object containing canonical state values."New value: +"Telemetry snapshot payload object or array of objects containing canonical state values."
    • changedOutput schema / properties / error / description
      Previous value: -"Optional human-readable verification error message string when verification cannot validate the proof. Example: 'Verification key identifier does not match the proof.'."New value: +"Human-readable verification error message when verification cannot validate the proof. Example: 'Verification key identifier does not match the proof.'."
  7. Changed4 schema fields changed
    • changedInput schema / properties / data / description
      Previous value: -"Telemetry snapshot payload whose canonical digest and semantic fields must match the proof."New value: +"Telemetry snapshot payload object containing canonical state values."
    • changedInput schema / properties / proof / description
      Previous value: -"Base64url-encoded Groth16/Poseidon BN254 proof emitted by this API, without padding."New value: +"Base64url-encoded Groth16/Poseidon BN254 proof string without padding."
    • changedInput schema / properties / publicInputs / description
      Previous value: -"Required object containing exactly five typed public statement inputs committed by the Groth16/Poseidon proof."New value: +"Object containing five typed public statement inputs committed by the proof."
    • changedInput schema / properties / verificationKeyId / description
      Previous value: -"SHA-256 verification-key identifier using the sha256: prefix."New value: +"SHA-256 verification-key identifier string formatted with 'sha256:' prefix."
  8. Changed1 schema field changed
    • changedOutput schema / properties / verifiedAt / description
      Previous value: -"ISO 8601 timestamp recording when verification completed."New value: +"ISO 8601 UTC date string format."
  9. Changed8 schema fields changed
    • changedInput schema / properties / data / description
      Previous value: -"Required telemetry snapshot object or array of objects whose canonical digest and semantic fields must match the proof. Example: [{'block':{'height':920000},'observed_at':'2026-09-19T00:00:00.000Z','thermodynamic':{'target_multiplier':125.83}}]."New value: +"Telemetry snapshot payload whose canonical digest and semantic fields must match the proof."
    • changedInput schema / properties / proof / description
      Previous value: -"Required base64url-encoded Groth16/Poseidon BN254 proof string emitted by this API, without padding. Example: 'eyJwaV9hIjpbIjEyMyIsIjQ1NiIsIjEiXX0'."New value: +"Base64url-encoded Groth16/Poseidon BN254 proof emitted by this API, without padding."
    • changedInput schema / properties / publicInputs / properties / blockHeight / description
      Previous value: -"Non-negative integer Bitcoin block height committed into the proof. Minimum 0. Example: 920000."New value: +"Bitcoin block height committed into the proof."
    • changedInput schema / properties / publicInputs / properties / snapshotDigest / description
      Previous value: -"Required decimal string Poseidon field digest of the canonical snapshot payload. Example: '1534979302823651498736582947365829473658294736582947365829473658294'."New value: +"Poseidon field digest of the canonical snapshot payload."
    • changedInput schema / properties / publicInputs / properties / thermodynamicHash / description
      Previous value: -"Required decimal string Poseidon field hash of the thermodynamic telemetry values. Example: '782365829473658294736582947365829473658294736582947365829473658294'."New value: +"Poseidon field hash of the thermodynamic telemetry values."
    • changedInput schema / properties / publicInputs / properties / timestamp / description
      Previous value: -"Non-negative integer Unix timestamp in milliseconds committed into the proof. Minimum 0. Example: 1789776000000."New value: +"Unix timestamp in milliseconds committed into the proof."
    • changedInput schema / properties / publicInputs / properties / valuationSat / description
      Previous value: -"Non-negative integer satoshi valuation committed into the proof. Minimum 0. Example: 12583."New value: +"Satoshi valuation committed into the proof."
    • changedInput schema / properties / verificationKeyId / description
      Previous value: -"Required SHA-256 verification-key identifier string using the 'sha256:' prefix. Example: 'sha256:4c095e183ea45a9d'."New value: +"SHA-256 verification-key identifier using the sha256: prefix."
  10. Changed13 schema fields changed
    • addedInput schema / properties / data / default
      Added value: +[
      +  {
      +    "block": {
      +      "height": 920000
      +    },
      +    "observed_at": "2026-09-19T00:00:00.000Z",
      +    "thermodynamic": {
      +      "target_multiplier": 125.83
      +    }
      +  }
      +]
    • addedInput schema / properties / proof / default
      Added value: +"eyJwaV9hIjpbIjEyMyIsIjQ1NiIsIjEiXX0"
    • addedInput schema / properties / publicInputs / default
      Added value: +{
      +  "blockHeight": 920000,
      +  "snapshotDigest": "1534979302823651498736582947365829473658294736582947365829473658294",
      +  "thermodynamicHash": "782365829473658294736582947365829473658294736582947365829473658294",
      +  "timestamp": 1789776000000,
      +  "valuationSat": 12583
      +}
    • addedInput schema / properties / publicInputs / properties / blockHeight / default
      Added value: +920000
    • addedInput schema / properties / publicInputs / properties / snapshotDigest / default
      Added value: +"1534979302823651498736582947365829473658294736582947365829473658294"
    • addedInput schema / properties / publicInputs / properties / thermodynamicHash / default
      Added value: +"782365829473658294736582947365829473658294736582947365829473658294"
    • addedInput schema / properties / publicInputs / properties / timestamp / default
      Added value: +1789776000000
    • addedInput schema / properties / publicInputs / properties / valuationSat / default
      Added value: +12583
    • addedInput schema / properties / verificationKeyId / default
      Added value: +"sha256:4c095e183ea45a9d"
    • addedOutput schema / properties / computationTimeMs / default
      Added value: +3.284
    • addedOutput schema / properties / error / default
      Added value: +"Verification key identifier does not match the proof."
    • addedOutput schema / properties / valid / default
      Added value: +true
    • addedOutput schema / properties / verifiedAt / default
      Added value: +"2026-09-19T01:41:36.458Z"
  11. Changed4 schema fields changed
    • addedInput schema / properties / proof / minLength
      Added value: +1
    • addedInput schema / properties / publicInputs / properties / snapshotDigest / minLength
      Added value: +1
    • addedInput schema / properties / publicInputs / properties / thermodynamicHash / minLength
      Added value: +1
    • addedInput schema / properties / verificationKeyId / minLength
      Added value: +1
  12. Added

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=false, idempotentHint=false and openWorldHint=true, and the description corroborates the write-ish behavior by disclosing that verification 'can update a bounded in-memory lifecycle index' — a concrete side effect beyond the annotation flags. It also flags the external dependency that 'drift checks require a Bitcoin block provider'. It stops short of describing failure modes or the verification response shape, but deploys well against the annotation baseline.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences: verification scope first, behavioral caveats and prerequisites second, sibling routing third. Front-loaded, no repetition of schema field names, and every clause carries information the structured fields do not.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given three mutually exclusive input shapes, an output schema, and rich annotations, the description supplies the mode overview, the side effect, the external dependency, and sibling disambiguation. Missing only a hint about what the returned validity result looks like or how the lifecycle index affects subsequent calls, but the output schema covers returns.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 100% description coverage across all oneOf branches, so the structured fields already document each proof path. The description still adds routing value by calling out the Groth16 telemetry, drift, and OTS modes and the block-provider requirement for drift checks. With no top-level parameters, the baseline is high and the description neither harms nor substantially extends it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Execute cryptographic verification') and enumerates the three supported artifact types: Groth16 telemetry proofs, drift zk-SNARK proofs, and OpenTimestamps receipts. It also names the sibling tools that do the adjacent jobs (proof.submit, proof.get_by_hash), so the agent can distinguish it without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to use this tool ('verify supplied proofs') and names two alternatives with the condition that selects each: proof.submit for registering new Groth16 proofs, proof.get_by_hash for retrieving retained proofs or signed receipts by known identifier. Nothing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources