@bosonprotocol/agentic-commerce 1.0.0-alpha.41

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 (202) hide show
  1. package/README.md +150 -0
  2. package/dist/boson/goat-sdk-plugin/index.d.ts +3 -0
  3. package/dist/boson/goat-sdk-plugin/index.d.ts.map +1 -0
  4. package/dist/boson/goat-sdk-plugin/index.js +7 -0
  5. package/dist/boson/goat-sdk-plugin/index.js.map +1 -0
  6. package/dist/boson/index.d.ts +3 -0
  7. package/dist/boson/index.d.ts.map +1 -0
  8. package/dist/boson/index.js +8 -0
  9. package/dist/boson/index.js.map +1 -0
  10. package/dist/boson/mcp-client/index.d.ts +293 -0
  11. package/dist/boson/mcp-client/index.d.ts.map +1 -0
  12. package/dist/boson/mcp-client/index.js +20 -0
  13. package/dist/boson/mcp-client/index.js.map +1 -0
  14. package/dist/boson/mcp-server/filters/disputeResolversFilter.d.ts +12 -0
  15. package/dist/boson/mcp-server/filters/disputeResolversFilter.d.ts.map +1 -0
  16. package/dist/boson/mcp-server/filters/disputeResolversFilter.js +24 -0
  17. package/dist/boson/mcp-server/filters/disputeResolversFilter.js.map +1 -0
  18. package/dist/boson/mcp-server/filters/disputesFilter.d.ts +12 -0
  19. package/dist/boson/mcp-server/filters/disputesFilter.d.ts.map +1 -0
  20. package/dist/boson/mcp-server/filters/disputesFilter.js +155 -0
  21. package/dist/boson/mcp-server/filters/disputesFilter.js.map +1 -0
  22. package/dist/boson/mcp-server/filters/exchangesFilter.d.ts +12 -0
  23. package/dist/boson/mcp-server/filters/exchangesFilter.d.ts.map +1 -0
  24. package/dist/boson/mcp-server/filters/exchangesFilter.js +139 -0
  25. package/dist/boson/mcp-server/filters/exchangesFilter.js.map +1 -0
  26. package/dist/boson/mcp-server/filters/fundsFilter.d.ts +12 -0
  27. package/dist/boson/mcp-server/filters/fundsFilter.d.ts.map +1 -0
  28. package/dist/boson/mcp-server/filters/fundsFilter.js +98 -0
  29. package/dist/boson/mcp-server/filters/fundsFilter.js.map +1 -0
  30. package/dist/boson/mcp-server/filters/offersFilter.d.ts +14 -0
  31. package/dist/boson/mcp-server/filters/offersFilter.d.ts.map +1 -0
  32. package/dist/boson/mcp-server/filters/offersFilter.js +265 -0
  33. package/dist/boson/mcp-server/filters/offersFilter.js.map +1 -0
  34. package/dist/boson/mcp-server/filters/productsFilter.d.ts +12 -0
  35. package/dist/boson/mcp-server/filters/productsFilter.d.ts.map +1 -0
  36. package/dist/boson/mcp-server/filters/productsFilter.js +30 -0
  37. package/dist/boson/mcp-server/filters/productsFilter.js.map +1 -0
  38. package/dist/boson/mcp-server/filters/sellersByAddressFilter.d.ts +11 -0
  39. package/dist/boson/mcp-server/filters/sellersByAddressFilter.d.ts.map +1 -0
  40. package/dist/boson/mcp-server/filters/sellersByAddressFilter.js +23 -0
  41. package/dist/boson/mcp-server/filters/sellersByAddressFilter.js.map +1 -0
  42. package/dist/boson/mcp-server/filters/sellersFilter.d.ts +12 -0
  43. package/dist/boson/mcp-server/filters/sellersFilter.d.ts.map +1 -0
  44. package/dist/boson/mcp-server/filters/sellersFilter.js +151 -0
  45. package/dist/boson/mcp-server/filters/sellersFilter.js.map +1 -0
  46. package/dist/boson/mcp-server/handlers/accounts.d.ts +12 -0
  47. package/dist/boson/mcp-server/handlers/accounts.d.ts.map +1 -0
  48. package/dist/boson/mcp-server/handlers/accounts.js +111 -0
  49. package/dist/boson/mcp-server/handlers/accounts.js.map +1 -0
  50. package/dist/boson/mcp-server/handlers/disputes.d.ts +12 -0
  51. package/dist/boson/mcp-server/handlers/disputes.d.ts.map +1 -0
  52. package/dist/boson/mcp-server/handlers/disputes.js +180 -0
  53. package/dist/boson/mcp-server/handlers/disputes.js.map +1 -0
  54. package/dist/boson/mcp-server/handlers/exchanges.d.ts +10 -0
  55. package/dist/boson/mcp-server/handlers/exchanges.d.ts.map +1 -0
  56. package/dist/boson/mcp-server/handlers/exchanges.js +113 -0
  57. package/dist/boson/mcp-server/handlers/exchanges.js.map +1 -0
  58. package/dist/boson/mcp-server/handlers/funds.d.ts +9 -0
  59. package/dist/boson/mcp-server/handlers/funds.d.ts.map +1 -0
  60. package/dist/boson/mcp-server/handlers/funds.js +92 -0
  61. package/dist/boson/mcp-server/handlers/funds.js.map +1 -0
  62. package/dist/boson/mcp-server/handlers/metaTx.d.ts +115 -0
  63. package/dist/boson/mcp-server/handlers/metaTx.d.ts.map +1 -0
  64. package/dist/boson/mcp-server/handlers/metaTx.js +180 -0
  65. package/dist/boson/mcp-server/handlers/metaTx.js.map +1 -0
  66. package/dist/boson/mcp-server/handlers/offers.d.ts +11 -0
  67. package/dist/boson/mcp-server/handlers/offers.d.ts.map +1 -0
  68. package/dist/boson/mcp-server/handlers/offers.js +161 -0
  69. package/dist/boson/mcp-server/handlers/offers.js.map +1 -0
  70. package/dist/boson/mcp-server/handlers/sdk.d.ts +17 -0
  71. package/dist/boson/mcp-server/handlers/sdk.d.ts.map +1 -0
  72. package/dist/boson/mcp-server/handlers/sdk.js +86 -0
  73. package/dist/boson/mcp-server/handlers/sdk.js.map +1 -0
  74. package/dist/boson/mcp-server/handlers/transactions.d.ts +9 -0
  75. package/dist/boson/mcp-server/handlers/transactions.d.ts.map +1 -0
  76. package/dist/boson/mcp-server/handlers/transactions.js +19 -0
  77. package/dist/boson/mcp-server/handlers/transactions.js.map +1 -0
  78. package/dist/boson/mcp-server/index.d.ts +13 -0
  79. package/dist/boson/mcp-server/index.d.ts.map +1 -0
  80. package/dist/boson/mcp-server/index.js +1029 -0
  81. package/dist/boson/mcp-server/index.js.map +1 -0
  82. package/dist/boson/mcp-server/schemas.d.ts +4 -0
  83. package/dist/boson/mcp-server/schemas.d.ts.map +1 -0
  84. package/dist/boson/mcp-server/schemas.js +43 -0
  85. package/dist/boson/mcp-server/schemas.js.map +1 -0
  86. package/dist/boson/mcp-server/validation.d.ts +597 -0
  87. package/dist/boson/mcp-server/validation.d.ts.map +1 -0
  88. package/dist/boson/mcp-server/validation.js +250 -0
  89. package/dist/boson/mcp-server/validation.js.map +1 -0
  90. package/dist/common/index.d.ts +7 -0
  91. package/dist/common/index.d.ts.map +1 -0
  92. package/dist/common/index.js +25 -0
  93. package/dist/common/index.js.map +1 -0
  94. package/dist/common/mcp-client/index.d.ts +463 -0
  95. package/dist/common/mcp-client/index.d.ts.map +1 -0
  96. package/dist/common/mcp-client/index.js +80 -0
  97. package/dist/common/mcp-client/index.js.map +1 -0
  98. package/dist/common/mcp-server/configLoader.d.ts +7 -0
  99. package/dist/common/mcp-server/configLoader.d.ts.map +1 -0
  100. package/dist/common/mcp-server/configLoader.js +48 -0
  101. package/dist/common/mcp-server/configLoader.js.map +1 -0
  102. package/dist/common/mcp-server/configValidation.d.ts +3 -0
  103. package/dist/common/mcp-server/configValidation.d.ts.map +1 -0
  104. package/dist/common/mcp-server/configValidation.js +24 -0
  105. package/dist/common/mcp-server/configValidation.js.map +1 -0
  106. package/dist/common/mcp-server/errorHandling.d.ts +25 -0
  107. package/dist/common/mcp-server/errorHandling.d.ts.map +1 -0
  108. package/dist/common/mcp-server/errorHandling.js +125 -0
  109. package/dist/common/mcp-server/errorHandling.js.map +1 -0
  110. package/dist/common/mcp-server/filterUtils.d.ts +11 -0
  111. package/dist/common/mcp-server/filterUtils.d.ts.map +1 -0
  112. package/dist/common/mcp-server/filterUtils.js +42 -0
  113. package/dist/common/mcp-server/filterUtils.js.map +1 -0
  114. package/dist/common/mcp-server/ipfs.d.ts +4 -0
  115. package/dist/common/mcp-server/ipfs.d.ts.map +1 -0
  116. package/dist/common/mcp-server/ipfs.js +12 -0
  117. package/dist/common/mcp-server/ipfs.js.map +1 -0
  118. package/dist/common/mcp-server/jsonSchemaToZodShape.d.ts +4 -0
  119. package/dist/common/mcp-server/jsonSchemaToZodShape.d.ts.map +1 -0
  120. package/dist/common/mcp-server/jsonSchemaToZodShape.js +40 -0
  121. package/dist/common/mcp-server/jsonSchemaToZodShape.js.map +1 -0
  122. package/dist/common/mcp-server/jsonUtils.d.ts +2 -0
  123. package/dist/common/mcp-server/jsonUtils.d.ts.map +1 -0
  124. package/dist/common/mcp-server/jsonUtils.js +7 -0
  125. package/dist/common/mcp-server/jsonUtils.js.map +1 -0
  126. package/dist/common/mcp-server/logger.d.ts +9 -0
  127. package/dist/common/mcp-server/logger.d.ts.map +1 -0
  128. package/dist/common/mcp-server/logger.js +9 -0
  129. package/dist/common/mcp-server/logger.js.map +1 -0
  130. package/dist/common/mcp-server/mcpTypes.d.ts +13 -0
  131. package/dist/common/mcp-server/mcpTypes.d.ts.map +1 -0
  132. package/dist/common/mcp-server/mcpTypes.js +3 -0
  133. package/dist/common/mcp-server/mcpTypes.js.map +1 -0
  134. package/dist/common/mcp-server/transactionSigning.d.ts +220 -0
  135. package/dist/common/mcp-server/transactionSigning.d.ts.map +1 -0
  136. package/dist/common/mcp-server/transactionSigning.js +267 -0
  137. package/dist/common/mcp-server/transactionSigning.js.map +1 -0
  138. package/dist/common/mcp-server/validationUtils.d.ts +3 -0
  139. package/dist/common/mcp-server/validationUtils.d.ts.map +1 -0
  140. package/dist/common/mcp-server/validationUtils.js +11 -0
  141. package/dist/common/mcp-server/validationUtils.js.map +1 -0
  142. package/dist/fermion/goat-sdk-plugin/index.d.ts +3 -0
  143. package/dist/fermion/goat-sdk-plugin/index.d.ts.map +1 -0
  144. package/dist/fermion/goat-sdk-plugin/index.js +7 -0
  145. package/dist/fermion/goat-sdk-plugin/index.js.map +1 -0
  146. package/dist/fermion/index.d.ts +3 -0
  147. package/dist/fermion/index.d.ts.map +1 -0
  148. package/dist/fermion/index.js +8 -0
  149. package/dist/fermion/index.js.map +1 -0
  150. package/dist/fermion/mcp-client/index.d.ts +435 -0
  151. package/dist/fermion/mcp-client/index.d.ts.map +1 -0
  152. package/dist/fermion/mcp-client/index.js +26 -0
  153. package/dist/fermion/mcp-client/index.js.map +1 -0
  154. package/dist/fermion/mcp-server/handlers/custody.d.ts +10 -0
  155. package/dist/fermion/mcp-server/handlers/custody.d.ts.map +1 -0
  156. package/dist/fermion/mcp-server/handlers/custody.js +126 -0
  157. package/dist/fermion/mcp-server/handlers/custody.js.map +1 -0
  158. package/dist/fermion/mcp-server/handlers/email.d.ts +19 -0
  159. package/dist/fermion/mcp-server/handlers/email.d.ts.map +1 -0
  160. package/dist/fermion/mcp-server/handlers/email.js +76 -0
  161. package/dist/fermion/mcp-server/handlers/email.js.map +1 -0
  162. package/dist/fermion/mcp-server/handlers/funds.d.ts +26 -0
  163. package/dist/fermion/mcp-server/handlers/funds.d.ts.map +1 -0
  164. package/dist/fermion/mcp-server/handlers/funds.js +112 -0
  165. package/dist/fermion/mcp-server/handlers/funds.js.map +1 -0
  166. package/dist/fermion/mcp-server/handlers/listings.d.ts +27 -0
  167. package/dist/fermion/mcp-server/handlers/listings.d.ts.map +1 -0
  168. package/dist/fermion/mcp-server/handlers/listings.js +119 -0
  169. package/dist/fermion/mcp-server/handlers/listings.js.map +1 -0
  170. package/dist/fermion/mcp-server/handlers/offers.d.ts +9 -0
  171. package/dist/fermion/mcp-server/handlers/offers.d.ts.map +1 -0
  172. package/dist/fermion/mcp-server/handlers/offers.js +132 -0
  173. package/dist/fermion/mcp-server/handlers/offers.js.map +1 -0
  174. package/dist/fermion/mcp-server/handlers/sdk.d.ts +17 -0
  175. package/dist/fermion/mcp-server/handlers/sdk.d.ts.map +1 -0
  176. package/dist/fermion/mcp-server/handlers/sdk.js +89 -0
  177. package/dist/fermion/mcp-server/handlers/sdk.js.map +1 -0
  178. package/dist/fermion/mcp-server/handlers/transactions.d.ts +37 -0
  179. package/dist/fermion/mcp-server/handlers/transactions.d.ts.map +1 -0
  180. package/dist/fermion/mcp-server/handlers/transactions.js +61 -0
  181. package/dist/fermion/mcp-server/handlers/transactions.js.map +1 -0
  182. package/dist/fermion/mcp-server/index.d.ts +12 -0
  183. package/dist/fermion/mcp-server/index.d.ts.map +1 -0
  184. package/dist/fermion/mcp-server/index.js +408 -0
  185. package/dist/fermion/mcp-server/index.js.map +1 -0
  186. package/dist/fermion/mcp-server/lib/extractFnfData.d.ts +48 -0
  187. package/dist/fermion/mcp-server/lib/extractFnfData.d.ts.map +1 -0
  188. package/dist/fermion/mcp-server/lib/extractFnfData.js +38 -0
  189. package/dist/fermion/mcp-server/lib/extractFnfData.js.map +1 -0
  190. package/dist/fermion/mcp-server/schemas.d.ts +3 -0
  191. package/dist/fermion/mcp-server/schemas.d.ts.map +1 -0
  192. package/dist/fermion/mcp-server/schemas.js +41 -0
  193. package/dist/fermion/mcp-server/schemas.js.map +1 -0
  194. package/dist/fermion/mcp-server/validation.d.ts +575 -0
  195. package/dist/fermion/mcp-server/validation.d.ts.map +1 -0
  196. package/dist/fermion/mcp-server/validation.js +219 -0
  197. package/dist/fermion/mcp-server/validation.js.map +1 -0
  198. package/dist/index.d.ts +8 -0
  199. package/dist/index.d.ts.map +1 -0
  200. package/dist/index.js +48 -0
  201. package/dist/index.js.map +1 -0
  202. package/package.json +144 -0
@@ -0,0 +1,1029 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ exports.BosonMCPServer = void 0;
38
+ const node_crypto_1 = require("node:crypto");
39
+ const core_sdk_1 = require("@bosonprotocol/core-sdk");
40
+ const core_sdk_2 = require("@fermionprotocol/core-sdk");
41
+ const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
42
+ const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
43
+ const streamableHttp_js_1 = require("@modelcontextprotocol/sdk/server/streamableHttp.js");
44
+ const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
45
+ const configLoader_js_1 = require("../../common/mcp-server/configLoader.js");
46
+ const errorHandling_js_1 = require("../../common/mcp-server/errorHandling.js");
47
+ const transactionSigning_js_1 = require("../../common/mcp-server/transactionSigning.js");
48
+ const disputeResolversFilter_js_1 = require("./filters/disputeResolversFilter.js");
49
+ const disputesFilter_js_1 = require("./filters/disputesFilter.js");
50
+ const exchangesFilter_js_1 = require("./filters/exchangesFilter.js");
51
+ const fundsFilter_js_1 = require("./filters/fundsFilter.js");
52
+ const offersFilter_js_1 = require("./filters/offersFilter.js");
53
+ const productsFilter_js_1 = require("./filters/productsFilter.js");
54
+ const sellersByAddressFilter_js_1 = require("./filters/sellersByAddressFilter.js");
55
+ const sellersFilter_js_1 = require("./filters/sellersFilter.js");
56
+ const accounts_js_1 = require("./handlers/accounts.js");
57
+ const disputes_js_1 = require("./handlers/disputes.js");
58
+ const exchanges_js_1 = require("./handlers/exchanges.js");
59
+ const funds_js_1 = require("./handlers/funds.js");
60
+ const metaTx_js_1 = require("./handlers/metaTx.js");
61
+ const offers_js_1 = require("./handlers/offers.js");
62
+ const sdk_js_1 = require("./handlers/sdk.js");
63
+ const transactions_js_1 = require("./handlers/transactions.js");
64
+ const validation_js_1 = require("./validation.js");
65
+ const log = console.error;
66
+ class BosonMCPServer {
67
+ coreSDK = null;
68
+ constructor() {
69
+ // Error handling will be set up per server instance
70
+ }
71
+ createServerInstance() {
72
+ const server = new mcp_js_1.McpServer({
73
+ name: "boson-protocol-server",
74
+ version: "1.0.0",
75
+ }, {
76
+ capabilities: {
77
+ tools: {},
78
+ resources: {},
79
+ completions: {},
80
+ },
81
+ });
82
+ this.setupToolHandlers(server);
83
+ this.setupErrorHandling(server);
84
+ return server;
85
+ }
86
+ setupErrorHandling(server) {
87
+ // eslint-disable-next-line @typescript-eslint/no-misused-promises
88
+ process.on("SIGINT", async () => {
89
+ try {
90
+ await server.close();
91
+ }
92
+ catch (error) {
93
+ console.error("Error closing server:", error);
94
+ }
95
+ process.exit(0);
96
+ });
97
+ }
98
+ setupToolHandlers(server) {
99
+ const initializeSDKHandler = (0, sdk_js_1.createInitializeSDKHandler)((sdk) => {
100
+ this.coreSDK = sdk;
101
+ });
102
+ const offerHandler = (0, offers_js_1.createOfferHandler)(() => this.coreSDK);
103
+ const voidOfferHandler = (0, offers_js_1.createVoidOfferHandler)(() => this.coreSDK);
104
+ const sellerHandler = (0, accounts_js_1.createSellerHandler)(() => this.coreSDK);
105
+ const transactionHandler = (0, transactions_js_1.createTransactionHandler)(() => this.coreSDK);
106
+ const signTransactionHandler = (0, transactions_js_1.createSignTransactionHandler)();
107
+ const signTypedDataHandler = (0, transactions_js_1.createSignTypedDataHandler)();
108
+ const sendMetaTransactionHandler = (0, metaTx_js_1.createSendMetaTransactionHandler)(() => this.coreSDK);
109
+ const sendNativeMetaTransactionHandler = (0, metaTx_js_1.createSendNativeMetaTransactionHandler)(() => this.coreSDK);
110
+ const sendForwardedMetaTransactionHandler = (0, metaTx_js_1.createSendForwardedMetaTransactionHandler)(() => this.coreSDK);
111
+ const withdrawFundsHandler = (0, funds_js_1.createWithdrawFundsHandler)(() => this.coreSDK);
112
+ const depositFundsHandler = (0, funds_js_1.createDepositFundsHandler)(() => this.coreSDK);
113
+ const getFundsHandler = (0, funds_js_1.createGetFundsHandler)(() => this.coreSDK);
114
+ const extendDisputeTimeoutHandler = (0, disputes_js_1.createExtendDisputeTimeoutHandler)(() => this.coreSDK);
115
+ const expireDisputeHandler = (0, disputes_js_1.createExpireDisputeHandler)(() => this.coreSDK);
116
+ const expireDisputeBatchHandler = (0, disputes_js_1.createExpireDisputeBatchHandler)(() => this.coreSDK);
117
+ const resolveDisputeHandler = (0, disputes_js_1.createResolveDisputeHandler)(() => this.coreSDK);
118
+ const disputeResolutionProposalHandler = (0, disputes_js_1.createDisputeResolutionProposalHandler)(() => this.coreSDK);
119
+ const getDisputesHandler = (0, disputes_js_1.createGetDisputesHandler)(() => this.coreSDK);
120
+ const revokeVoucherHandler = (0, exchanges_js_1.createRevokeVoucherHandler)(() => this.coreSDK);
121
+ const commitToOfferHandler = (0, offers_js_1.createCommitToOfferHandler)(() => this.coreSDK);
122
+ const cancelVoucherHandler = (0, exchanges_js_1.createCancelVoucherHandler)(() => this.coreSDK);
123
+ const redeemVoucherHandler = (0, exchanges_js_1.createRedeemVoucherHandler)(() => this.coreSDK);
124
+ const getExchangesHandler = (0, exchanges_js_1.createGetExchangesHandler)(() => this.coreSDK);
125
+ const getOffersHandler = (0, offers_js_1.createGetOffersHandler)(() => this.coreSDK);
126
+ const getSellersHandler = (0, accounts_js_1.createGetSellersHandler)(() => this.coreSDK);
127
+ const getSellersByAddressHandler = (0, accounts_js_1.createGetSellersByAddressHandler)(() => this.coreSDK);
128
+ const getAllProductsWithNotVoidedVariantsHandler = (0, offers_js_1.createGetAllProductsWithNotVoidedVariantsHandler)(() => this.coreSDK);
129
+ const getDisputeResolversHandler = (0, accounts_js_1.createGetDisputeResolversHandler)(() => this.coreSDK);
130
+ // Add tools for resource queries
131
+ server.tool("get_funds", "Get funds entities with flexible query parameters including pagination, ordering, and filtering", validation_js_1.getFundsValidation.shape, async (args) => {
132
+ const validatedArgs = validation_js_1.getFundsValidation.parse(args);
133
+ const result = await getFundsHandler(validatedArgs);
134
+ return {
135
+ content: [
136
+ {
137
+ type: "text",
138
+ text: result,
139
+ },
140
+ ],
141
+ };
142
+ });
143
+ server.tool("get_disputes", "Get dispute entities with flexible query parameters including pagination, ordering, and filtering", validation_js_1.getDisputesValidation.shape, async (args) => {
144
+ const validatedArgs = validation_js_1.getDisputesValidation.parse(args);
145
+ const result = await getDisputesHandler(validatedArgs);
146
+ return {
147
+ content: [
148
+ {
149
+ type: "text",
150
+ text: result,
151
+ },
152
+ ],
153
+ };
154
+ });
155
+ server.tool("get_exchanges", "Get exchange entities with flexible query parameters including pagination, ordering, and filtering", validation_js_1.getExchangesValidation.shape, async (args) => {
156
+ const validatedArgs = validation_js_1.getExchangesValidation.parse(args);
157
+ const result = await getExchangesHandler(validatedArgs);
158
+ return {
159
+ content: [
160
+ {
161
+ type: "text",
162
+ text: result,
163
+ },
164
+ ],
165
+ };
166
+ });
167
+ server.tool("get_offers", "Get offer entities with flexible query parameters including pagination, ordering, and filtering", validation_js_1.getOffersValidation.shape, async (args) => {
168
+ const validatedArgs = validation_js_1.getOffersValidation.parse(args);
169
+ const result = await getOffersHandler(validatedArgs);
170
+ return {
171
+ content: [
172
+ {
173
+ type: "text",
174
+ text: result,
175
+ },
176
+ ],
177
+ };
178
+ });
179
+ server.tool("get_sellers", "Get seller entities with flexible query parameters including pagination, ordering, and filtering", validation_js_1.getSellersValidation.shape, async (args) => {
180
+ const validatedArgs = validation_js_1.getSellersValidation.parse(args);
181
+ const result = await getSellersHandler(validatedArgs);
182
+ return {
183
+ content: [
184
+ {
185
+ type: "text",
186
+ text: result,
187
+ },
188
+ ],
189
+ };
190
+ });
191
+ server.tool("get_dispute_resolvers", "Get dispute resolver entities with flexible query parameters including pagination, ordering, and filtering", validation_js_1.getDisputeResolversValidation.shape, async (args) => {
192
+ const validatedArgs = validation_js_1.getDisputeResolversValidation.parse(args);
193
+ const result = await getDisputeResolversHandler(validatedArgs);
194
+ return {
195
+ content: [
196
+ {
197
+ type: "text",
198
+ text: result,
199
+ },
200
+ ],
201
+ };
202
+ });
203
+ server.tool("initialize_sdk", "Initialize the Boson Protocol SDK with custom configuration", sdk_js_1.initializeSDKSchema, (args) => {
204
+ // Validate required fields - signerAddress can come from params or env
205
+ const signerAddress = args.signerAddress || process.env.SIGNER_ADDRESS;
206
+ if (!signerAddress) {
207
+ throw new Error("signerAddress is required. Provide it as parameter or set SIGNER_ADDRESS environment variable.");
208
+ }
209
+ return initializeSDKHandler(args);
210
+ });
211
+ server.tool("create_offer", "Create a new offer on Boson Protocol", validation_js_1.createOfferValidation.shape, (args) => {
212
+ try {
213
+ const validatedArgs = validation_js_1.createOfferValidation.parse(args);
214
+ return offerHandler(validatedArgs);
215
+ }
216
+ catch (error) {
217
+ return {
218
+ content: [
219
+ {
220
+ type: "text",
221
+ text: JSON.stringify({
222
+ success: false,
223
+ error: `Failed to create offer: ${(0, errorHandling_js_1.formatErrorMessage)(error)}`,
224
+ errorDetails: error,
225
+ message: "create offer validation failed",
226
+ }),
227
+ },
228
+ ],
229
+ };
230
+ }
231
+ });
232
+ server.tool("void_offer", "Void an existing offer by calling the OfferHandlerFacet contract", validation_js_1.voidOfferValidation.shape, (args) => {
233
+ const validatedArgs = validation_js_1.voidOfferValidation.parse(args);
234
+ return voidOfferHandler(validatedArgs);
235
+ });
236
+ server.tool("create_seller", "Create a new seller on Boson Protocol", validation_js_1.createSellerValidation.shape, (args) => {
237
+ const validatedArgs = validation_js_1.createSellerValidation.parse(args);
238
+ return sellerHandler(validatedArgs);
239
+ });
240
+ server.tool("send_signed_transaction", "Send a signed transaction to the Ethereum network", validation_js_1.signedTransactionValidation, transactionHandler);
241
+ server.tool("sign_transaction", "Sign a transaction with a private key", validation_js_1.signTransactionValidation, signTransactionHandler);
242
+ server.tool("sign_typed_data", "Sign typed data using EIP-712 standard (optionally create transaction for contract submission)", transactionSigning_js_1.signTypedDataValidation, signTypedDataHandler);
243
+ server.tool("send_meta_transaction", "Send a meta transaction using Boson Protocol SDK", metaTx_js_1.sendMetaTransactionValidation.shape, (args) => {
244
+ const validatedArgs = metaTx_js_1.sendMetaTransactionValidation.parse(args);
245
+ return sendMetaTransactionHandler(validatedArgs);
246
+ });
247
+ server.tool("send_native_meta_transaction", "Send a native meta transaction using Boson Protocol SDK", metaTx_js_1.sendNativeMetaTransactionValidation.shape, (args) => {
248
+ const validatedArgs = metaTx_js_1.sendNativeMetaTransactionValidation.parse(args);
249
+ return sendNativeMetaTransactionHandler(validatedArgs);
250
+ });
251
+ server.tool("send_forwarded_meta_transaction", "Send a forwarded meta transaction using Boson Protocol SDK", metaTx_js_1.sendForwardedMetaTransactionValidation.shape, (args) => {
252
+ const validatedArgs = metaTx_js_1.sendForwardedMetaTransactionValidation.parse(args);
253
+ return sendForwardedMetaTransactionHandler(validatedArgs);
254
+ });
255
+ server.tool("withdraw_funds", "Withdraw funds from an entity treasury", validation_js_1.withdrawFundsValidation.shape, (args) => {
256
+ const validatedArgs = validation_js_1.withdrawFundsValidation.parse(args);
257
+ return withdrawFundsHandler(validatedArgs);
258
+ });
259
+ server.tool("deposit_funds", "Deposit funds to an entity treasury", validation_js_1.depositFundsValidation.shape, (args) => {
260
+ const validatedArgs = validation_js_1.depositFundsValidation.parse(args);
261
+ return depositFundsHandler(validatedArgs);
262
+ });
263
+ server.tool("extend_dispute_timeout", "Extend the timeout for a dispute", validation_js_1.extendDisputeTimeoutValidation.shape, (args) => {
264
+ const validatedArgs = validation_js_1.extendDisputeTimeoutValidation.parse(args);
265
+ return extendDisputeTimeoutHandler(validatedArgs);
266
+ });
267
+ server.tool("expire_dispute", "Expire a dispute", validation_js_1.expireDisputeValidation.shape, (args) => {
268
+ const validatedArgs = validation_js_1.expireDisputeValidation.parse(args);
269
+ return expireDisputeHandler(validatedArgs);
270
+ });
271
+ server.tool("expire_dispute_batch", "Expire multiple disputes in a batch", validation_js_1.expireDisputeBatchValidation.shape, (args) => {
272
+ const validatedArgs = validation_js_1.expireDisputeBatchValidation.parse(args);
273
+ return expireDisputeBatchHandler(validatedArgs);
274
+ });
275
+ server.tool("resolve_dispute", "Resolve a dispute with mutual agreement", validation_js_1.resolveDisputeValidation.shape, (args) => {
276
+ const validatedArgs = validation_js_1.resolveDisputeValidation.parse(args);
277
+ return resolveDisputeHandler(validatedArgs);
278
+ });
279
+ server.tool("create_dispute_resolution_proposal", "Create a dispute resolution proposal signature", validation_js_1.createDisputeResolutionProposalValidation.shape, (args) => {
280
+ const validatedArgs = validation_js_1.createDisputeResolutionProposalValidation.parse(args);
281
+ return disputeResolutionProposalHandler(validatedArgs);
282
+ });
283
+ server.tool("revoke_voucher", "Revoke an existing voucher by seller assistant", validation_js_1.revokeVoucherValidation.shape, (args) => {
284
+ const validatedArgs = validation_js_1.revokeVoucherValidation.parse(args);
285
+ return revokeVoucherHandler(validatedArgs);
286
+ });
287
+ server.tool("commit_to_offer", "Commit to an offer to create an exchange", validation_js_1.commitToOfferValidation.shape, (args) => {
288
+ const validatedArgs = validation_js_1.commitToOfferValidation.parse(args);
289
+ return commitToOfferHandler(validatedArgs);
290
+ });
291
+ server.tool("cancel_voucher", "Cancel an existing voucher by buyer", validation_js_1.cancelVoucherValidation.shape, (args) => {
292
+ const validatedArgs = validation_js_1.cancelVoucherValidation.parse(args);
293
+ return cancelVoucherHandler(validatedArgs);
294
+ });
295
+ server.tool("redeem_voucher", "Redeem an existing voucher by buyer", validation_js_1.redeemVoucherValidation.shape, (args) => {
296
+ const validatedArgs = validation_js_1.redeemVoucherValidation.parse(args);
297
+ return redeemVoucherHandler(validatedArgs);
298
+ });
299
+ server.tool("get_sellers_by_address", "Get seller entities by address with flexible query parameters including pagination, ordering, and filtering", validation_js_1.getSellersByAddressValidation.shape, async (args) => {
300
+ const validatedArgs = validation_js_1.getSellersByAddressValidation.parse(args);
301
+ const result = await getSellersByAddressHandler(validatedArgs);
302
+ return {
303
+ content: [
304
+ {
305
+ type: "text",
306
+ text: result,
307
+ },
308
+ ],
309
+ };
310
+ });
311
+ server.tool("get_all_products_with_not_voided_variants", "Get all products with not voided variants with flexible query parameters including pagination, ordering, and filtering", validation_js_1.getAllProductsWithNotVoidedVariantsValidation.shape, async (args) => {
312
+ const validatedArgs = validation_js_1.getAllProductsWithNotVoidedVariantsValidation.parse(args);
313
+ const result = await getAllProductsWithNotVoidedVariantsHandler(validatedArgs);
314
+ return {
315
+ content: [
316
+ {
317
+ type: "text",
318
+ text: result,
319
+ },
320
+ ],
321
+ };
322
+ });
323
+ // Add the funds resource with flexible query parameters
324
+ server.resource("funds", new mcp_js_1.ResourceTemplate(fundsFilter_js_1.fundsUriTemplate, {
325
+ list: undefined,
326
+ complete: {
327
+ fundsSkip: () => {
328
+ return ["0", "10", "20", "50", "100"];
329
+ },
330
+ fundsFirst: () => {
331
+ return ["10", "20", "50", "100"];
332
+ },
333
+ fundsOrderBy: () => {
334
+ return Object.values(core_sdk_2.Subgraph.FundsEntity_OrderBy);
335
+ },
336
+ fundsOrderDirection: () => {
337
+ return Object.values(core_sdk_2.Subgraph.OrderDirection);
338
+ },
339
+ },
340
+ }), {
341
+ name: "Funds Entities",
342
+ description: "Get funds entities with flexible query parameters including pagination, ordering, and filtering",
343
+ mimeType: "application/json",
344
+ }, async (uri) => {
345
+ const queryParams = {};
346
+ // Extract query parameters from URL
347
+ const urlParams = new URLSearchParams(uri.search);
348
+ if (urlParams.get("fundsSkip")) {
349
+ queryParams.fundsSkip = parseInt(urlParams.get("fundsSkip"));
350
+ }
351
+ if (urlParams.get("fundsFirst")) {
352
+ queryParams.fundsFirst = parseInt(urlParams.get("fundsFirst"));
353
+ }
354
+ if (urlParams.get("fundsOrderBy")) {
355
+ queryParams.fundsOrderBy = urlParams.get("fundsOrderBy");
356
+ }
357
+ if (urlParams.get("fundsOrderDirection")) {
358
+ queryParams.fundsOrderDirection = urlParams.get("fundsOrderDirection");
359
+ }
360
+ // Process filter parameters
361
+ const filterParams = (0, fundsFilter_js_1.fundsProcessFilterParams)(urlParams);
362
+ if (Object.keys(filterParams).length > 0) {
363
+ queryParams.fundsFilter = filterParams;
364
+ }
365
+ const validatedArgs = validation_js_1.getFundsValidation.parse(queryParams);
366
+ const result = await getFundsHandler(validatedArgs);
367
+ return {
368
+ contents: [
369
+ {
370
+ uri: uri.toString(),
371
+ mimeType: "application/json",
372
+ text: result,
373
+ },
374
+ ],
375
+ };
376
+ });
377
+ // Add the signer-address resource with no parameters
378
+ server.resource("signer-address", "signer-address://", async (url) => {
379
+ if (!this.coreSDK?.web3Lib?.getSignerAddress) {
380
+ throw new Error("SDK not initialized. Call initialize_sdk first.");
381
+ }
382
+ return {
383
+ contents: [
384
+ {
385
+ uri: url.toString(),
386
+ mimeType: "text/plain",
387
+ text: await this.coreSDK.web3Lib.getSignerAddress(),
388
+ },
389
+ ],
390
+ };
391
+ });
392
+ // Add the disputes resource with flexible query parameters
393
+ server.resource("disputes", new mcp_js_1.ResourceTemplate(disputesFilter_js_1.disputesUriTemplate, {
394
+ list: undefined,
395
+ complete: {
396
+ disputesSkip: () => {
397
+ return ["0", "10", "20", "50", "100"];
398
+ },
399
+ disputesFirst: () => {
400
+ return ["10", "20", "50", "100"];
401
+ },
402
+ disputesOrderBy: () => {
403
+ return Object.values(core_sdk_1.subgraph.Dispute_OrderBy);
404
+ },
405
+ disputesOrderDirection: () => {
406
+ return Object.values(core_sdk_1.subgraph.OrderDirection);
407
+ },
408
+ },
409
+ }), {
410
+ name: "Dispute Entities",
411
+ description: "Get dispute entities with flexible query parameters including pagination, ordering, and filtering",
412
+ mimeType: "application/json",
413
+ }, async (uri) => {
414
+ const queryParams = {};
415
+ // Extract query parameters from URL
416
+ const urlParams = new URLSearchParams(uri.search);
417
+ if (urlParams.get("disputesSkip")) {
418
+ queryParams.disputesSkip = parseInt(urlParams.get("disputesSkip"));
419
+ }
420
+ if (urlParams.get("disputesFirst")) {
421
+ queryParams.disputesFirst = parseInt(urlParams.get("disputesFirst"));
422
+ }
423
+ if (urlParams.get("disputesOrderBy")) {
424
+ queryParams.disputesOrderBy = urlParams.get("disputesOrderBy");
425
+ }
426
+ if (urlParams.get("disputesOrderDirection")) {
427
+ queryParams.disputesOrderDirection = urlParams.get("disputesOrderDirection");
428
+ }
429
+ // Process filter parameters
430
+ const filterParams = (0, disputesFilter_js_1.disputesProcessFilterParams)(urlParams);
431
+ if (Object.keys(filterParams).length > 0) {
432
+ queryParams.disputesFilter = filterParams;
433
+ }
434
+ const validatedArgs = validation_js_1.getDisputesValidation.parse(queryParams);
435
+ const result = await getDisputesHandler(validatedArgs);
436
+ return {
437
+ contents: [
438
+ {
439
+ uri: uri.toString(),
440
+ mimeType: "application/json",
441
+ text: result,
442
+ },
443
+ ],
444
+ };
445
+ });
446
+ // Add the exchanges resource with flexible query parameters
447
+ server.resource("exchanges", new mcp_js_1.ResourceTemplate(exchangesFilter_js_1.exchangesUriTemplate, {
448
+ list: undefined,
449
+ complete: {
450
+ exchangesSkip: () => {
451
+ return ["0", "10", "20", "50", "100"];
452
+ },
453
+ exchangesFirst: () => {
454
+ return ["10", "20", "50", "100"];
455
+ },
456
+ exchangesOrderBy: () => {
457
+ return Object.values(core_sdk_1.subgraph.Exchange_OrderBy);
458
+ },
459
+ exchangesOrderDirection: () => {
460
+ return Object.values(core_sdk_1.subgraph.OrderDirection);
461
+ },
462
+ },
463
+ }), {
464
+ name: "Exchange Entities",
465
+ description: "Get exchange entities with flexible query parameters including pagination, ordering, and filtering",
466
+ mimeType: "application/json",
467
+ }, async (uri) => {
468
+ const queryParams = {};
469
+ // Extract query parameters from URL
470
+ const urlParams = new URLSearchParams(uri.search);
471
+ if (urlParams.get("exchangesSkip")) {
472
+ queryParams.exchangesSkip = parseInt(urlParams.get("exchangesSkip"));
473
+ }
474
+ if (urlParams.get("exchangesFirst")) {
475
+ queryParams.exchangesFirst = parseInt(urlParams.get("exchangesFirst"));
476
+ }
477
+ if (urlParams.get("exchangesOrderBy")) {
478
+ queryParams.exchangesOrderBy = urlParams.get("exchangesOrderBy");
479
+ }
480
+ if (urlParams.get("exchangesOrderDirection")) {
481
+ queryParams.exchangesOrderDirection = urlParams.get("exchangesOrderDirection");
482
+ }
483
+ // Process filter parameters
484
+ const filterParams = (0, exchangesFilter_js_1.exchangesProcessFilterParams)(urlParams);
485
+ if (Object.keys(filterParams).length > 0) {
486
+ queryParams.exchangesFilter = filterParams;
487
+ }
488
+ const validatedArgs = validation_js_1.getExchangesValidation.parse(queryParams);
489
+ const result = await getExchangesHandler(validatedArgs);
490
+ return {
491
+ contents: [
492
+ {
493
+ uri: uri.toString(),
494
+ mimeType: "application/json",
495
+ text: result,
496
+ },
497
+ ],
498
+ };
499
+ });
500
+ // Add the offers resource with flexible query parameters
501
+ server.resource("offers", new mcp_js_1.ResourceTemplate(offersFilter_js_1.offersUriTemplate, {
502
+ list: undefined,
503
+ complete: {
504
+ offersSkip: () => {
505
+ return ["0", "10", "20", "50", "100"];
506
+ },
507
+ offersFirst: () => {
508
+ return ["10", "20", "50", "100"];
509
+ },
510
+ offersOrderBy: () => {
511
+ return Object.values(core_sdk_1.subgraph.Offer_OrderBy);
512
+ },
513
+ offersOrderDirection: () => {
514
+ return Object.values(core_sdk_1.subgraph.OrderDirection);
515
+ },
516
+ exchangesSkip: () => {
517
+ return ["0", "10", "20", "50", "100"];
518
+ },
519
+ exchangesFirst: () => {
520
+ return ["10", "20", "50", "100"];
521
+ },
522
+ exchangesOrderBy: () => {
523
+ return Object.values(core_sdk_1.subgraph.Exchange_OrderBy);
524
+ },
525
+ exchangesOrderDirection: () => {
526
+ return Object.values(core_sdk_1.subgraph.OrderDirection);
527
+ },
528
+ includeExchanges: () => {
529
+ return ["true", "false"];
530
+ },
531
+ },
532
+ }), {
533
+ name: "Offer Entities",
534
+ description: "Get offer entities with flexible query parameters including pagination, ordering, and filtering. Supports exchanges filtering for exchangeId",
535
+ mimeType: "application/json",
536
+ }, async (uri) => {
537
+ const queryParams = {};
538
+ // Extract query parameters from URL
539
+ const urlParams = new URLSearchParams(uri.search);
540
+ // Offers parameters
541
+ if (urlParams.get("offersSkip")) {
542
+ queryParams.offersSkip = parseInt(urlParams.get("offersSkip"));
543
+ }
544
+ if (urlParams.get("offersFirst")) {
545
+ queryParams.offersFirst = parseInt(urlParams.get("offersFirst"));
546
+ }
547
+ if (urlParams.get("offersOrderBy")) {
548
+ queryParams.offersOrderBy = urlParams.get("offersOrderBy");
549
+ }
550
+ if (urlParams.get("offersOrderDirection")) {
551
+ queryParams.offersOrderDirection = urlParams.get("offersOrderDirection");
552
+ }
553
+ // Exchanges parameters
554
+ if (urlParams.get("exchangesSkip")) {
555
+ queryParams.exchangesSkip = parseInt(urlParams.get("exchangesSkip"));
556
+ }
557
+ if (urlParams.get("exchangesFirst")) {
558
+ queryParams.exchangesFirst = parseInt(urlParams.get("exchangesFirst"));
559
+ }
560
+ if (urlParams.get("exchangesOrderBy")) {
561
+ queryParams.exchangesOrderBy = urlParams.get("exchangesOrderBy");
562
+ }
563
+ if (urlParams.get("exchangesOrderDirection")) {
564
+ queryParams.exchangesOrderDirection = urlParams.get("exchangesOrderDirection");
565
+ }
566
+ if (urlParams.get("includeExchanges")) {
567
+ queryParams.includeExchanges =
568
+ urlParams.get("includeExchanges") === "true";
569
+ }
570
+ // Process exchanges filter parameters using exchanges filter processor
571
+ const exchangesFilterParams = (0, offersFilter_js_1.offerExchangesProcessFilterParams)(urlParams);
572
+ if (Object.keys(exchangesFilterParams).length > 0) {
573
+ queryParams.exchangesFilter = exchangesFilterParams;
574
+ }
575
+ // Process offers filter parameters
576
+ const filterParams = (0, offersFilter_js_1.offersProcessFilterParams)(urlParams);
577
+ if (Object.keys(filterParams).length > 0) {
578
+ queryParams.offersFilter = filterParams;
579
+ }
580
+ const result = await getOffersHandler(queryParams);
581
+ return {
582
+ contents: [
583
+ {
584
+ uri: uri.toString(),
585
+ mimeType: "application/json",
586
+ text: result,
587
+ },
588
+ ],
589
+ };
590
+ });
591
+ // Add the sellers resource with flexible query parameters
592
+ server.resource("sellers", new mcp_js_1.ResourceTemplate(sellersFilter_js_1.sellersUriTemplate, {
593
+ list: undefined,
594
+ complete: {
595
+ sellersSkip: () => {
596
+ return ["0", "10", "20", "50", "100"];
597
+ },
598
+ sellersFirst: () => {
599
+ return ["10", "20", "50", "100"];
600
+ },
601
+ sellersOrderBy: () => {
602
+ return Object.values(core_sdk_1.subgraph.Seller_OrderBy);
603
+ },
604
+ sellersOrderDirection: () => {
605
+ return Object.values(core_sdk_1.subgraph.OrderDirection);
606
+ },
607
+ includeExchanges: () => {
608
+ return ["true", "false"];
609
+ },
610
+ includeOffers: () => {
611
+ return ["true", "false"];
612
+ },
613
+ includeFunds: () => {
614
+ return ["true", "false"];
615
+ },
616
+ includeLogs: () => {
617
+ return ["true", "false"];
618
+ },
619
+ },
620
+ }), {
621
+ name: "Seller Entities",
622
+ description: "Get seller entities with flexible query parameters including pagination, ordering, and filtering",
623
+ mimeType: "application/json",
624
+ }, async (uri) => {
625
+ const queryParams = {};
626
+ // Extract query parameters from URL
627
+ const urlParams = new URLSearchParams(uri.search);
628
+ if (urlParams.get("sellersSkip")) {
629
+ queryParams.sellersSkip = parseInt(urlParams.get("sellersSkip"));
630
+ }
631
+ if (urlParams.get("sellersFirst")) {
632
+ queryParams.sellersFirst = parseInt(urlParams.get("sellersFirst"));
633
+ }
634
+ if (urlParams.get("sellersOrderBy")) {
635
+ queryParams.sellersOrderBy = urlParams.get("sellersOrderBy");
636
+ }
637
+ if (urlParams.get("sellersOrderDirection")) {
638
+ queryParams.sellersOrderDirection = urlParams.get("sellersOrderDirection");
639
+ }
640
+ if (urlParams.get("includeExchanges")) {
641
+ queryParams.includeExchanges =
642
+ urlParams.get("includeExchanges") === "true";
643
+ }
644
+ if (urlParams.get("includeOffers")) {
645
+ queryParams.includeOffers = urlParams.get("includeOffers") === "true";
646
+ }
647
+ if (urlParams.get("includeFunds")) {
648
+ queryParams.includeFunds = urlParams.get("includeFunds") === "true";
649
+ }
650
+ if (urlParams.get("includeLogs")) {
651
+ queryParams.includeLogs = urlParams.get("includeLogs") === "true";
652
+ }
653
+ // Process filter parameters
654
+ const filterParams = (0, sellersFilter_js_1.sellersProcessFilterParams)(urlParams);
655
+ if (Object.keys(filterParams).length > 0) {
656
+ queryParams.sellersFilter = filterParams;
657
+ }
658
+ const validatedArgs = validation_js_1.getSellersValidation.parse(queryParams);
659
+ const result = await getSellersHandler(validatedArgs);
660
+ return {
661
+ contents: [
662
+ {
663
+ uri: uri.toString(),
664
+ mimeType: "application/json",
665
+ text: result,
666
+ },
667
+ ],
668
+ };
669
+ });
670
+ // Add the dispute_resolvers resource with flexible query parameters
671
+ server.resource("dispute_resolvers", new mcp_js_1.ResourceTemplate(disputeResolversFilter_js_1.disputeResolversUriTemplate, {
672
+ list: undefined,
673
+ complete: {
674
+ disputeResolversSkip: () => {
675
+ return ["0", "10", "20", "50", "100"];
676
+ },
677
+ disputeResolversFirst: () => {
678
+ return ["10", "20", "50", "100"];
679
+ },
680
+ disputeResolversOrderBy: () => {
681
+ return Object.values(core_sdk_1.subgraph.DisputeResolver_OrderBy);
682
+ },
683
+ disputeResolversOrderDirection: () => {
684
+ return Object.values(core_sdk_1.subgraph.OrderDirection);
685
+ },
686
+ },
687
+ }), {
688
+ name: "Dispute Resolver Entities",
689
+ description: "Get dispute resolver entities with flexible query parameters including pagination, ordering, and filtering",
690
+ mimeType: "application/json",
691
+ }, async (uri) => {
692
+ const queryParams = {};
693
+ // Extract query parameters from URL
694
+ const urlParams = new URLSearchParams(uri.search);
695
+ if (urlParams.get("disputeResolversSkip")) {
696
+ queryParams.disputeResolversSkip = parseInt(urlParams.get("disputeResolversSkip"));
697
+ }
698
+ if (urlParams.get("disputeResolversFirst")) {
699
+ queryParams.disputeResolversFirst = parseInt(urlParams.get("disputeResolversFirst"));
700
+ }
701
+ if (urlParams.get("disputeResolversOrderBy")) {
702
+ queryParams.disputeResolversOrderBy = urlParams.get("disputeResolversOrderBy");
703
+ }
704
+ if (urlParams.get("disputeResolversOrderDirection")) {
705
+ queryParams.disputeResolversOrderDirection = urlParams.get("disputeResolversOrderDirection");
706
+ }
707
+ // Process filter parameters
708
+ const filterParams = (0, disputeResolversFilter_js_1.disputeResolversProcessFilterParams)(urlParams);
709
+ if (Object.keys(filterParams).length > 0) {
710
+ queryParams.disputeResolversFilter = filterParams;
711
+ }
712
+ const validatedArgs = validation_js_1.getDisputeResolversValidation.parse(queryParams);
713
+ const result = await getDisputeResolversHandler(validatedArgs);
714
+ return {
715
+ contents: [
716
+ {
717
+ uri: uri.toString(),
718
+ mimeType: "application/json",
719
+ text: result,
720
+ },
721
+ ],
722
+ };
723
+ });
724
+ // Add the sellers-by-address resource with flexible query parameters
725
+ server.resource("sellers-by-address", new mcp_js_1.ResourceTemplate(sellersByAddressFilter_js_1.sellersByAddressUriTemplate, {
726
+ list: undefined,
727
+ complete: {
728
+ sellersSkip: () => {
729
+ return ["0", "10", "20", "50", "100"];
730
+ },
731
+ sellersFirst: () => {
732
+ return ["10", "20", "50", "100"];
733
+ },
734
+ sellersOrderBy: () => {
735
+ return Object.values(core_sdk_1.subgraph.Seller_OrderBy);
736
+ },
737
+ sellersOrderDirection: () => {
738
+ return Object.values(core_sdk_1.subgraph.OrderDirection);
739
+ },
740
+ includeExchanges: () => {
741
+ return ["true", "false"];
742
+ },
743
+ includeOffers: () => {
744
+ return ["true", "false"];
745
+ },
746
+ includeFunds: () => {
747
+ return ["true", "false"];
748
+ },
749
+ includeLogs: () => {
750
+ return ["true", "false"];
751
+ },
752
+ },
753
+ }), {
754
+ name: "Sellers By Address",
755
+ description: "Get seller entities by address with flexible query parameters including pagination, ordering, and filtering",
756
+ mimeType: "application/json",
757
+ }, async (uri) => {
758
+ const urlParams = new URLSearchParams(uri.search);
759
+ const queryParams = {};
760
+ // Extract address parameter (required)
761
+ const address = urlParams.get("address");
762
+ if (!address) {
763
+ throw new Error("address parameter is required");
764
+ }
765
+ queryParams.address = address;
766
+ // Extract pagination parameters
767
+ const sellersSkip = urlParams.get("sellersSkip");
768
+ if (sellersSkip !== null) {
769
+ queryParams.sellersSkip = parseInt(sellersSkip, 10);
770
+ }
771
+ const sellersFirst = urlParams.get("sellersFirst");
772
+ if (sellersFirst !== null) {
773
+ queryParams.sellersFirst = parseInt(sellersFirst, 10);
774
+ }
775
+ // Extract ordering parameters
776
+ const sellersOrderBy = urlParams.get("sellersOrderBy");
777
+ if (sellersOrderBy !== null) {
778
+ queryParams.sellersOrderBy = sellersOrderBy;
779
+ }
780
+ const sellersOrderDirection = urlParams.get("sellersOrderDirection");
781
+ if (sellersOrderDirection !== null) {
782
+ queryParams.sellersOrderDirection = sellersOrderDirection;
783
+ }
784
+ // Extract include flags
785
+ const includeExchanges = urlParams.get("includeExchanges");
786
+ if (includeExchanges !== null) {
787
+ queryParams.includeExchanges = includeExchanges === "true";
788
+ }
789
+ const includeOffers = urlParams.get("includeOffers");
790
+ if (includeOffers !== null) {
791
+ queryParams.includeOffers = includeOffers === "true";
792
+ }
793
+ const includeFunds = urlParams.get("includeFunds");
794
+ if (includeFunds !== null) {
795
+ queryParams.includeFunds = includeFunds === "true";
796
+ }
797
+ const includeLogs = urlParams.get("includeLogs");
798
+ if (includeLogs !== null) {
799
+ queryParams.includeLogs = includeLogs === "true";
800
+ }
801
+ // Process filter parameters
802
+ const sellersFilter = (0, sellersByAddressFilter_js_1.sellersByAddressProcessFilterParams)(urlParams);
803
+ if (Object.keys(sellersFilter).length > 0) {
804
+ queryParams.sellersFilter = sellersFilter;
805
+ }
806
+ // Validate arguments
807
+ const validatedArgs = validation_js_1.getSellersByAddressValidation.parse(queryParams);
808
+ // Call the handler
809
+ const result = await getSellersByAddressHandler(validatedArgs);
810
+ return {
811
+ contents: [
812
+ {
813
+ uri: uri.toString(),
814
+ mimeType: "application/json",
815
+ text: result,
816
+ },
817
+ ],
818
+ };
819
+ });
820
+ // Add the products resource with flexible query parameters
821
+ server.resource("products", new mcp_js_1.ResourceTemplate(productsFilter_js_1.productsUriTemplate, {
822
+ list: undefined,
823
+ complete: {
824
+ productsSkip: () => {
825
+ return ["0", "10", "20", "50", "100"];
826
+ },
827
+ productsFirst: () => {
828
+ return ["10", "20", "50", "100"];
829
+ },
830
+ productsOrderBy: () => {
831
+ return Object.values(core_sdk_1.subgraph.ProductV1Product_OrderBy);
832
+ },
833
+ productsOrderDirection: () => {
834
+ return Object.values(core_sdk_1.subgraph.OrderDirection);
835
+ },
836
+ },
837
+ }), {
838
+ name: "Products",
839
+ description: "Get all products with not voided variants with flexible query parameters including pagination, ordering, and filtering",
840
+ mimeType: "application/json",
841
+ }, async (uri) => {
842
+ const urlParams = new URLSearchParams(uri.search);
843
+ const queryParams = {};
844
+ // Extract pagination parameters
845
+ const productsSkip = urlParams.get("productsSkip");
846
+ if (productsSkip !== null) {
847
+ queryParams.productsSkip = parseInt(productsSkip, 10);
848
+ }
849
+ const productsFirst = urlParams.get("productsFirst");
850
+ if (productsFirst !== null) {
851
+ queryParams.productsFirst = parseInt(productsFirst, 10);
852
+ }
853
+ // Extract ordering parameters
854
+ const productsOrderBy = urlParams.get("productsOrderBy");
855
+ if (productsOrderBy !== null) {
856
+ queryParams.productsOrderBy = productsOrderBy;
857
+ }
858
+ const productsOrderDirection = urlParams.get("productsOrderDirection");
859
+ if (productsOrderDirection !== null) {
860
+ queryParams.productsOrderDirection = productsOrderDirection;
861
+ }
862
+ // Process filter parameters
863
+ const productsFilter = (0, productsFilter_js_1.productsProcessFilterParams)(urlParams);
864
+ if (Object.keys(productsFilter).length > 0) {
865
+ queryParams.productsFilter = productsFilter;
866
+ }
867
+ // Validate arguments
868
+ const validatedArgs = validation_js_1.getAllProductsWithNotVoidedVariantsValidation.parse(queryParams);
869
+ // Call the handler
870
+ const result = await getAllProductsWithNotVoidedVariantsHandler(validatedArgs);
871
+ return {
872
+ contents: [
873
+ {
874
+ uri: uri.toString(),
875
+ mimeType: "application/json",
876
+ text: result,
877
+ },
878
+ ],
879
+ };
880
+ });
881
+ }
882
+ async startStdio() {
883
+ const server = this.createServerInstance();
884
+ const transport = new stdio_js_1.StdioServerTransport();
885
+ await server.connect(transport);
886
+ log("Boson Protocol MCP server running on stdio");
887
+ }
888
+ async startHttp(port = 3000) {
889
+ const express = await Promise.resolve().then(() => __importStar(require("express")));
890
+ const app = express.default();
891
+ app.use(express.json());
892
+ // Enable CORS for cross-origin requests
893
+ app.use((req, res, next) => {
894
+ res.header("Access-Control-Allow-Origin", "*");
895
+ res.header("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");
896
+ res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization");
897
+ if (req.method === "OPTIONS") {
898
+ res.sendStatus(200);
899
+ }
900
+ else {
901
+ next();
902
+ }
903
+ });
904
+ // Root endpoint - serves as the main page for integration
905
+ app.get("/", (_, res) => {
906
+ res.json({
907
+ name: "Boson Protocol MCP Server",
908
+ version: "1.0.0",
909
+ description: "MCP Server for Boson Protocol operations",
910
+ endpoints: {
911
+ health: "/health",
912
+ mcp: "/mcp",
913
+ },
914
+ status: "running",
915
+ transport: "Streamable HTTP",
916
+ });
917
+ });
918
+ // Health check endpoint
919
+ app.get("/health", (_, res) => {
920
+ res.json({
921
+ status: "ok",
922
+ timestamp: new Date().toISOString(),
923
+ server: "Boson Protocol MCP Server",
924
+ });
925
+ });
926
+ // Map to store transports by session ID
927
+ const transports = {};
928
+ app.post("/mcp", async (req, res) => {
929
+ // Check for existing session ID
930
+ const sessionId = req.headers["mcp-session-id"];
931
+ let transport;
932
+ if (sessionId && transports[sessionId]) {
933
+ // Reuse existing transport
934
+ transport = transports[sessionId];
935
+ }
936
+ else if (!sessionId && (0, types_js_1.isInitializeRequest)(req.body)) {
937
+ // New initialization request - create new server instance
938
+ const server = this.createServerInstance();
939
+ transport = new streamableHttp_js_1.StreamableHTTPServerTransport({
940
+ sessionIdGenerator: () => (0, node_crypto_1.randomUUID)(),
941
+ onsessioninitialized: (sessionId) => {
942
+ // Store the transport by session ID
943
+ transports[sessionId] = transport;
944
+ },
945
+ });
946
+ // Clean up transport when closed
947
+ transport.onclose = () => {
948
+ log("transport has been closed");
949
+ if (transport.sessionId) {
950
+ delete transports[transport.sessionId];
951
+ }
952
+ };
953
+ // Connect to the MCP server
954
+ await server.connect(transport);
955
+ }
956
+ else {
957
+ // Invalid request
958
+ res.status(400).json({
959
+ jsonrpc: "2.0",
960
+ error: {
961
+ code: -32000,
962
+ message: "Bad Request: No valid session ID provided",
963
+ },
964
+ id: null,
965
+ });
966
+ return;
967
+ }
968
+ // Handle the request
969
+ await transport.handleRequest(req, res, req.body);
970
+ });
971
+ // Handle GET requests for server-to-client notifications via SSE
972
+ app.get("/mcp", async (req, res) => {
973
+ const sessionId = req.headers["mcp-session-id"];
974
+ if (!sessionId || !transports[sessionId]) {
975
+ res.status(400).send("Invalid or missing session ID");
976
+ return;
977
+ }
978
+ const transport = transports[sessionId];
979
+ await transport.handleRequest(req, res);
980
+ });
981
+ // Handle DELETE requests for session termination
982
+ app.delete("/mcp", async (req, res) => {
983
+ const sessionId = req.headers["mcp-session-id"];
984
+ if (!sessionId || !transports[sessionId]) {
985
+ res.status(400).send("Invalid or missing session ID");
986
+ return;
987
+ }
988
+ const transport = transports[sessionId];
989
+ await transport.handleRequest(req, res);
990
+ });
991
+ // Catch-all for unknown routes
992
+ app.use((req, res) => {
993
+ res.status(404).json({
994
+ error: "Not Found",
995
+ message: `The requested endpoint ${req.originalUrl} was not found`,
996
+ availableEndpoints: {
997
+ root: "/",
998
+ health: "/health",
999
+ mcp: "/mcp",
1000
+ },
1001
+ });
1002
+ });
1003
+ app.listen(port, () => {
1004
+ log(`Boson MCP Server running on http://localhost:${port}`);
1005
+ log(`Web interface: http://localhost:${port}`);
1006
+ log(`MCP endpoint: http://localhost:${port}/mcp`);
1007
+ log(`Health check: http://localhost:${port}/health`);
1008
+ });
1009
+ }
1010
+ async run() {
1011
+ const args = (0, configLoader_js_1.parseArgs)();
1012
+ // Load environment variables from config if provided
1013
+ (0, configLoader_js_1.loadConfigEnv)(args.config, args.server);
1014
+ const useHttp = args.http || process.env.MCP_TRANSPORT === "http";
1015
+ if (useHttp) {
1016
+ await this.startHttp();
1017
+ }
1018
+ else {
1019
+ await this.startStdio();
1020
+ }
1021
+ }
1022
+ }
1023
+ exports.BosonMCPServer = BosonMCPServer;
1024
+ // Only run server if not in test environment
1025
+ if (process.env.NODE_ENV !== "test" && process.env.VITEST !== "true") {
1026
+ const server = new BosonMCPServer();
1027
+ server.run().catch(log);
1028
+ }
1029
+ //# sourceMappingURL=index.js.map