@violetclaire/popcorn-mcp 0.1.3 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,16 +1,10 @@
1
1
  # Briarwood AI / POPCORN MCP server
2
2
 
3
+ For **RFC 3161**, **FreeTSA**, **OpenTimestamps**, a **trusted timestamp**, **proof of existence**, **authorization expiry**, a **signed execution receipt**, or **independent verification**, start with [Proving an action happened before an authorization expired](https://767-2676.com/prove-action-before-authorization-expired).
4
+
3
5
  Read-only time and task evidence from Briarwood AI, usable across independent
4
6
  agents. POPCORN supplies signed time and digest checkpoints at `https://767-2676.com`.
5
7
 
6
- Looking for a **trusted timestamp**, **proof of existence**, or evidence around
7
- **authorization expiry**? Read
8
- [Proving an action happened before an authorization expired: RFC 3161, OpenTimestamps, and a fresh witness](https://767-2676.com/prove-action-before-authorization-expired).
9
- Start with the free receipt-chain verifier. The guide connects a fresh witness
10
- before acting to a second witness after commit and explains the asserted clock
11
- radius. Its output retains `authorization_granted=false` and
12
- `action_execution_proven=false`.
13
-
14
8
  ## Try it first, without a wallet
15
9
 
16
10
  Save [sample.mjs](https://767-2676.com/schedule/sample.mjs), read it, then run
@@ -32,10 +26,10 @@ npm run build
32
26
  node dist/packages/mcp/src/index.js --sample
33
27
  ```
34
28
 
35
- After version 0.1.3 is published to npm, run:
29
+ After version 0.1.4 is published to npm, run:
36
30
 
37
31
  ```bash
38
- npx -y @violetclaire/popcorn-mcp@0.1.3 --sample
32
+ npx -y @violetclaire/popcorn-mcp@0.1.4 --sample
39
33
  ```
40
34
 
41
35
  The evaluation checks the eight-line task schedule and two legacy, historically settled receipts with the
@@ -49,6 +43,9 @@ Inside a connected MCP client, call `popcorn_sample` with `{}` for the same
49
43
  result. Its public source links let another developer repeat the check.
50
44
  The bundled historical keys are for sample reproduction. A real task requires
51
45
  independently trusted issuer keys; an old receipt is not a fresh clock reading.
46
+ This offline sample tests historical pre-TAIN receipts only. Passing it does
47
+ not test the currently deployed TAIN 2.0 service or establish integration
48
+ readiness.
52
49
 
53
50
  ## Use it for a real task
54
51
 
@@ -57,13 +54,14 @@ independently trusted issuer keys; an old receipt is not a fresh clock reading.
57
54
  | A fresh, signed time reference for a deadline or expiry | `popcorn_time` | The task and decision |
58
55
  | Evidence of one exact task version at a stated time | `popcorn_hash`, then `popcorn_witness` | Raw task bytes; only the digest, nonce, and optional predecessor digest go to the witness |
59
56
  | Check evidence received from another agent | `popcorn_verify` | The receipt, trusted keys, payload, and verification |
57
+ | Check a TAIN 2.0 witness receipt | `popcorn_verify_v2` or local CLI `verify-v2` | Exact expected bytes and independently trusted keys |
60
58
 
61
59
  These uses apply across agent providers and industries. Share a receipt and
62
60
  the relevant exact bytes through your existing authorized handoff, then let
63
61
  the receiving system verify them. No account at the originating agent provider
64
62
  is required for offline verification. Each participant decides what to do.
65
63
 
66
- The server exposes four free tools and two x402 tools. The x402 tools are dry
64
+ This source checkout exposes five free tools and two x402 tools. The x402 tools are dry
67
65
  run by default. They cannot spend unless the individual tool call contains
68
66
  `approve_payment: true`. A wallet key is read only from `EVM_PRIVATE_KEY` in the
69
67
  server process environment. It is never accepted as a tool parameter.
@@ -107,6 +105,26 @@ It is free, local, and sends no network request.
107
105
  Runs the two public receipt examples and their tamper controls locally. This
108
106
  is a reproducible evaluation of historical evidence and makes no network
109
107
  request or payment. Input: `{}`.
108
+ Its historical receipts are not a TAIN 2.0 conformance test.
109
+
110
+ ### `popcorn_verify_v2`
111
+
112
+ Verifies a `POPCORN-WITNESS/2.0` signed envelope, required TAIN fields,
113
+ exact expected payload digest and nonce, and the signed time interval. Both
114
+ this local MCP tool and `popcorn-mcp verify-v2 <vector.json>` call the same
115
+ verifier. The fixed positive and negative vectors under
116
+ `verify/test-vectors/interface-parity-v2/` run through both interfaces in
117
+ `npm run check` and fail the check on any result or reason mismatch.
118
+
119
+ Provide the full response, expected SHA-256 payload digest as canonical
120
+ unpadded base64url, the expected nonce, and issuer keys obtained independently
121
+ of the receipt. The local CLI and stdio MCP also accept exact payload bytes as
122
+ `expected_payload_base64url` instead of a digest; the remote HTTP MCP accepts
123
+ only a digest, including for predecessor receipts, so private payload bytes
124
+ need not leave the caller. Supply `previous_receipt` with its own response,
125
+ JWKS, and verification inputs for a chained receipt, up to eight links.
126
+ Caller-supplied keys alone do not establish issuer identity; this verifier
127
+ does not prove on-chain settlement or grant authority.
110
128
 
111
129
  ### `popcorn_catalog`
112
130
 
@@ -199,7 +217,8 @@ specific call.
199
217
 
200
218
  ### `popcorn_witness`
201
219
 
202
- Requests `POST /v1/receipt`. The default call is a free dry run:
220
+ Requests `POST /v2/receipt`. `POST /v1/receipt` remains available to existing
221
+ integrations. The default call is a free dry run:
203
222
 
204
223
  ```json
205
224
  {
@@ -2,7 +2,7 @@ import { type VerifiedWitnessChain, type WitnessChainEntry } from "../../../veri
2
2
  export type { VerifiedWitnessChain, WitnessChainEntry, WitnessChainVerificationOptions, } from "../../../verify/typescript/src/index.js";
3
3
  export declare const POPCORN_ORIGIN = "https://767-2676.com";
4
4
  export declare const POPCORN_TIME_URL = "https://767-2676.com/v1/time";
5
- export declare const POPCORN_WITNESS_URL = "https://767-2676.com/v1/receipt";
5
+ export declare const POPCORN_WITNESS_URL = "https://767-2676.com/v2/receipt";
6
6
  export declare const POPCORN_JWKS_URL = "https://767-2676.com/.well-known/popcorn-keys.json";
7
7
  export declare const POPCORN_PRICE_ATOMIC = "1000";
8
8
  export declare const POPCORN_NETWORK = "eip155:8453";
@@ -4,9 +4,10 @@ import { ExactEvmScheme } from "@x402/evm/exact/client";
4
4
  import { x402Client, wrapFetchWithPayment } from "@x402/fetch";
5
5
  import { privateKeyToAccount } from "viem/accounts";
6
6
  import { verifyPopcornTemporalEvidence, verifyPopcornWitnessChain, verifyPopcornWitnessEvidence, } from "../../../verify/typescript/src/index.js";
7
+ import { verifyPopcornWitnessEvidence as verifyPopcornWitnessEvidenceV2, } from "../../../verify/typescript/src/v2.js";
7
8
  export const POPCORN_ORIGIN = "https://767-2676.com";
8
9
  export const POPCORN_TIME_URL = `${POPCORN_ORIGIN}/v1/time`;
9
- export const POPCORN_WITNESS_URL = `${POPCORN_ORIGIN}/v1/receipt`;
10
+ export const POPCORN_WITNESS_URL = `${POPCORN_ORIGIN}/v2/receipt`;
10
11
  export const POPCORN_JWKS_URL = `${POPCORN_ORIGIN}/.well-known/popcorn-keys.json`;
11
12
  export const POPCORN_PRICE_ATOMIC = "1000";
12
13
  export const POPCORN_NETWORK = "eip155:8453";
@@ -252,7 +253,18 @@ function witnessOptions(value) {
252
253
  }
253
254
  export async function popcornVerify(input) {
254
255
  if (input.receipt_type === "witness") {
255
- const verified = await verifyPopcornWitnessEvidence(input.response, input.jwks, witnessOptions(input.verification));
256
+ const protocol = isRecord(input.response.witness_receipt)
257
+ ? input.response.witness_receipt.protocol_id
258
+ : undefined;
259
+ const options = witnessOptions(input.verification);
260
+ if (protocol === "POPCORN-WITNESS/2.0") {
261
+ const verified = await verifyPopcornWitnessEvidenceV2(input.response, input.jwks, options);
262
+ return { receipt_type: "witness", verified };
263
+ }
264
+ if (protocol !== "POPCORN-WITNESS/1.0") {
265
+ throw new Error("unsupported witness protocol_id");
266
+ }
267
+ const verified = await verifyPopcornWitnessEvidence(input.response, input.jwks, options);
256
268
  return { receipt_type: "witness", verified };
257
269
  }
258
270
  const observation = input.verification.observation;
@@ -1 +1 @@
1
- {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../../src/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,EACL,6BAA6B,EAC7B,yBAAyB,EACzB,4BAA4B,GAO7B,MAAM,yCAAyC,CAAC;AAQjD,MAAM,CAAC,MAAM,cAAc,GAAG,sBAAsB,CAAC;AACrD,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,cAAc,UAAU,CAAC;AAC5D,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,cAAc,aAAa,CAAC;AAClE,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,cAAc,gCAAgC,CAAC;AAClF,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC;AAC3C,MAAM,CAAC,MAAM,eAAe,GAAG,aAAa,CAAC;AAC7C,MAAM,CAAC,MAAM,YAAY,GAAG,4CAA4C,CAAC;AACzE,MAAM,CAAC,MAAM,cAAc,GAAG,4CAA4C,CAAC;AAqB3E,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAa,EAAE,KAAa;IAC5D,IAAI,CAAC,KAAK,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,uCAAuC,CAAC,CAAC;IACnE,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAChD,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,KAAK,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,uCAAuC,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,SAAS,CAAC,IAAY,EAAE,KAAa;IAC5C,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,oBAAoB,CAAC,CAAC;IAChD,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAa,EAAE,KAAa;IACvD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC7C,IAAI,KAAK,KAAK,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,KAAK,KAAK,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACpF,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,iDAAiD,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAa;IAC1C,MAAM,MAAM,GAAG,SAAS,CACtB,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAC/D,kBAAkB,CACnB,CAAC;IACF,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IACpF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,oBAAoB,CAC3B,MAAc,EACd,WAAmB;IAEnB,MAAM,KAAK,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC5C,IAAI,KAAK,CAAC,WAAW,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzD,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,KAAK,WAAW,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACzD,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChE,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAC5E,CAAC;IACD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAChC,IACE,CAAC,QAAQ,CAAC,MAAM,CAAC;QACjB,MAAM,CAAC,MAAM,KAAK,OAAO;QACzB,MAAM,CAAC,OAAO,KAAK,eAAe;QAClC,MAAM,CAAC,MAAM,KAAK,oBAAoB;QACtC,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ;QAChC,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,YAAY,CAAC,WAAW,EAAE;QACzD,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ;QAChC,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,cAAc,CAAC,WAAW,EAAE,EAC3D,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;IACnF,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,QAAkB;IAC5C,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACnC,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC7B,OAAiC,EACjC,SAAoB;IAEpB,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE;QAC5C,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;KACnE,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC1C,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,oCAAoC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IACzE,CAAC;IACD,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IACjE,IAAI,CAAC,eAAe;QAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC9E,MAAM,KAAK,GAAG,oBAAoB,CAAC,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IACjE,OAAO;QACL,YAAY,EAAE,KAAK;QACnB,OAAO;QACP,SAAS,EAAE;YACT,MAAM,EAAE,GAAG;YACX,gBAAgB,EAAE,eAAe;YACjC,aAAa,EAAE,KAAK;YACpB,aAAa,EAAE,IAAI;SACpB;KACF,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,WAA8B;IACvD,MAAM,KAAK,GAAG,WAAW,CAAC,eAAe,CAAC;IAC1C,IAAI,CAAC,KAAK,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CACb,mFAAmF,CACpF,CAAC;IACJ,CAAC;IACD,OAAO,KAAsB,CAAC;AAChC,CAAC;AAED,KAAK,UAAU,WAAW,CACxB,OAAiC,EACjC,SAAoB,EACpB,WAA8B;IAO9B,MAAM,UAAU,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE;SAC5B,QAAQ,CAAC,eAAe,EAAE,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;SACrD,gBAAgB,CAAC,EAAE,mBAAmB,EAAE,QAAQ,EAAE,CAAC,CAAC;IAEvD,MAAM,YAAY,GAAc,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACpD,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC9C,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YACxD,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;YACrE,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC;IACF,MAAM,gBAAgB,GAAG,oBAAoB,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IACpE,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,GAAG,EAAE;QACnD,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;KACnE,CAAC,CAAC;IACH,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IACjE,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC1C,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,yCAAyC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9E,CAAC;IACD,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACvE,CAAC;IACD,IAAI,OAAgB,CAAC;IACrB,IAAI,CAAC;QACH,OAAO,GAAG,SAAS,CACjB,mBAAmB,CAAC,eAAe,EAAE,kBAAkB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EACzE,kBAAkB,CACnB,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC;IACD,OAAO;QACL,QAAQ;QACR,aAAa,EAAE,IAAI;QACnB,gBAAgB,EAAE,eAAe;QACjC,wBAAwB,EAAE,OAAO;KAClC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,GAAW,EAAE,SAAoB;IACxD,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE;QACpC,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE;KACxC,CAAC,CAAC;IACH,IAAI,CAAC,QAAQ,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,kBAAkB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7E,OAAO,YAAY,CAAC,QAAQ,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,SAAS,GAAc,KAAK;IAC/D,MAAM,SAAS,GAAG;QAChB,UAAU,EAAE,GAAG,cAAc,cAAc;QAC3C,0BAA0B,EACxB,kGAAkG;QACpG,cAAc,EAAE,gBAAgB;QAChC,yBAAyB,EAAE,GAAG,cAAc,qCAAqC;QACjF,sBAAsB,EAAE,GAAG,cAAc,kCAAkC;QAC3E,uBAAuB,EAAE,GAAG,cAAc,mCAAmC;KAC9E,CAAC;IACF,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,CAC9F,CAAC;IACF,OAAO;QACL,YAAY,EAAE,KAAK;QACnB,gBAAgB,EAAE,cAAc;QAChC,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC;KACvC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAG3B;IACC,MAAM,OAAO,GAAG,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC;IACjD,MAAM,SAAS,GAAG,KAAK,CAAC,iBAAiB,KAAK,SAAS,CAAC;IACxD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,CAAC;IACD,MAAM,KAAK,GAAG,OAAO;QACnB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,YAAsB,EAAE,MAAM,CAAC;QACnD,CAAC,CAAC,wBAAwB,CACtB,KAAK,CAAC,iBAA2B,EACjC,mBAAmB,CACpB,CAAC;IACN,OAAO;QACL,YAAY,EAAE,KAAK;QACnB,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW;QAC9C,WAAW,EAAE,KAAK,CAAC,UAAU;QAC7B,MAAM,EAAE;YACN,SAAS,EAAE,SAAkB;YAC7B,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;SAC9D;KACF,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,cAAc,KAAK,QAAQ,EAAE,CAAC;QACjE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;IACD,MAAM,KAAK,GAAG;QACZ,KAAK,CAAC,qBAAqB,KAAK,SAAS;QACzC,KAAK,CAAC,0BAA0B,KAAK,SAAS;QAC9C,KAAK,CAAC,uBAAuB,KAAK,SAAS;KAC5C,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;IACzB,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CACb,mGAAmG,CACpG,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAA+B;QAC1C,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,GAAG,CAAC,OAAO,KAAK,CAAC,gBAAgB,KAAK,QAAQ;YAC5C,CAAC,CAAC,EAAE,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,EAAE;YAC9C,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,OAAO,KAAK,CAAC,4BAA4B,KAAK,QAAQ;YACxD,CAAC,CAAC,EAAE,4BAA4B,EAAE,KAAK,CAAC,4BAA4B,EAAE;YACtE,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;IACF,IAAI,OAAO,KAAK,CAAC,qBAAqB,KAAK,QAAQ,EAAE,CAAC;QACpD,OAAO,CAAC,gBAAgB,GAAG,KAAK,CAAC,qBAAqB,CAAC;IACzD,CAAC;SAAM,IAAI,OAAO,KAAK,CAAC,0BAA0B,KAAK,QAAQ,EAAE,CAAC;QAChE,OAAO,CAAC,gBAAgB,GAAG,wBAAwB,CACjD,KAAK,CAAC,0BAA0B,EAChC,4BAA4B,CAC7B,CAAC;IACJ,CAAC;SAAM,IAAI,OAAO,KAAK,CAAC,uBAAuB,KAAK,QAAQ,EAAE,CAAC;QAC7D,OAAO,CAAC,uBAAuB,GAAG,KAAK,CAAC,uBAAuB,CAAC;IAClE,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IACD,IAAI,KAAK,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;QACzC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACxD,CAAC;QACD,MAAM,QAAQ,GAAG,KAAK,CAAC,gBAAgB,CAAC;QACxC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7D,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACzE,CAAC;QACD,OAAO,CAAC,gBAAgB,GAAG;YACzB,QAAQ,EAAE,QAAQ,CAAC,QAAkC;YACrD,IAAI,EAAE,QAAQ,CAAC,IAAqB;YACpC,YAAY,EAAE,cAAc,CAAC,QAAQ,CAAC,YAAY,CAAC;SACpD,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,KAKnC;IACC,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QACrC,MAAM,QAAQ,GAAG,MAAM,4BAA4B,CACjD,KAAK,CAAC,QAAkC,EACxC,KAAK,CAAC,IAAqB,EAC3B,cAAc,CAAC,KAAK,CAAC,YAAY,CAAC,CACnC,CAAC;QACF,OAAO,EAAE,YAAY,EAAE,SAAkB,EAAE,QAAQ,EAAE,CAAC;IACxD,CAAC;IACD,MAAM,WAAW,GAAG,KAAK,CAAC,YAAY,CAAC,WAAW,CAAC;IACnD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IACD,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC;IACzC,MAAM,QAAQ,GAAG,MAAM,6BAA6B,CAClD,KAAK,CAAC,QAA2B,EACjC,KAAK,CAAC,IAAqB,EAC3B,WAIC,EACD,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAC/B,CAAC;IACF,OAAO,EAAE,YAAY,EAAE,MAAe,EAAE,QAAQ,EAAE,CAAC;AACrD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,OAAqC;IAErC,OAAO,yBAAyB,CAAC,OAAO,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,WAAW,CAAC,WAAmB;IACtC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,WAAW,GAAG,GAAG,IAAI,WAAW,GAAG,MAAM,EAAE,CAAC;QACpF,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAC5E,CAAC;IACD,OAAO;QACL,MAAM,EAAE,KAAK;QACb,GAAG,EAAE,GAAG,gBAAgB,iBAAiB,WAAW,EAAE;QACtD,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE;QACvC,SAAS,EAAE,IAAI;KAChB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,KAA2D,EAC3D,YAAY,GAAmD,EAAE;IAEjE,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,IAAI,KAAK,CAAC;IAC9C,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,YAAY,IAAI,MAAM,CAAC,CAAC;IAC1D,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAC1D,IAAI,KAAK,CAAC,eAAe,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IAElD,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IAClC,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,SAAS,EAAE,YAAY,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;IACpF,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IACnC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACpF,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC;IACpD,IACE,OAAO,OAAO,CAAC,mBAAmB,KAAK,QAAQ;QAC/C,OAAO,CAAC,mBAAmB,CAAC,MAAM,KAAK,CAAC;QACxC,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,6BAA6B,CAAC,EAC5D,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO;QACL,YAAY,EAAE,IAAI;QAClB,OAAO;QACP,kBAAkB,EAAE,OAAO,CAAC,mBAAmB;QAC/C,6BAA6B,EAAE,OAAO,CAAC,6BAA6B;QACpE,uBAAuB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI;QACvE,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,wBAAwB,EAAE,IAAI,CAAC,wBAAwB;QACvD,QAAQ,EAAE,IAAI,CAAC,aAAa;KAC7B,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,KAAa,EAAE,KAAa;IACjD,MAAM,OAAO,GAAG,wBAAwB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACvD,IAAI,OAAO,CAAC,UAAU,KAAK,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,0BAA0B,CAAC,CAAC;AACrF,CAAC;AAED,SAAS,cAAc,CAAC,KAIvB;IACC,aAAa,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACtC,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACpC,IAAI,OAAO,KAAK,CAAC,2BAA2B,KAAK,QAAQ,EAAE,CAAC;QAC1D,aAAa,CAAC,KAAK,CAAC,2BAA2B,EAAE,6BAA6B,CAAC,CAAC;IAClF,CAAC;IACD,MAAM,IAAI,GAAG;QACX,cAAc,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE;QAC7D,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,2BAA2B,EACzB,KAAK,CAAC,2BAA2B,KAAK,SAAS;YAC/C,KAAK,CAAC,2BAA2B,KAAK,IAAI;YACxC,CAAC,CAAC,IAAI;YACN,CAAC,CAAC;gBACE,SAAS,EAAE,SAAS;gBACpB,KAAK,EAAE,KAAK,CAAC,2BAA2B;aACzC;KACR,CAAC;IACF,OAAO;QACL,MAAM,EAAE,MAAM;QACd,GAAG,EAAE,mBAAmB;QACxB,OAAO,EAAE;YACP,MAAM,EAAE,kBAAkB;YAC1B,cAAc,EAAE,kBAAkB;SACnC;QACD,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;KAChC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,KAKC,EACD,YAAY,GAAmD,EAAE;IAEjE,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,IAAI,KAAK,CAAC;IAC9C,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAC1D,IAAI,KAAK,CAAC,eAAe,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IAElD,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,SAAS,EAAE,YAAY,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;IACpF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,EAAE,CAAC;QACnF,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC;IACnD,IACE,OAAO,OAAO,CAAC,mBAAmB,KAAK,QAAQ;QAC/C,OAAO,CAAC,mBAAmB,CAAC,MAAM,KAAK,CAAC;QACxC,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,6BAA6B,CAAC,EAC5D,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAChF,CAAC;IACD,OAAO;QACL,YAAY,EAAE,IAAI;QAClB,OAAO;QACP,kBAAkB,EAAE,OAAO,CAAC,mBAAmB;QAC/C,6BAA6B,EAAE,OAAO,CAAC,6BAA6B;QACpE,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,wBAAwB,EAAE,IAAI,CAAC,wBAAwB;QACvD,QAAQ,EAAE,IAAI,CAAC,aAAa;KAC7B,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../../src/core.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,29 @@
1
1
  #!/usr/bin/env node
2
2
  const args = process.argv.slice(2);
3
- if (args.length === 1 && args[0] === "--sample") {
3
+ if (args.length === 2 && args[0] === "verify-v2") {
4
+ const [{ readFile }, { verifyV2 }] = await Promise.all([
5
+ import("node:fs/promises"),
6
+ import("./v2-interface.js"),
7
+ ]);
8
+ try {
9
+ const document = JSON.parse(await readFile(args[1], "utf8"));
10
+ const outcome = await verifyV2(document.input ?? document);
11
+ process.stdout.write(`${JSON.stringify(outcome)}\n`);
12
+ if (!outcome.accepted)
13
+ process.exitCode = 2;
14
+ }
15
+ catch (error) {
16
+ process.stderr.write(`${error instanceof Error ? error.message : "Unable to read vector"}\n`);
17
+ process.exitCode = 1;
18
+ }
19
+ }
20
+ else if (args.length === 1 && args[0] === "--sample") {
4
21
  // Sample evaluation needs only Node and the bundled verifier/receipts.
5
22
  const { popcornSample } = await import("./sample.js");
6
23
  process.stdout.write(`${JSON.stringify(await popcornSample(), null, 2)}\n`);
7
24
  }
8
25
  else if (args.length > 0) {
9
- process.stderr.write("Usage: popcorn-mcp [--sample]\n");
26
+ process.stderr.write("Usage: popcorn-mcp [--sample | verify-v2 <vector.json>]\n");
10
27
  process.exitCode = 1;
11
28
  }
12
29
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/index.ts"],"names":[],"mappings":";AAEA,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE,CAAC;IAChD,uEAAuE;IACvE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;IACtD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,aAAa,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC9E,CAAC;KAAM,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;IAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACxD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC;KAAM,CAAC;IACN,MAAM,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC3D,MAAM,CAAC,oCAAoC,CAAC;QAC5C,MAAM,CAAC,aAAa,CAAC;KACtB,CAAC,CAAC;IACH,MAAM,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/index.ts"],"names":[],"mappings":";AAEA,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,WAAW,EAAE,CAAC;IACjD,MAAM,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACrD,MAAM,CAAC,kBAAkB,CAAC;QAC1B,MAAM,CAAC,mBAAmB,CAAC;KAC5B,CAAC,CAAC;IACH,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QAC7D,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC;QAC3D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACrD,IAAI,CAAC,OAAO,CAAC,QAAQ;YAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IAC9C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,uBAAuB,IAAI,CAAC,CAAC;QAC9F,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;KAAM,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE,CAAC;IACvD,uEAAuE;IACvE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;IACtD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,aAAa,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC9E,CAAC;KAAM,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;IAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,2DAA2D,CAAC,CAAC;IAClF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC;KAAM,CAAC;IACN,MAAM,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC3D,MAAM,CAAC,oCAAoC,CAAC;QAC5C,MAAM,CAAC,aAAa,CAAC;KACtB,CAAC,CAAC;IACH,MAAM,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,CAAC"}
@@ -1,6 +1,8 @@
1
1
  import { McpServer } from "@modelcontextprotocol/server";
2
2
  import * as z from "zod/v4";
3
3
  import { popcornSample } from "./sample.js";
4
+ import { verifyV2 } from "./v2-interface.js";
5
+ import { localVerifyV2Schema } from "./v2-schema.js";
4
6
  import { popcornCatalog, popcornHash, popcornTime, popcornVerify, popcornWitness, } from "./core.js";
5
7
  function result(value) {
6
8
  const structuredContent = value;
@@ -29,11 +31,11 @@ const jsonObject = z.record(z.string(), z.unknown());
29
31
  export function createServer() {
30
32
  const server = new McpServer({
31
33
  name: "popcorn",
32
- version: "0.1.3",
34
+ version: "0.1.4",
33
35
  });
34
36
  server.registerTool("popcorn_sample", {
35
37
  title: "Try Briarwood's signed witness for free",
36
- description: "Try a clock for agents: hash an exact eight-line task schedule, verify its signed time witness, and reject a one-byte change to who must fulfill it. Also reproduce two legacy historical receipts. No inputs, wallet, payment, or network request. Free sample keys are for reproduction; this does not establish current time or grant permission.",
38
+ description: "Reproduce historical pre-TAIN receipts and one-byte tamper controls offline. No inputs, wallet, payment, or network request. This sample does not test a current TAIN 2.0 receipt, establish current time, or grant permission; use popcorn_verify_v2 for TAIN 2.0 evidence.",
37
39
  inputSchema: z.strictObject({}),
38
40
  annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
39
41
  }, async () => handle(() => popcornSample()));
@@ -69,6 +71,12 @@ export function createServer() {
69
71
  }),
70
72
  annotations: { readOnlyHint: true, destructiveHint: false },
71
73
  }, async (input) => handle(() => popcornVerify(input)));
74
+ server.registerTool("popcorn_verify_v2", {
75
+ title: "Verify a TAIN 2.0 witness receipt",
76
+ description: "Verify a POPCORN-WITNESS/2.0 receipt against exact expected payload bytes, nonce, and independently trusted issuer keys. Offline and read-only. A valid signature does not grant authority, prove settlement on chain, or establish current time.",
77
+ inputSchema: localVerifyV2Schema,
78
+ annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true },
79
+ }, async (input) => handle(() => verifyV2(input)));
72
80
  server.registerTool("popcorn_time", {
73
81
  title: "Request signed POPCORN time",
74
82
  description: "Is this quote still valid? Can I still cancel? Has the deadline passed? Fetch a signed timestamp and verifiable current-time attestation for a deadline check, boundary check, or expiry check. Use fresh time evidence, not cached evidence or the local UTC clock; measure elapsed durations with a monotonic timer. This MCP time server provides x402 time. Defaults to a no-payment dry run, not a free signed time receipt. A fresh time receipt costs at most $0.001 USDC on Base and requires approve_payment exactly true under the operator's spending policy and EVM_PRIVATE_KEY. It does not establish availability or authorize a task.",
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../../src/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import { type JsonWebKeySet, type PopcornWitnessResponse } from "../../../verify/typescript/src/v2.js";
2
+ export type VerifyV2Checks = {
3
+ expected_nonce: string;
4
+ expected_payload_digest?: string;
5
+ /** Local use only. The remote MCP accepts a digest so payload bytes stay local. */
6
+ expected_payload_base64url?: string;
7
+ expected_node_id?: string;
8
+ max_clock_accuracy_radius_ms?: number;
9
+ previous_receipt?: {
10
+ response: PopcornWitnessResponse;
11
+ jwks: JsonWebKeySet;
12
+ verification: VerifyV2Checks;
13
+ };
14
+ };
15
+ export type VerifyV2Input = VerifyV2Checks & {
16
+ response: PopcornWitnessResponse;
17
+ jwks: JsonWebKeySet;
18
+ };
19
+ export type VerifyV2Outcome = {
20
+ accepted: boolean;
21
+ reason: string;
22
+ protocol_id: "POPCORN-WITNESS/2.0";
23
+ authorization_granted: false;
24
+ issuer_key_trust_checked_by_tool: boolean;
25
+ on_chain_settlement_checked_by_tool: false;
26
+ receipt_id?: string;
27
+ tain?: string;
28
+ previous_attestation_digest_matched?: boolean;
29
+ };
30
+ /** Shared fail-closed verification entry point for the local CLI and MCP tool. */
31
+ export declare function verifyV2(input: VerifyV2Input, { allowPayloadBytes, issuerKeysFetchedByTool }?: {
32
+ allowPayloadBytes?: boolean;
33
+ issuerKeysFetchedByTool?: boolean;
34
+ }): Promise<VerifyV2Outcome>;
@@ -0,0 +1,81 @@
1
+ import { verifyPopcornWitnessEvidence, } from "../../../verify/typescript/src/v2.js";
2
+ const MAX_PREDECESSORS = 8;
3
+ function isRecord(value) {
4
+ return value !== null && typeof value === "object" && !Array.isArray(value);
5
+ }
6
+ function verificationOptions(checks, depth, allowPayloadBytes) {
7
+ if (!isRecord(checks))
8
+ throw new Error("verification input must be an object");
9
+ const hasDigest = checks.expected_payload_digest !== undefined;
10
+ const hasPayload = checks.expected_payload_base64url !== undefined;
11
+ if (hasDigest === hasPayload) {
12
+ throw new Error("provide exactly one expected_payload_digest or expected_payload_base64url");
13
+ }
14
+ if (hasPayload && !allowPayloadBytes) {
15
+ throw new Error("raw payload bytes are not accepted by the remote verifier");
16
+ }
17
+ const options = {
18
+ expected_nonce: checks.expected_nonce,
19
+ expected_node_id: checks.expected_node_id,
20
+ max_clock_accuracy_radius_ms: checks.max_clock_accuracy_radius_ms,
21
+ };
22
+ if (hasDigest) {
23
+ const digest = checks.expected_payload_digest;
24
+ if (typeof digest !== "string" || !/^[A-Za-z0-9_-]{43}$/.test(digest) ||
25
+ Buffer.from(digest, "base64url").toString("base64url") !== digest) {
26
+ throw new Error("expected_payload_digest must be a canonical unpadded base64url SHA-256 digest");
27
+ }
28
+ options.expected_payload_digest = digest;
29
+ }
30
+ else {
31
+ const encoded = checks.expected_payload_base64url;
32
+ if (typeof encoded !== "string" || !/^[A-Za-z0-9_-]+$/.test(encoded) ||
33
+ Buffer.from(encoded, "base64url").toString("base64url") !== encoded) {
34
+ throw new Error("expected_payload_base64url must be canonical unpadded base64url");
35
+ }
36
+ options.expected_payload = Buffer.from(encoded, "base64url");
37
+ }
38
+ if (checks.previous_receipt !== undefined) {
39
+ if (depth >= MAX_PREDECESSORS) {
40
+ throw new Error(`previous_receipt chain exceeds ${MAX_PREDECESSORS} links`);
41
+ }
42
+ const previous = checks.previous_receipt;
43
+ if (!isRecord(previous))
44
+ throw new Error("previous_receipt must be an object");
45
+ options.previous_receipt = {
46
+ response: previous.response,
47
+ jwks: previous.jwks,
48
+ verification: verificationOptions(previous.verification, depth + 1, allowPayloadBytes),
49
+ };
50
+ }
51
+ return options;
52
+ }
53
+ /** Shared fail-closed verification entry point for the local CLI and MCP tool. */
54
+ export async function verifyV2(input, { allowPayloadBytes = true, issuerKeysFetchedByTool = false } = {}) {
55
+ const base = {
56
+ protocol_id: "POPCORN-WITNESS/2.0",
57
+ authorization_granted: false,
58
+ issuer_key_trust_checked_by_tool: false,
59
+ on_chain_settlement_checked_by_tool: false,
60
+ };
61
+ try {
62
+ const verified = await verifyPopcornWitnessEvidence(input.response, input.jwks, verificationOptions(input, 0, allowPayloadBytes));
63
+ return {
64
+ ...base,
65
+ accepted: true,
66
+ issuer_key_trust_checked_by_tool: issuerKeysFetchedByTool,
67
+ reason: "signature, digest, time interval, and required fields verified",
68
+ receipt_id: verified.witness_receipt.receipt_id,
69
+ tain: verified.witness_receipt.tain,
70
+ previous_attestation_digest_matched: verified.previous_attestation_digest_matched,
71
+ };
72
+ }
73
+ catch (error) {
74
+ return {
75
+ ...base,
76
+ accepted: false,
77
+ reason: error instanceof Error ? error.message : "verification failed",
78
+ };
79
+ }
80
+ }
81
+ //# sourceMappingURL=v2-interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v2-interface.js","sourceRoot":"","sources":["../../../../src/v2-interface.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import * as z from "zod/v4";
2
+ export declare const localVerifyV2Schema: z.ZodTypeAny<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>;
3
+ export declare const remoteVerifyV2Schema: z.ZodTypeAny<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>;
@@ -0,0 +1,27 @@
1
+ import * as z from "zod/v4";
2
+ const jsonObject = z.record(z.string(), z.unknown());
3
+ // The schema itself limits predecessor nesting before a tool handler runs.
4
+ // The shared verifier repeats the bound for direct CLI calls.
5
+ function verifySchema(depth, remote, top) {
6
+ const previous = depth > 0
7
+ ? {
8
+ previous_receipt: z.strictObject({
9
+ response: jsonObject,
10
+ jwks: jsonObject,
11
+ verification: verifySchema(depth - 1, remote, false),
12
+ }).optional(),
13
+ }
14
+ : {};
15
+ return z.strictObject({
16
+ ...(top ? { response: jsonObject, jwks: jsonObject } : {}),
17
+ expected_nonce: z.string(),
18
+ expected_payload_digest: remote ? z.string() : z.string().optional(),
19
+ ...(!remote ? { expected_payload_base64url: z.string().optional() } : {}),
20
+ expected_node_id: z.string().optional(),
21
+ max_clock_accuracy_radius_ms: z.number().int().min(0).optional(),
22
+ ...previous,
23
+ });
24
+ }
25
+ export const localVerifyV2Schema = verifySchema(8, false, true);
26
+ export const remoteVerifyV2Schema = verifySchema(8, true, true);
27
+ //# sourceMappingURL=v2-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v2-schema.js","sourceRoot":"","sources":["../../../../src/v2-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAE5B,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AAErD,2EAA2E;AAC3E,8DAA8D;AAC9D,SAAS,YAAY,CAAC,KAAa,EAAE,MAAe,EAAE,GAAY;IAChE,MAAM,QAAQ,GAAG,KAAK,GAAG,CAAC;QACxB,CAAC,CAAC;YACE,gBAAgB,EAAE,CAAC,CAAC,YAAY,CAAC;gBAC/B,QAAQ,EAAE,UAAU;gBACpB,IAAI,EAAE,UAAU;gBAChB,YAAY,EAAE,YAAY,CAAC,KAAK,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC;aACrD,CAAC,CAAC,QAAQ,EAAE;SACd;QACH,CAAC,CAAC,EAAE,CAAC;IACP,OAAO,CAAC,CAAC,YAAY,CAAC;QACpB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1D,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE;QAC1B,uBAAuB,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACpE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,0BAA0B,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzE,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACvC,4BAA4B,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;QAChE,GAAG,QAAQ;KACZ,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AAChE,MAAM,CAAC,MAAM,oBAAoB,GAAG,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC"}