@sardis/mcp-server 0.2.7 → 1.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 (66) 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/config.d.ts +2 -0
  11. package/dist/config.d.ts.map +1 -1
  12. package/dist/config.js +3 -0
  13. package/dist/config.js.map +1 -1
  14. package/dist/index.d.ts +1 -0
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +4 -2
  17. package/dist/index.js.map +1 -1
  18. package/dist/tools/events.d.ts +7 -0
  19. package/dist/tools/events.d.ts.map +1 -0
  20. package/dist/tools/events.js +413 -0
  21. package/dist/tools/events.js.map +1 -0
  22. package/dist/tools/fiat.d.ts +2 -2
  23. package/dist/tools/fiat.d.ts.map +1 -1
  24. package/dist/tools/fiat.js +649 -266
  25. package/dist/tools/fiat.js.map +1 -1
  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 +29 -8
  31. package/dist/tools/index.d.ts.map +1 -1
  32. package/dist/tools/index.js +108 -5
  33. package/dist/tools/index.js.map +1 -1
  34. package/dist/tools/jobs.d.ts +17 -0
  35. package/dist/tools/jobs.d.ts.map +1 -0
  36. package/dist/tools/jobs.js +583 -0
  37. package/dist/tools/jobs.js.map +1 -0
  38. package/dist/tools/payments.d.ts +2 -0
  39. package/dist/tools/payments.d.ts.map +1 -1
  40. package/dist/tools/payments.js +2 -0
  41. package/dist/tools/payments.js.map +1 -1
  42. package/dist/tools/policy.d.ts.map +1 -1
  43. package/dist/tools/policy.js +32 -4
  44. package/dist/tools/policy.js.map +1 -1
  45. package/dist/tools/sandbox.js +1 -1
  46. package/dist/tools/trust.d.ts +7 -0
  47. package/dist/tools/trust.d.ts.map +1 -0
  48. package/dist/tools/trust.js +188 -0
  49. package/dist/tools/trust.js.map +1 -0
  50. package/dist/tools/types.d.ts +51 -0
  51. package/dist/tools/types.d.ts.map +1 -1
  52. package/dist/tools/types.js +20 -0
  53. package/dist/tools/types.js.map +1 -1
  54. package/dist/tools/wallet-management.d.ts.map +1 -1
  55. package/dist/tools/wallet-management.js +55 -45
  56. package/dist/tools/wallet-management.js.map +1 -1
  57. package/dist/tools/x402.d.ts +12 -0
  58. package/dist/tools/x402.d.ts.map +1 -0
  59. package/dist/tools/x402.js +299 -0
  60. package/dist/tools/x402.js.map +1 -0
  61. package/dist/version.d.ts +2 -0
  62. package/dist/version.d.ts.map +1 -0
  63. package/dist/version.js +2 -0
  64. package/dist/version.js.map +1 -0
  65. package/mcp.json +139 -53
  66. package/package.json +30 -14
@@ -0,0 +1,413 @@
1
+ /**
2
+ * Event and webhook management tools for MCP server
3
+ */
4
+ import { getConfig } from '../config.js';
5
+ import { apiRequest } from '../api.js';
6
+ import { SubscribeEventsSchema, ListEventTypesSchema, GetEventHistorySchema, ConfigureWebhookSchema, } from './types.js';
7
+ // Tool definitions
8
+ export const eventToolDefinitions = [
9
+ {
10
+ name: 'sardis_subscribe_events',
11
+ description: 'Subscribe to event patterns (e.g., "policy.*", "spend.*", "card.*"). Use wildcards to subscribe to multiple event types at once.',
12
+ inputSchema: {
13
+ type: 'object',
14
+ properties: {
15
+ event_pattern: {
16
+ type: 'string',
17
+ description: 'Event pattern to subscribe to. Supports wildcards: "policy.*" for all policy events, "*.created" for all creation events, or "*" for all events',
18
+ },
19
+ webhook_url: {
20
+ type: 'string',
21
+ description: 'Optional webhook URL to forward events to',
22
+ },
23
+ },
24
+ required: ['event_pattern'],
25
+ },
26
+ },
27
+ {
28
+ name: 'sardis_list_event_types',
29
+ description: 'List all available event types organized by category (policy, spend, approval, card, compliance, group, payment, hold, wallet, agent, mandate, risk).',
30
+ inputSchema: {
31
+ type: 'object',
32
+ properties: {
33
+ category: {
34
+ type: 'string',
35
+ description: 'Optional category filter: policy, spend, approval, card, compliance, group, payment, hold, wallet, agent, mandate, risk',
36
+ },
37
+ },
38
+ required: [],
39
+ },
40
+ },
41
+ {
42
+ name: 'sardis_get_event_history',
43
+ description: 'Get recent events for an agent or wallet. Useful for debugging and monitoring.',
44
+ inputSchema: {
45
+ type: 'object',
46
+ properties: {
47
+ agent_id: {
48
+ type: 'string',
49
+ description: 'Agent ID to filter events by',
50
+ },
51
+ wallet_id: {
52
+ type: 'string',
53
+ description: 'Wallet ID to filter events by',
54
+ },
55
+ event_type: {
56
+ type: 'string',
57
+ description: 'Optional event type filter (e.g., "policy.violated")',
58
+ },
59
+ limit: {
60
+ type: 'number',
61
+ description: 'Maximum number of events to return (default: 50)',
62
+ },
63
+ offset: {
64
+ type: 'number',
65
+ description: 'Pagination offset (default: 0)',
66
+ },
67
+ },
68
+ required: [],
69
+ },
70
+ },
71
+ {
72
+ name: 'sardis_configure_webhook',
73
+ description: 'Set up a webhook URL for event forwarding. Events matching the subscription will be POSTed to this URL with HMAC signature verification.',
74
+ inputSchema: {
75
+ type: 'object',
76
+ properties: {
77
+ url: {
78
+ type: 'string',
79
+ description: 'Webhook URL to POST events to',
80
+ },
81
+ events: {
82
+ type: 'array',
83
+ items: { type: 'string' },
84
+ description: 'List of event types to subscribe to. Empty array = all events',
85
+ },
86
+ is_active: {
87
+ type: 'boolean',
88
+ description: 'Enable or disable the webhook (default: true)',
89
+ },
90
+ },
91
+ required: ['url'],
92
+ },
93
+ },
94
+ ];
95
+ // Event type categories
96
+ const EVENT_CATEGORIES = {
97
+ policy: [
98
+ 'policy.created',
99
+ 'policy.updated',
100
+ 'policy.violated',
101
+ 'policy.check.passed',
102
+ ],
103
+ spend: [
104
+ 'spend.threshold.warning',
105
+ 'spend.threshold.reached',
106
+ 'spend.daily.summary',
107
+ ],
108
+ approval: [
109
+ 'approval.requested',
110
+ 'approval.granted',
111
+ 'approval.denied',
112
+ 'approval.expired',
113
+ ],
114
+ card: [
115
+ 'card.created',
116
+ 'card.activated',
117
+ 'card.transaction',
118
+ 'card.declined',
119
+ 'card.frozen',
120
+ ],
121
+ compliance: [
122
+ 'compliance.check.passed',
123
+ 'compliance.check.failed',
124
+ 'compliance.alert',
125
+ ],
126
+ group: [
127
+ 'group.budget.warning',
128
+ 'group.budget.exceeded',
129
+ ],
130
+ payment: [
131
+ 'payment.initiated',
132
+ 'payment.completed',
133
+ 'payment.failed',
134
+ 'payment.refunded',
135
+ ],
136
+ hold: [
137
+ 'hold.created',
138
+ 'hold.captured',
139
+ 'hold.voided',
140
+ 'hold.expired',
141
+ ],
142
+ wallet: [
143
+ 'wallet.created',
144
+ 'wallet.funded',
145
+ 'wallet.updated',
146
+ ],
147
+ agent: [
148
+ 'agent.created',
149
+ 'agent.updated',
150
+ ],
151
+ mandate: [
152
+ 'mandate.verified',
153
+ 'mandate.executed',
154
+ 'mandate.rejected',
155
+ ],
156
+ risk: [
157
+ 'risk.alert',
158
+ 'limit.exceeded',
159
+ ],
160
+ };
161
+ // Tool handlers
162
+ export const eventToolHandlers = {
163
+ sardis_subscribe_events: async (args) => {
164
+ const parsed = SubscribeEventsSchema.safeParse(args);
165
+ if (!parsed.success) {
166
+ return {
167
+ content: [{ type: 'text', text: `Invalid request: ${parsed.error.message}` }],
168
+ isError: true,
169
+ };
170
+ }
171
+ const config = getConfig();
172
+ if (!config.apiKey || config.mode === 'simulated') {
173
+ // Simulated mode - show what would be subscribed
174
+ const matchingEvents = [];
175
+ const pattern = parsed.data.event_pattern;
176
+ // Find matching events
177
+ for (const [category, events] of Object.entries(EVENT_CATEGORIES)) {
178
+ for (const event of events) {
179
+ if (matchesPattern(event, pattern)) {
180
+ matchingEvents.push(event);
181
+ }
182
+ }
183
+ }
184
+ return {
185
+ content: [{
186
+ type: 'text',
187
+ text: JSON.stringify({
188
+ subscription_id: `sub_${Date.now().toString(36)}`,
189
+ event_pattern: pattern,
190
+ webhook_url: parsed.data.webhook_url,
191
+ matching_events: matchingEvents,
192
+ status: 'active',
193
+ created_at: new Date().toISOString(),
194
+ message: `Would subscribe to ${matchingEvents.length} event types matching "${pattern}"`,
195
+ }, null, 2),
196
+ }],
197
+ };
198
+ }
199
+ try {
200
+ const result = await apiRequest('POST', '/api/v2/events/subscriptions', {
201
+ event_pattern: parsed.data.event_pattern,
202
+ webhook_url: parsed.data.webhook_url,
203
+ });
204
+ return {
205
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
206
+ };
207
+ }
208
+ catch (error) {
209
+ return {
210
+ content: [{
211
+ type: 'text',
212
+ text: `Failed to subscribe to events: ${error instanceof Error ? error.message : 'Unknown error'}`,
213
+ }],
214
+ isError: true,
215
+ };
216
+ }
217
+ },
218
+ sardis_list_event_types: async (args) => {
219
+ const parsed = ListEventTypesSchema.safeParse(args);
220
+ const category = parsed.success ? parsed.data.category : undefined;
221
+ // Filter by category if specified
222
+ const categories = category && category in EVENT_CATEGORIES
223
+ ? { [category]: EVENT_CATEGORIES[category] }
224
+ : EVENT_CATEGORIES;
225
+ const summary = Object.entries(categories).map(([cat, events]) => ({
226
+ category: cat,
227
+ count: events.length,
228
+ events: events,
229
+ }));
230
+ const totalEvents = summary.reduce((sum, cat) => sum + cat.count, 0);
231
+ return {
232
+ content: [{
233
+ type: 'text',
234
+ text: JSON.stringify({
235
+ total_event_types: totalEvents,
236
+ categories: summary,
237
+ usage_examples: [
238
+ 'Subscribe to all policy events: sardis_subscribe_events with event_pattern="policy.*"',
239
+ 'Subscribe to all creation events: sardis_subscribe_events with event_pattern="*.created"',
240
+ 'Subscribe to specific event: sardis_subscribe_events with event_pattern="policy.violated"',
241
+ 'Subscribe to all events: sardis_subscribe_events with event_pattern="*"',
242
+ ],
243
+ }, null, 2),
244
+ }],
245
+ };
246
+ },
247
+ sardis_get_event_history: async (args) => {
248
+ const parsed = GetEventHistorySchema.safeParse(args);
249
+ const limit = parsed.success && parsed.data.limit ? parsed.data.limit : 50;
250
+ const offset = parsed.success && parsed.data.offset ? parsed.data.offset : 0;
251
+ const config = getConfig();
252
+ if (!config.apiKey || config.mode === 'simulated') {
253
+ // Simulated mode - generate sample events
254
+ const sampleEvents = [
255
+ {
256
+ event_id: `evt_${Date.now().toString(36)}`,
257
+ event_type: 'policy.check.passed',
258
+ data: {
259
+ policy_id: 'pol_sim123',
260
+ agent_id: parsed.success && parsed.data.agent_id || 'agent_sim',
261
+ vendor: 'openai',
262
+ amount: '50.00',
263
+ },
264
+ created_at: new Date(Date.now() - 3600000).toISOString(),
265
+ },
266
+ {
267
+ event_id: `evt_${(Date.now() - 1).toString(36)}`,
268
+ event_type: 'payment.completed',
269
+ data: {
270
+ transaction_id: 'tx_sim456',
271
+ agent_id: parsed.success && parsed.data.agent_id || 'agent_sim',
272
+ amount: '50.00',
273
+ vendor: 'openai',
274
+ },
275
+ created_at: new Date(Date.now() - 7200000).toISOString(),
276
+ },
277
+ {
278
+ event_id: `evt_${(Date.now() - 2).toString(36)}`,
279
+ event_type: 'spend.threshold.warning',
280
+ data: {
281
+ agent_id: parsed.success && parsed.data.agent_id || 'agent_sim',
282
+ amount: '800.00',
283
+ limit: '1000.00',
284
+ period: 'daily',
285
+ percentage: 80.0,
286
+ },
287
+ created_at: new Date(Date.now() - 10800000).toISOString(),
288
+ },
289
+ ];
290
+ // Filter by event_type if specified
291
+ const filteredEvents = parsed.success && parsed.data.event_type
292
+ ? sampleEvents.filter(e => e.event_type === parsed.data.event_type)
293
+ : sampleEvents;
294
+ return {
295
+ content: [{
296
+ type: 'text',
297
+ text: JSON.stringify({
298
+ events: filteredEvents.slice(offset, offset + limit),
299
+ total: filteredEvents.length,
300
+ limit,
301
+ offset,
302
+ filters: {
303
+ agent_id: parsed.success ? parsed.data.agent_id : undefined,
304
+ wallet_id: parsed.success ? parsed.data.wallet_id : undefined,
305
+ event_type: parsed.success ? parsed.data.event_type : undefined,
306
+ },
307
+ }, null, 2),
308
+ }],
309
+ };
310
+ }
311
+ try {
312
+ // Build query params
313
+ const params = new URLSearchParams();
314
+ if (parsed.success) {
315
+ if (parsed.data.agent_id)
316
+ params.set('agent_id', parsed.data.agent_id);
317
+ if (parsed.data.wallet_id)
318
+ params.set('wallet_id', parsed.data.wallet_id);
319
+ if (parsed.data.event_type)
320
+ params.set('event_type', parsed.data.event_type);
321
+ }
322
+ params.set('limit', limit.toString());
323
+ params.set('offset', offset.toString());
324
+ const result = await apiRequest('GET', `/api/v2/events?${params.toString()}`);
325
+ return {
326
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
327
+ };
328
+ }
329
+ catch (error) {
330
+ return {
331
+ content: [{
332
+ type: 'text',
333
+ text: `Failed to get event history: ${error instanceof Error ? error.message : 'Unknown error'}`,
334
+ }],
335
+ isError: true,
336
+ };
337
+ }
338
+ },
339
+ sardis_configure_webhook: async (args) => {
340
+ const parsed = ConfigureWebhookSchema.safeParse(args);
341
+ if (!parsed.success) {
342
+ return {
343
+ content: [{ type: 'text', text: `Invalid request: ${parsed.error.message}` }],
344
+ isError: true,
345
+ };
346
+ }
347
+ const config = getConfig();
348
+ if (!config.apiKey || config.mode === 'simulated') {
349
+ // Simulated mode
350
+ const subscriptionId = `whsub_${Date.now().toString(36)}`;
351
+ const secret = `whsec_${Math.random().toString(36).substring(2)}`;
352
+ return {
353
+ content: [{
354
+ type: 'text',
355
+ text: JSON.stringify({
356
+ subscription_id: subscriptionId,
357
+ url: parsed.data.url,
358
+ events: parsed.data.events || [],
359
+ secret,
360
+ is_active: parsed.data.is_active ?? true,
361
+ created_at: new Date().toISOString(),
362
+ message: 'Webhook configured successfully',
363
+ signature_verification: {
364
+ header: 'X-Sardis-Signature',
365
+ format: 't=<timestamp>,v1=<hmac_sha256>',
366
+ algorithm: 'HMAC-SHA256',
367
+ tolerance: '300 seconds',
368
+ },
369
+ delivery_info: {
370
+ max_retries: 3,
371
+ retry_delays: [1, 5, 30],
372
+ timeout: 10,
373
+ },
374
+ }, null, 2),
375
+ }],
376
+ };
377
+ }
378
+ try {
379
+ const result = await apiRequest('POST', '/api/v2/webhooks', {
380
+ url: parsed.data.url,
381
+ events: parsed.data.events || [],
382
+ is_active: parsed.data.is_active ?? true,
383
+ });
384
+ return {
385
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
386
+ };
387
+ }
388
+ catch (error) {
389
+ return {
390
+ content: [{
391
+ type: 'text',
392
+ text: `Failed to configure webhook: ${error instanceof Error ? error.message : 'Unknown error'}`,
393
+ }],
394
+ isError: true,
395
+ };
396
+ }
397
+ },
398
+ };
399
+ /**
400
+ * Check if event type matches pattern (supports wildcards)
401
+ */
402
+ function matchesPattern(eventType, pattern) {
403
+ if (pattern === '*')
404
+ return true;
405
+ if (pattern === eventType)
406
+ return true;
407
+ // Convert glob pattern to regex
408
+ const regexPattern = pattern
409
+ .replace(/\./g, '\\.')
410
+ .replace(/\*/g, '.*');
411
+ return new RegExp(`^${regexPattern}$`).test(eventType);
412
+ }
413
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/tools/events.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  /**
2
- * Fiat Rails tools for MCP server
2
+ * Fiat/Treasury tools for MCP server
3
3
  *
4
- * Tools for funding wallets from bank accounts and withdrawing to fiat.
4
+ * USD-first launch with multi-currency-ready schemas.
5
5
  */
6
6
  import type { ToolDefinition, ToolHandler } from './types.js';
7
7
  export declare const fiatToolDefinitions: ToolDefinition[];
@@ -1 +1 @@
1
- {"version":3,"file":"fiat.d.ts","sourceRoot":"","sources":["../../src/tools/fiat.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAc,MAAM,YAAY,CAAC;AA4C1E,eAAO,MAAM,mBAAmB,EAAE,cAAc,EAiF/C,CAAC;AAGF,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CA+SxD,CAAC"}
1
+ {"version":3,"file":"fiat.d.ts","sourceRoot":"","sources":["../../src/tools/fiat.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAc,MAAM,YAAY,CAAC;AA6I1E,eAAO,MAAM,mBAAmB,EAAE,cAAc,EAgN/C,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAqdxD,CAAC"}