@yoryoboy/bi-mcp 1.7.0 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -1
- package/dist/index.js +27 -5
- package/dist/index.js.map +2 -2
- package/dist/mcp-use.json +6 -3
- package/dist/src/services/mercadolibre/mercadolibre-billing.js +77 -0
- package/dist/src/services/mercadolibre/mercadolibre-billing.js.map +7 -0
- package/dist/src/services/mercadolibre/mercadolibre-items.js +29 -2
- package/dist/src/services/mercadolibre/mercadolibre-items.js.map +2 -2
- package/dist/src/services/mercadolibre/mercadolibre-orders.js +18 -0
- package/dist/src/services/mercadolibre/mercadolibre-orders.js.map +2 -2
- package/dist/src/tools/mercadolibre/estimate-listing-fee.js +26 -34
- package/dist/src/tools/mercadolibre/estimate-listing-fee.js.map +2 -2
- package/dist/src/tools/mercadolibre/estimate-product-profitability.js +546 -0
- package/dist/src/tools/mercadolibre/estimate-product-profitability.js.map +7 -0
- package/dist/src/tools/mercadolibre/get-item-details.js +3 -25
- package/dist/src/tools/mercadolibre/get-item-details.js.map +2 -2
- package/dist/src/tools/mercadolibre/get-sales-by-item.js +129 -14
- package/dist/src/tools/mercadolibre/get-sales-by-item.js.map +2 -2
- package/dist/src/tools/mercadolibre/get-sales-trend.js +137 -14
- package/dist/src/tools/mercadolibre/get-sales-trend.js.map +2 -2
- package/dist/src/tools/mercadolibre/get-shipping-summary.js +450 -57
- package/dist/src/tools/mercadolibre/get-shipping-summary.js.map +2 -2
- package/dist/src/tools/mercadolibre/get-site-categories-and-listing-types.js +50 -0
- package/dist/src/tools/mercadolibre/get-site-categories-and-listing-types.js.map +7 -0
- package/dist/src/tools/mercadolibre/index.js +2 -0
- package/dist/src/tools/mercadolibre/index.js.map +2 -2
- package/dist/src/tools/mercadolibre/listing-fee-helpers.js +265 -0
- package/dist/src/tools/mercadolibre/listing-fee-helpers.js.map +7 -0
- package/dist/src/tools/mercadolibre/search-items.js +207 -52
- package/dist/src/tools/mercadolibre/search-items.js.map +2 -2
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/services/mercadolibre/mercadolibre-items.ts"],
|
|
4
|
-
"sourcesContent": ["import type { AxiosInstance } from \"axios\";\n\nimport {\n getMercadoLibreApiContext,\n parseMercadoLibreMultiget,\n runMercadoLibreBatch,\n type MercadoLibreBatchFetchOptions,\n} from \"./mercadolibre-api.js\";\n\nexport
|
|
5
|
-
"mappings": "AAEA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,
|
|
4
|
+
"sourcesContent": ["import type { AxiosInstance } from \"axios\";\n\nimport {\n getMercadoLibreApiContext,\n parseMercadoLibreMultiget,\n runMercadoLibreBatch,\n type MercadoLibreDocumentsBatchResult,\n type MercadoLibreBatchFetchOptions,\n} from \"./mercadolibre-api.js\";\n\nexport interface MercadoLibreItemsSearchParams {\n sellerId: string;\n status?: string;\n q?: string;\n category?: string;\n listingTypeId?: string;\n orders?: string;\n limit?: number;\n offset?: number;\n}\n\nasync function fetchItemsSearchPage(\n api: AxiosInstance,\n params: MercadoLibreItemsSearchParams\n): Promise<Record<string, unknown>> {\n const response = await api.get<Record<string, unknown>>(\n `/users/${params.sellerId}/items/search`,\n {\n params: {\n status: params.status,\n q: params.q,\n category: params.category,\n listing_type_id: params.listingTypeId,\n orders: params.orders,\n limit: params.limit ?? 20,\n offset: params.offset ?? 0,\n },\n }\n );\n return response.data;\n}\n\nexport async function searchMercadoLibreItems(\n profileId: string,\n params: MercadoLibreItemsSearchParams\n) {\n const { api } = await getMercadoLibreApiContext(profileId);\n return fetchItemsSearchPage(api, params);\n}\n\nexport async function searchMercadoLibreItemsBatch(\n profileId: string,\n params: MercadoLibreItemsSearchParams,\n offsets: number[],\n options: MercadoLibreBatchFetchOptions = {}\n): Promise<MercadoLibreDocumentsBatchResult<Record<string, unknown>>> {\n const { api } = await getMercadoLibreApiContext(profileId);\n const offsetIds = offsets.map((offset) => String(offset));\n\n return runMercadoLibreBatch(\n offsetIds,\n (offsetId) => fetchItemsSearchPage(api, { ...params, offset: Number(offsetId) }),\n options\n );\n}\n\nexport async function getMercadoLibreItem(profileId: string, itemId: string) {\n const { api } = await getMercadoLibreApiContext(profileId);\n const response = await api.get<Record<string, unknown>>(`/items/${itemId}`);\n return response.data;\n}\n\nexport async function getMercadoLibreItemDetailsBatch(\n profileId: string,\n itemIds: string[],\n attributes?: string[]\n) {\n const { api } = await getMercadoLibreApiContext(profileId);\n const response = await api.get<Array<{ code?: number; body?: Record<string, unknown> }>>(\"/items\", {\n params: {\n ids: itemIds.join(\",\"),\n attributes: attributes?.join(\",\"),\n },\n });\n return parseMercadoLibreMultiget(response);\n}\n\nexport async function getMercadoLibreItemDetailsWithFallbackBatch(\n profileId: string,\n itemIds: string[],\n options: MercadoLibreBatchFetchOptions = {}\n) {\n const { api } = await getMercadoLibreApiContext(profileId);\n return runMercadoLibreBatch(itemIds, (itemId) => getItem(api, itemId), options);\n}\n\nasync function getItem(api: AxiosInstance, itemId: string): Promise<Record<string, unknown>> {\n const response = await api.get<Record<string, unknown>>(`/items/${itemId}`);\n return response.data;\n}\n\nexport async function createMercadoLibreItem(profileId: string, payload: Record<string, unknown>) {\n const { api } = await getMercadoLibreApiContext(profileId);\n const response = await api.post<Record<string, unknown>>(\"/items\", payload);\n return response.data;\n}\n\nexport async function updateMercadoLibreItem(\n profileId: string,\n itemId: string,\n payload: Record<string, unknown>\n) {\n const { api } = await getMercadoLibreApiContext(profileId);\n const response = await api.put<Record<string, unknown>>(`/items/${itemId}`, payload);\n return response.data;\n}\n\nexport async function getMercadoLibreItemDescription(profileId: string, itemId: string) {\n const { api } = await getMercadoLibreApiContext(profileId);\n const response = await api.get<Record<string, unknown>>(`/items/${itemId}/description`);\n return response.data;\n}\n\nexport async function createMercadoLibreItemDescription(\n profileId: string,\n itemId: string,\n plainText: string\n) {\n const { api } = await getMercadoLibreApiContext(profileId);\n const response = await api.post<Record<string, unknown>>(`/items/${itemId}/description`, {\n plain_text: plainText,\n });\n return response.data;\n}\n\nexport async function replaceMercadoLibreItemDescription(\n profileId: string,\n itemId: string,\n plainText: string\n) {\n const { api } = await getMercadoLibreApiContext(profileId);\n const response = await api.put<Record<string, unknown>>(\n `/items/${itemId}/description?api_version=2`,\n {\n plain_text: plainText,\n }\n );\n return response.data;\n}\n\nexport async function addMercadoLibreItemPicture(\n profileId: string,\n itemId: string,\n source: string\n) {\n const { api } = await getMercadoLibreApiContext(profileId);\n const response = await api.post<Record<string, unknown>>(`/items/${itemId}/pictures`, {\n source,\n });\n return response.data;\n}\n\nexport async function searchMercadoLibreDomainDiscovery(\n profileId: string,\n query: string,\n limit: number,\n siteId = \"MLA\"\n) {\n const { api } = await getMercadoLibreApiContext(profileId);\n const response = await api.get<Array<Record<string, unknown>>>(`/sites/${siteId}/domain_discovery/search`, {\n params: { q: query, limit },\n });\n return response.data;\n}\n\nexport async function getMercadoLibreCategoryAttributes(profileId: string, categoryId: string) {\n const { api } = await getMercadoLibreApiContext(profileId);\n const response = await api.get<Array<Record<string, unknown>>>(`/categories/${categoryId}/attributes`);\n return response.data;\n}\n\nexport async function getMercadoLibreCategoryShippingPreferences(\n profileId: string,\n categoryId: string\n) {\n const { api } = await getMercadoLibreApiContext(profileId);\n const response = await api.get<Record<string, unknown>>(\n `/categories/${categoryId}/shipping_preferences`\n );\n return response.data;\n}\n\nexport async function estimateMercadoLibreListingPrice(\n profileId: string,\n params: Record<string, string | number | boolean | undefined>\n) {\n const { api } = await getMercadoLibreApiContext(profileId);\n const response = await api.get<Array<Record<string, unknown>> | Record<string, unknown>>(\"/sites/MLA/listing_prices\", {\n params,\n });\n return response.data;\n}\n\nexport async function getMercadoLibreUserItemsVisits(\n profileId: string,\n sellerId: string,\n dateFrom: string,\n dateTo: string\n) {\n const { api } = await getMercadoLibreApiContext(profileId);\n const response = await api.get<Record<string, unknown>>(`/users/${sellerId}/items_visits`, {\n params: {\n date_from: dateFrom,\n date_to: dateTo,\n },\n });\n return response.data;\n}\n\nexport async function getMercadoLibreItemVisitsWindow(\n profileId: string,\n itemId: string,\n last: number,\n unit = \"day\",\n ending?: string\n) {\n const { api } = await getMercadoLibreApiContext(profileId);\n const response = await api.get<Record<string, unknown>>(`/items/${itemId}/visits/time_window`, {\n params: {\n last,\n unit,\n ending,\n },\n });\n return response.data;\n}\n\nexport async function getMercadoLibreItemPerformance(profileId: string, itemId: string) {\n const { api } = await getMercadoLibreApiContext(profileId);\n const response = await api.get<Record<string, unknown>>(`/item/${itemId}/performance`);\n return response.data;\n}\n\n\nexport async function getMercadoLibreSiteCategoriesAndListingTypes(profileId: string, siteId = \"MLA\") {\n const { api } = await getMercadoLibreApiContext(profileId);\n const [categoriesResponse, listingTypesResponse] = await Promise.all([\n api.get<Array<Record<string, unknown>>>(`/sites/${siteId}/categories`),\n api.get<Array<Record<string, unknown>>>(`/sites/${siteId}/listing_types`),\n ]);\n\n return {\n siteId,\n categories: categoriesResponse.data,\n listingTypes: listingTypesResponse.data,\n };\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -56,6 +56,14 @@ async function getMercadoLibreShipment(profileId, shipmentId) {
|
|
|
56
56
|
const response = await api.get(`/shipments/${shipmentId}`);
|
|
57
57
|
return response.data;
|
|
58
58
|
}
|
|
59
|
+
async function getMercadoLibreShipmentBatch(profileId, shipmentIds, options = {}) {
|
|
60
|
+
const { api } = await getMercadoLibreApiContext(profileId);
|
|
61
|
+
return runMercadoLibreBatch(
|
|
62
|
+
shipmentIds,
|
|
63
|
+
(shipmentId) => api.get(`/shipments/${shipmentId}`).then((response) => response.data),
|
|
64
|
+
options
|
|
65
|
+
);
|
|
66
|
+
}
|
|
59
67
|
async function getMercadoLibreShipmentItems(profileId, shipmentId) {
|
|
60
68
|
const { api } = await getMercadoLibreApiContext(profileId);
|
|
61
69
|
const response = await api.get(`/shipments/${shipmentId}/items`);
|
|
@@ -66,12 +74,22 @@ async function getMercadoLibreShipmentCosts(profileId, shipmentId) {
|
|
|
66
74
|
const response = await api.get(`/shipments/${shipmentId}/costs`);
|
|
67
75
|
return response.data;
|
|
68
76
|
}
|
|
77
|
+
async function getMercadoLibreShipmentCostsBatch(profileId, shipmentIds, options = {}) {
|
|
78
|
+
const { api } = await getMercadoLibreApiContext(profileId);
|
|
79
|
+
return runMercadoLibreBatch(
|
|
80
|
+
shipmentIds,
|
|
81
|
+
(shipmentId) => api.get(`/shipments/${shipmentId}/costs`).then((response) => response.data),
|
|
82
|
+
options
|
|
83
|
+
);
|
|
84
|
+
}
|
|
69
85
|
export {
|
|
70
86
|
getMercadoLibreOrder,
|
|
71
87
|
getMercadoLibreOrderDetailsBatch,
|
|
72
88
|
getMercadoLibreOrderShipments,
|
|
73
89
|
getMercadoLibreShipment,
|
|
90
|
+
getMercadoLibreShipmentBatch,
|
|
74
91
|
getMercadoLibreShipmentCosts,
|
|
92
|
+
getMercadoLibreShipmentCostsBatch,
|
|
75
93
|
getMercadoLibreShipmentItems,
|
|
76
94
|
searchMercadoLibreOrders,
|
|
77
95
|
searchMercadoLibreOrdersBatch
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/services/mercadolibre/mercadolibre-orders.ts"],
|
|
4
|
-
"sourcesContent": ["import type { AxiosInstance } from \"axios\";\n\nimport {\n getMercadoLibreApiContext,\n runMercadoLibreBatch,\n type MercadoLibreDocumentsBatchResult,\n type MercadoLibreBatchFetchOptions,\n} from \"./mercadolibre-api.js\";\n\nexport interface MercadoLibreOrdersSearchParams {\n seller: string;\n from: string;\n to: string;\n status?: string;\n q?: string;\n sort?: string;\n offset?: number;\n limit?: number;\n}\n\nfunction orderSearchParams(params: MercadoLibreOrdersSearchParams) {\n return {\n seller: params.seller,\n \"order.date_created.from\": `${params.from}T00:00:00.000-00:00`,\n \"order.date_created.to\": `${params.to}T23:59:59.999-00:00`,\n \"order.status\": params.status,\n q: params.q,\n sort: params.sort,\n offset: params.offset ?? 0,\n limit: params.limit ?? 50,\n };\n}\n\nasync function fetchOrder(api: AxiosInstance, orderId: string): Promise<Record<string, unknown>> {\n const response = await api.get<Record<string, unknown>>(`/orders/${orderId}`);\n return response.data;\n}\n\nasync function fetchOrdersPage(\n api: AxiosInstance,\n params: MercadoLibreOrdersSearchParams\n): Promise<Record<string, unknown>> {\n const response = await api.get<Record<string, unknown>>(\"/orders/search\", {\n params: orderSearchParams(params),\n });\n return response.data;\n}\n\nexport async function searchMercadoLibreOrders(\n profileId: string,\n params: MercadoLibreOrdersSearchParams\n) {\n const { api, sellerId } = await getMercadoLibreApiContext(profileId);\n return fetchOrdersPage(api, { ...params, seller: params.seller || sellerId });\n}\n\nexport async function searchMercadoLibreOrdersBatch(\n profileId: string,\n params: MercadoLibreOrdersSearchParams,\n offsets: number[],\n options: MercadoLibreBatchFetchOptions = {}\n): Promise<MercadoLibreDocumentsBatchResult<Record<string, unknown>>> {\n const { api, sellerId } = await getMercadoLibreApiContext(profileId);\n const seller = params.seller || sellerId;\n const offsetIds = offsets.map((offset) => String(offset));\n\n return runMercadoLibreBatch(\n offsetIds,\n (offsetId) => fetchOrdersPage(api, { ...params, seller, offset: Number(offsetId) }),\n options\n );\n}\n\nexport async function getMercadoLibreOrder(profileId: string, orderId: string) {\n const { api } = await getMercadoLibreApiContext(profileId);\n return fetchOrder(api, orderId);\n}\n\nexport async function getMercadoLibreOrderDetailsBatch(\n profileId: string,\n orderIds: string[],\n options: MercadoLibreBatchFetchOptions = {}\n) {\n const { api } = await getMercadoLibreApiContext(profileId);\n return runMercadoLibreBatch(orderIds, (orderId) => fetchOrder(api, orderId), options);\n}\n\nexport async function getMercadoLibreOrderShipments(profileId: string, orderId: string) {\n const { api } = await getMercadoLibreApiContext(profileId);\n const response = await api.get<Record<string, unknown>>(`/orders/${orderId}/shipments`);\n return response.data;\n}\n\nexport async function getMercadoLibreShipment(profileId: string, shipmentId: string) {\n const { api } = await getMercadoLibreApiContext(profileId);\n const response = await api.get<Record<string, unknown>>(`/shipments/${shipmentId}`);\n return response.data;\n}\n\nexport async function getMercadoLibreShipmentItems(profileId: string, shipmentId: string) {\n const { api } = await getMercadoLibreApiContext(profileId);\n const response = await api.get<Record<string, unknown>>(`/shipments/${shipmentId}/items`);\n return response.data;\n}\n\nexport async function getMercadoLibreShipmentCosts(profileId: string, shipmentId: string) {\n const { api } = await getMercadoLibreApiContext(profileId);\n const response = await api.get<Record<string, unknown>>(`/shipments/${shipmentId}/costs`);\n return response.data;\n}\n"],
|
|
5
|
-
"mappings": "AAEA;AAAA,EACE;AAAA,EACA;AAAA,OAGK;AAaP,SAAS,kBAAkB,QAAwC;AACjE,SAAO;AAAA,IACL,QAAQ,OAAO;AAAA,IACf,2BAA2B,GAAG,OAAO,IAAI;AAAA,IACzC,yBAAyB,GAAG,OAAO,EAAE;AAAA,IACrC,gBAAgB,OAAO;AAAA,IACvB,GAAG,OAAO;AAAA,IACV,MAAM,OAAO;AAAA,IACb,QAAQ,OAAO,UAAU;AAAA,IACzB,OAAO,OAAO,SAAS;AAAA,EACzB;AACF;AAEA,eAAe,WAAW,KAAoB,SAAmD;AAC/F,QAAM,WAAW,MAAM,IAAI,IAA6B,WAAW,OAAO,EAAE;AAC5E,SAAO,SAAS;AAClB;AAEA,eAAe,gBACb,KACA,QACkC;AAClC,QAAM,WAAW,MAAM,IAAI,IAA6B,kBAAkB;AAAA,IACxE,QAAQ,kBAAkB,MAAM;AAAA,EAClC,CAAC;AACD,SAAO,SAAS;AAClB;AAEA,eAAsB,yBACpB,WACA,QACA;AACA,QAAM,EAAE,KAAK,SAAS,IAAI,MAAM,0BAA0B,SAAS;AACnE,SAAO,gBAAgB,KAAK,EAAE,GAAG,QAAQ,QAAQ,OAAO,UAAU,SAAS,CAAC;AAC9E;AAEA,eAAsB,8BACpB,WACA,QACA,SACA,UAAyC,CAAC,GAC0B;AACpE,QAAM,EAAE,KAAK,SAAS,IAAI,MAAM,0BAA0B,SAAS;AACnE,QAAM,SAAS,OAAO,UAAU;AAChC,QAAM,YAAY,QAAQ,IAAI,CAAC,WAAW,OAAO,MAAM,CAAC;AAExD,SAAO;AAAA,IACL;AAAA,IACA,CAAC,aAAa,gBAAgB,KAAK,EAAE,GAAG,QAAQ,QAAQ,QAAQ,OAAO,QAAQ,EAAE,CAAC;AAAA,IAClF;AAAA,EACF;AACF;AAEA,eAAsB,qBAAqB,WAAmB,SAAiB;AAC7E,QAAM,EAAE,IAAI,IAAI,MAAM,0BAA0B,SAAS;AACzD,SAAO,WAAW,KAAK,OAAO;AAChC;AAEA,eAAsB,iCACpB,WACA,UACA,UAAyC,CAAC,GAC1C;AACA,QAAM,EAAE,IAAI,IAAI,MAAM,0BAA0B,SAAS;AACzD,SAAO,qBAAqB,UAAU,CAAC,YAAY,WAAW,KAAK,OAAO,GAAG,OAAO;AACtF;AAEA,eAAsB,8BAA8B,WAAmB,SAAiB;AACtF,QAAM,EAAE,IAAI,IAAI,MAAM,0BAA0B,SAAS;AACzD,QAAM,WAAW,MAAM,IAAI,IAA6B,WAAW,OAAO,YAAY;AACtF,SAAO,SAAS;AAClB;AAEA,eAAsB,wBAAwB,WAAmB,YAAoB;AACnF,QAAM,EAAE,IAAI,IAAI,MAAM,0BAA0B,SAAS;AACzD,QAAM,WAAW,MAAM,IAAI,IAA6B,cAAc,UAAU,EAAE;AAClF,SAAO,SAAS;AAClB;AAEA,eAAsB,6BAA6B,WAAmB,YAAoB;AACxF,QAAM,EAAE,IAAI,IAAI,MAAM,0BAA0B,SAAS;AACzD,QAAM,WAAW,MAAM,IAAI,IAA6B,cAAc,UAAU,QAAQ;AACxF,SAAO,SAAS;AAClB;AAEA,eAAsB,6BAA6B,WAAmB,YAAoB;AACxF,QAAM,EAAE,IAAI,IAAI,MAAM,0BAA0B,SAAS;AACzD,QAAM,WAAW,MAAM,IAAI,IAA6B,cAAc,UAAU,QAAQ;AACxF,SAAO,SAAS;AAClB;",
|
|
4
|
+
"sourcesContent": ["import type { AxiosInstance } from \"axios\";\n\nimport {\n getMercadoLibreApiContext,\n runMercadoLibreBatch,\n type MercadoLibreDocumentsBatchResult,\n type MercadoLibreBatchFetchOptions,\n} from \"./mercadolibre-api.js\";\n\nexport interface MercadoLibreOrdersSearchParams {\n seller: string;\n from: string;\n to: string;\n status?: string;\n q?: string;\n sort?: string;\n offset?: number;\n limit?: number;\n}\n\nfunction orderSearchParams(params: MercadoLibreOrdersSearchParams) {\n return {\n seller: params.seller,\n \"order.date_created.from\": `${params.from}T00:00:00.000-00:00`,\n \"order.date_created.to\": `${params.to}T23:59:59.999-00:00`,\n \"order.status\": params.status,\n q: params.q,\n sort: params.sort,\n offset: params.offset ?? 0,\n limit: params.limit ?? 50,\n };\n}\n\nasync function fetchOrder(api: AxiosInstance, orderId: string): Promise<Record<string, unknown>> {\n const response = await api.get<Record<string, unknown>>(`/orders/${orderId}`);\n return response.data;\n}\n\nasync function fetchOrdersPage(\n api: AxiosInstance,\n params: MercadoLibreOrdersSearchParams\n): Promise<Record<string, unknown>> {\n const response = await api.get<Record<string, unknown>>(\"/orders/search\", {\n params: orderSearchParams(params),\n });\n return response.data;\n}\n\nexport async function searchMercadoLibreOrders(\n profileId: string,\n params: MercadoLibreOrdersSearchParams\n) {\n const { api, sellerId } = await getMercadoLibreApiContext(profileId);\n return fetchOrdersPage(api, { ...params, seller: params.seller || sellerId });\n}\n\nexport async function searchMercadoLibreOrdersBatch(\n profileId: string,\n params: MercadoLibreOrdersSearchParams,\n offsets: number[],\n options: MercadoLibreBatchFetchOptions = {}\n): Promise<MercadoLibreDocumentsBatchResult<Record<string, unknown>>> {\n const { api, sellerId } = await getMercadoLibreApiContext(profileId);\n const seller = params.seller || sellerId;\n const offsetIds = offsets.map((offset) => String(offset));\n\n return runMercadoLibreBatch(\n offsetIds,\n (offsetId) => fetchOrdersPage(api, { ...params, seller, offset: Number(offsetId) }),\n options\n );\n}\n\nexport async function getMercadoLibreOrder(profileId: string, orderId: string) {\n const { api } = await getMercadoLibreApiContext(profileId);\n return fetchOrder(api, orderId);\n}\n\nexport async function getMercadoLibreOrderDetailsBatch(\n profileId: string,\n orderIds: string[],\n options: MercadoLibreBatchFetchOptions = {}\n) {\n const { api } = await getMercadoLibreApiContext(profileId);\n return runMercadoLibreBatch(orderIds, (orderId) => fetchOrder(api, orderId), options);\n}\n\nexport async function getMercadoLibreOrderShipments(profileId: string, orderId: string) {\n const { api } = await getMercadoLibreApiContext(profileId);\n const response = await api.get<Record<string, unknown>>(`/orders/${orderId}/shipments`);\n return response.data;\n}\n\nexport async function getMercadoLibreShipment(profileId: string, shipmentId: string) {\n const { api } = await getMercadoLibreApiContext(profileId);\n const response = await api.get<Record<string, unknown>>(`/shipments/${shipmentId}`);\n return response.data;\n}\n\nexport async function getMercadoLibreShipmentBatch(\n profileId: string,\n shipmentIds: string[],\n options: MercadoLibreBatchFetchOptions = {}\n) {\n const { api } = await getMercadoLibreApiContext(profileId);\n return runMercadoLibreBatch(\n shipmentIds,\n (shipmentId) => api.get<Record<string, unknown>>(`/shipments/${shipmentId}`).then((response) => response.data),\n options\n );\n}\n\nexport async function getMercadoLibreShipmentItems(profileId: string, shipmentId: string) {\n const { api } = await getMercadoLibreApiContext(profileId);\n const response = await api.get<Record<string, unknown>>(`/shipments/${shipmentId}/items`);\n return response.data;\n}\n\nexport async function getMercadoLibreShipmentCosts(profileId: string, shipmentId: string) {\n const { api } = await getMercadoLibreApiContext(profileId);\n const response = await api.get<Record<string, unknown>>(`/shipments/${shipmentId}/costs`);\n return response.data;\n}\n\nexport async function getMercadoLibreShipmentCostsBatch(\n profileId: string,\n shipmentIds: string[],\n options: MercadoLibreBatchFetchOptions = {}\n) {\n const { api } = await getMercadoLibreApiContext(profileId);\n return runMercadoLibreBatch(\n shipmentIds,\n (shipmentId) =>\n api.get<Record<string, unknown>>(`/shipments/${shipmentId}/costs`).then((response) => response.data),\n options\n );\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,21 +1,22 @@
|
|
|
1
1
|
import { error, object } from "mcp-use/server";
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
import { formatMercadoLibreError } from "../../services/mercadolibre/mercadolibre-api.js";
|
|
4
|
-
import { estimateMercadoLibreListingPrice } from "../../services/mercadolibre/mercadolibre-items.js";
|
|
5
4
|
import { stripNulls } from "../../utils/strip-payload.js";
|
|
6
|
-
import {
|
|
5
|
+
import { buildMercadoLibreListingFeeEstimate } from "./listing-fee-helpers.js";
|
|
7
6
|
import { resolveMercadoLibreProfileOrSelection } from "./profile-resolution.js";
|
|
8
7
|
import { mercadolibreProfileIdSchemaField } from "./write-helpers.js";
|
|
9
8
|
const meliEstimateListingFeeSchema = z.object({
|
|
10
9
|
profileId: mercadolibreProfileIdSchemaField,
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
shippingMode: z.string().trim().min(1).optional().describe("
|
|
17
|
-
|
|
18
|
-
|
|
10
|
+
itemId: z.string().trim().min(1).optional().describe("Optional MercadoLibre item id. When provided, the tool autocompletes price, category, listing type, shipping mode, logistics, and package weight from the listing."),
|
|
11
|
+
query: z.string().trim().min(2).optional().describe("Optional product search phrase used to suggest MercadoLibre category candidates when categoryId is missing."),
|
|
12
|
+
price: z.number().positive().optional().describe("Product price used to estimate MercadoLibre fees. Overrides item price when itemId is provided."),
|
|
13
|
+
categoryId: z.string().trim().min(1).optional().describe("MercadoLibre category id. Improves fee precision and can change fixed fees and percentage fees."),
|
|
14
|
+
listingTypeId: z.string().trim().min(1).optional().describe("MercadoLibre listing type id, for example gold_special (Cl\xE1sica) or gold_pro (Premium). If omitted, MercadoLibre may return all listing types."),
|
|
15
|
+
shippingMode: z.string().trim().min(1).optional().describe("MercadoLibre shipping mode, for example me2. In Argentina this helps produce more accurate charges."),
|
|
16
|
+
logisticType: z.string().trim().min(1).optional().describe("MercadoLibre logistic type, for example fulfillment, drop_off, xd_drop_off, self_service, or default."),
|
|
17
|
+
billableWeight: z.number().positive().optional().describe("Billable package weight in grams. MercadoLibre Argentina uses this for more precise charges."),
|
|
18
|
+
currencyId: z.string().trim().min(3).optional().describe("Currency id for the quote. Defaults to item currency or ARS."),
|
|
19
|
+
tags: z.array(z.string().trim().min(1)).optional().describe("Optional MercadoLibre listing price tags such as installment/campaign tags when known.")
|
|
19
20
|
});
|
|
20
21
|
async function meliEstimateListingFeeHandler(params) {
|
|
21
22
|
try {
|
|
@@ -23,31 +24,22 @@ async function meliEstimateListingFeeHandler(params) {
|
|
|
23
24
|
if (!profileResolution.ok) {
|
|
24
25
|
return profileResolution.response;
|
|
25
26
|
}
|
|
26
|
-
const quotes = await estimateMercadoLibreListingPrice(profileResolution.value.profileId, {
|
|
27
|
-
price: params.price,
|
|
28
|
-
currency_id: params.currencyId ?? "ARS",
|
|
29
|
-
category_id: params.categoryId,
|
|
30
|
-
listing_type_id: params.listingTypeId,
|
|
31
|
-
logistic_type: params.logisticType,
|
|
32
|
-
shipping_mode: params.shippingMode,
|
|
33
|
-
billable_weight: params.billableWeight,
|
|
34
|
-
tags: params.tags?.join(",")
|
|
35
|
-
});
|
|
36
27
|
return object(
|
|
37
|
-
stripNulls(
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
28
|
+
stripNulls(
|
|
29
|
+
await buildMercadoLibreListingFeeEstimate({
|
|
30
|
+
profileId: profileResolution.value.profileId,
|
|
31
|
+
itemId: params.itemId,
|
|
32
|
+
query: params.query,
|
|
33
|
+
price: params.price,
|
|
34
|
+
categoryId: params.categoryId,
|
|
35
|
+
listingTypeId: params.listingTypeId,
|
|
36
|
+
shippingMode: params.shippingMode,
|
|
37
|
+
logisticType: params.logisticType,
|
|
38
|
+
billableWeight: params.billableWeight,
|
|
39
|
+
currencyId: params.currencyId,
|
|
40
|
+
tags: params.tags
|
|
41
|
+
})
|
|
42
|
+
)
|
|
51
43
|
);
|
|
52
44
|
} catch (err) {
|
|
53
45
|
return error(formatMercadoLibreError(err, "Failed to estimate MercadoLibre listing fee"));
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/tools/mercadolibre/estimate-listing-fee.ts"],
|
|
4
|
-
"sourcesContent": ["import { error, object } from \"mcp-use/server\";\nimport { z } from \"zod\";\n\nimport { formatMercadoLibreError } from \"../../services/mercadolibre/mercadolibre-api.js\";\nimport {
|
|
5
|
-
"mappings": "AAAA,SAAS,OAAO,cAAc;AAC9B,SAAS,SAAS;AAElB,SAAS,+BAA+B;AACxC,SAAS,
|
|
4
|
+
"sourcesContent": ["import { error, object } from \"mcp-use/server\";\nimport { z } from \"zod\";\n\nimport { formatMercadoLibreError } from \"../../services/mercadolibre/mercadolibre-api.js\";\nimport { stripNulls } from \"../../utils/strip-payload.js\";\nimport { buildMercadoLibreListingFeeEstimate } from \"./listing-fee-helpers.js\";\nimport { resolveMercadoLibreProfileOrSelection } from \"./profile-resolution.js\";\nimport { mercadolibreProfileIdSchemaField } from \"./write-helpers.js\";\n\nexport const meliEstimateListingFeeSchema = z.object({\n profileId: mercadolibreProfileIdSchemaField,\n itemId: z\n .string()\n .trim()\n .min(1)\n .optional()\n .describe(\"Optional MercadoLibre item id. When provided, the tool autocompletes price, category, listing type, shipping mode, logistics, and package weight from the listing.\"),\n query: z\n .string()\n .trim()\n .min(2)\n .optional()\n .describe(\"Optional product search phrase used to suggest MercadoLibre category candidates when categoryId is missing.\"),\n price: z\n .number()\n .positive()\n .optional()\n .describe(\"Product price used to estimate MercadoLibre fees. Overrides item price when itemId is provided.\"),\n categoryId: z\n .string()\n .trim()\n .min(1)\n .optional()\n .describe(\"MercadoLibre category id. Improves fee precision and can change fixed fees and percentage fees.\"),\n listingTypeId: z\n .string()\n .trim()\n .min(1)\n .optional()\n .describe(\"MercadoLibre listing type id, for example gold_special (Cl\u00E1sica) or gold_pro (Premium). If omitted, MercadoLibre may return all listing types.\"),\n shippingMode: z\n .string()\n .trim()\n .min(1)\n .optional()\n .describe(\"MercadoLibre shipping mode, for example me2. In Argentina this helps produce more accurate charges.\"),\n logisticType: z\n .string()\n .trim()\n .min(1)\n .optional()\n .describe(\"MercadoLibre logistic type, for example fulfillment, drop_off, xd_drop_off, self_service, or default.\"),\n billableWeight: z\n .number()\n .positive()\n .optional()\n .describe(\"Billable package weight in grams. MercadoLibre Argentina uses this for more precise charges.\"),\n currencyId: z\n .string()\n .trim()\n .min(3)\n .optional()\n .describe(\"Currency id for the quote. Defaults to item currency or ARS.\"),\n tags: z\n .array(z.string().trim().min(1))\n .optional()\n .describe(\"Optional MercadoLibre listing price tags such as installment/campaign tags when known.\"),\n});\n\nexport async function meliEstimateListingFeeHandler(\n params: z.infer<typeof meliEstimateListingFeeSchema>\n) {\n try {\n const profileResolution = await resolveMercadoLibreProfileOrSelection(params.profileId);\n if (!profileResolution.ok) {\n return profileResolution.response;\n }\n\n return object(\n stripNulls(\n await buildMercadoLibreListingFeeEstimate({\n profileId: profileResolution.value.profileId,\n itemId: params.itemId,\n query: params.query,\n price: params.price,\n categoryId: params.categoryId,\n listingTypeId: params.listingTypeId,\n shippingMode: params.shippingMode,\n logisticType: params.logisticType,\n billableWeight: params.billableWeight,\n currencyId: params.currencyId,\n tags: params.tags,\n })\n ) as unknown as Record<string, unknown>\n );\n } catch (err) {\n return error(formatMercadoLibreError(err, \"Failed to estimate MercadoLibre listing fee\"));\n }\n}\n"],
|
|
5
|
+
"mappings": "AAAA,SAAS,OAAO,cAAc;AAC9B,SAAS,SAAS;AAElB,SAAS,+BAA+B;AACxC,SAAS,kBAAkB;AAC3B,SAAS,2CAA2C;AACpD,SAAS,6CAA6C;AACtD,SAAS,wCAAwC;AAE1C,MAAM,+BAA+B,EAAE,OAAO;AAAA,EACnD,WAAW;AAAA,EACX,QAAQ,EACL,OAAO,EACP,KAAK,EACL,IAAI,CAAC,EACL,SAAS,EACT,SAAS,oKAAoK;AAAA,EAChL,OAAO,EACJ,OAAO,EACP,KAAK,EACL,IAAI,CAAC,EACL,SAAS,EACT,SAAS,6GAA6G;AAAA,EACzH,OAAO,EACJ,OAAO,EACP,SAAS,EACT,SAAS,EACT,SAAS,iGAAiG;AAAA,EAC7G,YAAY,EACT,OAAO,EACP,KAAK,EACL,IAAI,CAAC,EACL,SAAS,EACT,SAAS,iGAAiG;AAAA,EAC7G,eAAe,EACZ,OAAO,EACP,KAAK,EACL,IAAI,CAAC,EACL,SAAS,EACT,SAAS,mJAAgJ;AAAA,EAC5J,cAAc,EACX,OAAO,EACP,KAAK,EACL,IAAI,CAAC,EACL,SAAS,EACT,SAAS,qGAAqG;AAAA,EACjH,cAAc,EACX,OAAO,EACP,KAAK,EACL,IAAI,CAAC,EACL,SAAS,EACT,SAAS,uGAAuG;AAAA,EACnH,gBAAgB,EACb,OAAO,EACP,SAAS,EACT,SAAS,EACT,SAAS,8FAA8F;AAAA,EAC1G,YAAY,EACT,OAAO,EACP,KAAK,EACL,IAAI,CAAC,EACL,SAAS,EACT,SAAS,8DAA8D;AAAA,EAC1E,MAAM,EACH,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAC9B,SAAS,EACT,SAAS,wFAAwF;AACtG,CAAC;AAED,eAAsB,8BACpB,QACA;AACA,MAAI;AACF,UAAM,oBAAoB,MAAM,sCAAsC,OAAO,SAAS;AACtF,QAAI,CAAC,kBAAkB,IAAI;AACzB,aAAO,kBAAkB;AAAA,IAC3B;AAEA,WAAO;AAAA,MACL;AAAA,QACE,MAAM,oCAAoC;AAAA,UACxC,WAAW,kBAAkB,MAAM;AAAA,UACnC,QAAQ,OAAO;AAAA,UACf,OAAO,OAAO;AAAA,UACd,OAAO,OAAO;AAAA,UACd,YAAY,OAAO;AAAA,UACnB,eAAe,OAAO;AAAA,UACtB,cAAc,OAAO;AAAA,UACrB,cAAc,OAAO;AAAA,UACrB,gBAAgB,OAAO;AAAA,UACvB,YAAY,OAAO;AAAA,UACnB,MAAM,OAAO;AAAA,QACf,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF,SAAS,KAAK;AACZ,WAAO,MAAM,wBAAwB,KAAK,6CAA6C,CAAC;AAAA,EAC1F;AACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|