@sardis/mcp-server 0.2.6 → 1.0.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 (54) hide show
  1. package/CHANGELOG.md +11 -1
  2. package/CLAUDE_DESKTOP_CONFIG.md +10 -19
  3. package/README.md +179 -221
  4. package/dist/api.d.ts +1 -1
  5. package/dist/api.d.ts.map +1 -1
  6. package/dist/api.js +4 -2
  7. package/dist/api.js.map +1 -1
  8. package/dist/cli.js +185 -20
  9. package/dist/cli.js.map +1 -1
  10. package/dist/index.d.ts +1 -0
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +4 -2
  13. package/dist/index.js.map +1 -1
  14. package/dist/tools/events.d.ts +7 -0
  15. package/dist/tools/events.d.ts.map +1 -0
  16. package/dist/tools/events.js +413 -0
  17. package/dist/tools/events.js.map +1 -0
  18. package/dist/tools/fiat.d.ts +2 -2
  19. package/dist/tools/fiat.d.ts.map +1 -1
  20. package/dist/tools/fiat.js +649 -266
  21. package/dist/tools/fiat.js.map +1 -1
  22. package/dist/tools/groups.d.ts +7 -0
  23. package/dist/tools/groups.d.ts.map +1 -0
  24. package/dist/tools/groups.js +312 -0
  25. package/dist/tools/groups.js.map +1 -0
  26. package/dist/tools/guardrails.d.ts +7 -0
  27. package/dist/tools/guardrails.d.ts.map +1 -0
  28. package/dist/tools/guardrails.js +379 -0
  29. package/dist/tools/guardrails.js.map +1 -0
  30. package/dist/tools/index.d.ts +27 -8
  31. package/dist/tools/index.d.ts.map +1 -1
  32. package/dist/tools/index.js +91 -5
  33. package/dist/tools/index.js.map +1 -1
  34. package/dist/tools/payments.d.ts +2 -0
  35. package/dist/tools/payments.d.ts.map +1 -1
  36. package/dist/tools/payments.js +2 -0
  37. package/dist/tools/payments.js.map +1 -1
  38. package/dist/tools/policy.d.ts.map +1 -1
  39. package/dist/tools/policy.js +32 -4
  40. package/dist/tools/policy.js.map +1 -1
  41. package/dist/tools/sandbox.js +1 -1
  42. package/dist/tools/types.d.ts +51 -0
  43. package/dist/tools/types.d.ts.map +1 -1
  44. package/dist/tools/types.js +20 -0
  45. package/dist/tools/types.js.map +1 -1
  46. package/dist/tools/wallet-management.d.ts.map +1 -1
  47. package/dist/tools/wallet-management.js +55 -45
  48. package/dist/tools/wallet-management.js.map +1 -1
  49. package/dist/version.d.ts +2 -0
  50. package/dist/version.d.ts.map +1 -0
  51. package/dist/version.js +2 -0
  52. package/dist/version.js.map +1 -0
  53. package/mcp.json +139 -53
  54. package/package.json +39 -24
@@ -0,0 +1,379 @@
1
+ /**
2
+ * Guardrails tools for MCP server
3
+ */
4
+ import { getConfig } from '../config.js';
5
+ import { apiRequest } from '../api.js';
6
+ import { z } from 'zod';
7
+ // Schemas
8
+ const CheckCircuitBreakerSchema = z.object({
9
+ wallet_id: z.string().optional(),
10
+ });
11
+ const ActivateKillSwitchSchema = z.object({
12
+ wallet_id: z.string().optional(),
13
+ reason: z.string(),
14
+ });
15
+ const DeactivateKillSwitchSchema = z.object({
16
+ wallet_id: z.string().optional(),
17
+ });
18
+ const CheckRateLimitsSchema = z.object({
19
+ wallet_id: z.string().optional(),
20
+ });
21
+ const GetBehavioralAlertsSchema = z.object({
22
+ wallet_id: z.string().optional(),
23
+ severity: z.enum(['low', 'medium', 'high', 'critical']).optional(),
24
+ limit: z.number().min(1).max(100).optional(),
25
+ since: z.string().optional(),
26
+ });
27
+ // Tool definitions
28
+ export const guardrailsToolDefinitions = [
29
+ {
30
+ name: 'sardis_check_circuit_breaker',
31
+ description: 'Check circuit breaker and kill switch status for a wallet. Returns operational status and any active safety controls.',
32
+ inputSchema: {
33
+ type: 'object',
34
+ properties: {
35
+ wallet_id: {
36
+ type: 'string',
37
+ description: 'Wallet ID to check. Uses default wallet if not specified.',
38
+ },
39
+ },
40
+ required: [],
41
+ },
42
+ },
43
+ {
44
+ name: 'sardis_activate_kill_switch',
45
+ description: 'EMERGENCY: Activate kill switch to halt ALL transactions for a wallet. Use only in security emergencies.',
46
+ inputSchema: {
47
+ type: 'object',
48
+ properties: {
49
+ wallet_id: {
50
+ type: 'string',
51
+ description: 'Wallet ID to halt. Uses default wallet if not specified.',
52
+ },
53
+ reason: {
54
+ type: 'string',
55
+ description: 'Reason for activating kill switch (required for audit trail)',
56
+ },
57
+ },
58
+ required: ['reason'],
59
+ },
60
+ },
61
+ {
62
+ name: 'sardis_deactivate_kill_switch',
63
+ description: 'Deactivate kill switch to resume normal wallet operations. Use after security issue is resolved.',
64
+ inputSchema: {
65
+ type: 'object',
66
+ properties: {
67
+ wallet_id: {
68
+ type: 'string',
69
+ description: 'Wallet ID to resume. Uses default wallet if not specified.',
70
+ },
71
+ },
72
+ required: [],
73
+ },
74
+ },
75
+ {
76
+ name: 'sardis_check_rate_limits',
77
+ description: 'Check transaction rate limits and spending velocity. Monitor for approaching thresholds.',
78
+ inputSchema: {
79
+ type: 'object',
80
+ properties: {
81
+ wallet_id: {
82
+ type: 'string',
83
+ description: 'Wallet ID to check. Uses default wallet if not specified.',
84
+ },
85
+ },
86
+ required: [],
87
+ },
88
+ },
89
+ {
90
+ name: 'sardis_get_behavioral_alerts',
91
+ description: 'Get behavioral anomaly alerts for a wallet. Identifies unusual spending patterns and security threats.',
92
+ inputSchema: {
93
+ type: 'object',
94
+ properties: {
95
+ wallet_id: {
96
+ type: 'string',
97
+ description: 'Wallet ID to check. Uses default wallet if not specified.',
98
+ },
99
+ severity: {
100
+ type: 'string',
101
+ enum: ['low', 'medium', 'high', 'critical'],
102
+ description: 'Filter by alert severity',
103
+ },
104
+ limit: {
105
+ type: 'number',
106
+ description: 'Maximum number of alerts to return (1-100)',
107
+ },
108
+ since: {
109
+ type: 'string',
110
+ description: 'ISO 8601 timestamp - only return alerts after this time',
111
+ },
112
+ },
113
+ required: [],
114
+ },
115
+ },
116
+ ];
117
+ // Tool handlers
118
+ export const guardrailsToolHandlers = {
119
+ sardis_check_circuit_breaker: async (args) => {
120
+ const parsed = CheckCircuitBreakerSchema.safeParse(args);
121
+ const config = getConfig();
122
+ const walletId = parsed.success && parsed.data.wallet_id
123
+ ? parsed.data.wallet_id
124
+ : config.walletId || 'wallet_default';
125
+ if (!config.apiKey || config.mode === 'simulated') {
126
+ // Simulated response
127
+ const mockStatus = {
128
+ wallet_id: walletId,
129
+ circuit_breaker: {
130
+ active: false,
131
+ reason: null,
132
+ triggered_at: null,
133
+ auto_recovery: true,
134
+ },
135
+ kill_switch: {
136
+ active: false,
137
+ activated_by: null,
138
+ activated_at: null,
139
+ requires_manual_reset: true,
140
+ },
141
+ rate_limits: {
142
+ tx_per_minute: {
143
+ limit: 5,
144
+ current: 1.2,
145
+ percentage_used: 24.0,
146
+ breached: false,
147
+ },
148
+ tx_per_hour: {
149
+ limit: 100,
150
+ current: 23,
151
+ percentage_used: 23.0,
152
+ breached: false,
153
+ },
154
+ spend_per_hour_usd: {
155
+ limit: 1000.0,
156
+ current: 125.5,
157
+ percentage_used: 12.55,
158
+ breached: false,
159
+ },
160
+ },
161
+ status: 'operational',
162
+ last_checked: new Date().toISOString(),
163
+ };
164
+ return {
165
+ content: [{ type: 'text', text: JSON.stringify(mockStatus, null, 2) }],
166
+ };
167
+ }
168
+ try {
169
+ const status = await apiRequest('GET', '/api/v2/guardrails/status', undefined, { 'X-Wallet-ID': walletId });
170
+ return {
171
+ content: [{ type: 'text', text: JSON.stringify(status, null, 2) }],
172
+ };
173
+ }
174
+ catch (error) {
175
+ return {
176
+ content: [{
177
+ type: 'text',
178
+ text: `Failed to check circuit breaker: ${error instanceof Error ? error.message : 'Unknown error'}`,
179
+ }],
180
+ isError: true,
181
+ };
182
+ }
183
+ },
184
+ sardis_activate_kill_switch: async (args) => {
185
+ const parsed = ActivateKillSwitchSchema.safeParse(args);
186
+ if (!parsed.success) {
187
+ return {
188
+ content: [{ type: 'text', text: `Invalid request: ${parsed.error.message}` }],
189
+ isError: true,
190
+ };
191
+ }
192
+ const config = getConfig();
193
+ const walletId = parsed.data.wallet_id || config.walletId || 'wallet_default';
194
+ if (!config.apiKey || config.mode === 'simulated') {
195
+ // Simulated response
196
+ return {
197
+ content: [{
198
+ type: 'text',
199
+ text: JSON.stringify({
200
+ wallet_id: walletId,
201
+ kill_switch_active: true,
202
+ activated_by: 'simulated_user',
203
+ activated_at: new Date().toISOString(),
204
+ reason: parsed.data.reason,
205
+ message: '⚠️ KILL SWITCH ACTIVATED - All transactions halted',
206
+ status: 'halted',
207
+ }, null, 2),
208
+ }],
209
+ };
210
+ }
211
+ try {
212
+ const result = await apiRequest('POST', '/api/v2/guardrails/kill-switch/activate', {
213
+ wallet_id: walletId,
214
+ reason: parsed.data.reason,
215
+ });
216
+ return {
217
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
218
+ };
219
+ }
220
+ catch (error) {
221
+ return {
222
+ content: [{
223
+ type: 'text',
224
+ text: `Failed to activate kill switch: ${error instanceof Error ? error.message : 'Unknown error'}`,
225
+ }],
226
+ isError: true,
227
+ };
228
+ }
229
+ },
230
+ sardis_deactivate_kill_switch: async (args) => {
231
+ const parsed = DeactivateKillSwitchSchema.safeParse(args);
232
+ const config = getConfig();
233
+ const walletId = parsed.success && parsed.data.wallet_id
234
+ ? parsed.data.wallet_id
235
+ : config.walletId || 'wallet_default';
236
+ if (!config.apiKey || config.mode === 'simulated') {
237
+ // Simulated response
238
+ return {
239
+ content: [{
240
+ type: 'text',
241
+ text: JSON.stringify({
242
+ wallet_id: walletId,
243
+ kill_switch_active: false,
244
+ deactivated_at: new Date().toISOString(),
245
+ message: '✓ Kill switch deactivated - Wallet operational',
246
+ status: 'operational',
247
+ }, null, 2),
248
+ }],
249
+ };
250
+ }
251
+ try {
252
+ const result = await apiRequest('POST', '/api/v2/guardrails/kill-switch/deactivate', { wallet_id: walletId });
253
+ return {
254
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
255
+ };
256
+ }
257
+ catch (error) {
258
+ return {
259
+ content: [{
260
+ type: 'text',
261
+ text: `Failed to deactivate kill switch: ${error instanceof Error ? error.message : 'Unknown error'}`,
262
+ }],
263
+ isError: true,
264
+ };
265
+ }
266
+ },
267
+ sardis_check_rate_limits: async (args) => {
268
+ const parsed = CheckRateLimitsSchema.safeParse(args);
269
+ const config = getConfig();
270
+ const walletId = parsed.success && parsed.data.wallet_id
271
+ ? parsed.data.wallet_id
272
+ : config.walletId || 'wallet_default';
273
+ if (!config.apiKey || config.mode === 'simulated') {
274
+ // Simulated response
275
+ const mockLimits = {
276
+ wallet_id: walletId,
277
+ limits: {
278
+ tx_per_minute: {
279
+ limit: 5,
280
+ current: 1.2,
281
+ percentage_used: 24.0,
282
+ breached: false,
283
+ },
284
+ tx_per_hour: {
285
+ limit: 100,
286
+ current: 23,
287
+ percentage_used: 23.0,
288
+ breached: false,
289
+ },
290
+ spend_per_hour_usd: {
291
+ limit: '1000.00',
292
+ current: '125.50',
293
+ percentage_used: 12.55,
294
+ breached: false,
295
+ },
296
+ },
297
+ status: 'healthy',
298
+ last_checked: new Date().toISOString(),
299
+ };
300
+ return {
301
+ content: [{ type: 'text', text: JSON.stringify(mockLimits, null, 2) }],
302
+ };
303
+ }
304
+ try {
305
+ const limits = await apiRequest('GET', '/api/v2/guardrails/rate-limits', undefined, { 'X-Wallet-ID': walletId });
306
+ return {
307
+ content: [{ type: 'text', text: JSON.stringify(limits, null, 2) }],
308
+ };
309
+ }
310
+ catch (error) {
311
+ return {
312
+ content: [{
313
+ type: 'text',
314
+ text: `Failed to check rate limits: ${error instanceof Error ? error.message : 'Unknown error'}`,
315
+ }],
316
+ isError: true,
317
+ };
318
+ }
319
+ },
320
+ sardis_get_behavioral_alerts: async (args) => {
321
+ const parsed = GetBehavioralAlertsSchema.safeParse(args);
322
+ const config = getConfig();
323
+ const walletId = parsed.success && parsed.data.wallet_id
324
+ ? parsed.data.wallet_id
325
+ : config.walletId || 'wallet_default';
326
+ const queryParams = new URLSearchParams();
327
+ if (parsed.success) {
328
+ if (parsed.data.severity)
329
+ queryParams.set('severity', parsed.data.severity);
330
+ if (parsed.data.limit)
331
+ queryParams.set('limit', parsed.data.limit.toString());
332
+ if (parsed.data.since)
333
+ queryParams.set('since', parsed.data.since);
334
+ }
335
+ if (!config.apiKey || config.mode === 'simulated') {
336
+ // Simulated response
337
+ const mockAlerts = {
338
+ wallet_id: walletId,
339
+ alerts: [
340
+ {
341
+ alert_id: 'alert_sim1',
342
+ severity: 'medium',
343
+ type: 'velocity_increase',
344
+ message: 'Transaction rate slightly elevated',
345
+ details: {
346
+ normal_rate: '2.5 tx/min',
347
+ current_rate: '3.2 tx/min',
348
+ duration: '10 minutes',
349
+ },
350
+ timestamp: new Date(Date.now() - 600000).toISOString(),
351
+ auto_blocked: false,
352
+ requires_review: false,
353
+ },
354
+ ],
355
+ total: 1,
356
+ has_critical: false,
357
+ };
358
+ return {
359
+ content: [{ type: 'text', text: JSON.stringify(mockAlerts, null, 2) }],
360
+ };
361
+ }
362
+ try {
363
+ const alerts = await apiRequest('GET', `/api/v2/guardrails/alerts?${queryParams.toString()}`, undefined, { 'X-Wallet-ID': walletId });
364
+ return {
365
+ content: [{ type: 'text', text: JSON.stringify(alerts, null, 2) }],
366
+ };
367
+ }
368
+ catch (error) {
369
+ return {
370
+ content: [{
371
+ type: 'text',
372
+ text: `Failed to get behavioral alerts: ${error instanceof Error ? error.message : 'Unknown error'}`,
373
+ }],
374
+ isError: true,
375
+ };
376
+ }
377
+ },
378
+ };
379
+ //# sourceMappingURL=guardrails.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guardrails.js","sourceRoot":"","sources":["../../src/tools/guardrails.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  * Sardis MCP Server - Tool Registry
3
3
  *
4
4
  * Aggregates all tool definitions and handlers from domain-specific modules.
5
- * Total: 36+ tools across 9 categories.
5
+ * Total: 50+ tools across 12 modules.
6
6
  */
7
7
  import type { ToolDefinition, ToolHandler } from './types.js';
8
8
  export * from './types.js';
@@ -33,15 +33,19 @@ export declare function getAllToolNames(): string[];
33
33
  * Tool categories for organization
34
34
  */
35
35
  export declare const toolCategories: {
36
- readonly wallet: readonly ["sardis_get_wallet", "sardis_get_balance", "sardis_create_wallet", "sardis_update_wallet_policy", "sardis_list_wallets"];
36
+ readonly wallet: readonly ["sardis_get_wallet", "sardis_get_balance", "sardis_create_wallet", "sardis_list_wallets"];
37
37
  readonly payment: readonly ["sardis_pay", "sardis_get_transaction", "sardis_list_transactions"];
38
- readonly policy: readonly ["sardis_check_policy", "sardis_validate_limits", "sardis_check_compliance"];
39
- readonly hold: readonly ["sardis_create_hold", "sardis_capture_hold", "sardis_void_hold", "sardis_get_hold", "sardis_list_holds", "sardis_extend_hold"];
38
+ readonly policy: readonly ["sardis_check_policy", "sardis_validate_limits", "sardis_check_compliance", "sardis_get_policies"];
39
+ readonly hold: readonly ["sardis_create_hold", "sardis_capture_hold", "sardis_void_hold", "sardis_release_hold", "sardis_get_hold", "sardis_list_holds", "sardis_extend_hold"];
40
40
  readonly agent: readonly ["sardis_create_agent", "sardis_get_agent", "sardis_list_agents", "sardis_update_agent"];
41
- readonly card: readonly ["sardis_issue_card", "sardis_get_card", "sardis_list_cards", "sardis_freeze_card", "sardis_unfreeze_card", "sardis_cancel_card"];
42
- readonly fiat: readonly ["sardis_fund_wallet", "sardis_withdraw_to_bank", "sardis_get_funding_status", "sardis_get_withdrawal_status"];
43
- readonly approval: readonly ["sardis_request_approval", "sardis_get_approval_status"];
44
- readonly spending: readonly ["sardis_get_spending_summary", "sardis_get_spending_by_vendor", "sardis_get_spending_by_category"];
41
+ readonly card: readonly ["sardis_issue_card", "sardis_create_card", "sardis_get_card", "sardis_list_cards", "sardis_freeze_card", "sardis_unfreeze_card", "sardis_cancel_card"];
42
+ readonly fiat: readonly ["sardis_sync_treasury_account_holder", "sardis_list_financial_accounts", "sardis_link_external_bank_account", "sardis_verify_micro_deposits", "sardis_fund_wallet", "sardis_withdraw_to_bank", "sardis_withdraw", "sardis_get_funding_status", "sardis_get_withdrawal_status", "sardis_get_treasury_balances", "sardis_list_funding_transactions", "sardis_get_multi_balance", "sardis_offramp_usdc_to_fiat", "sardis_onramp_fiat_to_usdc", "sardis_get_ramp_quote"];
43
+ readonly approval: readonly ["sardis_request_approval", "sardis_get_approval_status", "sardis_check_approval", "sardis_list_pending_approvals", "sardis_cancel_approval"];
44
+ readonly sandbox: readonly ["sardis_sandbox_demo"];
45
+ readonly group: readonly ["sardis_create_group", "sardis_get_group", "sardis_list_groups", "sardis_add_agent_to_group", "sardis_remove_agent_from_group", "sardis_get_group_spending"];
46
+ readonly spending: readonly ["sardis_get_spending_summary", "sardis_get_spending", "sardis_get_spending_by_vendor", "sardis_get_spending_by_category", "sardis_get_spending_trends"];
47
+ readonly event: readonly ["sardis_subscribe_events", "sardis_list_event_types", "sardis_get_event_history", "sardis_configure_webhook"];
48
+ readonly guardrails: readonly ["sardis_check_circuit_breaker", "sardis_activate_kill_switch", "sardis_deactivate_kill_switch", "sardis_check_rate_limits", "sardis_get_behavioral_alerts"];
45
49
  };
46
50
  /**
47
51
  * Get tools by category
@@ -51,6 +55,21 @@ export declare function getToolsByCategory(category: keyof typeof toolCategories
51
55
  * Get total tool count
52
56
  */
53
57
  export declare function getToolCount(): number;
58
+ export type ToolRegistryValidationResult = {
59
+ definitionCount: number;
60
+ handlerCount: number;
61
+ isValid: boolean;
62
+ missingHandlersForDefinitions: string[];
63
+ missingDefinitionsForHandlers: string[];
64
+ duplicateDefinitions: string[];
65
+ };
66
+ /**
67
+ * Validate tool registry consistency between definitions and handlers.
68
+ *
69
+ * This is the authoritative source for all "tool count" claims in docs/CLI.
70
+ */
71
+ export declare function validateToolRegistry(): ToolRegistryValidationResult;
72
+ export declare function getValidatedToolCount(): number;
54
73
  /**
55
74
  * Get tool summary for documentation
56
75
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAgB9D,cAAc,YAAY,CAAC;AAG3B,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,cAAc,EAY9C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAYvD,CAAC;AAEF;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAEpE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,EAAE,CAE1C;AAED;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;CAyCjB,CAAC;AAEX;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,OAAO,cAAc,GAAG,cAAc,EAAE,CAG1F;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,EAAE,CAMvF;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,cAAc,EAAE,CAE9C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAEhE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AA4B9D,cAAc,YAAY,CAAC;AAG3B,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,cAAc,EAe9C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAevD,CAAC;AAEF;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAEpE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,EAAE,CAE1C;AAED;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;CAsFjB,CAAC;AAEX;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,OAAO,cAAc,GAAG,cAAc,EAAE,CAG1F;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED,MAAM,MAAM,4BAA4B,GAAG;IACzC,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,6BAA6B,EAAE,MAAM,EAAE,CAAC;IACxC,6BAA6B,EAAE,MAAM,EAAE,CAAC;IACxC,oBAAoB,EAAE,MAAM,EAAE,CAAC;CAChC,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,4BAA4B,CA8BnE;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,EAAE,CAMvF;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,cAAc,EAAE,CAE9C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAEhE"}
@@ -2,7 +2,7 @@
2
2
  * Sardis MCP Server - Tool Registry
3
3
  *
4
4
  * Aggregates all tool definitions and handlers from domain-specific modules.
5
- * Total: 36+ tools across 9 categories.
5
+ * Total: 50+ tools across 12 modules.
6
6
  */
7
7
  // Import tool definitions and handlers from each module
8
8
  import { walletToolDefinitions, walletToolHandlers } from './wallets.js';
@@ -16,6 +16,13 @@ import { approvalToolDefinitions, approvalToolHandlers } from './approvals.js';
16
16
  import { spendingToolDefinitions, spendingToolHandlers } from './spending.js';
17
17
  import { walletManagementToolDefinitions, walletManagementToolHandlers } from './wallet-management.js';
18
18
  import { sandboxToolDefinitions, sandboxToolHandlers } from './sandbox.js';
19
+ import { groupToolDefinitions, groupToolHandlers } from './groups.js';
20
+ import { eventToolDefinitions, eventToolHandlers } from './events.js';
21
+ import { guardrailsToolDefinitions, guardrailsToolHandlers } from './guardrails.js';
22
+ // Handlers below are intentionally blocked for agent-facing use and excluded
23
+ // from the aggregate registry to keep definition/handler parity.
24
+ const { sardis_get_rules: _blockedGetRules, ...policyToolHandlersFiltered } = policyToolHandlers;
25
+ const { sardis_update_wallet_limits: _blockedUpdateWalletLimits, sardis_archive_wallet: _blockedArchiveWallet, ...walletManagementToolHandlersFiltered } = walletManagementToolHandlers;
19
26
  // Re-export types
20
27
  export * from './types.js';
21
28
  // Re-export domain functions for direct use
@@ -37,6 +44,9 @@ export const allToolDefinitions = [
37
44
  ...spendingToolDefinitions,
38
45
  ...walletManagementToolDefinitions,
39
46
  ...sandboxToolDefinitions,
47
+ ...groupToolDefinitions,
48
+ ...eventToolDefinitions,
49
+ ...guardrailsToolDefinitions,
40
50
  ];
41
51
  /**
42
52
  * All tool handlers aggregated from modules
@@ -46,13 +56,16 @@ export const allToolHandlers = {
46
56
  ...holdToolHandlers,
47
57
  ...agentToolHandlers,
48
58
  ...paymentToolHandlers,
49
- ...policyToolHandlers,
59
+ ...policyToolHandlersFiltered,
50
60
  ...cardToolHandlers,
51
61
  ...fiatToolHandlers,
52
62
  ...approvalToolHandlers,
53
63
  ...spendingToolHandlers,
54
- ...walletManagementToolHandlers,
64
+ ...walletManagementToolHandlersFiltered,
55
65
  ...sandboxToolHandlers,
66
+ ...groupToolHandlers,
67
+ ...eventToolHandlers,
68
+ ...guardrailsToolHandlers,
56
69
  };
57
70
  /**
58
71
  * Get tool handler by name
@@ -76,13 +89,19 @@ export function getAllToolNames() {
76
89
  * Tool categories for organization
77
90
  */
78
91
  export const toolCategories = {
79
- wallet: ['sardis_get_wallet', 'sardis_get_balance', 'sardis_create_wallet', 'sardis_update_wallet_policy', 'sardis_list_wallets'],
92
+ wallet: ['sardis_get_wallet', 'sardis_get_balance', 'sardis_create_wallet', 'sardis_list_wallets'],
80
93
  payment: ['sardis_pay', 'sardis_get_transaction', 'sardis_list_transactions'],
81
- policy: ['sardis_check_policy', 'sardis_validate_limits', 'sardis_check_compliance'],
94
+ policy: [
95
+ 'sardis_check_policy',
96
+ 'sardis_validate_limits',
97
+ 'sardis_check_compliance',
98
+ 'sardis_get_policies',
99
+ ],
82
100
  hold: [
83
101
  'sardis_create_hold',
84
102
  'sardis_capture_hold',
85
103
  'sardis_void_hold',
104
+ 'sardis_release_hold',
86
105
  'sardis_get_hold',
87
106
  'sardis_list_holds',
88
107
  'sardis_extend_hold',
@@ -95,6 +114,7 @@ export const toolCategories = {
95
114
  ],
96
115
  card: [
97
116
  'sardis_issue_card',
117
+ 'sardis_create_card',
98
118
  'sardis_get_card',
99
119
  'sardis_list_cards',
100
120
  'sardis_freeze_card',
@@ -102,19 +122,57 @@ export const toolCategories = {
102
122
  'sardis_cancel_card',
103
123
  ],
104
124
  fiat: [
125
+ 'sardis_sync_treasury_account_holder',
126
+ 'sardis_list_financial_accounts',
127
+ 'sardis_link_external_bank_account',
128
+ 'sardis_verify_micro_deposits',
105
129
  'sardis_fund_wallet',
106
130
  'sardis_withdraw_to_bank',
131
+ 'sardis_withdraw',
107
132
  'sardis_get_funding_status',
108
133
  'sardis_get_withdrawal_status',
134
+ 'sardis_get_treasury_balances',
135
+ 'sardis_list_funding_transactions',
136
+ 'sardis_get_multi_balance',
137
+ 'sardis_offramp_usdc_to_fiat',
138
+ 'sardis_onramp_fiat_to_usdc',
139
+ 'sardis_get_ramp_quote',
109
140
  ],
110
141
  approval: [
111
142
  'sardis_request_approval',
112
143
  'sardis_get_approval_status',
144
+ 'sardis_check_approval',
145
+ 'sardis_list_pending_approvals',
146
+ 'sardis_cancel_approval',
147
+ ],
148
+ sandbox: ['sardis_sandbox_demo'],
149
+ group: [
150
+ 'sardis_create_group',
151
+ 'sardis_get_group',
152
+ 'sardis_list_groups',
153
+ 'sardis_add_agent_to_group',
154
+ 'sardis_remove_agent_from_group',
155
+ 'sardis_get_group_spending',
113
156
  ],
114
157
  spending: [
115
158
  'sardis_get_spending_summary',
159
+ 'sardis_get_spending',
116
160
  'sardis_get_spending_by_vendor',
117
161
  'sardis_get_spending_by_category',
162
+ 'sardis_get_spending_trends',
163
+ ],
164
+ event: [
165
+ 'sardis_subscribe_events',
166
+ 'sardis_list_event_types',
167
+ 'sardis_get_event_history',
168
+ 'sardis_configure_webhook',
169
+ ],
170
+ guardrails: [
171
+ 'sardis_check_circuit_breaker',
172
+ 'sardis_activate_kill_switch',
173
+ 'sardis_deactivate_kill_switch',
174
+ 'sardis_check_rate_limits',
175
+ 'sardis_get_behavioral_alerts',
118
176
  ],
119
177
  };
120
178
  /**
@@ -130,6 +188,34 @@ export function getToolsByCategory(category) {
130
188
  export function getToolCount() {
131
189
  return allToolDefinitions.length;
132
190
  }
191
+ /**
192
+ * Validate tool registry consistency between definitions and handlers.
193
+ *
194
+ * This is the authoritative source for all "tool count" claims in docs/CLI.
195
+ */
196
+ export function validateToolRegistry() {
197
+ const definitionNames = allToolDefinitions.map((d) => d.name);
198
+ const definitionSet = new Set(definitionNames);
199
+ const handlerNames = Object.keys(allToolHandlers);
200
+ const handlerSet = new Set(handlerNames);
201
+ const duplicateDefinitions = definitionNames.filter((name, idx) => definitionNames.indexOf(name) !== idx);
202
+ const missingHandlersForDefinitions = definitionNames.filter((name) => !handlerSet.has(name));
203
+ const missingDefinitionsForHandlers = handlerNames.filter((name) => !definitionSet.has(name));
204
+ const isValid = duplicateDefinitions.length === 0 &&
205
+ missingHandlersForDefinitions.length === 0 &&
206
+ missingDefinitionsForHandlers.length === 0;
207
+ return {
208
+ definitionCount: definitionNames.length,
209
+ handlerCount: handlerNames.length,
210
+ isValid,
211
+ missingHandlersForDefinitions,
212
+ missingDefinitionsForHandlers,
213
+ duplicateDefinitions,
214
+ };
215
+ }
216
+ export function getValidatedToolCount() {
217
+ return validateToolRegistry().definitionCount;
218
+ }
133
219
  /**
134
220
  * Get tool summary for documentation
135
221
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}