@verusidx/data-mcp 0.1.3

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 ADDED
@@ -0,0 +1,100 @@
1
+ # @verusidx/data-mcp
2
+
3
+ MCP server for Verus on-chain data retrieval, decryption, signing, and verification. Completes the store-retrieve-decrypt pipeline that starts with `sendcurrency:data` (send-mcp), and provides signing/verification tools for off-chain data workflows.
4
+
5
+ ## Setup
6
+
7
+ **Prerequisite:** `@verusidx/chain-mcp` must be configured and `refresh_chains` called at least once so the chain registry exists.
8
+
9
+ Add to your MCP client config (e.g., Claude Code `claude_desktop_config.json`):
10
+
11
+ ```json
12
+ {
13
+ "mcpServers": {
14
+ "verusidx-data": {
15
+ "command": "npx",
16
+ "args": ["-y", "@verusidx/data-mcp"],
17
+ "env": {}
18
+ }
19
+ }
20
+ }
21
+ ```
22
+
23
+ **Alternative: local install.** If you prefer a pinned version or offline use, install into a project directory with `npm install @verusidx/data-mcp` (or `pnpm add` / `yarn add`) and point your config at the local path instead of using `npx`.
24
+
25
+ ### Environment Variables
26
+
27
+ | Variable | Default | Description |
28
+ |---|---|---|
29
+ | `VERUSIDX_READ_ONLY` | `false` | Set to `true` to disable write tools (`z_importviewingkey`). All other tools including `signdata` and `verifysignature` remain available. |
30
+ | `VERUSIDX_AUDIT_LOG` | `true` | Set to `false` to disable audit logging of write operations. |
31
+ | `VERUSIDX_AUDIT_DIR` | OS default | Custom directory for audit log files. |
32
+
33
+ ### Read-Only Mode
34
+
35
+ Set `VERUSIDX_READ_ONLY=true` to disable write tools. In read-only mode, 6 tools remain available:
36
+
37
+ - `z_listreceivedbyaddress` — list data/transactions received at a z-address
38
+ - `decryptdata` — decrypt on-chain data
39
+ - `z_exportviewingkey` — export viewing key for read-only decryption access
40
+ - `z_viewtransaction` — inspect shielded transaction details
41
+ - `signdata` — sign data (does not modify chain or wallet state)
42
+ - `verifysignature` — verify signatures (does not modify chain or wallet state)
43
+
44
+ Write tools (`z_importviewingkey`) are not registered and won't appear in the tool list.
45
+
46
+ You can set read-only mode independently per MCP server.
47
+
48
+ ## Tools
49
+
50
+ ### Always available (including read-only mode)
51
+
52
+ | Tool | Description |
53
+ |---|---|
54
+ | `z_listreceivedbyaddress` | List transactions and data received at a shielded address. Data txs have `amount: 0` with a data descriptor in the memo. |
55
+ | `decryptdata` | Decrypt on-chain data using a data descriptor, optional viewing key, and txid. Supports both z-address data and identity content. |
56
+ | `z_exportviewingkey` | Export the extended viewing key (EVK) for a z-address. Grants read-only decryption access. |
57
+ | `z_viewtransaction` | View detailed shielded transaction information including spends, outputs, and memos. |
58
+ | `signdata` | Sign data with a VerusID or R-address. Supports message, file, hex, base64, hash, and MMR inputs. Can encrypt to a z-address. |
59
+ | `verifysignature` | Verify a signature produced by `signdata`. Checks against identity keys at signing height or current keys. |
60
+
61
+ ### Write tools (disabled in read-only mode)
62
+
63
+ | Tool | Description |
64
+ |---|---|
65
+ | `z_importviewingkey` | Import a viewing key to enable decryption of data encrypted to another z-address. |
66
+
67
+ ## Data Workflow
68
+
69
+ ```
70
+ Store: sendcurrency:data (send-mcp)
71
+ |
72
+ List: z_listreceivedbyaddress (data-mcp)
73
+ |
74
+ Decrypt: decryptdata + z_exportviewingkey (data-mcp)
75
+
76
+ Sign: signdata (data-mcp)
77
+ Verify: verifysignature (data-mcp)
78
+
79
+ Share access: z_exportviewingkey -> z_importviewingkey (data-mcp)
80
+ ```
81
+
82
+ ### Retrieving encrypted data (step by step)
83
+
84
+ 1. **List received data** — call `z_listreceivedbyaddress` with the z-address. Data transactions appear with `amount: 0` and a memo containing the data descriptor.
85
+
86
+ 2. **Export viewing key** (if needed) — call `z_exportviewingkey` to get the EVK. Skip this if the wallet already holds the z-address spending key.
87
+
88
+ 3. **Decrypt** — call `decryptdata` with the data descriptor from step 1, the txid, `retrieve: true`, and the EVK from step 2. Returns hex-encoded decrypted content.
89
+
90
+ 4. **Decode** — the `objectdata` field is hex. For text messages, decode hex to UTF-8.
91
+
92
+ ## Audit Logging
93
+
94
+ Write operations (`z_importviewingkey`) are logged to date-stamped JSONL files in the audit directory. Each entry records the tool name, chain, parameters, result, and success status. Logs are append-only with `0600` permissions.
95
+
96
+ ## Requirements
97
+
98
+ - Node.js >= 18.0.0
99
+ - `@verusidx/chain-mcp` installed and `refresh_chains` called (chain registry must exist)
100
+ - At least one Verus daemon running for RPC tools
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/build/index.js ADDED
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env node
2
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
3
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
4
+ import { registerTools } from './tools.js';
5
+ const server = new McpServer({
6
+ name: 'verusidx-data-mcp',
7
+ version: '0.1.3',
8
+ });
9
+ registerTools(server);
10
+ const transport = new StdioServerTransport();
11
+ await server.connect(transport);
12
+ process.on('SIGINT', async () => {
13
+ await server.close();
14
+ process.exit(0);
15
+ });
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;IAC3B,IAAI,EAAE,mBAAmB;IACzB,OAAO,EAAE,OAAO;CACjB,CAAC,CAAC;AAEH,aAAa,CAAC,MAAM,CAAC,CAAC;AAEtB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;AAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAEhC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;IAC9B,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function registerTools(server: McpServer): void;
3
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAuCzE,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAkOrD"}
package/build/tools.js ADDED
@@ -0,0 +1,244 @@
1
+ import { z } from 'zod';
2
+ import { rpcCall, auditLog, isReadOnly, assertWriteEnabled, VerusError, } from '@verusidx/shared';
3
+ // ---------------------------------------------------------------------------
4
+ // Response helpers
5
+ // ---------------------------------------------------------------------------
6
+ function ok(data) {
7
+ return {
8
+ content: [{ type: 'text', text: JSON.stringify(data, null, 2) }],
9
+ };
10
+ }
11
+ function fail(category, message) {
12
+ return {
13
+ content: [{ type: 'text', text: JSON.stringify({ error: category, message }, null, 2) }],
14
+ isError: true,
15
+ };
16
+ }
17
+ function handleError(err) {
18
+ if (err instanceof VerusError) {
19
+ return fail(err.category, err.message);
20
+ }
21
+ return fail('INTERNAL_ERROR', err instanceof Error ? err.message : 'Unknown error');
22
+ }
23
+ const SERVER_NAME = 'verusidx-data-mcp';
24
+ // ---------------------------------------------------------------------------
25
+ // Tool registration
26
+ // ---------------------------------------------------------------------------
27
+ export function registerTools(server) {
28
+ // ------ Read-only tools (always registered) ------
29
+ // ---- Data retrieval pipeline ----
30
+ server.tool('z_listreceivedbyaddress', 'List transactions and data received at a shielded (z) address. Data transactions appear with amount: 0 and a memo containing the data descriptor (a JSON object keyed by the VDXF datadescriptor address). Use this as step 1 of the data retrieval pipeline: list received data, then pass the descriptor to decryptdata. Value transactions appear with their amount and standard memo.', {
31
+ chain: z.string().describe('Chain to query (e.g., "VRSC", "vrsctest")'),
32
+ address: z.string().describe('The shielded (zs-) address to list received transactions for.'),
33
+ minconf: z.number().optional().default(1).describe('Only include transactions confirmed at least this many times. Default: 1.'),
34
+ }, async ({ chain, address, minconf }) => {
35
+ try {
36
+ const result = await rpcCall(chain, 'z_listreceivedbyaddress', [address, minconf]);
37
+ return ok(result);
38
+ }
39
+ catch (err) {
40
+ return handleError(err);
41
+ }
42
+ });
43
+ server.tool('decryptdata', 'Decrypt data stored on-chain. Accepts a data descriptor (from z_listreceivedbyaddress memo), viewing key (EVK or IVK), and optional txid. With retrieve: true, the daemon fetches and decrypts the referenced data. Always pass the EVK (from z_exportviewingkey) — without it the daemon returns still-encrypted data even if the wallet holds the spending key. For encrypted identity content, pass the original encrypted DataDescriptor from signdata (not the on-chain version, which may have modified flags). Alternatively, use iddata to query and decrypt identity content by identityid and vdxfkey.', {
44
+ chain: z.string().describe('Chain to query (e.g., "VRSC", "vrsctest")'),
45
+ datadescriptor: z.record(z.unknown()).optional().describe('Data descriptor object to decrypt. Typically the JSON object from z_listreceivedbyaddress memo (the value under the i4GC1YGEVD21... VDXF key). Either datadescriptor or iddata is required.'),
46
+ iddata: z.object({
47
+ identityid: z.string().describe('Identity name or i-address to query content from.'),
48
+ vdxfkey: z.string().optional().describe('VDXF key (i-address) to filter content by.'),
49
+ startheight: z.number().optional().describe('Start block height for content query range.'),
50
+ endheight: z.number().optional().describe('End block height for content query range.'),
51
+ getlast: z.boolean().optional().describe('If true, return only the most recent content entry.'),
52
+ }).optional().describe('Query identity content and decrypt in one step. Alternative to datadescriptor. Returns an error if the identity has no stored content for the given parameters. Note: may fail for encrypted content stored via updateidentity due to flags modification.'),
53
+ evk: z.string().optional().describe('Sapling extended full viewing key for decryption. Always pass this — export via z_exportviewingkey. Without it, data is returned still encrypted.'),
54
+ ivk: z.string().optional().describe('Hex incoming viewing key for decryption.'),
55
+ txid: z.string().optional().describe('Transaction ID containing the data. Required when retrieve is true and the data references the same transaction.'),
56
+ retrieve: z.boolean().optional().describe('If true, fetch the data from its on-chain reference and decrypt. Default: false.'),
57
+ }, async ({ chain, datadescriptor, iddata, evk, ivk, txid, retrieve }) => {
58
+ try {
59
+ const decryptObj = {};
60
+ if (datadescriptor !== undefined)
61
+ decryptObj.datadescriptor = datadescriptor;
62
+ if (iddata !== undefined)
63
+ decryptObj.iddata = iddata;
64
+ if (evk !== undefined)
65
+ decryptObj.evk = evk;
66
+ if (ivk !== undefined)
67
+ decryptObj.ivk = ivk;
68
+ if (txid !== undefined)
69
+ decryptObj.txid = txid;
70
+ if (retrieve !== undefined)
71
+ decryptObj.retrieve = retrieve;
72
+ const result = await rpcCall(chain, 'decryptdata', [decryptObj]);
73
+ return ok(result);
74
+ }
75
+ catch (err) {
76
+ return handleError(err);
77
+ }
78
+ });
79
+ server.tool('z_exportviewingkey', 'Export the extended viewing key (EVK) for a shielded address. The viewing key allows decryption of all data encrypted to this z-address without granting spending authority. Share it to grant read-only access. Pass the returned key as the evk parameter to decryptdata.', {
80
+ chain: z.string().describe('Chain to query (e.g., "VRSC", "vrsctest")'),
81
+ address: z.string().describe('The shielded (zs-) address to export the viewing key for.'),
82
+ }, async ({ chain, address }) => {
83
+ try {
84
+ const result = await rpcCall(chain, 'z_exportviewingkey', [address]);
85
+ return ok(result);
86
+ }
87
+ catch (err) {
88
+ return handleError(err);
89
+ }
90
+ });
91
+ server.tool('z_viewtransaction', 'View detailed shielded transaction information including spends and outputs for a z-transaction in the wallet. Shows addresses, amounts, memos, and output indices. Useful for inspecting data-carrying transactions to understand their structure before decryption.', {
92
+ chain: z.string().describe('Chain to query (e.g., "VRSC", "vrsctest")'),
93
+ txid: z.string().describe('Transaction ID to inspect.'),
94
+ }, async ({ chain, txid }) => {
95
+ try {
96
+ const result = await rpcCall(chain, 'z_viewtransaction', [txid]);
97
+ return ok(result);
98
+ }
99
+ catch (err) {
100
+ return handleError(err);
101
+ }
102
+ });
103
+ // ---- Data signing and verification ----
104
+ server.tool('signdata', 'Sign data with a VerusID or transparent address. Generates a hash of the provided data and signs it. Supports multiple input modes (message, file, hex, base64, pre-computed hash) and hash algorithms (sha256, sha256D, blake2b, keccak256). Can sign a single piece of data or build a Merkle Mountain Range (MMR) over multiple items. For multi-sig identities, pass an existing partial signature to accumulate signatures. Can also encrypt data to a z-address via encrypttoaddress — returns both plaintext and encrypted versions with an SSK for selective disclosure. Available in read-only mode — signing does not spend funds or change blockchain/wallet state.', {
105
+ chain: z.string().describe('Chain to sign on (e.g., "VRSC", "vrsctest")'),
106
+ address: z.string().describe('VerusID name or R-address to sign with. A R-address produces a simple signature.'),
107
+ message: z.string().optional().describe('Text message to sign.'),
108
+ filename: z.string().optional().describe('File path to sign. Requires -enablefileencryption daemon flag.'),
109
+ messagehex: z.string().optional().describe('Hex-encoded data to sign.'),
110
+ messagebase64: z.string().optional().describe('Base64-encoded data to sign. Note: may not work in all daemon versions — prefer messagehex if base64 fails.'),
111
+ datahash: z.string().optional().describe('Pre-computed 256-bit hex hash to sign directly.'),
112
+ mmrdata: z.array(z.record(z.unknown())).optional().describe('Array of data objects for MMR signing. Each element: {"filename" or "message" or "serializedhex" or "serializedbase64" or "vdxfdata" or "datahash": "value"}.'),
113
+ mmrsalt: z.array(z.string()).optional().describe('Array of salt strings to protect privacy of MMR leaf nodes.'),
114
+ mmrhashtype: z.string().optional().describe('Hash type for MMR: "sha256", "sha256D", "blake2b", "keccak256". Default: "blake2b".'),
115
+ prefixstring: z.string().optional().describe('Extra string hashed during signing — must be supplied for verification.'),
116
+ vdxfkeys: z.array(z.string()).optional().describe('Array of VDXF keys or i-addresses to bind to the signature.'),
117
+ vdxfkeynames: z.array(z.string()).optional().describe('Array of VDXF key names or friendly name IDs (no i-addresses).'),
118
+ boundhashes: z.array(z.string()).optional().describe('Array of hex hashes to bind to the signature.'),
119
+ hashtype: z.string().optional().describe('Hash algorithm: "sha256" (default), "sha256D", "blake2b", "keccak256".'),
120
+ signature: z.string().optional().describe('Existing base64 signature for multi-sig accumulation.'),
121
+ encrypttoaddress: z.string().optional().describe('Sapling z-address to encrypt data to. Returns both encrypted and plaintext versions. The encrypted DataDescriptor can be stored on an identity via updateidentity or sent via sendcurrency.'),
122
+ createmmr: z.boolean().optional().describe('If true (or if multiple items are provided), returns MMR data and root signature.'),
123
+ }, async ({ chain, address, message, filename, messagehex, messagebase64, datahash, mmrdata, mmrsalt, mmrhashtype, prefixstring, vdxfkeys, vdxfkeynames, boundhashes, hashtype, signature, encrypttoaddress, createmmr }) => {
124
+ try {
125
+ const sigObj = { address };
126
+ if (message !== undefined)
127
+ sigObj.message = message;
128
+ if (filename !== undefined)
129
+ sigObj.filename = filename;
130
+ if (messagehex !== undefined)
131
+ sigObj.messagehex = messagehex;
132
+ if (messagebase64 !== undefined)
133
+ sigObj.messagebase64 = messagebase64;
134
+ if (datahash !== undefined)
135
+ sigObj.datahash = datahash;
136
+ if (mmrdata !== undefined)
137
+ sigObj.mmrdata = mmrdata;
138
+ if (mmrsalt !== undefined)
139
+ sigObj.mmrsalt = mmrsalt;
140
+ if (mmrhashtype !== undefined)
141
+ sigObj.mmrhashtype = mmrhashtype;
142
+ if (prefixstring !== undefined)
143
+ sigObj.prefixstring = prefixstring;
144
+ if (vdxfkeys !== undefined)
145
+ sigObj.vdxfkeys = vdxfkeys;
146
+ if (vdxfkeynames !== undefined)
147
+ sigObj.vdxfkeynames = vdxfkeynames;
148
+ if (boundhashes !== undefined)
149
+ sigObj.boundhashes = boundhashes;
150
+ if (hashtype !== undefined)
151
+ sigObj.hashtype = hashtype;
152
+ if (signature !== undefined)
153
+ sigObj.signature = signature;
154
+ if (encrypttoaddress !== undefined)
155
+ sigObj.encrypttoaddress = encrypttoaddress;
156
+ if (createmmr !== undefined)
157
+ sigObj.createmmr = createmmr;
158
+ const result = await rpcCall(chain, 'signdata', [sigObj]);
159
+ return ok(result);
160
+ }
161
+ catch (err) {
162
+ return handleError(err);
163
+ }
164
+ });
165
+ server.tool('verifysignature', 'Verify a signature produced by signdata. Checks that the signature is valid for the given data and identity/address. Returns signaturestatus: "verified" or "invalid" — always check this field. By default, validates against the identity\'s keys at the block height stored in the signature — use checklatest to verify against the identity\'s current keys instead.', {
166
+ chain: z.string().describe('Chain to verify on (e.g., "VRSC", "vrsctest")'),
167
+ address: z.string().describe('VerusID name or R-address to verify against.'),
168
+ message: z.string().optional().describe('Text message that was signed.'),
169
+ filename: z.string().optional().describe('File path that was signed.'),
170
+ messagehex: z.string().optional().describe('Hex-encoded data that was signed.'),
171
+ messagebase64: z.string().optional().describe('Base64-encoded data that was signed.'),
172
+ datahash: z.string().optional().describe('Pre-computed 256-bit hex hash that was signed.'),
173
+ prefixstring: z.string().optional().describe('Prefix string used during signing (must match).'),
174
+ vdxfkeys: z.array(z.string()).optional().describe('VDXF keys bound during signing (must match).'),
175
+ vdxfkeynames: z.array(z.string()).optional().describe('VDXF key names bound during signing (must match).'),
176
+ boundhashes: z.array(z.string()).optional().describe('Hashes bound during signing (must match).'),
177
+ hashtype: z.string().optional().describe('Hash algorithm used during signing. Default: "sha256".'),
178
+ signature: z.string().describe('Base64-encoded signature to verify.'),
179
+ checklatest: z.boolean().optional().describe('If true, verify against the identity\'s current keys. Default: false (verify against keys at the signing height stored in the signature).'),
180
+ }, async ({ chain, address, message, filename, messagehex, messagebase64, datahash, prefixstring, vdxfkeys, vdxfkeynames, boundhashes, hashtype, signature, checklatest }) => {
181
+ try {
182
+ // verifysignature builds a JSON object parameter
183
+ // Daemon param spec uses "address" key (despite example showing "identity")
184
+ const verifyObj = { address, signature };
185
+ // Daemon bug: verifysignature hashes "message" differently than signdata,
186
+ // producing a different hash for the same string. Convert message to messagehex
187
+ // so the raw bytes are hashed identically to signdata.
188
+ if (message !== undefined)
189
+ verifyObj.messagehex = Buffer.from(message, 'utf8').toString('hex');
190
+ if (filename !== undefined)
191
+ verifyObj.filename = filename;
192
+ if (messagehex !== undefined)
193
+ verifyObj.messagehex = messagehex;
194
+ if (messagebase64 !== undefined)
195
+ verifyObj.messagebase64 = messagebase64;
196
+ if (datahash !== undefined)
197
+ verifyObj.datahash = datahash;
198
+ if (prefixstring !== undefined)
199
+ verifyObj.prefixstring = prefixstring;
200
+ if (vdxfkeys !== undefined)
201
+ verifyObj.vdxfkeys = vdxfkeys;
202
+ if (vdxfkeynames !== undefined)
203
+ verifyObj.vdxfkeynames = vdxfkeynames;
204
+ if (boundhashes !== undefined)
205
+ verifyObj.boundhashes = boundhashes;
206
+ if (hashtype !== undefined)
207
+ verifyObj.hashtype = hashtype;
208
+ if (checklatest !== undefined)
209
+ verifyObj.checklatest = checklatest;
210
+ const result = await rpcCall(chain, 'verifysignature', [verifyObj]);
211
+ return ok(result);
212
+ }
213
+ catch (err) {
214
+ return handleError(err);
215
+ }
216
+ });
217
+ // ------ Write tools (registered only when not read-only) ------
218
+ if (!isReadOnly()) {
219
+ server.tool('z_importviewingkey', 'Import a viewing key to enable decryption of data encrypted to another z-address. Grants read-only access without spending authority. The key can be obtained from z_exportviewingkey. After import, decryptdata can decrypt data encrypted to that address without passing the key explicitly. Note: rescan can take minutes if scanning a large block range.', {
220
+ chain: z.string().describe('Chain to import on (e.g., "VRSC", "vrsctest")'),
221
+ vkey: z.string().describe('The viewing key to import (from z_exportviewingkey).'),
222
+ rescan: z.enum(['yes', 'no', 'whenkeyisnew']).optional().default('whenkeyisnew').describe('Whether to rescan the wallet for transactions: "yes", "no", or "whenkeyisnew" (default).'),
223
+ startHeight: z.number().optional().default(0).describe('Block height to start rescan from. Default: 0.'),
224
+ }, async ({ chain, vkey, rescan, startHeight }) => {
225
+ try {
226
+ assertWriteEnabled();
227
+ const result = await rpcCall(chain, 'z_importviewingkey', [vkey, rescan, startHeight]);
228
+ auditLog({
229
+ server: SERVER_NAME,
230
+ tool: 'z_importviewingkey',
231
+ chain,
232
+ params: { rescan, startHeight },
233
+ result,
234
+ success: true,
235
+ });
236
+ return ok(result);
237
+ }
238
+ catch (err) {
239
+ return handleError(err);
240
+ }
241
+ });
242
+ }
243
+ }
244
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,52 @@
1
+ {
2
+ "name": "@verusidx/data-mcp",
3
+ "version": "0.1.3",
4
+ "description": "MCP server for Verus on-chain data retrieval, decryption, signing, and verification",
5
+ "license": "MIT",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "git+https://github.com/vdappdev2/verusidx-mcp.git",
9
+ "directory": "packages/data"
10
+ },
11
+ "homepage": "https://github.com/vdappdev2/verusidx-mcp#readme",
12
+ "bugs": "https://github.com/vdappdev2/verusidx-mcp/issues",
13
+ "keywords": [
14
+ "verus",
15
+ "mcp",
16
+ "model-context-protocol",
17
+ "blockchain",
18
+ "ai-agents",
19
+ "data",
20
+ "encryption",
21
+ "decryption",
22
+ "signing",
23
+ "verification",
24
+ "privacy",
25
+ "sapling",
26
+ "shielded-transactions"
27
+ ],
28
+ "type": "module",
29
+ "bin": {
30
+ "verusidx-data-mcp": "build/index.js"
31
+ },
32
+ "files": [
33
+ "build"
34
+ ],
35
+ "scripts": {
36
+ "build": "tsc",
37
+ "test": "vitest run"
38
+ },
39
+ "engines": {
40
+ "node": ">=18.0.0"
41
+ },
42
+ "dependencies": {
43
+ "@modelcontextprotocol/sdk": "^1.27.0",
44
+ "@verusidx/shared": "workspace:*",
45
+ "zod": "^3.23.0"
46
+ },
47
+ "devDependencies": {
48
+ "@types/node": "^22.0.0",
49
+ "typescript": "^5.7.0",
50
+ "vitest": "^3.0.0"
51
+ }
52
+ }