@bosonprotocol/agentic-commerce 1.0.0-alpha.52 → 1.0.0-alpha.54
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.
- package/README.md +13 -16
- package/dist/boson/goat-sdk-plugin/boson-protocol-plugin.service.d.ts +5 -6
- package/dist/boson/goat-sdk-plugin/boson-protocol-plugin.service.d.ts.map +1 -1
- package/dist/boson/goat-sdk-plugin/boson-protocol-plugin.service.js +9 -4
- package/dist/boson/goat-sdk-plugin/boson-protocol-plugin.service.js.map +1 -1
- package/dist/boson/goat-sdk-plugin/examples/vercel.js +32 -38
- package/dist/boson/goat-sdk-plugin/examples/vercel.js.map +1 -1
- package/dist/boson/goat-sdk-plugin/parameters.d.ts +187 -7
- package/dist/boson/goat-sdk-plugin/parameters.d.ts.map +1 -1
- package/dist/boson/mcp-client/index.d.ts +0 -35
- package/dist/boson/mcp-client/index.d.ts.map +1 -1
- package/dist/boson/mcp-client/index.js +0 -3
- package/dist/boson/mcp-client/index.js.map +1 -1
- package/dist/boson/mcp-server/filters/disputeResolversFilter.js +1 -1
- package/dist/boson/mcp-server/filters/disputeResolversFilter.js.map +1 -1
- package/dist/boson/mcp-server/filters/disputesFilter.js +1 -1
- package/dist/boson/mcp-server/filters/disputesFilter.js.map +1 -1
- package/dist/boson/mcp-server/filters/exchangesFilter.js +1 -1
- package/dist/boson/mcp-server/filters/exchangesFilter.js.map +1 -1
- package/dist/boson/mcp-server/filters/fundsFilter.d.ts.map +1 -1
- package/dist/boson/mcp-server/filters/fundsFilter.js +1 -1
- package/dist/boson/mcp-server/filters/fundsFilter.js.map +1 -1
- package/dist/boson/mcp-server/filters/offersFilter.js +1 -1
- package/dist/boson/mcp-server/filters/offersFilter.js.map +1 -1
- package/dist/boson/mcp-server/filters/productsFilter.js +1 -1
- package/dist/boson/mcp-server/filters/productsFilter.js.map +1 -1
- package/dist/boson/mcp-server/filters/sellersByAddressFilter.js +1 -1
- package/dist/boson/mcp-server/filters/sellersByAddressFilter.js.map +1 -1
- package/dist/boson/mcp-server/filters/sellersFilter.js +1 -1
- package/dist/boson/mcp-server/filters/sellersFilter.js.map +1 -1
- package/dist/boson/mcp-server/handlers/accounts.d.ts +6 -7
- package/dist/boson/mcp-server/handlers/accounts.d.ts.map +1 -1
- package/dist/boson/mcp-server/handlers/accounts.js +22 -17
- package/dist/boson/mcp-server/handlers/accounts.js.map +1 -1
- package/dist/boson/mcp-server/handlers/disputes.d.ts +5 -6
- package/dist/boson/mcp-server/handlers/disputes.d.ts.map +1 -1
- package/dist/boson/mcp-server/handlers/disputes.js +21 -56
- package/dist/boson/mcp-server/handlers/disputes.js.map +1 -1
- package/dist/boson/mcp-server/handlers/exchanges.d.ts +3 -4
- package/dist/boson/mcp-server/handlers/exchanges.d.ts.map +1 -1
- package/dist/boson/mcp-server/handlers/exchanges.js +13 -34
- package/dist/boson/mcp-server/handlers/exchanges.js.map +1 -1
- package/dist/boson/mcp-server/handlers/funds.d.ts +2 -3
- package/dist/boson/mcp-server/handlers/funds.d.ts.map +1 -1
- package/dist/boson/mcp-server/handlers/funds.js +9 -23
- package/dist/boson/mcp-server/handlers/funds.js.map +1 -1
- package/dist/boson/mcp-server/handlers/metaTx.d.ts +3 -4
- package/dist/boson/mcp-server/handlers/metaTx.d.ts.map +1 -1
- package/dist/boson/mcp-server/handlers/metaTx.js +13 -33
- package/dist/boson/mcp-server/handlers/metaTx.js.map +1 -1
- package/dist/boson/mcp-server/handlers/offers.d.ts +14 -15
- package/dist/boson/mcp-server/handlers/offers.d.ts.map +1 -1
- package/dist/boson/mcp-server/handlers/offers.js +59 -119
- package/dist/boson/mcp-server/handlers/offers.js.map +1 -1
- package/dist/boson/mcp-server/handlers/transactions.d.ts +1 -2
- package/dist/boson/mcp-server/handlers/transactions.d.ts.map +1 -1
- package/dist/boson/mcp-server/handlers/transactions.js +1 -1
- package/dist/boson/mcp-server/handlers/transactions.js.map +1 -1
- package/dist/boson/mcp-server/index.d.ts +4 -2
- package/dist/boson/mcp-server/index.d.ts.map +1 -1
- package/dist/boson/mcp-server/index.js +276 -408
- package/dist/boson/mcp-server/index.js.map +1 -1
- package/dist/boson/mcp-server/resourceParameterTypes.d.ts +0 -2
- package/dist/boson/mcp-server/resourceParameterTypes.d.ts.map +1 -1
- package/dist/boson/mcp-server/resourceParameterTypes.js +6 -7
- package/dist/boson/mcp-server/resourceParameterTypes.js.map +1 -1
- package/dist/boson/mcp-server/validation.d.ts +439 -13
- package/dist/boson/mcp-server/validation.d.ts.map +1 -1
- package/dist/boson/mcp-server/validation.js +91 -25
- package/dist/boson/mcp-server/validation.js.map +1 -1
- package/dist/common/mcp-server/configValidation.d.ts +1 -0
- package/dist/common/mcp-server/configValidation.d.ts.map +1 -1
- package/dist/common/mcp-server/configValidation.js +4 -4
- package/dist/common/mcp-server/configValidation.js.map +1 -1
- package/dist/common/mcp-server/transactionSigning.d.ts +1 -1
- package/dist/common/mcp-server/transactionSigning.d.ts.map +1 -1
- package/dist/common/mcp-server/transactionSigning.js +19 -25
- package/dist/common/mcp-server/transactionSigning.js.map +1 -1
- package/dist/fermion/mcp-server/handlers/sdk.d.ts.map +1 -1
- package/dist/fermion/mcp-server/handlers/sdk.js +3 -4
- package/dist/fermion/mcp-server/handlers/sdk.js.map +1 -1
- package/dist/fermion/mcp-server/handlers/transactions.d.ts +1 -2
- package/dist/fermion/mcp-server/handlers/transactions.d.ts.map +1 -1
- package/dist/fermion/mcp-server/handlers/transactions.js +1 -1
- package/dist/fermion/mcp-server/handlers/transactions.js.map +1 -1
- package/dist/fermion/mcp-server/index.d.ts +2 -0
- package/dist/fermion/mcp-server/index.d.ts.map +1 -1
- package/dist/fermion/mcp-server/index.js +36 -2
- package/dist/fermion/mcp-server/index.js.map +1 -1
- package/package.json +3 -3
|
@@ -37,13 +37,20 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
37
37
|
exports.BosonMCPServer = void 0;
|
|
38
38
|
const node_crypto_1 = require("node:crypto");
|
|
39
39
|
const core_sdk_1 = require("@bosonprotocol/core-sdk");
|
|
40
|
+
const ethers_sdk_1 = require("@bosonprotocol/ethers-sdk");
|
|
41
|
+
const ipfs_storage_1 = require("@bosonprotocol/ipfs-storage");
|
|
40
42
|
const core_sdk_2 = require("@fermionprotocol/core-sdk");
|
|
41
43
|
const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
|
|
42
44
|
const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
|
|
43
45
|
const streamableHttp_js_1 = require("@modelcontextprotocol/sdk/server/streamableHttp.js");
|
|
44
46
|
const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
|
|
47
|
+
const ethers_1 = require("ethers");
|
|
48
|
+
const index_js_1 = require("../../common/index.js");
|
|
45
49
|
const configLoader_js_1 = require("../../common/mcp-server/configLoader.js");
|
|
50
|
+
const configValidation_js_1 = require("../../common/mcp-server/configValidation.js");
|
|
46
51
|
const errorHandling_js_1 = require("../../common/mcp-server/errorHandling.js");
|
|
52
|
+
const ipfs_js_1 = require("../../common/mcp-server/ipfs.js");
|
|
53
|
+
const jsonUtils_js_1 = require("../../common/mcp-server/jsonUtils.js");
|
|
47
54
|
const transactionSigning_js_1 = require("../../common/mcp-server/transactionSigning.js");
|
|
48
55
|
const disputeResolversFilter_js_1 = require("./filters/disputeResolversFilter.js");
|
|
49
56
|
const disputesFilter_js_1 = require("./filters/disputesFilter.js");
|
|
@@ -59,17 +66,100 @@ const exchanges_js_1 = require("./handlers/exchanges.js");
|
|
|
59
66
|
const funds_js_1 = require("./handlers/funds.js");
|
|
60
67
|
const metaTx_js_1 = require("./handlers/metaTx.js");
|
|
61
68
|
const offers_js_1 = require("./handlers/offers.js");
|
|
62
|
-
const sdk_js_1 = require("./handlers/sdk.js");
|
|
63
69
|
const transactions_js_1 = require("./handlers/transactions.js");
|
|
64
|
-
const resourceParameterTypes_js_1 = require("./resourceParameterTypes.js");
|
|
65
70
|
const validation_js_1 = require("./validation.js");
|
|
66
|
-
const log = console.error;
|
|
67
71
|
class BosonMCPServer {
|
|
68
|
-
coreSDK = null;
|
|
69
|
-
config = null;
|
|
70
72
|
constructor() {
|
|
71
73
|
// Error handling will be set up per server instance
|
|
72
74
|
}
|
|
75
|
+
createSDKFromContext(configId, signerAddress) {
|
|
76
|
+
const config = (0, core_sdk_1.getConfigFromConfigId)(configId);
|
|
77
|
+
let jsonRpcUrl = config.jsonRpcUrl;
|
|
78
|
+
if (process.env.LOCALHOST_SUBSTITUTE) {
|
|
79
|
+
jsonRpcUrl = jsonRpcUrl
|
|
80
|
+
.replace(/localhost/i, process.env.LOCALHOST_SUBSTITUTE)
|
|
81
|
+
.replace("127.0.0.1", process.env.LOCALHOST_SUBSTITUTE);
|
|
82
|
+
}
|
|
83
|
+
const provider = new ethers_1.providers.StaticJsonRpcProvider(jsonRpcUrl);
|
|
84
|
+
const metadataStorageUrl = process.env.IPFS_METADATA_URL || config.ipfsMetadataUrl;
|
|
85
|
+
const theGraphStorageUrl = process.env.THE_GRAPH_IPFS_URL ||
|
|
86
|
+
config.theGraphIpfsUrl ||
|
|
87
|
+
metadataStorageUrl;
|
|
88
|
+
const infuraIpfsProjectId = process.env.INFURA_IPFS_PROJECT_ID;
|
|
89
|
+
if (!infuraIpfsProjectId) {
|
|
90
|
+
throw new Error("infuraIpfsProjectId is required. Set INFURA_IPFS_PROJECT_ID environment variable.");
|
|
91
|
+
}
|
|
92
|
+
const infuraIpfsProjectSecret = process.env.INFURA_IPFS_PROJECT_SECRET;
|
|
93
|
+
if (!infuraIpfsProjectSecret) {
|
|
94
|
+
throw new Error("infuraIpfsProjectSecret is required. Set INFURA_IPFS_PROJECT_SECRET environment variable.");
|
|
95
|
+
}
|
|
96
|
+
const ipfsMetadataStorageHeaders = (0, ipfs_js_1.getIpfsMetadataStorageHeaders)(infuraIpfsProjectId, infuraIpfsProjectSecret);
|
|
97
|
+
const coreSDK = core_sdk_1.CoreSDK.fromDefaultConfig({
|
|
98
|
+
envName: config.envName,
|
|
99
|
+
configId: config.configId,
|
|
100
|
+
web3Lib: new ethers_sdk_1.AgentAdapter(provider, {
|
|
101
|
+
signerAddress: signerAddress,
|
|
102
|
+
}),
|
|
103
|
+
theGraphStorage: new ipfs_storage_1.IpfsMetadataStorage(core_sdk_1.validateMetadata, {
|
|
104
|
+
url: theGraphStorageUrl,
|
|
105
|
+
headers: theGraphStorageUrl === metadataStorageUrl
|
|
106
|
+
? ipfsMetadataStorageHeaders
|
|
107
|
+
: undefined,
|
|
108
|
+
}),
|
|
109
|
+
metadataStorage: new ipfs_storage_1.IpfsMetadataStorage(core_sdk_1.validateMetadata, {
|
|
110
|
+
url: metadataStorageUrl,
|
|
111
|
+
headers: ipfsMetadataStorageHeaders,
|
|
112
|
+
}),
|
|
113
|
+
});
|
|
114
|
+
return { coreSDK, config };
|
|
115
|
+
}
|
|
116
|
+
createHandler(handlerFactory, needsConfig = false, requiresSignerAddress = true) {
|
|
117
|
+
return async (args) => {
|
|
118
|
+
if (requiresSignerAddress) {
|
|
119
|
+
if (!args.configId || !args.signerAddress) {
|
|
120
|
+
throw new Error("configId and signerAddress are required");
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
if (!args.configId) {
|
|
125
|
+
throw new Error("configId is required");
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
const { coreSDK, config } = this.createSDKFromContext(args.configId, args.signerAddress);
|
|
129
|
+
const handler = needsConfig
|
|
130
|
+
? handlerFactory(() => coreSDK, () => config)
|
|
131
|
+
: handlerFactory(() => coreSDK);
|
|
132
|
+
return await handler(args);
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
createToolHandler(handlerFactory, needsConfig = false) {
|
|
136
|
+
return async (args) => {
|
|
137
|
+
const result = await this.createHandler(handlerFactory, needsConfig)(args);
|
|
138
|
+
return {
|
|
139
|
+
content: [
|
|
140
|
+
{
|
|
141
|
+
type: "text",
|
|
142
|
+
text: result,
|
|
143
|
+
},
|
|
144
|
+
],
|
|
145
|
+
};
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
createResourceHandler(handlerFactory, needsConfig = false) {
|
|
149
|
+
return async (url) => {
|
|
150
|
+
const params = Object.fromEntries(url.searchParams);
|
|
151
|
+
const result = await this.createHandler(handlerFactory, needsConfig, false)({ ...params, signerAddress: ethers_1.ethers.constants.AddressZero }); // Default signerAddress to zero address for resource handlers as no resources need a signer address
|
|
152
|
+
return {
|
|
153
|
+
contents: [
|
|
154
|
+
{
|
|
155
|
+
uri: url.toString(),
|
|
156
|
+
mimeType: "application/json",
|
|
157
|
+
text: result,
|
|
158
|
+
},
|
|
159
|
+
],
|
|
160
|
+
};
|
|
161
|
+
};
|
|
162
|
+
}
|
|
73
163
|
createServerInstance() {
|
|
74
164
|
const server = new mcp_js_1.McpServer({
|
|
75
165
|
name: "boson-protocol-server",
|
|
@@ -98,138 +188,35 @@ class BosonMCPServer {
|
|
|
98
188
|
});
|
|
99
189
|
}
|
|
100
190
|
setupToolHandlers(server) {
|
|
101
|
-
const initializeSDKHandler = (0, sdk_js_1.createInitializeSDKHandler)((sdk) => {
|
|
102
|
-
this.coreSDK = sdk;
|
|
103
|
-
}, (config) => {
|
|
104
|
-
this.config = config;
|
|
105
|
-
});
|
|
106
|
-
const offerHandler = (0, offers_js_1.createOfferHandler)(() => this.coreSDK, () => this.config);
|
|
107
|
-
const offerWithConditionHandler = (0, offers_js_1.createOfferWithConditionHandler)(() => this.coreSDK, () => this.config);
|
|
108
|
-
const voidOfferHandler = (0, offers_js_1.createVoidOfferHandler)(() => this.coreSDK);
|
|
109
|
-
const sellerHandler = (0, accounts_js_1.createSellerHandler)(() => this.coreSDK);
|
|
110
|
-
const transactionHandler = (0, transactions_js_1.createTransactionHandler)(() => this.coreSDK);
|
|
111
191
|
const signTransactionHandler = (0, transactions_js_1.createSignTransactionHandler)();
|
|
112
192
|
const signTypedDataHandler = (0, transactions_js_1.createSignTypedDataHandler)();
|
|
113
|
-
const sendMetaTransactionHandler = (0, metaTx_js_1.createSendMetaTransactionHandler)(() => this.coreSDK);
|
|
114
|
-
const sendNativeMetaTransactionHandler = (0, metaTx_js_1.createSendNativeMetaTransactionHandler)(() => this.coreSDK);
|
|
115
|
-
const sendForwardedMetaTransactionHandler = (0, metaTx_js_1.createSendForwardedMetaTransactionHandler)(() => this.coreSDK);
|
|
116
|
-
const withdrawFundsHandler = (0, funds_js_1.createWithdrawFundsHandler)(() => this.coreSDK);
|
|
117
|
-
const depositFundsHandler = (0, funds_js_1.createDepositFundsHandler)(() => this.coreSDK);
|
|
118
|
-
const getFundsHandler = (0, funds_js_1.createGetFundsHandler)(() => this.coreSDK);
|
|
119
|
-
const extendDisputeTimeoutHandler = (0, disputes_js_1.createExtendDisputeTimeoutHandler)(() => this.coreSDK);
|
|
120
|
-
const expireDisputeHandler = (0, disputes_js_1.createExpireDisputeHandler)(() => this.coreSDK);
|
|
121
|
-
const expireDisputeBatchHandler = (0, disputes_js_1.createExpireDisputeBatchHandler)(() => this.coreSDK);
|
|
122
|
-
const resolveDisputeHandler = (0, disputes_js_1.createResolveDisputeHandler)(() => this.coreSDK);
|
|
123
|
-
const disputeResolutionProposalHandler = (0, disputes_js_1.createDisputeResolutionProposalHandler)(() => this.coreSDK);
|
|
124
|
-
const getDisputesHandler = (0, disputes_js_1.createGetDisputesHandler)(() => this.coreSDK);
|
|
125
|
-
const revokeVoucherHandler = (0, exchanges_js_1.createRevokeVoucherHandler)(() => this.coreSDK);
|
|
126
|
-
const commitToOfferHandler = (0, offers_js_1.createCommitToOfferHandler)(() => this.coreSDK);
|
|
127
|
-
const cancelVoucherHandler = (0, exchanges_js_1.createCancelVoucherHandler)(() => this.coreSDK);
|
|
128
|
-
const redeemVoucherHandler = (0, exchanges_js_1.createRedeemVoucherHandler)(() => this.coreSDK);
|
|
129
|
-
const getExchangesHandler = (0, exchanges_js_1.createGetExchangesHandler)(() => this.coreSDK);
|
|
130
|
-
const getOffersHandler = (0, offers_js_1.createGetOffersHandler)(() => this.coreSDK);
|
|
131
|
-
const getSellersHandler = (0, accounts_js_1.createGetSellersHandler)(() => this.coreSDK);
|
|
132
|
-
const getSellersByAddressHandler = (0, accounts_js_1.createGetSellersByAddressHandler)(() => this.coreSDK);
|
|
133
|
-
const getAllProductsWithNotVoidedVariantsHandler = (0, offers_js_1.createGetAllProductsWithNotVoidedVariantsHandler)(() => this.coreSDK);
|
|
134
|
-
const getDisputeResolversHandler = (0, accounts_js_1.createGetDisputeResolversHandler)(() => this.coreSDK);
|
|
135
|
-
const storeProductV1MetadataHandler = (0, offers_js_1.createStoreProductV1MetadataHandler)(() => this.coreSDK);
|
|
136
|
-
const storeBundleMetadataHandler = (0, offers_js_1.createStoreBundleMetadataHandler)(() => this.coreSDK);
|
|
137
|
-
const storeCustomMetadataHandler = (0, offers_js_1.createStoreCustomMetadataHandler)(() => this.coreSDK);
|
|
138
|
-
const renderContractualAgreementHandler = (0, offers_js_1.createRenderContractualAgreementHandler)(() => this.coreSDK);
|
|
139
|
-
const storeBundleItemProductV1MetadataHandler = (0, offers_js_1.createStoreBundleItemProductV1MetadataHandler)(() => this.coreSDK);
|
|
140
|
-
const storeBundleItemNftMetadataHandler = (0, offers_js_1.createStoreBundleItemNftMetadataHandler)(() => this.coreSDK);
|
|
141
193
|
// Add tools for resource queries
|
|
142
|
-
server.tool("get_funds", "Get funds entities with flexible query parameters including pagination, ordering, and filtering", validation_js_1.getFundsValidation.shape,
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
content: [
|
|
147
|
-
{
|
|
148
|
-
type: "text",
|
|
149
|
-
text: result,
|
|
150
|
-
},
|
|
151
|
-
],
|
|
152
|
-
};
|
|
153
|
-
});
|
|
154
|
-
server.tool("get_disputes", "Get dispute entities with flexible query parameters including pagination, ordering, and filtering", validation_js_1.getDisputesValidation.shape, async (args) => {
|
|
155
|
-
const validatedArgs = validation_js_1.getDisputesValidation.parse(args);
|
|
156
|
-
const result = await getDisputesHandler(validatedArgs);
|
|
157
|
-
return {
|
|
158
|
-
content: [
|
|
159
|
-
{
|
|
160
|
-
type: "text",
|
|
161
|
-
text: result,
|
|
162
|
-
},
|
|
163
|
-
],
|
|
164
|
-
};
|
|
165
|
-
});
|
|
166
|
-
server.tool("get_exchanges", "Get exchange entities with flexible query parameters including pagination, ordering, and filtering", validation_js_1.getExchangesValidation.shape, async (args) => {
|
|
167
|
-
const validatedArgs = validation_js_1.getExchangesValidation.parse(args);
|
|
168
|
-
const result = await getExchangesHandler(validatedArgs);
|
|
169
|
-
return {
|
|
170
|
-
content: [
|
|
171
|
-
{
|
|
172
|
-
type: "text",
|
|
173
|
-
text: result,
|
|
174
|
-
},
|
|
175
|
-
],
|
|
176
|
-
};
|
|
177
|
-
});
|
|
178
|
-
server.tool("get_offers", "Get offer entities with flexible query parameters including pagination, ordering, and filtering", validation_js_1.getOffersValidation.shape, async (args) => {
|
|
194
|
+
server.tool("get_funds", "Get funds entities with flexible query parameters including pagination, ordering, and filtering", validation_js_1.getFundsValidation.shape, this.createToolHandler(funds_js_1.createGetFundsHandler));
|
|
195
|
+
server.tool("get_disputes", "Get dispute entities with flexible query parameters including pagination, ordering, and filtering", validation_js_1.getDisputesValidation.shape, this.createToolHandler(disputes_js_1.createGetDisputesHandler));
|
|
196
|
+
server.tool("get_exchanges", "Get exchange entities with flexible query parameters including pagination, ordering, and filtering", validation_js_1.getExchangesValidation.shape, this.createToolHandler(exchanges_js_1.createGetExchangesHandler));
|
|
197
|
+
server.tool("get_offers", "Get offer entities with flexible query parameters including pagination, ordering, and filtering", validation_js_1.getOffersValidation.shape, (args) => {
|
|
179
198
|
const validatedArgs = validation_js_1.getOffersValidation.parse(args);
|
|
180
|
-
|
|
181
|
-
return {
|
|
182
|
-
content: [
|
|
183
|
-
{
|
|
184
|
-
type: "text",
|
|
185
|
-
text: result,
|
|
186
|
-
},
|
|
187
|
-
],
|
|
188
|
-
};
|
|
199
|
+
return this.createToolHandler(offers_js_1.createGetOffersHandler)(validatedArgs);
|
|
189
200
|
});
|
|
190
|
-
server.tool("get_sellers", "Get seller entities with flexible query parameters including pagination, ordering, and filtering", validation_js_1.getSellersValidation.shape,
|
|
201
|
+
server.tool("get_sellers", "Get seller entities with flexible query parameters including pagination, ordering, and filtering", validation_js_1.getSellersValidation.shape, (args) => {
|
|
191
202
|
const validatedArgs = validation_js_1.getSellersValidation.parse(args);
|
|
192
|
-
|
|
193
|
-
return {
|
|
194
|
-
content: [
|
|
195
|
-
{
|
|
196
|
-
type: "text",
|
|
197
|
-
text: result,
|
|
198
|
-
},
|
|
199
|
-
],
|
|
200
|
-
};
|
|
203
|
+
return this.createToolHandler(accounts_js_1.createGetSellersHandler)(validatedArgs);
|
|
201
204
|
});
|
|
202
|
-
server.tool("get_dispute_resolvers", "Get dispute resolver entities with flexible query parameters including pagination, ordering, and filtering", validation_js_1.getDisputeResolversValidation.shape,
|
|
205
|
+
server.tool("get_dispute_resolvers", "Get dispute resolver entities with flexible query parameters including pagination, ordering, and filtering", validation_js_1.getDisputeResolversValidation.shape, (args) => {
|
|
203
206
|
const validatedArgs = validation_js_1.getDisputeResolversValidation.parse(args);
|
|
204
|
-
|
|
205
|
-
return {
|
|
206
|
-
content: [
|
|
207
|
-
{
|
|
208
|
-
type: "text",
|
|
209
|
-
text: result,
|
|
210
|
-
},
|
|
211
|
-
],
|
|
212
|
-
};
|
|
213
|
-
});
|
|
214
|
-
server.tool("initialize_sdk", "Initialize the Boson Protocol SDK with custom configuration. Set defaultDisputeResolverId to configure fallback dispute resolver selection.", sdk_js_1.initializeSDKSchema, (args) => {
|
|
215
|
-
// Validate required fields - signerAddress can come from params or env
|
|
216
|
-
const signerAddress = args.signerAddress || process.env.SIGNER_ADDRESS;
|
|
217
|
-
if (!signerAddress) {
|
|
218
|
-
throw new Error("signerAddress is required. Provide it as parameter or set SIGNER_ADDRESS environment variable.");
|
|
219
|
-
}
|
|
220
|
-
return initializeSDKHandler(args);
|
|
207
|
+
return this.createToolHandler(accounts_js_1.createGetDisputeResolversHandler)(validatedArgs);
|
|
221
208
|
});
|
|
222
209
|
server.tool("create_offer", "Create a new offer on Boson Protocol. Tip: Consider storing metadata first using store_product_v1_metadata, store_bundle_metadata, or store_custom_metadata tools to get URIs for the metadata fields.", validation_js_1.createOfferValidation.shape, (args) => {
|
|
223
210
|
try {
|
|
224
211
|
const validatedArgs = validation_js_1.createOfferValidation.parse(args);
|
|
225
|
-
return
|
|
212
|
+
return this.createToolHandler(offers_js_1.createOfferHandler, true)(validatedArgs);
|
|
226
213
|
}
|
|
227
214
|
catch (error) {
|
|
228
215
|
return {
|
|
229
216
|
content: [
|
|
230
217
|
{
|
|
231
218
|
type: "text",
|
|
232
|
-
text:
|
|
219
|
+
text: (0, jsonUtils_js_1.stringifyWithBigInt)({
|
|
233
220
|
success: false,
|
|
234
221
|
error: `Failed to create offer: ${(0, errorHandling_js_1.formatErrorMessage)(error)}`,
|
|
235
222
|
errorDetails: error,
|
|
@@ -243,14 +230,14 @@ class BosonMCPServer {
|
|
|
243
230
|
server.tool("create_offer_with_condition", "Create a new offer with a specific condition on Boson Protocol. Tip: Consider storing metadata first using store_product_v1_metadata, store_bundle_metadata, or store_custom_metadata tools to get URIs for the metadata fields.", validation_js_1.createOfferWithConditionValidation.shape, (args) => {
|
|
244
231
|
try {
|
|
245
232
|
const validatedArgs = validation_js_1.createOfferWithConditionValidation.parse(args);
|
|
246
|
-
return
|
|
233
|
+
return this.createToolHandler(offers_js_1.createOfferWithConditionHandler, true)(validatedArgs);
|
|
247
234
|
}
|
|
248
235
|
catch (error) {
|
|
249
236
|
return {
|
|
250
237
|
content: [
|
|
251
238
|
{
|
|
252
239
|
type: "text",
|
|
253
|
-
text:
|
|
240
|
+
text: (0, jsonUtils_js_1.stringifyWithBigInt)({
|
|
254
241
|
success: false,
|
|
255
242
|
error: `Failed to create offer with condition: ${(0, errorHandling_js_1.formatErrorMessage)(error)}`,
|
|
256
243
|
errorDetails: error,
|
|
@@ -261,125 +248,62 @@ class BosonMCPServer {
|
|
|
261
248
|
};
|
|
262
249
|
}
|
|
263
250
|
});
|
|
264
|
-
server.tool("void_offer", "Void an existing offer by calling the OfferHandlerFacet contract", validation_js_1.voidOfferValidation.shape, (
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
});
|
|
268
|
-
server.tool("create_seller", "Create a new seller on Boson Protocol", validation_js_1.createSellerValidation.shape, (args) => {
|
|
269
|
-
const validatedArgs = validation_js_1.createSellerValidation.parse(args);
|
|
270
|
-
return sellerHandler(validatedArgs);
|
|
271
|
-
});
|
|
272
|
-
server.tool("send_signed_transaction", "Send a signed transaction to the Ethereum network", validation_js_1.signedTransactionValidation, transactionHandler);
|
|
251
|
+
server.tool("void_offer", "Void an existing offer by calling the OfferHandlerFacet contract", validation_js_1.voidOfferValidation.shape, this.createToolHandler(offers_js_1.createVoidOfferHandler));
|
|
252
|
+
server.tool("create_seller", "Create a new seller on Boson Protocol", validation_js_1.createSellerValidation.shape, this.createToolHandler(accounts_js_1.createSellerHandler));
|
|
253
|
+
server.tool("send_signed_transaction", "Send a signed transaction to the Ethereum network", validation_js_1.signedTransactionValidation, this.createToolHandler(transactions_js_1.createTransactionHandler));
|
|
273
254
|
server.tool("sign_transaction", "Sign a transaction with a private key", validation_js_1.signTransactionValidation, signTransactionHandler);
|
|
274
255
|
server.tool("sign_typed_data", "Sign typed data using EIP-712 standard (optionally create transaction for contract submission)", transactionSigning_js_1.signTypedDataValidation, signTypedDataHandler);
|
|
275
|
-
server.tool("send_meta_transaction", "Send a meta transaction using Boson Protocol SDK", metaTx_js_1.sendMetaTransactionValidation.shape, (
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
server.tool("
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
server.tool("
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
server.tool("
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
});
|
|
291
|
-
server.tool("deposit_funds", "Deposit funds to an entity treasury", validation_js_1.depositFundsValidation.shape, (args) => {
|
|
292
|
-
const validatedArgs = validation_js_1.depositFundsValidation.parse(args);
|
|
293
|
-
return depositFundsHandler(validatedArgs);
|
|
294
|
-
});
|
|
295
|
-
server.tool("extend_dispute_timeout", "Extend the timeout for a dispute", validation_js_1.extendDisputeTimeoutValidation.shape, (args) => {
|
|
296
|
-
const validatedArgs = validation_js_1.extendDisputeTimeoutValidation.parse(args);
|
|
297
|
-
return extendDisputeTimeoutHandler(validatedArgs);
|
|
298
|
-
});
|
|
299
|
-
server.tool("expire_dispute", "Expire a dispute", validation_js_1.expireDisputeValidation.shape, (args) => {
|
|
300
|
-
const validatedArgs = validation_js_1.expireDisputeValidation.parse(args);
|
|
301
|
-
return expireDisputeHandler(validatedArgs);
|
|
302
|
-
});
|
|
303
|
-
server.tool("expire_dispute_batch", "Expire multiple disputes in a batch", validation_js_1.expireDisputeBatchValidation.shape, (args) => {
|
|
304
|
-
const validatedArgs = validation_js_1.expireDisputeBatchValidation.parse(args);
|
|
305
|
-
return expireDisputeBatchHandler(validatedArgs);
|
|
306
|
-
});
|
|
307
|
-
server.tool("resolve_dispute", "Resolve a dispute with mutual agreement", validation_js_1.resolveDisputeValidation.shape, (args) => {
|
|
308
|
-
const validatedArgs = validation_js_1.resolveDisputeValidation.parse(args);
|
|
309
|
-
return resolveDisputeHandler(validatedArgs);
|
|
310
|
-
});
|
|
311
|
-
server.tool("create_dispute_resolution_proposal", "Create a dispute resolution proposal signature", validation_js_1.createDisputeResolutionProposalValidation.shape, (args) => {
|
|
312
|
-
const validatedArgs = validation_js_1.createDisputeResolutionProposalValidation.parse(args);
|
|
313
|
-
return disputeResolutionProposalHandler(validatedArgs);
|
|
314
|
-
});
|
|
315
|
-
server.tool("revoke_voucher", "Revoke an existing voucher by seller assistant", validation_js_1.revokeVoucherValidation.shape, (args) => {
|
|
316
|
-
const validatedArgs = validation_js_1.revokeVoucherValidation.parse(args);
|
|
317
|
-
return revokeVoucherHandler(validatedArgs);
|
|
318
|
-
});
|
|
319
|
-
server.tool("commit_to_offer", "Commit to an offer to create an exchange", validation_js_1.commitToOfferValidation.shape, (args) => {
|
|
320
|
-
const validatedArgs = validation_js_1.commitToOfferValidation.parse(args);
|
|
321
|
-
return commitToOfferHandler(validatedArgs);
|
|
322
|
-
});
|
|
323
|
-
server.tool("cancel_voucher", "Cancel an existing voucher by buyer", validation_js_1.cancelVoucherValidation.shape, (args) => {
|
|
324
|
-
const validatedArgs = validation_js_1.cancelVoucherValidation.parse(args);
|
|
325
|
-
return cancelVoucherHandler(validatedArgs);
|
|
326
|
-
});
|
|
327
|
-
server.tool("redeem_voucher", "Redeem an existing voucher by buyer", validation_js_1.redeemVoucherValidation.shape, (args) => {
|
|
328
|
-
const validatedArgs = validation_js_1.redeemVoucherValidation.parse(args);
|
|
329
|
-
return redeemVoucherHandler(validatedArgs);
|
|
330
|
-
});
|
|
331
|
-
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) => {
|
|
256
|
+
server.tool("send_meta_transaction", "Send a meta transaction using Boson Protocol SDK", metaTx_js_1.sendMetaTransactionValidation.shape, this.createToolHandler(metaTx_js_1.createSendMetaTransactionHandler));
|
|
257
|
+
server.tool("send_native_meta_transaction", "Send a native meta transaction using Boson Protocol SDK", metaTx_js_1.sendNativeMetaTransactionValidation.shape, this.createToolHandler(metaTx_js_1.createSendNativeMetaTransactionHandler));
|
|
258
|
+
server.tool("send_forwarded_meta_transaction", "Send a forwarded meta transaction using Boson Protocol SDK", metaTx_js_1.sendForwardedMetaTransactionValidation.shape, this.createToolHandler(metaTx_js_1.createSendForwardedMetaTransactionHandler));
|
|
259
|
+
server.tool("withdraw_funds", "Withdraw funds from an entity treasury", validation_js_1.withdrawFundsValidation.shape, this.createToolHandler(funds_js_1.createWithdrawFundsHandler));
|
|
260
|
+
server.tool("deposit_funds", "Deposit funds to an entity treasury", validation_js_1.depositFundsValidation.shape, this.createToolHandler(funds_js_1.createDepositFundsHandler));
|
|
261
|
+
server.tool("extend_dispute_timeout", "Extend the timeout for a dispute", validation_js_1.extendDisputeTimeoutValidation.shape, this.createToolHandler(disputes_js_1.createExtendDisputeTimeoutHandler));
|
|
262
|
+
server.tool("expire_dispute", "Expire a dispute", validation_js_1.expireDisputeValidation.shape, this.createToolHandler(disputes_js_1.createExpireDisputeHandler));
|
|
263
|
+
server.tool("expire_dispute_batch", "Expire multiple disputes in a batch", validation_js_1.expireDisputeBatchValidation.shape, this.createToolHandler(disputes_js_1.createExpireDisputeBatchHandler));
|
|
264
|
+
server.tool("resolve_dispute", "Resolve a dispute with mutual agreement", validation_js_1.resolveDisputeValidation.shape, this.createToolHandler(disputes_js_1.createResolveDisputeHandler));
|
|
265
|
+
server.tool("create_dispute_resolution_proposal", "Create a dispute resolution proposal signature", validation_js_1.createDisputeResolutionProposalValidation.shape, this.createToolHandler(disputes_js_1.createDisputeResolutionProposalHandler));
|
|
266
|
+
server.tool("revoke_voucher", "Revoke an existing voucher by seller assistant", validation_js_1.revokeVoucherValidation.shape, this.createToolHandler(exchanges_js_1.createRevokeVoucherHandler));
|
|
267
|
+
server.tool("commit_to_offer", "Commit to an offer to create an exchange", validation_js_1.commitToOfferValidation.shape, this.createToolHandler(offers_js_1.createCommitToOfferHandler));
|
|
268
|
+
server.tool("cancel_voucher", "Cancel an existing voucher by buyer", validation_js_1.cancelVoucherValidation.shape, this.createToolHandler(exchanges_js_1.createCancelVoucherHandler));
|
|
269
|
+
server.tool("redeem_voucher", "Redeem an existing voucher by buyer", validation_js_1.redeemVoucherValidation.shape, this.createToolHandler(exchanges_js_1.createRedeemVoucherHandler));
|
|
270
|
+
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, (args) => {
|
|
332
271
|
const validatedArgs = validation_js_1.getSellersByAddressValidation.parse(args);
|
|
333
|
-
|
|
334
|
-
return {
|
|
335
|
-
content: [
|
|
336
|
-
{
|
|
337
|
-
type: "text",
|
|
338
|
-
text: result,
|
|
339
|
-
},
|
|
340
|
-
],
|
|
341
|
-
};
|
|
272
|
+
return this.createToolHandler(accounts_js_1.createGetSellersByAddressHandler)(validatedArgs);
|
|
342
273
|
});
|
|
343
|
-
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,
|
|
274
|
+
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, (args) => {
|
|
344
275
|
const validatedArgs = validation_js_1.getAllProductsWithNotVoidedVariantsValidation.parse(args);
|
|
345
|
-
|
|
346
|
-
return {
|
|
347
|
-
content: [
|
|
348
|
-
{
|
|
349
|
-
type: "text",
|
|
350
|
-
text: result,
|
|
351
|
-
},
|
|
352
|
-
],
|
|
353
|
-
};
|
|
276
|
+
return this.createToolHandler(offers_js_1.createGetAllProductsWithNotVoidedVariantsHandler)(validatedArgs);
|
|
354
277
|
});
|
|
355
278
|
server.tool("store_product_v1_metadata", "Store ProductV1 metadata to IPFS and return metadata URI and hash", validation_js_1.storeProductV1MetadataValidation.shape, (args) => {
|
|
356
279
|
const validatedArgs = validation_js_1.storeProductV1MetadataValidation.parse(args);
|
|
357
|
-
return
|
|
280
|
+
return this.createToolHandler(offers_js_1.createStoreProductV1MetadataHandler)(validatedArgs);
|
|
358
281
|
});
|
|
359
282
|
server.tool("store_bundle_metadata", "Store Bundle metadata to IPFS. You should call the store_bundle_item_* tools before calling this", validation_js_1.storeBundleMetadataValidation.shape, (args) => {
|
|
360
283
|
const validatedArgs = validation_js_1.storeBundleMetadataValidation.parse(args);
|
|
361
|
-
return
|
|
284
|
+
return this.createToolHandler(offers_js_1.createStoreBundleMetadataHandler)(validatedArgs);
|
|
362
285
|
});
|
|
363
286
|
server.tool("store_custom_metadata", "Store custom metadata to IPFS and return metadata URI and hash", validation_js_1.storeCustomMetadataValidation.shape, (args) => {
|
|
364
287
|
const validatedArgs = validation_js_1.storeCustomMetadataValidation.parse(args);
|
|
365
|
-
return
|
|
288
|
+
return this.createToolHandler(offers_js_1.createStoreCustomMetadataHandler)(validatedArgs);
|
|
366
289
|
});
|
|
367
290
|
server.tool("render_contractual_agreement", "Render a contractual agreement using renderContractualAgreement from Boson Protocol SDK", validation_js_1.renderContractualAgreementValidation.shape, (args) => {
|
|
368
291
|
const validatedArgs = validation_js_1.renderContractualAgreementValidation.parse(args);
|
|
369
|
-
return
|
|
292
|
+
return this.createToolHandler(offers_js_1.createRenderContractualAgreementHandler, true)(validatedArgs);
|
|
370
293
|
});
|
|
371
294
|
server.tool("store_bundle_item_product_v1_metadata", "Store Bundle Item ProductV1 metadata to IPFS, useful for store_bundle_metadata tool", validation_js_1.storeBundleItemProductV1MetadataValidation.shape, (args) => {
|
|
372
295
|
const validatedArgs = validation_js_1.storeBundleItemProductV1MetadataValidation.parse(args);
|
|
373
|
-
return
|
|
296
|
+
return this.createToolHandler(offers_js_1.createStoreBundleItemProductV1MetadataHandler)(validatedArgs);
|
|
374
297
|
});
|
|
375
298
|
server.tool("store_bundle_item_nft_metadata", "Store Bundle Item NFT metadata to IPFS, useful for store_bundle_metadata tool", validation_js_1.storeBundleItemNftMetadataValidation.shape, (args) => {
|
|
376
299
|
const validatedArgs = validation_js_1.storeBundleItemNftMetadataValidation.parse(args);
|
|
377
|
-
return
|
|
300
|
+
return this.createToolHandler(offers_js_1.createStoreBundleItemNftMetadataHandler)(validatedArgs);
|
|
378
301
|
});
|
|
379
302
|
// Add the funds resource with flexible query parameters
|
|
380
303
|
server.resource("funds", new mcp_js_1.ResourceTemplate(fundsFilter_js_1.fundsUriTemplate, {
|
|
381
304
|
list: undefined,
|
|
382
305
|
complete: {
|
|
306
|
+
configId: () => configValidation_js_1.supportedConfigIds,
|
|
383
307
|
fundsSkip: () => {
|
|
384
308
|
return ["0", "10", "20", "50", "100"];
|
|
385
309
|
},
|
|
@@ -395,60 +319,41 @@ class BosonMCPServer {
|
|
|
395
319
|
},
|
|
396
320
|
}), {
|
|
397
321
|
name: "Funds Entities",
|
|
398
|
-
description: "Get funds entities with flexible query parameters including pagination, ordering, and filtering",
|
|
322
|
+
description: "Get funds entities with flexible query parameters including pagination, ordering, and filtering. Requires configId parameter.",
|
|
399
323
|
mimeType: "application/json",
|
|
400
324
|
}, async (uri) => {
|
|
401
|
-
const
|
|
325
|
+
const params = {};
|
|
402
326
|
// Extract query parameters from URL
|
|
403
327
|
const urlParams = new URLSearchParams(uri.search);
|
|
404
|
-
if (urlParams.
|
|
405
|
-
|
|
328
|
+
if (urlParams.has("fundsSkip")) {
|
|
329
|
+
params.fundsSkip = parseInt(urlParams.get("fundsSkip"));
|
|
406
330
|
}
|
|
407
|
-
if (urlParams.
|
|
408
|
-
|
|
331
|
+
if (urlParams.has("fundsFirst")) {
|
|
332
|
+
params.fundsFirst = parseInt(urlParams.get("fundsFirst"));
|
|
409
333
|
}
|
|
410
|
-
if (urlParams.
|
|
411
|
-
|
|
334
|
+
if (urlParams.has("fundsOrderBy")) {
|
|
335
|
+
params.fundsOrderBy = urlParams.get("fundsOrderBy");
|
|
412
336
|
}
|
|
413
|
-
if (urlParams.
|
|
414
|
-
|
|
337
|
+
if (urlParams.has("fundsOrderDirection")) {
|
|
338
|
+
params.fundsOrderDirection = urlParams.get("fundsOrderDirection");
|
|
415
339
|
}
|
|
416
340
|
// Process filter parameters
|
|
417
341
|
const filterParams = (0, fundsFilter_js_1.fundsProcessFilterParams)(urlParams);
|
|
418
342
|
if (Object.keys(filterParams).length > 0) {
|
|
419
|
-
|
|
343
|
+
params.fundsFilter = filterParams;
|
|
420
344
|
}
|
|
421
|
-
const validatedArgs = validation_js_1.
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
mimeType: "application/json",
|
|
428
|
-
text: result,
|
|
429
|
-
},
|
|
430
|
-
],
|
|
431
|
-
};
|
|
432
|
-
});
|
|
433
|
-
// Add the signer-address resource with no parameters
|
|
434
|
-
server.resource("signer-address", resourceParameterTypes_js_1.SIGNER_ADDRESS_URI, async (url) => {
|
|
435
|
-
if (!this.coreSDK?.web3Lib?.getSignerAddress) {
|
|
436
|
-
throw new Error("SDK not initialized. Call initialize_sdk first.");
|
|
437
|
-
}
|
|
438
|
-
return {
|
|
439
|
-
contents: [
|
|
440
|
-
{
|
|
441
|
-
uri: url.toString(),
|
|
442
|
-
mimeType: "text/plain",
|
|
443
|
-
text: await this.coreSDK.web3Lib.getSignerAddress(),
|
|
444
|
-
},
|
|
445
|
-
],
|
|
446
|
-
};
|
|
345
|
+
const validatedArgs = validation_js_1.getFundsResourceValidation.parse(params);
|
|
346
|
+
return this.createResourceHandler((getSDK) => {
|
|
347
|
+
return async () => {
|
|
348
|
+
return await (0, funds_js_1.createGetFundsHandler)(getSDK)(validatedArgs);
|
|
349
|
+
};
|
|
350
|
+
})(uri);
|
|
447
351
|
});
|
|
448
352
|
// Add the disputes resource with flexible query parameters
|
|
449
353
|
server.resource("disputes", new mcp_js_1.ResourceTemplate(disputesFilter_js_1.disputesUriTemplate, {
|
|
450
354
|
list: undefined,
|
|
451
355
|
complete: {
|
|
356
|
+
configId: () => configValidation_js_1.supportedConfigIds,
|
|
452
357
|
disputesSkip: () => {
|
|
453
358
|
return ["0", "10", "20", "50", "100"];
|
|
454
359
|
},
|
|
@@ -464,22 +369,22 @@ class BosonMCPServer {
|
|
|
464
369
|
},
|
|
465
370
|
}), {
|
|
466
371
|
name: "Dispute Entities",
|
|
467
|
-
description: "Get dispute entities with flexible query parameters including pagination, ordering, and filtering",
|
|
372
|
+
description: "Get dispute entities with flexible query parameters including pagination, ordering, and filtering. Requires configId parameter.",
|
|
468
373
|
mimeType: "application/json",
|
|
469
374
|
}, async (uri) => {
|
|
470
375
|
const queryParams = {};
|
|
471
376
|
// Extract query parameters from URL
|
|
472
377
|
const urlParams = new URLSearchParams(uri.search);
|
|
473
|
-
if (urlParams.
|
|
378
|
+
if (urlParams.has("disputesSkip")) {
|
|
474
379
|
queryParams.disputesSkip = parseInt(urlParams.get("disputesSkip"));
|
|
475
380
|
}
|
|
476
|
-
if (urlParams.
|
|
381
|
+
if (urlParams.has("disputesFirst")) {
|
|
477
382
|
queryParams.disputesFirst = parseInt(urlParams.get("disputesFirst"));
|
|
478
383
|
}
|
|
479
|
-
if (urlParams.
|
|
384
|
+
if (urlParams.has("disputesOrderBy")) {
|
|
480
385
|
queryParams.disputesOrderBy = urlParams.get("disputesOrderBy");
|
|
481
386
|
}
|
|
482
|
-
if (urlParams.
|
|
387
|
+
if (urlParams.has("disputesOrderDirection")) {
|
|
483
388
|
queryParams.disputesOrderDirection = urlParams.get("disputesOrderDirection");
|
|
484
389
|
}
|
|
485
390
|
// Process filter parameters
|
|
@@ -487,22 +392,18 @@ class BosonMCPServer {
|
|
|
487
392
|
if (Object.keys(filterParams).length > 0) {
|
|
488
393
|
queryParams.disputesFilter = filterParams;
|
|
489
394
|
}
|
|
490
|
-
const validatedArgs = validation_js_1.
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
mimeType: "application/json",
|
|
497
|
-
text: result,
|
|
498
|
-
},
|
|
499
|
-
],
|
|
500
|
-
};
|
|
395
|
+
const validatedArgs = validation_js_1.getDisputesResourceValidation.parse(queryParams);
|
|
396
|
+
return this.createResourceHandler((getSDK) => {
|
|
397
|
+
return async () => {
|
|
398
|
+
return await (0, disputes_js_1.createGetDisputesHandler)(getSDK)(validatedArgs);
|
|
399
|
+
};
|
|
400
|
+
})(uri);
|
|
501
401
|
});
|
|
502
402
|
// Add the exchanges resource with flexible query parameters
|
|
503
403
|
server.resource("exchanges", new mcp_js_1.ResourceTemplate(exchangesFilter_js_1.exchangesUriTemplate, {
|
|
504
404
|
list: undefined,
|
|
505
405
|
complete: {
|
|
406
|
+
configId: () => configValidation_js_1.supportedConfigIds,
|
|
506
407
|
exchangesSkip: () => {
|
|
507
408
|
return ["0", "10", "20", "50", "100"];
|
|
508
409
|
},
|
|
@@ -518,22 +419,22 @@ class BosonMCPServer {
|
|
|
518
419
|
},
|
|
519
420
|
}), {
|
|
520
421
|
name: "Exchange Entities",
|
|
521
|
-
description: "Get exchange entities with flexible query parameters including pagination, ordering, and filtering",
|
|
422
|
+
description: "Get exchange entities with flexible query parameters including pagination, ordering, and filtering. Requires configId parameter.",
|
|
522
423
|
mimeType: "application/json",
|
|
523
424
|
}, async (uri) => {
|
|
524
425
|
const queryParams = {};
|
|
525
426
|
// Extract query parameters from URL
|
|
526
427
|
const urlParams = new URLSearchParams(uri.search);
|
|
527
|
-
if (urlParams.
|
|
428
|
+
if (urlParams.has("exchangesSkip")) {
|
|
528
429
|
queryParams.exchangesSkip = parseInt(urlParams.get("exchangesSkip"));
|
|
529
430
|
}
|
|
530
|
-
if (urlParams.
|
|
431
|
+
if (urlParams.has("exchangesFirst")) {
|
|
531
432
|
queryParams.exchangesFirst = parseInt(urlParams.get("exchangesFirst"));
|
|
532
433
|
}
|
|
533
|
-
if (urlParams.
|
|
434
|
+
if (urlParams.has("exchangesOrderBy")) {
|
|
534
435
|
queryParams.exchangesOrderBy = urlParams.get("exchangesOrderBy");
|
|
535
436
|
}
|
|
536
|
-
if (urlParams.
|
|
437
|
+
if (urlParams.has("exchangesOrderDirection")) {
|
|
537
438
|
queryParams.exchangesOrderDirection = urlParams.get("exchangesOrderDirection");
|
|
538
439
|
}
|
|
539
440
|
// Process filter parameters
|
|
@@ -541,22 +442,18 @@ class BosonMCPServer {
|
|
|
541
442
|
if (Object.keys(filterParams).length > 0) {
|
|
542
443
|
queryParams.exchangesFilter = filterParams;
|
|
543
444
|
}
|
|
544
|
-
const validatedArgs = validation_js_1.
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
mimeType: "application/json",
|
|
551
|
-
text: result,
|
|
552
|
-
},
|
|
553
|
-
],
|
|
554
|
-
};
|
|
445
|
+
const validatedArgs = validation_js_1.getExchangesResourceValidation.parse(queryParams);
|
|
446
|
+
return this.createResourceHandler((getSDK) => {
|
|
447
|
+
return async () => {
|
|
448
|
+
return await (0, exchanges_js_1.createGetExchangesHandler)(getSDK)(validatedArgs);
|
|
449
|
+
};
|
|
450
|
+
})(uri);
|
|
555
451
|
});
|
|
556
452
|
// Add the offers resource with flexible query parameters
|
|
557
453
|
server.resource("offers", new mcp_js_1.ResourceTemplate(offersFilter_js_1.offersUriTemplate, {
|
|
558
454
|
list: undefined,
|
|
559
455
|
complete: {
|
|
456
|
+
configId: () => configValidation_js_1.supportedConfigIds,
|
|
560
457
|
offersSkip: () => {
|
|
561
458
|
return ["0", "10", "20", "50", "100"];
|
|
562
459
|
},
|
|
@@ -587,39 +484,39 @@ class BosonMCPServer {
|
|
|
587
484
|
},
|
|
588
485
|
}), {
|
|
589
486
|
name: "Offer Entities",
|
|
590
|
-
description: "Get offer entities with flexible query parameters including pagination, ordering, and filtering. Supports exchanges filtering for exchangeId",
|
|
487
|
+
description: "Get offer entities with flexible query parameters including pagination, ordering, and filtering. Supports exchanges filtering for exchangeId. Requires configId parameter.",
|
|
591
488
|
mimeType: "application/json",
|
|
592
489
|
}, async (uri) => {
|
|
593
490
|
const queryParams = {};
|
|
594
491
|
// Extract query parameters from URL
|
|
595
492
|
const urlParams = new URLSearchParams(uri.search);
|
|
596
493
|
// Offers parameters
|
|
597
|
-
if (urlParams.
|
|
494
|
+
if (urlParams.has("offersSkip")) {
|
|
598
495
|
queryParams.offersSkip = parseInt(urlParams.get("offersSkip"));
|
|
599
496
|
}
|
|
600
|
-
if (urlParams.
|
|
497
|
+
if (urlParams.has("offersFirst")) {
|
|
601
498
|
queryParams.offersFirst = parseInt(urlParams.get("offersFirst"));
|
|
602
499
|
}
|
|
603
|
-
if (urlParams.
|
|
500
|
+
if (urlParams.has("offersOrderBy")) {
|
|
604
501
|
queryParams.offersOrderBy = urlParams.get("offersOrderBy");
|
|
605
502
|
}
|
|
606
|
-
if (urlParams.
|
|
503
|
+
if (urlParams.has("offersOrderDirection")) {
|
|
607
504
|
queryParams.offersOrderDirection = urlParams.get("offersOrderDirection");
|
|
608
505
|
}
|
|
609
506
|
// Exchanges parameters
|
|
610
|
-
if (urlParams.
|
|
507
|
+
if (urlParams.has("exchangesSkip")) {
|
|
611
508
|
queryParams.exchangesSkip = parseInt(urlParams.get("exchangesSkip"));
|
|
612
509
|
}
|
|
613
|
-
if (urlParams.
|
|
510
|
+
if (urlParams.has("exchangesFirst")) {
|
|
614
511
|
queryParams.exchangesFirst = parseInt(urlParams.get("exchangesFirst"));
|
|
615
512
|
}
|
|
616
|
-
if (urlParams.
|
|
513
|
+
if (urlParams.has("exchangesOrderBy")) {
|
|
617
514
|
queryParams.exchangesOrderBy = urlParams.get("exchangesOrderBy");
|
|
618
515
|
}
|
|
619
|
-
if (urlParams.
|
|
516
|
+
if (urlParams.has("exchangesOrderDirection")) {
|
|
620
517
|
queryParams.exchangesOrderDirection = urlParams.get("exchangesOrderDirection");
|
|
621
518
|
}
|
|
622
|
-
if (urlParams.
|
|
519
|
+
if (urlParams.has("includeExchanges")) {
|
|
623
520
|
queryParams.includeExchanges =
|
|
624
521
|
urlParams.get("includeExchanges") === "true";
|
|
625
522
|
}
|
|
@@ -633,21 +530,18 @@ class BosonMCPServer {
|
|
|
633
530
|
if (Object.keys(filterParams).length > 0) {
|
|
634
531
|
queryParams.offersFilter = filterParams;
|
|
635
532
|
}
|
|
636
|
-
const
|
|
637
|
-
return {
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
text: result,
|
|
643
|
-
},
|
|
644
|
-
],
|
|
645
|
-
};
|
|
533
|
+
const validatedArgs = validation_js_1.getOffersResourceValidation.parse(queryParams);
|
|
534
|
+
return this.createResourceHandler((getSDK) => {
|
|
535
|
+
return async () => {
|
|
536
|
+
return await (0, offers_js_1.createGetOffersHandler)(getSDK)(validatedArgs);
|
|
537
|
+
};
|
|
538
|
+
})(uri);
|
|
646
539
|
});
|
|
647
540
|
// Add the sellers resource with flexible query parameters
|
|
648
541
|
server.resource("sellers", new mcp_js_1.ResourceTemplate(sellersFilter_js_1.sellersUriTemplate, {
|
|
649
542
|
list: undefined,
|
|
650
543
|
complete: {
|
|
544
|
+
configId: () => configValidation_js_1.supportedConfigIds,
|
|
651
545
|
sellersSkip: () => {
|
|
652
546
|
return ["0", "10", "20", "50", "100"];
|
|
653
547
|
},
|
|
@@ -675,35 +569,35 @@ class BosonMCPServer {
|
|
|
675
569
|
},
|
|
676
570
|
}), {
|
|
677
571
|
name: "Seller Entities",
|
|
678
|
-
description: "Get seller entities with flexible query parameters including pagination, ordering, and filtering",
|
|
572
|
+
description: "Get seller entities with flexible query parameters including pagination, ordering, and filtering. Requires configId parameter.",
|
|
679
573
|
mimeType: "application/json",
|
|
680
574
|
}, async (uri) => {
|
|
681
575
|
const queryParams = {};
|
|
682
576
|
// Extract query parameters from URL
|
|
683
577
|
const urlParams = new URLSearchParams(uri.search);
|
|
684
|
-
if (urlParams.
|
|
578
|
+
if (urlParams.has("sellersSkip")) {
|
|
685
579
|
queryParams.sellersSkip = parseInt(urlParams.get("sellersSkip"));
|
|
686
580
|
}
|
|
687
|
-
if (urlParams.
|
|
581
|
+
if (urlParams.has("sellersFirst")) {
|
|
688
582
|
queryParams.sellersFirst = parseInt(urlParams.get("sellersFirst"));
|
|
689
583
|
}
|
|
690
|
-
if (urlParams.
|
|
584
|
+
if (urlParams.has("sellersOrderBy")) {
|
|
691
585
|
queryParams.sellersOrderBy = urlParams.get("sellersOrderBy");
|
|
692
586
|
}
|
|
693
|
-
if (urlParams.
|
|
587
|
+
if (urlParams.has("sellersOrderDirection")) {
|
|
694
588
|
queryParams.sellersOrderDirection = urlParams.get("sellersOrderDirection");
|
|
695
589
|
}
|
|
696
|
-
if (urlParams.
|
|
590
|
+
if (urlParams.has("includeExchanges")) {
|
|
697
591
|
queryParams.includeExchanges =
|
|
698
592
|
urlParams.get("includeExchanges") === "true";
|
|
699
593
|
}
|
|
700
|
-
if (urlParams.
|
|
594
|
+
if (urlParams.has("includeOffers")) {
|
|
701
595
|
queryParams.includeOffers = urlParams.get("includeOffers") === "true";
|
|
702
596
|
}
|
|
703
|
-
if (urlParams.
|
|
597
|
+
if (urlParams.has("includeFunds")) {
|
|
704
598
|
queryParams.includeFunds = urlParams.get("includeFunds") === "true";
|
|
705
599
|
}
|
|
706
|
-
if (urlParams.
|
|
600
|
+
if (urlParams.has("includeLogs")) {
|
|
707
601
|
queryParams.includeLogs = urlParams.get("includeLogs") === "true";
|
|
708
602
|
}
|
|
709
603
|
// Process filter parameters
|
|
@@ -711,22 +605,18 @@ class BosonMCPServer {
|
|
|
711
605
|
if (Object.keys(filterParams).length > 0) {
|
|
712
606
|
queryParams.sellersFilter = filterParams;
|
|
713
607
|
}
|
|
714
|
-
const validatedArgs = validation_js_1.
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
mimeType: "application/json",
|
|
721
|
-
text: result,
|
|
722
|
-
},
|
|
723
|
-
],
|
|
724
|
-
};
|
|
608
|
+
const validatedArgs = validation_js_1.getSellersResourceValidation.parse(queryParams);
|
|
609
|
+
return this.createResourceHandler((getSDK) => {
|
|
610
|
+
return async () => {
|
|
611
|
+
return await (0, accounts_js_1.createGetSellersHandler)(getSDK)(validatedArgs);
|
|
612
|
+
};
|
|
613
|
+
})(uri);
|
|
725
614
|
});
|
|
726
615
|
// Add the dispute_resolvers resource with flexible query parameters
|
|
727
616
|
server.resource("dispute_resolvers", new mcp_js_1.ResourceTemplate(disputeResolversFilter_js_1.disputeResolversUriTemplate, {
|
|
728
617
|
list: undefined,
|
|
729
618
|
complete: {
|
|
619
|
+
configId: () => configValidation_js_1.supportedConfigIds,
|
|
730
620
|
disputeResolversSkip: () => {
|
|
731
621
|
return ["0", "10", "20", "50", "100"];
|
|
732
622
|
},
|
|
@@ -748,16 +638,16 @@ class BosonMCPServer {
|
|
|
748
638
|
const queryParams = {};
|
|
749
639
|
// Extract query parameters from URL
|
|
750
640
|
const urlParams = new URLSearchParams(uri.search);
|
|
751
|
-
if (urlParams.
|
|
641
|
+
if (urlParams.has("disputeResolversSkip")) {
|
|
752
642
|
queryParams.disputeResolversSkip = parseInt(urlParams.get("disputeResolversSkip"));
|
|
753
643
|
}
|
|
754
|
-
if (urlParams.
|
|
644
|
+
if (urlParams.has("disputeResolversFirst")) {
|
|
755
645
|
queryParams.disputeResolversFirst = parseInt(urlParams.get("disputeResolversFirst"));
|
|
756
646
|
}
|
|
757
|
-
if (urlParams.
|
|
647
|
+
if (urlParams.has("disputeResolversOrderBy")) {
|
|
758
648
|
queryParams.disputeResolversOrderBy = urlParams.get("disputeResolversOrderBy");
|
|
759
649
|
}
|
|
760
|
-
if (urlParams.
|
|
650
|
+
if (urlParams.has("disputeResolversOrderDirection")) {
|
|
761
651
|
queryParams.disputeResolversOrderDirection = urlParams.get("disputeResolversOrderDirection");
|
|
762
652
|
}
|
|
763
653
|
// Process filter parameters
|
|
@@ -765,22 +655,18 @@ class BosonMCPServer {
|
|
|
765
655
|
if (Object.keys(filterParams).length > 0) {
|
|
766
656
|
queryParams.disputeResolversFilter = filterParams;
|
|
767
657
|
}
|
|
768
|
-
const validatedArgs = validation_js_1.
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
mimeType: "application/json",
|
|
775
|
-
text: result,
|
|
776
|
-
},
|
|
777
|
-
],
|
|
778
|
-
};
|
|
658
|
+
const validatedArgs = validation_js_1.getDisputeResolversResourceValidation.parse(queryParams);
|
|
659
|
+
return this.createResourceHandler((getSDK) => {
|
|
660
|
+
return async () => {
|
|
661
|
+
return await (0, accounts_js_1.createGetDisputeResolversHandler)(getSDK)(validatedArgs);
|
|
662
|
+
};
|
|
663
|
+
})(uri);
|
|
779
664
|
});
|
|
780
665
|
// Add the sellers-by-address resource with flexible query parameters
|
|
781
666
|
server.resource("sellers-by-address", new mcp_js_1.ResourceTemplate(sellersByAddressFilter_js_1.sellersByAddressUriTemplate, {
|
|
782
667
|
list: undefined,
|
|
783
668
|
complete: {
|
|
669
|
+
configId: () => configValidation_js_1.supportedConfigIds,
|
|
784
670
|
sellersSkip: () => {
|
|
785
671
|
return ["0", "10", "20", "50", "100"];
|
|
786
672
|
},
|
|
@@ -808,51 +694,43 @@ class BosonMCPServer {
|
|
|
808
694
|
},
|
|
809
695
|
}), {
|
|
810
696
|
name: "Sellers By Address",
|
|
811
|
-
description: "Get seller entities by address with flexible query parameters including pagination, ordering, and filtering",
|
|
697
|
+
description: "Get seller entities by address with flexible query parameters including pagination, ordering, and filtering. Requires configId parameter.",
|
|
812
698
|
mimeType: "application/json",
|
|
813
699
|
}, async (uri) => {
|
|
814
700
|
const urlParams = new URLSearchParams(uri.search);
|
|
815
701
|
const queryParams = {};
|
|
816
702
|
// Extract address parameter (required)
|
|
817
|
-
|
|
818
|
-
if (!address) {
|
|
703
|
+
if (!urlParams.has("address")) {
|
|
819
704
|
throw new Error("address parameter is required");
|
|
820
705
|
}
|
|
821
|
-
|
|
706
|
+
const address = urlParams.get("address");
|
|
822
707
|
// Extract pagination parameters
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
queryParams.sellersSkip = parseInt(sellersSkip, 10);
|
|
708
|
+
if (urlParams.has("sellersSkip")) {
|
|
709
|
+
queryParams.sellersSkip = parseInt(urlParams.get("sellersSkip"), 10);
|
|
826
710
|
}
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
queryParams.sellersFirst = parseInt(sellersFirst, 10);
|
|
711
|
+
if (urlParams.has("sellersFirst")) {
|
|
712
|
+
queryParams.sellersFirst = parseInt(urlParams.get("sellersFirst"), 10);
|
|
830
713
|
}
|
|
831
714
|
// Extract ordering parameters
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
queryParams.sellersOrderBy = sellersOrderBy;
|
|
715
|
+
if (urlParams.has("sellersOrderBy")) {
|
|
716
|
+
queryParams.sellersOrderBy = urlParams.get("sellersOrderBy");
|
|
835
717
|
}
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
queryParams.sellersOrderDirection = sellersOrderDirection;
|
|
718
|
+
if (urlParams.has("sellersOrderDirection")) {
|
|
719
|
+
queryParams.sellersOrderDirection = urlParams.get("sellersOrderDirection");
|
|
839
720
|
}
|
|
840
721
|
// Extract include flags
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
722
|
+
if (urlParams.has("includeExchanges")) {
|
|
723
|
+
queryParams.includeExchanges =
|
|
724
|
+
urlParams.get("includeExchanges") === "true";
|
|
844
725
|
}
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
queryParams.includeOffers = includeOffers === "true";
|
|
726
|
+
if (urlParams.has("includeOffers")) {
|
|
727
|
+
queryParams.includeOffers = urlParams.get("includeOffers") === "true";
|
|
848
728
|
}
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
queryParams.includeFunds = includeFunds === "true";
|
|
729
|
+
if (urlParams.has("includeFunds")) {
|
|
730
|
+
queryParams.includeFunds = urlParams.get("includeFunds") === "true";
|
|
852
731
|
}
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
queryParams.includeLogs = includeLogs === "true";
|
|
732
|
+
if (urlParams.has("includeLogs")) {
|
|
733
|
+
queryParams.includeLogs = urlParams.get("includeLogs") === "true";
|
|
856
734
|
}
|
|
857
735
|
// Process filter parameters
|
|
858
736
|
const sellersFilter = (0, sellersByAddressFilter_js_1.sellersByAddressProcessFilterParams)(urlParams);
|
|
@@ -860,23 +738,22 @@ class BosonMCPServer {
|
|
|
860
738
|
queryParams.sellersFilter = sellersFilter;
|
|
861
739
|
}
|
|
862
740
|
// Validate arguments
|
|
863
|
-
const validatedArgs = validation_js_1.
|
|
741
|
+
const validatedArgs = validation_js_1.getSellersByAddressResourceValidation.parse(queryParams);
|
|
864
742
|
// Call the handler
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
],
|
|
874
|
-
};
|
|
743
|
+
return this.createResourceHandler((getSDK) => {
|
|
744
|
+
return async () => {
|
|
745
|
+
return await (0, accounts_js_1.createGetSellersByAddressHandler)(getSDK)({
|
|
746
|
+
...validatedArgs,
|
|
747
|
+
address,
|
|
748
|
+
});
|
|
749
|
+
};
|
|
750
|
+
})(uri);
|
|
875
751
|
});
|
|
876
752
|
// Add the products resource with flexible query parameters
|
|
877
753
|
server.resource("products", new mcp_js_1.ResourceTemplate(productsFilter_js_1.productsUriTemplate, {
|
|
878
754
|
list: undefined,
|
|
879
755
|
complete: {
|
|
756
|
+
configId: () => configValidation_js_1.supportedConfigIds,
|
|
880
757
|
productsSkip: () => {
|
|
881
758
|
return ["0", "10", "20", "50", "100"];
|
|
882
759
|
},
|
|
@@ -892,28 +769,24 @@ class BosonMCPServer {
|
|
|
892
769
|
},
|
|
893
770
|
}), {
|
|
894
771
|
name: "Products",
|
|
895
|
-
description: "Get all products with not voided variants with flexible query parameters including pagination, ordering, and filtering",
|
|
772
|
+
description: "Get all products with not voided variants with flexible query parameters including pagination, ordering, and filtering. Requires configId parameter.",
|
|
896
773
|
mimeType: "application/json",
|
|
897
774
|
}, async (uri) => {
|
|
898
775
|
const urlParams = new URLSearchParams(uri.search);
|
|
899
776
|
const queryParams = {};
|
|
900
777
|
// Extract pagination parameters
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
queryParams.productsSkip = parseInt(productsSkip, 10);
|
|
778
|
+
if (urlParams.has("productsSkip")) {
|
|
779
|
+
queryParams.productsSkip = parseInt(urlParams.get("productsSkip"), 10);
|
|
904
780
|
}
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
queryParams.productsFirst = parseInt(productsFirst, 10);
|
|
781
|
+
if (urlParams.has("productsFirst")) {
|
|
782
|
+
queryParams.productsFirst = parseInt(urlParams.get("productsFirst"), 10);
|
|
908
783
|
}
|
|
909
784
|
// Extract ordering parameters
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
queryParams.productsOrderBy = productsOrderBy;
|
|
785
|
+
if (urlParams.has("productsOrderBy")) {
|
|
786
|
+
queryParams.productsOrderBy = urlParams.get("productsOrderBy");
|
|
913
787
|
}
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
queryParams.productsOrderDirection = productsOrderDirection;
|
|
788
|
+
if (urlParams.has("productsOrderDirection")) {
|
|
789
|
+
queryParams.productsOrderDirection = urlParams.get("productsOrderDirection");
|
|
917
790
|
}
|
|
918
791
|
// Process filter parameters
|
|
919
792
|
const productsFilter = (0, productsFilter_js_1.productsProcessFilterParams)(urlParams);
|
|
@@ -921,29 +794,24 @@ class BosonMCPServer {
|
|
|
921
794
|
queryParams.productsFilter = productsFilter;
|
|
922
795
|
}
|
|
923
796
|
// Validate arguments
|
|
924
|
-
const validatedArgs = validation_js_1.
|
|
797
|
+
const validatedArgs = validation_js_1.getAllProductsWithNotVoidedVariantsResourceValidation.parse(queryParams);
|
|
925
798
|
// Call the handler
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
mimeType: "application/json",
|
|
932
|
-
text: result,
|
|
933
|
-
},
|
|
934
|
-
],
|
|
935
|
-
};
|
|
799
|
+
return this.createResourceHandler((getSDK) => {
|
|
800
|
+
return async () => {
|
|
801
|
+
return await (0, offers_js_1.createGetAllProductsWithNotVoidedVariantsHandler)(getSDK)(validatedArgs);
|
|
802
|
+
};
|
|
803
|
+
})(uri);
|
|
936
804
|
});
|
|
937
805
|
}
|
|
938
806
|
async startStdio() {
|
|
939
807
|
const server = this.createServerInstance();
|
|
940
808
|
const transport = new stdio_js_1.StdioServerTransport();
|
|
941
809
|
await server.connect(transport);
|
|
942
|
-
log("Boson Protocol MCP server running on stdio");
|
|
810
|
+
(0, index_js_1.log)("Boson Protocol MCP server running on stdio");
|
|
943
811
|
}
|
|
944
812
|
async startHttp(port = 3000) {
|
|
945
|
-
const express = await Promise.resolve().then(() => __importStar(require("express")));
|
|
946
|
-
const app = express
|
|
813
|
+
const { default: express } = await Promise.resolve().then(() => __importStar(require("express")));
|
|
814
|
+
const app = express();
|
|
947
815
|
app.use(express.json());
|
|
948
816
|
// Get allowed hosts from environment variable
|
|
949
817
|
const allowedHosts = process.env.ALLOWED_HOSTS?.split(",").map((h) => h.trim()) || ["127.0.0.1", "localhost"];
|
|
@@ -1026,7 +894,7 @@ class BosonMCPServer {
|
|
|
1026
894
|
});
|
|
1027
895
|
// Clean up transport when closed
|
|
1028
896
|
transport.onclose = () => {
|
|
1029
|
-
log("transport has been closed");
|
|
897
|
+
(0, index_js_1.log)("transport has been closed");
|
|
1030
898
|
if (transport.sessionId) {
|
|
1031
899
|
delete transports[transport.sessionId];
|
|
1032
900
|
}
|
|
@@ -1084,10 +952,10 @@ class BosonMCPServer {
|
|
|
1084
952
|
// Get bind address from environment variable
|
|
1085
953
|
const bindAddress = process.env.BIND_ADDRESS || "127.0.0.1";
|
|
1086
954
|
app.listen(port, bindAddress, () => {
|
|
1087
|
-
log(`Boson MCP Server running on http://${bindAddress}:${port}`);
|
|
1088
|
-
log(`Web interface: http://${bindAddress}:${port}`);
|
|
1089
|
-
log(`MCP endpoint: http://${bindAddress}:${port}/mcp`);
|
|
1090
|
-
log(`Health check: http://${bindAddress}:${port}/health`);
|
|
955
|
+
(0, index_js_1.log)(`Boson MCP Server running on http://${bindAddress}:${port}`);
|
|
956
|
+
(0, index_js_1.log)(`Web interface: http://${bindAddress}:${port}`);
|
|
957
|
+
(0, index_js_1.log)(`MCP endpoint: http://${bindAddress}:${port}/mcp`);
|
|
958
|
+
(0, index_js_1.log)(`Health check: http://${bindAddress}:${port}/health`);
|
|
1091
959
|
});
|
|
1092
960
|
}
|
|
1093
961
|
async run() {
|
|
@@ -1107,6 +975,6 @@ exports.BosonMCPServer = BosonMCPServer;
|
|
|
1107
975
|
// Only run server if not in test environment
|
|
1108
976
|
if (process.env.NODE_ENV !== "test" && process.env.VITEST !== "true") {
|
|
1109
977
|
const server = new BosonMCPServer();
|
|
1110
|
-
server.run().catch(log);
|
|
978
|
+
server.run().catch(index_js_1.log);
|
|
1111
979
|
}
|
|
1112
980
|
//# sourceMappingURL=index.js.map
|