@predge/whale-data-mcp 0.1.10 → 0.2.1
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 +32 -10
- package/dist/config.js +6 -2
- package/dist/config.js.map +1 -1
- package/dist/pay.js +5 -3
- package/dist/pay.js.map +1 -1
- package/dist/server.js +107 -4
- package/dist/server.js.map +1 -1
- package/dist/verify.js +108 -0
- package/dist/verify.js.map +1 -0
- package/package.json +4 -3
package/README.md
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
# @predge/whale-data-mcp
|
|
2
2
|
|
|
3
|
-
MCP server that exposes the **Predge
|
|
4
|
-
trades
|
|
3
|
+
MCP server that exposes the **Predge** API at `https://api.predge.io`
|
|
4
|
+
(Polymarket whale trades, smart-money signals, signed attestations, and free
|
|
5
|
+
signed UMA settlement risk) as tools. Payment is handled **under the hood**:
|
|
5
6
|
each paid tool call signs a USDC micropayment via an x402 client — the agent
|
|
6
7
|
just calls the tool and gets data back. You supply a funded buyer key.
|
|
7
8
|
|
|
@@ -38,7 +39,8 @@ claude mcp add predge-whale-data \
|
|
|
38
39
|
}
|
|
39
40
|
```
|
|
40
41
|
|
|
41
|
-
That's it — the agent gets **
|
|
42
|
+
That's it — the agent gets **21 tools** (18 paid routes + 3 free tools: discovery,
|
|
43
|
+
settlement risk, record verification). The free tools need no key at all.
|
|
42
44
|
No API keys, no account; the buyer key pays USDC per call on Base or Solana. Fund it
|
|
43
45
|
with a few dollars of USDC (the facilitator pays gas, so no ETH/SOL needed).
|
|
44
46
|
|
|
@@ -70,10 +72,13 @@ integration guide (ElizaOS, Claude, raw x402 for non-MCP stacks, spend caps): **
|
|
|
70
72
|
| Tool | Price | Returns |
|
|
71
73
|
|---|---|---|
|
|
72
74
|
| `predge_list_endpoints` | **free** | API description + every endpoint with its price/schema (call first) |
|
|
75
|
+
| `predge_settlement_risk` | **free** | Signed live UMA settlement risk for one Polymarket market, read from Polygon: UMA state, current proposal + challenge window, every dispute, UMA-vote status, bulletin-board updates, on-chain resolution, `risk_level` (ok\|watch\|caution\|resolved), `segment_dispute_rate`, `settlement_estimate_available`. The `settlement_estimate` itself is paid: `predge_settlement_estimate`. The tool re-verifies the ed25519 signature and returns `{ verification, record }`. Param: `market` (condition id, numeric market id, or slug). 60 req/min per IP |
|
|
76
|
+
| `predge_settlement_estimate` | ~$0.02 | Same signed settlement-risk record **with** `settlement_estimate` (statistic from 2026 Polymarket UMA disputes, not advice). `GET /v1/settlement-risk/:market/estimate`. Check `settlement_estimate_available` in the free record first. Returns `{ verification, record }`. Param: `market` |
|
|
77
|
+
| `predge_verify_record` | **free** | Offline check of any Predge signed record (`predge-attest-v1`): `C(payload) == canonical`, `sha256(canonical) == content_hash`, ed25519 signature, `envelope_signature`, and signer listed active in [`predge-keys.json`](https://api.predge.io/.well-known/predge-keys.json). Param: `record` (JSON string) |
|
|
73
78
|
| `predge_whales_latest` | ~$0.005 | Latest whale trades ≥$10k (15-min delay). Param: `limit` (1-100) |
|
|
74
79
|
| `predge_whale_market` | ~$0.01 | 7-day whale activity for one market. Param: `condition_id` |
|
|
75
80
|
| `predge_signals_daily` | ~$0.02 | 24h digest: top markets, net flow, largest bets |
|
|
76
|
-
| `predge_wallets_leaderboard` | ~$0.01 | Wallets by
|
|
81
|
+
| `predge_wallets_leaderboard` | ~$0.01 | Wallets ranked by edge over resolved markets. Params: `window` (7d\|30d), `limit` |
|
|
77
82
|
| `predge_wallet_profile` | ~$0.01 | Wallet score, win rates, categories, last 20 trades. Param: `address` |
|
|
78
83
|
| `predge_markets_movers` | ~$0.005 | Largest YES-price moves. Param: `window` (1h\|6h\|24h) |
|
|
79
84
|
| `predge_signals_consensus` | ~$0.03 | Edge-verified smart-money net flow + direction per market |
|
|
@@ -89,9 +94,20 @@ integration guide (ElizaOS, Claude, raw x402 for non-MCP stacks, spend caps): **
|
|
|
89
94
|
| `predge_wallets_compare` | ~$0.02 | Compare 2-10 wallets side-by-side + market overlap. Param: `addresses` |
|
|
90
95
|
| `predge_market_history` | ~$0.01 | Price/volume history for one market. Params: `condition_id`, `window` (7d\|30d\|all) |
|
|
91
96
|
|
|
92
|
-
Every paid result includes a note with the on-chain settle tx.
|
|
93
|
-
(
|
|
94
|
-
|
|
97
|
+
Every paid result includes a note with the on-chain settle tx. Not exposed as tools
|
|
98
|
+
(raw x402/HTTP reaches them; see `predge_list_endpoints`): the Kalshi flow routes, the
|
|
99
|
+
`/v1/markets/:id/edge` polling pulse, the `/v1/onchain/*` routes, and the signed-calls /
|
|
100
|
+
stakes / track-record routes. The old `/v1/signal` route is paused (503) and has no tool.
|
|
101
|
+
|
|
102
|
+
### Verifying signed records yourself
|
|
103
|
+
|
|
104
|
+
Every Predge signed record carries an `attestation` envelope. The rule is published at
|
|
105
|
+
[data.predge.io/canonicalization.md](https://data.predge.io/canonicalization.md):
|
|
106
|
+
`canonical` is the payload as JSON with keys sorted at every level and no whitespace;
|
|
107
|
+
`content_hash = sha256(canonical)`; `signature` is ed25519 over the UTF-8 bytes of
|
|
108
|
+
`canonical`; the signer must be an active key in
|
|
109
|
+
`https://api.predge.io/.well-known/predge-keys.json` (attestation kid `13fa3d18a369e6c7`).
|
|
110
|
+
`src/verify.ts` implements this with `node:crypto` only.
|
|
95
111
|
|
|
96
112
|
## Config (env)
|
|
97
113
|
|
|
@@ -107,11 +123,15 @@ facilitator pays the network fee on either rail — the wallet needs USDC only.
|
|
|
107
123
|
| `X402_NETWORK` | `base` | Base network: `base` = mainnet (real USDC), `base-sepolia` only against a testnet deployment. |
|
|
108
124
|
| `X402_SOLANA_NETWORK` | matches `X402_NETWORK` | `solana` (mainnet) or `solana-devnet`. |
|
|
109
125
|
| `SOLANA_RPC_URL` | @x402/svm default | Optional custom Solana RPC (public mainnet-beta is rate-limited). |
|
|
110
|
-
| `PREDGE_BASE_URL` |
|
|
126
|
+
| `PREDGE_BASE_URL` | `https://api.predge.io` | Override to point at another deployment. `PREDGE_API_URL` is accepted as an alias. Signatures are always checked against the key set on `api.predge.io`. |
|
|
111
127
|
| `MAX_PRICE_USD` | `0.05` | Any call priced above this is refused **before** paying. |
|
|
112
|
-
| `PREDGE_MCP_USER_AGENT` | `predge-whale-data-mcp
|
|
128
|
+
| `PREDGE_MCP_USER_AGENT` | `predge-whale-data-mcp/<version>` | Sent on every request (lets the API attribute MCP traffic). |
|
|
129
|
+
|
|
130
|
+
> The free tools (`predge_list_endpoints`, `predge_settlement_risk`, `predge_verify_record`) work without any key.
|
|
113
131
|
|
|
114
|
-
>
|
|
132
|
+
> **Upgrading from 0.1.10 or older:** those versions default to a decommissioned API
|
|
133
|
+
> host and every call fails with 404. Upgrade to 0.2.0 (`npx -y @predge/whale-data-mcp@latest`),
|
|
134
|
+
> or set `PREDGE_BASE_URL=https://api.predge.io`.
|
|
115
135
|
|
|
116
136
|
### Testnet
|
|
117
137
|
|
|
@@ -142,8 +162,10 @@ cd whale-data-mcp && npm install && npm run build
|
|
|
142
162
|
## Verify locally
|
|
143
163
|
|
|
144
164
|
```bash
|
|
165
|
+
npm test # unit tests (no network, no payment)
|
|
145
166
|
npm run inspect # list tools (no payment)
|
|
146
167
|
node dist/dev-list-tools.js predge_list_endpoints # free call against prod
|
|
168
|
+
node dist/dev-list-tools.js predge_settlement_risk '{"market":"<condition id or slug>"}' # free, signed
|
|
147
169
|
# paid call (spends real USDC on mainnet):
|
|
148
170
|
BUYER_PRIVATE_KEY=0x… X402_NETWORK=base node dist/dev-list-tools.js predge_whales_latest '{"limit":2}'
|
|
149
171
|
```
|
package/dist/config.js
CHANGED
|
@@ -80,8 +80,12 @@ function numEnv(name, def) {
|
|
|
80
80
|
return n;
|
|
81
81
|
}
|
|
82
82
|
const network = caip2(process.env.X402_NETWORK ?? "base");
|
|
83
|
+
/** Package version; keep in sync with package.json (checked by `npm test`). */
|
|
84
|
+
export const VERSION = "0.2.1";
|
|
85
|
+
/** Live Predge API. Override with PREDGE_BASE_URL (or its alias PREDGE_API_URL). */
|
|
86
|
+
export const DEFAULT_BASE_URL = "https://api.predge.io";
|
|
83
87
|
export const config = {
|
|
84
|
-
baseUrl: (process.env.PREDGE_BASE_URL
|
|
88
|
+
baseUrl: (process.env.PREDGE_BASE_URL?.trim() || process.env.PREDGE_API_URL?.trim() || DEFAULT_BASE_URL).replace(/\/+$/, ""),
|
|
85
89
|
// EVM (Base) buyer. Optional so the server + free discovery tool work without
|
|
86
90
|
// a key; paid tools fail clearly if NO key (EVM or Solana) is set.
|
|
87
91
|
buyerKey: process.env.BUYER_PRIVATE_KEY,
|
|
@@ -99,7 +103,7 @@ export const config = {
|
|
|
99
103
|
// Optional custom Solana RPC (the public mainnet-beta endpoint is rate-limited).
|
|
100
104
|
solanaRpcUrl: process.env.SOLANA_RPC_URL?.trim() || undefined,
|
|
101
105
|
maxPriceUsd: numEnv("MAX_PRICE_USD", 0.05),
|
|
102
|
-
userAgent: process.env.PREDGE_MCP_USER_AGENT ??
|
|
106
|
+
userAgent: process.env.PREDGE_MCP_USER_AGENT ?? `predge-whale-data-mcp/${VERSION}`,
|
|
103
107
|
};
|
|
104
108
|
export const IS_TESTNET = config.network !== "eip155:8453";
|
|
105
109
|
//# sourceMappingURL=config.js.map
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/pay.js
CHANGED
|
@@ -106,15 +106,17 @@ export async function payGet(path) {
|
|
|
106
106
|
}
|
|
107
107
|
return { data, paid };
|
|
108
108
|
}
|
|
109
|
-
/** GET a FREE route (no payment) —
|
|
109
|
+
/** GET a FREE route (no payment) — discovery, settlement risk, key set. */
|
|
110
110
|
export async function freeGet(path) {
|
|
111
111
|
const res = await fetch(`${config.baseUrl}${path}`, {
|
|
112
112
|
method: "GET",
|
|
113
113
|
headers: { "user-agent": config.userAgent },
|
|
114
114
|
signal: AbortSignal.timeout(15_000),
|
|
115
115
|
});
|
|
116
|
-
if (!res.ok)
|
|
117
|
-
|
|
116
|
+
if (!res.ok) {
|
|
117
|
+
const body = await res.text().catch(() => "");
|
|
118
|
+
throw new Error(`upstream ${res.status}${body ? `: ${body.slice(0, 300)}` : ""}`);
|
|
119
|
+
}
|
|
118
120
|
return res.json();
|
|
119
121
|
}
|
|
120
122
|
//# sourceMappingURL=pay.js.map
|
package/dist/pay.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pay.js","sourceRoot":"","sources":["../src/pay.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"pay.js","sourceRoot":"","sources":["../src/pay.ts"],"names":[],"mappings":"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"}
|
package/dist/server.js
CHANGED
|
@@ -11,8 +11,9 @@
|
|
|
11
11
|
*/
|
|
12
12
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
13
13
|
import { z } from "zod";
|
|
14
|
-
import { config, IS_TESTNET } from "./config.js";
|
|
14
|
+
import { config, IS_TESTNET, VERSION, DEFAULT_BASE_URL } from "./config.js";
|
|
15
15
|
import { payGet, freeGet, PaymentError } from "./pay.js";
|
|
16
|
+
import { extractEnvelope, verifyEnvelope, KEYS_PATH } from "./verify.js";
|
|
16
17
|
function ok(data, paid) {
|
|
17
18
|
const note = paid
|
|
18
19
|
? `\n\n_paid via x402: tx ${paid.settle_tx ?? "?"} on ${paid.network ?? config.network}_`
|
|
@@ -39,9 +40,34 @@ async function paid(path) {
|
|
|
39
40
|
const CONDITION_ID = z
|
|
40
41
|
.string()
|
|
41
42
|
.regex(/^[0-9a-zA-Z_:.-]{1,255}$/, "Polymarket conditionId (0x-hex) or platform market id");
|
|
43
|
+
// Polymarket condition id (0x + 64 hex), numeric market id, or market slug.
|
|
44
|
+
const SETTLEMENT_MARKET = z
|
|
45
|
+
.string()
|
|
46
|
+
.regex(/^(0x[0-9a-fA-F]{64}|\d{1,12}|[a-z0-9][a-z0-9-]{0,200})$/, "condition id (0x+64 hex), market id or slug");
|
|
47
|
+
// The Predge key set is always read from the canonical host, even when
|
|
48
|
+
// PREDGE_BASE_URL points elsewhere: it decides whose signature counts.
|
|
49
|
+
const KEYS_URL = `${DEFAULT_BASE_URL}${KEYS_PATH}`;
|
|
50
|
+
let keyCache = null;
|
|
51
|
+
async function predgeKeys() {
|
|
52
|
+
if (keyCache && Date.now() - keyCache.at < 10 * 60_000)
|
|
53
|
+
return keyCache.keys;
|
|
54
|
+
try {
|
|
55
|
+
const res = await fetch(KEYS_URL, { headers: { "user-agent": config.userAgent }, signal: AbortSignal.timeout(10_000) });
|
|
56
|
+
if (!res.ok)
|
|
57
|
+
return keyCache?.keys ?? null;
|
|
58
|
+
const body = (await res.json());
|
|
59
|
+
if (!Array.isArray(body.keys))
|
|
60
|
+
return keyCache?.keys ?? null;
|
|
61
|
+
keyCache = { at: Date.now(), keys: body.keys };
|
|
62
|
+
return body.keys;
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
return keyCache?.keys ?? null;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
42
68
|
const ADDRESS = z.string().regex(/^0x[0-9a-fA-F]{40}$/, "0x-prefixed 40-hex EVM address");
|
|
43
69
|
export function buildServer() {
|
|
44
|
-
const server = new McpServer({ name: "predge-whale-data", version:
|
|
70
|
+
const server = new McpServer({ name: "predge-whale-data", version: VERSION }, {
|
|
45
71
|
instructions: "Polymarket whale trades and smart-money signals from Predge, sold per call over x402. " +
|
|
46
72
|
"Flagships — one ed25519 signing primitive across four verticals, all verifiable OFFLINE " +
|
|
47
73
|
"against Predge's published key: predge_attest (resolved Polymarket outcome), " +
|
|
@@ -51,7 +77,9 @@ export function buildServer() {
|
|
|
51
77
|
"ground a wager on tamper-evident truth. " +
|
|
52
78
|
`Tools pay USDC automatically on ${IS_TESTNET ? "Base Sepolia testnet" : "Base mainnet"} from the ` +
|
|
53
79
|
"configured buyer key (max $" + config.maxPriceUsd.toFixed(3) + "/call). Data is delayed 15 minutes. " +
|
|
54
|
-
"Call predge_list_endpoints first (free) to see prices and schemas."
|
|
80
|
+
"Call predge_list_endpoints first (free) to see prices and schemas. " +
|
|
81
|
+
"Free and signed: predge_settlement_risk (live UMA dispute/settlement risk for a Polymarket market); " +
|
|
82
|
+
"predge_verify_record checks any Predge signed record offline.",
|
|
55
83
|
});
|
|
56
84
|
// --- free discovery -----------------------------------------------------
|
|
57
85
|
server.registerTool("predge_list_endpoints", {
|
|
@@ -87,7 +115,7 @@ export function buildServer() {
|
|
|
87
115
|
}, async () => paid("/v1/signals/daily"));
|
|
88
116
|
server.registerTool("predge_wallets_leaderboard", {
|
|
89
117
|
title: "Wallet win-rate leaderboard",
|
|
90
|
-
description: "PAID (~$0.01). Top wallets by
|
|
118
|
+
description: "PAID (~$0.01). Top wallets over resolved markets, ranked by edge (win rate vs. entry price), not raw win rate. " +
|
|
91
119
|
"Params: window (7d|30d, default 30d), limit (1-100, default 50).",
|
|
92
120
|
inputSchema: {
|
|
93
121
|
window: z.enum(["7d", "30d"]).optional(),
|
|
@@ -236,6 +264,81 @@ export function buildServer() {
|
|
|
236
264
|
"normalized to the YES side) plus recent prints. Params: condition_id, window (7d|30d|all, default 30d).",
|
|
237
265
|
inputSchema: { condition_id: CONDITION_ID, window: z.enum(["7d", "30d", "all"]).optional() },
|
|
238
266
|
}, async ({ condition_id, window }) => paid(`/v1/markets/${encodeURIComponent(condition_id)}/history${window ? `?window=${window}` : ""}`));
|
|
267
|
+
// --- free: signed live UMA settlement risk --------------------------------
|
|
268
|
+
server.registerTool("predge_settlement_risk", {
|
|
269
|
+
title: "Settlement risk — signed live UMA dispute status (free)",
|
|
270
|
+
description: "FREE, no key or payment. Live UMA settlement risk for one Polymarket market, read from UMA's " +
|
|
271
|
+
"Optimistic Oracle and Polymarket's UMA CTF adapter on Polygon: uma_state, current proposal and " +
|
|
272
|
+
"challenge window, every dispute, whether it went to a UMA vote, bulletin-board updates, on-chain " +
|
|
273
|
+
"resolution, risk_level (ok|watch|caution|resolved) with a one-line recommendation, plus the " +
|
|
274
|
+
"segment_dispute_rate statistic and a settlement_estimate_available flag. The settlement_estimate " +
|
|
275
|
+
"itself is NOT in this free record: it is sold by predge_settlement_estimate " +
|
|
276
|
+
"(GET /v1/settlement-risk/:market/estimate, ~$0.02). The record is ed25519-signed " +
|
|
277
|
+
"(predge-attest-v1); this tool re-checks the signature, content hash and signer key and returns " +
|
|
278
|
+
"the result under `verification`. A dispute blocks a proposal; it does not by itself change the " +
|
|
279
|
+
"outcome. 404 unknown_market and 422 unsupported_* are NOT 'no risk' answers. Rate limit 60/min per IP. " +
|
|
280
|
+
"Param: market (condition id 0x+64 hex, numeric market id, or slug).",
|
|
281
|
+
inputSchema: { market: SETTLEMENT_MARKET },
|
|
282
|
+
}, async ({ market }) => {
|
|
283
|
+
try {
|
|
284
|
+
const record = await freeGet(`/v1/settlement-risk/${encodeURIComponent(market)}`);
|
|
285
|
+
let verification;
|
|
286
|
+
try {
|
|
287
|
+
verification = verifyEnvelope(extractEnvelope(record), await predgeKeys());
|
|
288
|
+
}
|
|
289
|
+
catch (e) {
|
|
290
|
+
verification = { valid: false, error: e instanceof Error ? e.message : String(e) };
|
|
291
|
+
}
|
|
292
|
+
return ok({ verification, record }, null);
|
|
293
|
+
}
|
|
294
|
+
catch (e) {
|
|
295
|
+
return fail(e);
|
|
296
|
+
}
|
|
297
|
+
});
|
|
298
|
+
// --- paid: signed settlement-risk record WITH settlement_estimate ---------
|
|
299
|
+
server.registerTool("predge_settlement_estimate", {
|
|
300
|
+
title: "Settlement risk + settlement_estimate — signed (paid)",
|
|
301
|
+
description: "PAID (~$0.02 via x402). The same signed live UMA settlement-risk record as the free " +
|
|
302
|
+
"predge_settlement_risk tool, WITH settlement_estimate: a statistic computed from 2026 Polymarket " +
|
|
303
|
+
"UMA disputes (market price before the first dispute + market type). A statistic, not advice. " +
|
|
304
|
+
"GET /v1/settlement-risk/:market/estimate. The tool re-checks the ed25519 signature and returns " +
|
|
305
|
+
"`{ verification, record }`. Call predge_settlement_risk first (free) and check " +
|
|
306
|
+
"settlement_estimate_available before paying. Param: market (condition id 0x+64 hex, numeric market id, or slug).",
|
|
307
|
+
inputSchema: { market: SETTLEMENT_MARKET },
|
|
308
|
+
}, async ({ market }) => {
|
|
309
|
+
try {
|
|
310
|
+
const { data: record, paid: receipt } = await payGet(`/v1/settlement-risk/${encodeURIComponent(market)}/estimate`);
|
|
311
|
+
let verification;
|
|
312
|
+
try {
|
|
313
|
+
verification = verifyEnvelope(extractEnvelope(record), await predgeKeys());
|
|
314
|
+
}
|
|
315
|
+
catch (e) {
|
|
316
|
+
verification = { valid: false, error: e instanceof Error ? e.message : String(e) };
|
|
317
|
+
}
|
|
318
|
+
return ok({ verification, record }, receipt);
|
|
319
|
+
}
|
|
320
|
+
catch (e) {
|
|
321
|
+
return fail(e);
|
|
322
|
+
}
|
|
323
|
+
});
|
|
324
|
+
// --- free: offline signature check for any Predge signed record ----------
|
|
325
|
+
server.registerTool("predge_verify_record", {
|
|
326
|
+
title: "Verify a Predge signed record (free, offline)",
|
|
327
|
+
description: "FREE. Checks a Predge signed record (predge-attest-v1) without trusting the API: payload " +
|
|
328
|
+
"re-canonicalises to `canonical`, sha256(canonical) == content_hash, ed25519 signature over " +
|
|
329
|
+
"canonical, envelope_signature when present, and that public_key is an active key in " +
|
|
330
|
+
"api.predge.io/.well-known/predge-keys.json (the only network call; it is cached). Works on " +
|
|
331
|
+
"responses from predge_settlement_risk, predge_attest, predge_sports_attest, predge_kalshi_attest, " +
|
|
332
|
+
"predge_wallet_attest, or a bare `attestation` envelope. Param: record (the JSON, as a string).",
|
|
333
|
+
inputSchema: { record: z.string().min(2).max(1_000_000) },
|
|
334
|
+
}, async ({ record }) => {
|
|
335
|
+
try {
|
|
336
|
+
return ok(verifyEnvelope(extractEnvelope(record), await predgeKeys()), null);
|
|
337
|
+
}
|
|
338
|
+
catch (e) {
|
|
339
|
+
return fail(e);
|
|
340
|
+
}
|
|
341
|
+
});
|
|
239
342
|
return server;
|
|
240
343
|
}
|
|
241
344
|
//# sourceMappingURL=server.js.map
|
package/dist/server.js.map
CHANGED
|
@@ -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":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,SAAS,EAAkB,MAAM,aAAa,CAAC;AAQzF,SAAS,EAAE,CAAC,IAAa,EAAE,IAAa;IACtC,MAAM,IAAI,GAAG,IAAI;QACf,CAAC,CAAC,0BAA2B,IAA+B,CAAC,SAAS,IAAI,GAAG,OAAQ,IAA6B,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,GAAG;QAC/I,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC3C,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;QACnH,iBAAiB,EAAE,EAAE,IAAI,EAAE,IAAI,EAA6B;KAC7D,CAAC;AACJ,CAAC;AAED,SAAS,IAAI,CAAC,CAAU;IACtB,MAAM,GAAG,GAAG,CAAC,YAAY,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC/F,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC/E,CAAC;AAED,KAAK,UAAU,IAAI,CAAC,IAAY;IAC9B,IAAI,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;QAC1C,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACxB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;AACH,CAAC;AAED,MAAM,YAAY,GAAG,CAAC;KACnB,MAAM,EAAE;KACR,KAAK,CAAC,0BAA0B,EAAE,uDAAuD,CAAC,CAAC;AAC9F,4EAA4E;AAC5E,MAAM,iBAAiB,GAAG,CAAC;KACxB,MAAM,EAAE;KACR,KAAK,CAAC,yDAAyD,EAAE,6CAA6C,CAAC,CAAC;AAEnH,uEAAuE;AACvE,uEAAuE;AACvE,MAAM,QAAQ,GAAG,GAAG,gBAAgB,GAAG,SAAS,EAAE,CAAC;AACnD,IAAI,QAAQ,GAA6C,IAAI,CAAC;AAC9D,KAAK,UAAU,UAAU;IACvB,IAAI,QAAQ,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,EAAE,GAAG,EAAE,GAAG,MAAM;QAAE,OAAO,QAAQ,CAAC,IAAI,CAAC;IAC7E,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,MAAM,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACxH,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,QAAQ,EAAE,IAAI,IAAI,IAAI,CAAC;QAC3C,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA2B,CAAC;QAC1D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,QAAQ,EAAE,IAAI,IAAI,IAAI,CAAC;QAC7D,QAAQ,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;QAC/C,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,QAAQ,EAAE,IAAI,IAAI,IAAI,CAAC;IAChC,CAAC;AACH,CAAC;AAED,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,qBAAqB,EAAE,gCAAgC,CAAC,CAAC;AAE1F,MAAM,UAAU,WAAW;IACzB,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,OAAO,EAAE,EAC/C;QACE,YAAY,EACV,wFAAwF;YACxF,0FAA0F;YAC1F,+EAA+E;YAC/E,iGAAiG;YACjG,kGAAkG;YAClG,gGAAgG;YAChG,0CAA0C;YAC1C,mCAAmC,UAAU,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,cAAc,YAAY;YACnG,6BAA6B,GAAG,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,sCAAsC;YACtG,qEAAqE;YACrE,sGAAsG;YACtG,+DAA+D;KAClE,CACF,CAAC;IAEF,2EAA2E;IAC3E,MAAM,CAAC,YAAY,CACjB,uBAAuB,EACvB;QACE,KAAK,EAAE,uCAAuC;QAC9C,WAAW,EACT,8FAA8F;YAC9F,6EAA6E;QAC/E,WAAW,EAAE,EAAE;KAChB,EACD,KAAK,IAAI,EAAE;QACT,IAAI,CAAC;YACH,OAAO,EAAE,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;QACtC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;IACH,CAAC,CACF,CAAC;IAEF,2EAA2E;IAC3E,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;QACE,KAAK,EAAE,qBAAqB;QAC5B,WAAW,EACT,oGAAoG;YACpG,gFAAgF;QAClF,WAAW,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;KACpE,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,KAAK,CAAC,CAAC,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAChF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,qBAAqB,EACrB;QACE,KAAK,EAAE,+BAA+B;QACtC,WAAW,EACT,oGAAoG;YACpG,iDAAiD;QACnD,WAAW,EAAE,EAAE,YAAY,EAAE,YAAY,EAAE;KAC5C,EACD,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,qBAAqB,kBAAkB,CAAC,YAAY,CAAC,EAAE,CAAC,CAC1F,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;QACE,KAAK,EAAE,kBAAkB;QACzB,WAAW,EACT,gGAAgG;QAClG,WAAW,EAAE,EAAE;KAChB,EACD,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,CACtC,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,4BAA4B,EAC5B;QACE,KAAK,EAAE,6BAA6B;QACpC,WAAW,EACT,iHAAiH;YACjH,kEAAkE;QACpE,WAAW,EAAE;YACX,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE;YACxC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;SACnD;KACF,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;QAC1B,MAAM,CAAC,GAAG,IAAI,eAAe,EAAE,CAAC;QAChC,IAAI,MAAM;YAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACpC,IAAI,KAAK;YAAE,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACzC,MAAM,EAAE,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC,0BAA0B,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC9D,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,uBAAuB,EACvB;QACE,KAAK,EAAE,gBAAgB;QACvB,WAAW,EACT,8FAA8F;YAC9F,sDAAsD;QACxD,WAAW,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE;KAClC,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC,CAC1E,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,uBAAuB,EACvB;QACE,KAAK,EAAE,sBAAsB;QAC7B,WAAW,EACT,qFAAqF;YACrF,wCAAwC;QAC1C,WAAW,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE;KAChE,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,qBAAqB,MAAM,CAAC,CAAC,CAAC,WAAW,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACrF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,0BAA0B,EAC1B;QACE,KAAK,EAAE,iCAAiC;QACxC,WAAW,EACT,gGAAgG;YAChG,+DAA+D;QACjE,WAAW,EAAE,EAAE;KAChB,EACD,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAC1C,CAAC;IAEF,2EAA2E;IAC3E,MAAM,CAAC,YAAY,CACjB,eAAe,EACf;QACE,KAAK,EAAE,yDAAyD;QAChE,WAAW,EACT,2FAA2F;YAC3F,4FAA4F;YAC5F,iGAAiG;YACjG,4FAA4F;YAC5F,+FAA+F;YAC/F,iGAAiG;QACnG,WAAW,EAAE;YACX,YAAY,EAAE,YAAY;YAC1B,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE;SACvC;KACF,EACD,KAAK,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,CAC/B,IAAI,CAAC,cAAc,kBAAkB,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACvF,CAAC;IAEF,4EAA4E;IAC5E,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;QACE,KAAK,EAAE,oEAAoE;QAC3E,WAAW,EACT,4FAA4F;YAC5F,6FAA6F;YAC7F,+FAA+F;YAC/F,8FAA8F;YAC9F,iGAAiG;YACjG,iGAAiG;YACjG,sEAAsE;YACtE,2FAA2F;YAC3F,uDAAuD;QACzD,WAAW,EAAE;YACX,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC;gBACb,KAAK;gBACL,MAAM;gBACN,KAAK;gBACL,kBAAkB;gBAClB,KAAK;gBACL,KAAK;gBACL,KAAK;gBACL,KAAK;gBACL,kBAAkB;gBAClB,QAAQ;aACT,CAAC;YACF,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,wBAAwB,EAAE,mBAAmB,CAAC;YACzE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;SAC7C;KACF,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,CACrC,IAAI,CACF,qBAAqB,kBAAkB,CAAC,MAAM,CAAC,IAAI,kBAAkB,CAAC,QAAQ,CAAC,GAC7E,MAAM,CAAC,CAAC,CAAC,WAAW,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EACrD,EAAE,CACH,CACJ,CAAC;IAEF,2EAA2E;IAC3E,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;QACE,KAAK,EAAE,0EAA0E;QACjF,WAAW,EACT,2FAA2F;YAC3F,6FAA6F;YAC7F,2FAA2F;YAC3F,8FAA8F;YAC9F,8FAA8F;YAC9F,gGAAgG;YAChG,yFAAyF;YACzF,8CAA8C;QAChD,WAAW,EAAE;YACX,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,yBAAyB,EAAE,sBAAsB,CAAC;YAC3E,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE;SACvC;KACF,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CACzB,IAAI,CAAC,qBAAqB,kBAAkB,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACxF,CAAC;IAEF,2EAA2E;IAC3E,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;QACE,KAAK,EAAE,qEAAqE;QAC5E,WAAW,EACT,+FAA+F;YAC/F,0FAA0F;YAC1F,gGAAgG;YAChG,2FAA2F;YAC3F,+FAA+F;YAC/F,gDAAgD;QAClD,WAAW,EAAE;YACX,OAAO,EAAE,OAAO;YAChB,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE;SACzC;KACF,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,CAC5B,IAAI,CAAC,eAAe,kBAAkB,CAAC,OAAO,CAAC,UAAU,MAAM,CAAC,CAAC,CAAC,WAAW,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAChG,CAAC;IAEF,2EAA2E;IAC3E,MAAM,CAAC,YAAY,CACjB,qBAAqB,EACrB;QACE,KAAK,EAAE,qBAAqB;QAC5B,WAAW,EACT,2FAA2F;YAC3F,mFAAmF;QACrF,WAAW,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE;KAC1D,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,mBAAmB,MAAM,CAAC,CAAC,CAAC,WAAW,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACnF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,+BAA+B,EAC/B;QACE,KAAK,EAAE,6BAA6B;QACpC,WAAW,EACT,+FAA+F;YAC/F,gGAAgG;QAClG,WAAW,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;KACrD,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,qBAAqB,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAClF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,mCAAmC,EACnC;QACE,KAAK,EAAE,wCAAwC;QAC/C,WAAW,EACT,0FAA0F;YAC1F,wFAAwF;QAC1F,WAAW,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;KACrD,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,yBAAyB,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC,CACtF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,uBAAuB,EACvB;QACE,KAAK,EAAE,mCAAmC;QAC1C,WAAW,EACT,kGAAkG;YAClG,0FAA0F;QAC5F,WAAW,EAAE,EAAE,YAAY,EAAE,YAAY,EAAE;KAC5C,EACD,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,sBAAsB,kBAAkB,CAAC,YAAY,CAAC,EAAE,CAAC,CAC3F,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,uBAAuB,EACvB;QACE,KAAK,EAAE,kCAAkC;QACzC,WAAW,EACT,2FAA2F;YAC3F,2DAA2D;QAC7D,WAAW,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE;KACpF,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,CAC5B,IAAI,CAAC,eAAe,kBAAkB,CAAC,OAAO,CAAC,WAAW,MAAM,CAAC,CAAC,CAAC,WAAW,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACjG,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,wBAAwB,EACxB;QACE,KAAK,EAAE,8BAA8B;QACrC,WAAW,EACT,+FAA+F;YAC/F,8DAA8D;QAChE,WAAW,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;KAC5D,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CACtB,IAAI,CAAC,iCAAiC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CACvF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,uBAAuB,EACvB;QACE,KAAK,EAAE,6BAA6B;QACpC,WAAW,EACT,wFAAwF;YACxF,yGAAyG;QAC3G,WAAW,EAAE,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE;KAC7F,EACD,KAAK,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,EAAE,CACjC,IAAI,CAAC,eAAe,kBAAkB,CAAC,YAAY,CAAC,WAAW,MAAM,CAAC,CAAC,CAAC,WAAW,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACtG,CAAC;IAEF,6EAA6E;IAC7E,MAAM,CAAC,YAAY,CACjB,wBAAwB,EACxB;QACE,KAAK,EAAE,yDAAyD;QAChE,WAAW,EACT,+FAA+F;YAC/F,iGAAiG;YACjG,mGAAmG;YACnG,8FAA8F;YAC9F,mGAAmG;YACnG,8EAA8E;YAC9E,mFAAmF;YACnF,iGAAiG;YACjG,iGAAiG;YACjG,yGAAyG;YACzG,qEAAqE;QACvE,WAAW,EAAE,EAAE,MAAM,EAAE,iBAAiB,EAAE;KAC3C,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;QACnB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,uBAAuB,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAClF,IAAI,YAAqB,CAAC;YAC1B,IAAI,CAAC;gBACH,YAAY,GAAG,cAAc,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,MAAM,UAAU,EAAE,CAAC,CAAC;YAC7E,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,YAAY,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YACrF,CAAC;YACD,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC;QAC5C,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;IACH,CAAC,CACF,CAAC;IAEF,6EAA6E;IAC7E,MAAM,CAAC,YAAY,CACjB,4BAA4B,EAC5B;QACE,KAAK,EAAE,uDAAuD;QAC9D,WAAW,EACT,sFAAsF;YACtF,mGAAmG;YACnG,+FAA+F;YAC/F,iGAAiG;YACjG,iFAAiF;YACjF,kHAAkH;QACpH,WAAW,EAAE,EAAE,MAAM,EAAE,iBAAiB,EAAE;KAC3C,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;QACnB,IAAI,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAClD,uBAAuB,kBAAkB,CAAC,MAAM,CAAC,WAAW,CAC7D,CAAC;YACF,IAAI,YAAqB,CAAC;YAC1B,IAAI,CAAC;gBACH,YAAY,GAAG,cAAc,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,MAAM,UAAU,EAAE,CAAC,CAAC;YAC7E,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,YAAY,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YACrF,CAAC;YACD,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;IACH,CAAC,CACF,CAAC;IAEF,4EAA4E;IAC5E,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;QACE,KAAK,EAAE,+CAA+C;QACtD,WAAW,EACT,2FAA2F;YAC3F,6FAA6F;YAC7F,sFAAsF;YACtF,6FAA6F;YAC7F,oGAAoG;YACpG,gGAAgG;QAClG,WAAW,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;KAC1D,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;QACnB,IAAI,CAAC;YACH,OAAO,EAAE,CAAC,cAAc,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,MAAM,UAAU,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QAC/E,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;IACH,CAAC,CACF,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/dist/verify.js
ADDED
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Offline checker for Predge signed records (`predge-attest-v1` envelopes).
|
|
3
|
+
* Rule: https://data.predge.io/canonicalization.md
|
|
4
|
+
*
|
|
5
|
+
* 1. C(payload) === canonical (the object you read is what was signed)
|
|
6
|
+
* 2. sha256(canonical) === content_hash (when the envelope carries one)
|
|
7
|
+
* 3. ed25519(signature, canonical, public_key)
|
|
8
|
+
* 4. envelope_signature over C(envelope minus envelope_signature) (when present)
|
|
9
|
+
* 5. public_key is listed with active:true in the Predge key set
|
|
10
|
+
*
|
|
11
|
+
* Uses node:crypto only (no extra dependencies). The key set is passed in, so
|
|
12
|
+
* the checks themselves need no network.
|
|
13
|
+
*/
|
|
14
|
+
import { createHash, createPublicKey, verify as edVerify } from "node:crypto";
|
|
15
|
+
export const KEYS_PATH = "/.well-known/predge-keys.json";
|
|
16
|
+
/** Predge canonical JSON: keys sorted at every level, no whitespace, JSON.stringify strings. */
|
|
17
|
+
export function canonicalJson(v) {
|
|
18
|
+
if (v === null || typeof v !== "object")
|
|
19
|
+
return JSON.stringify(v);
|
|
20
|
+
if (Array.isArray(v))
|
|
21
|
+
return `[${v.map(canonicalJson).join(",")}]`;
|
|
22
|
+
const o = v;
|
|
23
|
+
return `{${Object.keys(o)
|
|
24
|
+
.filter((k) => o[k] !== undefined)
|
|
25
|
+
.sort()
|
|
26
|
+
.map((k) => `${JSON.stringify(k)}:${canonicalJson(o[k])}`)
|
|
27
|
+
.join(",")}}`;
|
|
28
|
+
}
|
|
29
|
+
export function sha256Hex(s) {
|
|
30
|
+
return createHash("sha256").update(s, "utf8").digest("hex");
|
|
31
|
+
}
|
|
32
|
+
const SPKI_ED25519_PREFIX = Buffer.from("302a300506032b6570032100", "hex");
|
|
33
|
+
const HEX64 = /^[0-9a-f]{64}$/i;
|
|
34
|
+
const HEX128 = /^[0-9a-f]{128}$/i;
|
|
35
|
+
export function ed25519Verify(publicKeyHex, message, signatureHex) {
|
|
36
|
+
if (!HEX64.test(publicKeyHex) || !HEX128.test(signatureHex))
|
|
37
|
+
return false;
|
|
38
|
+
try {
|
|
39
|
+
const key = createPublicKey({
|
|
40
|
+
format: "der",
|
|
41
|
+
type: "spki",
|
|
42
|
+
key: Buffer.concat([SPKI_ED25519_PREFIX, Buffer.from(publicKeyHex, "hex")]),
|
|
43
|
+
});
|
|
44
|
+
return edVerify(null, Buffer.from(message, "utf8"), key, Buffer.from(signatureHex, "hex"));
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/** Accepts a full API response ({attestation: {...}}), a bare envelope, or a JSON string of either. */
|
|
51
|
+
export function extractEnvelope(record) {
|
|
52
|
+
const r = typeof record === "string" ? JSON.parse(record) : record;
|
|
53
|
+
if (!r || typeof r !== "object")
|
|
54
|
+
throw new Error("record must be a JSON object");
|
|
55
|
+
const o = r;
|
|
56
|
+
const env = (o.attestation && typeof o.attestation === "object" ? o.attestation : o);
|
|
57
|
+
if (typeof env.canonical !== "string" || typeof env.signature !== "string" || typeof env.public_key !== "string") {
|
|
58
|
+
throw new Error("no signed envelope found (need canonical, signature, public_key — usually under `attestation`)");
|
|
59
|
+
}
|
|
60
|
+
return env;
|
|
61
|
+
}
|
|
62
|
+
export function verifyEnvelope(envelope, keys) {
|
|
63
|
+
const checks = [];
|
|
64
|
+
const canonical = envelope.canonical;
|
|
65
|
+
const pub = envelope.public_key.toLowerCase();
|
|
66
|
+
const hash = sha256Hex(canonical);
|
|
67
|
+
if (envelope.payload !== undefined) {
|
|
68
|
+
const rebuilt = canonicalJson(envelope.payload) === canonical;
|
|
69
|
+
checks.push({ name: "payload_rebuilds_canonical", pass: rebuilt, detail: rebuilt ? undefined : "C(payload) != canonical" });
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
checks.push({ name: "payload_rebuilds_canonical", pass: null, detail: "no payload field; trust canonical only" });
|
|
73
|
+
}
|
|
74
|
+
if (typeof envelope.content_hash === "string") {
|
|
75
|
+
const ok = envelope.content_hash.toLowerCase() === hash;
|
|
76
|
+
checks.push({ name: "content_hash", pass: ok, detail: ok ? undefined : `sha256(canonical)=${hash}` });
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
checks.push({ name: "content_hash", pass: null, detail: `not in envelope; sha256(canonical)=${hash}` });
|
|
80
|
+
}
|
|
81
|
+
checks.push({ name: "signature", pass: ed25519Verify(pub, canonical, envelope.signature) });
|
|
82
|
+
if (typeof envelope.envelope_signature === "string") {
|
|
83
|
+
const { envelope_signature, ...rest } = envelope;
|
|
84
|
+
checks.push({ name: "envelope_signature", pass: ed25519Verify(pub, canonicalJson(rest), envelope_signature) });
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
checks.push({ name: "envelope_signature", pass: null, detail: "route does not sign the envelope" });
|
|
88
|
+
}
|
|
89
|
+
if (keys) {
|
|
90
|
+
const listed = keys.find((k) => k.public_key?.toLowerCase() === pub);
|
|
91
|
+
const ok = Boolean(listed && listed.active === true);
|
|
92
|
+
checks.push({
|
|
93
|
+
name: "key_in_predge_key_set",
|
|
94
|
+
pass: ok,
|
|
95
|
+
detail: listed ? (ok ? `kid ${listed.kid ?? pub.slice(0, 16)}` : "key listed but not active") : "public_key is NOT a Predge key",
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
checks.push({ name: "key_in_predge_key_set", pass: false, detail: "key set unavailable; signer not confirmed" });
|
|
100
|
+
}
|
|
101
|
+
return {
|
|
102
|
+
valid: checks.every((c) => c.pass !== false),
|
|
103
|
+
checks,
|
|
104
|
+
kid: pub.slice(0, 16),
|
|
105
|
+
content_hash: hash,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=verify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../src/verify.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@predge/whale-data-mcp",
|
|
3
|
-
"version": "0.1
|
|
4
|
-
"description": "MCP server exposing the Predge Whale Data x402 API (Polymarket whale trades
|
|
3
|
+
"version": "0.2.1",
|
|
4
|
+
"description": "MCP server exposing the Predge Whale Data x402 API (Polymarket whale trades, smart-money signals, signed attestations and free signed UMA settlement risk) as tools. Pays USDC per call under the hood via an x402 client; the operator supplies a funded buyer key.",
|
|
5
5
|
"mcpName": "io.github.predgeAI/whale-data-mcp",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"license": "MIT",
|
|
@@ -42,7 +42,8 @@
|
|
|
42
42
|
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
43
43
|
"dev": "tsx src/index.ts",
|
|
44
44
|
"inspect": "tsx src/dev-list-tools.ts",
|
|
45
|
-
"
|
|
45
|
+
"test": "tsx --test test/verify.test.ts test/server.test.ts",
|
|
46
|
+
"prepublishOnly": "npm run typecheck && npm test && npm run build"
|
|
46
47
|
},
|
|
47
48
|
"publishConfig": {
|
|
48
49
|
"access": "public"
|