composio-scavio 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -36,7 +36,7 @@ const session = await composio.create("user_1", {
36
36
  const tools = await session.tools();
37
37
  const out = await session.execute("LOCAL_SCAVIO_GOOGLE_SEARCH", {
38
38
  query: "best search API for AI agents",
39
- light_request: true,
39
+ countryCode: "us",
40
40
  });
41
41
  console.log(out);
42
42
  ```
@@ -49,7 +49,7 @@ All tools are grouped under the `SCAVIO` custom toolkit; agent-facing slugs are
49
49
 
50
50
  ## Credits
51
51
 
52
- Most endpoints cost 1 credit. Reddit and Instagram cost 2 credits each. Google costs 2 credits unless `light_request: true` (1 credit). See [scavio.dev/docs](https://scavio.dev/docs).
52
+ Most endpoints cost 1 credit, including Google. Reddit and Instagram cost 2 credits each. See [scavio.dev/docs](https://scavio.dev/docs).
53
53
 
54
54
  ## Links
55
55
 
package/dist/index.cjs CHANGED
@@ -31,6 +31,15 @@ var str = (d) => import_zod.z.string().describe(d);
31
31
  var ostr = (d) => import_zod.z.string().optional().describe(d);
32
32
  var onum = (d) => import_zod.z.number().optional().describe(d);
33
33
  var obool = (d) => import_zod.z.boolean().optional().describe(d);
34
+ function googleSearchParams(i) {
35
+ const params = { query: i.query };
36
+ if (i.countryCode != null) params.gl = i.countryCode;
37
+ if (i.language != null) params.hl = i.language;
38
+ if (i.page != null && i.page > 1) params.start = (i.page - 1) * 10;
39
+ if (i.device != null) params.device = i.device;
40
+ if (i.nfpr != null) params.nfpr = i.nfpr;
41
+ return params;
42
+ }
34
43
  function buildScavioToolkit(options = {}) {
35
44
  const {
36
45
  apiKey,
@@ -58,18 +67,16 @@ function buildScavioToolkit(options = {}) {
58
67
  tool(
59
68
  "GOOGLE_SEARCH",
60
69
  "Scavio Google Search",
61
- "Search Google for real-time web results (organic, knowledge graph, news, and more).",
70
+ "Search Google for real-time web results (organic_results, ads, and the AI Overview when present). Costs 1 credit.",
62
71
  import_zod.z.object({
63
72
  query: str("The search query."),
64
- country_code: ostr("Two-letter country code, e.g. 'us'."),
73
+ countryCode: ostr("Two-letter country code, e.g. 'us'."),
65
74
  language: ostr("Two-letter language code, e.g. 'en'."),
66
75
  page: onum("Result page number (1-based)."),
67
- search_type: ostr("Search vertical, e.g. 'search', 'news', 'images'."),
68
76
  device: ostr("Device profile: 'desktop' or 'mobile'."),
69
- nfpr: obool("Disable auto-correction of the query when true."),
70
- light_request: obool("Cheaper, lighter response (1 credit instead of 2) when true.")
77
+ nfpr: obool("Disable auto-correction of the query when true.")
71
78
  }),
72
- (i) => client.google.search(i)
79
+ (i) => client.google.search(googleSearchParams(i))
73
80
  )
74
81
  );
75
82
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["/**\n * Scavio tools for Composio.\n *\n * Exposes the Scavio search API (Google, YouTube, Amazon, Walmart, Reddit, TikTok,\n * Instagram) as a Composio custom toolkit. Build it with `buildScavioToolkit()` and\n * bind it to a session:\n *\n * import { Composio } from \"@composio/core\";\n * import { buildScavioToolkit } from \"@scavio/composio\";\n *\n * const composio = new Composio();\n * const scavio = buildScavioToolkit({ apiKey: process.env.SCAVIO_API_KEY });\n * const session = await composio.create(\"user_1\", {\n * experimental: { customToolkits: [scavio] },\n * });\n * const out = await session.execute(\"LOCAL_SCAVIO_GOOGLE_SEARCH\", { query: \"ai agents\" });\n *\n * Each provider is gated by an `enable*` flag so an agent only sees the tools it needs.\n */\nimport {\n experimental_createTool,\n experimental_createToolkit,\n} from \"@composio/core\";\nimport { Scavio } from \"scavio\";\nimport { z } from \"zod\";\n\nexport interface BuildScavioToolkitOptions {\n /** Scavio API key. Falls back to the SCAVIO_API_KEY env var. */\n apiKey?: string;\n enableGoogle?: boolean;\n enableAmazon?: boolean;\n enableWalmart?: boolean;\n enableYoutube?: boolean;\n enableReddit?: boolean;\n enableTiktok?: boolean;\n enableInstagram?: boolean;\n /** Register every tool, ignoring the individual flags. */\n all?: boolean;\n}\n\nconst str = (d: string) => z.string().describe(d);\nconst ostr = (d: string) => z.string().optional().describe(d);\nconst onum = (d: string) => z.number().optional().describe(d);\nconst obool = (d: string) => z.boolean().optional().describe(d);\n\n/**\n * Build a Composio custom toolkit exposing Scavio search tools.\n *\n * Scavio is a single Search API over Google, YouTube, Amazon, Walmart, Reddit,\n * TikTok, and Instagram. Pass to `composio.create(userId, { experimental:\n * { customToolkits: [toolkit] } })`. Agent-facing slugs are prefixed `LOCAL_SCAVIO_`.\n */\nexport function buildScavioToolkit(options: BuildScavioToolkitOptions = {}) {\n const {\n apiKey,\n enableGoogle = true,\n enableAmazon = true,\n enableWalmart = true,\n enableYoutube = true,\n enableReddit = true,\n enableTiktok = true,\n enableInstagram = true,\n all = false,\n } = options;\n\n const client = new Scavio({ apiKey: apiKey ?? process.env.SCAVIO_API_KEY });\n\n function tool<T extends z.ZodTypeAny>(\n slug: string,\n name: string,\n description: string,\n inputParams: T,\n call: (input: z.infer<T>) => Promise<Record<string, unknown>>\n ) {\n return experimental_createTool(slug, {\n name,\n description,\n inputParams,\n execute: async (input: z.infer<T>) => call(input),\n });\n }\n\n const tools = [];\n\n if (all || enableGoogle) {\n tools.push(\n tool(\n \"GOOGLE_SEARCH\",\n \"Scavio Google Search\",\n \"Search Google for real-time web results (organic, knowledge graph, news, and more).\",\n z.object({\n query: str(\"The search query.\"),\n country_code: ostr(\"Two-letter country code, e.g. 'us'.\"),\n language: ostr(\"Two-letter language code, e.g. 'en'.\"),\n page: onum(\"Result page number (1-based).\"),\n search_type: ostr(\"Search vertical, e.g. 'search', 'news', 'images'.\"),\n device: ostr(\"Device profile: 'desktop' or 'mobile'.\"),\n nfpr: obool(\"Disable auto-correction of the query when true.\"),\n light_request: obool(\"Cheaper, lighter response (1 credit instead of 2) when true.\"),\n }),\n (i) => client.google.search(i)\n )\n );\n }\n\n if (all || enableAmazon) {\n tools.push(\n tool(\n \"AMAZON_SEARCH\",\n \"Scavio Amazon Search\",\n \"Search Amazon for products matching a query.\",\n z.object({\n query: str(\"The product search query.\"),\n domain: ostr(\"Amazon domain, e.g. 'amazon.com'.\"),\n country: ostr(\"Two-letter country code.\"),\n language: ostr(\"Two-letter language code.\"),\n currency: ostr(\"Currency code, e.g. 'USD'.\"),\n device: ostr(\"Device profile: 'desktop' or 'mobile'.\"),\n sort_by: ostr(\"Sort order for results.\"),\n start_page: onum(\"First page to return.\"),\n pages: onum(\"Number of pages to return.\"),\n category_id: ostr(\"Restrict to an Amazon category id.\"),\n merchant_id: ostr(\"Restrict to a merchant id.\"),\n zip_code: ostr(\"Delivery ZIP/postal code.\"),\n autoselect_variant: obool(\"Auto-select the best product variant when true.\"),\n }),\n (i) => client.amazon.search(i)\n ),\n tool(\n \"AMAZON_PRODUCT\",\n \"Scavio Amazon Product\",\n \"Fetch full Amazon product details by ASIN.\",\n z.object({\n asin: str(\"Amazon Standard Identification Number (ASIN) of the product.\"),\n domain: ostr(\"Amazon domain, e.g. 'amazon.com'.\"),\n country: ostr(\"Two-letter country code.\"),\n language: ostr(\"Two-letter language code.\"),\n currency: ostr(\"Currency code, e.g. 'USD'.\"),\n device: ostr(\"Device profile: 'desktop' or 'mobile'.\"),\n zip_code: ostr(\"Delivery ZIP/postal code.\"),\n autoselect_variant: obool(\"Auto-select the best product variant when true.\"),\n }),\n (i) => client.amazon.product(i)\n )\n );\n }\n\n if (all || enableWalmart) {\n tools.push(\n tool(\n \"WALMART_SEARCH\",\n \"Scavio Walmart Search\",\n \"Search Walmart for products matching a query.\",\n z.object({\n query: str(\"The product search query.\"),\n domain: ostr(\"Walmart domain.\"),\n device: ostr(\"Device profile: 'desktop' or 'mobile'.\"),\n sort_by: ostr(\"Sort order for results.\"),\n start_page: onum(\"First page to return.\"),\n min_price: onum(\"Minimum price filter.\"),\n max_price: onum(\"Maximum price filter.\"),\n fulfillment_speed: ostr(\"Fulfillment speed filter.\"),\n fulfillment_type: ostr(\"Fulfillment type filter.\"),\n delivery_zip: ostr(\"Delivery ZIP/postal code.\"),\n store_id: ostr(\"Restrict to a store id.\"),\n }),\n (i) => client.walmart.search(i)\n ),\n tool(\n \"WALMART_PRODUCT\",\n \"Scavio Walmart Product\",\n \"Fetch full Walmart product details by product id.\",\n z.object({\n product_id: str(\"Walmart product id.\"),\n domain: ostr(\"Walmart domain.\"),\n device: ostr(\"Device profile: 'desktop' or 'mobile'.\"),\n delivery_zip: ostr(\"Delivery ZIP/postal code.\"),\n store_id: ostr(\"Restrict to a store id.\"),\n }),\n (i) => client.walmart.product(i)\n )\n );\n }\n\n if (all || enableYoutube) {\n tools.push(\n tool(\n \"YOUTUBE_SEARCH\",\n \"Scavio YouTube Search\",\n \"Search YouTube for videos, channels, or playlists.\",\n z.object({\n query: str(\"The video search query.\"),\n upload_date: ostr(\"Upload date filter, e.g. 'today', 'week', 'month'.\"),\n type: ostr(\"Result type, e.g. 'video', 'channel', 'playlist'.\"),\n duration: ostr(\"Duration filter, e.g. 'short', 'long'.\"),\n sort_by: ostr(\"Sort order for results.\"),\n hd: obool(\"Restrict to HD videos when true.\"),\n subtitles: obool(\"Restrict to videos with subtitles when true.\"),\n creative_commons: obool(\"Restrict to Creative Commons videos when true.\"),\n live: obool(\"Restrict to live videos when true.\"),\n }),\n (i) => client.youtube.search(i)\n ),\n tool(\n \"YOUTUBE_METADATA\",\n \"Scavio YouTube Metadata\",\n \"Fetch metadata for a YouTube video by id.\",\n z.object({ video_id: str(\"YouTube video id.\") }),\n (i) => client.youtube.metadata(i)\n )\n );\n }\n\n if (all || enableReddit) {\n tools.push(\n tool(\n \"REDDIT_SEARCH\",\n \"Scavio Reddit Search\",\n \"Search Reddit posts, subreddits, or users.\",\n z.object({\n query: str(\"The Reddit search query.\"),\n type: ostr(\"Search type, e.g. 'posts', 'subreddits', 'users'.\"),\n sort: ostr(\"Sort order, e.g. 'relevance', 'new', 'top'.\"),\n cursor: ostr(\"Pagination cursor.\"),\n }),\n (i) => client.reddit.search(i)\n ),\n tool(\n \"REDDIT_POST\",\n \"Scavio Reddit Post\",\n \"Fetch a Reddit post and its comment thread by URL.\",\n z.object({ url: str(\"Full URL of the Reddit post to fetch with its comments.\") }),\n (i) => client.reddit.post(i)\n )\n );\n }\n\n if (all || enableTiktok) {\n tools.push(\n tool(\n \"TIKTOK_PROFILE\",\n \"Scavio TikTok Profile\",\n \"Fetch a TikTok user profile by username or secUid.\",\n z.object({\n username: ostr(\"TikTok username (without @). Provide this or sec_user_id.\"),\n sec_user_id: ostr(\"TikTok secUid. Provide this or username.\"),\n }),\n (i) => client.tiktok.profile(i)\n ),\n tool(\n \"TIKTOK_USER_POSTS\",\n \"Scavio TikTok User Posts\",\n \"List a TikTok user's posts by secUid.\",\n z.object({\n sec_user_id: str(\"TikTok secUid of the user.\"),\n cursor: ostr(\"Pagination cursor.\"),\n count: onum(\"Number of posts to return.\"),\n sort_type: ostr(\"Sort order for posts.\"),\n }),\n (i) => client.tiktok.userPosts(i)\n ),\n tool(\n \"TIKTOK_VIDEO\",\n \"Scavio TikTok Video\",\n \"Fetch a TikTok video by id.\",\n z.object({ video_id: str(\"TikTok video id.\") }),\n (i) => client.tiktok.video(i)\n ),\n tool(\n \"TIKTOK_VIDEO_COMMENTS\",\n \"Scavio TikTok Video Comments\",\n \"List comments on a TikTok video.\",\n z.object({\n video_id: str(\"TikTok video id.\"),\n cursor: ostr(\"Pagination cursor.\"),\n count: onum(\"Number of comments to return.\"),\n }),\n (i) => client.tiktok.videoComments(i)\n ),\n tool(\n \"TIKTOK_COMMENT_REPLIES\",\n \"Scavio TikTok Comment Replies\",\n \"List replies to a TikTok video comment.\",\n z.object({\n video_id: str(\"TikTok video id.\"),\n comment_id: str(\"Parent comment id.\"),\n cursor: ostr(\"Pagination cursor.\"),\n count: onum(\"Number of replies to return.\"),\n }),\n (i) => client.tiktok.commentReplies(i)\n ),\n tool(\n \"TIKTOK_SEARCH_VIDEOS\",\n \"Scavio TikTok Search Videos\",\n \"Search TikTok videos by keyword.\",\n z.object({\n keyword: str(\"Search keyword.\"),\n cursor: ostr(\"Pagination cursor.\"),\n count: onum(\"Number of videos to return.\"),\n sort_type: ostr(\"Sort order for results.\"),\n publish_time: ostr(\"Publish-time filter.\"),\n }),\n (i) => client.tiktok.searchVideos(i)\n ),\n tool(\n \"TIKTOK_SEARCH_USERS\",\n \"Scavio TikTok Search Users\",\n \"Search TikTok users by keyword.\",\n z.object({\n keyword: str(\"Search keyword.\"),\n cursor: ostr(\"Pagination cursor.\"),\n count: onum(\"Number of users to return.\"),\n }),\n (i) => client.tiktok.searchUsers(i)\n ),\n tool(\n \"TIKTOK_HASHTAG\",\n \"Scavio TikTok Hashtag\",\n \"Fetch a TikTok hashtag by name or id.\",\n z.object({\n hashtag_name: ostr(\"Hashtag name (without #). Provide this or hashtag_id.\"),\n hashtag_id: ostr(\"Hashtag id. Provide this or hashtag_name.\"),\n }),\n (i) => client.tiktok.hashtag(i)\n ),\n tool(\n \"TIKTOK_HASHTAG_VIDEOS\",\n \"Scavio TikTok Hashtag Videos\",\n \"List videos for a TikTok hashtag by id.\",\n z.object({\n hashtag_id: str(\"Hashtag id.\"),\n cursor: ostr(\"Pagination cursor.\"),\n count: onum(\"Number of videos to return.\"),\n }),\n (i) => client.tiktok.hashtagVideos(i)\n ),\n tool(\n \"TIKTOK_USER_FOLLOWERS\",\n \"Scavio TikTok User Followers\",\n \"List a TikTok user's followers by secUid.\",\n z.object({\n sec_user_id: str(\"TikTok secUid of the user.\"),\n count: onum(\"Number of followers to return.\"),\n page_token: ostr(\"Pagination token.\"),\n min_time: onum(\"Minimum timestamp filter.\"),\n }),\n (i) => client.tiktok.userFollowers(i)\n ),\n tool(\n \"TIKTOK_USER_FOLLOWINGS\",\n \"Scavio TikTok User Followings\",\n \"List the accounts a TikTok user follows, by secUid.\",\n z.object({\n sec_user_id: str(\"TikTok secUid of the user.\"),\n count: onum(\"Number of followings to return.\"),\n page_token: ostr(\"Pagination token.\"),\n min_time: onum(\"Minimum timestamp filter.\"),\n }),\n (i) => client.tiktok.userFollowings(i)\n )\n );\n }\n\n if (all || enableInstagram) {\n tools.push(\n tool(\n \"INSTAGRAM_PROFILE\",\n \"Scavio Instagram Profile\",\n \"Fetch an Instagram profile by username or user id.\",\n z.object({\n username: ostr(\"Instagram username. Provide this or user_id.\"),\n user_id: ostr(\"Instagram user id. Provide this or username.\"),\n }),\n (i) => client.instagram.profile(i)\n ),\n tool(\n \"INSTAGRAM_USER_POSTS\",\n \"Scavio Instagram User Posts\",\n \"List an Instagram user's posts.\",\n z.object({\n username: ostr(\"Instagram username. Provide this or user_id.\"),\n user_id: ostr(\"Instagram user id. Provide this or username.\"),\n count: onum(\"Number of posts to return.\"),\n cursor: ostr(\"Pagination cursor.\"),\n }),\n (i) => client.instagram.userPosts(i)\n ),\n tool(\n \"INSTAGRAM_USER_REELS\",\n \"Scavio Instagram User Reels\",\n \"List an Instagram user's reels.\",\n z.object({\n username: ostr(\"Instagram username. Provide this or user_id.\"),\n user_id: ostr(\"Instagram user id. Provide this or username.\"),\n count: onum(\"Number of reels to return.\"),\n cursor: ostr(\"Pagination cursor.\"),\n }),\n (i) => client.instagram.userReels(i)\n ),\n tool(\n \"INSTAGRAM_USER_TAGGED\",\n \"Scavio Instagram User Tagged\",\n \"List posts an Instagram user is tagged in.\",\n z.object({\n username: ostr(\"Instagram username. Provide this or user_id.\"),\n user_id: ostr(\"Instagram user id. Provide this or username.\"),\n count: onum(\"Number of tagged posts to return.\"),\n cursor: ostr(\"Pagination cursor.\"),\n }),\n (i) => client.instagram.userTagged(i)\n ),\n tool(\n \"INSTAGRAM_USER_STORIES\",\n \"Scavio Instagram User Stories\",\n \"Fetch an Instagram user's current stories.\",\n z.object({\n username: ostr(\"Instagram username. Provide this or user_id.\"),\n user_id: ostr(\"Instagram user id. Provide this or username.\"),\n }),\n (i) => client.instagram.userStories(i)\n ),\n tool(\n \"INSTAGRAM_POST\",\n \"Scavio Instagram Post\",\n \"Fetch an Instagram post by URL, media id, or shortcode.\",\n z.object({\n url: ostr(\"Post URL. Provide one of url, media_id, or shortcode.\"),\n media_id: ostr(\"Post media id. Provide one of url, media_id, or shortcode.\"),\n shortcode: ostr(\"Post shortcode. Provide one of url, media_id, or shortcode.\"),\n }),\n (i) => client.instagram.post(i)\n ),\n tool(\n \"INSTAGRAM_POST_COMMENTS\",\n \"Scavio Instagram Post Comments\",\n \"List comments on an Instagram post by shortcode or URL.\",\n z.object({\n shortcode: ostr(\"Post shortcode. Provide this or url.\"),\n url: ostr(\"Post URL. Provide this or shortcode.\"),\n cursor: ostr(\"Pagination cursor.\"),\n sort_order: ostr(\"Comment sort order.\"),\n }),\n (i) => client.instagram.postComments(i)\n ),\n tool(\n \"INSTAGRAM_COMMENT_REPLIES\",\n \"Scavio Instagram Comment Replies\",\n \"List replies to an Instagram post comment.\",\n z.object({\n media_id: str(\"Post media id.\"),\n comment_id: str(\"Parent comment id.\"),\n cursor: ostr(\"Pagination cursor.\"),\n }),\n (i) => client.instagram.commentReplies(i)\n ),\n tool(\n \"INSTAGRAM_SEARCH_USERS\",\n \"Scavio Instagram Search Users\",\n \"Search Instagram users by keyword.\",\n z.object({\n keyword: str(\"Search keyword.\"),\n cursor: ostr(\"Pagination cursor.\"),\n }),\n (i) => client.instagram.searchUsers(i)\n ),\n tool(\n \"INSTAGRAM_SEARCH_HASHTAGS\",\n \"Scavio Instagram Search Hashtags\",\n \"Search Instagram hashtags by keyword.\",\n z.object({\n keyword: str(\"Search keyword.\"),\n cursor: ostr(\"Pagination cursor.\"),\n }),\n (i) => client.instagram.searchHashtags(i)\n ),\n tool(\n \"INSTAGRAM_USER_FOLLOWERS\",\n \"Scavio Instagram User Followers\",\n \"List an Instagram user's followers.\",\n z.object({\n username: ostr(\"Instagram username. Provide this or user_id.\"),\n user_id: ostr(\"Instagram user id. Provide this or username.\"),\n count: onum(\"Number of followers to return.\"),\n cursor: ostr(\"Pagination cursor.\"),\n }),\n (i) => client.instagram.userFollowers(i)\n ),\n tool(\n \"INSTAGRAM_USER_FOLLOWINGS\",\n \"Scavio Instagram User Followings\",\n \"List the accounts an Instagram user follows.\",\n z.object({\n username: ostr(\"Instagram username. Provide this or user_id.\"),\n user_id: ostr(\"Instagram user id. Provide this or username.\"),\n count: onum(\"Number of followings to return.\"),\n cursor: ostr(\"Pagination cursor.\"),\n }),\n (i) => client.instagram.userFollowings(i)\n )\n );\n }\n\n return experimental_createToolkit(\"SCAVIO\", {\n name: \"Scavio\",\n description:\n \"Real-time structured search over Google, YouTube, Amazon, Walmart, Reddit, TikTok, and Instagram.\",\n tools,\n });\n}\n\nexport default buildScavioToolkit;\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["/**\n * Scavio tools for Composio.\n *\n * Exposes the Scavio search API (Google, YouTube, Amazon, Walmart, Reddit, TikTok,\n * Instagram) as a Composio custom toolkit. Build it with `buildScavioToolkit()` and\n * bind it to a session:\n *\n * import { Composio } from \"@composio/core\";\n * import { buildScavioToolkit } from \"@scavio/composio\";\n *\n * const composio = new Composio();\n * const scavio = buildScavioToolkit({ apiKey: process.env.SCAVIO_API_KEY });\n * const session = await composio.create(\"user_1\", {\n * experimental: { customToolkits: [scavio] },\n * });\n * const out = await session.execute(\"LOCAL_SCAVIO_GOOGLE_SEARCH\", { query: \"ai agents\" });\n *\n * Each provider is gated by an `enable*` flag so an agent only sees the tools it needs.\n */\nimport {\n experimental_createTool,\n experimental_createToolkit,\n} from \"@composio/core\";\nimport { Scavio } from \"scavio\";\nimport { z } from \"zod\";\n\nexport interface BuildScavioToolkitOptions {\n /** Scavio API key. Falls back to the SCAVIO_API_KEY env var. */\n apiKey?: string;\n enableGoogle?: boolean;\n enableAmazon?: boolean;\n enableWalmart?: boolean;\n enableYoutube?: boolean;\n enableReddit?: boolean;\n enableTiktok?: boolean;\n enableInstagram?: boolean;\n /** Register every tool, ignoring the individual flags. */\n all?: boolean;\n}\n\nconst str = (d: string) => z.string().describe(d);\nconst ostr = (d: string) => z.string().optional().describe(d);\nconst onum = (d: string) => z.number().optional().describe(d);\nconst obool = (d: string) => z.boolean().optional().describe(d);\n\ninterface GoogleSearchArgs {\n query: string;\n countryCode?: string;\n language?: string;\n page?: number;\n device?: string;\n nfpr?: boolean;\n}\n\n/** Map the public Google args to the v2 SERP wire params the SDK expects. */\nfunction googleSearchParams(i: GoogleSearchArgs): { query: string; [key: string]: unknown } {\n const params: { query: string; [key: string]: unknown } = { query: i.query };\n if (i.countryCode != null) params.gl = i.countryCode;\n if (i.language != null) params.hl = i.language;\n if (i.page != null && i.page > 1) params.start = (i.page - 1) * 10;\n if (i.device != null) params.device = i.device;\n if (i.nfpr != null) params.nfpr = i.nfpr;\n return params;\n}\n\n/**\n * Build a Composio custom toolkit exposing Scavio search tools.\n *\n * Scavio is a single Search API over Google, YouTube, Amazon, Walmart, Reddit,\n * TikTok, and Instagram. Pass to `composio.create(userId, { experimental:\n * { customToolkits: [toolkit] } })`. Agent-facing slugs are prefixed `LOCAL_SCAVIO_`.\n */\nexport function buildScavioToolkit(options: BuildScavioToolkitOptions = {}) {\n const {\n apiKey,\n enableGoogle = true,\n enableAmazon = true,\n enableWalmart = true,\n enableYoutube = true,\n enableReddit = true,\n enableTiktok = true,\n enableInstagram = true,\n all = false,\n } = options;\n\n const client = new Scavio({ apiKey: apiKey ?? process.env.SCAVIO_API_KEY });\n\n function tool<T extends z.ZodTypeAny>(\n slug: string,\n name: string,\n description: string,\n inputParams: T,\n call: (input: z.infer<T>) => Promise<Record<string, unknown>>\n ) {\n return experimental_createTool(slug, {\n name,\n description,\n inputParams,\n execute: async (input: z.infer<T>) => call(input),\n });\n }\n\n const tools = [];\n\n if (all || enableGoogle) {\n tools.push(\n tool(\n \"GOOGLE_SEARCH\",\n \"Scavio Google Search\",\n \"Search Google for real-time web results (organic_results, ads, and the AI Overview when present). Costs 1 credit.\",\n z.object({\n query: str(\"The search query.\"),\n countryCode: ostr(\"Two-letter country code, e.g. 'us'.\"),\n language: ostr(\"Two-letter language code, e.g. 'en'.\"),\n page: onum(\"Result page number (1-based).\"),\n device: ostr(\"Device profile: 'desktop' or 'mobile'.\"),\n nfpr: obool(\"Disable auto-correction of the query when true.\"),\n }),\n (i) => client.google.search(googleSearchParams(i))\n )\n );\n }\n\n if (all || enableAmazon) {\n tools.push(\n tool(\n \"AMAZON_SEARCH\",\n \"Scavio Amazon Search\",\n \"Search Amazon for products matching a query.\",\n z.object({\n query: str(\"The product search query.\"),\n domain: ostr(\"Amazon domain, e.g. 'amazon.com'.\"),\n country: ostr(\"Two-letter country code.\"),\n language: ostr(\"Two-letter language code.\"),\n currency: ostr(\"Currency code, e.g. 'USD'.\"),\n device: ostr(\"Device profile: 'desktop' or 'mobile'.\"),\n sort_by: ostr(\"Sort order for results.\"),\n start_page: onum(\"First page to return.\"),\n pages: onum(\"Number of pages to return.\"),\n category_id: ostr(\"Restrict to an Amazon category id.\"),\n merchant_id: ostr(\"Restrict to a merchant id.\"),\n zip_code: ostr(\"Delivery ZIP/postal code.\"),\n autoselect_variant: obool(\"Auto-select the best product variant when true.\"),\n }),\n (i) => client.amazon.search(i)\n ),\n tool(\n \"AMAZON_PRODUCT\",\n \"Scavio Amazon Product\",\n \"Fetch full Amazon product details by ASIN.\",\n z.object({\n asin: str(\"Amazon Standard Identification Number (ASIN) of the product.\"),\n domain: ostr(\"Amazon domain, e.g. 'amazon.com'.\"),\n country: ostr(\"Two-letter country code.\"),\n language: ostr(\"Two-letter language code.\"),\n currency: ostr(\"Currency code, e.g. 'USD'.\"),\n device: ostr(\"Device profile: 'desktop' or 'mobile'.\"),\n zip_code: ostr(\"Delivery ZIP/postal code.\"),\n autoselect_variant: obool(\"Auto-select the best product variant when true.\"),\n }),\n (i) => client.amazon.product(i)\n )\n );\n }\n\n if (all || enableWalmart) {\n tools.push(\n tool(\n \"WALMART_SEARCH\",\n \"Scavio Walmart Search\",\n \"Search Walmart for products matching a query.\",\n z.object({\n query: str(\"The product search query.\"),\n domain: ostr(\"Walmart domain.\"),\n device: ostr(\"Device profile: 'desktop' or 'mobile'.\"),\n sort_by: ostr(\"Sort order for results.\"),\n start_page: onum(\"First page to return.\"),\n min_price: onum(\"Minimum price filter.\"),\n max_price: onum(\"Maximum price filter.\"),\n fulfillment_speed: ostr(\"Fulfillment speed filter.\"),\n fulfillment_type: ostr(\"Fulfillment type filter.\"),\n delivery_zip: ostr(\"Delivery ZIP/postal code.\"),\n store_id: ostr(\"Restrict to a store id.\"),\n }),\n (i) => client.walmart.search(i)\n ),\n tool(\n \"WALMART_PRODUCT\",\n \"Scavio Walmart Product\",\n \"Fetch full Walmart product details by product id.\",\n z.object({\n product_id: str(\"Walmart product id.\"),\n domain: ostr(\"Walmart domain.\"),\n device: ostr(\"Device profile: 'desktop' or 'mobile'.\"),\n delivery_zip: ostr(\"Delivery ZIP/postal code.\"),\n store_id: ostr(\"Restrict to a store id.\"),\n }),\n (i) => client.walmart.product(i)\n )\n );\n }\n\n if (all || enableYoutube) {\n tools.push(\n tool(\n \"YOUTUBE_SEARCH\",\n \"Scavio YouTube Search\",\n \"Search YouTube for videos, channels, or playlists.\",\n z.object({\n query: str(\"The video search query.\"),\n upload_date: ostr(\"Upload date filter, e.g. 'today', 'week', 'month'.\"),\n type: ostr(\"Result type, e.g. 'video', 'channel', 'playlist'.\"),\n duration: ostr(\"Duration filter, e.g. 'short', 'long'.\"),\n sort_by: ostr(\"Sort order for results.\"),\n hd: obool(\"Restrict to HD videos when true.\"),\n subtitles: obool(\"Restrict to videos with subtitles when true.\"),\n creative_commons: obool(\"Restrict to Creative Commons videos when true.\"),\n live: obool(\"Restrict to live videos when true.\"),\n }),\n (i) => client.youtube.search(i)\n ),\n tool(\n \"YOUTUBE_METADATA\",\n \"Scavio YouTube Metadata\",\n \"Fetch metadata for a YouTube video by id.\",\n z.object({ video_id: str(\"YouTube video id.\") }),\n (i) => client.youtube.metadata(i)\n )\n );\n }\n\n if (all || enableReddit) {\n tools.push(\n tool(\n \"REDDIT_SEARCH\",\n \"Scavio Reddit Search\",\n \"Search Reddit posts, subreddits, or users.\",\n z.object({\n query: str(\"The Reddit search query.\"),\n type: ostr(\"Search type, e.g. 'posts', 'subreddits', 'users'.\"),\n sort: ostr(\"Sort order, e.g. 'relevance', 'new', 'top'.\"),\n cursor: ostr(\"Pagination cursor.\"),\n }),\n (i) => client.reddit.search(i)\n ),\n tool(\n \"REDDIT_POST\",\n \"Scavio Reddit Post\",\n \"Fetch a Reddit post and its comment thread by URL.\",\n z.object({ url: str(\"Full URL of the Reddit post to fetch with its comments.\") }),\n (i) => client.reddit.post(i)\n )\n );\n }\n\n if (all || enableTiktok) {\n tools.push(\n tool(\n \"TIKTOK_PROFILE\",\n \"Scavio TikTok Profile\",\n \"Fetch a TikTok user profile by username or secUid.\",\n z.object({\n username: ostr(\"TikTok username (without @). Provide this or sec_user_id.\"),\n sec_user_id: ostr(\"TikTok secUid. Provide this or username.\"),\n }),\n (i) => client.tiktok.profile(i)\n ),\n tool(\n \"TIKTOK_USER_POSTS\",\n \"Scavio TikTok User Posts\",\n \"List a TikTok user's posts by secUid.\",\n z.object({\n sec_user_id: str(\"TikTok secUid of the user.\"),\n cursor: ostr(\"Pagination cursor.\"),\n count: onum(\"Number of posts to return.\"),\n sort_type: ostr(\"Sort order for posts.\"),\n }),\n (i) => client.tiktok.userPosts(i)\n ),\n tool(\n \"TIKTOK_VIDEO\",\n \"Scavio TikTok Video\",\n \"Fetch a TikTok video by id.\",\n z.object({ video_id: str(\"TikTok video id.\") }),\n (i) => client.tiktok.video(i)\n ),\n tool(\n \"TIKTOK_VIDEO_COMMENTS\",\n \"Scavio TikTok Video Comments\",\n \"List comments on a TikTok video.\",\n z.object({\n video_id: str(\"TikTok video id.\"),\n cursor: ostr(\"Pagination cursor.\"),\n count: onum(\"Number of comments to return.\"),\n }),\n (i) => client.tiktok.videoComments(i)\n ),\n tool(\n \"TIKTOK_COMMENT_REPLIES\",\n \"Scavio TikTok Comment Replies\",\n \"List replies to a TikTok video comment.\",\n z.object({\n video_id: str(\"TikTok video id.\"),\n comment_id: str(\"Parent comment id.\"),\n cursor: ostr(\"Pagination cursor.\"),\n count: onum(\"Number of replies to return.\"),\n }),\n (i) => client.tiktok.commentReplies(i)\n ),\n tool(\n \"TIKTOK_SEARCH_VIDEOS\",\n \"Scavio TikTok Search Videos\",\n \"Search TikTok videos by keyword.\",\n z.object({\n keyword: str(\"Search keyword.\"),\n cursor: ostr(\"Pagination cursor.\"),\n count: onum(\"Number of videos to return.\"),\n sort_type: ostr(\"Sort order for results.\"),\n publish_time: ostr(\"Publish-time filter.\"),\n }),\n (i) => client.tiktok.searchVideos(i)\n ),\n tool(\n \"TIKTOK_SEARCH_USERS\",\n \"Scavio TikTok Search Users\",\n \"Search TikTok users by keyword.\",\n z.object({\n keyword: str(\"Search keyword.\"),\n cursor: ostr(\"Pagination cursor.\"),\n count: onum(\"Number of users to return.\"),\n }),\n (i) => client.tiktok.searchUsers(i)\n ),\n tool(\n \"TIKTOK_HASHTAG\",\n \"Scavio TikTok Hashtag\",\n \"Fetch a TikTok hashtag by name or id.\",\n z.object({\n hashtag_name: ostr(\"Hashtag name (without #). Provide this or hashtag_id.\"),\n hashtag_id: ostr(\"Hashtag id. Provide this or hashtag_name.\"),\n }),\n (i) => client.tiktok.hashtag(i)\n ),\n tool(\n \"TIKTOK_HASHTAG_VIDEOS\",\n \"Scavio TikTok Hashtag Videos\",\n \"List videos for a TikTok hashtag by id.\",\n z.object({\n hashtag_id: str(\"Hashtag id.\"),\n cursor: ostr(\"Pagination cursor.\"),\n count: onum(\"Number of videos to return.\"),\n }),\n (i) => client.tiktok.hashtagVideos(i)\n ),\n tool(\n \"TIKTOK_USER_FOLLOWERS\",\n \"Scavio TikTok User Followers\",\n \"List a TikTok user's followers by secUid.\",\n z.object({\n sec_user_id: str(\"TikTok secUid of the user.\"),\n count: onum(\"Number of followers to return.\"),\n page_token: ostr(\"Pagination token.\"),\n min_time: onum(\"Minimum timestamp filter.\"),\n }),\n (i) => client.tiktok.userFollowers(i)\n ),\n tool(\n \"TIKTOK_USER_FOLLOWINGS\",\n \"Scavio TikTok User Followings\",\n \"List the accounts a TikTok user follows, by secUid.\",\n z.object({\n sec_user_id: str(\"TikTok secUid of the user.\"),\n count: onum(\"Number of followings to return.\"),\n page_token: ostr(\"Pagination token.\"),\n min_time: onum(\"Minimum timestamp filter.\"),\n }),\n (i) => client.tiktok.userFollowings(i)\n )\n );\n }\n\n if (all || enableInstagram) {\n tools.push(\n tool(\n \"INSTAGRAM_PROFILE\",\n \"Scavio Instagram Profile\",\n \"Fetch an Instagram profile by username or user id.\",\n z.object({\n username: ostr(\"Instagram username. Provide this or user_id.\"),\n user_id: ostr(\"Instagram user id. Provide this or username.\"),\n }),\n (i) => client.instagram.profile(i)\n ),\n tool(\n \"INSTAGRAM_USER_POSTS\",\n \"Scavio Instagram User Posts\",\n \"List an Instagram user's posts.\",\n z.object({\n username: ostr(\"Instagram username. Provide this or user_id.\"),\n user_id: ostr(\"Instagram user id. Provide this or username.\"),\n count: onum(\"Number of posts to return.\"),\n cursor: ostr(\"Pagination cursor.\"),\n }),\n (i) => client.instagram.userPosts(i)\n ),\n tool(\n \"INSTAGRAM_USER_REELS\",\n \"Scavio Instagram User Reels\",\n \"List an Instagram user's reels.\",\n z.object({\n username: ostr(\"Instagram username. Provide this or user_id.\"),\n user_id: ostr(\"Instagram user id. Provide this or username.\"),\n count: onum(\"Number of reels to return.\"),\n cursor: ostr(\"Pagination cursor.\"),\n }),\n (i) => client.instagram.userReels(i)\n ),\n tool(\n \"INSTAGRAM_USER_TAGGED\",\n \"Scavio Instagram User Tagged\",\n \"List posts an Instagram user is tagged in.\",\n z.object({\n username: ostr(\"Instagram username. Provide this or user_id.\"),\n user_id: ostr(\"Instagram user id. Provide this or username.\"),\n count: onum(\"Number of tagged posts to return.\"),\n cursor: ostr(\"Pagination cursor.\"),\n }),\n (i) => client.instagram.userTagged(i)\n ),\n tool(\n \"INSTAGRAM_USER_STORIES\",\n \"Scavio Instagram User Stories\",\n \"Fetch an Instagram user's current stories.\",\n z.object({\n username: ostr(\"Instagram username. Provide this or user_id.\"),\n user_id: ostr(\"Instagram user id. Provide this or username.\"),\n }),\n (i) => client.instagram.userStories(i)\n ),\n tool(\n \"INSTAGRAM_POST\",\n \"Scavio Instagram Post\",\n \"Fetch an Instagram post by URL, media id, or shortcode.\",\n z.object({\n url: ostr(\"Post URL. Provide one of url, media_id, or shortcode.\"),\n media_id: ostr(\"Post media id. Provide one of url, media_id, or shortcode.\"),\n shortcode: ostr(\"Post shortcode. Provide one of url, media_id, or shortcode.\"),\n }),\n (i) => client.instagram.post(i)\n ),\n tool(\n \"INSTAGRAM_POST_COMMENTS\",\n \"Scavio Instagram Post Comments\",\n \"List comments on an Instagram post by shortcode or URL.\",\n z.object({\n shortcode: ostr(\"Post shortcode. Provide this or url.\"),\n url: ostr(\"Post URL. Provide this or shortcode.\"),\n cursor: ostr(\"Pagination cursor.\"),\n sort_order: ostr(\"Comment sort order.\"),\n }),\n (i) => client.instagram.postComments(i)\n ),\n tool(\n \"INSTAGRAM_COMMENT_REPLIES\",\n \"Scavio Instagram Comment Replies\",\n \"List replies to an Instagram post comment.\",\n z.object({\n media_id: str(\"Post media id.\"),\n comment_id: str(\"Parent comment id.\"),\n cursor: ostr(\"Pagination cursor.\"),\n }),\n (i) => client.instagram.commentReplies(i)\n ),\n tool(\n \"INSTAGRAM_SEARCH_USERS\",\n \"Scavio Instagram Search Users\",\n \"Search Instagram users by keyword.\",\n z.object({\n keyword: str(\"Search keyword.\"),\n cursor: ostr(\"Pagination cursor.\"),\n }),\n (i) => client.instagram.searchUsers(i)\n ),\n tool(\n \"INSTAGRAM_SEARCH_HASHTAGS\",\n \"Scavio Instagram Search Hashtags\",\n \"Search Instagram hashtags by keyword.\",\n z.object({\n keyword: str(\"Search keyword.\"),\n cursor: ostr(\"Pagination cursor.\"),\n }),\n (i) => client.instagram.searchHashtags(i)\n ),\n tool(\n \"INSTAGRAM_USER_FOLLOWERS\",\n \"Scavio Instagram User Followers\",\n \"List an Instagram user's followers.\",\n z.object({\n username: ostr(\"Instagram username. Provide this or user_id.\"),\n user_id: ostr(\"Instagram user id. Provide this or username.\"),\n count: onum(\"Number of followers to return.\"),\n cursor: ostr(\"Pagination cursor.\"),\n }),\n (i) => client.instagram.userFollowers(i)\n ),\n tool(\n \"INSTAGRAM_USER_FOLLOWINGS\",\n \"Scavio Instagram User Followings\",\n \"List the accounts an Instagram user follows.\",\n z.object({\n username: ostr(\"Instagram username. Provide this or user_id.\"),\n user_id: ostr(\"Instagram user id. Provide this or username.\"),\n count: onum(\"Number of followings to return.\"),\n cursor: ostr(\"Pagination cursor.\"),\n }),\n (i) => client.instagram.userFollowings(i)\n )\n );\n }\n\n return experimental_createToolkit(\"SCAVIO\", {\n name: \"Scavio\",\n description:\n \"Real-time structured search over Google, YouTube, Amazon, Walmart, Reddit, TikTok, and Instagram.\",\n tools,\n });\n}\n\nexport default buildScavioToolkit;\n"],"mappings":"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","names":[]}
package/dist/index.js CHANGED
@@ -9,6 +9,15 @@ var str = (d) => z.string().describe(d);
9
9
  var ostr = (d) => z.string().optional().describe(d);
10
10
  var onum = (d) => z.number().optional().describe(d);
11
11
  var obool = (d) => z.boolean().optional().describe(d);
12
+ function googleSearchParams(i) {
13
+ const params = { query: i.query };
14
+ if (i.countryCode != null) params.gl = i.countryCode;
15
+ if (i.language != null) params.hl = i.language;
16
+ if (i.page != null && i.page > 1) params.start = (i.page - 1) * 10;
17
+ if (i.device != null) params.device = i.device;
18
+ if (i.nfpr != null) params.nfpr = i.nfpr;
19
+ return params;
20
+ }
12
21
  function buildScavioToolkit(options = {}) {
13
22
  const {
14
23
  apiKey,
@@ -36,18 +45,16 @@ function buildScavioToolkit(options = {}) {
36
45
  tool(
37
46
  "GOOGLE_SEARCH",
38
47
  "Scavio Google Search",
39
- "Search Google for real-time web results (organic, knowledge graph, news, and more).",
48
+ "Search Google for real-time web results (organic_results, ads, and the AI Overview when present). Costs 1 credit.",
40
49
  z.object({
41
50
  query: str("The search query."),
42
- country_code: ostr("Two-letter country code, e.g. 'us'."),
51
+ countryCode: ostr("Two-letter country code, e.g. 'us'."),
43
52
  language: ostr("Two-letter language code, e.g. 'en'."),
44
53
  page: onum("Result page number (1-based)."),
45
- search_type: ostr("Search vertical, e.g. 'search', 'news', 'images'."),
46
54
  device: ostr("Device profile: 'desktop' or 'mobile'."),
47
- nfpr: obool("Disable auto-correction of the query when true."),
48
- light_request: obool("Cheaper, lighter response (1 credit instead of 2) when true.")
55
+ nfpr: obool("Disable auto-correction of the query when true.")
49
56
  }),
50
- (i) => client.google.search(i)
57
+ (i) => client.google.search(googleSearchParams(i))
51
58
  )
52
59
  );
53
60
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["/**\n * Scavio tools for Composio.\n *\n * Exposes the Scavio search API (Google, YouTube, Amazon, Walmart, Reddit, TikTok,\n * Instagram) as a Composio custom toolkit. Build it with `buildScavioToolkit()` and\n * bind it to a session:\n *\n * import { Composio } from \"@composio/core\";\n * import { buildScavioToolkit } from \"@scavio/composio\";\n *\n * const composio = new Composio();\n * const scavio = buildScavioToolkit({ apiKey: process.env.SCAVIO_API_KEY });\n * const session = await composio.create(\"user_1\", {\n * experimental: { customToolkits: [scavio] },\n * });\n * const out = await session.execute(\"LOCAL_SCAVIO_GOOGLE_SEARCH\", { query: \"ai agents\" });\n *\n * Each provider is gated by an `enable*` flag so an agent only sees the tools it needs.\n */\nimport {\n experimental_createTool,\n experimental_createToolkit,\n} from \"@composio/core\";\nimport { Scavio } from \"scavio\";\nimport { z } from \"zod\";\n\nexport interface BuildScavioToolkitOptions {\n /** Scavio API key. Falls back to the SCAVIO_API_KEY env var. */\n apiKey?: string;\n enableGoogle?: boolean;\n enableAmazon?: boolean;\n enableWalmart?: boolean;\n enableYoutube?: boolean;\n enableReddit?: boolean;\n enableTiktok?: boolean;\n enableInstagram?: boolean;\n /** Register every tool, ignoring the individual flags. */\n all?: boolean;\n}\n\nconst str = (d: string) => z.string().describe(d);\nconst ostr = (d: string) => z.string().optional().describe(d);\nconst onum = (d: string) => z.number().optional().describe(d);\nconst obool = (d: string) => z.boolean().optional().describe(d);\n\n/**\n * Build a Composio custom toolkit exposing Scavio search tools.\n *\n * Scavio is a single Search API over Google, YouTube, Amazon, Walmart, Reddit,\n * TikTok, and Instagram. Pass to `composio.create(userId, { experimental:\n * { customToolkits: [toolkit] } })`. Agent-facing slugs are prefixed `LOCAL_SCAVIO_`.\n */\nexport function buildScavioToolkit(options: BuildScavioToolkitOptions = {}) {\n const {\n apiKey,\n enableGoogle = true,\n enableAmazon = true,\n enableWalmart = true,\n enableYoutube = true,\n enableReddit = true,\n enableTiktok = true,\n enableInstagram = true,\n all = false,\n } = options;\n\n const client = new Scavio({ apiKey: apiKey ?? process.env.SCAVIO_API_KEY });\n\n function tool<T extends z.ZodTypeAny>(\n slug: string,\n name: string,\n description: string,\n inputParams: T,\n call: (input: z.infer<T>) => Promise<Record<string, unknown>>\n ) {\n return experimental_createTool(slug, {\n name,\n description,\n inputParams,\n execute: async (input: z.infer<T>) => call(input),\n });\n }\n\n const tools = [];\n\n if (all || enableGoogle) {\n tools.push(\n tool(\n \"GOOGLE_SEARCH\",\n \"Scavio Google Search\",\n \"Search Google for real-time web results (organic, knowledge graph, news, and more).\",\n z.object({\n query: str(\"The search query.\"),\n country_code: ostr(\"Two-letter country code, e.g. 'us'.\"),\n language: ostr(\"Two-letter language code, e.g. 'en'.\"),\n page: onum(\"Result page number (1-based).\"),\n search_type: ostr(\"Search vertical, e.g. 'search', 'news', 'images'.\"),\n device: ostr(\"Device profile: 'desktop' or 'mobile'.\"),\n nfpr: obool(\"Disable auto-correction of the query when true.\"),\n light_request: obool(\"Cheaper, lighter response (1 credit instead of 2) when true.\"),\n }),\n (i) => client.google.search(i)\n )\n );\n }\n\n if (all || enableAmazon) {\n tools.push(\n tool(\n \"AMAZON_SEARCH\",\n \"Scavio Amazon Search\",\n \"Search Amazon for products matching a query.\",\n z.object({\n query: str(\"The product search query.\"),\n domain: ostr(\"Amazon domain, e.g. 'amazon.com'.\"),\n country: ostr(\"Two-letter country code.\"),\n language: ostr(\"Two-letter language code.\"),\n currency: ostr(\"Currency code, e.g. 'USD'.\"),\n device: ostr(\"Device profile: 'desktop' or 'mobile'.\"),\n sort_by: ostr(\"Sort order for results.\"),\n start_page: onum(\"First page to return.\"),\n pages: onum(\"Number of pages to return.\"),\n category_id: ostr(\"Restrict to an Amazon category id.\"),\n merchant_id: ostr(\"Restrict to a merchant id.\"),\n zip_code: ostr(\"Delivery ZIP/postal code.\"),\n autoselect_variant: obool(\"Auto-select the best product variant when true.\"),\n }),\n (i) => client.amazon.search(i)\n ),\n tool(\n \"AMAZON_PRODUCT\",\n \"Scavio Amazon Product\",\n \"Fetch full Amazon product details by ASIN.\",\n z.object({\n asin: str(\"Amazon Standard Identification Number (ASIN) of the product.\"),\n domain: ostr(\"Amazon domain, e.g. 'amazon.com'.\"),\n country: ostr(\"Two-letter country code.\"),\n language: ostr(\"Two-letter language code.\"),\n currency: ostr(\"Currency code, e.g. 'USD'.\"),\n device: ostr(\"Device profile: 'desktop' or 'mobile'.\"),\n zip_code: ostr(\"Delivery ZIP/postal code.\"),\n autoselect_variant: obool(\"Auto-select the best product variant when true.\"),\n }),\n (i) => client.amazon.product(i)\n )\n );\n }\n\n if (all || enableWalmart) {\n tools.push(\n tool(\n \"WALMART_SEARCH\",\n \"Scavio Walmart Search\",\n \"Search Walmart for products matching a query.\",\n z.object({\n query: str(\"The product search query.\"),\n domain: ostr(\"Walmart domain.\"),\n device: ostr(\"Device profile: 'desktop' or 'mobile'.\"),\n sort_by: ostr(\"Sort order for results.\"),\n start_page: onum(\"First page to return.\"),\n min_price: onum(\"Minimum price filter.\"),\n max_price: onum(\"Maximum price filter.\"),\n fulfillment_speed: ostr(\"Fulfillment speed filter.\"),\n fulfillment_type: ostr(\"Fulfillment type filter.\"),\n delivery_zip: ostr(\"Delivery ZIP/postal code.\"),\n store_id: ostr(\"Restrict to a store id.\"),\n }),\n (i) => client.walmart.search(i)\n ),\n tool(\n \"WALMART_PRODUCT\",\n \"Scavio Walmart Product\",\n \"Fetch full Walmart product details by product id.\",\n z.object({\n product_id: str(\"Walmart product id.\"),\n domain: ostr(\"Walmart domain.\"),\n device: ostr(\"Device profile: 'desktop' or 'mobile'.\"),\n delivery_zip: ostr(\"Delivery ZIP/postal code.\"),\n store_id: ostr(\"Restrict to a store id.\"),\n }),\n (i) => client.walmart.product(i)\n )\n );\n }\n\n if (all || enableYoutube) {\n tools.push(\n tool(\n \"YOUTUBE_SEARCH\",\n \"Scavio YouTube Search\",\n \"Search YouTube for videos, channels, or playlists.\",\n z.object({\n query: str(\"The video search query.\"),\n upload_date: ostr(\"Upload date filter, e.g. 'today', 'week', 'month'.\"),\n type: ostr(\"Result type, e.g. 'video', 'channel', 'playlist'.\"),\n duration: ostr(\"Duration filter, e.g. 'short', 'long'.\"),\n sort_by: ostr(\"Sort order for results.\"),\n hd: obool(\"Restrict to HD videos when true.\"),\n subtitles: obool(\"Restrict to videos with subtitles when true.\"),\n creative_commons: obool(\"Restrict to Creative Commons videos when true.\"),\n live: obool(\"Restrict to live videos when true.\"),\n }),\n (i) => client.youtube.search(i)\n ),\n tool(\n \"YOUTUBE_METADATA\",\n \"Scavio YouTube Metadata\",\n \"Fetch metadata for a YouTube video by id.\",\n z.object({ video_id: str(\"YouTube video id.\") }),\n (i) => client.youtube.metadata(i)\n )\n );\n }\n\n if (all || enableReddit) {\n tools.push(\n tool(\n \"REDDIT_SEARCH\",\n \"Scavio Reddit Search\",\n \"Search Reddit posts, subreddits, or users.\",\n z.object({\n query: str(\"The Reddit search query.\"),\n type: ostr(\"Search type, e.g. 'posts', 'subreddits', 'users'.\"),\n sort: ostr(\"Sort order, e.g. 'relevance', 'new', 'top'.\"),\n cursor: ostr(\"Pagination cursor.\"),\n }),\n (i) => client.reddit.search(i)\n ),\n tool(\n \"REDDIT_POST\",\n \"Scavio Reddit Post\",\n \"Fetch a Reddit post and its comment thread by URL.\",\n z.object({ url: str(\"Full URL of the Reddit post to fetch with its comments.\") }),\n (i) => client.reddit.post(i)\n )\n );\n }\n\n if (all || enableTiktok) {\n tools.push(\n tool(\n \"TIKTOK_PROFILE\",\n \"Scavio TikTok Profile\",\n \"Fetch a TikTok user profile by username or secUid.\",\n z.object({\n username: ostr(\"TikTok username (without @). Provide this or sec_user_id.\"),\n sec_user_id: ostr(\"TikTok secUid. Provide this or username.\"),\n }),\n (i) => client.tiktok.profile(i)\n ),\n tool(\n \"TIKTOK_USER_POSTS\",\n \"Scavio TikTok User Posts\",\n \"List a TikTok user's posts by secUid.\",\n z.object({\n sec_user_id: str(\"TikTok secUid of the user.\"),\n cursor: ostr(\"Pagination cursor.\"),\n count: onum(\"Number of posts to return.\"),\n sort_type: ostr(\"Sort order for posts.\"),\n }),\n (i) => client.tiktok.userPosts(i)\n ),\n tool(\n \"TIKTOK_VIDEO\",\n \"Scavio TikTok Video\",\n \"Fetch a TikTok video by id.\",\n z.object({ video_id: str(\"TikTok video id.\") }),\n (i) => client.tiktok.video(i)\n ),\n tool(\n \"TIKTOK_VIDEO_COMMENTS\",\n \"Scavio TikTok Video Comments\",\n \"List comments on a TikTok video.\",\n z.object({\n video_id: str(\"TikTok video id.\"),\n cursor: ostr(\"Pagination cursor.\"),\n count: onum(\"Number of comments to return.\"),\n }),\n (i) => client.tiktok.videoComments(i)\n ),\n tool(\n \"TIKTOK_COMMENT_REPLIES\",\n \"Scavio TikTok Comment Replies\",\n \"List replies to a TikTok video comment.\",\n z.object({\n video_id: str(\"TikTok video id.\"),\n comment_id: str(\"Parent comment id.\"),\n cursor: ostr(\"Pagination cursor.\"),\n count: onum(\"Number of replies to return.\"),\n }),\n (i) => client.tiktok.commentReplies(i)\n ),\n tool(\n \"TIKTOK_SEARCH_VIDEOS\",\n \"Scavio TikTok Search Videos\",\n \"Search TikTok videos by keyword.\",\n z.object({\n keyword: str(\"Search keyword.\"),\n cursor: ostr(\"Pagination cursor.\"),\n count: onum(\"Number of videos to return.\"),\n sort_type: ostr(\"Sort order for results.\"),\n publish_time: ostr(\"Publish-time filter.\"),\n }),\n (i) => client.tiktok.searchVideos(i)\n ),\n tool(\n \"TIKTOK_SEARCH_USERS\",\n \"Scavio TikTok Search Users\",\n \"Search TikTok users by keyword.\",\n z.object({\n keyword: str(\"Search keyword.\"),\n cursor: ostr(\"Pagination cursor.\"),\n count: onum(\"Number of users to return.\"),\n }),\n (i) => client.tiktok.searchUsers(i)\n ),\n tool(\n \"TIKTOK_HASHTAG\",\n \"Scavio TikTok Hashtag\",\n \"Fetch a TikTok hashtag by name or id.\",\n z.object({\n hashtag_name: ostr(\"Hashtag name (without #). Provide this or hashtag_id.\"),\n hashtag_id: ostr(\"Hashtag id. Provide this or hashtag_name.\"),\n }),\n (i) => client.tiktok.hashtag(i)\n ),\n tool(\n \"TIKTOK_HASHTAG_VIDEOS\",\n \"Scavio TikTok Hashtag Videos\",\n \"List videos for a TikTok hashtag by id.\",\n z.object({\n hashtag_id: str(\"Hashtag id.\"),\n cursor: ostr(\"Pagination cursor.\"),\n count: onum(\"Number of videos to return.\"),\n }),\n (i) => client.tiktok.hashtagVideos(i)\n ),\n tool(\n \"TIKTOK_USER_FOLLOWERS\",\n \"Scavio TikTok User Followers\",\n \"List a TikTok user's followers by secUid.\",\n z.object({\n sec_user_id: str(\"TikTok secUid of the user.\"),\n count: onum(\"Number of followers to return.\"),\n page_token: ostr(\"Pagination token.\"),\n min_time: onum(\"Minimum timestamp filter.\"),\n }),\n (i) => client.tiktok.userFollowers(i)\n ),\n tool(\n \"TIKTOK_USER_FOLLOWINGS\",\n \"Scavio TikTok User Followings\",\n \"List the accounts a TikTok user follows, by secUid.\",\n z.object({\n sec_user_id: str(\"TikTok secUid of the user.\"),\n count: onum(\"Number of followings to return.\"),\n page_token: ostr(\"Pagination token.\"),\n min_time: onum(\"Minimum timestamp filter.\"),\n }),\n (i) => client.tiktok.userFollowings(i)\n )\n );\n }\n\n if (all || enableInstagram) {\n tools.push(\n tool(\n \"INSTAGRAM_PROFILE\",\n \"Scavio Instagram Profile\",\n \"Fetch an Instagram profile by username or user id.\",\n z.object({\n username: ostr(\"Instagram username. Provide this or user_id.\"),\n user_id: ostr(\"Instagram user id. Provide this or username.\"),\n }),\n (i) => client.instagram.profile(i)\n ),\n tool(\n \"INSTAGRAM_USER_POSTS\",\n \"Scavio Instagram User Posts\",\n \"List an Instagram user's posts.\",\n z.object({\n username: ostr(\"Instagram username. Provide this or user_id.\"),\n user_id: ostr(\"Instagram user id. Provide this or username.\"),\n count: onum(\"Number of posts to return.\"),\n cursor: ostr(\"Pagination cursor.\"),\n }),\n (i) => client.instagram.userPosts(i)\n ),\n tool(\n \"INSTAGRAM_USER_REELS\",\n \"Scavio Instagram User Reels\",\n \"List an Instagram user's reels.\",\n z.object({\n username: ostr(\"Instagram username. Provide this or user_id.\"),\n user_id: ostr(\"Instagram user id. Provide this or username.\"),\n count: onum(\"Number of reels to return.\"),\n cursor: ostr(\"Pagination cursor.\"),\n }),\n (i) => client.instagram.userReels(i)\n ),\n tool(\n \"INSTAGRAM_USER_TAGGED\",\n \"Scavio Instagram User Tagged\",\n \"List posts an Instagram user is tagged in.\",\n z.object({\n username: ostr(\"Instagram username. Provide this or user_id.\"),\n user_id: ostr(\"Instagram user id. Provide this or username.\"),\n count: onum(\"Number of tagged posts to return.\"),\n cursor: ostr(\"Pagination cursor.\"),\n }),\n (i) => client.instagram.userTagged(i)\n ),\n tool(\n \"INSTAGRAM_USER_STORIES\",\n \"Scavio Instagram User Stories\",\n \"Fetch an Instagram user's current stories.\",\n z.object({\n username: ostr(\"Instagram username. Provide this or user_id.\"),\n user_id: ostr(\"Instagram user id. Provide this or username.\"),\n }),\n (i) => client.instagram.userStories(i)\n ),\n tool(\n \"INSTAGRAM_POST\",\n \"Scavio Instagram Post\",\n \"Fetch an Instagram post by URL, media id, or shortcode.\",\n z.object({\n url: ostr(\"Post URL. Provide one of url, media_id, or shortcode.\"),\n media_id: ostr(\"Post media id. Provide one of url, media_id, or shortcode.\"),\n shortcode: ostr(\"Post shortcode. Provide one of url, media_id, or shortcode.\"),\n }),\n (i) => client.instagram.post(i)\n ),\n tool(\n \"INSTAGRAM_POST_COMMENTS\",\n \"Scavio Instagram Post Comments\",\n \"List comments on an Instagram post by shortcode or URL.\",\n z.object({\n shortcode: ostr(\"Post shortcode. Provide this or url.\"),\n url: ostr(\"Post URL. Provide this or shortcode.\"),\n cursor: ostr(\"Pagination cursor.\"),\n sort_order: ostr(\"Comment sort order.\"),\n }),\n (i) => client.instagram.postComments(i)\n ),\n tool(\n \"INSTAGRAM_COMMENT_REPLIES\",\n \"Scavio Instagram Comment Replies\",\n \"List replies to an Instagram post comment.\",\n z.object({\n media_id: str(\"Post media id.\"),\n comment_id: str(\"Parent comment id.\"),\n cursor: ostr(\"Pagination cursor.\"),\n }),\n (i) => client.instagram.commentReplies(i)\n ),\n tool(\n \"INSTAGRAM_SEARCH_USERS\",\n \"Scavio Instagram Search Users\",\n \"Search Instagram users by keyword.\",\n z.object({\n keyword: str(\"Search keyword.\"),\n cursor: ostr(\"Pagination cursor.\"),\n }),\n (i) => client.instagram.searchUsers(i)\n ),\n tool(\n \"INSTAGRAM_SEARCH_HASHTAGS\",\n \"Scavio Instagram Search Hashtags\",\n \"Search Instagram hashtags by keyword.\",\n z.object({\n keyword: str(\"Search keyword.\"),\n cursor: ostr(\"Pagination cursor.\"),\n }),\n (i) => client.instagram.searchHashtags(i)\n ),\n tool(\n \"INSTAGRAM_USER_FOLLOWERS\",\n \"Scavio Instagram User Followers\",\n \"List an Instagram user's followers.\",\n z.object({\n username: ostr(\"Instagram username. Provide this or user_id.\"),\n user_id: ostr(\"Instagram user id. Provide this or username.\"),\n count: onum(\"Number of followers to return.\"),\n cursor: ostr(\"Pagination cursor.\"),\n }),\n (i) => client.instagram.userFollowers(i)\n ),\n tool(\n \"INSTAGRAM_USER_FOLLOWINGS\",\n \"Scavio Instagram User Followings\",\n \"List the accounts an Instagram user follows.\",\n z.object({\n username: ostr(\"Instagram username. Provide this or user_id.\"),\n user_id: ostr(\"Instagram user id. Provide this or username.\"),\n count: onum(\"Number of followings to return.\"),\n cursor: ostr(\"Pagination cursor.\"),\n }),\n (i) => client.instagram.userFollowings(i)\n )\n );\n }\n\n return experimental_createToolkit(\"SCAVIO\", {\n name: \"Scavio\",\n description:\n \"Real-time structured search over Google, YouTube, Amazon, Walmart, Reddit, TikTok, and Instagram.\",\n tools,\n });\n}\n\nexport default buildScavioToolkit;\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["/**\n * Scavio tools for Composio.\n *\n * Exposes the Scavio search API (Google, YouTube, Amazon, Walmart, Reddit, TikTok,\n * Instagram) as a Composio custom toolkit. Build it with `buildScavioToolkit()` and\n * bind it to a session:\n *\n * import { Composio } from \"@composio/core\";\n * import { buildScavioToolkit } from \"@scavio/composio\";\n *\n * const composio = new Composio();\n * const scavio = buildScavioToolkit({ apiKey: process.env.SCAVIO_API_KEY });\n * const session = await composio.create(\"user_1\", {\n * experimental: { customToolkits: [scavio] },\n * });\n * const out = await session.execute(\"LOCAL_SCAVIO_GOOGLE_SEARCH\", { query: \"ai agents\" });\n *\n * Each provider is gated by an `enable*` flag so an agent only sees the tools it needs.\n */\nimport {\n experimental_createTool,\n experimental_createToolkit,\n} from \"@composio/core\";\nimport { Scavio } from \"scavio\";\nimport { z } from \"zod\";\n\nexport interface BuildScavioToolkitOptions {\n /** Scavio API key. Falls back to the SCAVIO_API_KEY env var. */\n apiKey?: string;\n enableGoogle?: boolean;\n enableAmazon?: boolean;\n enableWalmart?: boolean;\n enableYoutube?: boolean;\n enableReddit?: boolean;\n enableTiktok?: boolean;\n enableInstagram?: boolean;\n /** Register every tool, ignoring the individual flags. */\n all?: boolean;\n}\n\nconst str = (d: string) => z.string().describe(d);\nconst ostr = (d: string) => z.string().optional().describe(d);\nconst onum = (d: string) => z.number().optional().describe(d);\nconst obool = (d: string) => z.boolean().optional().describe(d);\n\ninterface GoogleSearchArgs {\n query: string;\n countryCode?: string;\n language?: string;\n page?: number;\n device?: string;\n nfpr?: boolean;\n}\n\n/** Map the public Google args to the v2 SERP wire params the SDK expects. */\nfunction googleSearchParams(i: GoogleSearchArgs): { query: string; [key: string]: unknown } {\n const params: { query: string; [key: string]: unknown } = { query: i.query };\n if (i.countryCode != null) params.gl = i.countryCode;\n if (i.language != null) params.hl = i.language;\n if (i.page != null && i.page > 1) params.start = (i.page - 1) * 10;\n if (i.device != null) params.device = i.device;\n if (i.nfpr != null) params.nfpr = i.nfpr;\n return params;\n}\n\n/**\n * Build a Composio custom toolkit exposing Scavio search tools.\n *\n * Scavio is a single Search API over Google, YouTube, Amazon, Walmart, Reddit,\n * TikTok, and Instagram. Pass to `composio.create(userId, { experimental:\n * { customToolkits: [toolkit] } })`. Agent-facing slugs are prefixed `LOCAL_SCAVIO_`.\n */\nexport function buildScavioToolkit(options: BuildScavioToolkitOptions = {}) {\n const {\n apiKey,\n enableGoogle = true,\n enableAmazon = true,\n enableWalmart = true,\n enableYoutube = true,\n enableReddit = true,\n enableTiktok = true,\n enableInstagram = true,\n all = false,\n } = options;\n\n const client = new Scavio({ apiKey: apiKey ?? process.env.SCAVIO_API_KEY });\n\n function tool<T extends z.ZodTypeAny>(\n slug: string,\n name: string,\n description: string,\n inputParams: T,\n call: (input: z.infer<T>) => Promise<Record<string, unknown>>\n ) {\n return experimental_createTool(slug, {\n name,\n description,\n inputParams,\n execute: async (input: z.infer<T>) => call(input),\n });\n }\n\n const tools = [];\n\n if (all || enableGoogle) {\n tools.push(\n tool(\n \"GOOGLE_SEARCH\",\n \"Scavio Google Search\",\n \"Search Google for real-time web results (organic_results, ads, and the AI Overview when present). Costs 1 credit.\",\n z.object({\n query: str(\"The search query.\"),\n countryCode: ostr(\"Two-letter country code, e.g. 'us'.\"),\n language: ostr(\"Two-letter language code, e.g. 'en'.\"),\n page: onum(\"Result page number (1-based).\"),\n device: ostr(\"Device profile: 'desktop' or 'mobile'.\"),\n nfpr: obool(\"Disable auto-correction of the query when true.\"),\n }),\n (i) => client.google.search(googleSearchParams(i))\n )\n );\n }\n\n if (all || enableAmazon) {\n tools.push(\n tool(\n \"AMAZON_SEARCH\",\n \"Scavio Amazon Search\",\n \"Search Amazon for products matching a query.\",\n z.object({\n query: str(\"The product search query.\"),\n domain: ostr(\"Amazon domain, e.g. 'amazon.com'.\"),\n country: ostr(\"Two-letter country code.\"),\n language: ostr(\"Two-letter language code.\"),\n currency: ostr(\"Currency code, e.g. 'USD'.\"),\n device: ostr(\"Device profile: 'desktop' or 'mobile'.\"),\n sort_by: ostr(\"Sort order for results.\"),\n start_page: onum(\"First page to return.\"),\n pages: onum(\"Number of pages to return.\"),\n category_id: ostr(\"Restrict to an Amazon category id.\"),\n merchant_id: ostr(\"Restrict to a merchant id.\"),\n zip_code: ostr(\"Delivery ZIP/postal code.\"),\n autoselect_variant: obool(\"Auto-select the best product variant when true.\"),\n }),\n (i) => client.amazon.search(i)\n ),\n tool(\n \"AMAZON_PRODUCT\",\n \"Scavio Amazon Product\",\n \"Fetch full Amazon product details by ASIN.\",\n z.object({\n asin: str(\"Amazon Standard Identification Number (ASIN) of the product.\"),\n domain: ostr(\"Amazon domain, e.g. 'amazon.com'.\"),\n country: ostr(\"Two-letter country code.\"),\n language: ostr(\"Two-letter language code.\"),\n currency: ostr(\"Currency code, e.g. 'USD'.\"),\n device: ostr(\"Device profile: 'desktop' or 'mobile'.\"),\n zip_code: ostr(\"Delivery ZIP/postal code.\"),\n autoselect_variant: obool(\"Auto-select the best product variant when true.\"),\n }),\n (i) => client.amazon.product(i)\n )\n );\n }\n\n if (all || enableWalmart) {\n tools.push(\n tool(\n \"WALMART_SEARCH\",\n \"Scavio Walmart Search\",\n \"Search Walmart for products matching a query.\",\n z.object({\n query: str(\"The product search query.\"),\n domain: ostr(\"Walmart domain.\"),\n device: ostr(\"Device profile: 'desktop' or 'mobile'.\"),\n sort_by: ostr(\"Sort order for results.\"),\n start_page: onum(\"First page to return.\"),\n min_price: onum(\"Minimum price filter.\"),\n max_price: onum(\"Maximum price filter.\"),\n fulfillment_speed: ostr(\"Fulfillment speed filter.\"),\n fulfillment_type: ostr(\"Fulfillment type filter.\"),\n delivery_zip: ostr(\"Delivery ZIP/postal code.\"),\n store_id: ostr(\"Restrict to a store id.\"),\n }),\n (i) => client.walmart.search(i)\n ),\n tool(\n \"WALMART_PRODUCT\",\n \"Scavio Walmart Product\",\n \"Fetch full Walmart product details by product id.\",\n z.object({\n product_id: str(\"Walmart product id.\"),\n domain: ostr(\"Walmart domain.\"),\n device: ostr(\"Device profile: 'desktop' or 'mobile'.\"),\n delivery_zip: ostr(\"Delivery ZIP/postal code.\"),\n store_id: ostr(\"Restrict to a store id.\"),\n }),\n (i) => client.walmart.product(i)\n )\n );\n }\n\n if (all || enableYoutube) {\n tools.push(\n tool(\n \"YOUTUBE_SEARCH\",\n \"Scavio YouTube Search\",\n \"Search YouTube for videos, channels, or playlists.\",\n z.object({\n query: str(\"The video search query.\"),\n upload_date: ostr(\"Upload date filter, e.g. 'today', 'week', 'month'.\"),\n type: ostr(\"Result type, e.g. 'video', 'channel', 'playlist'.\"),\n duration: ostr(\"Duration filter, e.g. 'short', 'long'.\"),\n sort_by: ostr(\"Sort order for results.\"),\n hd: obool(\"Restrict to HD videos when true.\"),\n subtitles: obool(\"Restrict to videos with subtitles when true.\"),\n creative_commons: obool(\"Restrict to Creative Commons videos when true.\"),\n live: obool(\"Restrict to live videos when true.\"),\n }),\n (i) => client.youtube.search(i)\n ),\n tool(\n \"YOUTUBE_METADATA\",\n \"Scavio YouTube Metadata\",\n \"Fetch metadata for a YouTube video by id.\",\n z.object({ video_id: str(\"YouTube video id.\") }),\n (i) => client.youtube.metadata(i)\n )\n );\n }\n\n if (all || enableReddit) {\n tools.push(\n tool(\n \"REDDIT_SEARCH\",\n \"Scavio Reddit Search\",\n \"Search Reddit posts, subreddits, or users.\",\n z.object({\n query: str(\"The Reddit search query.\"),\n type: ostr(\"Search type, e.g. 'posts', 'subreddits', 'users'.\"),\n sort: ostr(\"Sort order, e.g. 'relevance', 'new', 'top'.\"),\n cursor: ostr(\"Pagination cursor.\"),\n }),\n (i) => client.reddit.search(i)\n ),\n tool(\n \"REDDIT_POST\",\n \"Scavio Reddit Post\",\n \"Fetch a Reddit post and its comment thread by URL.\",\n z.object({ url: str(\"Full URL of the Reddit post to fetch with its comments.\") }),\n (i) => client.reddit.post(i)\n )\n );\n }\n\n if (all || enableTiktok) {\n tools.push(\n tool(\n \"TIKTOK_PROFILE\",\n \"Scavio TikTok Profile\",\n \"Fetch a TikTok user profile by username or secUid.\",\n z.object({\n username: ostr(\"TikTok username (without @). Provide this or sec_user_id.\"),\n sec_user_id: ostr(\"TikTok secUid. Provide this or username.\"),\n }),\n (i) => client.tiktok.profile(i)\n ),\n tool(\n \"TIKTOK_USER_POSTS\",\n \"Scavio TikTok User Posts\",\n \"List a TikTok user's posts by secUid.\",\n z.object({\n sec_user_id: str(\"TikTok secUid of the user.\"),\n cursor: ostr(\"Pagination cursor.\"),\n count: onum(\"Number of posts to return.\"),\n sort_type: ostr(\"Sort order for posts.\"),\n }),\n (i) => client.tiktok.userPosts(i)\n ),\n tool(\n \"TIKTOK_VIDEO\",\n \"Scavio TikTok Video\",\n \"Fetch a TikTok video by id.\",\n z.object({ video_id: str(\"TikTok video id.\") }),\n (i) => client.tiktok.video(i)\n ),\n tool(\n \"TIKTOK_VIDEO_COMMENTS\",\n \"Scavio TikTok Video Comments\",\n \"List comments on a TikTok video.\",\n z.object({\n video_id: str(\"TikTok video id.\"),\n cursor: ostr(\"Pagination cursor.\"),\n count: onum(\"Number of comments to return.\"),\n }),\n (i) => client.tiktok.videoComments(i)\n ),\n tool(\n \"TIKTOK_COMMENT_REPLIES\",\n \"Scavio TikTok Comment Replies\",\n \"List replies to a TikTok video comment.\",\n z.object({\n video_id: str(\"TikTok video id.\"),\n comment_id: str(\"Parent comment id.\"),\n cursor: ostr(\"Pagination cursor.\"),\n count: onum(\"Number of replies to return.\"),\n }),\n (i) => client.tiktok.commentReplies(i)\n ),\n tool(\n \"TIKTOK_SEARCH_VIDEOS\",\n \"Scavio TikTok Search Videos\",\n \"Search TikTok videos by keyword.\",\n z.object({\n keyword: str(\"Search keyword.\"),\n cursor: ostr(\"Pagination cursor.\"),\n count: onum(\"Number of videos to return.\"),\n sort_type: ostr(\"Sort order for results.\"),\n publish_time: ostr(\"Publish-time filter.\"),\n }),\n (i) => client.tiktok.searchVideos(i)\n ),\n tool(\n \"TIKTOK_SEARCH_USERS\",\n \"Scavio TikTok Search Users\",\n \"Search TikTok users by keyword.\",\n z.object({\n keyword: str(\"Search keyword.\"),\n cursor: ostr(\"Pagination cursor.\"),\n count: onum(\"Number of users to return.\"),\n }),\n (i) => client.tiktok.searchUsers(i)\n ),\n tool(\n \"TIKTOK_HASHTAG\",\n \"Scavio TikTok Hashtag\",\n \"Fetch a TikTok hashtag by name or id.\",\n z.object({\n hashtag_name: ostr(\"Hashtag name (without #). Provide this or hashtag_id.\"),\n hashtag_id: ostr(\"Hashtag id. Provide this or hashtag_name.\"),\n }),\n (i) => client.tiktok.hashtag(i)\n ),\n tool(\n \"TIKTOK_HASHTAG_VIDEOS\",\n \"Scavio TikTok Hashtag Videos\",\n \"List videos for a TikTok hashtag by id.\",\n z.object({\n hashtag_id: str(\"Hashtag id.\"),\n cursor: ostr(\"Pagination cursor.\"),\n count: onum(\"Number of videos to return.\"),\n }),\n (i) => client.tiktok.hashtagVideos(i)\n ),\n tool(\n \"TIKTOK_USER_FOLLOWERS\",\n \"Scavio TikTok User Followers\",\n \"List a TikTok user's followers by secUid.\",\n z.object({\n sec_user_id: str(\"TikTok secUid of the user.\"),\n count: onum(\"Number of followers to return.\"),\n page_token: ostr(\"Pagination token.\"),\n min_time: onum(\"Minimum timestamp filter.\"),\n }),\n (i) => client.tiktok.userFollowers(i)\n ),\n tool(\n \"TIKTOK_USER_FOLLOWINGS\",\n \"Scavio TikTok User Followings\",\n \"List the accounts a TikTok user follows, by secUid.\",\n z.object({\n sec_user_id: str(\"TikTok secUid of the user.\"),\n count: onum(\"Number of followings to return.\"),\n page_token: ostr(\"Pagination token.\"),\n min_time: onum(\"Minimum timestamp filter.\"),\n }),\n (i) => client.tiktok.userFollowings(i)\n )\n );\n }\n\n if (all || enableInstagram) {\n tools.push(\n tool(\n \"INSTAGRAM_PROFILE\",\n \"Scavio Instagram Profile\",\n \"Fetch an Instagram profile by username or user id.\",\n z.object({\n username: ostr(\"Instagram username. Provide this or user_id.\"),\n user_id: ostr(\"Instagram user id. Provide this or username.\"),\n }),\n (i) => client.instagram.profile(i)\n ),\n tool(\n \"INSTAGRAM_USER_POSTS\",\n \"Scavio Instagram User Posts\",\n \"List an Instagram user's posts.\",\n z.object({\n username: ostr(\"Instagram username. Provide this or user_id.\"),\n user_id: ostr(\"Instagram user id. Provide this or username.\"),\n count: onum(\"Number of posts to return.\"),\n cursor: ostr(\"Pagination cursor.\"),\n }),\n (i) => client.instagram.userPosts(i)\n ),\n tool(\n \"INSTAGRAM_USER_REELS\",\n \"Scavio Instagram User Reels\",\n \"List an Instagram user's reels.\",\n z.object({\n username: ostr(\"Instagram username. Provide this or user_id.\"),\n user_id: ostr(\"Instagram user id. Provide this or username.\"),\n count: onum(\"Number of reels to return.\"),\n cursor: ostr(\"Pagination cursor.\"),\n }),\n (i) => client.instagram.userReels(i)\n ),\n tool(\n \"INSTAGRAM_USER_TAGGED\",\n \"Scavio Instagram User Tagged\",\n \"List posts an Instagram user is tagged in.\",\n z.object({\n username: ostr(\"Instagram username. Provide this or user_id.\"),\n user_id: ostr(\"Instagram user id. Provide this or username.\"),\n count: onum(\"Number of tagged posts to return.\"),\n cursor: ostr(\"Pagination cursor.\"),\n }),\n (i) => client.instagram.userTagged(i)\n ),\n tool(\n \"INSTAGRAM_USER_STORIES\",\n \"Scavio Instagram User Stories\",\n \"Fetch an Instagram user's current stories.\",\n z.object({\n username: ostr(\"Instagram username. Provide this or user_id.\"),\n user_id: ostr(\"Instagram user id. Provide this or username.\"),\n }),\n (i) => client.instagram.userStories(i)\n ),\n tool(\n \"INSTAGRAM_POST\",\n \"Scavio Instagram Post\",\n \"Fetch an Instagram post by URL, media id, or shortcode.\",\n z.object({\n url: ostr(\"Post URL. Provide one of url, media_id, or shortcode.\"),\n media_id: ostr(\"Post media id. Provide one of url, media_id, or shortcode.\"),\n shortcode: ostr(\"Post shortcode. Provide one of url, media_id, or shortcode.\"),\n }),\n (i) => client.instagram.post(i)\n ),\n tool(\n \"INSTAGRAM_POST_COMMENTS\",\n \"Scavio Instagram Post Comments\",\n \"List comments on an Instagram post by shortcode or URL.\",\n z.object({\n shortcode: ostr(\"Post shortcode. Provide this or url.\"),\n url: ostr(\"Post URL. Provide this or shortcode.\"),\n cursor: ostr(\"Pagination cursor.\"),\n sort_order: ostr(\"Comment sort order.\"),\n }),\n (i) => client.instagram.postComments(i)\n ),\n tool(\n \"INSTAGRAM_COMMENT_REPLIES\",\n \"Scavio Instagram Comment Replies\",\n \"List replies to an Instagram post comment.\",\n z.object({\n media_id: str(\"Post media id.\"),\n comment_id: str(\"Parent comment id.\"),\n cursor: ostr(\"Pagination cursor.\"),\n }),\n (i) => client.instagram.commentReplies(i)\n ),\n tool(\n \"INSTAGRAM_SEARCH_USERS\",\n \"Scavio Instagram Search Users\",\n \"Search Instagram users by keyword.\",\n z.object({\n keyword: str(\"Search keyword.\"),\n cursor: ostr(\"Pagination cursor.\"),\n }),\n (i) => client.instagram.searchUsers(i)\n ),\n tool(\n \"INSTAGRAM_SEARCH_HASHTAGS\",\n \"Scavio Instagram Search Hashtags\",\n \"Search Instagram hashtags by keyword.\",\n z.object({\n keyword: str(\"Search keyword.\"),\n cursor: ostr(\"Pagination cursor.\"),\n }),\n (i) => client.instagram.searchHashtags(i)\n ),\n tool(\n \"INSTAGRAM_USER_FOLLOWERS\",\n \"Scavio Instagram User Followers\",\n \"List an Instagram user's followers.\",\n z.object({\n username: ostr(\"Instagram username. Provide this or user_id.\"),\n user_id: ostr(\"Instagram user id. Provide this or username.\"),\n count: onum(\"Number of followers to return.\"),\n cursor: ostr(\"Pagination cursor.\"),\n }),\n (i) => client.instagram.userFollowers(i)\n ),\n tool(\n \"INSTAGRAM_USER_FOLLOWINGS\",\n \"Scavio Instagram User Followings\",\n \"List the accounts an Instagram user follows.\",\n z.object({\n username: ostr(\"Instagram username. Provide this or user_id.\"),\n user_id: ostr(\"Instagram user id. Provide this or username.\"),\n count: onum(\"Number of followings to return.\"),\n cursor: ostr(\"Pagination cursor.\"),\n }),\n (i) => client.instagram.userFollowings(i)\n )\n );\n }\n\n return experimental_createToolkit(\"SCAVIO\", {\n name: \"Scavio\",\n description:\n \"Real-time structured search over Google, YouTube, Amazon, Walmart, Reddit, TikTok, and Instagram.\",\n tools,\n });\n}\n\nexport default buildScavioToolkit;\n"],"mappings":"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","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "composio-scavio",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Scavio real-time search tools for Composio (Google, YouTube, Amazon, Walmart, Reddit, TikTok, Instagram)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -51,7 +51,7 @@
51
51
  },
52
52
  "dependencies": {
53
53
  "@composio/core": "^0.13.1",
54
- "scavio": "^0.2.1",
54
+ "scavio": "^0.4.0",
55
55
  "zod": "^3.25.0"
56
56
  },
57
57
  "devDependencies": {