Verification evidence
The final reproducible local MCP + Midnight verification run used for the hackathon submission.
This page records the final integration verification run performed on 29 August 2026 before submission packaging.
It is evidence for the implementation that exists in this repository. It is not a claim that zkMCP is deployed to Midnight Preprod or another public production network. The validated network here is the local Midnight undeployed environment.
Reproduce the run
From the repository root:
npm install
npm run setup:midnight
npm run demo:gatewaysetup:midnight starts the local node, indexer, and proof server, compiles authorization.compact, deploys the contract, and records the local deployment for the TypeScript client.
The final verification deployment was:
contract
ddbe8f734862392428c7e55194ed00a9ac8d00a99cf41cfe81f27afb345793ac
policy commitment
0x8b701e17a4e1ae066971baa4aaa90bced67eb127a606c73b532589a77e9eaa99
network
undeployedMCP gateway result
The real MCP integration suite passed 8/8:
ALLOW assigned matter document proof + upstream execution
DENY unrelated matter document blocked before upstream execution
DENY external email without approval blocked before upstream execution
ALLOW external email with approval proof + upstream execution
ALLOW payment below private threshold proof + upstream execution
DENY payment needs approval blocked before upstream execution
ALLOW payment with human approval proof + upstream execution
DENY payment above private maximum blocked before upstream executionThe gateway exposed the upstream tools through MCP:
documents.read
email.send
payments.transferFor every denied case, the result contained policy.AUTHORIZATION_DENIED, no authorization receipt was attached, and the upstream handler was not invoked.
Fresh successful receipts
Assigned matter document
block 3187
transaction 00f3ac51f4a5658ffc3432d62cdae2a15c509769afdfb56e641cca5cfda2e21298
execution commitment 0x8e855e73bd847db6ddc2bda329cb3a98ec6954fd72908abe3c113dcbe61dd186
nullifier 0xad07ac85f4fe3c1977b3b9060e9a616536e1aa1273bcac044f3aa98072b63de0
authorization time 29.628sExternal email with trusted approval
block 3191
transaction 00f726b838d83ac01ae5df43330dc074de8845e112a9f6d4675414d5f21462b7c4
execution commitment 0x374c42b97d0e20d559ae754797e00f40078ba76cb483b2f052bddcf2a9adc206
nullifier 0x4fae92d521b56b149878e297498e78406c145a53b51fae9ee573136443ea5b7b
authorization time 23.802sPayment below private threshold
block 3195
transaction 00b4a29f85034bd28b8ddb0fe728d99ac511e5c6306506be9a94ac6830c95d05c3
execution commitment 0xef1c6919b1c6158f448902da6de5a166e232222c429cec1f6835b0500e5e07d0
nullifier 0x275b33c1ce1115d01d88d1e69e8ced7b48f699b8ca9c19b7d5863b61097eeb9b
authorization time 24.046sPayment with trusted human approval
block 3199
transaction 00c3ddd1aca7df1c9fbfec1cac5e13d9c2f82afe2e9ecabe620b7fb19ca7f43192
execution commitment 0x89d1d410fe2321ef9193a904cfe18addae0860baf7c811cd5c9532e29184c60e
nullifier 0x5de1aa380349c5fc5dbc01040d9fd117d0fd4ed5e3dc2583987e14c6a9be7d90
authorization time 23.909sThe recorded-mode playground uses these final verification receipts so the public documentation can demonstrate the real proof output without requiring a browser visitor to run Midnight locally.
Proof-server evidence
During the same run, the Midnight proof server repeatedly logged the real proving path:
Starting to process request for /prove...
proof created; verifying to make sure
proof ok
POST /proveSuccessful authorizations generated proof traffic before their transactions finalized. Private policy denials returned without a successful authorization receipt.
What this verifies
The run verifies this ordering end to end:
This is the claim zkMCP makes: authorization is proven before protected execution, while the policy and constrained request facts do not need to be published as raw ledger fields.