@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
package/dist/index.js
ADDED
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sardis MCP Server
|
|
3
|
+
*
|
|
4
|
+
* Model Context Protocol server that exposes Sardis payment capabilities
|
|
5
|
+
* to AI agents running in Claude Desktop, Cursor, and other MCP-compatible clients.
|
|
6
|
+
*
|
|
7
|
+
* Tools:
|
|
8
|
+
* - Wallet: sardis_get_wallet, sardis_get_balance
|
|
9
|
+
* - Payments: sardis_pay, sardis_get_transaction, sardis_list_transactions
|
|
10
|
+
* - Policy: sardis_check_policy, sardis_validate_limits, sardis_check_compliance
|
|
11
|
+
* - Holds: sardis_create_hold, sardis_capture_hold, sardis_void_hold, sardis_get_hold, sardis_list_holds, sardis_extend_hold
|
|
12
|
+
* - Agents: sardis_create_agent, sardis_get_agent, sardis_list_agents, sardis_update_agent
|
|
13
|
+
*
|
|
14
|
+
* Environment Variables:
|
|
15
|
+
* - SARDIS_API_KEY: API key for Sardis API (required)
|
|
16
|
+
* - SARDIS_API_URL: API base URL (default: https://api.sardis.network)
|
|
17
|
+
* - SARDIS_WALLET_ID: Default wallet ID
|
|
18
|
+
* - SARDIS_AGENT_ID: Agent ID for attribution
|
|
19
|
+
* - SARDIS_CHAIN: Default chain (default: base_sepolia)
|
|
20
|
+
* - SARDIS_MODE: 'live' or 'simulated' (default: simulated)
|
|
21
|
+
* - SARDIS_POLICY_BLOCKED_VENDORS: Comma-separated blocked vendors
|
|
22
|
+
* - SARDIS_POLICY_ALLOWED_VENDORS: Comma-separated allowed vendors
|
|
23
|
+
* - SARDIS_REQUIRE_EXPLICIT_APPROVAL: Require explicit vendor approval (default: false)
|
|
24
|
+
*/
|
|
25
|
+
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
26
|
+
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
27
|
+
import { CallToolRequestSchema, ListToolsRequestSchema, ListResourcesRequestSchema, ReadResourceRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
|
|
28
|
+
import { getConfig } from './config.js';
|
|
29
|
+
import { allToolDefinitions, allToolHandlers, getWalletInfo, getWalletBalance, } from './tools/index.js';
|
|
30
|
+
export async function createServer() {
|
|
31
|
+
const server = new Server({
|
|
32
|
+
name: 'sardis-mcp-server',
|
|
33
|
+
version: '0.2.0',
|
|
34
|
+
}, {
|
|
35
|
+
capabilities: {
|
|
36
|
+
tools: {},
|
|
37
|
+
resources: {},
|
|
38
|
+
},
|
|
39
|
+
});
|
|
40
|
+
// List available tools (from modular tool definitions)
|
|
41
|
+
server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
42
|
+
return {
|
|
43
|
+
tools: allToolDefinitions.map((tool) => ({
|
|
44
|
+
name: tool.name,
|
|
45
|
+
description: tool.description,
|
|
46
|
+
inputSchema: tool.inputSchema,
|
|
47
|
+
})),
|
|
48
|
+
};
|
|
49
|
+
});
|
|
50
|
+
// List resources (wallet info, transaction history)
|
|
51
|
+
server.setRequestHandler(ListResourcesRequestSchema, async () => {
|
|
52
|
+
return {
|
|
53
|
+
resources: [
|
|
54
|
+
{
|
|
55
|
+
uri: 'sardis://wallet/balance',
|
|
56
|
+
name: 'Wallet Balance',
|
|
57
|
+
description: 'Current wallet balance and limits',
|
|
58
|
+
mimeType: 'application/json',
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
uri: 'sardis://wallet/info',
|
|
62
|
+
name: 'Wallet Info',
|
|
63
|
+
description: 'Wallet configuration and spending limits',
|
|
64
|
+
mimeType: 'application/json',
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
uri: 'sardis://config',
|
|
68
|
+
name: 'Server Configuration',
|
|
69
|
+
description: 'Current MCP server configuration status',
|
|
70
|
+
mimeType: 'application/json',
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
uri: 'sardis://tools',
|
|
74
|
+
name: 'Available Tools',
|
|
75
|
+
description: 'List of all available Sardis MCP tools',
|
|
76
|
+
mimeType: 'application/json',
|
|
77
|
+
},
|
|
78
|
+
],
|
|
79
|
+
};
|
|
80
|
+
});
|
|
81
|
+
// Read resources
|
|
82
|
+
server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
|
|
83
|
+
const { uri } = request.params;
|
|
84
|
+
const config = getConfig();
|
|
85
|
+
if (uri === 'sardis://wallet/balance') {
|
|
86
|
+
try {
|
|
87
|
+
const balance = await getWalletBalance();
|
|
88
|
+
return {
|
|
89
|
+
contents: [
|
|
90
|
+
{
|
|
91
|
+
uri,
|
|
92
|
+
mimeType: 'application/json',
|
|
93
|
+
text: JSON.stringify(balance, null, 2),
|
|
94
|
+
},
|
|
95
|
+
],
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
catch (error) {
|
|
99
|
+
return {
|
|
100
|
+
contents: [
|
|
101
|
+
{
|
|
102
|
+
uri,
|
|
103
|
+
mimeType: 'application/json',
|
|
104
|
+
text: JSON.stringify({
|
|
105
|
+
error: error instanceof Error ? error.message : 'Failed to get balance',
|
|
106
|
+
}),
|
|
107
|
+
},
|
|
108
|
+
],
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
if (uri === 'sardis://wallet/info') {
|
|
113
|
+
try {
|
|
114
|
+
const wallet = await getWalletInfo();
|
|
115
|
+
return {
|
|
116
|
+
contents: [
|
|
117
|
+
{
|
|
118
|
+
uri,
|
|
119
|
+
mimeType: 'application/json',
|
|
120
|
+
text: JSON.stringify(wallet, null, 2),
|
|
121
|
+
},
|
|
122
|
+
],
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
catch (error) {
|
|
126
|
+
return {
|
|
127
|
+
contents: [
|
|
128
|
+
{
|
|
129
|
+
uri,
|
|
130
|
+
mimeType: 'application/json',
|
|
131
|
+
text: JSON.stringify({
|
|
132
|
+
error: error instanceof Error ? error.message : 'Failed to get wallet info',
|
|
133
|
+
}),
|
|
134
|
+
},
|
|
135
|
+
],
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
if (uri === 'sardis://config') {
|
|
140
|
+
return {
|
|
141
|
+
contents: [
|
|
142
|
+
{
|
|
143
|
+
uri,
|
|
144
|
+
mimeType: 'application/json',
|
|
145
|
+
text: JSON.stringify({
|
|
146
|
+
api_url: config.apiUrl,
|
|
147
|
+
wallet_id: config.walletId || '(not configured)',
|
|
148
|
+
agent_id: config.agentId || '(not configured)',
|
|
149
|
+
chain: config.chain,
|
|
150
|
+
mode: config.mode,
|
|
151
|
+
api_key_configured: !!config.apiKey,
|
|
152
|
+
policy: {
|
|
153
|
+
blocked_vendors_count: config.policyBlockedVendors.length,
|
|
154
|
+
allowed_vendors_count: config.policyAllowedVendors.length,
|
|
155
|
+
require_explicit_approval: config.requireExplicitApproval,
|
|
156
|
+
fetch_agent_policy: config.fetchAgentPolicy,
|
|
157
|
+
},
|
|
158
|
+
}, null, 2),
|
|
159
|
+
},
|
|
160
|
+
],
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
if (uri === 'sardis://tools') {
|
|
164
|
+
return {
|
|
165
|
+
contents: [
|
|
166
|
+
{
|
|
167
|
+
uri,
|
|
168
|
+
mimeType: 'application/json',
|
|
169
|
+
text: JSON.stringify({
|
|
170
|
+
total_tools: allToolDefinitions.length,
|
|
171
|
+
tools: allToolDefinitions.map((t) => ({
|
|
172
|
+
name: t.name,
|
|
173
|
+
description: t.description,
|
|
174
|
+
})),
|
|
175
|
+
}, null, 2),
|
|
176
|
+
},
|
|
177
|
+
],
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
throw new Error(`Unknown resource: ${uri}`);
|
|
181
|
+
});
|
|
182
|
+
// SECURITY: Per-tool rate limiting to prevent abuse by compromised/injected agents.
|
|
183
|
+
const toolCallCounts = new Map();
|
|
184
|
+
const RATE_LIMIT_WINDOW_MS = 60_000; // 1 minute
|
|
185
|
+
const RATE_LIMITS = {
|
|
186
|
+
// Payment execution: strict limit
|
|
187
|
+
sardis_pay: 5,
|
|
188
|
+
sardis_execute_payment: 5,
|
|
189
|
+
// Wallet mutations
|
|
190
|
+
sardis_create_wallet: 3,
|
|
191
|
+
// Hold operations
|
|
192
|
+
sardis_create_hold: 10,
|
|
193
|
+
sardis_capture_hold: 10,
|
|
194
|
+
// Read operations: more lenient
|
|
195
|
+
_default: 60,
|
|
196
|
+
};
|
|
197
|
+
function checkRateLimit(toolName) {
|
|
198
|
+
const now = Date.now();
|
|
199
|
+
const limit = RATE_LIMITS[toolName] ?? RATE_LIMITS._default ?? 60;
|
|
200
|
+
const entry = toolCallCounts.get(toolName);
|
|
201
|
+
if (!entry || now - entry.windowStart > RATE_LIMIT_WINDOW_MS) {
|
|
202
|
+
toolCallCounts.set(toolName, { count: 1, windowStart: now });
|
|
203
|
+
return true;
|
|
204
|
+
}
|
|
205
|
+
if (entry.count >= limit) {
|
|
206
|
+
return false;
|
|
207
|
+
}
|
|
208
|
+
entry.count++;
|
|
209
|
+
return true;
|
|
210
|
+
}
|
|
211
|
+
// Handle tool calls (using modular handlers)
|
|
212
|
+
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
213
|
+
const { name, arguments: args } = request.params;
|
|
214
|
+
const handler = allToolHandlers[name];
|
|
215
|
+
if (!handler) {
|
|
216
|
+
throw new Error(`Unknown tool: ${name}`);
|
|
217
|
+
}
|
|
218
|
+
// Enforce rate limit
|
|
219
|
+
if (!checkRateLimit(name)) {
|
|
220
|
+
const limit = RATE_LIMITS[name] ?? RATE_LIMITS._default;
|
|
221
|
+
return {
|
|
222
|
+
content: [{
|
|
223
|
+
type: 'text',
|
|
224
|
+
text: JSON.stringify({
|
|
225
|
+
error: `Rate limit exceeded for ${name}. Maximum ${limit} calls per minute.`,
|
|
226
|
+
}),
|
|
227
|
+
}],
|
|
228
|
+
isError: true,
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
return handler(args);
|
|
232
|
+
});
|
|
233
|
+
return server;
|
|
234
|
+
}
|
|
235
|
+
export async function runServer() {
|
|
236
|
+
const server = await createServer();
|
|
237
|
+
const transport = new StdioServerTransport();
|
|
238
|
+
await server.connect(transport);
|
|
239
|
+
const config = getConfig();
|
|
240
|
+
// Log configuration status
|
|
241
|
+
console.error('Sardis MCP Server v0.2.0 running on stdio');
|
|
242
|
+
console.error(`Mode: ${config.mode}`);
|
|
243
|
+
console.error(`API URL: ${config.apiUrl}`);
|
|
244
|
+
console.error(`API Key configured: ${config.apiKey ? 'yes' : 'no'}`);
|
|
245
|
+
console.error(`Wallet ID: ${config.walletId || '(not set)'}`);
|
|
246
|
+
console.error(`Tools available: ${allToolDefinitions.length}`);
|
|
247
|
+
}
|
|
248
|
+
// Auto-start if run directly
|
|
249
|
+
const isMainModule = typeof process !== 'undefined' &&
|
|
250
|
+
process.argv[1] &&
|
|
251
|
+
(process.argv[1].endsWith('index.js') || process.argv[1].endsWith('index.ts'));
|
|
252
|
+
if (isMainModule) {
|
|
253
|
+
runServer().catch(console.error);
|
|
254
|
+
}
|
|
255
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent management tools for MCP server
|
|
3
|
+
*/
|
|
4
|
+
import type { ToolDefinition, ToolHandler } from './types.js';
|
|
5
|
+
export declare const agentToolDefinitions: ToolDefinition[];
|
|
6
|
+
export declare const agentToolHandlers: Record<string, ToolHandler>;
|
|
7
|
+
//# sourceMappingURL=agents.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/tools/agents.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EACV,cAAc,EACd,WAAW,EAGZ,MAAM,YAAY,CAAC;AASpB,eAAO,MAAM,oBAAoB,EAAE,cAAc,EAiDhD,CAAC;AAGF,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CA2KzD,CAAC"}
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent management tools for MCP server
|
|
3
|
+
*/
|
|
4
|
+
import { getConfig } from '../config.js';
|
|
5
|
+
import { apiRequest } from '../api.js';
|
|
6
|
+
import { CreateAgentSchema, GetAgentSchema, ListAgentsSchema, UpdateAgentSchema, } from './types.js';
|
|
7
|
+
// Tool definitions
|
|
8
|
+
export const agentToolDefinitions = [
|
|
9
|
+
{
|
|
10
|
+
name: 'sardis_create_agent',
|
|
11
|
+
description: 'Create a new AI agent with Sardis. Agents can own wallets and execute payments.',
|
|
12
|
+
inputSchema: {
|
|
13
|
+
type: 'object',
|
|
14
|
+
properties: {
|
|
15
|
+
name: { type: 'string', description: 'Display name for the agent' },
|
|
16
|
+
description: { type: 'string', description: 'Optional description of the agent' },
|
|
17
|
+
},
|
|
18
|
+
required: ['name'],
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
name: 'sardis_get_agent',
|
|
23
|
+
description: 'Get details of a specific agent.',
|
|
24
|
+
inputSchema: {
|
|
25
|
+
type: 'object',
|
|
26
|
+
properties: {
|
|
27
|
+
agent_id: { type: 'string', description: 'Agent ID to retrieve' },
|
|
28
|
+
},
|
|
29
|
+
required: ['agent_id'],
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
name: 'sardis_list_agents',
|
|
34
|
+
description: 'List all agents in the organization.',
|
|
35
|
+
inputSchema: {
|
|
36
|
+
type: 'object',
|
|
37
|
+
properties: {
|
|
38
|
+
limit: { type: 'number', description: 'Maximum number of agents to return' },
|
|
39
|
+
offset: { type: 'number', description: 'Pagination offset' },
|
|
40
|
+
},
|
|
41
|
+
required: [],
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
name: 'sardis_update_agent',
|
|
46
|
+
description: 'Update an agent\'s configuration.',
|
|
47
|
+
inputSchema: {
|
|
48
|
+
type: 'object',
|
|
49
|
+
properties: {
|
|
50
|
+
agent_id: { type: 'string', description: 'Agent ID to update' },
|
|
51
|
+
name: { type: 'string', description: 'New display name' },
|
|
52
|
+
is_active: { type: 'boolean', description: 'Enable or disable the agent' },
|
|
53
|
+
},
|
|
54
|
+
required: ['agent_id'],
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
];
|
|
58
|
+
// Tool handlers
|
|
59
|
+
export const agentToolHandlers = {
|
|
60
|
+
sardis_create_agent: async (args) => {
|
|
61
|
+
const parsed = CreateAgentSchema.safeParse(args);
|
|
62
|
+
if (!parsed.success) {
|
|
63
|
+
return {
|
|
64
|
+
content: [{ type: 'text', text: `Invalid request: ${parsed.error.message}` }],
|
|
65
|
+
isError: true,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
const config = getConfig();
|
|
69
|
+
if (!config.apiKey || config.mode === 'simulated') {
|
|
70
|
+
const agentId = `agent_${Date.now().toString(36)}`;
|
|
71
|
+
return {
|
|
72
|
+
content: [{
|
|
73
|
+
type: 'text',
|
|
74
|
+
text: JSON.stringify({
|
|
75
|
+
id: agentId,
|
|
76
|
+
name: parsed.data.name,
|
|
77
|
+
description: parsed.data.description,
|
|
78
|
+
is_active: true,
|
|
79
|
+
created_at: new Date().toISOString(),
|
|
80
|
+
message: `Agent "${parsed.data.name}" created successfully`,
|
|
81
|
+
}, null, 2),
|
|
82
|
+
}],
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
try {
|
|
86
|
+
const result = await apiRequest('POST', '/api/v2/agents', parsed.data);
|
|
87
|
+
return {
|
|
88
|
+
content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
return {
|
|
93
|
+
content: [{
|
|
94
|
+
type: 'text',
|
|
95
|
+
text: `Failed to create agent: ${error instanceof Error ? error.message : 'Unknown error'}`,
|
|
96
|
+
}],
|
|
97
|
+
isError: true,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
},
|
|
101
|
+
sardis_get_agent: async (args) => {
|
|
102
|
+
const parsed = GetAgentSchema.safeParse(args);
|
|
103
|
+
const config = getConfig();
|
|
104
|
+
// Allow no args - use default agent_id from config
|
|
105
|
+
const agentId = parsed.success && parsed.data.agent_id
|
|
106
|
+
? parsed.data.agent_id
|
|
107
|
+
: config.agentId || 'agent_default';
|
|
108
|
+
if (!config.apiKey || config.mode === 'simulated') {
|
|
109
|
+
return {
|
|
110
|
+
content: [{
|
|
111
|
+
type: 'text',
|
|
112
|
+
text: JSON.stringify({
|
|
113
|
+
agent_id: agentId,
|
|
114
|
+
id: agentId,
|
|
115
|
+
name: 'Simulated Agent',
|
|
116
|
+
description: 'A simulated agent for testing',
|
|
117
|
+
status: 'active',
|
|
118
|
+
is_active: true,
|
|
119
|
+
created_at: new Date().toISOString(),
|
|
120
|
+
}, null, 2),
|
|
121
|
+
}],
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
try {
|
|
125
|
+
const result = await apiRequest('GET', `/api/v2/agents/${agentId}`);
|
|
126
|
+
return {
|
|
127
|
+
content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
catch (error) {
|
|
131
|
+
return {
|
|
132
|
+
content: [{
|
|
133
|
+
type: 'text',
|
|
134
|
+
text: `Failed to get agent: ${error instanceof Error ? error.message : 'Unknown error'}`,
|
|
135
|
+
}],
|
|
136
|
+
isError: true,
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
},
|
|
140
|
+
sardis_list_agents: async (args) => {
|
|
141
|
+
const parsed = ListAgentsSchema.safeParse(args);
|
|
142
|
+
const limit = parsed.success ? parsed.data.limit : 100;
|
|
143
|
+
const offset = parsed.success ? parsed.data.offset : 0;
|
|
144
|
+
const config = getConfig();
|
|
145
|
+
if (!config.apiKey || config.mode === 'simulated') {
|
|
146
|
+
const agents = [{
|
|
147
|
+
id: 'agent_simulated',
|
|
148
|
+
agent_id: 'agent_simulated',
|
|
149
|
+
name: 'Simulated Agent',
|
|
150
|
+
is_active: true,
|
|
151
|
+
created_at: new Date().toISOString(),
|
|
152
|
+
}];
|
|
153
|
+
return {
|
|
154
|
+
content: [{
|
|
155
|
+
type: 'text',
|
|
156
|
+
text: JSON.stringify(agents, null, 2),
|
|
157
|
+
}],
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
try {
|
|
161
|
+
const result = await apiRequest('GET', `/api/v2/agents?limit=${limit}&offset=${offset}`);
|
|
162
|
+
return {
|
|
163
|
+
content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
catch (error) {
|
|
167
|
+
return {
|
|
168
|
+
content: [{
|
|
169
|
+
type: 'text',
|
|
170
|
+
text: `Failed to list agents: ${error instanceof Error ? error.message : 'Unknown error'}`,
|
|
171
|
+
}],
|
|
172
|
+
isError: true,
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
},
|
|
176
|
+
sardis_update_agent: async (args) => {
|
|
177
|
+
const parsed = UpdateAgentSchema.safeParse(args);
|
|
178
|
+
if (!parsed.success) {
|
|
179
|
+
return {
|
|
180
|
+
content: [{ type: 'text', text: `Invalid request: ${parsed.error.message}` }],
|
|
181
|
+
isError: true,
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
const config = getConfig();
|
|
185
|
+
if (!config.apiKey || config.mode === 'simulated') {
|
|
186
|
+
return {
|
|
187
|
+
content: [{
|
|
188
|
+
type: 'text',
|
|
189
|
+
text: JSON.stringify({
|
|
190
|
+
agent_id: parsed.data.agent_id,
|
|
191
|
+
id: parsed.data.agent_id,
|
|
192
|
+
name: parsed.data.name || 'Updated Agent',
|
|
193
|
+
status: 'updated',
|
|
194
|
+
is_active: parsed.data.is_active ?? true,
|
|
195
|
+
updated_at: new Date().toISOString(),
|
|
196
|
+
message: 'Agent updated successfully',
|
|
197
|
+
}, null, 2),
|
|
198
|
+
}],
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
try {
|
|
202
|
+
const { agent_id, ...updateData } = parsed.data;
|
|
203
|
+
const result = await apiRequest('PATCH', `/api/v2/agents/${agent_id}`, updateData);
|
|
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 update agent: ${error instanceof Error ? error.message : 'Unknown error'}`,
|
|
213
|
+
}],
|
|
214
|
+
isError: true,
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
},
|
|
218
|
+
};
|
|
219
|
+
//# sourceMappingURL=agents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/tools/agents.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Approval Flow tools for MCP server
|
|
3
|
+
*
|
|
4
|
+
* Tools for requesting human approval for payments that exceed limits.
|
|
5
|
+
*/
|
|
6
|
+
import type { ToolDefinition, ToolHandler } from './types.js';
|
|
7
|
+
export declare const approvalToolDefinitions: ToolDefinition[];
|
|
8
|
+
export declare const approvalToolHandlers: Record<string, ToolHandler>;
|
|
9
|
+
//# sourceMappingURL=approvals.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"approvals.d.ts","sourceRoot":"","sources":["../../src/tools/approvals.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAc,MAAM,YAAY,CAAC;AAkC1E,eAAO,MAAM,uBAAuB,EAAE,cAAc,EAqEnD,CAAC;AAGF,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAwO5D,CAAC"}
|