@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,308 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Approval Flow tools for MCP server
|
|
3
|
+
*
|
|
4
|
+
* Tools for requesting human approval for payments that exceed limits.
|
|
5
|
+
*/
|
|
6
|
+
import { z } from 'zod';
|
|
7
|
+
import { getConfig } from '../config.js';
|
|
8
|
+
import { apiRequest } from '../api.js';
|
|
9
|
+
// Schemas
|
|
10
|
+
const RequestApprovalSchema = z.object({
|
|
11
|
+
action: z.string().describe('Type of action requiring approval'),
|
|
12
|
+
vendor: z.string().optional().describe('Vendor for the payment'),
|
|
13
|
+
amount: z.number().optional().describe('Payment amount requiring approval'),
|
|
14
|
+
reason: z.string().optional().describe('Reason for the approval request'),
|
|
15
|
+
purpose: z.string().optional().describe('Purpose of the payment'),
|
|
16
|
+
card_limit: z.number().optional().describe('Card limit (for create_card action)'),
|
|
17
|
+
urgency: z.enum(['low', 'medium', 'high']).optional().describe('How urgent is this approval'),
|
|
18
|
+
expires_in_hours: z.number().optional().describe('Hours until request expires (default: 24)'),
|
|
19
|
+
});
|
|
20
|
+
const ApprovalStatusSchema = z.object({
|
|
21
|
+
approval_id: z.string().describe('Approval request ID'),
|
|
22
|
+
});
|
|
23
|
+
// Tool definitions
|
|
24
|
+
export const approvalToolDefinitions = [
|
|
25
|
+
{
|
|
26
|
+
name: 'sardis_request_approval',
|
|
27
|
+
description: 'Request human approval for a payment that exceeds policy limits or requires manual review.',
|
|
28
|
+
inputSchema: {
|
|
29
|
+
type: 'object',
|
|
30
|
+
properties: {
|
|
31
|
+
action: { type: 'string', description: 'Type of action requiring approval (payment, create_card, etc.)' },
|
|
32
|
+
vendor: { type: 'string', description: 'Vendor for the payment' },
|
|
33
|
+
amount: { type: 'number', description: 'Payment amount requiring approval' },
|
|
34
|
+
reason: { type: 'string', description: 'Reason for the approval request' },
|
|
35
|
+
purpose: { type: 'string', description: 'Purpose of the payment' },
|
|
36
|
+
card_limit: { type: 'number', description: 'Card limit (for create_card action)' },
|
|
37
|
+
urgency: {
|
|
38
|
+
type: 'string',
|
|
39
|
+
enum: ['low', 'medium', 'high'],
|
|
40
|
+
description: 'How urgent is this approval request',
|
|
41
|
+
},
|
|
42
|
+
expires_in_hours: { type: 'number', description: 'Hours until request expires (default: 24)' },
|
|
43
|
+
},
|
|
44
|
+
required: ['action'],
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
name: 'sardis_get_approval_status',
|
|
49
|
+
description: 'Check the status of a pending approval request.',
|
|
50
|
+
inputSchema: {
|
|
51
|
+
type: 'object',
|
|
52
|
+
properties: {
|
|
53
|
+
approval_id: { type: 'string', description: 'Approval request ID' },
|
|
54
|
+
},
|
|
55
|
+
required: ['approval_id'],
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
name: 'sardis_check_approval',
|
|
60
|
+
description: 'Check the status of an approval request (alias for sardis_get_approval_status).',
|
|
61
|
+
inputSchema: {
|
|
62
|
+
type: 'object',
|
|
63
|
+
properties: {
|
|
64
|
+
approval_id: { type: 'string', description: 'Approval request ID' },
|
|
65
|
+
},
|
|
66
|
+
required: ['approval_id'],
|
|
67
|
+
},
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
name: 'sardis_list_pending_approvals',
|
|
71
|
+
description: 'List all pending approval requests.',
|
|
72
|
+
inputSchema: {
|
|
73
|
+
type: 'object',
|
|
74
|
+
properties: {
|
|
75
|
+
action: { type: 'string', description: 'Filter by action type' },
|
|
76
|
+
limit: { type: 'number', description: 'Maximum number of results' },
|
|
77
|
+
},
|
|
78
|
+
required: [],
|
|
79
|
+
},
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
name: 'sardis_cancel_approval',
|
|
83
|
+
description: 'Cancel a pending approval request.',
|
|
84
|
+
inputSchema: {
|
|
85
|
+
type: 'object',
|
|
86
|
+
properties: {
|
|
87
|
+
approval_id: { type: 'string', description: 'Approval request ID to cancel' },
|
|
88
|
+
reason: { type: 'string', description: 'Reason for cancellation' },
|
|
89
|
+
},
|
|
90
|
+
required: ['approval_id'],
|
|
91
|
+
},
|
|
92
|
+
},
|
|
93
|
+
];
|
|
94
|
+
// Tool handlers
|
|
95
|
+
export const approvalToolHandlers = {
|
|
96
|
+
sardis_request_approval: async (args) => {
|
|
97
|
+
const parsed = RequestApprovalSchema.safeParse(args);
|
|
98
|
+
if (!parsed.success) {
|
|
99
|
+
return {
|
|
100
|
+
content: [{ type: 'text', text: `Invalid request: ${parsed.error.message}` }],
|
|
101
|
+
isError: true,
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
const config = getConfig();
|
|
105
|
+
if (!config.apiKey || config.mode === 'simulated') {
|
|
106
|
+
const approvalId = `appr_${Date.now().toString(36)}`;
|
|
107
|
+
const expiresAt = new Date(Date.now() + (parsed.data.expires_in_hours || 24) * 3600000).toISOString();
|
|
108
|
+
const description = parsed.data.action === 'payment' && parsed.data.vendor && parsed.data.amount
|
|
109
|
+
? `$${parsed.data.amount} payment to ${parsed.data.vendor}`
|
|
110
|
+
: parsed.data.action === 'create_card'
|
|
111
|
+
? `Create card with limit $${parsed.data.card_limit || 'unlimited'}`
|
|
112
|
+
: parsed.data.action;
|
|
113
|
+
return {
|
|
114
|
+
content: [{
|
|
115
|
+
type: 'text',
|
|
116
|
+
text: JSON.stringify({
|
|
117
|
+
approval_id: approvalId,
|
|
118
|
+
action: parsed.data.action,
|
|
119
|
+
vendor: parsed.data.vendor,
|
|
120
|
+
amount: parsed.data.amount,
|
|
121
|
+
reason: parsed.data.reason,
|
|
122
|
+
purpose: parsed.data.purpose,
|
|
123
|
+
card_limit: parsed.data.card_limit,
|
|
124
|
+
status: 'pending',
|
|
125
|
+
urgency: parsed.data.urgency || 'medium',
|
|
126
|
+
requested_by: config.agentId || 'agent_simulated',
|
|
127
|
+
created_at: new Date().toISOString(),
|
|
128
|
+
expires_at: expiresAt,
|
|
129
|
+
message: `Approval request submitted. Human review required for ${description}.`,
|
|
130
|
+
next_steps: 'The request will be reviewed by an authorized approver. Check status using sardis_get_approval_status.',
|
|
131
|
+
}, null, 2),
|
|
132
|
+
}],
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
try {
|
|
136
|
+
const result = await apiRequest('POST', '/api/v2/approvals', parsed.data);
|
|
137
|
+
return {
|
|
138
|
+
content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
catch (error) {
|
|
142
|
+
return {
|
|
143
|
+
content: [{
|
|
144
|
+
type: 'text',
|
|
145
|
+
text: `Failed to request approval: ${error instanceof Error ? error.message : 'Unknown error'}`,
|
|
146
|
+
}],
|
|
147
|
+
isError: true,
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
},
|
|
151
|
+
sardis_get_approval_status: async (args) => {
|
|
152
|
+
const parsed = ApprovalStatusSchema.safeParse(args);
|
|
153
|
+
if (!parsed.success) {
|
|
154
|
+
return {
|
|
155
|
+
content: [{ type: 'text', text: `Invalid request: ${parsed.error.message}` }],
|
|
156
|
+
isError: true,
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
const config = getConfig();
|
|
160
|
+
if (!config.apiKey || config.mode === 'simulated') {
|
|
161
|
+
// Simulate random status for demo
|
|
162
|
+
const statuses = ['pending', 'approved', 'denied'];
|
|
163
|
+
const status = statuses[Math.floor(Math.random() * statuses.length)];
|
|
164
|
+
return {
|
|
165
|
+
content: [{
|
|
166
|
+
type: 'text',
|
|
167
|
+
text: JSON.stringify({
|
|
168
|
+
approval_id: parsed.data.approval_id,
|
|
169
|
+
action: 'payment',
|
|
170
|
+
vendor: 'Example Vendor',
|
|
171
|
+
amount: 500,
|
|
172
|
+
purpose: 'Service payment',
|
|
173
|
+
status,
|
|
174
|
+
urgency: 'medium',
|
|
175
|
+
requested_by: 'agent_simulated',
|
|
176
|
+
reviewed_by: status !== 'pending' ? 'admin@example.com' : undefined,
|
|
177
|
+
created_at: new Date(Date.now() - 3600000).toISOString(),
|
|
178
|
+
expires_at: new Date(Date.now() + 20 * 3600000).toISOString(),
|
|
179
|
+
reviewed_at: status !== 'pending' ? new Date().toISOString() : undefined,
|
|
180
|
+
}, null, 2),
|
|
181
|
+
}],
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
try {
|
|
185
|
+
const result = await apiRequest('GET', `/api/v2/approvals/${parsed.data.approval_id}`);
|
|
186
|
+
return {
|
|
187
|
+
content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
catch (error) {
|
|
191
|
+
return {
|
|
192
|
+
content: [{
|
|
193
|
+
type: 'text',
|
|
194
|
+
text: `Failed to get approval status: ${error instanceof Error ? error.message : 'Unknown error'}`,
|
|
195
|
+
}],
|
|
196
|
+
isError: true,
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
},
|
|
200
|
+
sardis_check_approval: async (args) => {
|
|
201
|
+
// Alias for sardis_get_approval_status
|
|
202
|
+
const handler = approvalToolHandlers['sardis_get_approval_status'];
|
|
203
|
+
if (!handler) {
|
|
204
|
+
return {
|
|
205
|
+
content: [{ type: 'text', text: 'Handler not found' }],
|
|
206
|
+
isError: true,
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
return handler(args);
|
|
210
|
+
},
|
|
211
|
+
sardis_list_pending_approvals: async (args) => {
|
|
212
|
+
const config = getConfig();
|
|
213
|
+
const actionFilter = typeof args === 'object' && args !== null && 'action' in args
|
|
214
|
+
? args.action
|
|
215
|
+
: undefined;
|
|
216
|
+
if (!config.apiKey || config.mode === 'simulated') {
|
|
217
|
+
const mockApprovals = [
|
|
218
|
+
{
|
|
219
|
+
approval_id: 'appr_pending_1',
|
|
220
|
+
action: 'payment',
|
|
221
|
+
vendor: 'OpenAI',
|
|
222
|
+
amount: 500,
|
|
223
|
+
status: 'pending',
|
|
224
|
+
urgency: 'high',
|
|
225
|
+
created_at: new Date(Date.now() - 3600000).toISOString(),
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
approval_id: 'appr_pending_2',
|
|
229
|
+
action: 'create_card',
|
|
230
|
+
card_limit: 1000,
|
|
231
|
+
status: 'pending',
|
|
232
|
+
urgency: 'medium',
|
|
233
|
+
created_at: new Date(Date.now() - 7200000).toISOString(),
|
|
234
|
+
},
|
|
235
|
+
];
|
|
236
|
+
const filtered = actionFilter
|
|
237
|
+
? mockApprovals.filter(a => a.action === actionFilter)
|
|
238
|
+
: mockApprovals;
|
|
239
|
+
return {
|
|
240
|
+
content: [{
|
|
241
|
+
type: 'text',
|
|
242
|
+
text: JSON.stringify(filtered, null, 2),
|
|
243
|
+
}],
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
try {
|
|
247
|
+
const params = new URLSearchParams({ status: 'pending' });
|
|
248
|
+
if (actionFilter)
|
|
249
|
+
params.append('action', actionFilter);
|
|
250
|
+
const result = await apiRequest('GET', `/api/v2/approvals?${params}`);
|
|
251
|
+
return {
|
|
252
|
+
content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
catch (error) {
|
|
256
|
+
return {
|
|
257
|
+
content: [{
|
|
258
|
+
type: 'text',
|
|
259
|
+
text: `Failed to list approvals: ${error instanceof Error ? error.message : 'Unknown error'}`,
|
|
260
|
+
}],
|
|
261
|
+
isError: true,
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
},
|
|
265
|
+
sardis_cancel_approval: async (args) => {
|
|
266
|
+
const parsed = ApprovalStatusSchema.safeParse(args);
|
|
267
|
+
if (!parsed.success) {
|
|
268
|
+
return {
|
|
269
|
+
content: [{ type: 'text', text: `Invalid request: ${parsed.error.message}` }],
|
|
270
|
+
isError: true,
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
const config = getConfig();
|
|
274
|
+
const reason = typeof args === 'object' && args !== null && 'reason' in args
|
|
275
|
+
? args.reason
|
|
276
|
+
: 'Cancelled by agent';
|
|
277
|
+
if (!config.apiKey || config.mode === 'simulated') {
|
|
278
|
+
return {
|
|
279
|
+
content: [{
|
|
280
|
+
type: 'text',
|
|
281
|
+
text: JSON.stringify({
|
|
282
|
+
approval_id: parsed.data.approval_id,
|
|
283
|
+
status: 'cancelled',
|
|
284
|
+
reason,
|
|
285
|
+
cancelled_at: new Date().toISOString(),
|
|
286
|
+
message: 'Approval request cancelled successfully',
|
|
287
|
+
}, null, 2),
|
|
288
|
+
}],
|
|
289
|
+
};
|
|
290
|
+
}
|
|
291
|
+
try {
|
|
292
|
+
const result = await apiRequest('DELETE', `/api/v2/approvals/${parsed.data.approval_id}`, { reason });
|
|
293
|
+
return {
|
|
294
|
+
content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
|
|
295
|
+
};
|
|
296
|
+
}
|
|
297
|
+
catch (error) {
|
|
298
|
+
return {
|
|
299
|
+
content: [{
|
|
300
|
+
type: 'text',
|
|
301
|
+
text: `Failed to cancel approval: ${error instanceof Error ? error.message : 'Unknown error'}`,
|
|
302
|
+
}],
|
|
303
|
+
isError: true,
|
|
304
|
+
};
|
|
305
|
+
}
|
|
306
|
+
},
|
|
307
|
+
};
|
|
308
|
+
//# sourceMappingURL=approvals.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"approvals.js","sourceRoot":"","sources":["../../src/tools/approvals.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Virtual Card tools for MCP server
|
|
3
|
+
*
|
|
4
|
+
* Tools for issuing and managing virtual Visa/Mastercard cards via Lithic integration.
|
|
5
|
+
*/
|
|
6
|
+
import type { ToolDefinition, ToolHandler } from './types.js';
|
|
7
|
+
export declare const cardToolDefinitions: ToolDefinition[];
|
|
8
|
+
export declare const cardToolHandlers: Record<string, ToolHandler>;
|
|
9
|
+
//# sourceMappingURL=cards.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cards.d.ts","sourceRoot":"","sources":["../../src/tools/cards.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAc,MAAM,YAAY,CAAC;AAwC1E,eAAO,MAAM,mBAAmB,EAAE,cAAc,EAqF/C,CAAC;AAGF,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAuTxD,CAAC"}
|