@yoryoboy/bi-mcp 1.6.0 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (178) hide show
  1. package/README.md +87 -87
  2. package/bin/bi-mcp.js +9 -9
  3. package/dist/.tsbuildinfo +1 -1
  4. package/dist/index.js +1 -1
  5. package/dist/index.js.map +1 -1
  6. package/dist/mcp-use.json +2 -2
  7. package/dist/public/icon.svg +6 -6
  8. package/dist/scripts/_helpers.js.map +1 -1
  9. package/dist/scripts/admin-profile-delete.js.map +1 -1
  10. package/dist/scripts/admin-profile-list.js.map +1 -1
  11. package/dist/scripts/admin-profile-upsert.js.map +1 -1
  12. package/dist/scripts/admin-vtex-list.js.map +1 -1
  13. package/dist/scripts/admin-vtex-upsert.js.map +1 -1
  14. package/dist/scripts/admin-vtex-validate.js.map +1 -1
  15. package/dist/scripts/run-migrations.js.map +1 -1
  16. package/dist/scripts/test-db-connection.js.map +1 -1
  17. package/dist/src/analytics/ga4-channel-groups.js.map +1 -1
  18. package/dist/src/analytics/ga4-report-utils.js.map +1 -1
  19. package/dist/src/config/benchmarks.js.map +1 -1
  20. package/dist/src/config/google-store.js.map +1 -1
  21. package/dist/src/config/google.js.map +1 -1
  22. package/dist/src/config/mercadolibre-profile-store.js.map +1 -1
  23. package/dist/src/config/mercadolibre.js.map +1 -1
  24. package/dist/src/config/meta.js.map +1 -1
  25. package/dist/src/config/profile-store.js.map +1 -1
  26. package/dist/src/config/vtex-crypto.js.map +1 -1
  27. package/dist/src/config/vtex-profile-store.js.map +1 -1
  28. package/dist/src/config/vtex.js.map +1 -1
  29. package/dist/src/db/client.js.map +1 -1
  30. package/dist/src/google-ads/report-utils.js +78 -0
  31. package/dist/src/google-ads/report-utils.js.map +7 -0
  32. package/dist/src/meta/meta-utils.js.map +1 -1
  33. package/dist/src/prompts/reporte-ventas.js.map +1 -1
  34. package/dist/src/search-console/search-console-utils.js +275 -0
  35. package/dist/src/search-console/search-console-utils.js.map +7 -0
  36. package/dist/src/services/analytics/ga4-client.js.map +1 -1
  37. package/dist/src/services/analytics/oauth.js.map +1 -1
  38. package/dist/src/services/google-ads/google-ads-client.js.map +1 -1
  39. package/dist/src/services/mercadolibre/mercadolibre-api.js.map +1 -1
  40. package/dist/src/services/mercadolibre/mercadolibre-items.js.map +1 -1
  41. package/dist/src/services/mercadolibre/mercadolibre-orders.js.map +1 -1
  42. package/dist/src/services/mercadolibre/mercadolibre-questions.js.map +1 -1
  43. package/dist/src/services/meta/meta-ads.js.map +1 -1
  44. package/dist/src/services/meta/meta-api.js.map +1 -1
  45. package/dist/src/services/search-console/search-console-client.js.map +1 -1
  46. package/dist/src/services/search-console/search-console-utils.js.map +1 -1
  47. package/dist/src/services/vtex/vtex-api.js.map +1 -1
  48. package/dist/src/services/vtex/vtex-catalog-write.js.map +1 -1
  49. package/dist/src/services/vtex/vtex-catalog.js.map +1 -1
  50. package/dist/src/services/vtex/vtex-logistics.js.map +1 -1
  51. package/dist/src/services/vtex/vtex-orders-write.js.map +1 -1
  52. package/dist/src/services/vtex/vtex-orders.js.map +1 -1
  53. package/dist/src/services/vtex/vtex-pricing-write.js.map +1 -1
  54. package/dist/src/services/vtex/vtex-pricing.js.map +1 -1
  55. package/dist/src/services/vtex/vtex-write.js.map +1 -1
  56. package/dist/src/tools/analytics/attribution-gaps.js.map +1 -1
  57. package/dist/src/tools/analytics/channel-mix.js.map +1 -1
  58. package/dist/src/tools/analytics/ecommerce-tracking-health.js.map +1 -1
  59. package/dist/src/tools/analytics/engagement-overview.js.map +1 -1
  60. package/dist/src/tools/analytics/index.js.map +1 -1
  61. package/dist/src/tools/analytics/list-accessible-properties.js.map +1 -1
  62. package/dist/src/tools/analytics/property-info.js.map +1 -1
  63. package/dist/src/tools/analytics/revenue-by-channel.js.map +1 -1
  64. package/dist/src/tools/analytics/revenue-overview.js.map +1 -1
  65. package/dist/src/tools/analytics/revenue-trend.js.map +1 -1
  66. package/dist/src/tools/analytics/source-medium-breakdown.js.map +1 -1
  67. package/dist/src/tools/analytics/top-landing-pages.js.map +1 -1
  68. package/dist/src/tools/config/check-database-connection.js.map +1 -1
  69. package/dist/src/tools/config/index.js.map +1 -1
  70. package/dist/src/tools/config/list-profiles.js.map +1 -1
  71. package/dist/src/tools/google-ads/account-overview.js.map +1 -1
  72. package/dist/src/tools/google-ads/account-risks.js.map +1 -1
  73. package/dist/src/tools/google-ads/break-even-analysis.js.map +1 -1
  74. package/dist/src/tools/google-ads/campaign-performance.js.map +1 -1
  75. package/dist/src/tools/google-ads/channel-mix.js.map +1 -1
  76. package/dist/src/tools/google-ads/compare-accounts.js.map +1 -1
  77. package/dist/src/tools/google-ads/customer-clients.js.map +1 -1
  78. package/dist/src/tools/google-ads/customer-info.js.map +1 -1
  79. package/dist/src/tools/google-ads/index.js.map +1 -1
  80. package/dist/src/tools/google-ads/scaling-health.js.map +1 -1
  81. package/dist/src/tools/google-ads/search-terms-summary.js.map +1 -1
  82. package/dist/src/tools/google-ads/time-series.js.map +1 -1
  83. package/dist/src/tools/index.js.map +1 -1
  84. package/dist/src/tools/mercadolibre/answer-question.js.map +1 -1
  85. package/dist/src/tools/mercadolibre/create-item.js.map +1 -1
  86. package/dist/src/tools/mercadolibre/estimate-listing-fee.js.map +1 -1
  87. package/dist/src/tools/mercadolibre/get-account-context.js.map +1 -1
  88. package/dist/src/tools/mercadolibre/get-category-requirements.js.map +1 -1
  89. package/dist/src/tools/mercadolibre/get-item-details.js.map +1 -1
  90. package/dist/src/tools/mercadolibre/get-item-visits.js.map +1 -1
  91. package/dist/src/tools/mercadolibre/get-listing-quality.js.map +1 -1
  92. package/dist/src/tools/mercadolibre/get-order-details.js.map +1 -1
  93. package/dist/src/tools/mercadolibre/get-orders-summary.js +366 -28
  94. package/dist/src/tools/mercadolibre/get-orders-summary.js.map +2 -2
  95. package/dist/src/tools/mercadolibre/get-sales-by-item.js.map +1 -1
  96. package/dist/src/tools/mercadolibre/get-sales-trend.js.map +1 -1
  97. package/dist/src/tools/mercadolibre/get-shipping-summary.js.map +1 -1
  98. package/dist/src/tools/mercadolibre/get-store-performance.js.map +1 -1
  99. package/dist/src/tools/mercadolibre/helpers.js.map +1 -1
  100. package/dist/src/tools/mercadolibre/index.js.map +1 -1
  101. package/dist/src/tools/mercadolibre/pause-or-reactivate-item.js.map +1 -1
  102. package/dist/src/tools/mercadolibre/predict-category.js.map +1 -1
  103. package/dist/src/tools/mercadolibre/profile-resolution.js.map +1 -1
  104. package/dist/src/tools/mercadolibre/search-items.js.map +1 -1
  105. package/dist/src/tools/mercadolibre/search-questions.js.map +1 -1
  106. package/dist/src/tools/mercadolibre/update-item-basic-fields.js.map +1 -1
  107. package/dist/src/tools/mercadolibre/update-item-description.js.map +1 -1
  108. package/dist/src/tools/mercadolibre/update-item-pictures.js.map +1 -1
  109. package/dist/src/tools/mercadolibre/validate-connection.js.map +1 -1
  110. package/dist/src/tools/mercadolibre/write-helpers.js.map +1 -1
  111. package/dist/src/tools/meta/account-overview.js.map +1 -1
  112. package/dist/src/tools/meta/ad-account-info.js.map +1 -1
  113. package/dist/src/tools/meta/ads-performance.js.map +1 -1
  114. package/dist/src/tools/meta/campaign-performance.js.map +1 -1
  115. package/dist/src/tools/meta/index.js.map +1 -1
  116. package/dist/src/tools/meta/list-accessible-ad-accounts.js.map +1 -1
  117. package/dist/src/tools/meta/list-accessible-businesses.js.map +1 -1
  118. package/dist/src/tools/meta/placement-mix.js.map +1 -1
  119. package/dist/src/tools/meta/time-series.js.map +1 -1
  120. package/dist/src/tools/search-console/country-breakdown.js.map +1 -1
  121. package/dist/src/tools/search-console/device-breakdown.js.map +1 -1
  122. package/dist/src/tools/search-console/high-impression-low-click-queries.js.map +1 -1
  123. package/dist/src/tools/search-console/index.js.map +1 -1
  124. package/dist/src/tools/search-console/list-accessible-sites.js.map +1 -1
  125. package/dist/src/tools/search-console/low-ctr-opportunities.js.map +1 -1
  126. package/dist/src/tools/search-console/page-performance.js.map +1 -1
  127. package/dist/src/tools/search-console/product-demand-low-capture-queries.js.map +1 -1
  128. package/dist/src/tools/search-console/query-page-matrix.js.map +1 -1
  129. package/dist/src/tools/search-console/query-performance.js.map +1 -1
  130. package/dist/src/tools/search-console/quick-win-opportunities.js.map +1 -1
  131. package/dist/src/tools/search-console/rising-non-brand-queries.js.map +1 -1
  132. package/dist/src/tools/search-console/search-performance.js.map +1 -1
  133. package/dist/src/tools/search-console/site-context.js.map +1 -1
  134. package/dist/src/tools/search-console/visibility-declines.js.map +1 -1
  135. package/dist/src/tools/vtex/activate-sku.js.map +1 -1
  136. package/dist/src/tools/vtex/add-order-tracking.js.map +1 -1
  137. package/dist/src/tools/vtex/associate-specification.js.map +1 -1
  138. package/dist/src/tools/vtex/attach-catalog-image.js.map +1 -1
  139. package/dist/src/tools/vtex/cancel-order.js.map +1 -1
  140. package/dist/src/tools/vtex/computed-price.js.map +1 -1
  141. package/dist/src/tools/vtex/create-brand.js.map +1 -1
  142. package/dist/src/tools/vtex/create-category.js.map +1 -1
  143. package/dist/src/tools/vtex/create-product-with-sku.js.map +1 -1
  144. package/dist/src/tools/vtex/create-product.js.map +1 -1
  145. package/dist/src/tools/vtex/create-sku.js.map +1 -1
  146. package/dist/src/tools/vtex/create-specification-value.js.map +1 -1
  147. package/dist/src/tools/vtex/create-specification.js.map +1 -1
  148. package/dist/src/tools/vtex/deactivate-sku.js.map +1 -1
  149. package/dist/src/tools/vtex/delete-fixed-price.js.map +1 -1
  150. package/dist/src/tools/vtex/index.js.map +1 -1
  151. package/dist/src/tools/vtex/inventory-check.js.map +1 -1
  152. package/dist/src/tools/vtex/invoice-order.js.map +1 -1
  153. package/dist/src/tools/vtex/order-details.js.map +1 -1
  154. package/dist/src/tools/vtex/orders-summary.js.map +1 -1
  155. package/dist/src/tools/vtex/product-offers.js.map +1 -1
  156. package/dist/src/tools/vtex/profile-resolution.js.map +1 -1
  157. package/dist/src/tools/vtex/sku-offers.js.map +1 -1
  158. package/dist/src/tools/vtex/sku-price.js.map +1 -1
  159. package/dist/src/tools/vtex/toggle-unlimited-quantity.js.map +1 -1
  160. package/dist/src/tools/vtex/update-inventory.js.map +1 -1
  161. package/dist/src/tools/vtex/update-lead-time.js.map +1 -1
  162. package/dist/src/tools/vtex/update-product-basic-fields.js.map +1 -1
  163. package/dist/src/tools/vtex/update-sku-basic-fields.js.map +1 -1
  164. package/dist/src/tools/vtex/update-sku-price.js.map +1 -1
  165. package/dist/src/tools/vtex/upsert-fixed-price.js.map +1 -1
  166. package/dist/src/tools/vtex/warehouse-inventory.js.map +1 -1
  167. package/dist/src/tools/vtex/write-helpers.js.map +1 -1
  168. package/dist/src/utils/case-conversion.js.map +1 -1
  169. package/dist/src/utils/currency.js.map +1 -1
  170. package/dist/src/utils/format-order-details.js.map +1 -1
  171. package/dist/src/utils/google-ads.js.map +1 -1
  172. package/dist/src/utils/money.js.map +1 -1
  173. package/dist/src/utils/order-status.js.map +1 -1
  174. package/dist/src/utils/pagination.js.map +1 -1
  175. package/dist/src/utils/strip-payload.js.map +1 -1
  176. package/dist/src/utils/type-guards.js.map +1 -1
  177. package/package.json +1 -1
  178. package/public/icon.svg +6 -6
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/tools/mercadolibre/get-item-visits.ts"],
4
- "sourcesContent": ["import { error, object } from \"mcp-use/server\";\r\nimport { z } from \"zod\";\r\n\r\nimport { getMercadoLibreAccessForProfile } from \"../../config/mercadolibre.js\";\r\nimport { formatMercadoLibreError } from \"../../services/mercadolibre/mercadolibre-api.js\";\r\nimport {\r\n getMercadoLibreItemVisitsWindow,\r\n getMercadoLibreUserItemsVisits,\r\n} from \"../../services/mercadolibre/mercadolibre-items.js\";\r\nimport { stripNulls } from \"../../utils/strip-payload.js\";\r\nimport { asArray, asRecord, mercadoLibreDateRegex, normalizeString, toNumber } from \"./helpers.js\";\r\nimport { resolveMercadoLibreProfileOrSelection } from \"./profile-resolution.js\";\r\nimport { mercadolibreProfileIdSchemaField } from \"./write-helpers.js\";\r\n\r\nconst MAX_ITEM_IDS = 20;\r\n\r\nexport const meliGetItemVisitsSchema = z.object({\r\n profileId: mercadolibreProfileIdSchemaField,\r\n startDate: z.string().regex(mercadoLibreDateRegex).optional().describe(\"Start date in YYYY-MM-DD format for seller-level visits.\"),\r\n endDate: z.string().regex(mercadoLibreDateRegex).optional().describe(\"End date in YYYY-MM-DD format for seller-level visits.\"),\r\n itemIds: z\r\n .array(z.string().trim().min(1).describe(\"MercadoLibre item id.\"))\r\n .max(MAX_ITEM_IDS)\r\n .optional()\r\n .describe(\"Optional list of item ids to fetch item-level visits windows for (up to 20).\"),\r\n last: z.number().int().min(1).max(365).optional().describe(\"Lookback window for itemIds mode. Defaults to 30 days.\"),\r\n ending: z.string().regex(mercadoLibreDateRegex).optional().describe(\"Optional ending date for itemIds mode in YYYY-MM-DD format.\"),\r\n});\r\n\r\nexport async function meliGetItemVisitsHandler(params: z.infer<typeof meliGetItemVisitsSchema>) {\r\n try {\r\n const profileResolution = await resolveMercadoLibreProfileOrSelection(params.profileId);\r\n if (!profileResolution.ok) {\r\n return profileResolution.response;\r\n }\r\n\r\n const profileId = profileResolution.value.profileId;\r\n const access = await getMercadoLibreAccessForProfile(profileId);\r\n\r\n if (params.itemIds?.length) {\r\n const uniqueItemIds = Array.from(new Set(params.itemIds));\r\n const rows = await Promise.all(\r\n uniqueItemIds.map(async (itemId) => {\r\n const response = await getMercadoLibreItemVisitsWindow(\r\n profileId,\r\n itemId,\r\n params.last ?? 30,\r\n \"day\",\r\n params.ending\r\n );\r\n return stripNulls({\r\n item_id: itemId,\r\n total_visits: toNumber(response.total_visits ?? response.visits),\r\n last: params.last ?? 30,\r\n unit: \"day\",\r\n ending: params.ending,\r\n time_window: asArray<Record<string, unknown>>(response.results ?? response.items).map((entry) => ({\r\n date: normalizeString(entry.date),\r\n visits: toNumber(entry.total_visits ?? entry.visits),\r\n })),\r\n });\r\n })\r\n );\r\n\r\n return object(\r\n stripNulls({\r\n profile_id: profileId,\r\n seller_id: access.sellerId,\r\n total_visits: rows.reduce((sum, row) => sum + toNumber(row.total_visits), 0),\r\n items: rows,\r\n })\r\n );\r\n }\r\n\r\n if (!params.startDate || !params.endDate) {\r\n return error(\"Provide itemIds, or provide both startDate and endDate for seller-level visits.\");\r\n }\r\n\r\n const visits = await getMercadoLibreUserItemsVisits(\r\n profileId,\r\n access.sellerId,\r\n params.startDate,\r\n params.endDate\r\n );\r\n const rows = asArray<Record<string, unknown>>(visits.results ?? visits.items ?? visits.visits);\r\n\r\n return object(\r\n stripNulls({\r\n profile_id: profileId,\r\n seller_id: access.sellerId,\r\n total_visits: toNumber(visits.total_visits) || rows.reduce((sum, row) => sum + toNumber(row.total_visits ?? row.visits), 0),\r\n item_visit_rows: rows.map((row) => ({\r\n item_id: normalizeString(row.item_id ?? row.id),\r\n total_visits: toNumber(row.total_visits ?? row.visits),\r\n })),\r\n })\r\n );\r\n } catch (err) {\r\n return error(formatMercadoLibreError(err, \"Failed to fetch MercadoLibre item visits\"));\r\n }\r\n}\r\n"],
4
+ "sourcesContent": ["import { error, object } from \"mcp-use/server\";\nimport { z } from \"zod\";\n\nimport { getMercadoLibreAccessForProfile } from \"../../config/mercadolibre.js\";\nimport { formatMercadoLibreError } from \"../../services/mercadolibre/mercadolibre-api.js\";\nimport {\n getMercadoLibreItemVisitsWindow,\n getMercadoLibreUserItemsVisits,\n} from \"../../services/mercadolibre/mercadolibre-items.js\";\nimport { stripNulls } from \"../../utils/strip-payload.js\";\nimport { asArray, asRecord, mercadoLibreDateRegex, normalizeString, toNumber } from \"./helpers.js\";\nimport { resolveMercadoLibreProfileOrSelection } from \"./profile-resolution.js\";\nimport { mercadolibreProfileIdSchemaField } from \"./write-helpers.js\";\n\nconst MAX_ITEM_IDS = 20;\n\nexport const meliGetItemVisitsSchema = z.object({\n profileId: mercadolibreProfileIdSchemaField,\n startDate: z.string().regex(mercadoLibreDateRegex).optional().describe(\"Start date in YYYY-MM-DD format for seller-level visits.\"),\n endDate: z.string().regex(mercadoLibreDateRegex).optional().describe(\"End date in YYYY-MM-DD format for seller-level visits.\"),\n itemIds: z\n .array(z.string().trim().min(1).describe(\"MercadoLibre item id.\"))\n .max(MAX_ITEM_IDS)\n .optional()\n .describe(\"Optional list of item ids to fetch item-level visits windows for (up to 20).\"),\n last: z.number().int().min(1).max(365).optional().describe(\"Lookback window for itemIds mode. Defaults to 30 days.\"),\n ending: z.string().regex(mercadoLibreDateRegex).optional().describe(\"Optional ending date for itemIds mode in YYYY-MM-DD format.\"),\n});\n\nexport async function meliGetItemVisitsHandler(params: z.infer<typeof meliGetItemVisitsSchema>) {\n try {\n const profileResolution = await resolveMercadoLibreProfileOrSelection(params.profileId);\n if (!profileResolution.ok) {\n return profileResolution.response;\n }\n\n const profileId = profileResolution.value.profileId;\n const access = await getMercadoLibreAccessForProfile(profileId);\n\n if (params.itemIds?.length) {\n const uniqueItemIds = Array.from(new Set(params.itemIds));\n const rows = await Promise.all(\n uniqueItemIds.map(async (itemId) => {\n const response = await getMercadoLibreItemVisitsWindow(\n profileId,\n itemId,\n params.last ?? 30,\n \"day\",\n params.ending\n );\n return stripNulls({\n item_id: itemId,\n total_visits: toNumber(response.total_visits ?? response.visits),\n last: params.last ?? 30,\n unit: \"day\",\n ending: params.ending,\n time_window: asArray<Record<string, unknown>>(response.results ?? response.items).map((entry) => ({\n date: normalizeString(entry.date),\n visits: toNumber(entry.total_visits ?? entry.visits),\n })),\n });\n })\n );\n\n return object(\n stripNulls({\n profile_id: profileId,\n seller_id: access.sellerId,\n total_visits: rows.reduce((sum, row) => sum + toNumber(row.total_visits), 0),\n items: rows,\n })\n );\n }\n\n if (!params.startDate || !params.endDate) {\n return error(\"Provide itemIds, or provide both startDate and endDate for seller-level visits.\");\n }\n\n const visits = await getMercadoLibreUserItemsVisits(\n profileId,\n access.sellerId,\n params.startDate,\n params.endDate\n );\n const rows = asArray<Record<string, unknown>>(visits.results ?? visits.items ?? visits.visits);\n\n return object(\n stripNulls({\n profile_id: profileId,\n seller_id: access.sellerId,\n total_visits: toNumber(visits.total_visits) || rows.reduce((sum, row) => sum + toNumber(row.total_visits ?? row.visits), 0),\n item_visit_rows: rows.map((row) => ({\n item_id: normalizeString(row.item_id ?? row.id),\n total_visits: toNumber(row.total_visits ?? row.visits),\n })),\n })\n );\n } catch (err) {\n return error(formatMercadoLibreError(err, \"Failed to fetch MercadoLibre item visits\"));\n }\n}\n"],
5
5
  "mappings": "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",
6
6
  "names": ["rows"]
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/tools/mercadolibre/get-listing-quality.ts"],
4
- "sourcesContent": ["import { error, object } from \"mcp-use/server\";\r\nimport { z } from \"zod\";\r\n\r\nimport { formatMercadoLibreError } from \"../../services/mercadolibre/mercadolibre-api.js\";\r\nimport { getMercadoLibreItemPerformance } from \"../../services/mercadolibre/mercadolibre-items.js\";\r\nimport { stripNulls } from \"../../utils/strip-payload.js\";\r\nimport { asArray, asRecord, normalizeString, toNumber } from \"./helpers.js\";\r\nimport { resolveMercadoLibreProfileOrSelection } from \"./profile-resolution.js\";\r\nimport { mercadolibreProfileIdSchemaField } from \"./write-helpers.js\";\r\n\r\nexport const meliGetListingQualitySchema = z.object({\r\n profileId: mercadolibreProfileIdSchemaField,\r\n itemId: z.string().trim().min(1).describe(\"MercadoLibre item id.\"),\r\n});\r\n\r\nexport async function meliGetListingQualityHandler(\r\n params: z.infer<typeof meliGetListingQualitySchema>\r\n) {\r\n try {\r\n const profileResolution = await resolveMercadoLibreProfileOrSelection(params.profileId);\r\n if (!profileResolution.ok) {\r\n return profileResolution.response;\r\n }\r\n\r\n const result = await getMercadoLibreItemPerformance(profileResolution.value.profileId, params.itemId);\r\n\r\n return object(\r\n stripNulls({\r\n profile_id: profileResolution.value.profileId,\r\n item_id: params.itemId,\r\n quality_score: toNumber(result.score ?? result.quality_score),\r\n level: normalizeString(result.level ?? result.status),\r\n health: normalizeString(result.health),\r\n sales: toNumber(result.sales),\r\n visits: toNumber(result.visits),\r\n warnings: asArray<Record<string, unknown>>(result.warnings ?? result.actions).map((entry) => ({\r\n type: normalizeString(entry.type ?? entry.id),\r\n message: normalizeString(entry.message ?? entry.text),\r\n severity: normalizeString(entry.severity),\r\n })),\r\n raw_summary: stripNulls({\r\n title: normalizeString(asRecord(result.item).title),\r\n status: normalizeString(asRecord(result.item).status),\r\n }),\r\n })\r\n );\r\n } catch (err) {\r\n return error(formatMercadoLibreError(err, `Failed to fetch listing quality for ${params.itemId}`));\r\n }\r\n}\r\n"],
4
+ "sourcesContent": ["import { error, object } from \"mcp-use/server\";\nimport { z } from \"zod\";\n\nimport { formatMercadoLibreError } from \"../../services/mercadolibre/mercadolibre-api.js\";\nimport { getMercadoLibreItemPerformance } from \"../../services/mercadolibre/mercadolibre-items.js\";\nimport { stripNulls } from \"../../utils/strip-payload.js\";\nimport { asArray, asRecord, normalizeString, toNumber } from \"./helpers.js\";\nimport { resolveMercadoLibreProfileOrSelection } from \"./profile-resolution.js\";\nimport { mercadolibreProfileIdSchemaField } from \"./write-helpers.js\";\n\nexport const meliGetListingQualitySchema = z.object({\n profileId: mercadolibreProfileIdSchemaField,\n itemId: z.string().trim().min(1).describe(\"MercadoLibre item id.\"),\n});\n\nexport async function meliGetListingQualityHandler(\n params: z.infer<typeof meliGetListingQualitySchema>\n) {\n try {\n const profileResolution = await resolveMercadoLibreProfileOrSelection(params.profileId);\n if (!profileResolution.ok) {\n return profileResolution.response;\n }\n\n const result = await getMercadoLibreItemPerformance(profileResolution.value.profileId, params.itemId);\n\n return object(\n stripNulls({\n profile_id: profileResolution.value.profileId,\n item_id: params.itemId,\n quality_score: toNumber(result.score ?? result.quality_score),\n level: normalizeString(result.level ?? result.status),\n health: normalizeString(result.health),\n sales: toNumber(result.sales),\n visits: toNumber(result.visits),\n warnings: asArray<Record<string, unknown>>(result.warnings ?? result.actions).map((entry) => ({\n type: normalizeString(entry.type ?? entry.id),\n message: normalizeString(entry.message ?? entry.text),\n severity: normalizeString(entry.severity),\n })),\n raw_summary: stripNulls({\n title: normalizeString(asRecord(result.item).title),\n status: normalizeString(asRecord(result.item).status),\n }),\n })\n );\n } catch (err) {\n return error(formatMercadoLibreError(err, `Failed to fetch listing quality for ${params.itemId}`));\n }\n}\n"],
5
5
  "mappings": "AAAA,SAAS,OAAO,cAAc;AAC9B,SAAS,SAAS;AAElB,SAAS,+BAA+B;AACxC,SAAS,sCAAsC;AAC/C,SAAS,kBAAkB;AAC3B,SAAS,SAAS,UAAU,iBAAiB,gBAAgB;AAC7D,SAAS,6CAA6C;AACtD,SAAS,wCAAwC;AAE1C,MAAM,8BAA8B,EAAE,OAAO;AAAA,EAClD,WAAW;AAAA,EACX,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,SAAS,uBAAuB;AACnE,CAAC;AAED,eAAsB,6BACpB,QACA;AACA,MAAI;AACF,UAAM,oBAAoB,MAAM,sCAAsC,OAAO,SAAS;AACtF,QAAI,CAAC,kBAAkB,IAAI;AACzB,aAAO,kBAAkB;AAAA,IAC3B;AAEA,UAAM,SAAS,MAAM,+BAA+B,kBAAkB,MAAM,WAAW,OAAO,MAAM;AAEpG,WAAO;AAAA,MACL,WAAW;AAAA,QACT,YAAY,kBAAkB,MAAM;AAAA,QACpC,SAAS,OAAO;AAAA,QAChB,eAAe,SAAS,OAAO,SAAS,OAAO,aAAa;AAAA,QAC5D,OAAO,gBAAgB,OAAO,SAAS,OAAO,MAAM;AAAA,QACpD,QAAQ,gBAAgB,OAAO,MAAM;AAAA,QACrC,OAAO,SAAS,OAAO,KAAK;AAAA,QAC5B,QAAQ,SAAS,OAAO,MAAM;AAAA,QAC9B,UAAU,QAAiC,OAAO,YAAY,OAAO,OAAO,EAAE,IAAI,CAAC,WAAW;AAAA,UAC5F,MAAM,gBAAgB,MAAM,QAAQ,MAAM,EAAE;AAAA,UAC5C,SAAS,gBAAgB,MAAM,WAAW,MAAM,IAAI;AAAA,UACpD,UAAU,gBAAgB,MAAM,QAAQ;AAAA,QAC1C,EAAE;AAAA,QACF,aAAa,WAAW;AAAA,UACtB,OAAO,gBAAgB,SAAS,OAAO,IAAI,EAAE,KAAK;AAAA,UAClD,QAAQ,gBAAgB,SAAS,OAAO,IAAI,EAAE,MAAM;AAAA,QACtD,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AAAA,EACF,SAAS,KAAK;AACZ,WAAO,MAAM,wBAAwB,KAAK,uCAAuC,OAAO,MAAM,EAAE,CAAC;AAAA,EACnG;AACF;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/tools/mercadolibre/get-order-details.ts"],
4
- "sourcesContent": ["import { error, object } from \"mcp-use/server\";\r\nimport { z } from \"zod\";\r\n\r\nimport { formatMercadoLibreError } from \"../../services/mercadolibre/mercadolibre-api.js\";\r\nimport { getMercadoLibreOrder, getMercadoLibreOrderDetailsBatch } from \"../../services/mercadolibre/mercadolibre-orders.js\";\r\nimport { stripNulls } from \"../../utils/strip-payload.js\";\r\nimport { asArray, asRecord, compactDateTime, normalizeString, toNumber } from \"./helpers.js\";\r\nimport { resolveMercadoLibreProfileOrSelection } from \"./profile-resolution.js\";\r\nimport { mercadolibreProfileIdSchemaField } from \"./write-helpers.js\";\r\n\r\nconst MAX_ORDER_IDS = 50;\r\n\r\nexport const meliGetOrderDetailsSchema = z.object({\r\n profileId: mercadolibreProfileIdSchemaField,\r\n orderIds: z\r\n .array(z.string().trim().min(1).describe(\"MercadoLibre order id.\"))\r\n .min(1)\r\n .max(MAX_ORDER_IDS)\r\n .describe(\"One or more MercadoLibre order ids (up to 50).\"),\r\n});\r\n\r\nfunction formatOrder(order: Record<string, unknown>) {\r\n return stripNulls({\r\n order_id: normalizeString(order.id),\r\n status: normalizeString(order.status),\r\n status_detail: normalizeString(order.status_detail),\r\n date_created: compactDateTime(order.date_created),\r\n date_closed: compactDateTime(order.date_closed),\r\n currency_id: normalizeString(order.currency_id, \"UNKNOWN\"),\r\n total_amount: toNumber(order.total_amount),\r\n paid_amount: toNumber(order.paid_amount),\r\n shipping: stripNulls({\r\n id: normalizeString(asRecord(order.shipping).id),\r\n status: normalizeString(asRecord(order.shipping).status),\r\n substatus: normalizeString(asRecord(order.shipping).substatus),\r\n mode: normalizeString(asRecord(order.shipping).mode),\r\n logistic_type: normalizeString(asRecord(order.shipping).logistic_type),\r\n }),\r\n buyer: stripNulls({\r\n id: normalizeString(asRecord(order.buyer).id),\r\n nickname: normalizeString(asRecord(order.buyer).nickname),\r\n }),\r\n seller: stripNulls({\r\n id: normalizeString(asRecord(order.seller).id),\r\n nickname: normalizeString(asRecord(order.seller).nickname),\r\n }),\r\n items: asArray<Record<string, unknown>>(order.order_items).map((entry) => {\r\n const item = asRecord(entry.item);\r\n return stripNulls({\r\n item_id: normalizeString(item.id),\r\n title: normalizeString(item.title),\r\n variation_id: normalizeString(item.variation_id),\r\n quantity: toNumber(entry.quantity),\r\n unit_price: toNumber(entry.unit_price),\r\n full_unit_price: toNumber(entry.full_unit_price),\r\n });\r\n }),\r\n payments: asArray<Record<string, unknown>>(order.payments).map((payment) =>\r\n stripNulls({\r\n id: normalizeString(payment.id),\r\n status: normalizeString(payment.status),\r\n payment_type: normalizeString(payment.payment_type),\r\n installments: toNumber(payment.installments),\r\n total_paid_amount: toNumber(payment.total_paid_amount),\r\n })\r\n ),\r\n tags: Array.isArray(order.tags) ? order.tags : undefined,\r\n });\r\n}\r\n\r\nexport async function meliGetOrderDetailsHandler(\r\n params: z.infer<typeof meliGetOrderDetailsSchema>\r\n) {\r\n try {\r\n const profileResolution = await resolveMercadoLibreProfileOrSelection(params.profileId);\r\n if (!profileResolution.ok) {\r\n return profileResolution.response;\r\n }\r\n\r\n const profileId = profileResolution.value.profileId;\r\n const uniqueOrderIds = Array.from(new Set(params.orderIds));\r\n\r\n if (uniqueOrderIds.length === 1) {\r\n const order = await getMercadoLibreOrder(profileId, uniqueOrderIds[0]);\r\n return object(\r\n stripNulls({\r\n metadata: {\r\n profile_id: profileId,\r\n requested: 1,\r\n successful: 1,\r\n failed: 0,\r\n },\r\n orders: [formatOrder(order)],\r\n })\r\n );\r\n }\r\n\r\n const batch = await getMercadoLibreOrderDetailsBatch(profileId, uniqueOrderIds, {\r\n maxConcurrency: 10,\r\n maxRetries: 2,\r\n });\r\n\r\n return object(\r\n stripNulls({\r\n metadata: {\r\n profile_id: profileId,\r\n requested: uniqueOrderIds.length,\r\n successful: batch.successful.length,\r\n failed: batch.failed.length,\r\n has_failures: batch.failed.length > 0,\r\n },\r\n orders: batch.successful.map((entry) => formatOrder(entry.document)),\r\n failures: batch.failed.map((failure) => ({\r\n order_id: failure.id,\r\n message: failure.message,\r\n status_code: failure.statusCode,\r\n attempts: failure.attempts,\r\n retryable: failure.retryable,\r\n })),\r\n })\r\n );\r\n } catch (err) {\r\n return error(formatMercadoLibreError(err, \"Failed to fetch MercadoLibre order details\"));\r\n }\r\n}\r\n"],
4
+ "sourcesContent": ["import { error, object } from \"mcp-use/server\";\nimport { z } from \"zod\";\n\nimport { formatMercadoLibreError } from \"../../services/mercadolibre/mercadolibre-api.js\";\nimport { getMercadoLibreOrder, getMercadoLibreOrderDetailsBatch } from \"../../services/mercadolibre/mercadolibre-orders.js\";\nimport { stripNulls } from \"../../utils/strip-payload.js\";\nimport { asArray, asRecord, compactDateTime, normalizeString, toNumber } from \"./helpers.js\";\nimport { resolveMercadoLibreProfileOrSelection } from \"./profile-resolution.js\";\nimport { mercadolibreProfileIdSchemaField } from \"./write-helpers.js\";\n\nconst MAX_ORDER_IDS = 50;\n\nexport const meliGetOrderDetailsSchema = z.object({\n profileId: mercadolibreProfileIdSchemaField,\n orderIds: z\n .array(z.string().trim().min(1).describe(\"MercadoLibre order id.\"))\n .min(1)\n .max(MAX_ORDER_IDS)\n .describe(\"One or more MercadoLibre order ids (up to 50).\"),\n});\n\nfunction formatOrder(order: Record<string, unknown>) {\n return stripNulls({\n order_id: normalizeString(order.id),\n status: normalizeString(order.status),\n status_detail: normalizeString(order.status_detail),\n date_created: compactDateTime(order.date_created),\n date_closed: compactDateTime(order.date_closed),\n currency_id: normalizeString(order.currency_id, \"UNKNOWN\"),\n total_amount: toNumber(order.total_amount),\n paid_amount: toNumber(order.paid_amount),\n shipping: stripNulls({\n id: normalizeString(asRecord(order.shipping).id),\n status: normalizeString(asRecord(order.shipping).status),\n substatus: normalizeString(asRecord(order.shipping).substatus),\n mode: normalizeString(asRecord(order.shipping).mode),\n logistic_type: normalizeString(asRecord(order.shipping).logistic_type),\n }),\n buyer: stripNulls({\n id: normalizeString(asRecord(order.buyer).id),\n nickname: normalizeString(asRecord(order.buyer).nickname),\n }),\n seller: stripNulls({\n id: normalizeString(asRecord(order.seller).id),\n nickname: normalizeString(asRecord(order.seller).nickname),\n }),\n items: asArray<Record<string, unknown>>(order.order_items).map((entry) => {\n const item = asRecord(entry.item);\n return stripNulls({\n item_id: normalizeString(item.id),\n title: normalizeString(item.title),\n variation_id: normalizeString(item.variation_id),\n quantity: toNumber(entry.quantity),\n unit_price: toNumber(entry.unit_price),\n full_unit_price: toNumber(entry.full_unit_price),\n });\n }),\n payments: asArray<Record<string, unknown>>(order.payments).map((payment) =>\n stripNulls({\n id: normalizeString(payment.id),\n status: normalizeString(payment.status),\n payment_type: normalizeString(payment.payment_type),\n installments: toNumber(payment.installments),\n total_paid_amount: toNumber(payment.total_paid_amount),\n })\n ),\n tags: Array.isArray(order.tags) ? order.tags : undefined,\n });\n}\n\nexport async function meliGetOrderDetailsHandler(\n params: z.infer<typeof meliGetOrderDetailsSchema>\n) {\n try {\n const profileResolution = await resolveMercadoLibreProfileOrSelection(params.profileId);\n if (!profileResolution.ok) {\n return profileResolution.response;\n }\n\n const profileId = profileResolution.value.profileId;\n const uniqueOrderIds = Array.from(new Set(params.orderIds));\n\n if (uniqueOrderIds.length === 1) {\n const order = await getMercadoLibreOrder(profileId, uniqueOrderIds[0]);\n return object(\n stripNulls({\n metadata: {\n profile_id: profileId,\n requested: 1,\n successful: 1,\n failed: 0,\n },\n orders: [formatOrder(order)],\n })\n );\n }\n\n const batch = await getMercadoLibreOrderDetailsBatch(profileId, uniqueOrderIds, {\n maxConcurrency: 10,\n maxRetries: 2,\n });\n\n return object(\n stripNulls({\n metadata: {\n profile_id: profileId,\n requested: uniqueOrderIds.length,\n successful: batch.successful.length,\n failed: batch.failed.length,\n has_failures: batch.failed.length > 0,\n },\n orders: batch.successful.map((entry) => formatOrder(entry.document)),\n failures: batch.failed.map((failure) => ({\n order_id: failure.id,\n message: failure.message,\n status_code: failure.statusCode,\n attempts: failure.attempts,\n retryable: failure.retryable,\n })),\n })\n );\n } catch (err) {\n return error(formatMercadoLibreError(err, \"Failed to fetch MercadoLibre order details\"));\n }\n}\n"],
5
5
  "mappings": "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",
6
6
  "names": []
7
7
  }