@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.
- package/CHANGELOG.md +69 -0
- package/CLAUDE_DESKTOP_CONFIG.md +180 -0
- package/LICENSE +21 -0
- package/README.md +375 -0
- package/dist/api.d.ts +25 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/api.js +70 -0
- package/dist/api.js.map +1 -0
- package/dist/cli.d.ts +12 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +274 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +47 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +82 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +61 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +255 -0
- package/dist/index.js.map +1 -0
- package/dist/tools/agents.d.ts +7 -0
- package/dist/tools/agents.d.ts.map +1 -0
- package/dist/tools/agents.js +219 -0
- package/dist/tools/agents.js.map +1 -0
- package/dist/tools/approvals.d.ts +9 -0
- package/dist/tools/approvals.d.ts.map +1 -0
- package/dist/tools/approvals.js +308 -0
- package/dist/tools/approvals.js.map +1 -0
- package/dist/tools/cards.d.ts +9 -0
- package/dist/tools/cards.d.ts.map +1 -0
- package/dist/tools/cards.js +415 -0
- package/dist/tools/cards.js.map +1 -0
- package/dist/tools/fiat.d.ts +9 -0
- package/dist/tools/fiat.d.ts.map +1 -0
- package/dist/tools/fiat.js +394 -0
- package/dist/tools/fiat.js.map +1 -0
- package/dist/tools/holds.d.ts +7 -0
- package/dist/tools/holds.d.ts.map +1 -0
- package/dist/tools/holds.js +403 -0
- package/dist/tools/holds.js.map +1 -0
- package/dist/tools/index.d.ts +70 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +152 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/payments.d.ts +47 -0
- package/dist/tools/payments.d.ts.map +1 -0
- package/dist/tools/payments.js +447 -0
- package/dist/tools/payments.js.map +1 -0
- package/dist/tools/policy.d.ts +41 -0
- package/dist/tools/policy.d.ts.map +1 -0
- package/dist/tools/policy.js +450 -0
- package/dist/tools/policy.js.map +1 -0
- package/dist/tools/spending.d.ts +9 -0
- package/dist/tools/spending.d.ts.map +1 -0
- package/dist/tools/spending.js +324 -0
- package/dist/tools/spending.js.map +1 -0
- package/dist/tools/types.d.ts +247 -0
- package/dist/tools/types.d.ts.map +1 -0
- package/dist/tools/types.js +71 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/tools/wallet-management.d.ts +9 -0
- package/dist/tools/wallet-management.d.ts.map +1 -0
- package/dist/tools/wallet-management.js +222 -0
- package/dist/tools/wallet-management.js.map +1 -0
- package/dist/tools/wallets.d.ts +15 -0
- package/dist/tools/wallets.d.ts.map +1 -0
- package/dist/tools/wallets.js +112 -0
- package/dist/tools/wallets.js.map +1 -0
- package/mcp.json +283 -0
- package/package.json +145 -0
|
@@ -0,0 +1,403 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hold (pre-authorization) tools for MCP server
|
|
3
|
+
*/
|
|
4
|
+
import { getConfig } from '../config.js';
|
|
5
|
+
import { apiRequest } from '../api.js';
|
|
6
|
+
import { CreateHoldSchema, CaptureHoldSchema, VoidHoldSchema, GetHoldSchema, ListHoldsSchema, } from './types.js';
|
|
7
|
+
// Tool definitions
|
|
8
|
+
export const holdToolDefinitions = [
|
|
9
|
+
{
|
|
10
|
+
name: 'sardis_create_hold',
|
|
11
|
+
description: 'Create a pre-authorization hold on funds. The funds are reserved but not transferred until captured.',
|
|
12
|
+
inputSchema: {
|
|
13
|
+
type: 'object',
|
|
14
|
+
properties: {
|
|
15
|
+
wallet_id: { type: 'string', description: 'Wallet ID to create hold on' },
|
|
16
|
+
amount: { type: ['string', 'number'], description: 'Amount to hold (e.g., "100.00" or 100)' },
|
|
17
|
+
token: {
|
|
18
|
+
type: 'string',
|
|
19
|
+
enum: ['USDC', 'USDT', 'PYUSD', 'EURC'],
|
|
20
|
+
description: 'Token type. Defaults to USDC.',
|
|
21
|
+
},
|
|
22
|
+
merchant_id: { type: 'string', description: 'Optional merchant identifier' },
|
|
23
|
+
purpose: { type: 'string', description: 'Purpose of the hold' },
|
|
24
|
+
expires_in: { type: 'number', description: 'Hold duration in seconds (alias for duration_hours * 3600)' },
|
|
25
|
+
duration_hours: { type: 'number', description: 'Hold duration in hours. Defaults to 168 (7 days).' },
|
|
26
|
+
},
|
|
27
|
+
required: ['amount'],
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
name: 'sardis_capture_hold',
|
|
32
|
+
description: 'Capture a hold to complete the payment. Can capture partial or full amount.',
|
|
33
|
+
inputSchema: {
|
|
34
|
+
type: 'object',
|
|
35
|
+
properties: {
|
|
36
|
+
hold_id: { type: 'string', description: 'Hold ID to capture' },
|
|
37
|
+
amount: { type: 'string', description: 'Amount to capture. Defaults to full hold amount.' },
|
|
38
|
+
},
|
|
39
|
+
required: ['hold_id'],
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
name: 'sardis_void_hold',
|
|
44
|
+
description: 'Void a hold to release the reserved funds without completing payment.',
|
|
45
|
+
inputSchema: {
|
|
46
|
+
type: 'object',
|
|
47
|
+
properties: {
|
|
48
|
+
hold_id: { type: 'string', description: 'Hold ID to void' },
|
|
49
|
+
},
|
|
50
|
+
required: ['hold_id'],
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
name: 'sardis_release_hold',
|
|
55
|
+
description: 'Release a hold (alias for sardis_void_hold). Releases the reserved funds without completing payment.',
|
|
56
|
+
inputSchema: {
|
|
57
|
+
type: 'object',
|
|
58
|
+
properties: {
|
|
59
|
+
hold_id: { type: 'string', description: 'Hold ID to release' },
|
|
60
|
+
},
|
|
61
|
+
required: ['hold_id'],
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
name: 'sardis_get_hold',
|
|
66
|
+
description: 'Get details of a specific hold.',
|
|
67
|
+
inputSchema: {
|
|
68
|
+
type: 'object',
|
|
69
|
+
properties: {
|
|
70
|
+
hold_id: { type: 'string', description: 'Hold ID to retrieve' },
|
|
71
|
+
},
|
|
72
|
+
required: ['hold_id'],
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
name: 'sardis_list_holds',
|
|
77
|
+
description: 'List all holds for a wallet, optionally filtered by status.',
|
|
78
|
+
inputSchema: {
|
|
79
|
+
type: 'object',
|
|
80
|
+
properties: {
|
|
81
|
+
wallet_id: { type: 'string', description: 'Wallet ID to list holds for' },
|
|
82
|
+
status: {
|
|
83
|
+
type: 'string',
|
|
84
|
+
enum: ['active', 'captured', 'voided', 'expired'],
|
|
85
|
+
description: 'Filter by status',
|
|
86
|
+
},
|
|
87
|
+
},
|
|
88
|
+
required: ['wallet_id'],
|
|
89
|
+
},
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
name: 'sardis_extend_hold',
|
|
93
|
+
description: 'Extend the expiration time of an active hold.',
|
|
94
|
+
inputSchema: {
|
|
95
|
+
type: 'object',
|
|
96
|
+
properties: {
|
|
97
|
+
hold_id: { type: 'string', description: 'Hold ID to extend' },
|
|
98
|
+
additional_hours: { type: 'number', description: 'Hours to add to expiration' },
|
|
99
|
+
},
|
|
100
|
+
required: ['hold_id', 'additional_hours'],
|
|
101
|
+
},
|
|
102
|
+
},
|
|
103
|
+
];
|
|
104
|
+
// Tool handlers
|
|
105
|
+
export const holdToolHandlers = {
|
|
106
|
+
sardis_create_hold: async (args) => {
|
|
107
|
+
const parsed = CreateHoldSchema.safeParse(args);
|
|
108
|
+
if (!parsed.success) {
|
|
109
|
+
return {
|
|
110
|
+
content: [{ type: 'text', text: `Invalid request: ${parsed.error.message}` }],
|
|
111
|
+
isError: true,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
const config = getConfig();
|
|
115
|
+
const walletId = parsed.data.wallet_id || config.walletId || 'wallet_default';
|
|
116
|
+
const amount = typeof parsed.data.amount === 'number' ? parsed.data.amount.toString() : parsed.data.amount;
|
|
117
|
+
if (!config.apiKey || config.mode === 'simulated') {
|
|
118
|
+
// Simulated response
|
|
119
|
+
const holdId = `hold_${Date.now().toString(36)}`;
|
|
120
|
+
const durationHours = parsed.data.expires_in
|
|
121
|
+
? parsed.data.expires_in / 3600
|
|
122
|
+
: (parsed.data.duration_hours || 168);
|
|
123
|
+
const expiresAt = new Date(Date.now() + durationHours * 3600000).toISOString();
|
|
124
|
+
return {
|
|
125
|
+
content: [{
|
|
126
|
+
type: 'text',
|
|
127
|
+
text: JSON.stringify({
|
|
128
|
+
hold_id: holdId,
|
|
129
|
+
wallet_id: walletId,
|
|
130
|
+
status: 'active',
|
|
131
|
+
amount: typeof parsed.data.amount === 'number' ? parsed.data.amount : parseFloat(parsed.data.amount),
|
|
132
|
+
token: parsed.data.token || 'USDC',
|
|
133
|
+
purpose: parsed.data.purpose,
|
|
134
|
+
expires_at: expiresAt,
|
|
135
|
+
message: `Hold created for ${amount} ${parsed.data.token || 'USDC'}`,
|
|
136
|
+
}, null, 2),
|
|
137
|
+
}],
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
try {
|
|
141
|
+
const result = await apiRequest('POST', '/api/v2/holds', parsed.data);
|
|
142
|
+
return {
|
|
143
|
+
content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
catch (error) {
|
|
147
|
+
return {
|
|
148
|
+
content: [{
|
|
149
|
+
type: 'text',
|
|
150
|
+
text: `Failed to create hold: ${error instanceof Error ? error.message : 'Unknown error'}`,
|
|
151
|
+
}],
|
|
152
|
+
isError: true,
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
},
|
|
156
|
+
sardis_capture_hold: async (args) => {
|
|
157
|
+
const parsed = CaptureHoldSchema.safeParse(args);
|
|
158
|
+
if (!parsed.success) {
|
|
159
|
+
return {
|
|
160
|
+
content: [{ type: 'text', text: `Invalid request: ${parsed.error.message}` }],
|
|
161
|
+
isError: true,
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
const config = getConfig();
|
|
165
|
+
if (!config.apiKey || config.mode === 'simulated') {
|
|
166
|
+
return {
|
|
167
|
+
content: [{
|
|
168
|
+
type: 'text',
|
|
169
|
+
text: JSON.stringify({
|
|
170
|
+
hold_id: parsed.data.hold_id,
|
|
171
|
+
status: 'captured',
|
|
172
|
+
captured_amount: parsed.data.amount || '100.00',
|
|
173
|
+
captured_at: new Date().toISOString(),
|
|
174
|
+
message: 'Hold captured successfully',
|
|
175
|
+
}, null, 2),
|
|
176
|
+
}],
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
try {
|
|
180
|
+
const result = await apiRequest('POST', `/api/v2/holds/${parsed.data.hold_id}/capture`, parsed.data.amount ? { amount: parsed.data.amount } : {});
|
|
181
|
+
return {
|
|
182
|
+
content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
catch (error) {
|
|
186
|
+
return {
|
|
187
|
+
content: [{
|
|
188
|
+
type: 'text',
|
|
189
|
+
text: `Failed to capture hold: ${error instanceof Error ? error.message : 'Unknown error'}`,
|
|
190
|
+
}],
|
|
191
|
+
isError: true,
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
},
|
|
195
|
+
sardis_void_hold: async (args) => {
|
|
196
|
+
const parsed = VoidHoldSchema.safeParse(args);
|
|
197
|
+
if (!parsed.success) {
|
|
198
|
+
return {
|
|
199
|
+
content: [{ type: 'text', text: `Invalid request: ${parsed.error.message}` }],
|
|
200
|
+
isError: true,
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
const config = getConfig();
|
|
204
|
+
if (!config.apiKey || config.mode === 'simulated') {
|
|
205
|
+
return {
|
|
206
|
+
content: [{
|
|
207
|
+
type: 'text',
|
|
208
|
+
text: JSON.stringify({
|
|
209
|
+
hold_id: parsed.data.hold_id,
|
|
210
|
+
status: 'voided',
|
|
211
|
+
voided_at: new Date().toISOString(),
|
|
212
|
+
message: 'Hold voided successfully',
|
|
213
|
+
}, null, 2),
|
|
214
|
+
}],
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
try {
|
|
218
|
+
const result = await apiRequest('POST', `/api/v2/holds/${parsed.data.hold_id}/void`, {});
|
|
219
|
+
return {
|
|
220
|
+
content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
catch (error) {
|
|
224
|
+
return {
|
|
225
|
+
content: [{
|
|
226
|
+
type: 'text',
|
|
227
|
+
text: `Failed to void hold: ${error instanceof Error ? error.message : 'Unknown error'}`,
|
|
228
|
+
}],
|
|
229
|
+
isError: true,
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
},
|
|
233
|
+
sardis_release_hold: async (args) => {
|
|
234
|
+
// Alias for sardis_void_hold
|
|
235
|
+
const parsed = VoidHoldSchema.safeParse(args);
|
|
236
|
+
if (!parsed.success) {
|
|
237
|
+
return {
|
|
238
|
+
content: [{ type: 'text', text: `Invalid request: ${parsed.error.message}` }],
|
|
239
|
+
isError: true,
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
const config = getConfig();
|
|
243
|
+
if (!config.apiKey || config.mode === 'simulated') {
|
|
244
|
+
return {
|
|
245
|
+
content: [{
|
|
246
|
+
type: 'text',
|
|
247
|
+
text: JSON.stringify({
|
|
248
|
+
hold_id: parsed.data.hold_id,
|
|
249
|
+
status: 'released',
|
|
250
|
+
released_at: new Date().toISOString(),
|
|
251
|
+
message: 'Hold released successfully',
|
|
252
|
+
}, null, 2),
|
|
253
|
+
}],
|
|
254
|
+
};
|
|
255
|
+
}
|
|
256
|
+
try {
|
|
257
|
+
const result = await apiRequest('POST', `/api/v2/holds/${parsed.data.hold_id}/void`, {});
|
|
258
|
+
return {
|
|
259
|
+
content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
|
|
260
|
+
};
|
|
261
|
+
}
|
|
262
|
+
catch (error) {
|
|
263
|
+
return {
|
|
264
|
+
content: [{
|
|
265
|
+
type: 'text',
|
|
266
|
+
text: `Failed to release hold: ${error instanceof Error ? error.message : 'Unknown error'}`,
|
|
267
|
+
}],
|
|
268
|
+
isError: true,
|
|
269
|
+
};
|
|
270
|
+
}
|
|
271
|
+
},
|
|
272
|
+
sardis_get_hold: async (args) => {
|
|
273
|
+
const parsed = GetHoldSchema.safeParse(args);
|
|
274
|
+
if (!parsed.success) {
|
|
275
|
+
return {
|
|
276
|
+
content: [{ type: 'text', text: `Invalid request: ${parsed.error.message}` }],
|
|
277
|
+
isError: true,
|
|
278
|
+
};
|
|
279
|
+
}
|
|
280
|
+
const config = getConfig();
|
|
281
|
+
if (!config.apiKey || config.mode === 'simulated') {
|
|
282
|
+
return {
|
|
283
|
+
content: [{
|
|
284
|
+
type: 'text',
|
|
285
|
+
text: JSON.stringify({
|
|
286
|
+
id: parsed.data.hold_id,
|
|
287
|
+
wallet_id: 'wallet_simulated',
|
|
288
|
+
amount: '100.00',
|
|
289
|
+
token: 'USDC',
|
|
290
|
+
status: 'active',
|
|
291
|
+
expires_at: new Date(Date.now() + 7 * 24 * 3600000).toISOString(),
|
|
292
|
+
created_at: new Date().toISOString(),
|
|
293
|
+
}, null, 2),
|
|
294
|
+
}],
|
|
295
|
+
};
|
|
296
|
+
}
|
|
297
|
+
try {
|
|
298
|
+
const result = await apiRequest('GET', `/api/v2/holds/${parsed.data.hold_id}`);
|
|
299
|
+
return {
|
|
300
|
+
content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
|
|
301
|
+
};
|
|
302
|
+
}
|
|
303
|
+
catch (error) {
|
|
304
|
+
return {
|
|
305
|
+
content: [{
|
|
306
|
+
type: 'text',
|
|
307
|
+
text: `Failed to get hold: ${error instanceof Error ? error.message : 'Unknown error'}`,
|
|
308
|
+
}],
|
|
309
|
+
isError: true,
|
|
310
|
+
};
|
|
311
|
+
}
|
|
312
|
+
},
|
|
313
|
+
sardis_list_holds: async (args) => {
|
|
314
|
+
const parsed = ListHoldsSchema.safeParse(args);
|
|
315
|
+
if (!parsed.success) {
|
|
316
|
+
return {
|
|
317
|
+
content: [{ type: 'text', text: `Invalid request: ${parsed.error.message}` }],
|
|
318
|
+
isError: true,
|
|
319
|
+
};
|
|
320
|
+
}
|
|
321
|
+
const config = getConfig();
|
|
322
|
+
const walletId = (parsed.success && parsed.data.wallet_id) || config.walletId || 'wallet_default';
|
|
323
|
+
const statusFilter = parsed.success && parsed.data.status;
|
|
324
|
+
if (!config.apiKey || config.mode === 'simulated') {
|
|
325
|
+
const holds = [{
|
|
326
|
+
hold_id: 'hold_simulated',
|
|
327
|
+
id: 'hold_simulated',
|
|
328
|
+
wallet_id: walletId,
|
|
329
|
+
amount: '100.00',
|
|
330
|
+
token: 'USDC',
|
|
331
|
+
status: statusFilter || 'active',
|
|
332
|
+
expires_at: new Date(Date.now() + 7 * 24 * 3600000).toISOString(),
|
|
333
|
+
}];
|
|
334
|
+
return {
|
|
335
|
+
content: [{
|
|
336
|
+
type: 'text',
|
|
337
|
+
text: JSON.stringify(holds, null, 2),
|
|
338
|
+
}],
|
|
339
|
+
};
|
|
340
|
+
}
|
|
341
|
+
try {
|
|
342
|
+
let url = `/api/v2/holds/wallet/${parsed.data.wallet_id}`;
|
|
343
|
+
if (parsed.data.status) {
|
|
344
|
+
url += `?status=${parsed.data.status}`;
|
|
345
|
+
}
|
|
346
|
+
const result = await apiRequest('GET', url);
|
|
347
|
+
return {
|
|
348
|
+
content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
|
|
349
|
+
};
|
|
350
|
+
}
|
|
351
|
+
catch (error) {
|
|
352
|
+
return {
|
|
353
|
+
content: [{
|
|
354
|
+
type: 'text',
|
|
355
|
+
text: `Failed to list holds: ${error instanceof Error ? error.message : 'Unknown error'}`,
|
|
356
|
+
}],
|
|
357
|
+
isError: true,
|
|
358
|
+
};
|
|
359
|
+
}
|
|
360
|
+
},
|
|
361
|
+
sardis_extend_hold: async (args) => {
|
|
362
|
+
const schema = GetHoldSchema.extend({
|
|
363
|
+
additional_hours: CreateHoldSchema.shape.duration_hours,
|
|
364
|
+
});
|
|
365
|
+
const parsed = schema.safeParse(args);
|
|
366
|
+
if (!parsed.success) {
|
|
367
|
+
return {
|
|
368
|
+
content: [{ type: 'text', text: `Invalid request: ${parsed.error.message}` }],
|
|
369
|
+
isError: true,
|
|
370
|
+
};
|
|
371
|
+
}
|
|
372
|
+
const config = getConfig();
|
|
373
|
+
if (!config.apiKey || config.mode === 'simulated') {
|
|
374
|
+
return {
|
|
375
|
+
content: [{
|
|
376
|
+
type: 'text',
|
|
377
|
+
text: JSON.stringify({
|
|
378
|
+
hold_id: parsed.data.hold_id,
|
|
379
|
+
status: 'active',
|
|
380
|
+
expires_at: new Date(Date.now() + (168 + (parsed.data.additional_hours || 0)) * 3600000).toISOString(),
|
|
381
|
+
message: `Hold extended by ${parsed.data.additional_hours} hours`,
|
|
382
|
+
}, null, 2),
|
|
383
|
+
}],
|
|
384
|
+
};
|
|
385
|
+
}
|
|
386
|
+
try {
|
|
387
|
+
const result = await apiRequest('POST', `/api/v2/holds/${parsed.data.hold_id}/extend`, { additional_hours: parsed.data.additional_hours });
|
|
388
|
+
return {
|
|
389
|
+
content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
|
|
390
|
+
};
|
|
391
|
+
}
|
|
392
|
+
catch (error) {
|
|
393
|
+
return {
|
|
394
|
+
content: [{
|
|
395
|
+
type: 'text',
|
|
396
|
+
text: `Failed to extend hold: ${error instanceof Error ? error.message : 'Unknown error'}`,
|
|
397
|
+
}],
|
|
398
|
+
isError: true,
|
|
399
|
+
};
|
|
400
|
+
}
|
|
401
|
+
},
|
|
402
|
+
};
|
|
403
|
+
//# sourceMappingURL=holds.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"holds.js","sourceRoot":"","sources":["../../src/tools/holds.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sardis MCP Server - Tool Registry
|
|
3
|
+
*
|
|
4
|
+
* Aggregates all tool definitions and handlers from domain-specific modules.
|
|
5
|
+
* Total: 36+ tools across 9 categories.
|
|
6
|
+
*/
|
|
7
|
+
import type { ToolDefinition, ToolHandler } from './types.js';
|
|
8
|
+
export * from './types.js';
|
|
9
|
+
export { getWalletInfo, getWalletBalance } from './wallets.js';
|
|
10
|
+
export { checkPolicy } from './policy.js';
|
|
11
|
+
export { executePayment } from './payments.js';
|
|
12
|
+
/**
|
|
13
|
+
* All tool definitions aggregated from modules
|
|
14
|
+
*/
|
|
15
|
+
export declare const allToolDefinitions: ToolDefinition[];
|
|
16
|
+
/**
|
|
17
|
+
* All tool handlers aggregated from modules
|
|
18
|
+
*/
|
|
19
|
+
export declare const allToolHandlers: Record<string, ToolHandler>;
|
|
20
|
+
/**
|
|
21
|
+
* Get tool handler by name
|
|
22
|
+
*/
|
|
23
|
+
export declare function getToolHandler(name: string): ToolHandler | undefined;
|
|
24
|
+
/**
|
|
25
|
+
* Check if a tool exists
|
|
26
|
+
*/
|
|
27
|
+
export declare function hasToolHandler(name: string): boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Get list of all tool names
|
|
30
|
+
*/
|
|
31
|
+
export declare function getAllToolNames(): string[];
|
|
32
|
+
/**
|
|
33
|
+
* Tool categories for organization
|
|
34
|
+
*/
|
|
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"];
|
|
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"];
|
|
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"];
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* Get tools by category
|
|
48
|
+
*/
|
|
49
|
+
export declare function getToolsByCategory(category: keyof typeof toolCategories): ToolDefinition[];
|
|
50
|
+
/**
|
|
51
|
+
* Get total tool count
|
|
52
|
+
*/
|
|
53
|
+
export declare function getToolCount(): number;
|
|
54
|
+
/**
|
|
55
|
+
* Get tool summary for documentation
|
|
56
|
+
*/
|
|
57
|
+
export declare function getToolSummary(): {
|
|
58
|
+
category: string;
|
|
59
|
+
count: number;
|
|
60
|
+
tools: string[];
|
|
61
|
+
}[];
|
|
62
|
+
/**
|
|
63
|
+
* Get all tool definitions (alias for allToolDefinitions)
|
|
64
|
+
*/
|
|
65
|
+
export declare function getAllTools(): ToolDefinition[];
|
|
66
|
+
/**
|
|
67
|
+
* Get all tool handlers (alias for allToolHandlers)
|
|
68
|
+
*/
|
|
69
|
+
export declare function getAllToolHandlers(): Record<string, ToolHandler>;
|
|
70
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +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;AAe9D,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,EAW9C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAWvD,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"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sardis MCP Server - Tool Registry
|
|
3
|
+
*
|
|
4
|
+
* Aggregates all tool definitions and handlers from domain-specific modules.
|
|
5
|
+
* Total: 36+ tools across 9 categories.
|
|
6
|
+
*/
|
|
7
|
+
// Import tool definitions and handlers from each module
|
|
8
|
+
import { walletToolDefinitions, walletToolHandlers } from './wallets.js';
|
|
9
|
+
import { holdToolDefinitions, holdToolHandlers } from './holds.js';
|
|
10
|
+
import { agentToolDefinitions, agentToolHandlers } from './agents.js';
|
|
11
|
+
import { paymentToolDefinitions, paymentToolHandlers } from './payments.js';
|
|
12
|
+
import { policyToolDefinitions, policyToolHandlers } from './policy.js';
|
|
13
|
+
import { cardToolDefinitions, cardToolHandlers } from './cards.js';
|
|
14
|
+
import { fiatToolDefinitions, fiatToolHandlers } from './fiat.js';
|
|
15
|
+
import { approvalToolDefinitions, approvalToolHandlers } from './approvals.js';
|
|
16
|
+
import { spendingToolDefinitions, spendingToolHandlers } from './spending.js';
|
|
17
|
+
import { walletManagementToolDefinitions, walletManagementToolHandlers } from './wallet-management.js';
|
|
18
|
+
// Re-export types
|
|
19
|
+
export * from './types.js';
|
|
20
|
+
// Re-export domain functions for direct use
|
|
21
|
+
export { getWalletInfo, getWalletBalance } from './wallets.js';
|
|
22
|
+
export { checkPolicy } from './policy.js';
|
|
23
|
+
export { executePayment } from './payments.js';
|
|
24
|
+
/**
|
|
25
|
+
* All tool definitions aggregated from modules
|
|
26
|
+
*/
|
|
27
|
+
export const allToolDefinitions = [
|
|
28
|
+
...walletToolDefinitions,
|
|
29
|
+
...holdToolDefinitions,
|
|
30
|
+
...agentToolDefinitions,
|
|
31
|
+
...paymentToolDefinitions,
|
|
32
|
+
...policyToolDefinitions,
|
|
33
|
+
...cardToolDefinitions,
|
|
34
|
+
...fiatToolDefinitions,
|
|
35
|
+
...approvalToolDefinitions,
|
|
36
|
+
...spendingToolDefinitions,
|
|
37
|
+
...walletManagementToolDefinitions,
|
|
38
|
+
];
|
|
39
|
+
/**
|
|
40
|
+
* All tool handlers aggregated from modules
|
|
41
|
+
*/
|
|
42
|
+
export const allToolHandlers = {
|
|
43
|
+
...walletToolHandlers,
|
|
44
|
+
...holdToolHandlers,
|
|
45
|
+
...agentToolHandlers,
|
|
46
|
+
...paymentToolHandlers,
|
|
47
|
+
...policyToolHandlers,
|
|
48
|
+
...cardToolHandlers,
|
|
49
|
+
...fiatToolHandlers,
|
|
50
|
+
...approvalToolHandlers,
|
|
51
|
+
...spendingToolHandlers,
|
|
52
|
+
...walletManagementToolHandlers,
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* Get tool handler by name
|
|
56
|
+
*/
|
|
57
|
+
export function getToolHandler(name) {
|
|
58
|
+
return allToolHandlers[name];
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Check if a tool exists
|
|
62
|
+
*/
|
|
63
|
+
export function hasToolHandler(name) {
|
|
64
|
+
return name in allToolHandlers;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Get list of all tool names
|
|
68
|
+
*/
|
|
69
|
+
export function getAllToolNames() {
|
|
70
|
+
return Object.keys(allToolHandlers);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Tool categories for organization
|
|
74
|
+
*/
|
|
75
|
+
export const toolCategories = {
|
|
76
|
+
wallet: ['sardis_get_wallet', 'sardis_get_balance', 'sardis_create_wallet', 'sardis_update_wallet_policy', 'sardis_list_wallets'],
|
|
77
|
+
payment: ['sardis_pay', 'sardis_get_transaction', 'sardis_list_transactions'],
|
|
78
|
+
policy: ['sardis_check_policy', 'sardis_validate_limits', 'sardis_check_compliance'],
|
|
79
|
+
hold: [
|
|
80
|
+
'sardis_create_hold',
|
|
81
|
+
'sardis_capture_hold',
|
|
82
|
+
'sardis_void_hold',
|
|
83
|
+
'sardis_get_hold',
|
|
84
|
+
'sardis_list_holds',
|
|
85
|
+
'sardis_extend_hold',
|
|
86
|
+
],
|
|
87
|
+
agent: [
|
|
88
|
+
'sardis_create_agent',
|
|
89
|
+
'sardis_get_agent',
|
|
90
|
+
'sardis_list_agents',
|
|
91
|
+
'sardis_update_agent',
|
|
92
|
+
],
|
|
93
|
+
card: [
|
|
94
|
+
'sardis_issue_card',
|
|
95
|
+
'sardis_get_card',
|
|
96
|
+
'sardis_list_cards',
|
|
97
|
+
'sardis_freeze_card',
|
|
98
|
+
'sardis_unfreeze_card',
|
|
99
|
+
'sardis_cancel_card',
|
|
100
|
+
],
|
|
101
|
+
fiat: [
|
|
102
|
+
'sardis_fund_wallet',
|
|
103
|
+
'sardis_withdraw_to_bank',
|
|
104
|
+
'sardis_get_funding_status',
|
|
105
|
+
'sardis_get_withdrawal_status',
|
|
106
|
+
],
|
|
107
|
+
approval: [
|
|
108
|
+
'sardis_request_approval',
|
|
109
|
+
'sardis_get_approval_status',
|
|
110
|
+
],
|
|
111
|
+
spending: [
|
|
112
|
+
'sardis_get_spending_summary',
|
|
113
|
+
'sardis_get_spending_by_vendor',
|
|
114
|
+
'sardis_get_spending_by_category',
|
|
115
|
+
],
|
|
116
|
+
};
|
|
117
|
+
/**
|
|
118
|
+
* Get tools by category
|
|
119
|
+
*/
|
|
120
|
+
export function getToolsByCategory(category) {
|
|
121
|
+
const toolNames = toolCategories[category];
|
|
122
|
+
return allToolDefinitions.filter((t) => toolNames.includes(t.name));
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Get total tool count
|
|
126
|
+
*/
|
|
127
|
+
export function getToolCount() {
|
|
128
|
+
return allToolDefinitions.length;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Get tool summary for documentation
|
|
132
|
+
*/
|
|
133
|
+
export function getToolSummary() {
|
|
134
|
+
return Object.entries(toolCategories).map(([category, tools]) => ({
|
|
135
|
+
category,
|
|
136
|
+
count: tools.length,
|
|
137
|
+
tools: [...tools],
|
|
138
|
+
}));
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Get all tool definitions (alias for allToolDefinitions)
|
|
142
|
+
*/
|
|
143
|
+
export function getAllTools() {
|
|
144
|
+
return allToolDefinitions;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Get all tool handlers (alias for allToolHandlers)
|
|
148
|
+
*/
|
|
149
|
+
export function getAllToolHandlers() {
|
|
150
|
+
return allToolHandlers;
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
|