@paylobster/mcp-server 1.3.0 → 1.5.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 (135) hide show
  1. package/BUILD_SUMMARY.md +294 -0
  2. package/CHANGELOG.md +77 -0
  3. package/COMPLETION_REPORT.md +284 -0
  4. package/INTEGRATION.md +286 -0
  5. package/QUICKSTART.md +226 -0
  6. package/README.md +232 -127
  7. package/dist/index.d.ts +2 -2
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +19 -3
  10. package/dist/index.js.map +1 -1
  11. package/dist/lib/config.d.ts +7 -0
  12. package/dist/lib/config.d.ts.map +1 -0
  13. package/dist/lib/config.js +16 -0
  14. package/dist/lib/config.js.map +1 -0
  15. package/dist/lib/contracts.d.ts +15 -0
  16. package/dist/lib/contracts.d.ts.map +1 -0
  17. package/dist/lib/contracts.js +148 -0
  18. package/dist/lib/contracts.js.map +1 -0
  19. package/dist/lib/types.d.ts +39 -0
  20. package/dist/lib/types.d.ts.map +1 -0
  21. package/dist/{types/index.js → lib/types.js} +1 -1
  22. package/dist/lib/types.js.map +1 -0
  23. package/dist/resources/agent.d.ts +3 -0
  24. package/dist/resources/agent.d.ts.map +1 -0
  25. package/dist/resources/agent.js +36 -0
  26. package/dist/resources/agent.js.map +1 -0
  27. package/dist/resources/escrow.d.ts +3 -0
  28. package/dist/resources/escrow.d.ts.map +1 -0
  29. package/dist/resources/escrow.js +33 -0
  30. package/dist/resources/escrow.js.map +1 -0
  31. package/dist/resources/services.d.ts +2 -0
  32. package/dist/resources/services.d.ts.map +1 -0
  33. package/dist/resources/services.js +55 -0
  34. package/dist/resources/services.js.map +1 -0
  35. package/dist/server.d.ts +6 -3
  36. package/dist/server.d.ts.map +1 -1
  37. package/dist/server.js +114 -834
  38. package/dist/server.js.map +1 -1
  39. package/dist/tools/agent.d.ts +17 -0
  40. package/dist/tools/agent.d.ts.map +1 -0
  41. package/dist/tools/agent.js +51 -0
  42. package/dist/tools/agent.js.map +1 -0
  43. package/dist/tools/balance.d.ts +16 -5
  44. package/dist/tools/balance.d.ts.map +1 -1
  45. package/dist/tools/balance.js +44 -26
  46. package/dist/tools/balance.js.map +1 -1
  47. package/dist/tools/escrow.d.ts +31 -90
  48. package/dist/tools/escrow.d.ts.map +1 -1
  49. package/dist/tools/escrow.js +98 -215
  50. package/dist/tools/escrow.js.map +1 -1
  51. package/dist/tools/reputation.d.ts +15 -49
  52. package/dist/tools/reputation.d.ts.map +1 -1
  53. package/dist/tools/reputation.js +45 -107
  54. package/dist/tools/reputation.js.map +1 -1
  55. package/dist/tools/search.d.ts +30 -54
  56. package/dist/tools/search.d.ts.map +1 -1
  57. package/dist/tools/search.js +122 -85
  58. package/dist/tools/search.js.map +1 -1
  59. package/examples/test-server.ts +36 -0
  60. package/examples/test-tools.ts +64 -0
  61. package/package.json +20 -11
  62. package/src/__tests__/server.test.ts +24 -0
  63. package/src/index.ts +24 -0
  64. package/src/lib/config.ts +22 -0
  65. package/src/lib/contracts.ts +164 -0
  66. package/src/lib/types.ts +44 -0
  67. package/src/resources/agent.ts +40 -0
  68. package/src/resources/escrow.ts +35 -0
  69. package/src/resources/services.ts +53 -0
  70. package/src/server.ts +190 -0
  71. package/src/tools/agent.ts +56 -0
  72. package/src/tools/balance.ts +61 -0
  73. package/src/tools/escrow.ts +142 -0
  74. package/src/tools/reputation.ts +69 -0
  75. package/src/tools/search.ts +148 -0
  76. package/tsconfig.json +20 -0
  77. package/dist/cli.d.ts +0 -3
  78. package/dist/cli.d.ts.map +0 -1
  79. package/dist/cli.js +0 -86
  80. package/dist/cli.js.map +0 -1
  81. package/dist/resources/index.d.ts +0 -9
  82. package/dist/resources/index.d.ts.map +0 -1
  83. package/dist/resources/index.js +0 -159
  84. package/dist/resources/index.js.map +0 -1
  85. package/dist/tools/bridge.d.ts +0 -142
  86. package/dist/tools/bridge.d.ts.map +0 -1
  87. package/dist/tools/bridge.js +0 -121
  88. package/dist/tools/bridge.js.map +0 -1
  89. package/dist/tools/cascade.d.ts +0 -59
  90. package/dist/tools/cascade.d.ts.map +0 -1
  91. package/dist/tools/cascade.js +0 -119
  92. package/dist/tools/cascade.js.map +0 -1
  93. package/dist/tools/compliance.d.ts +0 -36
  94. package/dist/tools/compliance.d.ts.map +0 -1
  95. package/dist/tools/compliance.js +0 -57
  96. package/dist/tools/compliance.js.map +0 -1
  97. package/dist/tools/credit.d.ts +0 -46
  98. package/dist/tools/credit.d.ts.map +0 -1
  99. package/dist/tools/credit.js +0 -102
  100. package/dist/tools/credit.js.map +0 -1
  101. package/dist/tools/disputes.d.ts +0 -71
  102. package/dist/tools/disputes.d.ts.map +0 -1
  103. package/dist/tools/disputes.js +0 -121
  104. package/dist/tools/disputes.js.map +0 -1
  105. package/dist/tools/intent.d.ts +0 -78
  106. package/dist/tools/intent.d.ts.map +0 -1
  107. package/dist/tools/intent.js +0 -192
  108. package/dist/tools/intent.js.map +0 -1
  109. package/dist/tools/portfolio.d.ts +0 -44
  110. package/dist/tools/portfolio.d.ts.map +0 -1
  111. package/dist/tools/portfolio.js +0 -166
  112. package/dist/tools/portfolio.js.map +0 -1
  113. package/dist/tools/revenue.d.ts +0 -42
  114. package/dist/tools/revenue.d.ts.map +0 -1
  115. package/dist/tools/revenue.js +0 -67
  116. package/dist/tools/revenue.js.map +0 -1
  117. package/dist/tools/streaming.d.ts +0 -60
  118. package/dist/tools/streaming.d.ts.map +0 -1
  119. package/dist/tools/streaming.js +0 -163
  120. package/dist/tools/streaming.js.map +0 -1
  121. package/dist/tools/swap.d.ts +0 -93
  122. package/dist/tools/swap.d.ts.map +0 -1
  123. package/dist/tools/swap.js +0 -150
  124. package/dist/tools/swap.js.map +0 -1
  125. package/dist/tools/treasury.d.ts +0 -169
  126. package/dist/tools/treasury.d.ts.map +0 -1
  127. package/dist/tools/treasury.js +0 -475
  128. package/dist/tools/treasury.js.map +0 -1
  129. package/dist/types/index.d.ts +0 -83
  130. package/dist/types/index.d.ts.map +0 -1
  131. package/dist/types/index.js.map +0 -1
  132. package/dist/utils/contracts.d.ts +0 -552
  133. package/dist/utils/contracts.d.ts.map +0 -1
  134. package/dist/utils/contracts.js +0 -401
  135. package/dist/utils/contracts.js.map +0 -1
@@ -1,401 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ContractClient = exports.COMPLIANCE_ABI = exports.REVENUE_ABI = exports.INTENT_ABI = exports.CASCADE_ABI = exports.DISPUTE_ABI = exports.STREAMING_ABI = exports.USDC_ABI = exports.ESCROW_ABI = exports.CREDIT_ABI = exports.REPUTATION_ABI = exports.IDENTITY_ABI = void 0;
4
- const viem_1 = require("viem");
5
- const chains_1 = require("viem/chains");
6
- const accounts_1 = require("viem/accounts");
7
- // Default contract addresses
8
- const DEFAULT_CONTRACTS = {
9
- 'base': {
10
- identity: '0xA174ee274F870631B3c330a85EBCad74120BE662',
11
- reputation: '0x02bb4132a86134684976E2a52E43D59D89E64b29',
12
- credit: '0xD9241Ce8a721Ef5fcCAc5A11983addC526eC80E1',
13
- escrow: '0x49EdEe04c78B7FeD5248A20706c7a6c540748806',
14
- usdc: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',
15
- streaming: '0x0000000000000000000000000000000000000000', // TODO: Deploy
16
- dispute: '0x0000000000000000000000000000000000000000', // TODO: Deploy
17
- cascade: '0x0000000000000000000000000000000000000000', // TODO: Deploy
18
- intent: '0x0000000000000000000000000000000000000000', // TODO: Deploy
19
- revenue: '0x0000000000000000000000000000000000000000', // TODO: Deploy
20
- compliance: '0x0000000000000000000000000000000000000000', // TODO: Deploy
21
- },
22
- // NOTE: These contracts are not yet deployed to Base Sepolia
23
- 'base-sepolia': {
24
- identity: '0x3dfA02Ed4F0e4F10E8031d7a4cB8Ea0bBbFbCB8c',
25
- reputation: '0x0000000000000000000000000000000000000000', // TODO: Deploy and update
26
- credit: '0xBA64e2b2F2a80D03A4B13b3396942C1e78205C7d',
27
- escrow: '0x78D1f50a1965dE34f6b5a3D3546C94FE1809Cd82',
28
- usdc: '0x036CbD53842c5426634e7929541eC2318f3dCF7e',
29
- streaming: '0x0000000000000000000000000000000000000000', // TODO: Deploy
30
- dispute: '0x0000000000000000000000000000000000000000', // TODO: Deploy
31
- cascade: '0x0000000000000000000000000000000000000000', // TODO: Deploy
32
- intent: '0x0000000000000000000000000000000000000000', // TODO: Deploy
33
- revenue: '0x0000000000000000000000000000000000000000', // TODO: Deploy
34
- compliance: '0x0000000000000000000000000000000000000000', // TODO: Deploy
35
- },
36
- };
37
- // Contract ABIs
38
- exports.IDENTITY_ABI = [
39
- {
40
- inputs: [
41
- { name: 'agentURI', type: 'string' },
42
- { name: 'name', type: 'string' },
43
- { name: 'capabilities', type: 'string' },
44
- ],
45
- name: 'register',
46
- outputs: [{ name: 'agentId', type: 'uint256' }],
47
- stateMutability: 'nonpayable',
48
- type: 'function',
49
- },
50
- {
51
- inputs: [{ name: 'user', type: 'address' }],
52
- name: 'getAgentInfo',
53
- outputs: [
54
- { name: 'name', type: 'string' },
55
- { name: 'tokenId', type: 'uint256' },
56
- { name: 'registered', type: 'bool' },
57
- ],
58
- stateMutability: 'view',
59
- type: 'function',
60
- },
61
- ];
62
- exports.REPUTATION_ABI = [
63
- {
64
- inputs: [{ name: 'user', type: 'address' }],
65
- name: 'getReputation',
66
- outputs: [
67
- { name: 'score', type: 'uint256' },
68
- { name: 'trustVector', type: 'uint256' },
69
- ],
70
- stateMutability: 'view',
71
- type: 'function',
72
- },
73
- ];
74
- exports.CREDIT_ABI = [
75
- {
76
- inputs: [{ name: 'user', type: 'address' }],
77
- name: 'getCreditScore',
78
- outputs: [{ name: '', type: 'uint256' }],
79
- stateMutability: 'view',
80
- type: 'function',
81
- },
82
- {
83
- inputs: [{ name: 'user', type: 'address' }],
84
- name: 'getCreditStatus',
85
- outputs: [
86
- { name: 'limit', type: 'uint256' },
87
- { name: 'available', type: 'uint256' },
88
- { name: 'inUse', type: 'uint256' },
89
- ],
90
- stateMutability: 'view',
91
- type: 'function',
92
- },
93
- ];
94
- exports.ESCROW_ABI = [
95
- {
96
- anonymous: true,
97
- inputs: [
98
- { indexed: true, name: 'escrowId', type: 'uint256' },
99
- { indexed: true, name: 'sender', type: 'address' },
100
- { indexed: true, name: 'recipient', type: 'address' },
101
- { indexed: false, name: 'amount', type: 'uint256' },
102
- ],
103
- name: 'EscrowCreated',
104
- type: 'event',
105
- },
106
- {
107
- anonymous: true,
108
- inputs: [
109
- { indexed: true, name: 'escrowId', type: 'uint256' },
110
- ],
111
- name: 'EscrowReleased',
112
- type: 'event',
113
- },
114
- {
115
- inputs: [
116
- { name: 'recipient', type: 'address' },
117
- { name: 'amount', type: 'uint256' },
118
- { name: 'token', type: 'address' },
119
- { name: 'description', type: 'string' },
120
- ],
121
- name: 'createEscrow',
122
- outputs: [{ name: 'escrowId', type: 'uint256' }],
123
- stateMutability: 'nonpayable',
124
- type: 'function',
125
- },
126
- {
127
- inputs: [{ name: 'escrowId', type: 'uint256' }],
128
- name: 'releaseEscrow',
129
- outputs: [],
130
- stateMutability: 'nonpayable',
131
- type: 'function',
132
- },
133
- {
134
- inputs: [{ name: 'escrowId', type: 'uint256' }],
135
- name: 'getEscrow',
136
- outputs: [
137
- { name: 'sender', type: 'address' },
138
- { name: 'recipient', type: 'address' },
139
- { name: 'amount', type: 'uint256' },
140
- { name: 'token', type: 'address' },
141
- { name: 'status', type: 'uint8' },
142
- ],
143
- stateMutability: 'view',
144
- type: 'function',
145
- },
146
- ];
147
- exports.USDC_ABI = [
148
- {
149
- inputs: [
150
- { name: 'spender', type: 'address' },
151
- { name: 'amount', type: 'uint256' },
152
- ],
153
- name: 'approve',
154
- outputs: [{ name: '', type: 'bool' }],
155
- stateMutability: 'nonpayable',
156
- type: 'function',
157
- },
158
- {
159
- inputs: [{ name: 'account', type: 'address' }],
160
- name: 'balanceOf',
161
- outputs: [{ name: '', type: 'uint256' }],
162
- stateMutability: 'view',
163
- type: 'function',
164
- },
165
- ];
166
- exports.STREAMING_ABI = [
167
- {
168
- inputs: [
169
- { name: 'recipient', type: 'address' },
170
- { name: 'amountPerSecond', type: 'uint256' },
171
- { name: 'duration', type: 'uint256' },
172
- { name: 'token', type: 'address' },
173
- ],
174
- name: 'createStream',
175
- outputs: [{ name: 'streamId', type: 'uint256' }],
176
- stateMutability: 'nonpayable',
177
- type: 'function',
178
- },
179
- {
180
- inputs: [{ name: 'streamId', type: 'uint256' }],
181
- name: 'cancelStream',
182
- outputs: [],
183
- stateMutability: 'nonpayable',
184
- type: 'function',
185
- },
186
- {
187
- inputs: [{ name: 'streamId', type: 'uint256' }],
188
- name: 'getStream',
189
- outputs: [
190
- { name: 'sender', type: 'address' },
191
- { name: 'recipient', type: 'address' },
192
- { name: 'amountPerSecond', type: 'uint256' },
193
- { name: 'startTime', type: 'uint256' },
194
- { name: 'endTime', type: 'uint256' },
195
- { name: 'claimed', type: 'uint256' },
196
- { name: 'active', type: 'bool' },
197
- ],
198
- stateMutability: 'view',
199
- type: 'function',
200
- },
201
- ];
202
- exports.DISPUTE_ABI = [
203
- {
204
- inputs: [
205
- { name: 'escrowId', type: 'uint256' },
206
- { name: 'reason', type: 'string' },
207
- { name: 'evidence', type: 'string' },
208
- ],
209
- name: 'openDispute',
210
- outputs: [{ name: 'disputeId', type: 'uint256' }],
211
- stateMutability: 'nonpayable',
212
- type: 'function',
213
- },
214
- {
215
- inputs: [
216
- { name: 'disputeId', type: 'uint256' },
217
- { name: 'evidence', type: 'string' },
218
- { name: 'description', type: 'string' },
219
- ],
220
- name: 'submitEvidence',
221
- outputs: [],
222
- stateMutability: 'nonpayable',
223
- type: 'function',
224
- },
225
- {
226
- inputs: [{ name: 'disputeId', type: 'uint256' }],
227
- name: 'getDispute',
228
- outputs: [
229
- { name: 'escrowId', type: 'uint256' },
230
- { name: 'plaintiff', type: 'address' },
231
- { name: 'defendant', type: 'address' },
232
- { name: 'reason', type: 'string' },
233
- { name: 'status', type: 'uint8' },
234
- { name: 'createdAt', type: 'uint256' },
235
- ],
236
- stateMutability: 'view',
237
- type: 'function',
238
- },
239
- ];
240
- exports.CASCADE_ABI = [
241
- {
242
- inputs: [
243
- { name: 'recipients', type: 'address[]' },
244
- { name: 'amounts', type: 'uint256[]' },
245
- { name: 'token', type: 'address' },
246
- { name: 'metadata', type: 'string' },
247
- ],
248
- name: 'createCascade',
249
- outputs: [{ name: 'cascadeId', type: 'uint256' }],
250
- stateMutability: 'nonpayable',
251
- type: 'function',
252
- },
253
- {
254
- inputs: [{ name: 'cascadeId', type: 'uint256' }],
255
- name: 'releaseLevel',
256
- outputs: [],
257
- stateMutability: 'nonpayable',
258
- type: 'function',
259
- },
260
- {
261
- inputs: [{ name: 'cascadeId', type: 'uint256' }],
262
- name: 'getCascade',
263
- outputs: [
264
- { name: 'creator', type: 'address' },
265
- { name: 'recipients', type: 'address[]' },
266
- { name: 'amounts', type: 'uint256[]' },
267
- { name: 'token', type: 'address' },
268
- { name: 'currentLevel', type: 'uint256' },
269
- { name: 'totalLevels', type: 'uint256' },
270
- ],
271
- stateMutability: 'view',
272
- type: 'function',
273
- },
274
- ];
275
- exports.INTENT_ABI = [
276
- {
277
- anonymous: true,
278
- inputs: [
279
- { indexed: true, name: 'intentId', type: 'uint256' },
280
- { indexed: true, name: 'poster', type: 'address' },
281
- ],
282
- name: 'IntentPosted',
283
- type: 'event',
284
- },
285
- {
286
- inputs: [
287
- { name: 'description', type: 'string' },
288
- { name: 'tags', type: 'string[]' },
289
- { name: 'budget', type: 'uint256' },
290
- { name: 'deadline', type: 'uint256' },
291
- { name: 'metadata', type: 'string' },
292
- ],
293
- name: 'postIntent',
294
- outputs: [{ name: 'intentId', type: 'uint256' }],
295
- stateMutability: 'nonpayable',
296
- type: 'function',
297
- },
298
- {
299
- inputs: [
300
- { name: 'intentId', type: 'uint256' },
301
- { name: 'offerId', type: 'uint256' },
302
- ],
303
- name: 'acceptOffer',
304
- outputs: [],
305
- stateMutability: 'nonpayable',
306
- type: 'function',
307
- },
308
- {
309
- inputs: [{ name: 'intentId', type: 'uint256' }],
310
- name: 'getIntent',
311
- outputs: [
312
- { name: 'description', type: 'string' },
313
- { name: 'tags', type: 'string[]' },
314
- { name: 'budget', type: 'uint256' },
315
- { name: 'deadline', type: 'uint256' },
316
- { name: 'status', type: 'uint8' },
317
- { name: 'offerCount', type: 'uint256' },
318
- ],
319
- stateMutability: 'view',
320
- type: 'function',
321
- },
322
- ];
323
- exports.REVENUE_ABI = [
324
- {
325
- inputs: [
326
- { name: 'participants', type: 'address[]' },
327
- { name: 'shares', type: 'uint256[]' },
328
- { name: 'token', type: 'address' },
329
- { name: 'sourceEscrow', type: 'uint256' },
330
- { name: 'metadata', type: 'string' },
331
- ],
332
- name: 'createRevenueShare',
333
- outputs: [{ name: 'agreementId', type: 'uint256' }],
334
- stateMutability: 'nonpayable',
335
- type: 'function',
336
- },
337
- ];
338
- exports.COMPLIANCE_ABI = [
339
- {
340
- inputs: [{ name: 'user', type: 'address' }],
341
- name: 'getComplianceStatus',
342
- outputs: [
343
- { name: 'kycVerified', type: 'bool' },
344
- { name: 'kycLevel', type: 'string' },
345
- { name: 'sanctionsClear', type: 'bool' },
346
- { name: 'riskScore', type: 'uint256' },
347
- { name: 'restrictions', type: 'string[]' },
348
- { name: 'lastUpdated', type: 'uint256' },
349
- ],
350
- stateMutability: 'view',
351
- type: 'function',
352
- },
353
- ];
354
- class ContractClient {
355
- publicClient;
356
- walletClient = null;
357
- account = null;
358
- config;
359
- constructor(config) {
360
- this.config = config;
361
- const chain = config.network === 'base' ? chains_1.base : chains_1.baseSepolia;
362
- this.publicClient = (0, viem_1.createPublicClient)({
363
- chain,
364
- transport: (0, viem_1.http)(config.rpcUrl),
365
- });
366
- if (config.wallet?.privateKey) {
367
- this.account = (0, accounts_1.privateKeyToAccount)(config.wallet.privateKey);
368
- this.walletClient = (0, viem_1.createWalletClient)({
369
- account: this.account,
370
- chain,
371
- transport: (0, viem_1.http)(config.rpcUrl),
372
- });
373
- }
374
- }
375
- getContracts() {
376
- return this.config.contracts || DEFAULT_CONTRACTS[this.config.network];
377
- }
378
- getPublicClient() {
379
- return this.publicClient;
380
- }
381
- getWalletClient() {
382
- if (!this.walletClient) {
383
- throw new Error('Wallet not configured. Set PAYLOBSTER_PRIVATE_KEY.');
384
- }
385
- return this.walletClient;
386
- }
387
- getAccount() {
388
- if (!this.account) {
389
- throw new Error('Wallet not configured. Set PAYLOBSTER_PRIVATE_KEY.');
390
- }
391
- return this.account;
392
- }
393
- parseUSDC(amount) {
394
- return (0, viem_1.parseUnits)(amount, 6); // USDC has 6 decimals
395
- }
396
- formatUSDC(amount) {
397
- return (0, viem_1.formatUnits)(amount, 6);
398
- }
399
- }
400
- exports.ContractClient = ContractClient;
401
- //# sourceMappingURL=contracts.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../src/utils/contracts.ts"],"names":[],"mappings":"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"}