@sardis/mcp-server 0.1.0

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.
Files changed (70) hide show
  1. package/CHANGELOG.md +69 -0
  2. package/CLAUDE_DESKTOP_CONFIG.md +180 -0
  3. package/LICENSE +21 -0
  4. package/README.md +375 -0
  5. package/dist/api.d.ts +25 -0
  6. package/dist/api.d.ts.map +1 -0
  7. package/dist/api.js +70 -0
  8. package/dist/api.js.map +1 -0
  9. package/dist/cli.d.ts +12 -0
  10. package/dist/cli.d.ts.map +1 -0
  11. package/dist/cli.js +274 -0
  12. package/dist/cli.js.map +1 -0
  13. package/dist/config.d.ts +47 -0
  14. package/dist/config.d.ts.map +1 -0
  15. package/dist/config.js +82 -0
  16. package/dist/config.js.map +1 -0
  17. package/dist/index.d.ts +61 -0
  18. package/dist/index.d.ts.map +1 -0
  19. package/dist/index.js +255 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/tools/agents.d.ts +7 -0
  22. package/dist/tools/agents.d.ts.map +1 -0
  23. package/dist/tools/agents.js +219 -0
  24. package/dist/tools/agents.js.map +1 -0
  25. package/dist/tools/approvals.d.ts +9 -0
  26. package/dist/tools/approvals.d.ts.map +1 -0
  27. package/dist/tools/approvals.js +308 -0
  28. package/dist/tools/approvals.js.map +1 -0
  29. package/dist/tools/cards.d.ts +9 -0
  30. package/dist/tools/cards.d.ts.map +1 -0
  31. package/dist/tools/cards.js +415 -0
  32. package/dist/tools/cards.js.map +1 -0
  33. package/dist/tools/fiat.d.ts +9 -0
  34. package/dist/tools/fiat.d.ts.map +1 -0
  35. package/dist/tools/fiat.js +394 -0
  36. package/dist/tools/fiat.js.map +1 -0
  37. package/dist/tools/holds.d.ts +7 -0
  38. package/dist/tools/holds.d.ts.map +1 -0
  39. package/dist/tools/holds.js +403 -0
  40. package/dist/tools/holds.js.map +1 -0
  41. package/dist/tools/index.d.ts +70 -0
  42. package/dist/tools/index.d.ts.map +1 -0
  43. package/dist/tools/index.js +152 -0
  44. package/dist/tools/index.js.map +1 -0
  45. package/dist/tools/payments.d.ts +47 -0
  46. package/dist/tools/payments.d.ts.map +1 -0
  47. package/dist/tools/payments.js +447 -0
  48. package/dist/tools/payments.js.map +1 -0
  49. package/dist/tools/policy.d.ts +41 -0
  50. package/dist/tools/policy.d.ts.map +1 -0
  51. package/dist/tools/policy.js +450 -0
  52. package/dist/tools/policy.js.map +1 -0
  53. package/dist/tools/spending.d.ts +9 -0
  54. package/dist/tools/spending.d.ts.map +1 -0
  55. package/dist/tools/spending.js +324 -0
  56. package/dist/tools/spending.js.map +1 -0
  57. package/dist/tools/types.d.ts +247 -0
  58. package/dist/tools/types.d.ts.map +1 -0
  59. package/dist/tools/types.js +71 -0
  60. package/dist/tools/types.js.map +1 -0
  61. package/dist/tools/wallet-management.d.ts +9 -0
  62. package/dist/tools/wallet-management.d.ts.map +1 -0
  63. package/dist/tools/wallet-management.js +222 -0
  64. package/dist/tools/wallet-management.js.map +1 -0
  65. package/dist/tools/wallets.d.ts +15 -0
  66. package/dist/tools/wallets.d.ts.map +1 -0
  67. package/dist/tools/wallets.js +112 -0
  68. package/dist/tools/wallets.js.map +1 -0
  69. package/mcp.json +283 -0
  70. package/package.json +145 -0
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Sardis MCP Server - Payment Tools
3
+ *
4
+ * Tools for executing payments and checking transaction status.
5
+ */
6
+ import type { ToolDefinition, ToolHandler } from './types.js';
7
+ interface PaymentResult {
8
+ payment_id: string;
9
+ status: string;
10
+ tx_hash?: string;
11
+ chain: string;
12
+ ledger_tx_id?: string;
13
+ audit_anchor?: string;
14
+ }
15
+ interface LedgerEntry {
16
+ id?: string;
17
+ payment_id?: string;
18
+ status?: string;
19
+ vendor?: string;
20
+ token?: string;
21
+ tx_id: string;
22
+ mandate_id?: string;
23
+ from_wallet?: string;
24
+ to_wallet?: string;
25
+ amount: string;
26
+ currency: string;
27
+ chain?: string;
28
+ chain_tx_hash?: string;
29
+ audit_anchor?: string;
30
+ created_at: string;
31
+ }
32
+ /**
33
+ * Execute payment mandate via API
34
+ */
35
+ export declare function executePayment(vendor: string, amount: number, purpose: string, vendorAddress?: string, token?: string): Promise<PaymentResult>;
36
+ /**
37
+ * Get transaction by ID
38
+ */
39
+ export declare function getTransaction(transactionId: string): Promise<LedgerEntry>;
40
+ /**
41
+ * List transactions with optional filters
42
+ */
43
+ export declare function listTransactions(limit?: number, offset?: number, status?: string): Promise<LedgerEntry[]>;
44
+ export declare const paymentToolDefinitions: ToolDefinition[];
45
+ export declare const paymentToolHandlers: Record<string, ToolHandler>;
46
+ export {};
47
+ //# sourceMappingURL=payments.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payments.d.ts","sourceRoot":"","sources":["../../src/tools/payments.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAc,MAAM,YAAY,CAAC;AAO1E,UAAU,aAAa;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,UAAU,WAAW;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB;AA4CD;;GAEG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,aAAa,CAAC,EAAE,MAAM,EACtB,KAAK,GAAE,MAAe,GACrB,OAAO,CAAC,aAAa,CAAC,CAuDxB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CA4BhF;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,GAAE,MAAW,EAClB,MAAM,GAAE,MAAU,EAClB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,WAAW,EAAE,CAAC,CAsDxB;AAGD,eAAO,MAAM,sBAAsB,EAAE,cAAc,EAsElD,CAAC;AAGF,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAwP3D,CAAC"}
@@ -0,0 +1,447 @@
1
+ /**
2
+ * Sardis MCP Server - Payment Tools
3
+ *
4
+ * Tools for executing payments and checking transaction status.
5
+ */
6
+ import { z } from 'zod';
7
+ import { PaymentRequestSchema, TransactionQuerySchema } from './types.js';
8
+ import { apiRequest } from '../api.js';
9
+ import { getConfig } from '../config.js';
10
+ import { checkPolicy } from './policy.js';
11
+ function buildDecisionEnvelope(input) {
12
+ const config = getConfig();
13
+ const decisionId = input.payment_id
14
+ ? `dec_${input.payment_id}`
15
+ : `dec_${Date.now().toString(36)}${Math.random().toString(36).slice(2, 8)}`;
16
+ return {
17
+ decision_id: decisionId,
18
+ outcome: input.outcome,
19
+ reason_code: input.reason_code,
20
+ reason: input.reason,
21
+ context: {
22
+ agent_id: config.agentId || null,
23
+ wallet_id: config.walletId || null,
24
+ chain: input.chain,
25
+ mode: config.mode,
26
+ payment_identity_id: process.env.SARDIS_PAYMENT_IDENTITY || null,
27
+ },
28
+ };
29
+ }
30
+ /**
31
+ * Execute payment mandate via API
32
+ */
33
+ export async function executePayment(vendor, amount, purpose, vendorAddress, token = 'USDC') {
34
+ const config = getConfig();
35
+ if (!config.apiKey || config.mode === 'simulated') {
36
+ // SECURITY: Log a warning when falling into simulated mode.
37
+ // Without an explicit API key, ALL payments silently succeed without executing
38
+ // on-chain. If this happens in production due to a missing env var, real
39
+ // payments appear successful but no money actually moves.
40
+ if (!config.apiKey) {
41
+ console.error('[SARDIS SECURITY WARNING] No API key configured — all payments are SIMULATED. '
42
+ + 'Set SARDIS_API_KEY to enable real transactions. '
43
+ + 'If this is intentional, set SARDIS_MODE=simulated explicitly.');
44
+ }
45
+ // Return simulated result with unique ID
46
+ const uniqueId = `${Date.now().toString(36)}${Math.random().toString(36).substring(2, 6)}`;
47
+ return {
48
+ payment_id: `pay_sim_${uniqueId}`,
49
+ status: 'simulated',
50
+ tx_hash: '0x' + Math.random().toString(16).substring(2).padEnd(64, '0'),
51
+ chain: config.chain,
52
+ ledger_tx_id: `ltx_sim_${uniqueId}`,
53
+ audit_anchor: `merkle::sim::${uniqueId}`,
54
+ };
55
+ }
56
+ if (!vendorAddress) {
57
+ throw new Error('vendorAddress is required in live mode (destination address)');
58
+ }
59
+ const transfer = await apiRequest('POST', `/api/v2/wallets/${config.walletId}/transfer`, {
60
+ destination: vendorAddress,
61
+ amount,
62
+ token,
63
+ chain: config.chain,
64
+ domain: vendor,
65
+ memo: purpose,
66
+ });
67
+ const paymentId = transfer.ledger_tx_id || `pay_${Date.now().toString(36)}`;
68
+ return {
69
+ payment_id: paymentId,
70
+ status: transfer.status,
71
+ tx_hash: transfer.tx_hash,
72
+ chain: transfer.chain,
73
+ ledger_tx_id: transfer.ledger_tx_id,
74
+ audit_anchor: transfer.audit_anchor ?? undefined,
75
+ };
76
+ }
77
+ /**
78
+ * Get transaction by ID
79
+ */
80
+ export async function getTransaction(transactionId) {
81
+ const config = getConfig();
82
+ if (!config.apiKey || config.mode === 'simulated') {
83
+ return {
84
+ id: transactionId,
85
+ payment_id: transactionId,
86
+ status: 'completed',
87
+ vendor: 'simulated-vendor',
88
+ token: 'USDC',
89
+ tx_id: transactionId,
90
+ amount: '100.00',
91
+ currency: 'USDC',
92
+ chain: config.chain,
93
+ chain_tx_hash: '0x' + '0'.repeat(64),
94
+ created_at: new Date().toISOString(),
95
+ };
96
+ }
97
+ const entry = await apiRequest('GET', `/api/v2/ledger/entries/${transactionId}`);
98
+ return {
99
+ ...entry,
100
+ id: entry.id ?? entry.tx_id,
101
+ payment_id: entry.payment_id ?? entry.tx_id,
102
+ token: entry.token ?? entry.currency,
103
+ status: entry.status ?? 'completed',
104
+ vendor: entry.vendor ?? 'unknown',
105
+ };
106
+ }
107
+ /**
108
+ * List transactions with optional filters
109
+ */
110
+ export async function listTransactions(limit = 20, offset = 0, status) {
111
+ const config = getConfig();
112
+ if (!config.apiKey || config.mode === 'simulated') {
113
+ return [
114
+ {
115
+ id: `tx_${Date.now().toString(36)}`,
116
+ payment_id: `tx_${Date.now().toString(36)}`,
117
+ status: 'completed',
118
+ vendor: 'simulated-vendor-a',
119
+ token: 'USDC',
120
+ tx_id: `tx_${Date.now().toString(36)}`,
121
+ amount: '50.00',
122
+ currency: 'USDC',
123
+ chain: config.chain,
124
+ chain_tx_hash: '0x' + '1'.repeat(64),
125
+ created_at: new Date(Date.now() - 3600000).toISOString(),
126
+ },
127
+ {
128
+ id: `tx_${(Date.now() - 1000).toString(36)}`,
129
+ payment_id: `tx_${(Date.now() - 1000).toString(36)}`,
130
+ status: 'completed',
131
+ vendor: 'simulated-vendor-b',
132
+ token: 'USDC',
133
+ tx_id: `tx_${(Date.now() - 1000).toString(36)}`,
134
+ amount: '25.00',
135
+ currency: 'USDC',
136
+ chain: config.chain,
137
+ chain_tx_hash: '0x' + '2'.repeat(64),
138
+ created_at: new Date(Date.now() - 7200000).toISOString(),
139
+ },
140
+ ];
141
+ }
142
+ if (status) {
143
+ // Ledger entries are append-only; status filtering is not currently supported.
144
+ // Keep the parameter for tool stability.
145
+ }
146
+ const params = new URLSearchParams({
147
+ limit: limit.toString(),
148
+ offset: offset.toString(),
149
+ });
150
+ params.append('wallet_id', config.walletId);
151
+ const response = await apiRequest('GET', `/api/v2/ledger/entries?${params}`);
152
+ return (response.entries || []).map((entry) => ({
153
+ ...entry,
154
+ id: entry.id ?? entry.tx_id,
155
+ payment_id: entry.payment_id ?? entry.tx_id,
156
+ token: entry.token ?? entry.currency,
157
+ status: entry.status ?? 'completed',
158
+ vendor: entry.vendor ?? 'unknown',
159
+ }));
160
+ }
161
+ // Tool definitions
162
+ export const paymentToolDefinitions = [
163
+ {
164
+ name: 'sardis_pay',
165
+ description: 'Execute a secure payment using Sardis MPC wallet. Validates against spending policies before processing. Returns transaction details on success or policy violation message if blocked.',
166
+ inputSchema: {
167
+ type: 'object',
168
+ properties: {
169
+ vendor: {
170
+ type: 'string',
171
+ description: 'The merchant or service to pay (e.g., "OpenAI", "AWS")',
172
+ },
173
+ amount: {
174
+ type: 'number',
175
+ description: 'Payment amount in USD',
176
+ },
177
+ purpose: {
178
+ type: 'string',
179
+ description: 'Reason for the payment, used for policy validation and audit trail',
180
+ },
181
+ vendorAddress: {
182
+ type: 'string',
183
+ description: 'Wallet address of the vendor (0x...). Optional.',
184
+ },
185
+ token: {
186
+ type: 'string',
187
+ enum: ['USDC', 'USDT', 'PYUSD', 'EURC'],
188
+ description: 'Token to use for payment. Defaults to USDC.',
189
+ },
190
+ },
191
+ required: ['vendor', 'amount'],
192
+ },
193
+ },
194
+ {
195
+ name: 'sardis_get_transaction',
196
+ description: 'Get details of a specific transaction by ID.',
197
+ inputSchema: {
198
+ type: 'object',
199
+ properties: {
200
+ transaction_id: {
201
+ type: 'string',
202
+ description: 'The transaction ID to retrieve',
203
+ },
204
+ },
205
+ required: ['transaction_id'],
206
+ },
207
+ },
208
+ {
209
+ name: 'sardis_list_transactions',
210
+ description: 'List recent transactions with optional filtering.',
211
+ inputSchema: {
212
+ type: 'object',
213
+ properties: {
214
+ limit: {
215
+ type: 'number',
216
+ description: 'Maximum number of transactions to return (default: 20)',
217
+ },
218
+ offset: {
219
+ type: 'number',
220
+ description: 'Number of transactions to skip for pagination',
221
+ },
222
+ status: {
223
+ type: 'string',
224
+ enum: ['pending', 'completed', 'failed'],
225
+ description: 'Filter by transaction status',
226
+ },
227
+ },
228
+ required: [],
229
+ },
230
+ },
231
+ ];
232
+ // Tool handlers
233
+ export const paymentToolHandlers = {
234
+ sardis_pay: async (args) => {
235
+ const parsed = PaymentRequestSchema.safeParse(args);
236
+ if (!parsed.success) {
237
+ return {
238
+ content: [
239
+ {
240
+ type: 'text',
241
+ text: `Invalid payment request: ${parsed.error.message}`,
242
+ },
243
+ ],
244
+ isError: true,
245
+ };
246
+ }
247
+ const { vendor, amount, purpose, vendorAddress, token } = parsed.data;
248
+ // Check policy first (fail-closed)
249
+ let policyResult;
250
+ try {
251
+ policyResult = await checkPolicy(vendor, amount);
252
+ }
253
+ catch (error) {
254
+ const config = getConfig();
255
+ const reason = error instanceof Error ? error.message : 'Policy check failed';
256
+ const decision = buildDecisionEnvelope({
257
+ outcome: 'BLOCKED',
258
+ reason_code: 'SARDIS.POLICY.CHECK_FAILED',
259
+ reason,
260
+ chain: config.chain,
261
+ });
262
+ return {
263
+ content: [
264
+ {
265
+ type: 'text',
266
+ text: JSON.stringify({
267
+ success: false,
268
+ status: 'BLOCKED',
269
+ error: 'POLICY_CHECK_FAILED',
270
+ message: reason,
271
+ reason_code: decision.reason_code,
272
+ decision,
273
+ prevention: 'Financial Hallucination PREVENTED',
274
+ }, null, 2),
275
+ },
276
+ ],
277
+ isError: false,
278
+ };
279
+ }
280
+ if (!policyResult.allowed) {
281
+ const config = getConfig();
282
+ const reason = policyResult.reason || 'Blocked by policy';
283
+ const decision = buildDecisionEnvelope({
284
+ outcome: 'BLOCKED',
285
+ reason_code: 'SARDIS.POLICY.VIOLATION',
286
+ reason,
287
+ chain: config.chain,
288
+ });
289
+ return {
290
+ content: [
291
+ {
292
+ type: 'text',
293
+ text: JSON.stringify({
294
+ success: false,
295
+ status: 'BLOCKED',
296
+ error: 'POLICY_VIOLATION',
297
+ message: reason,
298
+ reason_code: decision.reason_code,
299
+ risk_score: policyResult.risk_score,
300
+ checks: policyResult.checks,
301
+ decision,
302
+ prevention: 'Financial Hallucination PREVENTED',
303
+ }, null, 2),
304
+ },
305
+ ],
306
+ isError: false,
307
+ };
308
+ }
309
+ try {
310
+ const result = await executePayment(vendor, amount, purpose || 'Service payment', vendorAddress, token || 'USDC');
311
+ const decision = buildDecisionEnvelope({
312
+ outcome: 'APPROVED',
313
+ reason_code: 'SARDIS.PAYMENT.APPROVED',
314
+ reason: 'Payment approved and submitted',
315
+ chain: result.chain,
316
+ payment_id: result.payment_id,
317
+ });
318
+ return {
319
+ content: [
320
+ {
321
+ type: 'text',
322
+ text: JSON.stringify({
323
+ success: true,
324
+ status: 'APPROVED',
325
+ payment_id: result.payment_id,
326
+ vendor,
327
+ amount,
328
+ token: token || 'USDC',
329
+ purpose: purpose || 'Service payment',
330
+ transaction_hash: result.tx_hash,
331
+ chain: result.chain,
332
+ ledger_tx_id: result.ledger_tx_id,
333
+ audit_anchor: result.audit_anchor,
334
+ reason_code: decision.reason_code,
335
+ decision,
336
+ message: `Payment of $${amount} ${token || 'USDC'} to ${vendor} completed.`,
337
+ }, null, 2),
338
+ },
339
+ ],
340
+ };
341
+ }
342
+ catch (error) {
343
+ const errorMessage = error instanceof Error ? error.message : 'Payment failed';
344
+ if (errorMessage.toLowerCase().includes('policy') ||
345
+ errorMessage.toLowerCase().includes('blocked') ||
346
+ errorMessage.toLowerCase().includes('limit')) {
347
+ const config = getConfig();
348
+ const decision = buildDecisionEnvelope({
349
+ outcome: 'BLOCKED',
350
+ reason_code: 'SARDIS.POLICY.VIOLATION',
351
+ reason: errorMessage,
352
+ chain: config.chain,
353
+ });
354
+ return {
355
+ content: [
356
+ {
357
+ type: 'text',
358
+ text: JSON.stringify({
359
+ success: false,
360
+ status: 'BLOCKED',
361
+ error: 'POLICY_VIOLATION',
362
+ message: errorMessage,
363
+ reason_code: decision.reason_code,
364
+ decision,
365
+ prevention: 'Financial Hallucination PREVENTED',
366
+ }, null, 2),
367
+ },
368
+ ],
369
+ isError: false,
370
+ };
371
+ }
372
+ const config = getConfig();
373
+ const decision = buildDecisionEnvelope({
374
+ outcome: 'ERROR',
375
+ reason_code: 'SARDIS.PAYMENT.EXECUTION_FAILED',
376
+ reason: errorMessage,
377
+ chain: config.chain,
378
+ });
379
+ return {
380
+ content: [
381
+ {
382
+ type: 'text',
383
+ text: JSON.stringify({
384
+ success: false,
385
+ status: 'ERROR',
386
+ error: 'PAYMENT_EXECUTION_FAILED',
387
+ message: errorMessage,
388
+ reason_code: decision.reason_code,
389
+ decision,
390
+ }, null, 2),
391
+ },
392
+ ],
393
+ isError: true,
394
+ };
395
+ }
396
+ },
397
+ sardis_get_transaction: async (args) => {
398
+ const parsed = z.object({ transaction_id: z.string() }).safeParse(args);
399
+ if (!parsed.success) {
400
+ return {
401
+ content: [{ type: 'text', text: `Invalid request: ${parsed.error.message}` }],
402
+ isError: true,
403
+ };
404
+ }
405
+ try {
406
+ const transaction = await getTransaction(parsed.data.transaction_id);
407
+ return {
408
+ content: [{ type: 'text', text: JSON.stringify(transaction, null, 2) }],
409
+ };
410
+ }
411
+ catch (error) {
412
+ return {
413
+ content: [
414
+ {
415
+ type: 'text',
416
+ text: `Failed to get transaction: ${error instanceof Error ? error.message : 'Unknown error'}`,
417
+ },
418
+ ],
419
+ isError: true,
420
+ };
421
+ }
422
+ },
423
+ sardis_list_transactions: async (args) => {
424
+ const parsed = TransactionQuerySchema.safeParse(args);
425
+ const { limit, offset, status } = parsed.success
426
+ ? parsed.data
427
+ : { limit: 20, offset: 0, status: undefined };
428
+ try {
429
+ const transactions = await listTransactions(limit, offset, status);
430
+ return {
431
+ content: [{ type: 'text', text: JSON.stringify(transactions, null, 2) }],
432
+ };
433
+ }
434
+ catch (error) {
435
+ return {
436
+ content: [
437
+ {
438
+ type: 'text',
439
+ text: `Failed to list transactions: ${error instanceof Error ? error.message : 'Unknown error'}`,
440
+ },
441
+ ],
442
+ isError: true,
443
+ };
444
+ }
445
+ },
446
+ };
447
+ //# sourceMappingURL=payments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payments.js","sourceRoot":"","sources":["../../src/tools/payments.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Sardis MCP Server - Policy Tools
3
+ *
4
+ * Tools for validating payments against spending policies.
5
+ */
6
+ import type { ToolDefinition, ToolHandler } from './types.js';
7
+ export interface PolicyResult {
8
+ allowed: boolean;
9
+ reason?: string;
10
+ risk_score?: number;
11
+ checks?: {
12
+ name: string;
13
+ passed: boolean;
14
+ reason?: string;
15
+ }[];
16
+ }
17
+ interface ComplianceResult {
18
+ status: 'pass' | 'fail' | 'review';
19
+ checks: {
20
+ type: string;
21
+ passed: boolean;
22
+ details?: string;
23
+ }[];
24
+ risk_level: 'low' | 'medium' | 'high';
25
+ }
26
+ /**
27
+ * Check policy via API or local validation
28
+ */
29
+ export declare function checkPolicy(vendor: string, amount: number, category?: string): Promise<PolicyResult>;
30
+ /**
31
+ * Validate payment limits only (without vendor checks)
32
+ */
33
+ export declare function validateLimits(amount: number): Promise<PolicyResult>;
34
+ /**
35
+ * Check compliance status
36
+ */
37
+ export declare function checkCompliance(address: string, amount: number): Promise<ComplianceResult>;
38
+ export declare const policyToolDefinitions: ToolDefinition[];
39
+ export declare const policyToolHandlers: Record<string, ToolHandler>;
40
+ export {};
41
+ //# sourceMappingURL=policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../src/tools/policy.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAc,MAAM,YAAY,CAAC;AAO1E,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC/D;AAED,UAAU,gBAAgB;IACxB,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;IACnC,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,OAAO,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,EAAE,CAAC;IACJ,UAAU,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;CACvC;AAgDD;;GAEG;AACH,wBAAsB,WAAW,CAC/B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,YAAY,CAAC,CA4GvB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CA8C1E;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,gBAAgB,CAAC,CA6B3B;AAGD,eAAO,MAAM,qBAAqB,EAAE,cAAc,EA8EjD,CAAC;AAGF,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAoK1D,CAAC"}