@yoryoboy/bi-mcp 1.5.2 → 1.6.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 (182) 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/decrypt-secret.js +36 -0
  16. package/dist/scripts/decrypt-secret.js.map +7 -0
  17. package/dist/scripts/run-migrations.js.map +1 -1
  18. package/dist/scripts/test-db-connection.js.map +1 -1
  19. package/dist/src/analytics/ga4-channel-groups.js.map +1 -1
  20. package/dist/src/analytics/ga4-report-utils.js.map +1 -1
  21. package/dist/src/config/benchmarks.js.map +1 -1
  22. package/dist/src/config/google-store.js.map +1 -1
  23. package/dist/src/config/google.js.map +1 -1
  24. package/dist/src/config/mercadolibre-profile-store.js.map +1 -1
  25. package/dist/src/config/mercadolibre.js.map +1 -1
  26. package/dist/src/config/meta.js.map +1 -1
  27. package/dist/src/config/profile-store.js.map +1 -1
  28. package/dist/src/config/vtex-crypto.js.map +1 -1
  29. package/dist/src/config/vtex-profile-store.js.map +1 -1
  30. package/dist/src/config/vtex.js.map +1 -1
  31. package/dist/src/db/client.js.map +1 -1
  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/services/analytics/ga4-client.js.map +1 -1
  35. package/dist/src/services/analytics/oauth.js.map +1 -1
  36. package/dist/src/services/google-ads/google-ads-client.js.map +1 -1
  37. package/dist/src/services/mercadolibre/mercadolibre-api.js.map +1 -1
  38. package/dist/src/services/mercadolibre/mercadolibre-items.js.map +1 -1
  39. package/dist/src/services/mercadolibre/mercadolibre-orders.js +19 -5
  40. package/dist/src/services/mercadolibre/mercadolibre-orders.js.map +2 -2
  41. package/dist/src/services/mercadolibre/mercadolibre-questions.js.map +1 -1
  42. package/dist/src/services/meta/meta-ads.js.map +1 -1
  43. package/dist/src/services/meta/meta-api.js.map +1 -1
  44. package/dist/src/services/search-console/search-console-client.js.map +1 -1
  45. package/dist/src/services/search-console/search-console-utils.js.map +1 -1
  46. package/dist/src/services/vtex/vtex-api.js.map +1 -1
  47. package/dist/src/services/vtex/vtex-catalog-write.js.map +1 -1
  48. package/dist/src/services/vtex/vtex-catalog.js.map +1 -1
  49. package/dist/src/services/vtex/vtex-logistics.js.map +1 -1
  50. package/dist/src/services/vtex/vtex-orders-write.js.map +1 -1
  51. package/dist/src/services/vtex/vtex-orders.js.map +1 -1
  52. package/dist/src/services/vtex/vtex-pricing-write.js.map +1 -1
  53. package/dist/src/services/vtex/vtex-pricing.js.map +1 -1
  54. package/dist/src/services/vtex/vtex-write.js.map +1 -1
  55. package/dist/src/tools/analytics/attribution-gaps.js.map +1 -1
  56. package/dist/src/tools/analytics/channel-mix.js.map +1 -1
  57. package/dist/src/tools/analytics/ecommerce-tracking-health.js.map +1 -1
  58. package/dist/src/tools/analytics/engagement-overview.js.map +1 -1
  59. package/dist/src/tools/analytics/index.js.map +1 -1
  60. package/dist/src/tools/analytics/list-accessible-properties.js.map +1 -1
  61. package/dist/src/tools/analytics/property-info.js.map +1 -1
  62. package/dist/src/tools/analytics/revenue-by-channel.js.map +1 -1
  63. package/dist/src/tools/analytics/revenue-overview.js.map +1 -1
  64. package/dist/src/tools/analytics/revenue-trend.js.map +1 -1
  65. package/dist/src/tools/analytics/source-medium-breakdown.js.map +1 -1
  66. package/dist/src/tools/analytics/top-landing-pages.js.map +1 -1
  67. package/dist/src/tools/config/check-database-connection.js.map +1 -1
  68. package/dist/src/tools/config/index.js.map +1 -1
  69. package/dist/src/tools/config/list-profiles.js.map +1 -1
  70. package/dist/src/tools/google-ads/account-overview.js.map +1 -1
  71. package/dist/src/tools/google-ads/account-risks.js.map +1 -1
  72. package/dist/src/tools/google-ads/break-even-analysis.js.map +1 -1
  73. package/dist/src/tools/google-ads/campaign-performance.js.map +1 -1
  74. package/dist/src/tools/google-ads/channel-mix.js.map +1 -1
  75. package/dist/src/tools/google-ads/compare-accounts.js.map +1 -1
  76. package/dist/src/tools/google-ads/customer-clients.js.map +1 -1
  77. package/dist/src/tools/google-ads/customer-info.js.map +1 -1
  78. package/dist/src/tools/google-ads/index.js.map +1 -1
  79. package/dist/src/tools/google-ads/scaling-health.js.map +1 -1
  80. package/dist/src/tools/google-ads/search-terms-summary.js.map +1 -1
  81. package/dist/src/tools/google-ads/time-series.js.map +1 -1
  82. package/dist/src/tools/index.js.map +1 -1
  83. package/dist/src/tools/mercadolibre/answer-question.js.map +1 -1
  84. package/dist/src/tools/mercadolibre/create-item.js.map +1 -1
  85. package/dist/src/tools/mercadolibre/estimate-listing-fee.js.map +1 -1
  86. package/dist/src/tools/mercadolibre/get-account-context.js.map +1 -1
  87. package/dist/src/tools/mercadolibre/get-category-requirements.js.map +1 -1
  88. package/dist/src/tools/mercadolibre/get-item-details.js.map +1 -1
  89. package/dist/src/tools/mercadolibre/get-item-visits.js.map +1 -1
  90. package/dist/src/tools/mercadolibre/get-listing-quality.js.map +1 -1
  91. package/dist/src/tools/mercadolibre/get-order-details.js.map +1 -1
  92. package/dist/src/tools/mercadolibre/get-orders-summary.js +670 -38
  93. package/dist/src/tools/mercadolibre/get-orders-summary.js.map +2 -2
  94. package/dist/src/tools/mercadolibre/get-sales-by-item.js.map +1 -1
  95. package/dist/src/tools/mercadolibre/get-sales-trend.js.map +1 -1
  96. package/dist/src/tools/mercadolibre/get-shipping-summary.js.map +1 -1
  97. package/dist/src/tools/mercadolibre/get-store-performance.js.map +1 -1
  98. package/dist/src/tools/mercadolibre/helpers.js +13 -0
  99. package/dist/src/tools/mercadolibre/helpers.js.map +2 -2
  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 +4 -3
  178. package/public/icon.svg +6 -6
  179. package/dist/src/google-ads/report-utils.js +0 -78
  180. package/dist/src/google-ads/report-utils.js.map +0 -7
  181. package/dist/src/search-console/search-console-utils.js +0 -275
  182. package/dist/src/search-console/search-console-utils.js.map +0 -7
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/tools/google-ads/time-series.ts"],
4
- "sourcesContent": ["import { error, object } from \"mcp-use/server\";\nimport { z } from \"zod\";\n\nimport {\n dateRegex,\n getFieldValue,\n microsToCurrency,\n parseGoogleAdsMetricValue,\n resolveGoogleAdsCustomerId,\n resolveGoogleAdsDeveloperToken,\n resolveGoogleAdsLoginCustomerId,\n round,\n toPercent,\n} from \"../../utils/google-ads.js\";\nimport { searchGoogleAds } from \"../../services/google-ads/google-ads-client.js\";\nimport { stripNulls } from \"../../utils/strip-payload.js\";\n\nconst googleAdsTimeSeriesGranularityEnum = z.enum([\"daily\", \"weekly\"]);\n\nexport const googleAdsTimeSeriesSchema = z.object({\n startDate: z.string().regex(dateRegex).describe(\"Start date in YYYY-MM-DD format.\"),\n endDate: z.string().regex(dateRegex).describe(\"End date in YYYY-MM-DD format.\"),\n customerId: z.string().optional().describe(\"Google Ads customer ID to query. If omitted, resolves the profileId mapping. Accepts digits with or without hyphens.\"),\n profileId: z.string().optional().describe(\"Optional business profile ID used to resolve the mapped Google Ads customer ID.\"),\n loginCustomerId: z\n .string()\n .optional()\n .describe(\n \"Optional manager account ID used as login customer. If omitted, uses GOOGLE_ADS_LOGIN_CUSTOMER_ID when configured.\"\n ),\n granularity: googleAdsTimeSeriesGranularityEnum\n .optional()\n .default(\"daily\")\n .describe(\"Time series granularity: daily or weekly.\"),\n});\n\nexport async function googleAdsTimeSeriesHandler(\n params: z.infer<typeof googleAdsTimeSeriesSchema>\n) {\n try {\n const customerId = await resolveGoogleAdsCustomerId(params.customerId, params.profileId);\n const loginCustomerId = resolveGoogleAdsLoginCustomerId(params.loginCustomerId);\n const developerToken = resolveGoogleAdsDeveloperToken();\n const segmentField = params.granularity === \"weekly\" ? \"segments.week\" : \"segments.date\";\n\n const result = await searchGoogleAds(\n customerId,\n [\n \"SELECT\",\n \"customer.descriptive_name,\",\n \"customer.currency_code,\",\n `${segmentField},`,\n \"metrics.impressions,\",\n \"metrics.clicks,\",\n \"metrics.cost_micros,\",\n \"metrics.conversions,\",\n \"metrics.conversions_value\",\n \"FROM customer\",\n `WHERE segments.date BETWEEN '${params.startDate}' AND '${params.endDate}'`,\n `ORDER BY ${segmentField}`,\n ].join(\" \"),\n developerToken,\n loginCustomerId\n );\n\n const series = result.rows.map((row) => {\n const impressions = parseGoogleAdsMetricValue(getFieldValue(row, \"metrics.impressions\"));\n const clicks = parseGoogleAdsMetricValue(getFieldValue(row, \"metrics.clicks\"));\n const cost = microsToCurrency(getFieldValue(row, \"metrics.costMicros\"));\n const conversions = round(\n parseGoogleAdsMetricValue(getFieldValue(row, \"metrics.conversions\"))\n );\n const conversionValue = round(\n parseGoogleAdsMetricValue(getFieldValue(row, \"metrics.conversionsValue\"))\n );\n\n return {\n period_start: String(\n getFieldValue(\n row,\n params.granularity === \"weekly\" ? \"segments.week\" : \"segments.date\"\n ) ?? \"\"\n ),\n impressions,\n clicks,\n cost,\n conversions,\n conversion_value: conversionValue,\n ctr_percent: round(toPercent(clicks, impressions)),\n cpa: round(cost / conversions),\n roas: round(conversionValue / cost),\n };\n });\n\n const totals = series.reduce(\n (acc, item) => {\n acc.impressions += item.impressions;\n acc.clicks += item.clicks;\n acc.cost += item.cost;\n acc.conversions += item.conversions;\n acc.conversion_value += item.conversion_value;\n return acc;\n },\n { impressions: 0, clicks: 0, cost: 0, conversions: 0, conversion_value: 0 }\n );\n\n return object(\n stripNulls({\n customer_id: customerId,\n login_customer_id: loginCustomerId,\n customer_name: getFieldValue(result.rows[0] ?? {}, \"customer.descriptiveName\"),\n currency_code: getFieldValue(result.rows[0] ?? {}, \"customer.currencyCode\"),\n date_range: {\n start_date: params.startDate,\n end_date: params.endDate,\n },\n granularity: params.granularity,\n overview: {\n periods: series.length,\n impressions: totals.impressions,\n clicks: totals.clicks,\n cost: round(totals.cost),\n conversions: round(totals.conversions),\n conversion_value: round(totals.conversion_value),\n ctr_percent: round(toPercent(totals.clicks, totals.impressions)),\n cpa: round(totals.cost / totals.conversions),\n roas: round(totals.conversion_value / totals.cost),\n },\n series,\n metadata: {\n row_count: result.rows.length,\n request_id: result.requestId,\n },\n })\n );\n } catch (err) {\n return error(err instanceof Error ? err.message : \"Failed to fetch Google Ads time series\");\n }\n}\n"],
4
+ "sourcesContent": ["import { error, object } from \"mcp-use/server\";\r\nimport { z } from \"zod\";\r\n\r\nimport {\r\n dateRegex,\r\n getFieldValue,\r\n microsToCurrency,\r\n parseGoogleAdsMetricValue,\r\n resolveGoogleAdsCustomerId,\r\n resolveGoogleAdsDeveloperToken,\r\n resolveGoogleAdsLoginCustomerId,\r\n round,\r\n toPercent,\r\n} from \"../../utils/google-ads.js\";\r\nimport { searchGoogleAds } from \"../../services/google-ads/google-ads-client.js\";\r\nimport { stripNulls } from \"../../utils/strip-payload.js\";\r\n\r\nconst googleAdsTimeSeriesGranularityEnum = z.enum([\"daily\", \"weekly\"]);\r\n\r\nexport const googleAdsTimeSeriesSchema = z.object({\r\n startDate: z.string().regex(dateRegex).describe(\"Start date in YYYY-MM-DD format.\"),\r\n endDate: z.string().regex(dateRegex).describe(\"End date in YYYY-MM-DD format.\"),\r\n customerId: z.string().optional().describe(\"Google Ads customer ID to query. If omitted, resolves the profileId mapping. Accepts digits with or without hyphens.\"),\r\n profileId: z.string().optional().describe(\"Optional business profile ID used to resolve the mapped Google Ads customer ID.\"),\r\n loginCustomerId: z\r\n .string()\r\n .optional()\r\n .describe(\r\n \"Optional manager account ID used as login customer. If omitted, uses GOOGLE_ADS_LOGIN_CUSTOMER_ID when configured.\"\r\n ),\r\n granularity: googleAdsTimeSeriesGranularityEnum\r\n .optional()\r\n .default(\"daily\")\r\n .describe(\"Time series granularity: daily or weekly.\"),\r\n});\r\n\r\nexport async function googleAdsTimeSeriesHandler(\r\n params: z.infer<typeof googleAdsTimeSeriesSchema>\r\n) {\r\n try {\r\n const customerId = await resolveGoogleAdsCustomerId(params.customerId, params.profileId);\r\n const loginCustomerId = resolveGoogleAdsLoginCustomerId(params.loginCustomerId);\r\n const developerToken = resolveGoogleAdsDeveloperToken();\r\n const segmentField = params.granularity === \"weekly\" ? \"segments.week\" : \"segments.date\";\r\n\r\n const result = await searchGoogleAds(\r\n customerId,\r\n [\r\n \"SELECT\",\r\n \"customer.descriptive_name,\",\r\n \"customer.currency_code,\",\r\n `${segmentField},`,\r\n \"metrics.impressions,\",\r\n \"metrics.clicks,\",\r\n \"metrics.cost_micros,\",\r\n \"metrics.conversions,\",\r\n \"metrics.conversions_value\",\r\n \"FROM customer\",\r\n `WHERE segments.date BETWEEN '${params.startDate}' AND '${params.endDate}'`,\r\n `ORDER BY ${segmentField}`,\r\n ].join(\" \"),\r\n developerToken,\r\n loginCustomerId\r\n );\r\n\r\n const series = result.rows.map((row) => {\r\n const impressions = parseGoogleAdsMetricValue(getFieldValue(row, \"metrics.impressions\"));\r\n const clicks = parseGoogleAdsMetricValue(getFieldValue(row, \"metrics.clicks\"));\r\n const cost = microsToCurrency(getFieldValue(row, \"metrics.costMicros\"));\r\n const conversions = round(\r\n parseGoogleAdsMetricValue(getFieldValue(row, \"metrics.conversions\"))\r\n );\r\n const conversionValue = round(\r\n parseGoogleAdsMetricValue(getFieldValue(row, \"metrics.conversionsValue\"))\r\n );\r\n\r\n return {\r\n period_start: String(\r\n getFieldValue(\r\n row,\r\n params.granularity === \"weekly\" ? \"segments.week\" : \"segments.date\"\r\n ) ?? \"\"\r\n ),\r\n impressions,\r\n clicks,\r\n cost,\r\n conversions,\r\n conversion_value: conversionValue,\r\n ctr_percent: round(toPercent(clicks, impressions)),\r\n cpa: round(cost / conversions),\r\n roas: round(conversionValue / cost),\r\n };\r\n });\r\n\r\n const totals = series.reduce(\r\n (acc, item) => {\r\n acc.impressions += item.impressions;\r\n acc.clicks += item.clicks;\r\n acc.cost += item.cost;\r\n acc.conversions += item.conversions;\r\n acc.conversion_value += item.conversion_value;\r\n return acc;\r\n },\r\n { impressions: 0, clicks: 0, cost: 0, conversions: 0, conversion_value: 0 }\r\n );\r\n\r\n return object(\r\n stripNulls({\r\n customer_id: customerId,\r\n login_customer_id: loginCustomerId,\r\n customer_name: getFieldValue(result.rows[0] ?? {}, \"customer.descriptiveName\"),\r\n currency_code: getFieldValue(result.rows[0] ?? {}, \"customer.currencyCode\"),\r\n date_range: {\r\n start_date: params.startDate,\r\n end_date: params.endDate,\r\n },\r\n granularity: params.granularity,\r\n overview: {\r\n periods: series.length,\r\n impressions: totals.impressions,\r\n clicks: totals.clicks,\r\n cost: round(totals.cost),\r\n conversions: round(totals.conversions),\r\n conversion_value: round(totals.conversion_value),\r\n ctr_percent: round(toPercent(totals.clicks, totals.impressions)),\r\n cpa: round(totals.cost / totals.conversions),\r\n roas: round(totals.conversion_value / totals.cost),\r\n },\r\n series,\r\n metadata: {\r\n row_count: result.rows.length,\r\n request_id: result.requestId,\r\n },\r\n })\r\n );\r\n } catch (err) {\r\n return error(err instanceof Error ? err.message : \"Failed to fetch Google Ads time series\");\r\n }\r\n}\r\n"],
5
5
  "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/tools/index.ts"],
4
- "sourcesContent": ["export * from \"./config/index.js\";\nexport * from \"./vtex/index.js\";\nexport * from \"./analytics/index.js\";\nexport * from \"./google-ads/index.js\";\nexport * from \"./meta/index.js\";\nexport * from \"./search-console/index.js\";\nexport * from \"./mercadolibre/index.js\";\n"],
4
+ "sourcesContent": ["export * from \"./config/index.js\";\r\nexport * from \"./vtex/index.js\";\r\nexport * from \"./analytics/index.js\";\r\nexport * from \"./google-ads/index.js\";\r\nexport * from \"./meta/index.js\";\r\nexport * from \"./search-console/index.js\";\r\nexport * from \"./mercadolibre/index.js\";\r\n"],
5
5
  "mappings": "AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/tools/mercadolibre/answer-question.ts"],
4
- "sourcesContent": ["import { z } from \"zod\";\n\nimport { answerMercadoLibreQuestion } from \"../../services/mercadolibre/mercadolibre-questions.js\";\nimport {\n buildMercadoLibreWriteSuccessResponse,\n handleMercadoLibreWriteError,\n mercadolibreProfileIdSchemaField,\n resolveMercadoLibreWriteProfile,\n} from \"./write-helpers.js\";\n\nexport const meliAnswerQuestionSchema = z.object({\n profileId: mercadolibreProfileIdSchemaField,\n questionId: z.number().int().positive().describe(\"MercadoLibre question id.\"),\n text: z.string().trim().min(1).max(2000).describe(\"Answer text to publish.\"),\n});\n\nexport async function meliAnswerQuestionHandler(\n params: z.infer<typeof meliAnswerQuestionSchema>\n) {\n try {\n const profileResolution = await resolveMercadoLibreWriteProfile(params.profileId);\n if (!profileResolution.ok) {\n return profileResolution.response;\n }\n\n const profileId = profileResolution.value.profileId;\n const result = await answerMercadoLibreQuestion(profileId, params.questionId, params.text);\n\n return buildMercadoLibreWriteSuccessResponse({\n profileId,\n operation: \"answer_question\",\n resourceId: String(params.questionId),\n message: \"MercadoLibre question answered successfully.\",\n after: result,\n });\n } catch (err) {\n return handleMercadoLibreWriteError(err, `Failed to answer MercadoLibre question ${params.questionId}`);\n }\n}\n"],
4
+ "sourcesContent": ["import { z } from \"zod\";\r\n\r\nimport { answerMercadoLibreQuestion } from \"../../services/mercadolibre/mercadolibre-questions.js\";\r\nimport {\r\n buildMercadoLibreWriteSuccessResponse,\r\n handleMercadoLibreWriteError,\r\n mercadolibreProfileIdSchemaField,\r\n resolveMercadoLibreWriteProfile,\r\n} from \"./write-helpers.js\";\r\n\r\nexport const meliAnswerQuestionSchema = z.object({\r\n profileId: mercadolibreProfileIdSchemaField,\r\n questionId: z.number().int().positive().describe(\"MercadoLibre question id.\"),\r\n text: z.string().trim().min(1).max(2000).describe(\"Answer text to publish.\"),\r\n});\r\n\r\nexport async function meliAnswerQuestionHandler(\r\n params: z.infer<typeof meliAnswerQuestionSchema>\r\n) {\r\n try {\r\n const profileResolution = await resolveMercadoLibreWriteProfile(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 result = await answerMercadoLibreQuestion(profileId, params.questionId, params.text);\r\n\r\n return buildMercadoLibreWriteSuccessResponse({\r\n profileId,\r\n operation: \"answer_question\",\r\n resourceId: String(params.questionId),\r\n message: \"MercadoLibre question answered successfully.\",\r\n after: result,\r\n });\r\n } catch (err) {\r\n return handleMercadoLibreWriteError(err, `Failed to answer MercadoLibre question ${params.questionId}`);\r\n }\r\n}\r\n"],
5
5
  "mappings": "AAAA,SAAS,SAAS;AAElB,SAAS,kCAAkC;AAC3C;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEA,MAAM,2BAA2B,EAAE,OAAO;AAAA,EAC/C,WAAW;AAAA,EACX,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,2BAA2B;AAAA,EAC5E,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAI,EAAE,SAAS,yBAAyB;AAC7E,CAAC;AAED,eAAsB,0BACpB,QACA;AACA,MAAI;AACF,UAAM,oBAAoB,MAAM,gCAAgC,OAAO,SAAS;AAChF,QAAI,CAAC,kBAAkB,IAAI;AACzB,aAAO,kBAAkB;AAAA,IAC3B;AAEA,UAAM,YAAY,kBAAkB,MAAM;AAC1C,UAAM,SAAS,MAAM,2BAA2B,WAAW,OAAO,YAAY,OAAO,IAAI;AAEzF,WAAO,sCAAsC;AAAA,MAC3C;AAAA,MACA,WAAW;AAAA,MACX,YAAY,OAAO,OAAO,UAAU;AAAA,MACpC,SAAS;AAAA,MACT,OAAO;AAAA,IACT,CAAC;AAAA,EACH,SAAS,KAAK;AACZ,WAAO,6BAA6B,KAAK,0CAA0C,OAAO,UAAU,EAAE;AAAA,EACxG;AACF;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/tools/mercadolibre/create-item.ts"],
4
- "sourcesContent": ["import { z } from \"zod\";\n\nimport {\n createMercadoLibreItem,\n createMercadoLibreItemDescription,\n} from \"../../services/mercadolibre/mercadolibre-items.js\";\nimport {\n buildMercadoLibreWriteSuccessResponse,\n handleMercadoLibreWriteError,\n mercadolibreProfileIdSchemaField,\n resolveMercadoLibreWriteProfile,\n} from \"./write-helpers.js\";\n\nconst attributeSchema = z.object({\n id: z.string().trim().min(1).describe(\"MercadoLibre attribute id.\"),\n value_name: z.string().trim().min(1).optional().describe(\"Human-readable attribute value.\"),\n value_id: z.string().trim().min(1).optional().describe(\"MercadoLibre attribute value id when known.\"),\n});\n\nconst pictureSchema = z.object({\n source: z.string().trim().url().describe(\"Public image URL to attach to the item.\"),\n});\n\nexport const meliCreateItemSchema = z.object({\n profileId: mercadolibreProfileIdSchemaField,\n siteId: z.string().trim().min(3).optional().describe(\"MercadoLibre site id. Defaults to MLA.\"),\n title: z.string().trim().min(3).describe(\"Listing title.\"),\n categoryId: z.string().trim().min(1).describe(\"MercadoLibre category id.\"),\n price: z.number().positive().describe(\"Listing price.\"),\n currencyId: z.string().trim().min(1).optional().describe(\"Currency id. Defaults to ARS.\"),\n buyingMode: z.string().trim().min(1).optional().describe(\"Buying mode. Defaults to buy_it_now.\"),\n listingTypeId: z.string().trim().min(1).describe(\"MercadoLibre listing type id.\"),\n condition: z.enum([\"new\", \"used\", \"not_specified\"]).describe(\"Item condition.\"),\n availableQuantity: z.number().int().min(0).describe(\"Available quantity to list.\"),\n attributes: z.array(attributeSchema).optional().describe(\"MercadoLibre attributes for the listing.\"),\n pictures: z.array(pictureSchema).optional().describe(\"Pictures to include in the listing.\"),\n shipping: z.record(z.string(), z.unknown()).optional().describe(\"Shipping payload compatible with MercadoLibre items API.\"),\n saleTerms: z.array(z.record(z.string(), z.unknown())).optional().describe(\"Sale terms array for the listing.\"),\n channels: z.array(z.string().trim().min(1)).optional().describe(\"Optional channels array if supported by the account.\"),\n description: z.string().trim().min(1).optional().describe(\"Optional plain-text description to publish after item creation.\"),\n});\n\nexport async function meliCreateItemHandler(params: z.infer<typeof meliCreateItemSchema>) {\n try {\n const profileResolution = await resolveMercadoLibreWriteProfile(params.profileId);\n if (!profileResolution.ok) {\n return profileResolution.response;\n }\n\n const profileId = profileResolution.value.profileId;\n const created = await createMercadoLibreItem(profileId, {\n site_id: params.siteId ?? \"MLA\",\n title: params.title,\n category_id: params.categoryId,\n price: params.price,\n currency_id: params.currencyId ?? \"ARS\",\n buying_mode: params.buyingMode ?? \"buy_it_now\",\n listing_type_id: params.listingTypeId,\n condition: params.condition,\n available_quantity: params.availableQuantity,\n attributes: params.attributes,\n pictures: params.pictures,\n shipping: params.shipping,\n sale_terms: params.saleTerms,\n channels: params.channels,\n });\n\n if (params.description && typeof created.id === \"string\") {\n await createMercadoLibreItemDescription(profileId, created.id, params.description);\n }\n\n return buildMercadoLibreWriteSuccessResponse({\n profileId,\n operation: \"create_item\",\n resourceId: typeof created.id === \"string\" ? created.id : undefined,\n message: \"MercadoLibre item created successfully.\",\n after: created,\n details: {\n description_created: Boolean(params.description),\n },\n });\n } catch (err) {\n return handleMercadoLibreWriteError(err, \"Failed to create MercadoLibre item\");\n }\n}\n"],
4
+ "sourcesContent": ["import { z } from \"zod\";\r\n\r\nimport {\r\n createMercadoLibreItem,\r\n createMercadoLibreItemDescription,\r\n} from \"../../services/mercadolibre/mercadolibre-items.js\";\r\nimport {\r\n buildMercadoLibreWriteSuccessResponse,\r\n handleMercadoLibreWriteError,\r\n mercadolibreProfileIdSchemaField,\r\n resolveMercadoLibreWriteProfile,\r\n} from \"./write-helpers.js\";\r\n\r\nconst attributeSchema = z.object({\r\n id: z.string().trim().min(1).describe(\"MercadoLibre attribute id.\"),\r\n value_name: z.string().trim().min(1).optional().describe(\"Human-readable attribute value.\"),\r\n value_id: z.string().trim().min(1).optional().describe(\"MercadoLibre attribute value id when known.\"),\r\n});\r\n\r\nconst pictureSchema = z.object({\r\n source: z.string().trim().url().describe(\"Public image URL to attach to the item.\"),\r\n});\r\n\r\nexport const meliCreateItemSchema = z.object({\r\n profileId: mercadolibreProfileIdSchemaField,\r\n siteId: z.string().trim().min(3).optional().describe(\"MercadoLibre site id. Defaults to MLA.\"),\r\n title: z.string().trim().min(3).describe(\"Listing title.\"),\r\n categoryId: z.string().trim().min(1).describe(\"MercadoLibre category id.\"),\r\n price: z.number().positive().describe(\"Listing price.\"),\r\n currencyId: z.string().trim().min(1).optional().describe(\"Currency id. Defaults to ARS.\"),\r\n buyingMode: z.string().trim().min(1).optional().describe(\"Buying mode. Defaults to buy_it_now.\"),\r\n listingTypeId: z.string().trim().min(1).describe(\"MercadoLibre listing type id.\"),\r\n condition: z.enum([\"new\", \"used\", \"not_specified\"]).describe(\"Item condition.\"),\r\n availableQuantity: z.number().int().min(0).describe(\"Available quantity to list.\"),\r\n attributes: z.array(attributeSchema).optional().describe(\"MercadoLibre attributes for the listing.\"),\r\n pictures: z.array(pictureSchema).optional().describe(\"Pictures to include in the listing.\"),\r\n shipping: z.record(z.string(), z.unknown()).optional().describe(\"Shipping payload compatible with MercadoLibre items API.\"),\r\n saleTerms: z.array(z.record(z.string(), z.unknown())).optional().describe(\"Sale terms array for the listing.\"),\r\n channels: z.array(z.string().trim().min(1)).optional().describe(\"Optional channels array if supported by the account.\"),\r\n description: z.string().trim().min(1).optional().describe(\"Optional plain-text description to publish after item creation.\"),\r\n});\r\n\r\nexport async function meliCreateItemHandler(params: z.infer<typeof meliCreateItemSchema>) {\r\n try {\r\n const profileResolution = await resolveMercadoLibreWriteProfile(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 created = await createMercadoLibreItem(profileId, {\r\n site_id: params.siteId ?? \"MLA\",\r\n title: params.title,\r\n category_id: params.categoryId,\r\n price: params.price,\r\n currency_id: params.currencyId ?? \"ARS\",\r\n buying_mode: params.buyingMode ?? \"buy_it_now\",\r\n listing_type_id: params.listingTypeId,\r\n condition: params.condition,\r\n available_quantity: params.availableQuantity,\r\n attributes: params.attributes,\r\n pictures: params.pictures,\r\n shipping: params.shipping,\r\n sale_terms: params.saleTerms,\r\n channels: params.channels,\r\n });\r\n\r\n if (params.description && typeof created.id === \"string\") {\r\n await createMercadoLibreItemDescription(profileId, created.id, params.description);\r\n }\r\n\r\n return buildMercadoLibreWriteSuccessResponse({\r\n profileId,\r\n operation: \"create_item\",\r\n resourceId: typeof created.id === \"string\" ? created.id : undefined,\r\n message: \"MercadoLibre item created successfully.\",\r\n after: created,\r\n details: {\r\n description_created: Boolean(params.description),\r\n },\r\n });\r\n } catch (err) {\r\n return handleMercadoLibreWriteError(err, \"Failed to create MercadoLibre item\");\r\n }\r\n}\r\n"],
5
5
  "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -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 { estimateMercadoLibreListingPrice } from \"../../services/mercadolibre/mercadolibre-items.js\";\nimport { stripNulls } from \"../../utils/strip-payload.js\";\nimport { asArray, normalizeString, toNumber } from \"./helpers.js\";\nimport { resolveMercadoLibreProfileOrSelection } from \"./profile-resolution.js\";\nimport { mercadolibreProfileIdSchemaField } from \"./write-helpers.js\";\n\nexport const meliEstimateListingFeeSchema = z.object({\n profileId: mercadolibreProfileIdSchemaField,\n price: z.number().positive().describe(\"Listing price for the product.\"),\n currencyId: z.string().trim().min(1).optional().describe(\"Currency id. Defaults to ARS.\"),\n categoryId: z.string().trim().min(1).describe(\"MercadoLibre category id.\"),\n listingTypeId: z.string().trim().min(1).describe(\"MercadoLibre listing type id.\"),\n logisticType: z.string().trim().min(1).optional().describe(\"Optional logistic type.\"),\n shippingMode: z.string().trim().min(1).optional().describe(\"Optional shipping mode.\"),\n billableWeight: z.number().positive().optional().describe(\"Optional billable weight for shipping-sensitive fee quotes.\"),\n tags: z.array(z.string().trim().min(1)).optional().describe(\"Optional MercadoLibre pricing tags.\"),\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 const quotes = await estimateMercadoLibreListingPrice(profileResolution.value.profileId, {\n price: params.price,\n currency_id: params.currencyId ?? \"ARS\",\n category_id: params.categoryId,\n listing_type_id: params.listingTypeId,\n logistic_type: params.logisticType,\n shipping_mode: params.shippingMode,\n billable_weight: params.billableWeight,\n tags: params.tags?.join(\",\"),\n });\n\n return object(\n stripNulls({\n profile_id: profileResolution.value.profileId,\n quotes: asArray<Record<string, unknown>>(quotes).map((quote) => ({\n listing_type_id: normalizeString(quote.listing_type_id),\n listing_type_name: normalizeString(quote.listing_type_name),\n currency_id: normalizeString(quote.currency_id, params.currencyId ?? \"ARS\"),\n sale_fee_amount: toNumber(quote.sale_fee_amount),\n sale_fee_percent: toNumber(quote.sale_fee_percent),\n fixed_fee: toNumber(quote.fixed_fee),\n gross_amount: toNumber(quote.gross_amount ?? params.price),\n net_amount: toNumber(quote.net_amount),\n free_relist: quote.free_relist,\n })),\n })\n );\n } catch (err) {\n return error(formatMercadoLibreError(err, \"Failed to estimate MercadoLibre listing fee\"));\n }\n}\n"],
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 { estimateMercadoLibreListingPrice } from \"../../services/mercadolibre/mercadolibre-items.js\";\r\nimport { stripNulls } from \"../../utils/strip-payload.js\";\r\nimport { asArray, normalizeString, toNumber } from \"./helpers.js\";\r\nimport { resolveMercadoLibreProfileOrSelection } from \"./profile-resolution.js\";\r\nimport { mercadolibreProfileIdSchemaField } from \"./write-helpers.js\";\r\n\r\nexport const meliEstimateListingFeeSchema = z.object({\r\n profileId: mercadolibreProfileIdSchemaField,\r\n price: z.number().positive().describe(\"Listing price for the product.\"),\r\n currencyId: z.string().trim().min(1).optional().describe(\"Currency id. Defaults to ARS.\"),\r\n categoryId: z.string().trim().min(1).describe(\"MercadoLibre category id.\"),\r\n listingTypeId: z.string().trim().min(1).describe(\"MercadoLibre listing type id.\"),\r\n logisticType: z.string().trim().min(1).optional().describe(\"Optional logistic type.\"),\r\n shippingMode: z.string().trim().min(1).optional().describe(\"Optional shipping mode.\"),\r\n billableWeight: z.number().positive().optional().describe(\"Optional billable weight for shipping-sensitive fee quotes.\"),\r\n tags: z.array(z.string().trim().min(1)).optional().describe(\"Optional MercadoLibre pricing tags.\"),\r\n});\r\n\r\nexport async function meliEstimateListingFeeHandler(\r\n params: z.infer<typeof meliEstimateListingFeeSchema>\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 quotes = await estimateMercadoLibreListingPrice(profileResolution.value.profileId, {\r\n price: params.price,\r\n currency_id: params.currencyId ?? \"ARS\",\r\n category_id: params.categoryId,\r\n listing_type_id: params.listingTypeId,\r\n logistic_type: params.logisticType,\r\n shipping_mode: params.shippingMode,\r\n billable_weight: params.billableWeight,\r\n tags: params.tags?.join(\",\"),\r\n });\r\n\r\n return object(\r\n stripNulls({\r\n profile_id: profileResolution.value.profileId,\r\n quotes: asArray<Record<string, unknown>>(quotes).map((quote) => ({\r\n listing_type_id: normalizeString(quote.listing_type_id),\r\n listing_type_name: normalizeString(quote.listing_type_name),\r\n currency_id: normalizeString(quote.currency_id, params.currencyId ?? \"ARS\"),\r\n sale_fee_amount: toNumber(quote.sale_fee_amount),\r\n sale_fee_percent: toNumber(quote.sale_fee_percent),\r\n fixed_fee: toNumber(quote.fixed_fee),\r\n gross_amount: toNumber(quote.gross_amount ?? params.price),\r\n net_amount: toNumber(quote.net_amount),\r\n free_relist: quote.free_relist,\r\n })),\r\n })\r\n );\r\n } catch (err) {\r\n return error(formatMercadoLibreError(err, \"Failed to estimate MercadoLibre listing fee\"));\r\n }\r\n}\r\n"],
5
5
  "mappings": "AAAA,SAAS,OAAO,cAAc;AAC9B,SAAS,SAAS;AAElB,SAAS,+BAA+B;AACxC,SAAS,wCAAwC;AACjD,SAAS,kBAAkB;AAC3B,SAAS,SAAS,iBAAiB,gBAAgB;AACnD,SAAS,6CAA6C;AACtD,SAAS,wCAAwC;AAE1C,MAAM,+BAA+B,EAAE,OAAO;AAAA,EACnD,WAAW;AAAA,EACX,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,gCAAgC;AAAA,EACtE,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,SAAS,EAAE,SAAS,+BAA+B;AAAA,EACxF,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,SAAS,2BAA2B;AAAA,EACzE,eAAe,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,SAAS,+BAA+B;AAAA,EAChF,cAAc,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,SAAS,EAAE,SAAS,yBAAyB;AAAA,EACpF,cAAc,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,SAAS,EAAE,SAAS,yBAAyB;AAAA,EACpF,gBAAgB,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,6DAA6D;AAAA,EACvH,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,qCAAqC;AACnG,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,UAAM,SAAS,MAAM,iCAAiC,kBAAkB,MAAM,WAAW;AAAA,MACvF,OAAO,OAAO;AAAA,MACd,aAAa,OAAO,cAAc;AAAA,MAClC,aAAa,OAAO;AAAA,MACpB,iBAAiB,OAAO;AAAA,MACxB,eAAe,OAAO;AAAA,MACtB,eAAe,OAAO;AAAA,MACtB,iBAAiB,OAAO;AAAA,MACxB,MAAM,OAAO,MAAM,KAAK,GAAG;AAAA,IAC7B,CAAC;AAED,WAAO;AAAA,MACL,WAAW;AAAA,QACT,YAAY,kBAAkB,MAAM;AAAA,QACpC,QAAQ,QAAiC,MAAM,EAAE,IAAI,CAAC,WAAW;AAAA,UAC/D,iBAAiB,gBAAgB,MAAM,eAAe;AAAA,UACtD,mBAAmB,gBAAgB,MAAM,iBAAiB;AAAA,UAC1D,aAAa,gBAAgB,MAAM,aAAa,OAAO,cAAc,KAAK;AAAA,UAC1E,iBAAiB,SAAS,MAAM,eAAe;AAAA,UAC/C,kBAAkB,SAAS,MAAM,gBAAgB;AAAA,UACjD,WAAW,SAAS,MAAM,SAAS;AAAA,UACnC,cAAc,SAAS,MAAM,gBAAgB,OAAO,KAAK;AAAA,UACzD,YAAY,SAAS,MAAM,UAAU;AAAA,UACrC,aAAa,MAAM;AAAA,QACrB,EAAE;AAAA,MACJ,CAAC;AAAA,IACH;AAAA,EACF,SAAS,KAAK;AACZ,WAAO,MAAM,wBAAwB,KAAK,6CAA6C,CAAC;AAAA,EAC1F;AACF;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/tools/mercadolibre/get-account-context.ts"],
4
- "sourcesContent": ["import { error, object } from \"mcp-use/server\";\nimport { z } from \"zod\";\n\nimport { getMercadoLibreAccessForProfile } from \"../../config/mercadolibre.js\";\nimport { getMercadoLibreUsersMe, formatMercadoLibreError } from \"../../services/mercadolibre/mercadolibre-api.js\";\nimport { stripNulls } from \"../../utils/strip-payload.js\";\nimport { resolveMercadoLibreProfileOrSelection } from \"./profile-resolution.js\";\nimport { mercadolibreProfileIdSchemaField } from \"./write-helpers.js\";\n\nexport const meliGetAccountContextSchema = z.object({\n profileId: mercadolibreProfileIdSchemaField,\n});\n\nexport async function meliGetAccountContextHandler(\n params: z.infer<typeof meliGetAccountContextSchema>\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 access = await getMercadoLibreAccessForProfile(profileId);\n const account = await getMercadoLibreUsersMe(profileId);\n\n return object(\n stripNulls({\n profile_id: profileId,\n seller_id: access.sellerId,\n nickname: typeof account.nickname === \"string\" ? account.nickname : null,\n account_id: account.id,\n scopes: access.scopes,\n expires_at: access.expiresAt,\n })\n );\n } catch (err) {\n return error(formatMercadoLibreError(err, \"Failed to fetch MercadoLibre account context\"));\n }\n}\n"],
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 { getMercadoLibreUsersMe, formatMercadoLibreError } from \"../../services/mercadolibre/mercadolibre-api.js\";\r\nimport { stripNulls } from \"../../utils/strip-payload.js\";\r\nimport { resolveMercadoLibreProfileOrSelection } from \"./profile-resolution.js\";\r\nimport { mercadolibreProfileIdSchemaField } from \"./write-helpers.js\";\r\n\r\nexport const meliGetAccountContextSchema = z.object({\r\n profileId: mercadolibreProfileIdSchemaField,\r\n});\r\n\r\nexport async function meliGetAccountContextHandler(\r\n params: z.infer<typeof meliGetAccountContextSchema>\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 access = await getMercadoLibreAccessForProfile(profileId);\r\n const account = await getMercadoLibreUsersMe(profileId);\r\n\r\n return object(\r\n stripNulls({\r\n profile_id: profileId,\r\n seller_id: access.sellerId,\r\n nickname: typeof account.nickname === \"string\" ? account.nickname : null,\r\n account_id: account.id,\r\n scopes: access.scopes,\r\n expires_at: access.expiresAt,\r\n })\r\n );\r\n } catch (err) {\r\n return error(formatMercadoLibreError(err, \"Failed to fetch MercadoLibre account context\"));\r\n }\r\n}\r\n"],
5
5
  "mappings": "AAAA,SAAS,OAAO,cAAc;AAC9B,SAAS,SAAS;AAElB,SAAS,uCAAuC;AAChD,SAAS,wBAAwB,+BAA+B;AAChE,SAAS,kBAAkB;AAC3B,SAAS,6CAA6C;AACtD,SAAS,wCAAwC;AAE1C,MAAM,8BAA8B,EAAE,OAAO;AAAA,EAClD,WAAW;AACb,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,YAAY,kBAAkB,MAAM;AAC1C,UAAM,SAAS,MAAM,gCAAgC,SAAS;AAC9D,UAAM,UAAU,MAAM,uBAAuB,SAAS;AAEtD,WAAO;AAAA,MACL,WAAW;AAAA,QACT,YAAY;AAAA,QACZ,WAAW,OAAO;AAAA,QAClB,UAAU,OAAO,QAAQ,aAAa,WAAW,QAAQ,WAAW;AAAA,QACpE,YAAY,QAAQ;AAAA,QACpB,QAAQ,OAAO;AAAA,QACf,YAAY,OAAO;AAAA,MACrB,CAAC;AAAA,IACH;AAAA,EACF,SAAS,KAAK;AACZ,WAAO,MAAM,wBAAwB,KAAK,8CAA8C,CAAC;AAAA,EAC3F;AACF;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/tools/mercadolibre/get-category-requirements.ts"],
4
- "sourcesContent": ["import { error, object } from \"mcp-use/server\";\nimport { z } from \"zod\";\n\nimport { formatMercadoLibreError } from \"../../services/mercadolibre/mercadolibre-api.js\";\nimport {\n getMercadoLibreCategoryAttributes,\n getMercadoLibreCategoryShippingPreferences,\n} from \"../../services/mercadolibre/mercadolibre-items.js\";\nimport { stripNulls } from \"../../utils/strip-payload.js\";\nimport { asArray, asRecord, normalizeString } from \"./helpers.js\";\nimport { resolveMercadoLibreProfileOrSelection } from \"./profile-resolution.js\";\nimport { mercadolibreProfileIdSchemaField } from \"./write-helpers.js\";\n\nexport const meliGetCategoryRequirementsSchema = z.object({\n profileId: mercadolibreProfileIdSchemaField,\n categoryId: z.string().trim().min(1).describe(\"MercadoLibre category id.\"),\n});\n\nexport async function meliGetCategoryRequirementsHandler(\n params: z.infer<typeof meliGetCategoryRequirementsSchema>\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 [attributes, shippingPreferences] = await Promise.all([\n getMercadoLibreCategoryAttributes(profileId, params.categoryId),\n getMercadoLibreCategoryShippingPreferences(profileId, params.categoryId),\n ]);\n\n return object(\n stripNulls({\n profile_id: profileId,\n category_id: params.categoryId,\n required_attributes: asArray<Record<string, unknown>>(attributes)\n .filter((attribute) => attribute.tags && typeof attribute.tags === \"object\" && Boolean(asRecord(attribute.tags).required))\n .map((attribute) => ({\n id: normalizeString(attribute.id),\n name: normalizeString(attribute.name),\n value_type: normalizeString(attribute.value_type),\n value_max_length: attribute.value_max_length,\n })),\n recommended_attributes: asArray<Record<string, unknown>>(attributes)\n .filter((attribute) => !(attribute.tags && typeof attribute.tags === \"object\" && Boolean(asRecord(attribute.tags).required)))\n .slice(0, 15)\n .map((attribute) => ({\n id: normalizeString(attribute.id),\n name: normalizeString(attribute.name),\n value_type: normalizeString(attribute.value_type),\n })),\n shipping_preferences: stripNulls({\n mode: normalizeString(shippingPreferences.mode),\n logistics: Array.isArray(shippingPreferences.logistics)\n ? shippingPreferences.logistics\n : shippingPreferences.logistic_types,\n tags: Array.isArray(shippingPreferences.tags) ? shippingPreferences.tags : undefined,\n }),\n })\n );\n } catch (err) {\n return error(formatMercadoLibreError(err, `Failed to fetch category requirements for ${params.categoryId}`));\n }\n}\n"],
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 {\r\n getMercadoLibreCategoryAttributes,\r\n getMercadoLibreCategoryShippingPreferences,\r\n} from \"../../services/mercadolibre/mercadolibre-items.js\";\r\nimport { stripNulls } from \"../../utils/strip-payload.js\";\r\nimport { asArray, asRecord, normalizeString } from \"./helpers.js\";\r\nimport { resolveMercadoLibreProfileOrSelection } from \"./profile-resolution.js\";\r\nimport { mercadolibreProfileIdSchemaField } from \"./write-helpers.js\";\r\n\r\nexport const meliGetCategoryRequirementsSchema = z.object({\r\n profileId: mercadolibreProfileIdSchemaField,\r\n categoryId: z.string().trim().min(1).describe(\"MercadoLibre category id.\"),\r\n});\r\n\r\nexport async function meliGetCategoryRequirementsHandler(\r\n params: z.infer<typeof meliGetCategoryRequirementsSchema>\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 [attributes, shippingPreferences] = await Promise.all([\r\n getMercadoLibreCategoryAttributes(profileId, params.categoryId),\r\n getMercadoLibreCategoryShippingPreferences(profileId, params.categoryId),\r\n ]);\r\n\r\n return object(\r\n stripNulls({\r\n profile_id: profileId,\r\n category_id: params.categoryId,\r\n required_attributes: asArray<Record<string, unknown>>(attributes)\r\n .filter((attribute) => attribute.tags && typeof attribute.tags === \"object\" && Boolean(asRecord(attribute.tags).required))\r\n .map((attribute) => ({\r\n id: normalizeString(attribute.id),\r\n name: normalizeString(attribute.name),\r\n value_type: normalizeString(attribute.value_type),\r\n value_max_length: attribute.value_max_length,\r\n })),\r\n recommended_attributes: asArray<Record<string, unknown>>(attributes)\r\n .filter((attribute) => !(attribute.tags && typeof attribute.tags === \"object\" && Boolean(asRecord(attribute.tags).required)))\r\n .slice(0, 15)\r\n .map((attribute) => ({\r\n id: normalizeString(attribute.id),\r\n name: normalizeString(attribute.name),\r\n value_type: normalizeString(attribute.value_type),\r\n })),\r\n shipping_preferences: stripNulls({\r\n mode: normalizeString(shippingPreferences.mode),\r\n logistics: Array.isArray(shippingPreferences.logistics)\r\n ? shippingPreferences.logistics\r\n : shippingPreferences.logistic_types,\r\n tags: Array.isArray(shippingPreferences.tags) ? shippingPreferences.tags : undefined,\r\n }),\r\n })\r\n );\r\n } catch (err) {\r\n return error(formatMercadoLibreError(err, `Failed to fetch category requirements for ${params.categoryId}`));\r\n }\r\n}\r\n"],
5
5
  "mappings": "AAAA,SAAS,OAAO,cAAc;AAC9B,SAAS,SAAS;AAElB,SAAS,+BAA+B;AACxC;AAAA,EACE;AAAA,EACA;AAAA,OACK;AACP,SAAS,kBAAkB;AAC3B,SAAS,SAAS,UAAU,uBAAuB;AACnD,SAAS,6CAA6C;AACtD,SAAS,wCAAwC;AAE1C,MAAM,oCAAoC,EAAE,OAAO;AAAA,EACxD,WAAW;AAAA,EACX,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,SAAS,2BAA2B;AAC3E,CAAC;AAED,eAAsB,mCACpB,QACA;AACA,MAAI;AACF,UAAM,oBAAoB,MAAM,sCAAsC,OAAO,SAAS;AACtF,QAAI,CAAC,kBAAkB,IAAI;AACzB,aAAO,kBAAkB;AAAA,IAC3B;AAEA,UAAM,YAAY,kBAAkB,MAAM;AAC1C,UAAM,CAAC,YAAY,mBAAmB,IAAI,MAAM,QAAQ,IAAI;AAAA,MAC1D,kCAAkC,WAAW,OAAO,UAAU;AAAA,MAC9D,2CAA2C,WAAW,OAAO,UAAU;AAAA,IACzE,CAAC;AAED,WAAO;AAAA,MACL,WAAW;AAAA,QACT,YAAY;AAAA,QACZ,aAAa,OAAO;AAAA,QACpB,qBAAqB,QAAiC,UAAU,EAC7D,OAAO,CAAC,cAAc,UAAU,QAAQ,OAAO,UAAU,SAAS,YAAY,QAAQ,SAAS,UAAU,IAAI,EAAE,QAAQ,CAAC,EACxH,IAAI,CAAC,eAAe;AAAA,UACnB,IAAI,gBAAgB,UAAU,EAAE;AAAA,UAChC,MAAM,gBAAgB,UAAU,IAAI;AAAA,UACpC,YAAY,gBAAgB,UAAU,UAAU;AAAA,UAChD,kBAAkB,UAAU;AAAA,QAC9B,EAAE;AAAA,QACJ,wBAAwB,QAAiC,UAAU,EAChE,OAAO,CAAC,cAAc,EAAE,UAAU,QAAQ,OAAO,UAAU,SAAS,YAAY,QAAQ,SAAS,UAAU,IAAI,EAAE,QAAQ,EAAE,EAC3H,MAAM,GAAG,EAAE,EACX,IAAI,CAAC,eAAe;AAAA,UACnB,IAAI,gBAAgB,UAAU,EAAE;AAAA,UAChC,MAAM,gBAAgB,UAAU,IAAI;AAAA,UACpC,YAAY,gBAAgB,UAAU,UAAU;AAAA,QAClD,EAAE;AAAA,QACJ,sBAAsB,WAAW;AAAA,UAC/B,MAAM,gBAAgB,oBAAoB,IAAI;AAAA,UAC9C,WAAW,MAAM,QAAQ,oBAAoB,SAAS,IAClD,oBAAoB,YACpB,oBAAoB;AAAA,UACxB,MAAM,MAAM,QAAQ,oBAAoB,IAAI,IAAI,oBAAoB,OAAO;AAAA,QAC7E,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AAAA,EACF,SAAS,KAAK;AACZ,WAAO,MAAM,wBAAwB,KAAK,6CAA6C,OAAO,UAAU,EAAE,CAAC;AAAA,EAC7G;AACF;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/tools/mercadolibre/get-item-details.ts"],
4
- "sourcesContent": ["import { error, object } from \"mcp-use/server\";\nimport { z } from \"zod\";\n\nimport { formatMercadoLibreError } from \"../../services/mercadolibre/mercadolibre-api.js\";\nimport {\n getMercadoLibreItemDetailsBatch,\n getMercadoLibreItemDetailsWithFallbackBatch,\n} 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\nconst MAX_ITEM_IDS = 50;\n\nfunction formatItem(item: Record<string, unknown>) {\n return stripNulls({\n item_id: normalizeString(item.id),\n title: normalizeString(item.title),\n status: normalizeString(item.status),\n sub_status: Array.isArray(item.sub_status) ? item.sub_status : undefined,\n category_id: normalizeString(item.category_id),\n listing_type_id: normalizeString(item.listing_type_id),\n price: toNumber(item.price),\n currency_id: normalizeString(item.currency_id, \"UNKNOWN\"),\n available_quantity: toNumber(item.available_quantity),\n sold_quantity: toNumber(item.sold_quantity),\n condition: normalizeString(item.condition),\n permalink: normalizeString(item.permalink),\n pictures: asArray<Record<string, unknown>>(item.pictures).map((picture) => ({\n id: normalizeString(picture.id),\n url: normalizeString(picture.url ?? picture.secure_url),\n })),\n shipping: stripNulls({\n mode: normalizeString(asRecord(item.shipping).mode),\n logistic_type: normalizeString(asRecord(item.shipping).logistic_type),\n free_shipping: asRecord(item.shipping).free_shipping,\n }),\n });\n}\n\nexport const meliGetItemDetailsSchema = z.object({\n profileId: mercadolibreProfileIdSchemaField,\n itemIds: z\n .array(z.string().trim().min(1).describe(\"MercadoLibre item id.\"))\n .min(1)\n .max(MAX_ITEM_IDS)\n .describe(\"One or more MercadoLibre item ids (up to 50).\"),\n});\n\nexport async function meliGetItemDetailsHandler(params: z.infer<typeof meliGetItemDetailsSchema>) {\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 uniqueItemIds = Array.from(new Set(params.itemIds));\n\n const multigetItems = await getMercadoLibreItemDetailsBatch(profileId, uniqueItemIds);\n if (multigetItems.length === uniqueItemIds.length) {\n return object(\n stripNulls({\n metadata: {\n profile_id: profileId,\n requested: uniqueItemIds.length,\n successful: multigetItems.length,\n failed: 0,\n source: \"items_multiget\",\n },\n items: multigetItems.map(formatItem),\n })\n );\n }\n\n const batch = await getMercadoLibreItemDetailsWithFallbackBatch(profileId, uniqueItemIds, {\n maxConcurrency: 10,\n maxRetries: 2,\n });\n\n return object(\n stripNulls({\n metadata: {\n profile_id: profileId,\n requested: uniqueItemIds.length,\n successful: batch.successful.length,\n failed: batch.failed.length,\n has_failures: batch.failed.length > 0,\n source: \"item_by_item_fallback\",\n },\n items: batch.successful.map((entry) => formatItem(entry.document)),\n failures: batch.failed.map((failure) => ({\n item_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 item details\"));\n }\n}\n"],
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 {\r\n getMercadoLibreItemDetailsBatch,\r\n getMercadoLibreItemDetailsWithFallbackBatch,\r\n} 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\nconst MAX_ITEM_IDS = 50;\r\n\r\nfunction formatItem(item: Record<string, unknown>) {\r\n return stripNulls({\r\n item_id: normalizeString(item.id),\r\n title: normalizeString(item.title),\r\n status: normalizeString(item.status),\r\n sub_status: Array.isArray(item.sub_status) ? item.sub_status : undefined,\r\n category_id: normalizeString(item.category_id),\r\n listing_type_id: normalizeString(item.listing_type_id),\r\n price: toNumber(item.price),\r\n currency_id: normalizeString(item.currency_id, \"UNKNOWN\"),\r\n available_quantity: toNumber(item.available_quantity),\r\n sold_quantity: toNumber(item.sold_quantity),\r\n condition: normalizeString(item.condition),\r\n permalink: normalizeString(item.permalink),\r\n pictures: asArray<Record<string, unknown>>(item.pictures).map((picture) => ({\r\n id: normalizeString(picture.id),\r\n url: normalizeString(picture.url ?? picture.secure_url),\r\n })),\r\n shipping: stripNulls({\r\n mode: normalizeString(asRecord(item.shipping).mode),\r\n logistic_type: normalizeString(asRecord(item.shipping).logistic_type),\r\n free_shipping: asRecord(item.shipping).free_shipping,\r\n }),\r\n });\r\n}\r\n\r\nexport const meliGetItemDetailsSchema = z.object({\r\n profileId: mercadolibreProfileIdSchemaField,\r\n itemIds: z\r\n .array(z.string().trim().min(1).describe(\"MercadoLibre item id.\"))\r\n .min(1)\r\n .max(MAX_ITEM_IDS)\r\n .describe(\"One or more MercadoLibre item ids (up to 50).\"),\r\n});\r\n\r\nexport async function meliGetItemDetailsHandler(params: z.infer<typeof meliGetItemDetailsSchema>) {\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 uniqueItemIds = Array.from(new Set(params.itemIds));\r\n\r\n const multigetItems = await getMercadoLibreItemDetailsBatch(profileId, uniqueItemIds);\r\n if (multigetItems.length === uniqueItemIds.length) {\r\n return object(\r\n stripNulls({\r\n metadata: {\r\n profile_id: profileId,\r\n requested: uniqueItemIds.length,\r\n successful: multigetItems.length,\r\n failed: 0,\r\n source: \"items_multiget\",\r\n },\r\n items: multigetItems.map(formatItem),\r\n })\r\n );\r\n }\r\n\r\n const batch = await getMercadoLibreItemDetailsWithFallbackBatch(profileId, uniqueItemIds, {\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: uniqueItemIds.length,\r\n successful: batch.successful.length,\r\n failed: batch.failed.length,\r\n has_failures: batch.failed.length > 0,\r\n source: \"item_by_item_fallback\",\r\n },\r\n items: batch.successful.map((entry) => formatItem(entry.document)),\r\n failures: batch.failed.map((failure) => ({\r\n item_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 item details\"));\r\n }\r\n}\r\n"],
5
5
  "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -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\";\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"],
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"],
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\";\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"],
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"],
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\";\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"],
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"],
5
5
  "mappings": "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",
6
6
  "names": []
7
7
  }