@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
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":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAOvC,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,YAAY,CAAC;AAEpB,mBAAmB;AACnB,MAAM,CAAC,MAAM,oBAAoB,GAAqB;IACpD;QACE,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,iFAAiF;QAC9F,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4BAA4B,EAAE;gBACnE,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mCAAmC,EAAE;aAClF;YACD,QAAQ,EAAE,CAAC,MAAM,CAAC;SACnB;KACF;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,kCAAkC;QAC/C,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sBAAsB,EAAE;aAClE;YACD,QAAQ,EAAE,CAAC,UAAU,CAAC;SACvB;KACF;IACD;QACE,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,sCAAsC;QACnD,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oCAAoC,EAAE;gBAC5E,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mBAAmB,EAAE;aAC7D;YACD,QAAQ,EAAE,EAAE;SACb;KACF;IACD;QACE,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,mCAAmC;QAChD,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oBAAoB,EAAE;gBAC/D,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE;gBACzD,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,6BAA6B,EAAE;aAC3E;YACD,QAAQ,EAAE,CAAC,UAAU,CAAC;SACvB;KACF;CACF,CAAC;AAEF,gBAAgB;AAChB,MAAM,CAAC,MAAM,iBAAiB,GAAgC;IAC5D,mBAAmB,EAAE,KAAK,EAAE,IAAa,EAAuB,EAAE;QAChE,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC7E,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAClD,MAAM,OAAO,GAAG,SAAS,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;YACnD,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,EAAE,EAAE,OAAO;4BACX,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI;4BACtB,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW;4BACpC,SAAS,EAAE,IAAI;4BACf,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;4BACpC,OAAO,EAAE,UAAU,MAAM,CAAC,IAAI,CAAC,IAAI,wBAAwB;yBAC5D,EAAE,IAAI,EAAE,CAAC,CAAC;qBACZ,CAAC;aACH,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAQ,MAAM,EAAE,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YAC9E,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aACnE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,2BAA2B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE;qBAC5F,CAAC;gBACF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC;IAED,gBAAgB,EAAE,KAAK,EAAE,IAAa,EAAuB,EAAE;QAC7D,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAE3B,mDAAmD;QACnD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ;YACpD,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ;YACtB,CAAC,CAAC,MAAM,CAAC,OAAO,IAAI,eAAe,CAAC;QAEtC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAClD,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,QAAQ,EAAE,OAAO;4BACjB,EAAE,EAAE,OAAO;4BACX,IAAI,EAAE,iBAAiB;4BACvB,WAAW,EAAE,+BAA+B;4BAC5C,MAAM,EAAE,QAAQ;4BAChB,SAAS,EAAE,IAAI;4BACf,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;yBACrC,EAAE,IAAI,EAAE,CAAC,CAAC;qBACZ,CAAC;aACH,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAQ,KAAK,EAAE,kBAAkB,OAAO,EAAE,CAAC,CAAC;YAC3E,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aACnE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,wBAAwB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE;qBACzF,CAAC;gBACF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC;IAED,kBAAkB,EAAE,KAAK,EAAE,IAAa,EAAuB,EAAE;QAC/D,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAChD,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;QACvD,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAEvD,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAClD,MAAM,MAAM,GAAG,CAAC;oBACd,EAAE,EAAE,iBAAiB;oBACrB,QAAQ,EAAE,iBAAiB;oBAC3B,IAAI,EAAE,iBAAiB;oBACvB,SAAS,EAAE,IAAI;oBACf,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACrC,CAAC,CAAC;YAEH,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;qBACtC,CAAC;aACH,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAC7B,KAAK,EACL,wBAAwB,KAAK,WAAW,MAAM,EAAE,CACjD,CAAC;YACF,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aACnE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,0BAA0B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE;qBAC3F,CAAC;gBACF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC;IAED,mBAAmB,EAAE,KAAK,EAAE,IAAa,EAAuB,EAAE;QAChE,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC7E,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAClD,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ;4BAC9B,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ;4BACxB,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,eAAe;4BACzC,MAAM,EAAE,SAAS;4BACjB,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI;4BACxC,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;4BACpC,OAAO,EAAE,4BAA4B;yBACtC,EAAE,IAAI,EAAE,CAAC,CAAC;qBACZ,CAAC;aACH,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,EAAE,QAAQ,EAAE,GAAG,UAAU,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;YAChD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAQ,OAAO,EAAE,kBAAkB,QAAQ,EAAE,EAAE,UAAU,CAAC,CAAC;YAC1F,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aACnE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,2BAA2B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE;qBAC5F,CAAC;gBACF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAC"}
@@ -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"}