@xrpl-utilities/mcp 0.2.166 → 0.2.170

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
@@ -42,6 +42,19 @@ Operators can set `MCP_BYPASS_KEY` on the server to enable an opt-in
42
42
  bypass for friendlies / demos. The caller passes the matching key as
43
43
  `_bypass_key` in the tool args. Rate-limited at the proxy layer.
44
44
 
45
+ ### H-Seal receipt co-signing (optional)
46
+
47
+ Set `PROVIDER_IDENTITY` (our CAIP-10, e.g. `xrpl:0:r...`) and
48
+ `PROVIDER_KEY_RAW` (32-byte ed25519 seed, hex) on the server to have every
49
+ tool response co-signed with an [H-Seal](https://h-seal.xr-utilities.com)
50
+ provider attestation. The attestation rides on the tool result's
51
+ `_meta.hSeal`, so a caller can anchor a tamper-evident, independently
52
+ verifiable on-chain receipt of the interaction. When either var is unset the
53
+ feature is inert and responses are unchanged. Never hardcode the key — env
54
+ only. See `src/hSeal.ts` and the ops runbook
55
+ [`docs/hseal-provider.md`](docs/hseal-provider.md) (current identity, the
56
+ ed25519 curve gotcha, and how to rotate/recover the key).
57
+
45
58
  ## Use it
46
59
 
47
60
  ### Locally via Claude Desktop (stdio)
@@ -0,0 +1,29 @@
1
+ /**
2
+ * H-Seal provider co-signing for the MCP surface.
3
+ *
4
+ * After a tool response is produced, the MCP server co-signs the
5
+ * (request, response) pair so the caller can anchor a tamper-evident,
6
+ * independently verifiable H-Seal receipt that carries our attestation that we
7
+ * served it. See https://h-seal.xr-utilities.com and the H-Series white paper.
8
+ *
9
+ * Configured entirely from env — never hardcode a signing key:
10
+ * PROVIDER_IDENTITY our CAIP-10 identity, e.g. "xrpl:0:r..."
11
+ * (or "hedera:mainnet:0.0.x")
12
+ * PROVIDER_KEY_RAW 32-byte ed25519 seed (hex) for that identity
13
+ *
14
+ * When either is unset the module is inert: attest() returns undefined and the
15
+ * response path is untouched. That keeps the live server safe if the key is not
16
+ * provisioned yet, and makes co-signing strictly additive — a paid tool call
17
+ * that succeeds today keeps succeeding whether or not H-Seal is configured.
18
+ */
19
+ import { HSealProvider, type ProviderAttestation } from "@xr-utilities/h-seal-provider";
20
+ /** True when both PROVIDER_IDENTITY and PROVIDER_KEY_RAW are present. */
21
+ export declare const hSealEnabled: boolean;
22
+ /**
23
+ * Co-sign a request/response pair. Returns the provider attestation, or
24
+ * undefined when H-Seal is not configured. Never throws: a receipt-signing
25
+ * failure must not break the paid tool call it decorates.
26
+ */
27
+ export declare function attest(request: unknown, response: unknown): Promise<ProviderAttestation | undefined>;
28
+ /** The configured provider (null when env is unset). Exposed for smokes/tests. */
29
+ export declare const hSeal: HSealProvider | null;
package/dist/hSeal.js ADDED
@@ -0,0 +1,49 @@
1
+ /**
2
+ * H-Seal provider co-signing for the MCP surface.
3
+ *
4
+ * After a tool response is produced, the MCP server co-signs the
5
+ * (request, response) pair so the caller can anchor a tamper-evident,
6
+ * independently verifiable H-Seal receipt that carries our attestation that we
7
+ * served it. See https://h-seal.xr-utilities.com and the H-Series white paper.
8
+ *
9
+ * Configured entirely from env — never hardcode a signing key:
10
+ * PROVIDER_IDENTITY our CAIP-10 identity, e.g. "xrpl:0:r..."
11
+ * (or "hedera:mainnet:0.0.x")
12
+ * PROVIDER_KEY_RAW 32-byte ed25519 seed (hex) for that identity
13
+ *
14
+ * When either is unset the module is inert: attest() returns undefined and the
15
+ * response path is untouched. That keeps the live server safe if the key is not
16
+ * provisioned yet, and makes co-signing strictly additive — a paid tool call
17
+ * that succeeds today keeps succeeding whether or not H-Seal is configured.
18
+ */
19
+ import { HSealProvider, ed25519Signer, } from "@xr-utilities/h-seal-provider";
20
+ const identity = process.env["PROVIDER_IDENTITY"];
21
+ const keyRaw = process.env["PROVIDER_KEY_RAW"];
22
+ /** True when both PROVIDER_IDENTITY and PROVIDER_KEY_RAW are present. */
23
+ export const hSealEnabled = Boolean(identity && keyRaw);
24
+ const provider = hSealEnabled
25
+ ? new HSealProvider({
26
+ identity: identity,
27
+ signer: ed25519Signer(keyRaw),
28
+ network: "mainnet",
29
+ })
30
+ : null;
31
+ /**
32
+ * Co-sign a request/response pair. Returns the provider attestation, or
33
+ * undefined when H-Seal is not configured. Never throws: a receipt-signing
34
+ * failure must not break the paid tool call it decorates.
35
+ */
36
+ export async function attest(request, response) {
37
+ if (!provider)
38
+ return undefined;
39
+ try {
40
+ return await provider.attest({ request, response });
41
+ }
42
+ catch (err) {
43
+ console.error(`[hSeal] attest failed, returning response without attestation: ${err.message}`);
44
+ return undefined;
45
+ }
46
+ }
47
+ /** The configured provider (null when env is unset). Exposed for smokes/tests. */
48
+ export const hSeal = provider;
49
+ //# sourceMappingURL=hSeal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hSeal.js","sourceRoot":"","sources":["../src/hSeal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EACL,aAAa,EACb,aAAa,GAEd,MAAM,+BAA+B,CAAC;AAEvC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;AAClD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;AAE/C,yEAAyE;AACzE,MAAM,CAAC,MAAM,YAAY,GAAY,OAAO,CAAC,QAAQ,IAAI,MAAM,CAAC,CAAC;AAEjE,MAAM,QAAQ,GAAyB,YAAY;IACjD,CAAC,CAAC,IAAI,aAAa,CAAC;QAChB,QAAQ,EAAE,QAAkB;QAC5B,MAAM,EAAE,aAAa,CAAC,MAAgB,CAAC;QACvC,OAAO,EAAE,SAAS;KACnB,CAAC;IACJ,CAAC,CAAC,IAAI,CAAC;AAET;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,OAAgB,EAChB,QAAiB;IAEjB,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC;IAChC,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;IACtD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CACX,kEACG,GAAa,CAAC,OACjB,EAAE,CACH,CAAC;QACF,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,kFAAkF;AAClF,MAAM,CAAC,MAAM,KAAK,GAAG,QAAQ,CAAC"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * 2-party H-Seal receipt assembly.
3
+ *
4
+ * When a backend co-signs its own output (returning an `hSealAttestation` on the
5
+ * result), the MCP is the CALLER: it signs a receipt binding
6
+ * caller = the MCP (this gateway identity)
7
+ * provider = the backend that computed + attested the result
8
+ * and re-verifies it against the H-Seal service. The signed receipt body plus
9
+ * the verdict ride on the tool result's `_meta.hSealReceipt`.
10
+ *
11
+ * An H-Seal receipt carries caller + exactly ONE provider, so this is distinct
12
+ * from the MCP's own gateway attestation (`_meta.hSeal`), which stays as
13
+ * supplementary metadata.
14
+ *
15
+ * Caller identity/key come from MCP_IDENTITY / MCP_KEY_RAW, falling back to the
16
+ * gateway PROVIDER_IDENTITY / PROVIDER_KEY_RAW (same key, caller role here) so
17
+ * no new secret is required. Inert when unset. NB: the H-Seal API host is
18
+ * h-seal.xr-utilities.ai (the .com host is a browser-only, Cloudflare-challenged
19
+ * surface and returns 403 to server clients).
20
+ */
21
+ export declare const hSealReceiptEnabled: boolean;
22
+ export interface HSealReceiptResult {
23
+ body: unknown;
24
+ verdict?: unknown;
25
+ verifyError?: string;
26
+ }
27
+ /**
28
+ * Build + verify a 2-party receipt from a backend provider attestation. Always
29
+ * returns the signed `body` (valid + independently verifiable) when signing
30
+ * succeeds; `verdict` is best-effort — if the H-Seal service is unreachable the
31
+ * body still stands and `verifyError` records why. Returns undefined only when
32
+ * H-Seal isn't configured or the attestation is malformed. Never throws.
33
+ */
34
+ export declare function buildReceipt(opts: {
35
+ serviceEndpoint: string;
36
+ attestation: unknown;
37
+ startedAt: number;
38
+ completedAt: number;
39
+ latencyMs: number;
40
+ }): Promise<HSealReceiptResult | undefined>;
@@ -0,0 +1,79 @@
1
+ /**
2
+ * 2-party H-Seal receipt assembly.
3
+ *
4
+ * When a backend co-signs its own output (returning an `hSealAttestation` on the
5
+ * result), the MCP is the CALLER: it signs a receipt binding
6
+ * caller = the MCP (this gateway identity)
7
+ * provider = the backend that computed + attested the result
8
+ * and re-verifies it against the H-Seal service. The signed receipt body plus
9
+ * the verdict ride on the tool result's `_meta.hSealReceipt`.
10
+ *
11
+ * An H-Seal receipt carries caller + exactly ONE provider, so this is distinct
12
+ * from the MCP's own gateway attestation (`_meta.hSeal`), which stays as
13
+ * supplementary metadata.
14
+ *
15
+ * Caller identity/key come from MCP_IDENTITY / MCP_KEY_RAW, falling back to the
16
+ * gateway PROVIDER_IDENTITY / PROVIDER_KEY_RAW (same key, caller role here) so
17
+ * no new secret is required. Inert when unset. NB: the H-Seal API host is
18
+ * h-seal.xr-utilities.ai (the .com host is a browser-only, Cloudflare-challenged
19
+ * surface and returns 403 to server clients).
20
+ */
21
+ import { randomUUID } from "node:crypto";
22
+ import { signReceipt, attachAttestation, HSealClient, ed25519Signer, } from "@xr-utilities/h-seal-provider";
23
+ const HSEAL_API = process.env["HSEAL_ENDPOINT"] ?? "https://h-seal.xr-utilities.ai";
24
+ const RECEIPT_TOPIC = process.env["HSEAL_RECEIPT_TOPIC"] ?? "0.0.10500472";
25
+ const callerIdentity = process.env["MCP_IDENTITY"] ?? process.env["PROVIDER_IDENTITY"];
26
+ const callerKeyRaw = process.env["MCP_KEY_RAW"] ?? process.env["PROVIDER_KEY_RAW"];
27
+ export const hSealReceiptEnabled = Boolean(callerIdentity && callerKeyRaw);
28
+ function looksLikeAttestation(a) {
29
+ return (typeof a === "object" && a !== null &&
30
+ typeof a["requestHash"] === "string" &&
31
+ typeof a["responseHash"] === "string" &&
32
+ typeof a["providerIdentity"] === "string");
33
+ }
34
+ /**
35
+ * Build + verify a 2-party receipt from a backend provider attestation. Always
36
+ * returns the signed `body` (valid + independently verifiable) when signing
37
+ * succeeds; `verdict` is best-effort — if the H-Seal service is unreachable the
38
+ * body still stands and `verifyError` records why. Returns undefined only when
39
+ * H-Seal isn't configured or the attestation is malformed. Never throws.
40
+ */
41
+ export async function buildReceipt(opts) {
42
+ if (!hSealReceiptEnabled)
43
+ return undefined;
44
+ if (!looksLikeAttestation(opts.attestation))
45
+ return undefined;
46
+ const att = opts.attestation;
47
+ try {
48
+ const signed = await signReceipt({
49
+ receipt: {
50
+ taskId: randomUUID(),
51
+ serviceEndpoint: opts.serviceEndpoint,
52
+ requestHash: att.requestHash, // MUST equal the attestation's
53
+ responseHash: att.responseHash, // MUST equal the attestation's
54
+ resultStatus: "success",
55
+ startedAt: opts.startedAt,
56
+ completedAt: opts.completedAt,
57
+ latencyMs: opts.latencyMs,
58
+ callerIdentity: callerIdentity, // signed verbatim
59
+ providerIdentity: att.providerIdentity,
60
+ receiptTopicId: RECEIPT_TOPIC,
61
+ },
62
+ signer: ed25519Signer(callerKeyRaw),
63
+ network: "mainnet",
64
+ });
65
+ const body = attachAttestation(signed.body, att);
66
+ try {
67
+ const verdict = await new HSealClient({ endpoint: HSEAL_API }).verify(body);
68
+ return { body, verdict };
69
+ }
70
+ catch (err) {
71
+ return { body, verifyError: err.message };
72
+ }
73
+ }
74
+ catch (err) {
75
+ console.error(`[hSealReceipt] sign failed: ${err.message}`);
76
+ return undefined;
77
+ }
78
+ }
79
+ //# sourceMappingURL=hSealReceipt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hSealReceipt.js","sourceRoot":"","sources":["../src/hSealReceipt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,WAAW,EACX,aAAa,GAEd,MAAM,+BAA+B,CAAC;AAEvC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,gCAAgC,CAAC;AACpF,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,cAAc,CAAC;AAC3E,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;AACvF,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;AAEnF,MAAM,CAAC,MAAM,mBAAmB,GAAY,OAAO,CAAC,cAAc,IAAI,YAAY,CAAC,CAAC;AAQpF,SAAS,oBAAoB,CAAC,CAAU;IACtC,OAAO,CACL,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI;QACnC,OAAQ,CAA6B,CAAC,aAAa,CAAC,KAAK,QAAQ;QACjE,OAAQ,CAA6B,CAAC,cAAc,CAAC,KAAK,QAAQ;QAClE,OAAQ,CAA6B,CAAC,kBAAkB,CAAC,KAAK,QAAQ,CACvE,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAMlC;IACC,IAAI,CAAC,mBAAmB;QAAE,OAAO,SAAS,CAAC;IAC3C,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC;QAAE,OAAO,SAAS,CAAC;IAC9D,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC;IAC7B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC;YAC/B,OAAO,EAAE;gBACP,MAAM,EAAE,UAAU,EAAE;gBACpB,eAAe,EAAE,IAAI,CAAC,eAAe;gBACrC,WAAW,EAAE,GAAG,CAAC,WAAW,EAAI,+BAA+B;gBAC/D,YAAY,EAAE,GAAG,CAAC,YAAY,EAAE,+BAA+B;gBAC/D,YAAY,EAAE,SAAS;gBACvB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,cAAc,EAAE,cAAwB,EAAI,kBAAkB;gBAC9D,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;gBACtC,cAAc,EAAE,aAAa;aAC9B;YACD,MAAM,EAAE,aAAa,CAAC,YAAsB,CAAC;YAC7C,OAAO,EAAE,SAAS;SACnB,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACjD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,WAAW,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC5E,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAC3B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,IAAI,EAAE,WAAW,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC;QACvD,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,+BAAgC,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QACvE,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
package/dist/server.js CHANGED
@@ -8,6 +8,8 @@ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
8
8
  import { CallToolRequestSchema, ListResourcesRequestSchema, ListToolsRequestSchema, ReadResourceRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
9
9
  import { ALL_TOOLS, SERVICES } from "./services/index.js";
10
10
  import { dispatchTool } from "./dispatch.js";
11
+ import { attest } from "./hSeal.js";
12
+ import { buildReceipt } from "./hSealReceipt.js";
11
13
  import { SERVER_VERSION } from "./version.js";
12
14
  const SERVER_NAME = "xrpl-utilities";
13
15
  export function buildServer(opts = {}) {
@@ -37,14 +39,52 @@ export function buildServer(opts = {}) {
37
39
  server.setRequestHandler(CallToolRequestSchema, async (req) => {
38
40
  const args = (req.params.arguments ?? {});
39
41
  try {
42
+ const startedMs = Date.now();
40
43
  const result = await dispatchTool(req.params.name, args, opts);
44
+ const endedMs = Date.now();
45
+ // Co-sign the (request, response) pair so the caller can anchor a
46
+ // tamper-evident H-Seal receipt carrying our attestation that we served
47
+ // it. Strip transport-only secrets from the signed request so the
48
+ // attestation stays reproducible and never folds a payment signature or
49
+ // bypass key into the receipt hash. No-op when H-Seal env is unset.
50
+ const signedArgs = { ...args };
51
+ delete signedArgs["payment_signature"];
52
+ delete signedArgs["_bypass_key"];
53
+ // If the backend co-signed its OWN output, build a 2-party receipt:
54
+ // caller = this MCP, provider = that backend. Split the provider
55
+ // attestation out of the displayed result and into _meta.hSealReceipt.
56
+ // Two shapes carry it: `hSealAttestation` (backend attaches it via its
57
+ // own /attest call) or `_hSeal` (the H-Seal v0.3.0 proxy sidecar merges
58
+ // it into every response). Accept either; prefer hSealAttestation.
59
+ let displayResult = result;
60
+ let hSealReceipt;
61
+ if (result &&
62
+ typeof result === "object" &&
63
+ ("hSealAttestation" in result || "_hSeal" in result)) {
64
+ const { hSealAttestation, _hSeal, ...clean } = result;
65
+ displayResult = clean;
66
+ hSealReceipt = await buildReceipt({
67
+ serviceEndpoint: "https://mcp.xrpl-utilities.io",
68
+ attestation: hSealAttestation ?? _hSeal,
69
+ startedAt: Math.floor(startedMs / 1000),
70
+ completedAt: Math.floor(endedMs / 1000),
71
+ latencyMs: endedMs - startedMs,
72
+ });
73
+ }
74
+ const attestation = await attest({ tool: req.params.name, args: signedArgs }, displayResult);
75
+ const meta = {};
76
+ if (attestation)
77
+ meta.hSeal = attestation;
78
+ if (hSealReceipt)
79
+ meta.hSealReceipt = hSealReceipt;
41
80
  return {
42
81
  content: [
43
82
  {
44
83
  type: "text",
45
- text: typeof result === "string" ? result : JSON.stringify(result, null, 2),
84
+ text: typeof displayResult === "string" ? displayResult : JSON.stringify(displayResult, null, 2),
46
85
  },
47
86
  ],
87
+ ...(Object.keys(meta).length ? { _meta: meta } : {}),
48
88
  };
49
89
  }
50
90
  catch (e) {
@@ -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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"}
@@ -12,7 +12,7 @@ export const sentinel = {
12
12
  label: "XR-Sentinel",
13
13
  baseUrl: "https://sentinel.xrpl-utilities.io",
14
14
  manifestUrl: "https://sentinel.xrpl-utilities.io/agents.json",
15
- knownSchemaVersions: ["2026-09", "2.8.0", "2.9.0", "2.10.0", "2.11.0", "2.12.0", "2.13.0", "2.14.0", "2.15.0", "2.16.0", "2.17.0", "2.18.0", "2.19.0", "2.19.1", "2.19.2", "2.19.3", "2.20.0", "2.20.1", "2.21.0", "2.22.0", "2.23.0", "2.24.0", "2.25.0", "2.26.0", "2.27.0", "2.28.0", "2.29.0", "2.30.0", "2.31.0", "2.32.0", "2.33.0"],
15
+ knownSchemaVersions: ["2026-09", "2.8.0", "2.9.0", "2.10.0", "2.11.0", "2.12.0", "2.13.0", "2.14.0", "2.15.0", "2.16.0", "2.17.0", "2.18.0", "2.19.0", "2.19.1", "2.19.2", "2.19.3", "2.20.0", "2.20.1", "2.21.0", "2.22.0", "2.23.0", "2.24.0", "2.25.0", "2.26.0", "2.27.0", "2.28.0", "2.29.0", "2.30.0", "2.31.0", "2.32.0", "2.33.0", "2.33.1"],
16
16
  tools: [
17
17
  {
18
18
  name: "xrpl_sentinel_scan",
@@ -1 +1 @@
1
- {"version":3,"file":"sentinel.js","sourceRoot":"","sources":["../../src/services/sentinel.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,MAAM,CAAC,MAAM,QAAQ,GAAe;IAClC,EAAE,EAAE,UAAU;IACd,KAAK,EAAE,aAAa;IACpB,OAAO,EAAE,oCAAoC;IAC7C,WAAW,EAAE,gDAAgD;IAC7D,mBAAmB,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;IAC1U,KAAK,EAAE;QACL;YACE,IAAI,EAAE,oBAAoB;YAC1B,WAAW,EACT,oBAAoB;gBACpB,wFAAwF;gBACxF,uFAAuF;YACzF,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,OAAO,EAAE;wBACP,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,iBAAiB;wBAC9B,OAAO,EAAE,gCAAgC;qBAC1C;oBACD,iBAAiB,EAAE;wBACjB,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,sBAAsB;qBACpC;iBACF;gBACD,QAAQ,EAAE,CAAC,SAAS,CAAC;gBACrB,oBAAoB,EAAE,KAAK;aAC5B;YACD,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,aAAa;YACvB,YAAY,EAAE,IAAI;YAClB,SAAS,EAAE,CAAC,mBAAmB,CAAC;SACjC;QACD;YACE,IAAI,EAAE,4BAA4B;YAClC,WAAW,EACT,oBAAoB;gBACpB,yFAAyF;YAC3F,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,OAAO,EAAE;wBACP,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,iBAAiB;wBAC9B,OAAO,EAAE,gCAAgC;qBAC1C;oBACD,iBAAiB,EAAE;wBACjB,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,sBAAsB;qBACpC;iBACF;gBACD,QAAQ,EAAE,CAAC,SAAS,CAAC;gBACrB,oBAAoB,EAAE,KAAK;aAC5B;YACD,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,eAAe;YACrB,QAAQ,EAAE,aAAa;YACvB,YAAY,EAAE,IAAI;YAClB,SAAS,EAAE,CAAC,mBAAmB,CAAC;SACjC;KACF;CACF,CAAC"}
1
+ {"version":3,"file":"sentinel.js","sourceRoot":"","sources":["../../src/services/sentinel.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,MAAM,CAAC,MAAM,QAAQ,GAAe;IAClC,EAAE,EAAE,UAAU;IACd,KAAK,EAAE,aAAa;IACpB,OAAO,EAAE,oCAAoC;IAC7C,WAAW,EAAE,gDAAgD;IAC7D,mBAAmB,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;IACpV,KAAK,EAAE;QACL;YACE,IAAI,EAAE,oBAAoB;YAC1B,WAAW,EACT,oBAAoB;gBACpB,wFAAwF;gBACxF,uFAAuF;YACzF,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,OAAO,EAAE;wBACP,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,iBAAiB;wBAC9B,OAAO,EAAE,gCAAgC;qBAC1C;oBACD,iBAAiB,EAAE;wBACjB,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,sBAAsB;qBACpC;iBACF;gBACD,QAAQ,EAAE,CAAC,SAAS,CAAC;gBACrB,oBAAoB,EAAE,KAAK;aAC5B;YACD,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,aAAa;YACvB,YAAY,EAAE,IAAI;YAClB,SAAS,EAAE,CAAC,mBAAmB,CAAC;SACjC;QACD;YACE,IAAI,EAAE,4BAA4B;YAClC,WAAW,EACT,oBAAoB;gBACpB,yFAAyF;YAC3F,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,OAAO,EAAE;wBACP,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,iBAAiB;wBAC9B,OAAO,EAAE,gCAAgC;qBAC1C;oBACD,iBAAiB,EAAE;wBACjB,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,sBAAsB;qBACpC;iBACF;gBACD,QAAQ,EAAE,CAAC,SAAS,CAAC;gBACrB,oBAAoB,EAAE,KAAK;aAC5B;YACD,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,eAAe;YACrB,QAAQ,EAAE,aAAa;YACvB,YAAY,EAAE,IAAI;YAClB,SAAS,EAAE,CAAC,mBAAmB,CAAC;SACjC;KACF;CACF,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xrpl-utilities/mcp",
3
- "version": "0.2.166",
3
+ "version": "0.2.170",
4
4
  "mcpName": "io.github.XRPL-Utilities/mcp",
5
5
  "description": "Model Context Protocol server for the XRPL-Utilities portfolio: Sentinel (wallet classifier), Pulse (signal feed), Telemetry (supply + utility floor), Trust (XLS-70/80/81 directory), Vault (RWA tracker), and Flows (ETF AUM vs XRPL flow correlation). Exposes each service's read endpoints as MCP tools so AI agents can discover and use them via stdio (Claude Desktop) or HTTP/SSE (hosted at mcp.xrpl-utilities.io). Stateless passthrough. Caller provides their own x402 payment header.",
6
6
  "license": "MIT",
@@ -22,6 +22,7 @@
22
22
  },
23
23
  "dependencies": {
24
24
  "@modelcontextprotocol/sdk": "^1.0.0",
25
+ "@xr-utilities/h-seal-provider": "github:XR-Utilities/h-seal-provider#v0.2.0",
25
26
  "express": "^4.21.0"
26
27
  },
27
28
  "devDependencies": {