@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,394 @@
1
+ /**
2
+ * Fiat Rails tools for MCP server
3
+ *
4
+ * Tools for funding wallets from bank accounts and withdrawing to fiat.
5
+ */
6
+ import { z } from 'zod';
7
+ import { getConfig } from '../config.js';
8
+ import { apiRequest } from '../api.js';
9
+ // Schemas
10
+ const FundWalletSchema = z.object({
11
+ wallet_id: z.string().optional().describe('Wallet to fund'),
12
+ amount: z.union([z.string(), z.number()]).describe('Amount to fund in USD'),
13
+ source: z.enum(['ach', 'wire', 'card', 'bank_account']).optional().describe('Funding source type'),
14
+ currency: z.string().optional().describe('Currency code'),
15
+ source_id: z.string().optional().describe('Saved payment method ID'),
16
+ });
17
+ const WithdrawSchema = z.object({
18
+ wallet_id: z.string().describe('Wallet to withdraw from'),
19
+ amount: z.string().describe('Amount to withdraw in USD'),
20
+ destination_id: z.string().describe('Bank account ID to withdraw to'),
21
+ });
22
+ const StatusSchema = z.object({
23
+ transfer_id: z.string().optional().describe('Transfer ID to check'),
24
+ funding_id: z.string().optional().describe('Funding ID to check (alias for transfer_id)'),
25
+ });
26
+ // Tool definitions
27
+ export const fiatToolDefinitions = [
28
+ {
29
+ name: 'sardis_fund_wallet',
30
+ description: 'Fund a wallet from a bank account, wire transfer, or card. Use this to add funds to a wallet. USD is automatically converted to USDC.',
31
+ inputSchema: {
32
+ type: 'object',
33
+ properties: {
34
+ amount: { type: 'number', description: 'Amount to fund in USD' },
35
+ wallet_id: { type: 'string', description: 'Wallet to fund' },
36
+ source: {
37
+ type: 'string',
38
+ enum: ['ach', 'wire', 'card', 'bank_account'],
39
+ description: 'Funding source type. ACH is free but slower, wire is faster, card has fees.',
40
+ },
41
+ currency: { type: 'string', description: 'Currency code (default: USD)' },
42
+ source_id: { type: 'string', description: 'Saved payment method ID' },
43
+ },
44
+ required: ['amount'],
45
+ },
46
+ },
47
+ {
48
+ name: 'sardis_withdraw_to_bank',
49
+ description: 'Withdraw funds from wallet to a bank account. USDC is converted to USD.',
50
+ inputSchema: {
51
+ type: 'object',
52
+ properties: {
53
+ wallet_id: { type: 'string', description: 'Wallet to withdraw from' },
54
+ amount: { type: 'string', description: 'Amount to withdraw in USD' },
55
+ destination_id: { type: 'string', description: 'Bank account ID to withdraw to' },
56
+ },
57
+ required: ['wallet_id', 'amount', 'destination_id'],
58
+ },
59
+ },
60
+ {
61
+ name: 'sardis_withdraw',
62
+ description: 'Withdraw funds from wallet to a bank account (alias for sardis_withdraw_to_bank).',
63
+ inputSchema: {
64
+ type: 'object',
65
+ properties: {
66
+ amount: { type: 'number', description: 'Amount to withdraw' },
67
+ destination: { type: 'string', description: 'Destination type (bank_account, wire)' },
68
+ account_id: { type: 'string', description: 'Bank account ID to withdraw to' },
69
+ wallet_id: { type: 'string', description: 'Wallet to withdraw from' },
70
+ },
71
+ required: ['amount'],
72
+ },
73
+ },
74
+ {
75
+ name: 'sardis_get_funding_status',
76
+ description: 'Check the status of a funding transfer.',
77
+ inputSchema: {
78
+ type: 'object',
79
+ properties: {
80
+ transfer_id: { type: 'string', description: 'Funding transfer ID' },
81
+ },
82
+ required: ['transfer_id'],
83
+ },
84
+ },
85
+ {
86
+ name: 'sardis_get_withdrawal_status',
87
+ description: 'Check the status of a withdrawal to bank.',
88
+ inputSchema: {
89
+ type: 'object',
90
+ properties: {
91
+ transfer_id: { type: 'string', description: 'Withdrawal transfer ID' },
92
+ },
93
+ required: ['transfer_id'],
94
+ },
95
+ },
96
+ {
97
+ name: 'sardis_list_funding_transactions',
98
+ description: 'List all funding and withdrawal transactions.',
99
+ inputSchema: {
100
+ type: 'object',
101
+ properties: {
102
+ type: { type: 'string', enum: ['deposit', 'withdrawal', 'all'], description: 'Filter by transaction type' },
103
+ limit: { type: 'number', description: 'Maximum number of results' },
104
+ },
105
+ required: [],
106
+ },
107
+ },
108
+ ];
109
+ // Tool handlers
110
+ export const fiatToolHandlers = {
111
+ sardis_fund_wallet: async (args) => {
112
+ const parsed = FundWalletSchema.safeParse(args);
113
+ if (!parsed.success) {
114
+ return {
115
+ content: [{ type: 'text', text: `Invalid request: ${parsed.error.message}` }],
116
+ isError: true,
117
+ };
118
+ }
119
+ const config = getConfig();
120
+ const walletId = parsed.data.wallet_id || config.walletId || 'wallet_default';
121
+ const amount = typeof parsed.data.amount === 'number'
122
+ ? parsed.data.amount.toString()
123
+ : parsed.data.amount;
124
+ if (!config.apiKey || config.mode === 'simulated') {
125
+ const transferId = `fund_${Date.now().toString(36)}`;
126
+ const source = parsed.data.source || 'ach';
127
+ const eta = source === 'wire' ? '1 hour' : source === 'card' ? '5 minutes' : '2-3 business days';
128
+ return {
129
+ content: [{
130
+ type: 'text',
131
+ text: JSON.stringify({
132
+ funding_id: transferId,
133
+ wallet_id: walletId,
134
+ amount: amount,
135
+ source_type: source,
136
+ currency: parsed.data.currency || 'USD',
137
+ status: 'processing',
138
+ estimated_arrival: eta,
139
+ created_at: new Date().toISOString(),
140
+ message: `Funding of $${amount} initiated via ${source.toUpperCase()}`,
141
+ }, null, 2),
142
+ }],
143
+ };
144
+ }
145
+ try {
146
+ const result = await apiRequest('POST', '/api/v2/fiat/fund', parsed.data);
147
+ return {
148
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
149
+ };
150
+ }
151
+ catch (error) {
152
+ return {
153
+ content: [{
154
+ type: 'text',
155
+ text: `Failed to fund wallet: ${error instanceof Error ? error.message : 'Unknown error'}`,
156
+ }],
157
+ isError: true,
158
+ };
159
+ }
160
+ },
161
+ sardis_withdraw_to_bank: async (args) => {
162
+ const parsed = WithdrawSchema.safeParse(args);
163
+ if (!parsed.success) {
164
+ return {
165
+ content: [{ type: 'text', text: `Invalid request: ${parsed.error.message}` }],
166
+ isError: true,
167
+ };
168
+ }
169
+ const config = getConfig();
170
+ if (!config.apiKey || config.mode === 'simulated') {
171
+ const transferId = `wd_${Date.now().toString(36)}`;
172
+ return {
173
+ content: [{
174
+ type: 'text',
175
+ text: JSON.stringify({
176
+ id: transferId,
177
+ wallet_id: parsed.data.wallet_id,
178
+ amount: parsed.data.amount,
179
+ destination_bank: '****1234',
180
+ status: 'processing',
181
+ estimated_arrival: '1-2 business days',
182
+ created_at: new Date().toISOString(),
183
+ message: `Withdrawal of $${parsed.data.amount} initiated`,
184
+ }, null, 2),
185
+ }],
186
+ };
187
+ }
188
+ try {
189
+ const result = await apiRequest('POST', '/api/v2/fiat/withdraw', parsed.data);
190
+ return {
191
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
192
+ };
193
+ }
194
+ catch (error) {
195
+ return {
196
+ content: [{
197
+ type: 'text',
198
+ text: `Failed to withdraw: ${error instanceof Error ? error.message : 'Unknown error'}`,
199
+ }],
200
+ isError: true,
201
+ };
202
+ }
203
+ },
204
+ sardis_get_funding_status: async (args) => {
205
+ const parsed = StatusSchema.safeParse(args);
206
+ const transferId = parsed.success && (parsed.data.transfer_id || parsed.data.funding_id);
207
+ if (!transferId) {
208
+ return {
209
+ content: [{ type: 'text', text: 'Invalid request: transfer_id or funding_id is required' }],
210
+ isError: true,
211
+ };
212
+ }
213
+ const config = getConfig();
214
+ if (!config.apiKey || config.mode === 'simulated') {
215
+ return {
216
+ content: [{
217
+ type: 'text',
218
+ text: JSON.stringify({
219
+ funding_id: transferId,
220
+ id: transferId,
221
+ type: 'funding',
222
+ status: 'completed',
223
+ amount: '100.00',
224
+ completed_at: new Date().toISOString(),
225
+ }, null, 2),
226
+ }],
227
+ };
228
+ }
229
+ try {
230
+ const result = await apiRequest('GET', `/api/v2/fiat/status/${transferId}`);
231
+ return {
232
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
233
+ };
234
+ }
235
+ catch (error) {
236
+ return {
237
+ content: [{
238
+ type: 'text',
239
+ text: `Failed to get status: ${error instanceof Error ? error.message : 'Unknown error'}`,
240
+ }],
241
+ isError: true,
242
+ };
243
+ }
244
+ },
245
+ sardis_get_withdrawal_status: async (args) => {
246
+ const parsed = StatusSchema.safeParse(args);
247
+ if (!parsed.success) {
248
+ return {
249
+ content: [{ type: 'text', text: `Invalid request: ${parsed.error.message}` }],
250
+ isError: true,
251
+ };
252
+ }
253
+ const config = getConfig();
254
+ if (!config.apiKey || config.mode === 'simulated') {
255
+ return {
256
+ content: [{
257
+ type: 'text',
258
+ text: JSON.stringify({
259
+ id: parsed.data.transfer_id,
260
+ type: 'withdrawal',
261
+ status: 'processing',
262
+ amount: '100.00',
263
+ estimated_arrival: '1-2 business days',
264
+ }, null, 2),
265
+ }],
266
+ };
267
+ }
268
+ try {
269
+ const result = await apiRequest('GET', `/api/v2/fiat/status/${parsed.data.transfer_id}`);
270
+ return {
271
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
272
+ };
273
+ }
274
+ catch (error) {
275
+ return {
276
+ content: [{
277
+ type: 'text',
278
+ text: `Failed to get status: ${error instanceof Error ? error.message : 'Unknown error'}`,
279
+ }],
280
+ isError: true,
281
+ };
282
+ }
283
+ },
284
+ sardis_withdraw: async (args) => {
285
+ const config = getConfig();
286
+ const amount = typeof args === 'object' && args !== null && 'amount' in args
287
+ ? args.amount
288
+ : 0;
289
+ const accountId = typeof args === 'object' && args !== null && 'account_id' in args
290
+ ? args.account_id
291
+ : 'acct_default';
292
+ const walletId = typeof args === 'object' && args !== null && 'wallet_id' in args
293
+ ? args.wallet_id || config.walletId
294
+ : config.walletId;
295
+ if (amount === 0) {
296
+ return {
297
+ content: [{ type: 'text', text: 'Invalid request: amount is required' }],
298
+ isError: true,
299
+ };
300
+ }
301
+ if (!config.apiKey || config.mode === 'simulated') {
302
+ const transferId = `wd_${Date.now().toString(36)}`;
303
+ return {
304
+ content: [{
305
+ type: 'text',
306
+ text: JSON.stringify({
307
+ withdrawal_id: transferId,
308
+ wallet_id: walletId,
309
+ amount: amount.toString(),
310
+ destination_bank: '****1234',
311
+ account_id: accountId,
312
+ status: 'processing',
313
+ estimated_arrival: '1-2 business days',
314
+ created_at: new Date().toISOString(),
315
+ message: `Withdrawal of $${amount} initiated`,
316
+ }, null, 2),
317
+ }],
318
+ };
319
+ }
320
+ try {
321
+ const result = await apiRequest('POST', '/api/v2/fiat/withdraw', {
322
+ wallet_id: walletId,
323
+ amount: amount.toString(),
324
+ destination_id: accountId,
325
+ });
326
+ return {
327
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
328
+ };
329
+ }
330
+ catch (error) {
331
+ return {
332
+ content: [{
333
+ type: 'text',
334
+ text: `Failed to withdraw: ${error instanceof Error ? error.message : 'Unknown error'}`,
335
+ }],
336
+ isError: true,
337
+ };
338
+ }
339
+ },
340
+ sardis_list_funding_transactions: async (args) => {
341
+ const config = getConfig();
342
+ const typeFilter = typeof args === 'object' && args !== null && 'type' in args
343
+ ? args.type
344
+ : 'all';
345
+ if (!config.apiKey || config.mode === 'simulated') {
346
+ const mockTransactions = [
347
+ {
348
+ id: 'fund_001',
349
+ type: 'deposit',
350
+ amount: '1000.00',
351
+ status: 'completed',
352
+ source: 'bank_account',
353
+ created_at: new Date(Date.now() - 86400000).toISOString(),
354
+ },
355
+ {
356
+ id: 'wd_001',
357
+ type: 'withdrawal',
358
+ amount: '200.00',
359
+ status: 'processing',
360
+ destination: 'bank_account',
361
+ created_at: new Date(Date.now() - 3600000).toISOString(),
362
+ },
363
+ ];
364
+ const filtered = typeFilter === 'all'
365
+ ? mockTransactions
366
+ : mockTransactions.filter(t => t.type === typeFilter);
367
+ return {
368
+ content: [{
369
+ type: 'text',
370
+ text: JSON.stringify(filtered, null, 2),
371
+ }],
372
+ };
373
+ }
374
+ try {
375
+ const params = new URLSearchParams();
376
+ if (typeFilter && typeFilter !== 'all')
377
+ params.append('type', typeFilter);
378
+ const result = await apiRequest('GET', `/api/v2/fiat/transactions?${params}`);
379
+ return {
380
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
381
+ };
382
+ }
383
+ catch (error) {
384
+ return {
385
+ content: [{
386
+ type: 'text',
387
+ text: `Failed to list transactions: ${error instanceof Error ? error.message : 'Unknown error'}`,
388
+ }],
389
+ isError: true,
390
+ };
391
+ }
392
+ },
393
+ };
394
+ //# sourceMappingURL=fiat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fiat.js","sourceRoot":"","sources":["../../src/tools/fiat.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Hold (pre-authorization) tools for MCP server
3
+ */
4
+ import type { ToolDefinition, ToolHandler } from './types.js';
5
+ export declare const holdToolDefinitions: ToolDefinition[];
6
+ export declare const holdToolHandlers: Record<string, ToolHandler>;
7
+ //# sourceMappingURL=holds.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"holds.d.ts","sourceRoot":"","sources":["../../src/tools/holds.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EACV,cAAc,EACd,WAAW,EAIZ,MAAM,YAAY,CAAC;AAUpB,eAAO,MAAM,mBAAmB,EAAE,cAAc,EA+F/C,CAAC;AAGF,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAiUxD,CAAC"}