@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 +1 @@
1
- {"version":3,"file":"reputation.js","sourceRoot":"","sources":["../../src/tools/reputation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reputation.js","sourceRoot":"","sources":["../../src/tools/reputation.ts"],"names":[],"mappings":";;;AAuBA,kDA6CC;AApED,6BAAwB;AAIxB,MAAM,kBAAkB,GAAG,OAAC,CAAC,MAAM,CAAC;IAClC,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,qBAAqB,EAAE,0BAA0B,CAAC;CAC7E,CAAC,CAAC;AAEU,QAAA,iBAAiB,GAAG;IAC/B,IAAI,EAAE,2BAA2B;IACjC,WAAW,EAAE,4EAA4E;IACzF,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,+BAA+B;aAC7C;SACF;QACD,QAAQ,EAAE,CAAC,SAAS,CAAC;KACtB;CACF,CAAC;AAEK,KAAK,UAAU,mBAAmB,CACvC,KAAc,EACd,SAA0B;IAE1B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,MAAM,CAAC,OAAkB,CAAC;QAE1C,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAChD,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC;YAChC,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC;SAChC,CAAC,CAAC;QAEH,sCAAsC;QACtC,MAAM,eAAe,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;QAExD,OAAO;YACL,OAAO;YACP,UAAU,EAAE;gBACV,KAAK,EAAE,eAAe;gBACtB,WAAW,EAAE,UAAU,CAAC,WAAW,CAAC,QAAQ,EAAE;gBAC9C,QAAQ,EAAE,SAAS,CAAC,UAAU;aAC/B;YACD,SAAS,EAAE;gBACT,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,SAAS;gBACjC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE;gBACrC,UAAU,EAAE,SAAS,CAAC,UAAU;aACjC;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,OAAC,CAAC,QAAQ,EAAE,CAAC;YAChC,MAAM;gBACJ,IAAI,EAAE,mBAAmB;gBACzB,OAAO,EAAE,0BAA0B;gBACnC,OAAO,EAAE,KAAK,CAAC,MAAM;gBACrB,SAAS,EAAE,KAAK;aACjB,CAAC;QACJ,CAAC;QAED,MAAM;YACJ,IAAI,EAAE,mBAAmB;YACzB,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,4BAA4B;YAC9E,SAAS,EAAE,IAAI;SAChB,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -1,55 +1,31 @@
1
- import { z } from 'zod';
2
- import { ContractClient } from '../utils/contracts';
3
- import { ServiceListing } from '../types';
4
- export declare const searchServicesSchema: z.ZodObject<{
5
- query: z.ZodOptional<z.ZodString>;
6
- filters: z.ZodOptional<z.ZodObject<{
7
- category: z.ZodOptional<z.ZodString>;
8
- capabilities: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
9
- maxPrice: z.ZodOptional<z.ZodString>;
10
- minReputation: z.ZodOptional<z.ZodNumber>;
11
- currency: z.ZodDefault<z.ZodString>;
12
- }, "strip", z.ZodTypeAny, {
13
- currency: string;
14
- capabilities?: string[] | undefined;
15
- category?: string | undefined;
16
- maxPrice?: string | undefined;
17
- minReputation?: number | undefined;
18
- }, {
19
- capabilities?: string[] | undefined;
20
- category?: string | undefined;
21
- maxPrice?: string | undefined;
22
- minReputation?: number | undefined;
23
- currency?: string | undefined;
24
- }>>;
25
- sort: z.ZodDefault<z.ZodEnum<["price", "reputation", "relevance"]>>;
26
- limit: z.ZodDefault<z.ZodNumber>;
27
- }, "strip", z.ZodTypeAny, {
28
- sort: "price" | "reputation" | "relevance";
29
- limit: number;
30
- query?: string | undefined;
31
- filters?: {
32
- currency: string;
33
- capabilities?: string[] | undefined;
34
- category?: string | undefined;
35
- maxPrice?: string | undefined;
36
- minReputation?: number | undefined;
37
- } | undefined;
38
- }, {
39
- sort?: "price" | "reputation" | "relevance" | undefined;
40
- limit?: number | undefined;
41
- query?: string | undefined;
42
- filters?: {
43
- capabilities?: string[] | undefined;
44
- category?: string | undefined;
45
- maxPrice?: string | undefined;
46
- minReputation?: number | undefined;
47
- currency?: string | undefined;
48
- } | undefined;
49
- }>;
50
- export declare function searchServices(params: z.infer<typeof searchServicesSchema>, client: ContractClient): Promise<{
51
- services: ServiceListing[];
52
- total: number;
53
- hasMore: boolean;
54
- }>;
1
+ export declare const searchServicesTool: {
2
+ name: string;
3
+ description: string;
4
+ inputSchema: {
5
+ type: string;
6
+ properties: {
7
+ query: {
8
+ type: string;
9
+ description: string;
10
+ };
11
+ category: {
12
+ type: string;
13
+ description: string;
14
+ };
15
+ maxPrice: {
16
+ type: string;
17
+ description: string;
18
+ };
19
+ minReputation: {
20
+ type: string;
21
+ description: string;
22
+ };
23
+ limit: {
24
+ type: string;
25
+ description: string;
26
+ };
27
+ };
28
+ };
29
+ };
30
+ export declare function handleSearchServices(input: unknown): Promise<object>;
55
31
  //# sourceMappingURL=search.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAW/B,CAAC;AAEH,wBAAsB,cAAc,CAClC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,EAC5C,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC;IAAE,QAAQ,EAAE,cAAc,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CA6F1E"}
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4B9B,CAAC;AAwDF,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAqD1E"}
@@ -1,103 +1,140 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.searchServicesSchema = void 0;
4
- exports.searchServices = searchServices;
3
+ exports.searchServicesTool = void 0;
4
+ exports.handleSearchServices = handleSearchServices;
5
5
  const zod_1 = require("zod");
6
- exports.searchServicesSchema = zod_1.z.object({
7
- query: zod_1.z.string().optional().describe('Semantic search query'),
8
- filters: zod_1.z.object({
9
- category: zod_1.z.string().optional(),
10
- capabilities: zod_1.z.array(zod_1.z.string()).optional(),
11
- maxPrice: zod_1.z.string().optional(),
12
- minReputation: zod_1.z.number().optional(),
13
- currency: zod_1.z.string().default('USDC'),
14
- }).optional(),
15
- sort: zod_1.z.enum(['price', 'reputation', 'relevance']).default('relevance'),
16
- limit: zod_1.z.number().default(20),
6
+ const SearchServicesInput = zod_1.z.object({
7
+ query: zod_1.z.string().optional(),
8
+ category: zod_1.z.string().optional(),
9
+ maxPrice: zod_1.z.string().optional(),
10
+ minReputation: zod_1.z.number().min(0).max(5).optional(),
11
+ limit: zod_1.z.number().min(1).max(100).optional().default(20),
17
12
  });
18
- async function searchServices(params, client) {
19
- // Mock implementation - in production would query indexer/subgraph
20
- const mockServices = [
21
- {
22
- id: '1',
23
- provider: '0x1234567890123456789012345678901234567890',
24
- name: 'AI Code Reviewer',
25
- description: 'Professional code review service for TypeScript, Rust, and Solidity',
26
- category: 'development',
27
- capabilities: ['code-review', 'typescript', 'rust', 'solidity'],
28
- pricing: {
29
- amount: '5.00',
30
- currency: 'USDC',
13
+ exports.searchServicesTool = {
14
+ name: 'paylobster_search_services',
15
+ description: 'Search for AI agent services on PayLobster (returns mock data - ServiceRegistry not yet deployed)',
16
+ inputSchema: {
17
+ type: 'object',
18
+ properties: {
19
+ query: {
20
+ type: 'string',
21
+ description: 'Search query (optional)',
31
22
  },
32
- reputation: {
33
- score: 4.8,
34
- totalJobs: 156,
23
+ category: {
24
+ type: 'string',
25
+ description: 'Service category filter (optional)',
35
26
  },
36
- },
37
- {
38
- id: '2',
39
- provider: '0x2345678901234567890123456789012345678901',
40
- name: 'Smart Contract Auditor',
41
- description: 'Security audit service for Ethereum smart contracts',
42
- category: 'security',
43
- capabilities: ['audit', 'security', 'solidity', 'foundry'],
44
- pricing: {
45
- amount: '50.00',
46
- currency: 'USDC',
47
- },
48
- reputation: {
49
- score: 4.9,
50
- totalJobs: 89,
27
+ maxPrice: {
28
+ type: 'string',
29
+ description: 'Maximum price in USDC (optional)',
51
30
  },
52
- },
53
- {
54
- id: '3',
55
- provider: '0x3456789012345678901234567890123456789012',
56
- name: 'Documentation Writer',
57
- description: 'Technical documentation and API reference generation',
58
- category: 'documentation',
59
- capabilities: ['docs', 'api', 'markdown', 'technical-writing'],
60
- pricing: {
61
- amount: '10.00',
62
- currency: 'USDC',
31
+ minReputation: {
32
+ type: 'number',
33
+ description: 'Minimum reputation score 0-5 (optional)',
63
34
  },
64
- reputation: {
65
- score: 4.6,
66
- totalJobs: 234,
35
+ limit: {
36
+ type: 'number',
37
+ description: 'Maximum number of results (default: 20, max: 100)',
67
38
  },
68
39
  },
69
- ];
70
- // Apply filters
71
- let filtered = mockServices;
72
- if (params.filters) {
73
- if (params.filters.category) {
74
- filtered = filtered.filter(s => s.category === params.filters.category);
40
+ },
41
+ };
42
+ // Mock data until ServiceRegistry is deployed
43
+ const MOCK_SERVICES = [
44
+ {
45
+ id: 'service-001',
46
+ provider: '0x1234567890123456789012345678901234567890',
47
+ name: 'TypeScript Code Reviewer',
48
+ description: 'Expert code review for TypeScript projects with security and performance analysis',
49
+ category: 'code-review',
50
+ price: '10.00',
51
+ currency: 'USDC',
52
+ reputation: 4.8,
53
+ },
54
+ {
55
+ id: 'service-002',
56
+ provider: '0x2345678901234567890123456789012345678901',
57
+ name: 'Rust Security Auditor',
58
+ description: 'Smart contract and Rust code security audits',
59
+ category: 'security-audit',
60
+ price: '50.00',
61
+ currency: 'USDC',
62
+ reputation: 4.9,
63
+ },
64
+ {
65
+ id: 'service-003',
66
+ provider: '0x3456789012345678901234567890123456789012',
67
+ name: 'AI Model Training',
68
+ description: 'Fine-tune and train custom AI models on your data',
69
+ category: 'ai-training',
70
+ price: '100.00',
71
+ currency: 'USDC',
72
+ reputation: 4.5,
73
+ },
74
+ {
75
+ id: 'service-004',
76
+ provider: '0x4567890123456789012345678901234567890123',
77
+ name: 'Data Labeling Service',
78
+ description: 'High-quality data labeling for ML training',
79
+ category: 'data-labeling',
80
+ price: '5.00',
81
+ currency: 'USDC',
82
+ reputation: 4.7,
83
+ },
84
+ {
85
+ id: 'service-005',
86
+ provider: '0x5678901234567890123456789012345678901234',
87
+ name: 'Python Code Generator',
88
+ description: 'Generate production-ready Python code from specifications',
89
+ category: 'code-generation',
90
+ price: '15.00',
91
+ currency: 'USDC',
92
+ reputation: 4.6,
93
+ },
94
+ ];
95
+ async function handleSearchServices(input) {
96
+ try {
97
+ const params = SearchServicesInput.parse(input);
98
+ // Filter mock services based on criteria
99
+ let filtered = [...MOCK_SERVICES];
100
+ if (params.category) {
101
+ filtered = filtered.filter(s => s.category === params.category);
75
102
  }
76
- if (params.filters.maxPrice) {
77
- const maxPrice = parseFloat(params.filters.maxPrice);
78
- filtered = filtered.filter(s => parseFloat(s.pricing.amount) <= maxPrice);
103
+ if (params.maxPrice) {
104
+ const maxPrice = parseFloat(params.maxPrice);
105
+ filtered = filtered.filter(s => parseFloat(s.price) <= maxPrice);
79
106
  }
80
- if (params.filters.minReputation !== undefined) {
81
- filtered = filtered.filter(s => s.reputation.score >= params.filters.minReputation);
107
+ if (params.minReputation !== undefined) {
108
+ filtered = filtered.filter(s => s.reputation >= params.minReputation);
82
109
  }
83
- if (params.filters.capabilities) {
84
- filtered = filtered.filter(s => params.filters.capabilities.some((cap) => s.capabilities.includes(cap)));
110
+ if (params.query) {
111
+ const queryLower = params.query.toLowerCase();
112
+ filtered = filtered.filter(s => s.name.toLowerCase().includes(queryLower) ||
113
+ s.description.toLowerCase().includes(queryLower));
85
114
  }
115
+ // Apply limit
116
+ const results = filtered.slice(0, params.limit);
117
+ return {
118
+ services: results,
119
+ total: results.length,
120
+ hasMore: filtered.length > results.length,
121
+ note: 'Mock data - ServiceRegistry contract not yet deployed on mainnet',
122
+ };
86
123
  }
87
- // Apply sorting
88
- if (params.sort === 'price') {
89
- filtered.sort((a, b) => parseFloat(a.pricing.amount) - parseFloat(b.pricing.amount));
90
- }
91
- else if (params.sort === 'reputation') {
92
- filtered.sort((a, b) => b.reputation.score - a.reputation.score);
124
+ catch (error) {
125
+ if (error instanceof zod_1.z.ZodError) {
126
+ throw {
127
+ code: 'ERR_INVALID_INPUT',
128
+ message: 'Invalid input parameters',
129
+ details: error.errors,
130
+ retryable: false,
131
+ };
132
+ }
133
+ throw {
134
+ code: 'ERR_UNKNOWN',
135
+ message: error instanceof Error ? error.message : 'Failed to search services',
136
+ retryable: false,
137
+ };
93
138
  }
94
- // Apply limit
95
- const limit = params.limit || 20;
96
- const limited = filtered.slice(0, limit);
97
- return {
98
- services: limited,
99
- total: filtered.length,
100
- hasMore: filtered.length > limit,
101
- };
102
139
  }
103
140
  //# sourceMappingURL=search.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ #!/usr/bin/env tsx
2
+
3
+ /**
4
+ * Test script to verify the MCP server loads correctly
5
+ * Run with: tsx examples/test-server.ts
6
+ */
7
+
8
+ import { PayLobsterMCPServer } from '../src/server.js';
9
+
10
+ async function test() {
11
+ console.log('🧪 Testing PayLobster MCP Server initialization...\n');
12
+
13
+ // Test 1: Initialize with Sepolia config
14
+ console.log('✓ Creating server instance (Sepolia testnet)');
15
+ const server = new PayLobsterMCPServer({
16
+ network: 'sepolia',
17
+ rpcUrl: 'https://sepolia.base.org',
18
+ });
19
+
20
+ console.log('✓ Server created successfully');
21
+
22
+ // Test 2: Get MCP Server instance
23
+ const mcpServer = server.getServer();
24
+ console.log('✓ MCP Server instance accessible');
25
+
26
+ console.log('\n✅ All tests passed!');
27
+ console.log('\nServer is ready to use. Configuration:');
28
+ console.log(' - Network: Sepolia (testnet)');
29
+ console.log(' - RPC: https://sepolia.base.org');
30
+ console.log('\nTo start the server with MCP protocol:');
31
+ console.log(' npm start');
32
+ console.log(' # or with env vars:');
33
+ console.log(' PAYLOBSTER_NETWORK=mainnet npm start');
34
+ }
35
+
36
+ test().catch(console.error);
@@ -0,0 +1,64 @@
1
+ #!/usr/bin/env tsx
2
+
3
+ /**
4
+ * Example script showing how to test individual MCP tools
5
+ * This demonstrates the tool call structure for manual testing
6
+ */
7
+
8
+ import { handleGetReputation } from '../src/tools/reputation.js';
9
+ import { handleGetBalance } from '../src/tools/balance.js';
10
+ import { handleGetAgent } from '../src/tools/agent.js';
11
+ import { handleSearchServices } from '../src/tools/search.js';
12
+ import { ContractsClient } from '../src/lib/contracts.js';
13
+
14
+ async function testTools() {
15
+ console.log('🧪 Testing PayLobster MCP Tools\n');
16
+
17
+ // Initialize contracts client
18
+ const contracts = new ContractsClient({
19
+ network: 'sepolia',
20
+ rpcUrl: 'https://sepolia.base.org',
21
+ });
22
+
23
+ // Test address (replace with a valid address on Sepolia)
24
+ const testAddress = '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb';
25
+
26
+ console.log('--- Test 1: Search Services (Mock Data) ---');
27
+ try {
28
+ const result = await handleSearchServices({
29
+ query: 'code review',
30
+ limit: 3,
31
+ });
32
+ console.log(JSON.stringify(result, null, 2));
33
+ } catch (error) {
34
+ console.error('Error:', error);
35
+ }
36
+
37
+ console.log('\n--- Test 2: Get Agent Info ---');
38
+ try {
39
+ const result = await handleGetAgent({ address: testAddress }, contracts);
40
+ console.log(JSON.stringify(result, null, 2));
41
+ } catch (error) {
42
+ console.error('Error:', error);
43
+ }
44
+
45
+ console.log('\n--- Test 3: Get Reputation ---');
46
+ try {
47
+ const result = await handleGetReputation({ address: testAddress }, contracts);
48
+ console.log(JSON.stringify(result, null, 2));
49
+ } catch (error) {
50
+ console.error('Error:', error);
51
+ }
52
+
53
+ console.log('\n--- Test 4: Get Balance ---');
54
+ try {
55
+ const result = await handleGetBalance({ address: testAddress }, contracts);
56
+ console.log(JSON.stringify(result, null, 2));
57
+ } catch (error) {
58
+ console.error('Error:', error);
59
+ }
60
+
61
+ console.log('\n✅ Tool testing complete!');
62
+ }
63
+
64
+ testTools().catch(console.error);
package/package.json CHANGED
@@ -1,36 +1,45 @@
1
1
  {
2
2
  "name": "@paylobster/mcp-server",
3
- "version": "1.3.0",
4
- "description": "MCP server for PayLobster agent payment infrastructure",
3
+ "version": "1.5.0",
4
+ "description": "Model Context Protocol server for PayLobster agent payment infrastructure",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "bin": {
8
- "paylobster-mcp-server": "dist/cli.js"
8
+ "paylobster-mcp": "dist/index.js"
9
9
  },
10
10
  "scripts": {
11
11
  "build": "tsc",
12
- "dev": "tsc --watch",
13
- "start": "node dist/cli.js",
14
- "test": "echo \"Tests not yet implemented\" && exit 0"
12
+ "dev": "tsx watch src/index.ts",
13
+ "start": "node dist/index.js",
14
+ "test": "jest",
15
+ "test:watch": "jest --watch",
16
+ "lint": "eslint src --ext .ts",
17
+ "clean": "rm -rf dist"
15
18
  },
16
19
  "keywords": [
17
20
  "mcp",
18
21
  "model-context-protocol",
19
22
  "paylobster",
20
- "agent-payments",
23
+ "ai-agents",
24
+ "payments",
21
25
  "blockchain",
22
- "escrow"
26
+ "base"
23
27
  ],
24
28
  "author": "PayLobster",
25
29
  "license": "MIT",
26
30
  "dependencies": {
27
31
  "@modelcontextprotocol/sdk": "^1.0.4",
28
32
  "viem": "^2.21.54",
29
- "zod": "^3.24.1",
30
- "dotenv": "^16.4.7"
33
+ "zod": "^3.24.1"
31
34
  },
32
35
  "devDependencies": {
33
- "@types/node": "^22.10.5",
36
+ "@types/node": "^20.17.10",
37
+ "@typescript-eslint/eslint-plugin": "^8.21.0",
38
+ "@typescript-eslint/parser": "^8.21.0",
39
+ "eslint": "^9.19.0",
40
+ "jest": "^29.7.0",
41
+ "ts-jest": "^29.2.6",
42
+ "tsx": "^4.19.2",
34
43
  "typescript": "^5.7.3"
35
44
  },
36
45
  "engines": {
@@ -0,0 +1,24 @@
1
+ import { PayLobsterMCPServer } from '../server';
2
+
3
+ describe('PayLobsterMCPServer', () => {
4
+ let server: PayLobsterMCPServer;
5
+
6
+ beforeEach(() => {
7
+ server = new PayLobsterMCPServer({
8
+ network: 'sepolia',
9
+ rpcUrl: 'https://sepolia.base.org',
10
+ });
11
+ });
12
+
13
+ test('should initialize with config', () => {
14
+ expect(server).toBeInstanceOf(PayLobsterMCPServer);
15
+ });
16
+
17
+ test('should have MCP server instance', () => {
18
+ const mcpServer = server.getServer();
19
+ expect(mcpServer).toBeDefined();
20
+ });
21
+
22
+ // Add more tests as needed
23
+ // Note: Full integration tests require a test RPC node
24
+ });
package/src/index.ts ADDED
@@ -0,0 +1,24 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { PayLobsterMCPServer } from './server.js';
4
+
5
+ async function main() {
6
+ const server = new PayLobsterMCPServer();
7
+ await server.start();
8
+
9
+ // Handle graceful shutdown
10
+ process.on('SIGINT', () => {
11
+ console.error('Shutting down...');
12
+ process.exit(0);
13
+ });
14
+
15
+ process.on('SIGTERM', () => {
16
+ console.error('Shutting down...');
17
+ process.exit(0);
18
+ });
19
+ }
20
+
21
+ main().catch((error) => {
22
+ console.error('Fatal error:', error);
23
+ process.exit(1);
24
+ });
@@ -0,0 +1,22 @@
1
+ import type { Address } from 'viem';
2
+
3
+ export interface MCPServerConfig {
4
+ network: 'mainnet' | 'sepolia';
5
+ rpcUrl?: string;
6
+ apiUrl?: string;
7
+ }
8
+
9
+ export function getConfig(): MCPServerConfig {
10
+ const network = (process.env.PAYLOBSTER_NETWORK || 'mainnet') as 'mainnet' | 'sepolia';
11
+
12
+ const defaultRpcUrls = {
13
+ mainnet: 'https://mainnet.base.org',
14
+ sepolia: 'https://sepolia.base.org',
15
+ };
16
+
17
+ return {
18
+ network,
19
+ rpcUrl: process.env.PAYLOBSTER_RPC_URL || defaultRpcUrls[network],
20
+ apiUrl: process.env.PAYLOBSTER_API_URL || 'https://paylobster.com',
21
+ };
22
+ }