agentic-payments 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 (122) hide show
  1. package/README.md +924 -0
  2. package/bin/cli.js +18 -0
  3. package/bin/mcp.js +10 -0
  4. package/completions/agentic-payments.bash +21 -0
  5. package/completions/agentic-payments.fish +9 -0
  6. package/completions/agentic-payments.zsh +17 -0
  7. package/completions/bash.sh +182 -0
  8. package/completions/fish.fish +110 -0
  9. package/completions/zsh.sh +175 -0
  10. package/dist/active-mandate/i18n.d.ts +27 -0
  11. package/dist/active-mandate/i18n.d.ts.map +1 -0
  12. package/dist/active-mandate/i18n.js +35 -0
  13. package/dist/active-mandate/i18n.js.map +1 -0
  14. package/dist/active-mandate/index.d.ts +26 -0
  15. package/dist/active-mandate/index.d.ts.map +1 -0
  16. package/dist/active-mandate/index.js +51 -0
  17. package/dist/active-mandate/index.js.map +1 -0
  18. package/dist/active-mandate/revocation.d.ts +11 -0
  19. package/dist/active-mandate/revocation.d.ts.map +1 -0
  20. package/dist/active-mandate/revocation.js +27 -0
  21. package/dist/active-mandate/revocation.js.map +1 -0
  22. package/dist/active-mandate/schema.d.ts +85 -0
  23. package/dist/active-mandate/schema.d.ts.map +1 -0
  24. package/dist/active-mandate/schema.js +36 -0
  25. package/dist/active-mandate/schema.js.map +1 -0
  26. package/dist/active-mandate/signing.d.ts +8 -0
  27. package/dist/active-mandate/signing.d.ts.map +1 -0
  28. package/dist/active-mandate/signing.js +64 -0
  29. package/dist/active-mandate/signing.js.map +1 -0
  30. package/dist/active-mandate/types.d.ts +59 -0
  31. package/dist/active-mandate/types.d.ts.map +1 -0
  32. package/dist/active-mandate/types.js +6 -0
  33. package/dist/active-mandate/types.js.map +1 -0
  34. package/dist/cli/commands/active-mandate.d.ts +4 -0
  35. package/dist/cli/commands/active-mandate.d.ts.map +1 -0
  36. package/dist/cli/commands/active-mandate.js +218 -0
  37. package/dist/cli/commands/active-mandate.js.map +1 -0
  38. package/dist/cli/commands/generate.d.ts +3 -0
  39. package/dist/cli/commands/generate.d.ts.map +1 -0
  40. package/dist/cli/commands/generate.js +59 -0
  41. package/dist/cli/commands/generate.js.map +1 -0
  42. package/dist/cli/commands/mandate.d.ts +4 -0
  43. package/dist/cli/commands/mandate.d.ts.map +1 -0
  44. package/dist/cli/commands/mandate.js +223 -0
  45. package/dist/cli/commands/mandate.js.map +1 -0
  46. package/dist/cli/commands/system.d.ts +4 -0
  47. package/dist/cli/commands/system.d.ts.map +1 -0
  48. package/dist/cli/commands/system.js +101 -0
  49. package/dist/cli/commands/system.js.map +1 -0
  50. package/dist/cli/commands/verify.d.ts +3 -0
  51. package/dist/cli/commands/verify.d.ts.map +1 -0
  52. package/dist/cli/commands/verify.js +104 -0
  53. package/dist/cli/commands/verify.js.map +1 -0
  54. package/dist/cli/completion.d.ts +3 -0
  55. package/dist/cli/completion.d.ts.map +1 -0
  56. package/dist/cli/completion.js +245 -0
  57. package/dist/cli/completion.js.map +1 -0
  58. package/dist/cli/index.d.ts +3 -0
  59. package/dist/cli/index.d.ts.map +1 -0
  60. package/dist/cli/index.js +79 -0
  61. package/dist/cli/index.js.map +1 -0
  62. package/dist/errors.d.ts +58 -0
  63. package/dist/errors.d.ts.map +1 -0
  64. package/dist/errors.js +100 -0
  65. package/dist/errors.js.map +1 -0
  66. package/dist/identity.d.ts +78 -0
  67. package/dist/identity.d.ts.map +1 -0
  68. package/dist/identity.js +204 -0
  69. package/dist/identity.js.map +1 -0
  70. package/dist/index.d.ts +68 -0
  71. package/dist/index.d.ts.map +1 -0
  72. package/dist/index.js +79 -0
  73. package/dist/index.js.map +1 -0
  74. package/dist/mandate.d.ts +134 -0
  75. package/dist/mandate.d.ts.map +1 -0
  76. package/dist/mandate.js +342 -0
  77. package/dist/mandate.js.map +1 -0
  78. package/dist/mcp/index.d.ts +7 -0
  79. package/dist/mcp/index.d.ts.map +1 -0
  80. package/dist/mcp/index.js +102 -0
  81. package/dist/mcp/index.js.map +1 -0
  82. package/dist/mcp/server.d.ts +38 -0
  83. package/dist/mcp/server.d.ts.map +1 -0
  84. package/dist/mcp/server.js +126 -0
  85. package/dist/mcp/server.js.map +1 -0
  86. package/dist/mcp/tools/agent.d.ts +9 -0
  87. package/dist/mcp/tools/agent.d.ts.map +1 -0
  88. package/dist/mcp/tools/agent.js +34 -0
  89. package/dist/mcp/tools/agent.js.map +1 -0
  90. package/dist/mcp/tools/consensus.d.ts +9 -0
  91. package/dist/mcp/tools/consensus.d.ts.map +1 -0
  92. package/dist/mcp/tools/consensus.js +38 -0
  93. package/dist/mcp/tools/consensus.js.map +1 -0
  94. package/dist/mcp/tools/index.d.ts +45 -0
  95. package/dist/mcp/tools/index.d.ts.map +1 -0
  96. package/dist/mcp/tools/index.js +282 -0
  97. package/dist/mcp/tools/index.js.map +1 -0
  98. package/dist/mcp/tools/mandate.d.ts +31 -0
  99. package/dist/mcp/tools/mandate.d.ts.map +1 -0
  100. package/dist/mcp/tools/mandate.js +165 -0
  101. package/dist/mcp/tools/mandate.js.map +1 -0
  102. package/dist/mcp/tools/payment.d.ts +13 -0
  103. package/dist/mcp/tools/payment.d.ts.map +1 -0
  104. package/dist/mcp/tools/payment.js +66 -0
  105. package/dist/mcp/tools/payment.js.map +1 -0
  106. package/dist/mcp/tools/types.d.ts +63 -0
  107. package/dist/mcp/tools/types.d.ts.map +1 -0
  108. package/dist/mcp/tools/types.js +5 -0
  109. package/dist/mcp/tools/types.js.map +1 -0
  110. package/dist/mcp/transports/http.d.ts +52 -0
  111. package/dist/mcp/transports/http.d.ts.map +1 -0
  112. package/dist/mcp/transports/http.js +234 -0
  113. package/dist/mcp/transports/http.js.map +1 -0
  114. package/dist/types.d.ts +238 -0
  115. package/dist/types.d.ts.map +1 -0
  116. package/dist/types.js +7 -0
  117. package/dist/types.js.map +1 -0
  118. package/dist/verification.d.ts +140 -0
  119. package/dist/verification.d.ts.map +1 -0
  120. package/dist/verification.js +285 -0
  121. package/dist/verification.js.map +1 -0
  122. package/package.json +175 -0
@@ -0,0 +1,342 @@
1
+ /**
2
+ * Payment mandate types (Intent, Cart, Payment)
3
+ * Pure TypeScript implementation - no WASM dependencies
4
+ */
5
+ import { PaymentError, PaymentErrorCode } from './errors.js';
6
+ /**
7
+ * Intent mandate for payment authorization
8
+ */
9
+ export class IntentMandate {
10
+ data;
11
+ constructor(data) {
12
+ this.data = {
13
+ id: this.generateId(),
14
+ merchantId: data.merchantId,
15
+ customerId: data.customerId,
16
+ intent: data.intent,
17
+ maxAmount: data.maxAmount,
18
+ currency: data.currency,
19
+ createdAt: Date.now(),
20
+ expiresAt: data.expiresAt,
21
+ };
22
+ }
23
+ generateId() {
24
+ return `intent_${Date.now()}_${Math.random().toString(36).substring(2, 11)}`;
25
+ }
26
+ /**
27
+ * Sign mandate with agent identity
28
+ */
29
+ async sign(agent) {
30
+ try {
31
+ // Create canonical representation for signing
32
+ const canonical = this.getCanonicalString();
33
+ const signature = await agent.sign(canonical);
34
+ // Store signature as hex string
35
+ this.data.signature = Array.from(signature)
36
+ .map(b => b.toString(16).padStart(2, '0'))
37
+ .join('');
38
+ this.data.signedBy = agent.did();
39
+ }
40
+ catch (error) {
41
+ throw new PaymentError(PaymentErrorCode.SIGNATURE_FAILED, `Failed to sign intent mandate: ${error instanceof Error ? error.message : 'unknown error'}`, { mandateId: this.data.id });
42
+ }
43
+ }
44
+ /**
45
+ * Get canonical string representation for signing
46
+ */
47
+ getCanonicalString() {
48
+ return JSON.stringify({
49
+ id: this.data.id,
50
+ merchantId: this.data.merchantId,
51
+ customerId: this.data.customerId,
52
+ intent: this.data.intent,
53
+ maxAmount: this.data.maxAmount,
54
+ currency: this.data.currency,
55
+ createdAt: this.data.createdAt,
56
+ expiresAt: this.data.expiresAt,
57
+ });
58
+ }
59
+ /**
60
+ * Verify signature
61
+ */
62
+ async verify(agent) {
63
+ if (!this.data.signature) {
64
+ return false;
65
+ }
66
+ try {
67
+ const canonical = this.getCanonicalString();
68
+ const sigBytes = new Uint8Array(this.data.signature.match(/.{1,2}/g).map(byte => parseInt(byte, 16)));
69
+ return await agent.verify(sigBytes, canonical);
70
+ }
71
+ catch (error) {
72
+ return false;
73
+ }
74
+ }
75
+ /**
76
+ * Validate mandate
77
+ */
78
+ validate() {
79
+ const errors = [];
80
+ if (!this.data.merchantId) {
81
+ errors.push('Merchant ID is required');
82
+ }
83
+ if (!this.data.customerId) {
84
+ errors.push('Customer ID is required');
85
+ }
86
+ if (!this.data.intent) {
87
+ errors.push('Intent description is required');
88
+ }
89
+ if (this.data.maxAmount <= 0) {
90
+ errors.push('Max amount must be greater than 0');
91
+ }
92
+ if (!this.data.currency || this.data.currency.length !== 3) {
93
+ errors.push('Valid currency code required (3 letters)');
94
+ }
95
+ if (this.data.expiresAt <= Date.now()) {
96
+ errors.push('Mandate has expired');
97
+ }
98
+ if (!this.data.signature) {
99
+ errors.push('Mandate must be signed');
100
+ }
101
+ return {
102
+ valid: errors.length === 0,
103
+ errors,
104
+ };
105
+ }
106
+ getData() {
107
+ return { ...this.data };
108
+ }
109
+ getSignature() {
110
+ return this.data.signature;
111
+ }
112
+ toJSON() {
113
+ return { ...this.data };
114
+ }
115
+ }
116
+ /**
117
+ * Cart mandate for shopping cart authorization
118
+ */
119
+ export class CartMandate {
120
+ data;
121
+ constructor(data) {
122
+ const totalAmount = data.items.reduce((sum, item) => sum + item.quantity * item.unitPrice, 0);
123
+ this.data = {
124
+ id: this.generateId(),
125
+ merchantId: data.merchantId,
126
+ customerId: data.customerId,
127
+ items: data.items,
128
+ totalAmount,
129
+ currency: data.currency,
130
+ createdAt: Date.now(),
131
+ expiresAt: data.expiresAt,
132
+ };
133
+ }
134
+ generateId() {
135
+ return `cart_${Date.now()}_${Math.random().toString(36).substring(2, 11)}`;
136
+ }
137
+ /**
138
+ * Sign mandate with agent identity
139
+ */
140
+ async sign(agent) {
141
+ try {
142
+ const canonical = this.getCanonicalString();
143
+ const signature = await agent.sign(canonical);
144
+ this.data.signature = Array.from(signature)
145
+ .map(b => b.toString(16).padStart(2, '0'))
146
+ .join('');
147
+ this.data.signedBy = agent.did();
148
+ }
149
+ catch (error) {
150
+ throw new PaymentError(PaymentErrorCode.SIGNATURE_FAILED, `Failed to sign cart mandate: ${error instanceof Error ? error.message : 'unknown error'}`, { mandateId: this.data.id });
151
+ }
152
+ }
153
+ getCanonicalString() {
154
+ return JSON.stringify({
155
+ id: this.data.id,
156
+ merchantId: this.data.merchantId,
157
+ customerId: this.data.customerId,
158
+ items: this.data.items,
159
+ totalAmount: this.data.totalAmount,
160
+ currency: this.data.currency,
161
+ createdAt: this.data.createdAt,
162
+ expiresAt: this.data.expiresAt,
163
+ });
164
+ }
165
+ /**
166
+ * Verify signature
167
+ */
168
+ async verify(agent) {
169
+ if (!this.data.signature) {
170
+ return false;
171
+ }
172
+ try {
173
+ const canonical = this.getCanonicalString();
174
+ const sigBytes = new Uint8Array(this.data.signature.match(/.{1,2}/g).map(byte => parseInt(byte, 16)));
175
+ return await agent.verify(sigBytes, canonical);
176
+ }
177
+ catch (error) {
178
+ return false;
179
+ }
180
+ }
181
+ /**
182
+ * Validate mandate
183
+ */
184
+ validate() {
185
+ const errors = [];
186
+ if (!this.data.merchantId) {
187
+ errors.push('Merchant ID is required');
188
+ }
189
+ if (!this.data.customerId) {
190
+ errors.push('Customer ID is required');
191
+ }
192
+ if (!this.data.items || this.data.items.length === 0) {
193
+ errors.push('Cart must have at least one item');
194
+ }
195
+ if (this.data.totalAmount <= 0) {
196
+ errors.push('Total amount must be greater than 0');
197
+ }
198
+ if (!this.data.currency || this.data.currency.length !== 3) {
199
+ errors.push('Valid currency code required (3 letters)');
200
+ }
201
+ if (this.data.expiresAt <= Date.now()) {
202
+ errors.push('Mandate has expired');
203
+ }
204
+ if (!this.data.signature) {
205
+ errors.push('Mandate must be signed');
206
+ }
207
+ return {
208
+ valid: errors.length === 0,
209
+ errors,
210
+ };
211
+ }
212
+ getData() {
213
+ return { ...this.data };
214
+ }
215
+ getItems() {
216
+ return [...this.data.items];
217
+ }
218
+ getTotalAmount() {
219
+ return this.data.totalAmount;
220
+ }
221
+ getSignature() {
222
+ return this.data.signature;
223
+ }
224
+ toJSON() {
225
+ return { ...this.data };
226
+ }
227
+ }
228
+ /**
229
+ * Payment mandate for transaction authorization
230
+ */
231
+ export class PaymentMandate {
232
+ data;
233
+ constructor(data) {
234
+ this.data = {
235
+ id: this.generateId(),
236
+ sourceId: data.sourceId,
237
+ type: data.type,
238
+ amount: data.amount,
239
+ currency: data.currency,
240
+ paymentMethod: data.paymentMethod,
241
+ status: 'pending',
242
+ createdAt: Date.now(),
243
+ };
244
+ }
245
+ generateId() {
246
+ return `payment_${Date.now()}_${Math.random().toString(36).substring(2, 11)}`;
247
+ }
248
+ /**
249
+ * Sign mandate with agent identity
250
+ */
251
+ async sign(agent) {
252
+ try {
253
+ const canonical = this.getCanonicalString();
254
+ const signature = await agent.sign(canonical);
255
+ this.data.signature = Array.from(signature)
256
+ .map(b => b.toString(16).padStart(2, '0'))
257
+ .join('');
258
+ this.data.signedBy = agent.did();
259
+ }
260
+ catch (error) {
261
+ throw new PaymentError(PaymentErrorCode.SIGNATURE_FAILED, `Failed to sign payment mandate: ${error instanceof Error ? error.message : 'unknown error'}`, { mandateId: this.data.id });
262
+ }
263
+ }
264
+ getCanonicalString() {
265
+ return JSON.stringify({
266
+ id: this.data.id,
267
+ sourceId: this.data.sourceId,
268
+ type: this.data.type,
269
+ amount: this.data.amount,
270
+ currency: this.data.currency,
271
+ paymentMethod: this.data.paymentMethod,
272
+ status: this.data.status,
273
+ createdAt: this.data.createdAt,
274
+ });
275
+ }
276
+ /**
277
+ * Verify signature
278
+ */
279
+ async verify(agent) {
280
+ if (!this.data.signature) {
281
+ return false;
282
+ }
283
+ try {
284
+ const canonical = this.getCanonicalString();
285
+ const sigBytes = new Uint8Array(this.data.signature.match(/.{1,2}/g).map(byte => parseInt(byte, 16)));
286
+ return await agent.verify(sigBytes, canonical);
287
+ }
288
+ catch (error) {
289
+ return false;
290
+ }
291
+ }
292
+ /**
293
+ * Validate mandate
294
+ */
295
+ validate() {
296
+ const errors = [];
297
+ if (!this.data.sourceId) {
298
+ errors.push('Source ID is required');
299
+ }
300
+ if (!this.data.type) {
301
+ errors.push('Mandate type is required');
302
+ }
303
+ if (this.data.amount <= 0) {
304
+ errors.push('Amount must be greater than 0');
305
+ }
306
+ if (!this.data.currency || this.data.currency.length !== 3) {
307
+ errors.push('Valid currency code required (3 letters)');
308
+ }
309
+ if (!this.data.paymentMethod) {
310
+ errors.push('Payment method is required');
311
+ }
312
+ if (!this.data.signature) {
313
+ errors.push('Mandate must be signed');
314
+ }
315
+ return {
316
+ valid: errors.length === 0,
317
+ errors,
318
+ };
319
+ }
320
+ updateStatus(status) {
321
+ this.data.status = status;
322
+ if (status !== 'pending' && !this.data.processedAt) {
323
+ this.data.processedAt = Date.now();
324
+ }
325
+ }
326
+ getData() {
327
+ return { ...this.data };
328
+ }
329
+ getStatus() {
330
+ return this.data.status;
331
+ }
332
+ getSignature() {
333
+ return this.data.signature;
334
+ }
335
+ isComplete() {
336
+ return ['captured', 'failed', 'cancelled', 'refunded'].includes(this.data.status);
337
+ }
338
+ toJSON() {
339
+ return { ...this.data };
340
+ }
341
+ }
342
+ //# sourceMappingURL=mandate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mandate.js","sourceRoot":"","sources":["../src/mandate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * MCP Server Entry Point
4
+ * Supports both stdio and HTTP/SSE transports
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":";AACA;;;GAGG"}
@@ -0,0 +1,102 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * MCP Server Entry Point
4
+ * Supports both stdio and HTTP/SSE transports
5
+ */
6
+ import { parseArgs } from 'util';
7
+ import { AgenticPaymentsMCPServer } from './server.js';
8
+ async function main() {
9
+ // Parse command-line arguments
10
+ const { values } = parseArgs({
11
+ options: {
12
+ transport: {
13
+ type: 'string',
14
+ short: 't',
15
+ default: 'stdio',
16
+ },
17
+ port: {
18
+ type: 'string',
19
+ short: 'p',
20
+ default: '3000',
21
+ },
22
+ help: {
23
+ type: 'boolean',
24
+ short: 'h',
25
+ default: false,
26
+ },
27
+ },
28
+ });
29
+ // Show help
30
+ if (values.help) {
31
+ console.log(`
32
+ Agentic Payments MCP Server
33
+
34
+ Usage:
35
+ agentic-payments-mcp [options]
36
+
37
+ Options:
38
+ -t, --transport <type> Transport type: stdio, http (default: stdio)
39
+ -p, --port <number> HTTP server port (default: 3000)
40
+ -h, --help Show this help message
41
+
42
+ Examples:
43
+ # Start with stdio transport (for Claude Desktop)
44
+ agentic-payments-mcp
45
+
46
+ # Start with HTTP/SSE transport
47
+ agentic-payments-mcp --transport http --port 3000
48
+
49
+ Transport Details:
50
+ stdio - Standard input/output (for local CLI integration)
51
+ http - HTTP with Server-Sent Events (for remote integration)
52
+
53
+ MCP Tools Available:
54
+ - create_active_mandate Create payment authorization mandate
55
+ - sign_mandate Sign mandate with Ed25519
56
+ - verify_mandate Verify mandate signature
57
+ - revoke_mandate Revoke active mandate
58
+ - list_revocations List all revocations
59
+ - generate_agent_identity Generate agent keypair
60
+ - verify_consensus Verify multi-agent consensus
61
+ - create_intent_mandate Create intent-based mandate
62
+ - create_cart_mandate Create cart-based mandate
63
+
64
+ Documentation:
65
+ https://github.com/agentic-catalog/agentic-payments
66
+ `);
67
+ process.exit(0);
68
+ }
69
+ try {
70
+ console.error('[MCP] Starting Agentic Payments MCP Server...');
71
+ // Create server instance
72
+ const server = new AgenticPaymentsMCPServer();
73
+ // Start appropriate transport
74
+ if (values.transport === 'http') {
75
+ const port = parseInt(values.port || '3000', 10);
76
+ if (isNaN(port) || port < 1 || port > 65535) {
77
+ console.error('[MCP] Error: Invalid port number. Must be between 1 and 65535.');
78
+ process.exit(1);
79
+ }
80
+ console.error(`[MCP] Starting HTTP transport on port ${port}...`);
81
+ await server.startHttp(port);
82
+ }
83
+ else if (values.transport === 'stdio') {
84
+ console.error('[MCP] Starting stdio transport...');
85
+ await server.startStdio();
86
+ }
87
+ else {
88
+ console.error(`[MCP] Error: Unknown transport type: ${values.transport}`);
89
+ console.error('[MCP] Valid transports: stdio, http');
90
+ process.exit(1);
91
+ }
92
+ }
93
+ catch (error) {
94
+ console.error('[MCP] Fatal error:', error);
95
+ process.exit(1);
96
+ }
97
+ }
98
+ main().catch((error) => {
99
+ console.error('[MCP] Unhandled error:', error);
100
+ process.exit(1);
101
+ });
102
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":";AACA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAEvD,KAAK,UAAU,IAAI;IACjB,+BAA+B;IAC/B,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;QAC3B,OAAO,EAAE;YACP,SAAS,EAAE;gBACT,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,GAAG;gBACV,OAAO,EAAE,OAAO;aACjB;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,GAAG;gBACV,OAAO,EAAE,MAAM;aAChB;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE,GAAG;gBACV,OAAO,EAAE,KAAK;aACf;SACF;KACF,CAAC,CAAC;IAEH,YAAY;IACZ,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmCf,CAAC,CAAC;QACC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC;QACH,OAAO,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;QAE/D,yBAAyB;QACzB,MAAM,MAAM,GAAG,IAAI,wBAAwB,EAAE,CAAC;QAE9C,8BAA8B;QAC9B,IAAI,MAAM,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;YAChC,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC;YAEjD,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,KAAK,EAAE,CAAC;gBAC5C,OAAO,CAAC,KAAK,CAAC,gEAAgE,CAAC,CAAC;gBAChF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,OAAO,CAAC,KAAK,CAAC,yCAAyC,IAAI,KAAK,CAAC,CAAC;YAClE,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;aAAM,IAAI,MAAM,CAAC,SAAS,KAAK,OAAO,EAAE,CAAC;YACxC,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;YACnD,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,wCAAwC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;YAC1E,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;YACrD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;IAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * MCP Server Implementation
3
+ * Core server class with request handlers and transport support
4
+ */
5
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
6
+ /**
7
+ * Agentic Payments MCP Server
8
+ *
9
+ * Exposes payment authorization tools via Model Context Protocol
10
+ */
11
+ export declare class AgenticPaymentsMCPServer {
12
+ private server;
13
+ private httpServer?;
14
+ constructor();
15
+ /**
16
+ * Setup request handlers for MCP protocol
17
+ */
18
+ private setupHandlers;
19
+ /**
20
+ * Start server with stdio transport
21
+ * Used for local CLI integration with Claude Desktop
22
+ */
23
+ startStdio(): Promise<void>;
24
+ /**
25
+ * Start server with HTTP/SSE transport
26
+ * Used for remote integration via HTTP
27
+ */
28
+ startHttp(port?: number): Promise<void>;
29
+ /**
30
+ * Graceful shutdown
31
+ */
32
+ shutdown(): Promise<void>;
33
+ /**
34
+ * Get the underlying MCP server instance
35
+ */
36
+ getServer(): Server;
37
+ }
38
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AASnE;;;;GAIG;AACH,qBAAa,wBAAwB;IACnC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAAC,CAAgB;;IAkBnC;;OAEG;IACH,OAAO,CAAC,aAAa;IA4DrB;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAOjC;;;OAGG;IACG,SAAS,CAAC,IAAI,GAAE,MAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBnD;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAM/B;;OAEG;IACH,SAAS,IAAI,MAAM;CAGpB"}
@@ -0,0 +1,126 @@
1
+ /**
2
+ * MCP Server Implementation
3
+ * Core server class with request handlers and transport support
4
+ */
5
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
6
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
7
+ import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
8
+ import { registerTools, getToolHandler } from './tools/index.js';
9
+ import { HttpMCPServer } from './transports/http.js';
10
+ /**
11
+ * Agentic Payments MCP Server
12
+ *
13
+ * Exposes payment authorization tools via Model Context Protocol
14
+ */
15
+ export class AgenticPaymentsMCPServer {
16
+ server;
17
+ httpServer;
18
+ constructor() {
19
+ this.server = new Server({
20
+ name: 'agentic-payments',
21
+ version: '0.1.0',
22
+ }, {
23
+ capabilities: {
24
+ tools: {},
25
+ },
26
+ });
27
+ this.setupHandlers();
28
+ }
29
+ /**
30
+ * Setup request handlers for MCP protocol
31
+ */
32
+ setupHandlers() {
33
+ // List available tools
34
+ this.server.setRequestHandler(ListToolsRequestSchema, async () => {
35
+ const tools = registerTools();
36
+ return { tools };
37
+ });
38
+ // Handle tool calls
39
+ this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
40
+ const { name, arguments: args } = request.params;
41
+ // Log to stderr (not stdout for stdio transport)
42
+ console.error(`[MCP] Tool call: ${name}`);
43
+ console.error(`[MCP] Arguments:`, JSON.stringify(args, null, 2));
44
+ try {
45
+ // Route to appropriate tool handler
46
+ const handler = getToolHandler(name);
47
+ if (!handler) {
48
+ throw new Error(`Unknown tool: ${name}`);
49
+ }
50
+ const result = await handler(args || {});
51
+ console.error(`[MCP] Tool result:`, JSON.stringify(result, null, 2));
52
+ return {
53
+ content: [
54
+ {
55
+ type: 'text',
56
+ text: JSON.stringify(result, null, 2),
57
+ },
58
+ ],
59
+ };
60
+ }
61
+ catch (error) {
62
+ console.error(`[MCP] Tool error:`, error);
63
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
64
+ return {
65
+ content: [
66
+ {
67
+ type: 'text',
68
+ text: JSON.stringify({
69
+ success: false,
70
+ error: errorMessage,
71
+ }, null, 2),
72
+ },
73
+ ],
74
+ isError: true,
75
+ };
76
+ }
77
+ });
78
+ }
79
+ /**
80
+ * Start server with stdio transport
81
+ * Used for local CLI integration with Claude Desktop
82
+ */
83
+ async startStdio() {
84
+ const transport = new StdioServerTransport();
85
+ await this.server.connect(transport);
86
+ console.error('[MCP] Agentic Payments MCP server running on stdio');
87
+ console.error('[MCP] Available tools:', registerTools().length);
88
+ }
89
+ /**
90
+ * Start server with HTTP/SSE transport
91
+ * Used for remote integration via HTTP
92
+ */
93
+ async startHttp(port = 3000) {
94
+ this.httpServer = new HttpMCPServer(this.server, {
95
+ port,
96
+ enableLogging: true,
97
+ });
98
+ this.httpServer.listen();
99
+ // Graceful shutdown handling
100
+ process.on('SIGINT', async () => {
101
+ console.error('\n[MCP] Received SIGINT, shutting down gracefully...');
102
+ await this.shutdown();
103
+ process.exit(0);
104
+ });
105
+ process.on('SIGTERM', async () => {
106
+ console.error('\n[MCP] Received SIGTERM, shutting down gracefully...');
107
+ await this.shutdown();
108
+ process.exit(0);
109
+ });
110
+ }
111
+ /**
112
+ * Graceful shutdown
113
+ */
114
+ async shutdown() {
115
+ if (this.httpServer) {
116
+ await this.httpServer.shutdown();
117
+ }
118
+ }
119
+ /**
120
+ * Get the underlying MCP server instance
121
+ */
122
+ getServer() {
123
+ return this.server;
124
+ }
125
+ }
126
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD;;;;GAIG;AACH,MAAM,OAAO,wBAAwB;IAC3B,MAAM,CAAS;IACf,UAAU,CAAiB;IAEnC;QACE,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CACtB;YACE,IAAI,EAAE,kBAAkB;YACxB,OAAO,EAAE,OAAO;SACjB,EACD;YACE,YAAY,EAAE;gBACZ,KAAK,EAAE,EAAE;aACV;SACF,CACF,CAAC;QAEF,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAED;;OAEG;IACK,aAAa;QACnB,uBAAuB;QACvB,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;YAC/D,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;YAC9B,OAAO,EAAE,KAAK,EAAE,CAAC;QACnB,CAAC,CAAC,CAAC;QAEH,oBAAoB;QACpB,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YACrE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;YAEjD,iDAAiD;YACjD,OAAO,CAAC,KAAK,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC;YAC1C,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAEjE,IAAI,CAAC;gBACH,oCAAoC;gBACpC,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;gBACrC,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;gBAC3C,CAAC;gBAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;gBAEzC,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBAErE,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;yBACtC;qBACF;iBACF,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;gBAE1C,MAAM,YAAY,GAChB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;gBAE3D,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;gCACE,OAAO,EAAE,KAAK;gCACd,KAAK,EAAE,YAAY;6BACpB,EACD,IAAI,EACJ,CAAC,CACF;yBACF;qBACF;oBACD,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,UAAU;QACd,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAC7C,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACrC,OAAO,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACpE,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,aAAa,EAAE,CAAC,MAAM,CAAC,CAAC;IAClE,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,SAAS,CAAC,OAAe,IAAI;QACjC,IAAI,CAAC,UAAU,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE;YAC/C,IAAI;YACJ,aAAa,EAAE,IAAI;SACpB,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;QAEzB,6BAA6B;QAC7B,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YAC9B,OAAO,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;YACtE,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;YAC/B,OAAO,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;YACvE,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ;QACZ,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;QACnC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Agent identity MCP tools
3
+ */
4
+ import type { ToolResult, GenerateAgentIdentityArgs } from './types.js';
5
+ /**
6
+ * Generate a new agent identity with Ed25519 keypair
7
+ */
8
+ export declare function generateAgentIdentityTool(args: GenerateAgentIdentityArgs): Promise<ToolResult>;
9
+ //# sourceMappingURL=agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/agent.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAExE;;GAEG;AACH,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,yBAAyB,GAC9B,OAAO,CAAC,UAAU,CAAC,CA4BrB"}