@decodo/mcp-server 1.0.2 → 1.1.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 (176) hide show
  1. package/README.md +80 -43
  2. package/build/clients/scraper-api-client.js +78 -16
  3. package/build/clients/scraper-api-client.js.map +1 -1
  4. package/build/constants.js +35 -1
  5. package/build/constants.js.map +1 -1
  6. package/build/index.js +10 -11
  7. package/build/index.js.map +1 -1
  8. package/build/server/sapi-base-server.js +76 -0
  9. package/build/server/sapi-base-server.js.map +1 -0
  10. package/build/server/sapi-http-server.js +11 -0
  11. package/build/server/sapi-http-server.js.map +1 -0
  12. package/build/server/sapi-stdio-server.js +11 -0
  13. package/build/server/sapi-stdio-server.js.map +1 -0
  14. package/build/server.js +53 -0
  15. package/build/server.js.map +1 -0
  16. package/build/tools/amazon-bestsellers/amazon-bestsellers-tool.js +55 -0
  17. package/build/tools/amazon-bestsellers/amazon-bestsellers-tool.js.map +1 -0
  18. package/build/tools/amazon-bestsellers/index.js +18 -0
  19. package/build/tools/amazon-bestsellers/index.js.map +1 -0
  20. package/build/tools/amazon-pricing/amazon-pricing-tool.js +67 -0
  21. package/build/tools/amazon-pricing/amazon-pricing-tool.js.map +1 -0
  22. package/build/tools/amazon-pricing/index.js +18 -0
  23. package/build/tools/amazon-pricing/index.js.map +1 -0
  24. package/build/tools/amazon-product/amazon-product-tool.js +62 -0
  25. package/build/tools/amazon-product/amazon-product-tool.js.map +1 -0
  26. package/build/tools/amazon-product/index.js +18 -0
  27. package/build/tools/amazon-product/index.js.map +1 -0
  28. package/build/tools/amazon-search/amazon-search-tool.js +63 -0
  29. package/build/tools/amazon-search/amazon-search-tool.js.map +1 -0
  30. package/build/tools/amazon-search/index.js +18 -0
  31. package/build/tools/amazon-search/index.js.map +1 -0
  32. package/build/tools/amazon-search-parsed/amazon-search-parsed-tool.js +53 -0
  33. package/build/tools/amazon-search-parsed/amazon-search-parsed-tool.js.map +1 -0
  34. package/build/tools/amazon-search-parsed/index.js +18 -0
  35. package/build/tools/amazon-search-parsed/index.js.map +1 -0
  36. package/build/tools/amazon-search-parsed-tool.js +8 -2
  37. package/build/tools/amazon-search-parsed-tool.js.map +1 -1
  38. package/build/tools/amazon-sellers/amazon-sellers-tool.js +56 -0
  39. package/build/tools/amazon-sellers/amazon-sellers-tool.js.map +1 -0
  40. package/build/tools/amazon-sellers/index.js +18 -0
  41. package/build/tools/amazon-sellers/index.js.map +1 -0
  42. package/build/tools/bing-search/bing-search-tool.js +64 -0
  43. package/build/tools/bing-search/bing-search-tool.js.map +1 -0
  44. package/build/tools/bing-search/index.js +18 -0
  45. package/build/tools/bing-search/index.js.map +1 -0
  46. package/build/tools/chatgpt/chatgpt-tool.js +47 -0
  47. package/build/tools/chatgpt/chatgpt-tool.js.map +1 -0
  48. package/build/tools/chatgpt/index.js +18 -0
  49. package/build/tools/chatgpt/index.js.map +1 -0
  50. package/build/tools/chatgpt-tool.js +43 -0
  51. package/build/tools/chatgpt-tool.js.map +1 -0
  52. package/build/tools/constants.js +23 -0
  53. package/build/tools/constants.js.map +1 -0
  54. package/build/tools/google-ads/google-ads-tool.js +59 -0
  55. package/build/tools/google-ads/google-ads-tool.js.map +1 -0
  56. package/build/tools/google-ads/index.js +18 -0
  57. package/build/tools/google-ads/index.js.map +1 -0
  58. package/build/tools/google-ai-mode/google-ai-mode-tool.js +50 -0
  59. package/build/tools/google-ai-mode/google-ai-mode-tool.js.map +1 -0
  60. package/build/tools/google-ai-mode/index.js +18 -0
  61. package/build/tools/google-ai-mode/index.js.map +1 -0
  62. package/build/tools/google-lens/google-lens-tool.js +52 -0
  63. package/build/tools/google-lens/google-lens-tool.js.map +1 -0
  64. package/build/tools/google-lens/index.js +18 -0
  65. package/build/tools/google-lens/index.js.map +1 -0
  66. package/build/tools/google-search/google-search-tool.js +60 -0
  67. package/build/tools/google-search/google-search-tool.js.map +1 -0
  68. package/build/tools/google-search/index.js +18 -0
  69. package/build/tools/google-search/index.js.map +1 -0
  70. package/build/tools/google-search-parsed/google-search-parsed-tool.js +61 -0
  71. package/build/tools/google-search-parsed/google-search-parsed-tool.js.map +1 -0
  72. package/build/tools/google-search-parsed/index.js +18 -0
  73. package/build/tools/google-search-parsed/index.js.map +1 -0
  74. package/build/tools/google-search-parsed-tool.js +8 -2
  75. package/build/tools/google-search-parsed-tool.js.map +1 -1
  76. package/build/tools/google-travel-hotels/google-travel-hotels-tool.js +52 -0
  77. package/build/tools/google-travel-hotels/google-travel-hotels-tool.js.map +1 -0
  78. package/build/tools/google-travel-hotels/index.js +18 -0
  79. package/build/tools/google-travel-hotels/index.js.map +1 -0
  80. package/build/tools/index.js +30 -5
  81. package/build/tools/index.js.map +1 -1
  82. package/build/tools/perplexity/index.js +18 -0
  83. package/build/tools/perplexity/index.js.map +1 -0
  84. package/build/tools/perplexity/perplexity-tool.js +46 -0
  85. package/build/tools/perplexity/perplexity-tool.js.map +1 -0
  86. package/build/tools/perplexity-tool.js +42 -0
  87. package/build/tools/perplexity-tool.js.map +1 -0
  88. package/build/tools/reddit-post/index.js +18 -0
  89. package/build/tools/reddit-post/index.js.map +1 -0
  90. package/build/tools/reddit-post/reddit-post-tool.js +51 -0
  91. package/build/tools/reddit-post/reddit-post-tool.js.map +1 -0
  92. package/build/tools/reddit-post-tool.js +8 -2
  93. package/build/tools/reddit-post-tool.js.map +1 -1
  94. package/build/tools/reddit-subreddit/index.js +18 -0
  95. package/build/tools/reddit-subreddit/index.js.map +1 -0
  96. package/build/tools/reddit-subreddit/reddit-subreddit-tool.js +49 -0
  97. package/build/tools/reddit-subreddit/reddit-subreddit-tool.js.map +1 -0
  98. package/build/tools/reddit-subreddit-tool.js +8 -2
  99. package/build/tools/reddit-subreddit-tool.js.map +1 -1
  100. package/build/tools/reddit-user/index.js +18 -0
  101. package/build/tools/reddit-user/index.js.map +1 -0
  102. package/build/tools/reddit-user/reddit-user-tool.js +55 -0
  103. package/build/tools/reddit-user/reddit-user-tool.js.map +1 -0
  104. package/build/tools/scrape-as-markdown/index.js +18 -0
  105. package/build/tools/scrape-as-markdown/index.js.map +1 -0
  106. package/build/tools/scrape-as-markdown/scrape-as-markdown-tool.js +79 -0
  107. package/build/tools/scrape-as-markdown/scrape-as-markdown-tool.js.map +1 -0
  108. package/build/tools/scrape-as-markdown-tool.js +28 -20
  109. package/build/tools/scrape-as-markdown-tool.js.map +1 -1
  110. package/build/tools/screenshot/index.js +18 -0
  111. package/build/tools/screenshot/index.js.map +1 -0
  112. package/build/tools/screenshot/screenshot-tool.js +48 -0
  113. package/build/tools/screenshot/screenshot-tool.js.map +1 -0
  114. package/build/tools/screenshot-tool.js +44 -0
  115. package/build/tools/screenshot-tool.js.map +1 -0
  116. package/build/tools/target-product/index.js +18 -0
  117. package/build/tools/target-product/index.js.map +1 -0
  118. package/build/tools/target-product/target-product-tool.js +50 -0
  119. package/build/tools/target-product/target-product-tool.js.map +1 -0
  120. package/build/tools/target-search/index.js +18 -0
  121. package/build/tools/target-search/index.js.map +1 -0
  122. package/build/tools/target-search/target-search-tool.js +56 -0
  123. package/build/tools/target-search/target-search-tool.js.map +1 -0
  124. package/build/tools/tiktok-post/index.js +18 -0
  125. package/build/tools/tiktok-post/index.js.map +1 -0
  126. package/build/tools/tiktok-post/tiktok-post-tool.js +48 -0
  127. package/build/tools/tiktok-post/tiktok-post-tool.js.map +1 -0
  128. package/build/tools/tiktok-shop-product/index.js +18 -0
  129. package/build/tools/tiktok-shop-product/index.js.map +1 -0
  130. package/build/tools/tiktok-shop-product/tiktok-shop-product-tool.js +47 -0
  131. package/build/tools/tiktok-shop-product/tiktok-shop-product-tool.js.map +1 -0
  132. package/build/tools/tiktok-shop-search/index.js +18 -0
  133. package/build/tools/tiktok-shop-search/index.js.map +1 -0
  134. package/build/tools/tiktok-shop-search/tiktok-shop-search-tool.js +54 -0
  135. package/build/tools/tiktok-shop-search/tiktok-shop-search-tool.js.map +1 -0
  136. package/build/tools/tiktok-shop-url/index.js +18 -0
  137. package/build/tools/tiktok-shop-url/index.js.map +1 -0
  138. package/build/tools/tiktok-shop-url/tiktok-shop-url-tool.js +45 -0
  139. package/build/tools/tiktok-shop-url/tiktok-shop-url-tool.js.map +1 -0
  140. package/build/tools/tool.js +7 -0
  141. package/build/tools/tool.js.map +1 -0
  142. package/build/tools/walmart-product/index.js +18 -0
  143. package/build/tools/walmart-product/index.js.map +1 -0
  144. package/build/tools/walmart-product/walmart-product-tool.js +61 -0
  145. package/build/tools/walmart-product/walmart-product-tool.js.map +1 -0
  146. package/build/tools/walmart-search/index.js +18 -0
  147. package/build/tools/walmart-search/index.js.map +1 -0
  148. package/build/tools/walmart-search/walmart-search-tool.js +62 -0
  149. package/build/tools/walmart-search/walmart-search-tool.js.map +1 -0
  150. package/build/tools/youtube-channel/index.js +18 -0
  151. package/build/tools/youtube-channel/index.js.map +1 -0
  152. package/build/tools/youtube-channel/youtube-channel-tool.js +48 -0
  153. package/build/tools/youtube-channel/youtube-channel-tool.js.map +1 -0
  154. package/build/tools/youtube-metadata/index.js +18 -0
  155. package/build/tools/youtube-metadata/index.js.map +1 -0
  156. package/build/tools/youtube-metadata/youtube-metadata-tool.js +43 -0
  157. package/build/tools/youtube-metadata/youtube-metadata-tool.js.map +1 -0
  158. package/build/tools/youtube-search/index.js +18 -0
  159. package/build/tools/youtube-search/index.js.map +1 -0
  160. package/build/tools/youtube-search/youtube-search-tool.js +43 -0
  161. package/build/tools/youtube-search/youtube-search-tool.js.map +1 -0
  162. package/build/tools/youtube-subtitles/index.js +18 -0
  163. package/build/tools/youtube-subtitles/index.js.map +1 -0
  164. package/build/tools/youtube-subtitles/youtube-subtitles-tool.js +48 -0
  165. package/build/tools/youtube-subtitles/youtube-subtitles-tool.js.map +1 -0
  166. package/build/tools/youtube-video/index.js +18 -0
  167. package/build/tools/youtube-video/index.js.map +1 -0
  168. package/build/tools/youtube-video/youtube-video-tool.js +45 -0
  169. package/build/tools/youtube-video/youtube-video-tool.js.map +1 -0
  170. package/build/utils.js +14 -3
  171. package/build/utils.js.map +1 -1
  172. package/build/zod/zod-types.js +12 -4
  173. package/build/zod/zod-types.js.map +1 -1
  174. package/package.json +26 -13
  175. package/build/tools/scrape-tool.js +0 -70
  176. package/build/tools/scrape-tool.js.map +0 -1
@@ -13,6 +13,7 @@ class GoogleSearchParsedTool {
13
13
  }
14
14
  exports.GoogleSearchParsedTool = GoogleSearchParsedTool;
15
15
  _a = GoogleSearchParsedTool;
16
+ GoogleSearchParsedTool.toolset = constants_1.TOOLSET.WEB;
16
17
  GoogleSearchParsedTool.FIELDS_WITH_HIGH_CHAR_COUNT = [
17
18
  'images',
18
19
  'image_data',
@@ -28,7 +29,7 @@ GoogleSearchParsedTool.transformAutoParsedResponse = ({ obj }) => {
28
29
  const text = JSON.stringify(obj);
29
30
  return text;
30
31
  };
31
- GoogleSearchParsedTool.register = ({ server, sapiClient, }) => {
32
+ GoogleSearchParsedTool.register = ({ server, sapiClient, getAuthToken, }) => {
32
33
  server.registerTool('google_search_parsed', {
33
34
  description: 'Scrape Google Search results with automatic parsing',
34
35
  inputSchema: {
@@ -37,9 +38,14 @@ GoogleSearchParsedTool.register = ({ server, sapiClient, }) => {
37
38
  locale: zod_types_1.zodLocale,
38
39
  jsRender: zod_types_1.zodJsRender,
39
40
  },
41
+ annotations: {
42
+ readOnlyHint: true,
43
+ openWorldHint: true,
44
+ },
40
45
  }, async (scrapingParams) => {
41
46
  const params = Object.assign(Object.assign({}, scrapingParams), { target: constants_1.SCRAPER_API_TARGETS.GOOGLE_SEARCH, parse: true });
42
- const { data } = await sapiClient.scrape({ scrapingParams: params });
47
+ const auth = getAuthToken();
48
+ const { data } = await sapiClient.scrape({ auth, scrapingParams: params });
43
49
  const text = _a.transformAutoParsedResponse({ obj: data });
44
50
  return {
45
51
  content: [
@@ -1 +1 @@
1
- {"version":3,"file":"google-search-parsed-tool.js","sourceRoot":"","sources":["../../src/tools/google-search-parsed-tool.ts"],"names":[],"mappings":";;;;;;;AAAA,8CAAoB;AAIpB,4CAAmD;AACnD,oCAAqD;AACrD,gDAAkE;AAElE,MAAa,sBAAsB;;AAAnC,wDA4DC;;AA3DQ,kDAA2B,GAAG;IACnC,QAAQ;IACR,YAAY;IACZ,uBAAuB;IACvB,UAAU;IACV,sBAAsB;IACtB,wBAAwB;CACzB,AAPiC,CAOhC;AAEK,kDAA2B,GAAG,CAAC,EAAE,GAAG,EAAmB,EAAU,EAAE;IACxE,KAAK,MAAM,aAAa,IAAI,EAAsB,CAAC,2BAA2B,EAAE,CAAC;QAC/E,GAAG,GAAG,IAAA,iCAAyB,EAAC,EAAE,GAAG,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAEjC,OAAO,IAAI,CAAC;AACd,CAAC,AARiC,CAQhC;AAEK,+BAAQ,GAAG,CAAC,EACjB,MAAM,EACN,UAAU,GAIX,EAAE,EAAE;IACH,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;QACE,WAAW,EAAE,qDAAqD;QAClE,WAAW,EAAE;YACX,KAAK,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;YAC1C,GAAG,EAAE,kBAAM;YACX,MAAM,EAAE,qBAAS;YACjB,QAAQ,EAAE,uBAAW;SACtB;KACF,EACD,KAAK,EAAE,cAAiC,EAAE,EAAE;QAC1C,MAAM,MAAM,GAAG,gCACV,cAAc,KACjB,MAAM,EAAE,+BAAmB,CAAC,aAAa,EACzC,KAAK,EAAE,IAAI,GACe,CAAC;QAE7B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,UAAU,CAAC,MAAM,CAAS,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC,CAAC;QAE7E,MAAM,IAAI,GAAG,EAAI,CAAC,2BAA2B,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;QAE7D,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI;iBACL;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC,AAvCc,CAuCb"}
1
+ {"version":3,"file":"google-search-parsed-tool.js","sourceRoot":"","sources":["../../src/tools/google-search-parsed-tool.ts"],"names":[],"mappings":";;;;;;;AAAA,8CAAoB;AAIpB,4CAA4D;AAC5D,oCAAqD;AACrD,gDAAkE;AAElE,MAAa,sBAAsB;;AAAnC,wDAqEC;;AApEQ,8BAAO,GAAG,mBAAO,CAAC,GAAG,AAAd,CAAe;AACtB,kDAA2B,GAAG;IACnC,QAAQ;IACR,YAAY;IACZ,uBAAuB;IACvB,UAAU;IACV,sBAAsB;IACtB,wBAAwB;CACzB,AAPiC,CAOhC;AAEK,kDAA2B,GAAG,CAAC,EAAE,GAAG,EAAmB,EAAU,EAAE;IACxE,KAAK,MAAM,aAAa,IAAI,EAAsB,CAAC,2BAA2B,EAAE,CAAC;QAC/E,GAAG,GAAG,IAAA,iCAAyB,EAAC,EAAE,GAAG,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAEjC,OAAO,IAAI,CAAC;AACd,CAAC,AARiC,CAQhC;AAEK,+BAAQ,GAAG,CAAC,EACjB,MAAM,EACN,UAAU,EACV,YAAY,GAKb,EAAE,EAAE;IACH,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;QACE,WAAW,EAAE,qDAAqD;QAClE,WAAW,EAAE;YACX,KAAK,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;YAC1C,GAAG,EAAE,kBAAM;YACX,MAAM,EAAE,qBAAS;YACjB,QAAQ,EAAE,uBAAW;SACtB;QACD,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,aAAa,EAAE,IAAI;SACpB;KACF,EACD,KAAK,EAAE,cAAiC,EAAE,EAAE;QAC1C,MAAM,MAAM,GAAG,gCACV,cAAc,KACjB,MAAM,EAAE,+BAAmB,CAAC,aAAa,EACzC,KAAK,EAAE,IAAI,GACe,CAAC;QAE7B,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;QAE5B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,UAAU,CAAC,MAAM,CAAS,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC,CAAC;QAEnF,MAAM,IAAI,GAAG,EAAI,CAAC,2BAA2B,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;QAE7D,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI;iBACL;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC,AA/Cc,CA+Cb"}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.GoogleTravelHotelsTool = void 0;
7
+ const zod_1 = __importDefault(require("zod"));
8
+ const constants_1 = require("../../constants");
9
+ const zod_types_1 = require("../../zod/zod-types");
10
+ const tool_1 = require("../tool");
11
+ const zodPageFrom = zod_1.default
12
+ .number()
13
+ .describe('Starting page number for pagination')
14
+ .optional();
15
+ class GoogleTravelHotelsTool extends tool_1.Tool {
16
+ constructor() {
17
+ super(...arguments);
18
+ this.toolset = constants_1.TOOLSET.SEARCH;
19
+ this.transformResponse = ({ data }) => {
20
+ return { data: JSON.stringify(data) };
21
+ };
22
+ this.register = ({ server, sapiClient, auth }) => {
23
+ server.registerTool('google_travel_hotels', {
24
+ description: 'Scrape Google Travel Hotels search results',
25
+ inputSchema: {
26
+ query: zod_1.default.string().describe('Hotel search query (e.g., "trivago", "hotels in Paris")'),
27
+ jsRender: zod_types_1.zodJsRender,
28
+ locale: zod_types_1.zodLocale,
29
+ deviceType: zod_types_1.zodDeviceType,
30
+ pageFrom: zodPageFrom,
31
+ },
32
+ annotations: {
33
+ readOnlyHint: true,
34
+ openWorldHint: true,
35
+ },
36
+ }, async (scrapingParams) => {
37
+ const params = Object.assign(Object.assign({}, scrapingParams), { target: constants_1.SCRAPER_API_TARGETS.GOOGLE_TRAVEL_HOTELS, markdown: true });
38
+ const { data } = await sapiClient.scrape({ auth, scrapingParams: params });
39
+ return {
40
+ content: [
41
+ {
42
+ type: 'text',
43
+ text: JSON.stringify(data),
44
+ },
45
+ ],
46
+ };
47
+ });
48
+ };
49
+ }
50
+ }
51
+ exports.GoogleTravelHotelsTool = GoogleTravelHotelsTool;
52
+ //# sourceMappingURL=google-travel-hotels-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"google-travel-hotels-tool.js","sourceRoot":"","sources":["../../../src/tools/google-travel-hotels/google-travel-hotels-tool.ts"],"names":[],"mappings":";;;;;;AAAA,8CAAoB;AAEpB,+CAA+D;AAC/D,mDAA4E;AAC5E,kCAAqD;AAErD,MAAM,WAAW,GAAG,aAAC;KAClB,MAAM,EAAE;KACR,QAAQ,CAAC,qCAAqC,CAAC;KAC/C,QAAQ,EAAE,CAAC;AAEd,MAAa,sBAAuB,SAAQ,WAAI;IAAhD;;QACE,YAAO,GAAG,mBAAO,CAAC,MAAM,CAAC;QAEzB,sBAAiB,GAAG,CAAC,EAAE,IAAI,EAAoB,EAAE,EAAE;YACjD,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,CAAC,CAAC;QAEF,aAAQ,GAAG,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAwB,EAAE,EAAE;YAChE,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;gBACE,WAAW,EAAE,4CAA4C;gBACzD,WAAW,EAAE;oBACX,KAAK,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yDAAyD,CAAC;oBACrF,QAAQ,EAAE,uBAAW;oBACrB,MAAM,EAAE,qBAAS;oBACjB,UAAU,EAAE,yBAAa;oBACzB,QAAQ,EAAE,WAAW;iBACtB;gBACD,WAAW,EAAE;oBACX,YAAY,EAAE,IAAI;oBAClB,aAAa,EAAE,IAAI;iBACpB;aACF,EACD,KAAK,EAAE,cAAiC,EAAE,EAAE;gBAC1C,MAAM,MAAM,GAAG,gCACV,cAAc,KACjB,MAAM,EAAE,+BAAmB,CAAC,oBAAoB,EAChD,QAAQ,EAAE,IAAI,GACY,CAAC;gBAE7B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,UAAU,CAAC,MAAM,CAAS,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC,CAAC;gBAEnF,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;yBAC3B;qBACF;iBACF,CAAC;YACJ,CAAC,CACF,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC;CAAA;AA5CD,wDA4CC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./google-travel-hotels-tool"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/google-travel-hotels/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8DAA4C"}
@@ -14,9 +14,34 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./amazon-search-parsed-tool"), exports);
18
- __exportStar(require("./google-search-parsed-tool"), exports);
19
- __exportStar(require("./reddit-subreddit-tool"), exports);
20
- __exportStar(require("./reddit-post-tool"), exports);
21
- __exportStar(require("./scrape-as-markdown-tool"), exports);
17
+ __exportStar(require("./amazon-search"), exports);
18
+ __exportStar(require("./amazon-product"), exports);
19
+ __exportStar(require("./amazon-pricing"), exports);
20
+ __exportStar(require("./amazon-sellers"), exports);
21
+ __exportStar(require("./amazon-bestsellers"), exports);
22
+ __exportStar(require("./bing-search"), exports);
23
+ __exportStar(require("./chatgpt"), exports);
24
+ __exportStar(require("./google-search"), exports);
25
+ __exportStar(require("./google-ads"), exports);
26
+ __exportStar(require("./google-lens"), exports);
27
+ __exportStar(require("./google-ai-mode"), exports);
28
+ __exportStar(require("./google-travel-hotels"), exports);
29
+ __exportStar(require("./perplexity"), exports);
30
+ __exportStar(require("./reddit-post"), exports);
31
+ __exportStar(require("./reddit-subreddit"), exports);
32
+ __exportStar(require("./reddit-user"), exports);
33
+ __exportStar(require("./target-search"), exports);
34
+ __exportStar(require("./target-product"), exports);
35
+ __exportStar(require("./tiktok-post"), exports);
36
+ __exportStar(require("./tiktok-shop-search"), exports);
37
+ __exportStar(require("./tiktok-shop-product"), exports);
38
+ __exportStar(require("./tiktok-shop-url"), exports);
39
+ __exportStar(require("./walmart-search"), exports);
40
+ __exportStar(require("./walmart-product"), exports);
41
+ __exportStar(require("./youtube-metadata"), exports);
42
+ __exportStar(require("./youtube-channel"), exports);
43
+ __exportStar(require("./youtube-subtitles"), exports);
44
+ __exportStar(require("./youtube-search"), exports);
45
+ __exportStar(require("./scrape-as-markdown"), exports);
46
+ __exportStar(require("./screenshot"), exports);
22
47
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8DAA4C;AAC5C,8DAA4C;AAC5C,0DAAwC;AACxC,qDAAmC;AACnC,4DAA0C"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC;AAChC,mDAAiC;AACjC,mDAAiC;AACjC,mDAAiC;AACjC,uDAAqC;AACrC,gDAA8B;AAC9B,4CAA0B;AAC1B,kDAAgC;AAChC,+CAA6B;AAC7B,gDAA8B;AAC9B,mDAAiC;AACjC,yDAAuC;AACvC,+CAA6B;AAC7B,gDAA8B;AAC9B,qDAAmC;AACnC,gDAA8B;AAC9B,kDAAgC;AAChC,mDAAiC;AACjC,gDAA8B;AAC9B,uDAAqC;AACrC,wDAAsC;AACtC,oDAAkC;AAClC,mDAAiC;AACjC,oDAAkC;AAClC,qDAAmC;AACnC,oDAAkC;AAClC,sDAAoC;AACpC,mDAAiC;AACjC,uDAAqC;AACrC,+CAA6B"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./perplexity-tool"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/perplexity/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC"}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.PerplexityTool = void 0;
7
+ const zod_1 = __importDefault(require("zod"));
8
+ const constants_1 = require("../../constants");
9
+ const zod_types_1 = require("../../zod/zod-types");
10
+ const tool_1 = require("../tool");
11
+ class PerplexityTool extends tool_1.Tool {
12
+ constructor() {
13
+ super(...arguments);
14
+ this.toolset = constants_1.TOOLSET.AI;
15
+ this.transformResponse = ({ data }) => {
16
+ return { data: JSON.stringify(data, null, 2) };
17
+ };
18
+ this.register = ({ server, sapiClient, auth }) => {
19
+ server.registerTool('perplexity', {
20
+ description: 'Search and interact with Perplexity for AI-powered responses and conversations',
21
+ inputSchema: {
22
+ prompt: zod_1.default.string().describe('Prompt to send to Perplexity'),
23
+ geo: zod_types_1.zodGeo,
24
+ },
25
+ annotations: {
26
+ readOnlyHint: true,
27
+ openWorldHint: true,
28
+ },
29
+ }, async (scrapingParams) => {
30
+ const params = Object.assign(Object.assign({}, scrapingParams), { target: constants_1.SCRAPER_API_TARGETS.PERPLEXITY, parse: true });
31
+ const { data } = await sapiClient.scrape({ auth, scrapingParams: params });
32
+ const { data: text } = this.transformResponse({ data });
33
+ return {
34
+ content: [
35
+ {
36
+ type: 'text',
37
+ text,
38
+ },
39
+ ],
40
+ };
41
+ });
42
+ };
43
+ }
44
+ }
45
+ exports.PerplexityTool = PerplexityTool;
46
+ //# sourceMappingURL=perplexity-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"perplexity-tool.js","sourceRoot":"","sources":["../../../src/tools/perplexity/perplexity-tool.ts"],"names":[],"mappings":";;;;;;AAAA,8CAAoB;AAEpB,+CAA+D;AAC/D,mDAA6C;AAC7C,kCAAqD;AAErD,MAAa,cAAe,SAAQ,WAAI;IAAxC;;QACE,YAAO,GAAG,mBAAO,CAAC,EAAE,CAAC;QAErB,sBAAiB,GAAG,CAAC,EAAE,IAAI,EAAoB,EAAE,EAAE;YACjD,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;QACjD,CAAC,CAAC;QAEF,aAAQ,GAAG,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAwB,EAAE,EAAE;YAChE,MAAM,CAAC,YAAY,CACjB,YAAY,EACZ;gBACE,WAAW,EACT,gFAAgF;gBAClF,WAAW,EAAE;oBACX,MAAM,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;oBAC3D,GAAG,EAAE,kBAAM;iBACZ;gBACD,WAAW,EAAE;oBACX,YAAY,EAAE,IAAI;oBAClB,aAAa,EAAE,IAAI;iBACpB;aACF,EACD,KAAK,EAAE,cAAiC,EAAE,EAAE;gBAC1C,MAAM,MAAM,GAAG,gCACV,cAAc,KACjB,MAAM,EAAE,+BAAmB,CAAC,UAAU,EACtC,KAAK,EAAE,IAAI,GACe,CAAC;gBAE7B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,UAAU,CAAC,MAAM,CAAS,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC,CAAC;gBAEnF,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;gBAExD,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI;yBACL;qBACF;iBACF,CAAC;YACJ,CAAC,CACF,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC;CAAA;AA5CD,wCA4CC"}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ var _a;
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.PerplexityTool = void 0;
8
+ const zod_1 = __importDefault(require("zod"));
9
+ const constants_1 = require("../constants");
10
+ const zod_types_1 = require("../zod/zod-types");
11
+ class PerplexityTool {
12
+ }
13
+ exports.PerplexityTool = PerplexityTool;
14
+ _a = PerplexityTool;
15
+ PerplexityTool.toolset = constants_1.TOOLSET.AI;
16
+ PerplexityTool.register = ({ server, sapiClient, getAuthToken, }) => {
17
+ server.registerTool('perplexity', {
18
+ description: 'Search and interact with Perplexity for AI-powered responses and conversations',
19
+ inputSchema: {
20
+ prompt: zod_1.default.string().describe('Prompt to send to Perplexity'),
21
+ geo: zod_types_1.zodGeo,
22
+ },
23
+ annotations: {
24
+ readOnlyHint: true,
25
+ openWorldHint: true,
26
+ },
27
+ }, async (scrapingParams) => {
28
+ const params = Object.assign(Object.assign({}, scrapingParams), { target: constants_1.SCRAPER_API_TARGETS.PERPLEXITY, parse: true });
29
+ const auth = getAuthToken();
30
+ const { data } = await sapiClient.scrape({ auth, scrapingParams: params });
31
+ const text = JSON.stringify(data, null, 2);
32
+ return {
33
+ content: [
34
+ {
35
+ type: 'text',
36
+ text,
37
+ },
38
+ ],
39
+ };
40
+ });
41
+ };
42
+ //# sourceMappingURL=perplexity-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"perplexity-tool.js","sourceRoot":"","sources":["../../src/tools/perplexity-tool.ts"],"names":[],"mappings":";;;;;;;AAAA,8CAAoB;AAIpB,4CAA4D;AAC5D,gDAA0C;AAE1C,MAAa,cAAc;;AAA3B,wCAiDC;;AAhDQ,sBAAO,GAAG,mBAAO,CAAC,EAAE,AAAb,CAAc;AACrB,uBAAQ,GAAG,CAAC,EACjB,MAAM,EACN,UAAU,EACV,YAAY,GAKb,EAAE,EAAE;IACH,MAAM,CAAC,YAAY,CACjB,YAAY,EACZ;QACE,WAAW,EACT,gFAAgF;QAClF,WAAW,EAAE;YACX,MAAM,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;YAC3D,GAAG,EAAE,kBAAM;SACZ;QACD,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,aAAa,EAAE,IAAI;SACpB;KACF,EACD,KAAK,EAAE,cAAiC,EAAE,EAAE;QAC1C,MAAM,MAAM,GAAG,gCACV,cAAc,KACjB,MAAM,EAAE,+BAAmB,CAAC,UAAU,EACtC,KAAK,EAAE,IAAI,GACe,CAAC;QAE7B,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;QAE5B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,UAAU,CAAC,MAAM,CAAS,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC,CAAC;QAEnF,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAE3C,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI;iBACL;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC,AA9Cc,CA8Cb"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./reddit-post-tool"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/reddit-post/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.RedditPostTool = void 0;
7
+ const zod_1 = __importDefault(require("zod"));
8
+ const constants_1 = require("../../constants");
9
+ const utils_1 = require("../../utils");
10
+ const tool_1 = require("../tool");
11
+ class RedditPostTool extends tool_1.Tool {
12
+ constructor() {
13
+ super(...arguments);
14
+ this.toolset = constants_1.TOOLSET.SOCIAL_MEDIA;
15
+ this.transformResponse = ({ data }) => {
16
+ for (const fieldToRemove of RedditPostTool.FIELDS_WITH_HIGH_CHAR_COUNT) {
17
+ data = (0, utils_1.removeKeyFromNestedObject)({ obj: data, keyToRemove: fieldToRemove });
18
+ }
19
+ return { data: JSON.stringify(data) };
20
+ };
21
+ this.register = ({ server, sapiClient, auth }) => {
22
+ server.registerTool('reddit_post', {
23
+ description: 'Scrape a specific Reddit post',
24
+ inputSchema: {
25
+ url: zod_1.default
26
+ .string()
27
+ .describe('reddit post URL (eg. https://www.reddit.com/r/hometheater/comments/1jz9xk5/lg_ubk90_only_works_when_plugged_into_tv_via)'),
28
+ },
29
+ annotations: {
30
+ readOnlyHint: true,
31
+ openWorldHint: true,
32
+ },
33
+ }, async (scrapingParams) => {
34
+ const params = Object.assign(Object.assign({}, scrapingParams), { target: constants_1.SCRAPER_API_TARGETS.REDDIT_POST });
35
+ const { data } = await sapiClient.scrape({ auth, scrapingParams: params });
36
+ const { data: text } = this.transformResponse({ data });
37
+ return {
38
+ content: [
39
+ {
40
+ type: 'text',
41
+ text,
42
+ },
43
+ ],
44
+ };
45
+ });
46
+ };
47
+ }
48
+ }
49
+ exports.RedditPostTool = RedditPostTool;
50
+ RedditPostTool.FIELDS_WITH_HIGH_CHAR_COUNT = ['author_flair_richtext'];
51
+ //# sourceMappingURL=reddit-post-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reddit-post-tool.js","sourceRoot":"","sources":["../../../src/tools/reddit-post/reddit-post-tool.ts"],"names":[],"mappings":";;;;;;AAAA,8CAAoB;AAEpB,+CAA+D;AAC/D,uCAAwD;AACxD,kCAAqD;AAErD,MAAa,cAAe,SAAQ,WAAI;IAAxC;;QACE,YAAO,GAAG,mBAAO,CAAC,YAAY,CAAC;QAI/B,sBAAiB,GAAG,CAAC,EAAE,IAAI,EAAoB,EAAE,EAAE;YACjD,KAAK,MAAM,aAAa,IAAI,cAAc,CAAC,2BAA2B,EAAE,CAAC;gBACvE,IAAI,GAAG,IAAA,iCAAyB,EAAC,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC,CAAC;YAC9E,CAAC;YAED,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,CAAC,CAAC;QAEF,aAAQ,GAAG,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAwB,EAAE,EAAE;YAChE,MAAM,CAAC,YAAY,CACjB,aAAa,EACb;gBACE,WAAW,EAAE,+BAA+B;gBAC5C,WAAW,EAAE;oBACX,GAAG,EAAE,aAAC;yBACH,MAAM,EAAE;yBACR,QAAQ,CACP,0HAA0H,CAC3H;iBACJ;gBACD,WAAW,EAAE;oBACX,YAAY,EAAE,IAAI;oBAClB,aAAa,EAAE,IAAI;iBACpB;aACF,EACD,KAAK,EAAE,cAAiC,EAAE,EAAE;gBAC1C,MAAM,MAAM,GAAG,gCACV,cAAc,KACjB,MAAM,EAAE,+BAAmB,CAAC,WAAW,GACb,CAAC;gBAE7B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,UAAU,CAAC,MAAM,CAAS,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC,CAAC;gBAEnF,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;gBAExD,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI;yBACL;qBACF;iBACF,CAAC;YACJ,CAAC,CACF,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC;;AAnDD,wCAmDC;AAhDgB,0CAA2B,GAAG,CAAC,uBAAuB,CAAC,AAA5B,CAA6B"}
@@ -11,15 +11,21 @@ class RedditPostTool {
11
11
  }
12
12
  exports.RedditPostTool = RedditPostTool;
13
13
  _a = RedditPostTool;
14
- RedditPostTool.register = ({ server, sapiClient, }) => {
14
+ RedditPostTool.toolset = constants_1.TOOLSET.SOCIAL_MEDIA;
15
+ RedditPostTool.register = ({ server, sapiClient, getAuthToken, }) => {
15
16
  server.registerTool('reddit_post', {
16
17
  description: 'Scrape a specific Reddit post',
17
18
  inputSchema: {
18
19
  url: zod_1.default.string().describe('reddit post URL'),
19
20
  },
21
+ annotations: {
22
+ readOnlyHint: true,
23
+ openWorldHint: true,
24
+ },
20
25
  }, async (scrapingParams) => {
21
26
  const params = Object.assign(Object.assign({}, scrapingParams), { target: constants_1.SCRAPER_API_TARGETS.REDDIT_POST });
22
- const { data } = await sapiClient.scrape({ scrapingParams: params });
27
+ const auth = getAuthToken();
28
+ const { data } = await sapiClient.scrape({ auth, scrapingParams: params });
23
29
  const text = JSON.stringify(data, null, 2);
24
30
  return {
25
31
  content: [
@@ -1 +1 @@
1
- {"version":3,"file":"reddit-post-tool.js","sourceRoot":"","sources":["../../src/tools/reddit-post-tool.ts"],"names":[],"mappings":";;;;;;;AAAA,8CAAoB;AAIpB,4CAAmD;AAEnD,MAAa,cAAc;;AAA3B,wCAqCC;;AApCQ,uBAAQ,GAAG,CAAC,EACjB,MAAM,EACN,UAAU,GAIX,EAAE,EAAE;IACH,MAAM,CAAC,YAAY,CACjB,aAAa,EACb;QACE,WAAW,EAAE,+BAA+B;QAC5C,WAAW,EAAE;YACX,GAAG,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;SAC5C;KACF,EACD,KAAK,EAAE,cAAiC,EAAE,EAAE;QAC1C,MAAM,MAAM,GAAG,gCACV,cAAc,KACjB,MAAM,EAAE,+BAAmB,CAAC,WAAW,GACb,CAAC;QAE7B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,UAAU,CAAC,MAAM,CAAS,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC,CAAC;QAE7E,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAE3C,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI;iBACL;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC,AAnCc,CAmCb"}
1
+ {"version":3,"file":"reddit-post-tool.js","sourceRoot":"","sources":["../../src/tools/reddit-post-tool.ts"],"names":[],"mappings":";;;;;;;AAAA,8CAAoB;AAIpB,4CAA4D;AAE5D,MAAa,cAAc;;AAA3B,wCA8CC;;AA7CQ,sBAAO,GAAG,mBAAO,CAAC,YAAY,AAAvB,CAAwB;AAC/B,uBAAQ,GAAG,CAAC,EACjB,MAAM,EACN,UAAU,EACV,YAAY,GAKb,EAAE,EAAE;IACH,MAAM,CAAC,YAAY,CACjB,aAAa,EACb;QACE,WAAW,EAAE,+BAA+B;QAC5C,WAAW,EAAE;YACX,GAAG,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;SAC5C;QACD,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,aAAa,EAAE,IAAI;SACpB;KACF,EACD,KAAK,EAAE,cAAiC,EAAE,EAAE;QAC1C,MAAM,MAAM,GAAG,gCACV,cAAc,KACjB,MAAM,EAAE,+BAAmB,CAAC,WAAW,GACb,CAAC;QAE7B,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;QAE5B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,UAAU,CAAC,MAAM,CAAS,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC,CAAC;QAEnF,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAE3C,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI;iBACL;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC,AA3Cc,CA2Cb"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./reddit-subreddit-tool"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/reddit-subreddit/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0DAAwC"}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.RedditSubredditTool = void 0;
7
+ const zod_1 = __importDefault(require("zod"));
8
+ const constants_1 = require("../../constants");
9
+ const utils_1 = require("../../utils");
10
+ const tool_1 = require("../tool");
11
+ class RedditSubredditTool extends tool_1.Tool {
12
+ constructor() {
13
+ super(...arguments);
14
+ this.toolset = constants_1.TOOLSET.SOCIAL_MEDIA;
15
+ this.transformResponse = ({ data }) => {
16
+ for (const fieldToRemove of RedditSubredditTool.FIELDS_WITH_HIGH_CHAR_COUNT) {
17
+ data = (0, utils_1.removeKeyFromNestedObject)({ obj: data, keyToRemove: fieldToRemove });
18
+ }
19
+ return { data: JSON.stringify(data) };
20
+ };
21
+ this.register = ({ server, sapiClient, auth }) => {
22
+ server.registerTool('reddit_subreddit', {
23
+ description: 'Scrape Reddit subreddit results with automatic parsing',
24
+ inputSchema: {
25
+ url: zod_1.default.string().describe('URL to subreddit'),
26
+ },
27
+ annotations: {
28
+ readOnlyHint: true,
29
+ openWorldHint: true,
30
+ },
31
+ }, async (scrapingParams) => {
32
+ const params = Object.assign(Object.assign({}, scrapingParams), { target: constants_1.SCRAPER_API_TARGETS.REDDIT_SUBREDDIT });
33
+ const { data } = await sapiClient.scrape({ auth, scrapingParams: params });
34
+ const { data: text } = this.transformResponse({ data });
35
+ return {
36
+ content: [
37
+ {
38
+ type: 'text',
39
+ text,
40
+ },
41
+ ],
42
+ };
43
+ });
44
+ };
45
+ }
46
+ }
47
+ exports.RedditSubredditTool = RedditSubredditTool;
48
+ RedditSubredditTool.FIELDS_WITH_HIGH_CHAR_COUNT = ['preview', 'media_metadata'];
49
+ //# sourceMappingURL=reddit-subreddit-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reddit-subreddit-tool.js","sourceRoot":"","sources":["../../../src/tools/reddit-subreddit/reddit-subreddit-tool.ts"],"names":[],"mappings":";;;;;;AAAA,8CAAoB;AAEpB,+CAA+D;AAC/D,uCAAwD;AACxD,kCAAqD;AAErD,MAAa,mBAAoB,SAAQ,WAAI;IAA7C;;QACE,YAAO,GAAG,mBAAO,CAAC,YAAY,CAAC;QAI/B,sBAAiB,GAAG,CAAC,EAAE,IAAI,EAAoB,EAAE,EAAE;YACjD,KAAK,MAAM,aAAa,IAAI,mBAAmB,CAAC,2BAA2B,EAAE,CAAC;gBAC5E,IAAI,GAAG,IAAA,iCAAyB,EAAC,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC,CAAC;YAC9E,CAAC;YAED,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,CAAC,CAAC;QAEF,aAAQ,GAAG,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAwB,EAAE,EAAE;YAChE,MAAM,CAAC,YAAY,CACjB,kBAAkB,EAClB;gBACE,WAAW,EAAE,wDAAwD;gBACrE,WAAW,EAAE;oBACX,GAAG,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;iBAC7C;gBACD,WAAW,EAAE;oBACX,YAAY,EAAE,IAAI;oBAClB,aAAa,EAAE,IAAI;iBACpB;aACF,EACD,KAAK,EAAE,cAAiC,EAAE,EAAE;gBAC1C,MAAM,MAAM,GAAG,gCACV,cAAc,KACjB,MAAM,EAAE,+BAAmB,CAAC,gBAAgB,GAClB,CAAC;gBAE7B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,UAAU,CAAC,MAAM,CAAS,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC,CAAC;gBAEnF,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;gBAExD,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI;yBACL;qBACF;iBACF,CAAC;YACJ,CAAC,CACF,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC;;AA/CD,kDA+CC;AA5CgB,+CAA2B,GAAG,CAAC,SAAS,EAAE,gBAAgB,CAAC,AAAhC,CAAiC"}
@@ -11,15 +11,21 @@ class RedditSubredditTool {
11
11
  }
12
12
  exports.RedditSubredditTool = RedditSubredditTool;
13
13
  _a = RedditSubredditTool;
14
- RedditSubredditTool.register = ({ server, sapiClient, }) => {
14
+ RedditSubredditTool.toolset = constants_1.TOOLSET.SOCIAL_MEDIA;
15
+ RedditSubredditTool.register = ({ server, sapiClient, getAuthToken, }) => {
15
16
  server.registerTool('reddit_subreddit', {
16
17
  description: 'Scrape Reddit subreddit results with automatic parsing',
17
18
  inputSchema: {
18
19
  url: zod_1.default.string().describe('URL to subreddit'),
19
20
  },
21
+ annotations: {
22
+ readOnlyHint: true,
23
+ openWorldHint: true,
24
+ },
20
25
  }, async (scrapingParams) => {
21
26
  const params = Object.assign(Object.assign({}, scrapingParams), { target: constants_1.SCRAPER_API_TARGETS.REDDIT_SUBREDDIT });
22
- const { data } = await sapiClient.scrape({ scrapingParams: params });
27
+ const auth = getAuthToken();
28
+ const { data } = await sapiClient.scrape({ auth, scrapingParams: params });
23
29
  const text = JSON.stringify(data, null, 2);
24
30
  return {
25
31
  content: [
@@ -1 +1 @@
1
- {"version":3,"file":"reddit-subreddit-tool.js","sourceRoot":"","sources":["../../src/tools/reddit-subreddit-tool.ts"],"names":[],"mappings":";;;;;;;AAAA,8CAAoB;AAIpB,4CAAmD;AAEnD,MAAa,mBAAmB;;AAAhC,kDAqCC;;AApCQ,4BAAQ,GAAG,CAAC,EACjB,MAAM,EACN,UAAU,GAIX,EAAE,EAAE;IACH,MAAM,CAAC,YAAY,CACjB,kBAAkB,EAClB;QACE,WAAW,EAAE,wDAAwD;QACrE,WAAW,EAAE;YACX,GAAG,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;SAC7C;KACF,EACD,KAAK,EAAE,cAAiC,EAAE,EAAE;QAC1C,MAAM,MAAM,GAAG,gCACV,cAAc,KACjB,MAAM,EAAE,+BAAmB,CAAC,gBAAgB,GAClB,CAAC;QAE7B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,UAAU,CAAC,MAAM,CAAS,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC,CAAC;QAE7E,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAE3C,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI;iBACL;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC,AAnCc,CAmCb"}
1
+ {"version":3,"file":"reddit-subreddit-tool.js","sourceRoot":"","sources":["../../src/tools/reddit-subreddit-tool.ts"],"names":[],"mappings":";;;;;;;AAAA,8CAAoB;AAIpB,4CAA4D;AAE5D,MAAa,mBAAmB;;AAAhC,kDA8CC;;AA7CQ,2BAAO,GAAG,mBAAO,CAAC,YAAY,AAAvB,CAAwB;AAC/B,4BAAQ,GAAG,CAAC,EACjB,MAAM,EACN,UAAU,EACV,YAAY,GAKb,EAAE,EAAE;IACH,MAAM,CAAC,YAAY,CACjB,kBAAkB,EAClB;QACE,WAAW,EAAE,wDAAwD;QACrE,WAAW,EAAE;YACX,GAAG,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;SAC7C;QACD,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,aAAa,EAAE,IAAI;SACpB;KACF,EACD,KAAK,EAAE,cAAiC,EAAE,EAAE;QAC1C,MAAM,MAAM,GAAG,gCACV,cAAc,KACjB,MAAM,EAAE,+BAAmB,CAAC,gBAAgB,GAClB,CAAC;QAE7B,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;QAE5B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,UAAU,CAAC,MAAM,CAAS,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC,CAAC;QAEnF,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAE3C,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI;iBACL;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC,AA3Cc,CA2Cb"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./reddit-user-tool"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/reddit-user/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.RedditUserTool = void 0;
7
+ const zod_1 = __importDefault(require("zod"));
8
+ const constants_1 = require("../../constants");
9
+ const utils_1 = require("../../utils");
10
+ const tool_1 = require("../tool");
11
+ class RedditUserTool extends tool_1.Tool {
12
+ constructor() {
13
+ super(...arguments);
14
+ this.toolset = constants_1.TOOLSET.SOCIAL_MEDIA;
15
+ this.transformResponse = ({ data }) => {
16
+ for (const fieldToRemove of RedditUserTool.FIELDS_WITH_HIGH_CHAR_COUNT) {
17
+ data = (0, utils_1.removeKeyFromNestedObject)({ obj: data, keyToRemove: fieldToRemove });
18
+ }
19
+ return { data: JSON.stringify(data) };
20
+ };
21
+ this.register = ({ server, sapiClient, auth }) => {
22
+ server.registerTool('reddit_user', {
23
+ description: 'Scrape a Reddit user profile and their posts/comments',
24
+ inputSchema: {
25
+ url: zod_1.default
26
+ .string()
27
+ .describe('Reddit user profile URL (eg. https://www.reddit.com/user/IWasRightOnce/)'),
28
+ },
29
+ annotations: {
30
+ readOnlyHint: true,
31
+ openWorldHint: true,
32
+ },
33
+ }, async (scrapingParams) => {
34
+ const params = Object.assign(Object.assign({}, scrapingParams), { target: constants_1.SCRAPER_API_TARGETS.REDDIT_USER });
35
+ const { data } = await sapiClient.scrape({ auth, scrapingParams: params });
36
+ const { data: text } = this.transformResponse({ data });
37
+ return {
38
+ content: [
39
+ {
40
+ type: 'text',
41
+ text,
42
+ },
43
+ ],
44
+ };
45
+ });
46
+ };
47
+ }
48
+ }
49
+ exports.RedditUserTool = RedditUserTool;
50
+ RedditUserTool.FIELDS_WITH_HIGH_CHAR_COUNT = [
51
+ 'author_flair_richtext',
52
+ 'preview',
53
+ 'media_metadata',
54
+ ];
55
+ //# sourceMappingURL=reddit-user-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reddit-user-tool.js","sourceRoot":"","sources":["../../../src/tools/reddit-user/reddit-user-tool.ts"],"names":[],"mappings":";;;;;;AAAA,8CAAoB;AAEpB,+CAA+D;AAC/D,uCAAwD;AACxD,kCAAqD;AAErD,MAAa,cAAe,SAAQ,WAAI;IAAxC;;QACE,YAAO,GAAG,mBAAO,CAAC,YAAY,CAAC;QAQ/B,sBAAiB,GAAG,CAAC,EAAE,IAAI,EAAoB,EAAE,EAAE;YACjD,KAAK,MAAM,aAAa,IAAI,cAAc,CAAC,2BAA2B,EAAE,CAAC;gBACvE,IAAI,GAAG,IAAA,iCAAyB,EAAC,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC,CAAC;YAC9E,CAAC;YAED,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,CAAC,CAAC;QAEF,aAAQ,GAAG,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAwB,EAAE,EAAE;YAChE,MAAM,CAAC,YAAY,CACjB,aAAa,EACb;gBACE,WAAW,EAAE,uDAAuD;gBACpE,WAAW,EAAE;oBACX,GAAG,EAAE,aAAC;yBACH,MAAM,EAAE;yBACR,QAAQ,CAAC,0EAA0E,CAAC;iBACxF;gBACD,WAAW,EAAE;oBACX,YAAY,EAAE,IAAI;oBAClB,aAAa,EAAE,IAAI;iBACpB;aACF,EACD,KAAK,EAAE,cAAiC,EAAE,EAAE;gBAC1C,MAAM,MAAM,GAAG,gCACV,cAAc,KACjB,MAAM,EAAE,+BAAmB,CAAC,WAAW,GACb,CAAC;gBAE7B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,UAAU,CAAC,MAAM,CAAS,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC,CAAC;gBAEnF,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;gBAExD,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI;yBACL;qBACF;iBACF,CAAC;YACJ,CAAC,CACF,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC;;AArDD,wCAqDC;AAlDgB,0CAA2B,GAAG;IAC3C,uBAAuB;IACvB,SAAS;IACT,gBAAgB;CACjB,AAJyC,CAIxC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./scrape-as-markdown-tool"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/scrape-as-markdown/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4DAA0C"}