@paylobster/mcp-server 1.3.1 → 1.6.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 -941
  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 -267
  126. package/dist/tools/treasury.d.ts.map +0 -1
  127. package/dist/tools/treasury.js +0 -722
  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,244 +1,127 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.listEscrowsSchema = exports.getEscrowSchema = exports.releaseEscrowSchema = exports.createEscrowSchema = void 0;
4
- exports.createEscrow = createEscrow;
5
- exports.releaseEscrow = releaseEscrow;
6
- exports.getEscrow = getEscrow;
7
- exports.listEscrows = listEscrows;
3
+ exports.listEscrowsTool = exports.getEscrowTool = void 0;
4
+ exports.handleGetEscrow = handleGetEscrow;
5
+ exports.handleListEscrows = handleListEscrows;
8
6
  const zod_1 = require("zod");
9
- const contracts_1 = require("../utils/contracts");
10
- exports.createEscrowSchema = zod_1.z.object({
11
- to: zod_1.z.string().describe('Recipient address'),
12
- amount: zod_1.z.string().describe('Amount in USDC'),
13
- currency: zod_1.z.string().default('USDC'),
14
- terms: zod_1.z.object({
15
- releaseOn: zod_1.z.enum(['delivery-confirmed', 'timeout', 'manual']).default('delivery-confirmed'),
16
- timeout: zod_1.z.string().optional().describe('ISO 8601 duration (e.g., P1D for 1 day)'),
17
- disputeWindow: zod_1.z.string().optional().describe('ISO 8601 duration'),
18
- }).optional(),
19
- metadata: zod_1.z.record(zod_1.z.any()).optional(),
7
+ const viem_1 = require("viem");
8
+ const GetEscrowInput = zod_1.z.object({
9
+ escrowId: zod_1.z.string().regex(/^\d+$/, 'Escrow ID must be a number'),
20
10
  });
21
- exports.releaseEscrowSchema = zod_1.z.object({
22
- escrowId: zod_1.z.string().describe('Escrow ID'),
11
+ const ListEscrowsInput = zod_1.z.object({
12
+ address: zod_1.z.string().regex(/^0x[a-fA-F0-9]{40}$/, 'Invalid Ethereum address'),
23
13
  });
24
- exports.getEscrowSchema = zod_1.z.object({
25
- escrowId: zod_1.z.string().describe('Escrow ID'),
26
- });
27
- exports.listEscrowsSchema = zod_1.z.object({
28
- creator: zod_1.z.string().optional().describe('Filter by creator address'),
29
- provider: zod_1.z.string().optional().describe('Filter by provider address'),
30
- status: zod_1.z.enum(['pending', 'active', 'released', 'disputed', 'refunded']).optional(),
31
- limit: zod_1.z.number().default(20),
32
- });
33
- async function createEscrow(params, client) {
34
- const account = client.getAccount();
35
- const walletClient = client.getWalletClient();
36
- const publicClient = client.getPublicClient();
37
- const contracts = client.getContracts();
38
- // Parse amount
39
- const amountBigInt = client.parseUSDC(params.amount);
40
- // Parse timeout
41
- let timeoutMs = 7 * 24 * 60 * 60 * 1000; // Default 7 days
42
- if (params.terms?.timeout) {
43
- timeoutMs = parseDuration(params.terms.timeout);
44
- }
45
- try {
46
- // Step 1: Approve USDC spending by escrow contract
47
- const approveHash = await walletClient.writeContract({
48
- address: contracts.usdc,
49
- abi: contracts_1.USDC_ABI,
50
- functionName: 'approve',
51
- args: [contracts.escrow, amountBigInt],
52
- account,
53
- });
54
- await publicClient.waitForTransactionReceipt({ hash: approveHash });
55
- // Step 2: Create escrow
56
- const description = JSON.stringify(params.metadata || {});
57
- const hash = await walletClient.writeContract({
58
- address: contracts.escrow,
59
- abi: contracts_1.ESCROW_ABI,
60
- functionName: 'createEscrow',
61
- args: [params.to, amountBigInt, contracts.usdc, description],
62
- account,
63
- });
64
- // Wait for transaction confirmation
65
- const receipt = await publicClient.waitForTransactionReceipt({ hash });
66
- // Parse escrow ID from event logs
67
- let escrowId = '0';
68
- if (receipt.logs && receipt.logs.length > 0) {
69
- // Look for EscrowCreated event - escrowId is first indexed parameter
70
- const escrowCreatedLog = receipt.logs.find((log) => log.topics && log.topics.length > 1);
71
- if (escrowCreatedLog && escrowCreatedLog.topics) {
72
- escrowId = BigInt(escrowCreatedLog.topics[1]).toString();
73
- }
74
- }
75
- return {
76
- escrowId,
77
- transactionHash: hash,
78
- amount: params.amount,
79
- currency: params.currency,
80
- releaseAt: Date.now() + timeoutMs,
81
- status: 'active',
82
- };
83
- }
84
- catch (error) {
85
- throw new Error(`Failed to create escrow: ${error.message}`);
86
- }
87
- }
88
- async function releaseEscrow(params, client) {
89
- const account = client.getAccount();
90
- const walletClient = client.getWalletClient();
91
- const publicClient = client.getPublicClient();
92
- const contracts = client.getContracts();
14
+ exports.getEscrowTool = {
15
+ name: 'paylobster_get_escrow',
16
+ description: 'Get details for a specific escrow by ID',
17
+ inputSchema: {
18
+ type: 'object',
19
+ properties: {
20
+ escrowId: {
21
+ type: 'string',
22
+ description: 'Escrow ID (numeric string)',
23
+ },
24
+ },
25
+ required: ['escrowId'],
26
+ },
27
+ };
28
+ exports.listEscrowsTool = {
29
+ name: 'paylobster_list_escrows',
30
+ description: 'List all escrows for a given address',
31
+ inputSchema: {
32
+ type: 'object',
33
+ properties: {
34
+ address: {
35
+ type: 'string',
36
+ description: 'Ethereum address to list escrows for',
37
+ },
38
+ },
39
+ required: ['address'],
40
+ },
41
+ };
42
+ const ESCROW_STATUS = ['Pending', 'Active', 'Released', 'Refunded', 'Disputed'];
43
+ async function handleGetEscrow(input, contracts) {
93
44
  try {
94
- // Get escrow details first
45
+ const params = GetEscrowInput.parse(input);
95
46
  const escrowId = BigInt(params.escrowId);
96
- const [sender, recipient, amount, token, status] = await publicClient.readContract({
97
- address: contracts.escrow,
98
- abi: contracts_1.ESCROW_ABI,
99
- functionName: 'getEscrow',
100
- args: [escrowId],
101
- });
102
- if (status !== 1) { // 1 = active status
103
- throw new Error(`Escrow ${params.escrowId} is not active`);
104
- }
105
- // Release escrow
106
- const hash = await walletClient.writeContract({
107
- address: contracts.escrow,
108
- abi: contracts_1.ESCROW_ABI,
109
- functionName: 'releaseEscrow',
110
- args: [escrowId],
111
- account,
112
- });
113
- await publicClient.waitForTransactionReceipt({ hash });
114
- return {
115
- transactionHash: hash,
116
- released: client.formatUSDC(amount),
117
- recipient: recipient,
118
- };
119
- }
120
- catch (error) {
121
- throw new Error(`Failed to release escrow: ${error.message}`);
122
- }
123
- }
124
- async function getEscrow(params, client) {
125
- const publicClient = client.getPublicClient();
126
- const contracts = client.getContracts();
127
- try {
128
- const escrowId = BigInt(params.escrowId);
129
- const [sender, recipient, amount, token, status] = await publicClient.readContract({
130
- address: contracts.escrow,
131
- abi: contracts_1.ESCROW_ABI,
132
- functionName: 'getEscrow',
133
- args: [escrowId],
134
- });
135
- // Map contract status (uint8) to string status
136
- const statusMap = {
137
- 0: 'pending',
138
- 1: 'active',
139
- 2: 'released',
140
- 3: 'disputed',
141
- 4: 'refunded',
142
- };
47
+ const escrow = await contracts.getEscrow(escrowId);
143
48
  return {
144
49
  escrowId: params.escrowId,
145
- from: sender,
146
- to: recipient,
147
- amount: client.formatUSDC(amount),
148
- currency: 'USDC',
149
- status: statusMap[status] || 'pending',
150
- createdAt: Date.now(), // Would come from creation event
151
- releaseAt: undefined,
152
- releasedAt: status === 2 ? Date.now() : undefined,
50
+ sender: escrow.sender,
51
+ recipient: escrow.recipient,
52
+ amount: (0, viem_1.formatUnits)(escrow.amount, 6),
53
+ token: escrow.token,
54
+ status: ESCROW_STATUS[escrow.status] || 'Unknown',
55
+ rawStatus: escrow.status,
153
56
  };
154
57
  }
155
58
  catch (error) {
156
- throw new Error(`Failed to fetch escrow: ${error.message}`);
59
+ if (error instanceof zod_1.z.ZodError) {
60
+ throw {
61
+ code: 'ERR_INVALID_INPUT',
62
+ message: 'Invalid input parameters',
63
+ details: error.errors,
64
+ retryable: false,
65
+ };
66
+ }
67
+ throw {
68
+ code: 'ERR_NETWORK_ERROR',
69
+ message: error instanceof Error ? error.message : 'Failed to fetch escrow',
70
+ retryable: true,
71
+ };
157
72
  }
158
73
  }
159
- async function listEscrows(params, client) {
160
- const publicClient = client.getPublicClient();
161
- const contracts = client.getContracts();
74
+ async function handleListEscrows(input, contracts) {
162
75
  try {
163
- // Get EscrowCreated events
164
- const latestBlock = await publicClient.getBlockNumber();
165
- const fromBlock = latestBlock - BigInt(10000); // Last ~10k blocks
166
- const logs = await publicClient.getLogs({
167
- address: contracts.escrow,
168
- event: contracts_1.ESCROW_ABI.find(e => e.type === 'event' && e.name === 'EscrowCreated'),
169
- fromBlock,
170
- toBlock: 'latest',
171
- });
172
- // Parse logs into escrow data
173
- let escrows = [];
174
- for (const log of logs) {
175
- const { escrowId, sender, recipient, amount } = log.args;
176
- // Apply filters
177
- if (params.creator && sender.toLowerCase() !== params.creator.toLowerCase()) {
178
- continue;
179
- }
180
- if (params.provider && recipient.toLowerCase() !== params.provider.toLowerCase()) {
181
- continue;
182
- }
183
- // Fetch full escrow details
76
+ const params = ListEscrowsInput.parse(input);
77
+ const address = params.address;
78
+ // Get count of escrows for this address
79
+ const count = await contracts.getUserTransactionCount(address);
80
+ // Fetch details for recent escrows (up to 10)
81
+ const limit = Math.min(Number(count), 10);
82
+ const escrows = [];
83
+ for (let i = 0; i < limit; i++) {
184
84
  try {
185
- const [_, __, amountFull, token, status] = await publicClient.readContract({
186
- address: contracts.escrow,
187
- abi: contracts_1.ESCROW_ABI,
188
- functionName: 'getEscrow',
189
- args: [escrowId],
190
- });
191
- const statusMap = {
192
- 0: 'pending',
193
- 1: 'active',
194
- 2: 'released',
195
- 3: 'disputed',
196
- 4: 'refunded',
197
- };
198
- const escrowStatus = statusMap[status] || 'pending';
199
- // Apply status filter
200
- if (params.status && escrowStatus !== params.status) {
201
- continue;
85
+ const escrowId = BigInt(i);
86
+ const escrow = await contracts.getEscrow(escrowId);
87
+ // Only include if this address is involved
88
+ if (escrow.sender === address || escrow.recipient === address) {
89
+ escrows.push({
90
+ escrowId: i.toString(),
91
+ sender: escrow.sender,
92
+ recipient: escrow.recipient,
93
+ amount: (0, viem_1.formatUnits)(escrow.amount, 6),
94
+ token: escrow.token,
95
+ status: ESCROW_STATUS[escrow.status] || 'Unknown',
96
+ });
202
97
  }
203
- escrows.push({
204
- escrowId: escrowId.toString(),
205
- from: sender,
206
- to: recipient,
207
- amount: client.formatUSDC(amountFull),
208
- currency: 'USDC',
209
- status: escrowStatus,
210
- createdAt: Date.now(), // Would parse from block timestamp
211
- });
212
98
  }
213
- catch (e) {
214
- // Skip escrows that fail to fetch
99
+ catch (err) {
100
+ // Skip escrows that don't exist or can't be read
215
101
  continue;
216
102
  }
217
103
  }
218
- // Sort by creation (most recent first) and limit
219
- escrows = escrows.slice(0, params.limit);
220
104
  return {
105
+ address,
106
+ totalCount: count.toString(),
221
107
  escrows,
222
- total: escrows.length,
108
+ note: escrows.length < Number(count) ? 'Showing most recent 10 escrows' : undefined,
223
109
  };
224
110
  }
225
111
  catch (error) {
226
- throw new Error(`Failed to list escrows: ${error.message}`);
112
+ if (error instanceof zod_1.z.ZodError) {
113
+ throw {
114
+ code: 'ERR_INVALID_INPUT',
115
+ message: 'Invalid input parameters',
116
+ details: error.errors,
117
+ retryable: false,
118
+ };
119
+ }
120
+ throw {
121
+ code: 'ERR_NETWORK_ERROR',
122
+ message: error instanceof Error ? error.message : 'Failed to list escrows',
123
+ retryable: true,
124
+ };
227
125
  }
228
126
  }
229
- // Helper function to parse ISO 8601 duration
230
- function parseDuration(duration) {
231
- // Simple parser for P{n}D (days), P{n}H (hours), P{n}M (minutes)
232
- const days = duration.match(/P(\d+)D/);
233
- const hours = duration.match(/PT?(\d+)H/);
234
- const minutes = duration.match(/PT?(\d+)M/);
235
- let ms = 0;
236
- if (days)
237
- ms += parseInt(days[1]) * 24 * 60 * 60 * 1000;
238
- if (hours)
239
- ms += parseInt(hours[1]) * 60 * 60 * 1000;
240
- if (minutes)
241
- ms += parseInt(minutes[1]) * 60 * 1000;
242
- return ms || 7 * 24 * 60 * 60 * 1000; // Default 7 days
243
- }
244
127
  //# sourceMappingURL=escrow.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"escrow.js","sourceRoot":"","sources":["../../src/tools/escrow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"escrow.js","sourceRoot":"","sources":["../../src/tools/escrow.ts"],"names":[],"mappings":"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"}
@@ -1,51 +1,17 @@
1
- import { z } from 'zod';
2
- import { ContractClient } from '../utils/contracts';
3
- import { ReputationData } from '../types';
4
- export declare const getReputationSchema: z.ZodObject<{
5
- address: z.ZodString;
6
- }, "strip", z.ZodTypeAny, {
7
- address: string;
8
- }, {
9
- address: string;
10
- }>;
11
- export declare const registerAgentSchema: z.ZodObject<{
12
- name: z.ZodString;
13
- metadata: z.ZodOptional<z.ZodObject<{
14
- description: z.ZodOptional<z.ZodString>;
15
- website: z.ZodOptional<z.ZodString>;
16
- contact: z.ZodOptional<z.ZodString>;
17
- }, "strip", z.ZodTypeAny, {
18
- description?: string | undefined;
19
- website?: string | undefined;
20
- contact?: string | undefined;
21
- }, {
22
- description?: string | undefined;
23
- website?: string | undefined;
24
- contact?: string | undefined;
25
- }>>;
26
- stake: z.ZodString;
27
- }, "strip", z.ZodTypeAny, {
1
+ import type { ContractsClient } from '../lib/contracts.js';
2
+ export declare const getReputationTool: {
28
3
  name: string;
29
- stake: string;
30
- metadata?: {
31
- description?: string | undefined;
32
- website?: string | undefined;
33
- contact?: string | undefined;
34
- } | undefined;
35
- }, {
36
- name: string;
37
- stake: string;
38
- metadata?: {
39
- description?: string | undefined;
40
- website?: string | undefined;
41
- contact?: string | undefined;
42
- } | undefined;
43
- }>;
44
- export declare function getReputation(params: z.infer<typeof getReputationSchema>, client: ContractClient): Promise<ReputationData>;
45
- export declare function registerAgent(params: z.infer<typeof registerAgentSchema>, client: ContractClient): Promise<{
46
- address: string;
47
- transactionHash: string;
48
- blockNumber: number;
49
- identityId: string;
50
- }>;
4
+ description: string;
5
+ inputSchema: {
6
+ type: string;
7
+ properties: {
8
+ address: {
9
+ type: string;
10
+ description: string;
11
+ };
12
+ };
13
+ required: string[];
14
+ };
15
+ };
16
+ export declare function handleGetReputation(input: unknown, contracts: ContractsClient): Promise<object>;
51
17
  //# sourceMappingURL=reputation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"reputation.d.ts","sourceRoot":"","sources":["../../src/tools/reputation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,cAAc,EAAgC,MAAM,oBAAoB,CAAC;AAClF,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C,eAAO,MAAM,mBAAmB;;;;;;EAE9B,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQ9B,CAAC;AAEH,wBAAsB,aAAa,CACjC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,EAC3C,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,cAAc,CAAC,CAoEzB;AAED,wBAAsB,aAAa,CACjC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,EAC3C,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC;IACT,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC,CA0CD"}
1
+ {"version":3,"file":"reputation.d.ts","sourceRoot":"","sources":["../../src/tools/reputation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAM3D,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;CAa7B,CAAC;AAEF,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,eAAe,GACzB,OAAO,CAAC,MAAM,CAAC,CA0CjB"}
@@ -1,125 +1,63 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.registerAgentSchema = exports.getReputationSchema = void 0;
4
- exports.getReputation = getReputation;
5
- exports.registerAgent = registerAgent;
3
+ exports.getReputationTool = void 0;
4
+ exports.handleGetReputation = handleGetReputation;
6
5
  const zod_1 = require("zod");
7
- const contracts_1 = require("../utils/contracts");
8
- exports.getReputationSchema = zod_1.z.object({
9
- address: zod_1.z.string().describe('Ethereum address'),
6
+ const GetReputationInput = zod_1.z.object({
7
+ address: zod_1.z.string().regex(/^0x[a-fA-F0-9]{40}$/, 'Invalid Ethereum address'),
10
8
  });
11
- exports.registerAgentSchema = zod_1.z.object({
12
- name: zod_1.z.string().describe('Agent name'),
13
- metadata: zod_1.z.object({
14
- description: zod_1.z.string().optional(),
15
- website: zod_1.z.string().optional(),
16
- contact: zod_1.z.string().optional(),
17
- }).optional(),
18
- stake: zod_1.z.string().describe('USDC amount to stake (minimum 100)'),
19
- });
20
- async function getReputation(params, client) {
9
+ exports.getReputationTool = {
10
+ name: 'paylobster_get_reputation',
11
+ description: 'Get reputation score and trust metrics for any agent address on PayLobster',
12
+ inputSchema: {
13
+ type: 'object',
14
+ properties: {
15
+ address: {
16
+ type: 'string',
17
+ description: 'Ethereum address of the agent',
18
+ },
19
+ },
20
+ required: ['address'],
21
+ },
22
+ };
23
+ async function handleGetReputation(input, contracts) {
21
24
  try {
22
- const publicClient = client.getPublicClient();
23
- const contracts = client.getContracts();
25
+ const params = GetReputationInput.parse(input);
24
26
  const address = params.address;
25
- // Get identity info
26
- const [name, tokenId, registered] = await publicClient.readContract({
27
- address: contracts.identity,
28
- abi: contracts_1.IDENTITY_ABI,
29
- functionName: 'getAgentInfo',
30
- args: [address],
31
- });
32
- // Get reputation score and trust vector
33
- const [reputationScore, trustVector] = await publicClient.readContract({
34
- address: contracts.reputation,
35
- abi: contracts_1.REPUTATION_ABI,
36
- functionName: 'getReputation',
37
- args: [address],
38
- });
39
- // Convert on-chain score (0-100) to 0-5 rating
40
- const score = Number(reputationScore) / 20;
41
- // Note: Additional metrics like totalJobs, completedJobs would come from event indexing
42
- // For now, derive basic stats from what we have
27
+ const [reputation, agentInfo] = await Promise.all([
28
+ contracts.getReputation(address),
29
+ contracts.getAgentInfo(address),
30
+ ]);
31
+ // Convert score (0-5000) to 0-5 scale
32
+ const normalizedScore = Number(reputation.score) / 1000;
43
33
  return {
44
34
  address,
45
35
  reputation: {
46
- score,
47
- totalJobs: Number(trustVector), // trustVector can represent total interactions
48
- completedJobs: Math.floor(Number(trustVector) * 0.95), // Estimate 95% completion
49
- disputeRate: 5 - (score * 0.8), // Inverse relationship with score
50
- verified: registered,
36
+ score: normalizedScore,
37
+ trustVector: reputation.trustVector.toString(),
38
+ verified: agentInfo.registered,
51
39
  },
52
- history: {
53
- recentJobs: [], // Would come from event indexing
54
- badges: registered ? ['verified'] : [],
55
- },
56
- onChainData: {
57
- registeredSince: registered ? Date.now() - 365 * 86400000 : 0, // Would come from registration event
58
- totalVolume: '0.00', // Would come from escrow event aggregation
59
- activeServices: 0, // Would come from service registration events
40
+ agentInfo: {
41
+ name: agentInfo.name || 'Unknown',
42
+ tokenId: agentInfo.tokenId.toString(),
43
+ registered: agentInfo.registered,
60
44
  },
61
45
  };
62
46
  }
63
47
  catch (error) {
64
- // Return default reputation if contract read fails
65
- return {
66
- address: params.address,
67
- reputation: {
68
- score: 0,
69
- totalJobs: 0,
70
- completedJobs: 0,
71
- disputeRate: 0,
72
- verified: false,
73
- },
74
- history: {
75
- recentJobs: [],
76
- badges: [],
77
- },
78
- onChainData: {
79
- registeredSince: 0,
80
- totalVolume: '0.00',
81
- activeServices: 0,
82
- },
48
+ if (error instanceof zod_1.z.ZodError) {
49
+ throw {
50
+ code: 'ERR_INVALID_INPUT',
51
+ message: 'Invalid input parameters',
52
+ details: error.errors,
53
+ retryable: false,
54
+ };
55
+ }
56
+ throw {
57
+ code: 'ERR_NETWORK_ERROR',
58
+ message: error instanceof Error ? error.message : 'Failed to fetch reputation',
59
+ retryable: true,
83
60
  };
84
61
  }
85
62
  }
86
- async function registerAgent(params, client) {
87
- const account = client.getAccount();
88
- const walletClient = client.getWalletClient();
89
- const publicClient = client.getPublicClient();
90
- const contracts = client.getContracts();
91
- // Validate stake amount
92
- const stakeAmount = parseFloat(params.stake);
93
- if (stakeAmount < 100) {
94
- throw new Error('Minimum stake is 100 USDC');
95
- }
96
- try {
97
- // Prepare agent URI and capabilities JSON
98
- const agentURI = params.metadata?.website || '';
99
- const capabilities = JSON.stringify({
100
- name: params.name,
101
- description: params.metadata?.description || '',
102
- contact: params.metadata?.contact || '',
103
- });
104
- // Call identity contract register()
105
- const hash = await walletClient.writeContract({
106
- address: contracts.identity,
107
- abi: contracts_1.IDENTITY_ABI,
108
- functionName: 'register',
109
- args: [agentURI, params.name, capabilities],
110
- account,
111
- });
112
- // Wait for transaction confirmation
113
- const receipt = await publicClient.waitForTransactionReceipt({ hash });
114
- return {
115
- address: account.address,
116
- transactionHash: hash,
117
- blockNumber: Number(receipt.blockNumber),
118
- identityId: hash, // In production, parse from event logs
119
- };
120
- }
121
- catch (error) {
122
- throw new Error(`Failed to register agent: ${error.message}`);
123
- }
124
- }
125
63
  //# sourceMappingURL=reputation.js.map