@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
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ContractsClient = void 0;
4
+ const viem_1 = require("viem");
5
+ const chains_1 = require("viem/chains");
6
+ // Contract addresses from existing web/src/lib/contracts.ts
7
+ const CONTRACTS_MAINNET = {
8
+ IDENTITY: '0xA174f250380c4B5C37F6709bBa719E662b77E662',
9
+ REPUTATION: '0x02bb4c4cd10EeaCD04DF7631c81d6E7c1d0c4b29',
10
+ CREDIT: '0xD924B81F2d8EFF3E0A3Bf0a4b9D77d37CC0980E1',
11
+ ESCROW: '0x49Ed7003C6941a033E7dD8b44552e4E18cf28806',
12
+ USDC: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',
13
+ };
14
+ // NOTE: These contracts are not yet deployed to Base Sepolia
15
+ const CONTRACTS_SEPOLIA = {
16
+ IDENTITY: '0x3dfA02Ed4F0e4F10E8031d7a4cB8Ea0bBbFbCB8c',
17
+ REPUTATION: '0x0000000000000000000000000000000000000000', // TODO: Deploy and update
18
+ CREDIT: '0xBA64e2b2F2a80D03A4B13b3396942C1e78205C7d',
19
+ ESCROW: '0x78D1f50a1965dE34f6b5a3D3546C94FE1809Cd82',
20
+ USDC: '0x036CbD53842c5426634e7929541eC2318f3dCF7e',
21
+ };
22
+ // ABIs from existing contracts.ts
23
+ const IDENTITY_ABI = [
24
+ {
25
+ inputs: [{ name: 'user', type: 'address' }],
26
+ name: 'getAgentInfo',
27
+ outputs: [
28
+ { name: 'name', type: 'string' },
29
+ { name: 'tokenId', type: 'uint256' },
30
+ { name: 'registered', type: 'bool' },
31
+ ],
32
+ stateMutability: 'view',
33
+ type: 'function',
34
+ },
35
+ {
36
+ inputs: [{ name: '', type: 'address' }],
37
+ name: 'addressToAgentId',
38
+ outputs: [{ name: '', type: 'uint256' }],
39
+ stateMutability: 'view',
40
+ type: 'function',
41
+ },
42
+ ];
43
+ const REPUTATION_ABI = [
44
+ {
45
+ inputs: [{ name: 'user', type: 'address' }],
46
+ name: 'getReputation',
47
+ outputs: [
48
+ { name: 'score', type: 'uint256' },
49
+ { name: 'trustVector', type: 'uint256' },
50
+ ],
51
+ stateMutability: 'view',
52
+ type: 'function',
53
+ },
54
+ ];
55
+ const ESCROW_ABI = [
56
+ {
57
+ inputs: [{ name: 'escrowId', type: 'uint256' }],
58
+ name: 'getEscrow',
59
+ outputs: [
60
+ { name: 'sender', type: 'address' },
61
+ { name: 'recipient', type: 'address' },
62
+ { name: 'amount', type: 'uint256' },
63
+ { name: 'token', type: 'address' },
64
+ { name: 'status', type: 'uint8' },
65
+ ],
66
+ stateMutability: 'view',
67
+ type: 'function',
68
+ },
69
+ ];
70
+ const USDC_ABI = [
71
+ {
72
+ inputs: [{ name: 'account', type: 'address' }],
73
+ name: 'balanceOf',
74
+ outputs: [{ name: '', type: 'uint256' }],
75
+ stateMutability: 'view',
76
+ type: 'function',
77
+ },
78
+ ];
79
+ class ContractsClient {
80
+ publicClient;
81
+ contracts;
82
+ constructor(config) {
83
+ const chain = config.network === 'sepolia' ? chains_1.baseSepolia : chains_1.base;
84
+ this.contracts = config.network === 'sepolia' ? CONTRACTS_SEPOLIA : CONTRACTS_MAINNET;
85
+ this.publicClient = (0, viem_1.createPublicClient)({
86
+ chain,
87
+ transport: (0, viem_1.http)(config.rpcUrl),
88
+ });
89
+ }
90
+ async getAgentInfo(address) {
91
+ const result = await this.publicClient.readContract({
92
+ address: this.contracts.IDENTITY,
93
+ abi: IDENTITY_ABI,
94
+ functionName: 'getAgentInfo',
95
+ args: [address],
96
+ });
97
+ return {
98
+ name: result[0],
99
+ tokenId: result[1],
100
+ registered: result[2],
101
+ };
102
+ }
103
+ async getReputation(address) {
104
+ const result = await this.publicClient.readContract({
105
+ address: this.contracts.REPUTATION,
106
+ abi: REPUTATION_ABI,
107
+ functionName: 'getReputation',
108
+ args: [address],
109
+ });
110
+ return {
111
+ score: result[0],
112
+ trustVector: result[1],
113
+ };
114
+ }
115
+ async getBalance(address) {
116
+ const balance = await this.publicClient.readContract({
117
+ address: this.contracts.USDC,
118
+ abi: USDC_ABI,
119
+ functionName: 'balanceOf',
120
+ args: [address],
121
+ });
122
+ return balance;
123
+ }
124
+ async getEscrow(escrowId) {
125
+ const result = await this.publicClient.readContract({
126
+ address: this.contracts.ESCROW,
127
+ abi: ESCROW_ABI,
128
+ functionName: 'getEscrow',
129
+ args: [escrowId],
130
+ });
131
+ return {
132
+ sender: result[0],
133
+ recipient: result[1],
134
+ amount: result[2],
135
+ token: result[3],
136
+ status: result[4],
137
+ };
138
+ }
139
+ async getUserTransactionCount(address) {
140
+ // TODO: Implement when Escrow V3 is deployed with getUserTransactionCount
141
+ return 0n;
142
+ }
143
+ getContractAddress(name) {
144
+ return this.contracts[name];
145
+ }
146
+ }
147
+ exports.ContractsClient = ContractsClient;
148
+ //# sourceMappingURL=contracts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../src/lib/contracts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import type { Address } from 'viem';
2
+ export interface AgentInfo {
3
+ name: string;
4
+ tokenId: bigint;
5
+ registered: boolean;
6
+ }
7
+ export interface ReputationData {
8
+ score: bigint;
9
+ trustVector: bigint;
10
+ }
11
+ export interface CreditStatus {
12
+ limit: bigint;
13
+ available: bigint;
14
+ inUse: bigint;
15
+ }
16
+ export interface EscrowData {
17
+ sender: Address;
18
+ recipient: Address;
19
+ amount: bigint;
20
+ token: Address;
21
+ status: number;
22
+ }
23
+ export interface ServiceListing {
24
+ id: string;
25
+ provider: Address;
26
+ name: string;
27
+ description: string;
28
+ category: string;
29
+ price: string;
30
+ currency: string;
31
+ reputation?: number;
32
+ }
33
+ export interface MCPError {
34
+ code: string;
35
+ message: string;
36
+ details?: unknown;
37
+ retryable: boolean;
38
+ }
39
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAEpC,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;CACpB"}
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=index.js.map
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ import type { ContractsClient } from '../lib/contracts.js';
2
+ export declare function getAgentResource(address: string, contracts: ContractsClient): Promise<object>;
3
+ //# sourceMappingURL=agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/resources/agent.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,eAAe,GACzB,OAAO,CAAC,MAAM,CAAC,CAiCjB"}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getAgentResource = getAgentResource;
4
+ async function getAgentResource(address, contracts) {
5
+ const addr = address;
6
+ try {
7
+ const [reputation, agentInfo] = await Promise.all([
8
+ contracts.getReputation(addr),
9
+ contracts.getAgentInfo(addr),
10
+ ]);
11
+ const normalizedScore = Number(reputation.score) / 1000;
12
+ return {
13
+ uri: `paylobster://agent/${address}`,
14
+ mimeType: 'application/json',
15
+ text: JSON.stringify({
16
+ address,
17
+ name: agentInfo.name || 'Unregistered',
18
+ tokenId: agentInfo.tokenId.toString(),
19
+ registered: agentInfo.registered,
20
+ reputation: {
21
+ score: normalizedScore,
22
+ trustVector: reputation.trustVector.toString(),
23
+ verified: agentInfo.registered,
24
+ },
25
+ }, null, 2),
26
+ };
27
+ }
28
+ catch (error) {
29
+ throw {
30
+ code: 'ERR_RESOURCE_NOT_FOUND',
31
+ message: `Failed to fetch agent resource for ${address}`,
32
+ retryable: true,
33
+ };
34
+ }
35
+ }
36
+ //# sourceMappingURL=agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/resources/agent.ts"],"names":[],"mappings":";;AAGA,4CAoCC;AApCM,KAAK,UAAU,gBAAgB,CACpC,OAAe,EACf,SAA0B;IAE1B,MAAM,IAAI,GAAG,OAAkB,CAAC;IAEhC,IAAI,CAAC;QACH,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAChD,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC;YAC7B,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC;SAC7B,CAAC,CAAC;QAEH,MAAM,eAAe,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;QAExD,OAAO;YACL,GAAG,EAAE,sBAAsB,OAAO,EAAE;YACpC,QAAQ,EAAE,kBAAkB;YAC5B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,OAAO;gBACP,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,cAAc;gBACtC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE;gBACrC,UAAU,EAAE,SAAS,CAAC,UAAU;gBAChC,UAAU,EAAE;oBACV,KAAK,EAAE,eAAe;oBACtB,WAAW,EAAE,UAAU,CAAC,WAAW,CAAC,QAAQ,EAAE;oBAC9C,QAAQ,EAAE,SAAS,CAAC,UAAU;iBAC/B;aACF,EAAE,IAAI,EAAE,CAAC,CAAC;SACZ,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM;YACJ,IAAI,EAAE,wBAAwB;YAC9B,OAAO,EAAE,sCAAsC,OAAO,EAAE;YACxD,SAAS,EAAE,IAAI;SAChB,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ContractsClient } from '../lib/contracts.js';
2
+ export declare function getEscrowResource(escrowId: string, contracts: ContractsClient): Promise<object>;
3
+ //# sourceMappingURL=escrow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"escrow.d.ts","sourceRoot":"","sources":["../../src/resources/escrow.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAI3D,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,eAAe,GACzB,OAAO,CAAC,MAAM,CAAC,CA0BjB"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getEscrowResource = getEscrowResource;
4
+ const viem_1 = require("viem");
5
+ const ESCROW_STATUS = ['Pending', 'Active', 'Released', 'Refunded', 'Disputed'];
6
+ async function getEscrowResource(escrowId, contracts) {
7
+ try {
8
+ const id = BigInt(escrowId);
9
+ const escrow = await contracts.getEscrow(id);
10
+ return {
11
+ uri: `paylobster://escrow/${escrowId}`,
12
+ mimeType: 'application/json',
13
+ text: JSON.stringify({
14
+ escrowId,
15
+ sender: escrow.sender,
16
+ recipient: escrow.recipient,
17
+ amount: (0, viem_1.formatUnits)(escrow.amount, 6),
18
+ amountRaw: escrow.amount.toString(),
19
+ token: escrow.token,
20
+ status: ESCROW_STATUS[escrow.status] || 'Unknown',
21
+ statusCode: escrow.status,
22
+ }, null, 2),
23
+ };
24
+ }
25
+ catch (error) {
26
+ throw {
27
+ code: 'ERR_RESOURCE_NOT_FOUND',
28
+ message: `Escrow ${escrowId} not found`,
29
+ retryable: false,
30
+ };
31
+ }
32
+ }
33
+ //# sourceMappingURL=escrow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"escrow.js","sourceRoot":"","sources":["../../src/resources/escrow.ts"],"names":[],"mappings":";;AAKA,8CA6BC;AAlCD,+BAAmC;AAGnC,MAAM,aAAa,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAEzE,KAAK,UAAU,iBAAiB,CACrC,QAAgB,EAChB,SAA0B;IAE1B,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC5B,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAE7C,OAAO;YACL,GAAG,EAAE,uBAAuB,QAAQ,EAAE;YACtC,QAAQ,EAAE,kBAAkB;YAC5B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,QAAQ;gBACR,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,MAAM,EAAE,IAAA,kBAAW,EAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;gBACrC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE;gBACnC,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,SAAS;gBACjD,UAAU,EAAE,MAAM,CAAC,MAAM;aAC1B,EAAE,IAAI,EAAE,CAAC,CAAC;SACZ,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM;YACJ,IAAI,EAAE,wBAAwB;YAC9B,OAAO,EAAE,UAAU,QAAQ,YAAY;YACvC,SAAS,EAAE,KAAK;SACjB,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function getServicesResource(): Promise<object>;
2
+ //# sourceMappingURL=services.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../../src/resources/services.ts"],"names":[],"mappings":"AAUA,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC,CA0C3D"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ // Mock services resource (ServiceRegistry not deployed yet)
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.getServicesResource = getServicesResource;
5
+ const MOCK_CATEGORIES = [
6
+ 'code-review',
7
+ 'security-audit',
8
+ 'ai-training',
9
+ 'data-labeling',
10
+ 'code-generation',
11
+ ];
12
+ async function getServicesResource() {
13
+ return {
14
+ uri: 'paylobster://services',
15
+ mimeType: 'application/json',
16
+ text: JSON.stringify({
17
+ totalServices: 5,
18
+ categories: MOCK_CATEGORIES,
19
+ note: 'Mock data - ServiceRegistry contract not yet deployed',
20
+ services: [
21
+ {
22
+ id: 'service-001',
23
+ name: 'TypeScript Code Reviewer',
24
+ category: 'code-review',
25
+ price: '10.00',
26
+ },
27
+ {
28
+ id: 'service-002',
29
+ name: 'Rust Security Auditor',
30
+ category: 'security-audit',
31
+ price: '50.00',
32
+ },
33
+ {
34
+ id: 'service-003',
35
+ name: 'AI Model Training',
36
+ category: 'ai-training',
37
+ price: '100.00',
38
+ },
39
+ {
40
+ id: 'service-004',
41
+ name: 'Data Labeling Service',
42
+ category: 'data-labeling',
43
+ price: '5.00',
44
+ },
45
+ {
46
+ id: 'service-005',
47
+ name: 'Python Code Generator',
48
+ category: 'code-generation',
49
+ price: '15.00',
50
+ },
51
+ ],
52
+ }, null, 2),
53
+ };
54
+ }
55
+ //# sourceMappingURL=services.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"services.js","sourceRoot":"","sources":["../../src/resources/services.ts"],"names":[],"mappings":";AAAA,4DAA4D;;AAU5D,kDA0CC;AAlDD,MAAM,eAAe,GAAG;IACtB,aAAa;IACb,gBAAgB;IAChB,aAAa;IACb,eAAe;IACf,iBAAiB;CAClB,CAAC;AAEK,KAAK,UAAU,mBAAmB;IACvC,OAAO;QACL,GAAG,EAAE,uBAAuB;QAC5B,QAAQ,EAAE,kBAAkB;QAC5B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,aAAa,EAAE,CAAC;YAChB,UAAU,EAAE,eAAe;YAC3B,IAAI,EAAE,uDAAuD;YAC7D,QAAQ,EAAE;gBACR;oBACE,EAAE,EAAE,aAAa;oBACjB,IAAI,EAAE,0BAA0B;oBAChC,QAAQ,EAAE,aAAa;oBACvB,KAAK,EAAE,OAAO;iBACf;gBACD;oBACE,EAAE,EAAE,aAAa;oBACjB,IAAI,EAAE,uBAAuB;oBAC7B,QAAQ,EAAE,gBAAgB;oBAC1B,KAAK,EAAE,OAAO;iBACf;gBACD;oBACE,EAAE,EAAE,aAAa;oBACjB,IAAI,EAAE,mBAAmB;oBACzB,QAAQ,EAAE,aAAa;oBACvB,KAAK,EAAE,QAAQ;iBAChB;gBACD;oBACE,EAAE,EAAE,aAAa;oBACjB,IAAI,EAAE,uBAAuB;oBAC7B,QAAQ,EAAE,eAAe;oBACzB,KAAK,EAAE,MAAM;iBACd;gBACD;oBACE,EAAE,EAAE,aAAa;oBACjB,IAAI,EAAE,uBAAuB;oBAC7B,QAAQ,EAAE,iBAAiB;oBAC3B,KAAK,EAAE,OAAO;iBACf;aACF;SACF,EAAE,IAAI,EAAE,CAAC,CAAC;KACZ,CAAC;AACJ,CAAC"}
package/dist/server.d.ts CHANGED
@@ -1,9 +1,12 @@
1
- import { PayLobsterConfig } from './types/index.js';
1
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
2
+ import { type MCPServerConfig } from './lib/config.js';
2
3
  export declare class PayLobsterMCPServer {
3
4
  private server;
4
- private client;
5
- constructor(config: PayLobsterConfig);
5
+ private config;
6
+ private contracts;
7
+ constructor(config?: Partial<MCPServerConfig>);
6
8
  private setupHandlers;
7
9
  start(): Promise<void>;
10
+ getServer(): Server;
8
11
  }
9
12
  //# sourceMappingURL=server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAuHpD,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAiB;gBAEnB,MAAM,EAAE,gBAAgB;IAkBpC,OAAO,CAAC,aAAa;IAw3Bf,KAAK;CAKZ"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAQnE,OAAO,EAAa,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAelE,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,SAAS,CAAkB;gBAEvB,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC;IAoB7C,OAAO,CAAC,aAAa;IAgIf,KAAK;IAUX,SAAS,IAAI,MAAM;CAGpB"}