@mastra/tavily 1.1.0 → 1.1.1-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # @mastra/tavily
2
2
 
3
+ ## 1.1.1-alpha.0
4
+
5
+ ### Patch Changes
6
+
7
+ - Fixed Tavily request attribution to use the X-Client-Name header. ([#19607](https://github.com/mastra-ai/mastra/pull/19607))
8
+
9
+ - Updated dependencies [[`ec857fc`](https://github.com/mastra-ai/mastra/commit/ec857fc79c264b53b38e16478c789b7177f2ad59), [`e1f2fae`](https://github.com/mastra-ai/mastra/commit/e1f2faebaf048c3d4c2e2c01d293767c195d5794), [`63aa799`](https://github.com/mastra-ai/mastra/commit/63aa799c6b44eacc7806cda6846b7c5bbee06b37), [`73db8db`](https://github.com/mastra-ai/mastra/commit/73db8db90d69ab6153c7942749f624db0d96952d), [`73db8db`](https://github.com/mastra-ai/mastra/commit/73db8db90d69ab6153c7942749f624db0d96952d), [`76b7181`](https://github.com/mastra-ai/mastra/commit/76b71810366e6d90b9d3973149d1c7ba3659ffb9), [`0c0e8d7`](https://github.com/mastra-ai/mastra/commit/0c0e8d7becd4d1445c656b78d5d845f606c1ff9d), [`9f7c67a`](https://github.com/mastra-ai/mastra/commit/9f7c67abeeb52c41c51a9b5edee60b62afe7cd8d), [`3b65e68`](https://github.com/mastra-ai/mastra/commit/3b65e68d7f1c771c7a70eea42d83fefdd28cad88), [`e3868e2`](https://github.com/mastra-ai/mastra/commit/e3868e22babfffd0133771669ca724501c2dd58e)]:
10
+ - @mastra/core@1.52.0-alpha.5
11
+
3
12
  ## 1.1.0
4
13
 
5
14
  ### Minor Changes
package/README.md CHANGED
@@ -22,9 +22,10 @@ const tools = createTavilyTools();
22
22
 
23
23
  const agent = new Agent({
24
24
  id: 'realtime-information-agent',
25
- name: "Realtime Information Agent",
26
- instructions: "You are a realtime information agent that can search the web for the latest information and provide it to the user.",
27
- model: "anthropic/claude-sonnet-4-6",
25
+ name: 'Realtime Information Agent',
26
+ instructions:
27
+ 'You are a realtime information agent that can search the web for the latest information and provide it to the user.',
28
+ model: 'anthropic/claude-sonnet-4-6',
28
29
  tools,
29
30
  });
30
31
  ```
@@ -97,11 +98,11 @@ const mapTool = createTavilyMapTool();
97
98
 
98
99
  ## Configuration
99
100
 
100
- | Option | Type | Default | Description |
101
- |--------|------|---------|-------------|
101
+ | Option | Type | Default | Description |
102
+ | -------- | -------- | ---------------------------- | ------------------- |
102
103
  | `apiKey` | `string` | `process.env.TAVILY_API_KEY` | Your Tavily API key |
103
104
 
104
- All tools accept `TavilyClientOptions` from `@tavily/core` (includes `apiKey`, `proxies`, `apiBaseURL`, `clientSource`, `projectId`). If no API key is found, the tool throws a clear error at execution time. `clientSource` defaults to `'mastra'`.
105
+ All tools accept `TavilyClientOptions` from `@tavily/core` (includes `apiKey`, `proxies`, `apiBaseURL`, `clientName`, `projectId`). If no API key is found, the tool throws a clear error at execution time. `clientName` defaults to `'mastra'` and is sent in the `X-Client-Name` header.
105
106
 
106
107
  ## RAG Pairing Example
107
108
 
@@ -113,8 +114,8 @@ import { createTavilySearchTool, createTavilyExtractTool } from '@mastra/tavily'
113
114
 
114
115
  const agent = new Agent({
115
116
  id: 'rag-agent',
116
- name: "Research Assistant",
117
- model: "anthropic/claude-sonnet-4-6",
117
+ name: 'Research Assistant',
118
+ model: 'anthropic/claude-sonnet-4-6',
118
119
  instructions: `You are a research assistant. Use tavily-search to find relevant pages, then use tavily-extract to get full content from the best results.`,
119
120
  tools: {
120
121
  search: createTavilySearchTool(),
package/dist/index.cjs CHANGED
@@ -10,7 +10,7 @@ function getTavilyClient(config) {
10
10
  if (!apiKey) {
11
11
  throw new Error("Tavily API key is required. Pass { apiKey } or set TAVILY_API_KEY env var.");
12
12
  }
13
- return core.tavily({ ...config, apiKey, clientSource: config?.clientSource ?? "mastra" });
13
+ return core.tavily({ ...config, apiKey, clientName: config?.clientName ?? "mastra" });
14
14
  }
15
15
  var inputSchema = zod.z.object({
16
16
  query: zod.z.string().describe("The search query"),
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/client.ts","../src/search.ts","../src/extract.ts","../src/crawl.ts","../src/map.ts","../src/tools.ts"],"names":["tavily","z","createTool","inputSchema","outputSchema"],"mappings":"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","file":"index.cjs","sourcesContent":["import { tavily } from '@tavily/core';\nimport type { TavilyClientOptions } from '@tavily/core';\n\nexport type { TavilyClientOptions };\n\nexport type TavilyClient = ReturnType<typeof tavily>;\n\nexport function getTavilyClient(config?: TavilyClientOptions): TavilyClient {\n const apiKey = config?.apiKey ?? process.env.TAVILY_API_KEY;\n if (!apiKey) {\n throw new Error('Tavily API key is required. Pass { apiKey } or set TAVILY_API_KEY env var.');\n }\n // defaulting `clientSource` to `mastra` if not provided\n return tavily({ ...config, apiKey, clientSource: config?.clientSource ?? 'mastra' });\n}\n","import { createTool } from '@mastra/core/tools';\nimport { z } from 'zod';\n\nimport { getTavilyClient } from './client.js';\nimport type { TavilyClient, TavilyClientOptions } from './client.js';\n\nconst inputSchema = z.object({\n query: z.string().describe('The search query'),\n searchDepth: z\n .enum(['basic', 'advanced', 'fast', 'ultra-fast'])\n .optional()\n .describe(\"Search depth — 'basic' for standard, 'advanced' for thorough, 'fast'/'ultra-fast' for low latency\"),\n maxResults: z.number().min(1).max(20).optional().describe('Maximum number of results to return (1-20)'),\n includeAnswer: z\n .union([z.boolean(), z.enum(['basic', 'advanced'])])\n .optional()\n .describe('Include an AI-generated answer summary. Pass true, \"basic\", or \"advanced\"'),\n includeImages: z.boolean().optional().describe('Include query-related images in the response'),\n includeImageDescriptions: z.boolean().optional().describe('Include descriptions for returned images'),\n includeRawContent: z\n .union([z.literal(false), z.enum(['markdown', 'text'])])\n .optional()\n .describe('Include cleaned HTML content of each result. Pass false to disable, or \"markdown\"/\"text\" for format'),\n includeDomains: z.array(z.string()).optional().describe('Restrict results to these domains'),\n excludeDomains: z.array(z.string()).optional().describe('Exclude results from these domains'),\n timeRange: z\n .enum(['day', 'week', 'month', 'year'])\n .optional()\n .describe('Time range to filter results by recency'),\n});\n\nconst outputSchema = z.object({\n query: z.string(),\n answer: z.string().optional(),\n images: z\n .array(\n z.object({\n url: z.string(),\n description: z.string().optional(),\n }),\n )\n .optional(),\n results: z.array(\n z.object({\n title: z.string(),\n url: z.string(),\n content: z.string(),\n score: z.number(),\n rawContent: z.string().optional(),\n }),\n ),\n responseTime: z.number(),\n});\n\nexport function createTavilySearchTool(config?: TavilyClientOptions) {\n let client: TavilyClient | null = null;\n\n function getClient(): TavilyClient {\n if (!client) {\n client = getTavilyClient(config);\n }\n return client;\n }\n\n return createTool({\n id: 'tavily-search',\n description:\n 'Search the web using Tavily. Returns relevant results with content snippets, optional AI-generated answers, and images. Supports filtering by domain, time range, and search depth.',\n inputSchema,\n outputSchema,\n execute: async input => {\n const tavilyClient = getClient();\n\n const response = await tavilyClient.search(input.query, {\n searchDepth: input.searchDepth,\n maxResults: input.maxResults,\n includeAnswer: input.includeAnswer,\n includeImages: input.includeImages,\n includeImageDescriptions: input.includeImageDescriptions,\n includeRawContent: input.includeRawContent,\n includeDomains: input.includeDomains,\n excludeDomains: input.excludeDomains,\n timeRange: input.timeRange,\n });\n\n return {\n query: response.query,\n answer: response.answer || undefined,\n images: response.images?.map((img: any) => ({\n url: typeof img === 'string' ? img : img.url,\n description: typeof img === 'string' ? undefined : img.description,\n })),\n results: (response.results ?? []).map((r: any) => ({\n title: r.title,\n url: r.url,\n content: r.content,\n score: r.score ?? 0,\n rawContent: r.rawContent || undefined,\n })),\n responseTime: response.responseTime,\n };\n },\n });\n}\n","import { createTool } from '@mastra/core/tools';\nimport { z } from 'zod';\n\nimport { getTavilyClient } from './client.js';\nimport type { TavilyClient, TavilyClientOptions } from './client.js';\n\nconst inputSchema = z.object({\n urls: z.array(z.string()).min(1).max(20).describe('URLs to extract content from (1-20)'),\n extractDepth: z\n .enum(['basic', 'advanced'])\n .optional()\n .describe(\"Extraction depth — 'advanced' retrieves more data including tables and embedded content\"),\n query: z.string().optional().describe('User intent for reranking extracted content chunks. When provided, chunks are reranked based on relevance to this query.'),\n includeImages: z.boolean().optional().describe('Include images extracted from the pages'),\n format: z\n .enum(['markdown', 'text'])\n .optional()\n .describe(\"Output format for extracted content — 'markdown' (default) or 'text'\"),\n});\n\nconst outputSchema = z.object({\n results: z.array(\n z.object({\n url: z.string(),\n rawContent: z.string(),\n images: z.array(z.string()).optional(),\n }),\n ),\n failedResults: z.array(\n z.object({\n url: z.string(),\n error: z.string(),\n }),\n ),\n responseTime: z.number(),\n});\n\nexport function createTavilyExtractTool(config?: TavilyClientOptions) {\n let client: TavilyClient | null = null;\n\n function getClient(): TavilyClient {\n if (!client) {\n client = getTavilyClient(config);\n }\n return client;\n }\n\n return createTool({\n id: 'tavily-extract',\n description:\n 'Extract content from one or more URLs using Tavily. Returns raw page content in markdown or text format. Supports up to 20 URLs per request with basic or advanced extraction depth.',\n inputSchema,\n outputSchema,\n execute: async input => {\n const tavilyClient = getClient();\n\n const response = await tavilyClient.extract(input.urls, {\n extractDepth: input.extractDepth,\n query: input.query,\n includeImages: input.includeImages,\n format: input.format,\n });\n\n return {\n results: ((response.results || []) as any[]).map(r => ({\n url: r.url,\n rawContent: r.rawContent,\n images: r.images || undefined,\n })),\n failedResults: ((response.failedResults || []) as any[]).map(r => ({\n url: r.url,\n error: r.error,\n })),\n responseTime: response.responseTime,\n };\n },\n });\n}\n","import { createTool } from '@mastra/core/tools';\nimport { z } from 'zod';\n\nimport { getTavilyClient } from './client.js';\nimport type { TavilyClient, TavilyClientOptions } from './client.js';\n\nconst inputSchema = z.object({\n url: z.string().describe('The root URL to begin the crawl'),\n maxDepth: z.number().optional().describe('Max depth of the crawl from the base URL'),\n maxBreadth: z.number().optional().describe('Max number of links to follow per page'),\n limit: z.number().optional().describe('Total number of pages the crawler will process before stopping'),\n instructions: z.string().optional().describe('Natural language instructions for the crawler'),\n selectPaths: z.array(z.string()).optional().describe('Regex patterns to select specific URL paths'),\n selectDomains: z.array(z.string()).optional().describe('Regex patterns to restrict to specific domains'),\n excludePaths: z.array(z.string()).optional().describe('Regex patterns to exclude specific URL paths'),\n excludeDomains: z.array(z.string()).optional().describe('Regex patterns to exclude specific domains'),\n allowExternal: z.boolean().optional().describe('Whether to follow links to external domains'),\n extractDepth: z\n .enum(['basic', 'advanced'])\n .optional()\n .describe(\"Extraction depth — 'advanced' retrieves more data including tables and embedded content\"),\n includeImages: z.boolean().optional().describe('Include images from crawled pages'),\n format: z\n .enum(['markdown', 'text'])\n .optional()\n .describe(\"Output format for extracted content — 'markdown' (default) or 'text'\"),\n});\n\nconst outputSchema = z.object({\n baseUrl: z.string(),\n results: z.array(\n z.object({\n url: z.string(),\n rawContent: z.string(),\n images: z.array(z.string()).optional(),\n }),\n ),\n responseTime: z.number(),\n});\n\nexport function createTavilyCrawlTool(config?: TavilyClientOptions) {\n let client: TavilyClient | null = null;\n\n function getClient(): TavilyClient {\n if (!client) {\n client = getTavilyClient(config);\n }\n return client;\n }\n\n return createTool({\n id: 'tavily-crawl',\n description:\n 'Crawl a website starting from a URL using Tavily. Extracts content from discovered pages with configurable depth, breadth, and domain constraints. Returns structured content from each crawled page.',\n inputSchema,\n outputSchema,\n execute: async input => {\n const tavilyClient = getClient();\n\n const response = await tavilyClient.crawl(input.url, {\n maxDepth: input.maxDepth,\n maxBreadth: input.maxBreadth,\n limit: input.limit,\n instructions: input.instructions,\n selectPaths: input.selectPaths,\n selectDomains: input.selectDomains,\n excludePaths: input.excludePaths,\n excludeDomains: input.excludeDomains,\n allowExternal: input.allowExternal,\n extractDepth: input.extractDepth,\n includeImages: input.includeImages,\n format: input.format,\n });\n\n return {\n baseUrl: response.baseUrl,\n results: ((response.results || []) as any[]).map(r => ({\n url: r.url,\n rawContent: r.rawContent,\n images: r.images || undefined,\n })),\n responseTime: response.responseTime,\n };\n },\n });\n}\n","import { createTool } from '@mastra/core/tools';\nimport { z } from 'zod';\n\nimport { getTavilyClient } from './client.js';\nimport type { TavilyClient, TavilyClientOptions } from './client.js';\n\nconst inputSchema = z.object({\n url: z.string().describe('The root URL to begin mapping'),\n maxDepth: z.number().optional().describe('Max depth of the mapping from the base URL'),\n maxBreadth: z.number().optional().describe('Max number of links to follow per page'),\n limit: z.number().optional().describe('Total number of links the mapper will process before stopping'),\n instructions: z.string().optional().describe('Natural language instructions for the mapper'),\n selectPaths: z.array(z.string()).optional().describe('Regex patterns to select specific URL paths'),\n selectDomains: z.array(z.string()).optional().describe('Regex patterns to restrict to specific domains'),\n excludePaths: z.array(z.string()).optional().describe('Regex patterns to exclude specific URL paths'),\n excludeDomains: z.array(z.string()).optional().describe('Regex patterns to exclude specific domains'),\n allowExternal: z.boolean().optional().describe('Whether to include external domain links'),\n});\n\nconst outputSchema = z.object({\n baseUrl: z.string(),\n results: z.array(z.string()).describe('Discovered URLs'),\n responseTime: z.number(),\n});\n\nexport function createTavilyMapTool(config?: TavilyClientOptions) {\n let client: TavilyClient | null = null;\n\n function getClient(): TavilyClient {\n if (!client) {\n client = getTavilyClient(config);\n }\n return client;\n }\n\n return createTool({\n id: 'tavily-map',\n description:\n \"Map a website's structure starting from a URL using Tavily. Discovers and returns a list of URLs found on the site without extracting page content. Useful for understanding site structure before targeted extraction.\",\n inputSchema,\n outputSchema,\n execute: async input => {\n const tavilyClient = getClient();\n\n const response = await tavilyClient.map(input.url, {\n maxDepth: input.maxDepth,\n maxBreadth: input.maxBreadth,\n limit: input.limit,\n instructions: input.instructions,\n selectPaths: input.selectPaths,\n selectDomains: input.selectDomains,\n excludePaths: input.excludePaths,\n excludeDomains: input.excludeDomains,\n allowExternal: input.allowExternal,\n });\n\n return {\n baseUrl: response.baseUrl,\n results: response.results || [],\n responseTime: response.responseTime,\n };\n },\n });\n}\n","import type { TavilyClientOptions } from './client.js';\nimport { createTavilyCrawlTool } from './crawl.js';\nimport { createTavilyExtractTool } from './extract.js';\nimport { createTavilyMapTool } from './map.js';\nimport { createTavilySearchTool } from './search.js';\n\nexport function createTavilyTools(config?: TavilyClientOptions) {\n return {\n tavilySearch: createTavilySearchTool(config),\n tavilyExtract: createTavilyExtractTool(config),\n tavilyCrawl: createTavilyCrawlTool(config),\n tavilyMap: createTavilyMapTool(config),\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/client.ts","../src/search.ts","../src/extract.ts","../src/crawl.ts","../src/map.ts","../src/tools.ts"],"names":["tavily","z","createTool","inputSchema","outputSchema"],"mappings":"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","file":"index.cjs","sourcesContent":["import { tavily } from '@tavily/core';\nimport type { TavilyClientOptions } from '@tavily/core';\n\nexport type { TavilyClientOptions };\n\nexport type TavilyClient = ReturnType<typeof tavily>;\n\nexport function getTavilyClient(config?: TavilyClientOptions): TavilyClient {\n const apiKey = config?.apiKey ?? process.env.TAVILY_API_KEY;\n if (!apiKey) {\n throw new Error('Tavily API key is required. Pass { apiKey } or set TAVILY_API_KEY env var.');\n }\n // defaulting `clientName` to `mastra` if not provided\n return tavily({ ...config, apiKey, clientName: config?.clientName ?? 'mastra' });\n}\n","import { createTool } from '@mastra/core/tools';\nimport { z } from 'zod';\n\nimport { getTavilyClient } from './client.js';\nimport type { TavilyClient, TavilyClientOptions } from './client.js';\n\nconst inputSchema = z.object({\n query: z.string().describe('The search query'),\n searchDepth: z\n .enum(['basic', 'advanced', 'fast', 'ultra-fast'])\n .optional()\n .describe(\"Search depth — 'basic' for standard, 'advanced' for thorough, 'fast'/'ultra-fast' for low latency\"),\n maxResults: z.number().min(1).max(20).optional().describe('Maximum number of results to return (1-20)'),\n includeAnswer: z\n .union([z.boolean(), z.enum(['basic', 'advanced'])])\n .optional()\n .describe('Include an AI-generated answer summary. Pass true, \"basic\", or \"advanced\"'),\n includeImages: z.boolean().optional().describe('Include query-related images in the response'),\n includeImageDescriptions: z.boolean().optional().describe('Include descriptions for returned images'),\n includeRawContent: z\n .union([z.literal(false), z.enum(['markdown', 'text'])])\n .optional()\n .describe('Include cleaned HTML content of each result. Pass false to disable, or \"markdown\"/\"text\" for format'),\n includeDomains: z.array(z.string()).optional().describe('Restrict results to these domains'),\n excludeDomains: z.array(z.string()).optional().describe('Exclude results from these domains'),\n timeRange: z\n .enum(['day', 'week', 'month', 'year'])\n .optional()\n .describe('Time range to filter results by recency'),\n});\n\nconst outputSchema = z.object({\n query: z.string(),\n answer: z.string().optional(),\n images: z\n .array(\n z.object({\n url: z.string(),\n description: z.string().optional(),\n }),\n )\n .optional(),\n results: z.array(\n z.object({\n title: z.string(),\n url: z.string(),\n content: z.string(),\n score: z.number(),\n rawContent: z.string().optional(),\n }),\n ),\n responseTime: z.number(),\n});\n\nexport function createTavilySearchTool(config?: TavilyClientOptions) {\n let client: TavilyClient | null = null;\n\n function getClient(): TavilyClient {\n if (!client) {\n client = getTavilyClient(config);\n }\n return client;\n }\n\n return createTool({\n id: 'tavily-search',\n description:\n 'Search the web using Tavily. Returns relevant results with content snippets, optional AI-generated answers, and images. Supports filtering by domain, time range, and search depth.',\n inputSchema,\n outputSchema,\n execute: async input => {\n const tavilyClient = getClient();\n\n const response = await tavilyClient.search(input.query, {\n searchDepth: input.searchDepth,\n maxResults: input.maxResults,\n includeAnswer: input.includeAnswer,\n includeImages: input.includeImages,\n includeImageDescriptions: input.includeImageDescriptions,\n includeRawContent: input.includeRawContent,\n includeDomains: input.includeDomains,\n excludeDomains: input.excludeDomains,\n timeRange: input.timeRange,\n });\n\n return {\n query: response.query,\n answer: response.answer || undefined,\n images: response.images?.map((img: any) => ({\n url: typeof img === 'string' ? img : img.url,\n description: typeof img === 'string' ? undefined : img.description,\n })),\n results: (response.results ?? []).map((r: any) => ({\n title: r.title,\n url: r.url,\n content: r.content,\n score: r.score ?? 0,\n rawContent: r.rawContent || undefined,\n })),\n responseTime: response.responseTime,\n };\n },\n });\n}\n","import { createTool } from '@mastra/core/tools';\nimport { z } from 'zod';\n\nimport { getTavilyClient } from './client.js';\nimport type { TavilyClient, TavilyClientOptions } from './client.js';\n\nconst inputSchema = z.object({\n urls: z.array(z.string()).min(1).max(20).describe('URLs to extract content from (1-20)'),\n extractDepth: z\n .enum(['basic', 'advanced'])\n .optional()\n .describe(\"Extraction depth — 'advanced' retrieves more data including tables and embedded content\"),\n query: z.string().optional().describe('User intent for reranking extracted content chunks. When provided, chunks are reranked based on relevance to this query.'),\n includeImages: z.boolean().optional().describe('Include images extracted from the pages'),\n format: z\n .enum(['markdown', 'text'])\n .optional()\n .describe(\"Output format for extracted content — 'markdown' (default) or 'text'\"),\n});\n\nconst outputSchema = z.object({\n results: z.array(\n z.object({\n url: z.string(),\n rawContent: z.string(),\n images: z.array(z.string()).optional(),\n }),\n ),\n failedResults: z.array(\n z.object({\n url: z.string(),\n error: z.string(),\n }),\n ),\n responseTime: z.number(),\n});\n\nexport function createTavilyExtractTool(config?: TavilyClientOptions) {\n let client: TavilyClient | null = null;\n\n function getClient(): TavilyClient {\n if (!client) {\n client = getTavilyClient(config);\n }\n return client;\n }\n\n return createTool({\n id: 'tavily-extract',\n description:\n 'Extract content from one or more URLs using Tavily. Returns raw page content in markdown or text format. Supports up to 20 URLs per request with basic or advanced extraction depth.',\n inputSchema,\n outputSchema,\n execute: async input => {\n const tavilyClient = getClient();\n\n const response = await tavilyClient.extract(input.urls, {\n extractDepth: input.extractDepth,\n query: input.query,\n includeImages: input.includeImages,\n format: input.format,\n });\n\n return {\n results: ((response.results || []) as any[]).map(r => ({\n url: r.url,\n rawContent: r.rawContent,\n images: r.images || undefined,\n })),\n failedResults: ((response.failedResults || []) as any[]).map(r => ({\n url: r.url,\n error: r.error,\n })),\n responseTime: response.responseTime,\n };\n },\n });\n}\n","import { createTool } from '@mastra/core/tools';\nimport { z } from 'zod';\n\nimport { getTavilyClient } from './client.js';\nimport type { TavilyClient, TavilyClientOptions } from './client.js';\n\nconst inputSchema = z.object({\n url: z.string().describe('The root URL to begin the crawl'),\n maxDepth: z.number().optional().describe('Max depth of the crawl from the base URL'),\n maxBreadth: z.number().optional().describe('Max number of links to follow per page'),\n limit: z.number().optional().describe('Total number of pages the crawler will process before stopping'),\n instructions: z.string().optional().describe('Natural language instructions for the crawler'),\n selectPaths: z.array(z.string()).optional().describe('Regex patterns to select specific URL paths'),\n selectDomains: z.array(z.string()).optional().describe('Regex patterns to restrict to specific domains'),\n excludePaths: z.array(z.string()).optional().describe('Regex patterns to exclude specific URL paths'),\n excludeDomains: z.array(z.string()).optional().describe('Regex patterns to exclude specific domains'),\n allowExternal: z.boolean().optional().describe('Whether to follow links to external domains'),\n extractDepth: z\n .enum(['basic', 'advanced'])\n .optional()\n .describe(\"Extraction depth — 'advanced' retrieves more data including tables and embedded content\"),\n includeImages: z.boolean().optional().describe('Include images from crawled pages'),\n format: z\n .enum(['markdown', 'text'])\n .optional()\n .describe(\"Output format for extracted content — 'markdown' (default) or 'text'\"),\n});\n\nconst outputSchema = z.object({\n baseUrl: z.string(),\n results: z.array(\n z.object({\n url: z.string(),\n rawContent: z.string(),\n images: z.array(z.string()).optional(),\n }),\n ),\n responseTime: z.number(),\n});\n\nexport function createTavilyCrawlTool(config?: TavilyClientOptions) {\n let client: TavilyClient | null = null;\n\n function getClient(): TavilyClient {\n if (!client) {\n client = getTavilyClient(config);\n }\n return client;\n }\n\n return createTool({\n id: 'tavily-crawl',\n description:\n 'Crawl a website starting from a URL using Tavily. Extracts content from discovered pages with configurable depth, breadth, and domain constraints. Returns structured content from each crawled page.',\n inputSchema,\n outputSchema,\n execute: async input => {\n const tavilyClient = getClient();\n\n const response = await tavilyClient.crawl(input.url, {\n maxDepth: input.maxDepth,\n maxBreadth: input.maxBreadth,\n limit: input.limit,\n instructions: input.instructions,\n selectPaths: input.selectPaths,\n selectDomains: input.selectDomains,\n excludePaths: input.excludePaths,\n excludeDomains: input.excludeDomains,\n allowExternal: input.allowExternal,\n extractDepth: input.extractDepth,\n includeImages: input.includeImages,\n format: input.format,\n });\n\n return {\n baseUrl: response.baseUrl,\n results: ((response.results || []) as any[]).map(r => ({\n url: r.url,\n rawContent: r.rawContent,\n images: r.images || undefined,\n })),\n responseTime: response.responseTime,\n };\n },\n });\n}\n","import { createTool } from '@mastra/core/tools';\nimport { z } from 'zod';\n\nimport { getTavilyClient } from './client.js';\nimport type { TavilyClient, TavilyClientOptions } from './client.js';\n\nconst inputSchema = z.object({\n url: z.string().describe('The root URL to begin mapping'),\n maxDepth: z.number().optional().describe('Max depth of the mapping from the base URL'),\n maxBreadth: z.number().optional().describe('Max number of links to follow per page'),\n limit: z.number().optional().describe('Total number of links the mapper will process before stopping'),\n instructions: z.string().optional().describe('Natural language instructions for the mapper'),\n selectPaths: z.array(z.string()).optional().describe('Regex patterns to select specific URL paths'),\n selectDomains: z.array(z.string()).optional().describe('Regex patterns to restrict to specific domains'),\n excludePaths: z.array(z.string()).optional().describe('Regex patterns to exclude specific URL paths'),\n excludeDomains: z.array(z.string()).optional().describe('Regex patterns to exclude specific domains'),\n allowExternal: z.boolean().optional().describe('Whether to include external domain links'),\n});\n\nconst outputSchema = z.object({\n baseUrl: z.string(),\n results: z.array(z.string()).describe('Discovered URLs'),\n responseTime: z.number(),\n});\n\nexport function createTavilyMapTool(config?: TavilyClientOptions) {\n let client: TavilyClient | null = null;\n\n function getClient(): TavilyClient {\n if (!client) {\n client = getTavilyClient(config);\n }\n return client;\n }\n\n return createTool({\n id: 'tavily-map',\n description:\n \"Map a website's structure starting from a URL using Tavily. Discovers and returns a list of URLs found on the site without extracting page content. Useful for understanding site structure before targeted extraction.\",\n inputSchema,\n outputSchema,\n execute: async input => {\n const tavilyClient = getClient();\n\n const response = await tavilyClient.map(input.url, {\n maxDepth: input.maxDepth,\n maxBreadth: input.maxBreadth,\n limit: input.limit,\n instructions: input.instructions,\n selectPaths: input.selectPaths,\n selectDomains: input.selectDomains,\n excludePaths: input.excludePaths,\n excludeDomains: input.excludeDomains,\n allowExternal: input.allowExternal,\n });\n\n return {\n baseUrl: response.baseUrl,\n results: response.results || [],\n responseTime: response.responseTime,\n };\n },\n });\n}\n","import type { TavilyClientOptions } from './client.js';\nimport { createTavilyCrawlTool } from './crawl.js';\nimport { createTavilyExtractTool } from './extract.js';\nimport { createTavilyMapTool } from './map.js';\nimport { createTavilySearchTool } from './search.js';\n\nexport function createTavilyTools(config?: TavilyClientOptions) {\n return {\n tavilySearch: createTavilySearchTool(config),\n tavilyExtract: createTavilyExtractTool(config),\n tavilyCrawl: createTavilyCrawlTool(config),\n tavilyMap: createTavilyMapTool(config),\n };\n}\n"]}
package/dist/index.js CHANGED
@@ -8,7 +8,7 @@ function getTavilyClient(config) {
8
8
  if (!apiKey) {
9
9
  throw new Error("Tavily API key is required. Pass { apiKey } or set TAVILY_API_KEY env var.");
10
10
  }
11
- return tavily({ ...config, apiKey, clientSource: config?.clientSource ?? "mastra" });
11
+ return tavily({ ...config, apiKey, clientName: config?.clientName ?? "mastra" });
12
12
  }
13
13
  var inputSchema = z.object({
14
14
  query: z.string().describe("The search query"),
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/client.ts","../src/search.ts","../src/extract.ts","../src/crawl.ts","../src/map.ts","../src/tools.ts"],"names":["inputSchema","z","outputSchema","createTool"],"mappings":"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","file":"index.js","sourcesContent":["import { tavily } from '@tavily/core';\nimport type { TavilyClientOptions } from '@tavily/core';\n\nexport type { TavilyClientOptions };\n\nexport type TavilyClient = ReturnType<typeof tavily>;\n\nexport function getTavilyClient(config?: TavilyClientOptions): TavilyClient {\n const apiKey = config?.apiKey ?? process.env.TAVILY_API_KEY;\n if (!apiKey) {\n throw new Error('Tavily API key is required. Pass { apiKey } or set TAVILY_API_KEY env var.');\n }\n // defaulting `clientSource` to `mastra` if not provided\n return tavily({ ...config, apiKey, clientSource: config?.clientSource ?? 'mastra' });\n}\n","import { createTool } from '@mastra/core/tools';\nimport { z } from 'zod';\n\nimport { getTavilyClient } from './client.js';\nimport type { TavilyClient, TavilyClientOptions } from './client.js';\n\nconst inputSchema = z.object({\n query: z.string().describe('The search query'),\n searchDepth: z\n .enum(['basic', 'advanced', 'fast', 'ultra-fast'])\n .optional()\n .describe(\"Search depth — 'basic' for standard, 'advanced' for thorough, 'fast'/'ultra-fast' for low latency\"),\n maxResults: z.number().min(1).max(20).optional().describe('Maximum number of results to return (1-20)'),\n includeAnswer: z\n .union([z.boolean(), z.enum(['basic', 'advanced'])])\n .optional()\n .describe('Include an AI-generated answer summary. Pass true, \"basic\", or \"advanced\"'),\n includeImages: z.boolean().optional().describe('Include query-related images in the response'),\n includeImageDescriptions: z.boolean().optional().describe('Include descriptions for returned images'),\n includeRawContent: z\n .union([z.literal(false), z.enum(['markdown', 'text'])])\n .optional()\n .describe('Include cleaned HTML content of each result. Pass false to disable, or \"markdown\"/\"text\" for format'),\n includeDomains: z.array(z.string()).optional().describe('Restrict results to these domains'),\n excludeDomains: z.array(z.string()).optional().describe('Exclude results from these domains'),\n timeRange: z\n .enum(['day', 'week', 'month', 'year'])\n .optional()\n .describe('Time range to filter results by recency'),\n});\n\nconst outputSchema = z.object({\n query: z.string(),\n answer: z.string().optional(),\n images: z\n .array(\n z.object({\n url: z.string(),\n description: z.string().optional(),\n }),\n )\n .optional(),\n results: z.array(\n z.object({\n title: z.string(),\n url: z.string(),\n content: z.string(),\n score: z.number(),\n rawContent: z.string().optional(),\n }),\n ),\n responseTime: z.number(),\n});\n\nexport function createTavilySearchTool(config?: TavilyClientOptions) {\n let client: TavilyClient | null = null;\n\n function getClient(): TavilyClient {\n if (!client) {\n client = getTavilyClient(config);\n }\n return client;\n }\n\n return createTool({\n id: 'tavily-search',\n description:\n 'Search the web using Tavily. Returns relevant results with content snippets, optional AI-generated answers, and images. Supports filtering by domain, time range, and search depth.',\n inputSchema,\n outputSchema,\n execute: async input => {\n const tavilyClient = getClient();\n\n const response = await tavilyClient.search(input.query, {\n searchDepth: input.searchDepth,\n maxResults: input.maxResults,\n includeAnswer: input.includeAnswer,\n includeImages: input.includeImages,\n includeImageDescriptions: input.includeImageDescriptions,\n includeRawContent: input.includeRawContent,\n includeDomains: input.includeDomains,\n excludeDomains: input.excludeDomains,\n timeRange: input.timeRange,\n });\n\n return {\n query: response.query,\n answer: response.answer || undefined,\n images: response.images?.map((img: any) => ({\n url: typeof img === 'string' ? img : img.url,\n description: typeof img === 'string' ? undefined : img.description,\n })),\n results: (response.results ?? []).map((r: any) => ({\n title: r.title,\n url: r.url,\n content: r.content,\n score: r.score ?? 0,\n rawContent: r.rawContent || undefined,\n })),\n responseTime: response.responseTime,\n };\n },\n });\n}\n","import { createTool } from '@mastra/core/tools';\nimport { z } from 'zod';\n\nimport { getTavilyClient } from './client.js';\nimport type { TavilyClient, TavilyClientOptions } from './client.js';\n\nconst inputSchema = z.object({\n urls: z.array(z.string()).min(1).max(20).describe('URLs to extract content from (1-20)'),\n extractDepth: z\n .enum(['basic', 'advanced'])\n .optional()\n .describe(\"Extraction depth — 'advanced' retrieves more data including tables and embedded content\"),\n query: z.string().optional().describe('User intent for reranking extracted content chunks. When provided, chunks are reranked based on relevance to this query.'),\n includeImages: z.boolean().optional().describe('Include images extracted from the pages'),\n format: z\n .enum(['markdown', 'text'])\n .optional()\n .describe(\"Output format for extracted content — 'markdown' (default) or 'text'\"),\n});\n\nconst outputSchema = z.object({\n results: z.array(\n z.object({\n url: z.string(),\n rawContent: z.string(),\n images: z.array(z.string()).optional(),\n }),\n ),\n failedResults: z.array(\n z.object({\n url: z.string(),\n error: z.string(),\n }),\n ),\n responseTime: z.number(),\n});\n\nexport function createTavilyExtractTool(config?: TavilyClientOptions) {\n let client: TavilyClient | null = null;\n\n function getClient(): TavilyClient {\n if (!client) {\n client = getTavilyClient(config);\n }\n return client;\n }\n\n return createTool({\n id: 'tavily-extract',\n description:\n 'Extract content from one or more URLs using Tavily. Returns raw page content in markdown or text format. Supports up to 20 URLs per request with basic or advanced extraction depth.',\n inputSchema,\n outputSchema,\n execute: async input => {\n const tavilyClient = getClient();\n\n const response = await tavilyClient.extract(input.urls, {\n extractDepth: input.extractDepth,\n query: input.query,\n includeImages: input.includeImages,\n format: input.format,\n });\n\n return {\n results: ((response.results || []) as any[]).map(r => ({\n url: r.url,\n rawContent: r.rawContent,\n images: r.images || undefined,\n })),\n failedResults: ((response.failedResults || []) as any[]).map(r => ({\n url: r.url,\n error: r.error,\n })),\n responseTime: response.responseTime,\n };\n },\n });\n}\n","import { createTool } from '@mastra/core/tools';\nimport { z } from 'zod';\n\nimport { getTavilyClient } from './client.js';\nimport type { TavilyClient, TavilyClientOptions } from './client.js';\n\nconst inputSchema = z.object({\n url: z.string().describe('The root URL to begin the crawl'),\n maxDepth: z.number().optional().describe('Max depth of the crawl from the base URL'),\n maxBreadth: z.number().optional().describe('Max number of links to follow per page'),\n limit: z.number().optional().describe('Total number of pages the crawler will process before stopping'),\n instructions: z.string().optional().describe('Natural language instructions for the crawler'),\n selectPaths: z.array(z.string()).optional().describe('Regex patterns to select specific URL paths'),\n selectDomains: z.array(z.string()).optional().describe('Regex patterns to restrict to specific domains'),\n excludePaths: z.array(z.string()).optional().describe('Regex patterns to exclude specific URL paths'),\n excludeDomains: z.array(z.string()).optional().describe('Regex patterns to exclude specific domains'),\n allowExternal: z.boolean().optional().describe('Whether to follow links to external domains'),\n extractDepth: z\n .enum(['basic', 'advanced'])\n .optional()\n .describe(\"Extraction depth — 'advanced' retrieves more data including tables and embedded content\"),\n includeImages: z.boolean().optional().describe('Include images from crawled pages'),\n format: z\n .enum(['markdown', 'text'])\n .optional()\n .describe(\"Output format for extracted content — 'markdown' (default) or 'text'\"),\n});\n\nconst outputSchema = z.object({\n baseUrl: z.string(),\n results: z.array(\n z.object({\n url: z.string(),\n rawContent: z.string(),\n images: z.array(z.string()).optional(),\n }),\n ),\n responseTime: z.number(),\n});\n\nexport function createTavilyCrawlTool(config?: TavilyClientOptions) {\n let client: TavilyClient | null = null;\n\n function getClient(): TavilyClient {\n if (!client) {\n client = getTavilyClient(config);\n }\n return client;\n }\n\n return createTool({\n id: 'tavily-crawl',\n description:\n 'Crawl a website starting from a URL using Tavily. Extracts content from discovered pages with configurable depth, breadth, and domain constraints. Returns structured content from each crawled page.',\n inputSchema,\n outputSchema,\n execute: async input => {\n const tavilyClient = getClient();\n\n const response = await tavilyClient.crawl(input.url, {\n maxDepth: input.maxDepth,\n maxBreadth: input.maxBreadth,\n limit: input.limit,\n instructions: input.instructions,\n selectPaths: input.selectPaths,\n selectDomains: input.selectDomains,\n excludePaths: input.excludePaths,\n excludeDomains: input.excludeDomains,\n allowExternal: input.allowExternal,\n extractDepth: input.extractDepth,\n includeImages: input.includeImages,\n format: input.format,\n });\n\n return {\n baseUrl: response.baseUrl,\n results: ((response.results || []) as any[]).map(r => ({\n url: r.url,\n rawContent: r.rawContent,\n images: r.images || undefined,\n })),\n responseTime: response.responseTime,\n };\n },\n });\n}\n","import { createTool } from '@mastra/core/tools';\nimport { z } from 'zod';\n\nimport { getTavilyClient } from './client.js';\nimport type { TavilyClient, TavilyClientOptions } from './client.js';\n\nconst inputSchema = z.object({\n url: z.string().describe('The root URL to begin mapping'),\n maxDepth: z.number().optional().describe('Max depth of the mapping from the base URL'),\n maxBreadth: z.number().optional().describe('Max number of links to follow per page'),\n limit: z.number().optional().describe('Total number of links the mapper will process before stopping'),\n instructions: z.string().optional().describe('Natural language instructions for the mapper'),\n selectPaths: z.array(z.string()).optional().describe('Regex patterns to select specific URL paths'),\n selectDomains: z.array(z.string()).optional().describe('Regex patterns to restrict to specific domains'),\n excludePaths: z.array(z.string()).optional().describe('Regex patterns to exclude specific URL paths'),\n excludeDomains: z.array(z.string()).optional().describe('Regex patterns to exclude specific domains'),\n allowExternal: z.boolean().optional().describe('Whether to include external domain links'),\n});\n\nconst outputSchema = z.object({\n baseUrl: z.string(),\n results: z.array(z.string()).describe('Discovered URLs'),\n responseTime: z.number(),\n});\n\nexport function createTavilyMapTool(config?: TavilyClientOptions) {\n let client: TavilyClient | null = null;\n\n function getClient(): TavilyClient {\n if (!client) {\n client = getTavilyClient(config);\n }\n return client;\n }\n\n return createTool({\n id: 'tavily-map',\n description:\n \"Map a website's structure starting from a URL using Tavily. Discovers and returns a list of URLs found on the site without extracting page content. Useful for understanding site structure before targeted extraction.\",\n inputSchema,\n outputSchema,\n execute: async input => {\n const tavilyClient = getClient();\n\n const response = await tavilyClient.map(input.url, {\n maxDepth: input.maxDepth,\n maxBreadth: input.maxBreadth,\n limit: input.limit,\n instructions: input.instructions,\n selectPaths: input.selectPaths,\n selectDomains: input.selectDomains,\n excludePaths: input.excludePaths,\n excludeDomains: input.excludeDomains,\n allowExternal: input.allowExternal,\n });\n\n return {\n baseUrl: response.baseUrl,\n results: response.results || [],\n responseTime: response.responseTime,\n };\n },\n });\n}\n","import type { TavilyClientOptions } from './client.js';\nimport { createTavilyCrawlTool } from './crawl.js';\nimport { createTavilyExtractTool } from './extract.js';\nimport { createTavilyMapTool } from './map.js';\nimport { createTavilySearchTool } from './search.js';\n\nexport function createTavilyTools(config?: TavilyClientOptions) {\n return {\n tavilySearch: createTavilySearchTool(config),\n tavilyExtract: createTavilyExtractTool(config),\n tavilyCrawl: createTavilyCrawlTool(config),\n tavilyMap: createTavilyMapTool(config),\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/client.ts","../src/search.ts","../src/extract.ts","../src/crawl.ts","../src/map.ts","../src/tools.ts"],"names":["inputSchema","z","outputSchema","createTool"],"mappings":"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","file":"index.js","sourcesContent":["import { tavily } from '@tavily/core';\nimport type { TavilyClientOptions } from '@tavily/core';\n\nexport type { TavilyClientOptions };\n\nexport type TavilyClient = ReturnType<typeof tavily>;\n\nexport function getTavilyClient(config?: TavilyClientOptions): TavilyClient {\n const apiKey = config?.apiKey ?? process.env.TAVILY_API_KEY;\n if (!apiKey) {\n throw new Error('Tavily API key is required. Pass { apiKey } or set TAVILY_API_KEY env var.');\n }\n // defaulting `clientName` to `mastra` if not provided\n return tavily({ ...config, apiKey, clientName: config?.clientName ?? 'mastra' });\n}\n","import { createTool } from '@mastra/core/tools';\nimport { z } from 'zod';\n\nimport { getTavilyClient } from './client.js';\nimport type { TavilyClient, TavilyClientOptions } from './client.js';\n\nconst inputSchema = z.object({\n query: z.string().describe('The search query'),\n searchDepth: z\n .enum(['basic', 'advanced', 'fast', 'ultra-fast'])\n .optional()\n .describe(\"Search depth — 'basic' for standard, 'advanced' for thorough, 'fast'/'ultra-fast' for low latency\"),\n maxResults: z.number().min(1).max(20).optional().describe('Maximum number of results to return (1-20)'),\n includeAnswer: z\n .union([z.boolean(), z.enum(['basic', 'advanced'])])\n .optional()\n .describe('Include an AI-generated answer summary. Pass true, \"basic\", or \"advanced\"'),\n includeImages: z.boolean().optional().describe('Include query-related images in the response'),\n includeImageDescriptions: z.boolean().optional().describe('Include descriptions for returned images'),\n includeRawContent: z\n .union([z.literal(false), z.enum(['markdown', 'text'])])\n .optional()\n .describe('Include cleaned HTML content of each result. Pass false to disable, or \"markdown\"/\"text\" for format'),\n includeDomains: z.array(z.string()).optional().describe('Restrict results to these domains'),\n excludeDomains: z.array(z.string()).optional().describe('Exclude results from these domains'),\n timeRange: z\n .enum(['day', 'week', 'month', 'year'])\n .optional()\n .describe('Time range to filter results by recency'),\n});\n\nconst outputSchema = z.object({\n query: z.string(),\n answer: z.string().optional(),\n images: z\n .array(\n z.object({\n url: z.string(),\n description: z.string().optional(),\n }),\n )\n .optional(),\n results: z.array(\n z.object({\n title: z.string(),\n url: z.string(),\n content: z.string(),\n score: z.number(),\n rawContent: z.string().optional(),\n }),\n ),\n responseTime: z.number(),\n});\n\nexport function createTavilySearchTool(config?: TavilyClientOptions) {\n let client: TavilyClient | null = null;\n\n function getClient(): TavilyClient {\n if (!client) {\n client = getTavilyClient(config);\n }\n return client;\n }\n\n return createTool({\n id: 'tavily-search',\n description:\n 'Search the web using Tavily. Returns relevant results with content snippets, optional AI-generated answers, and images. Supports filtering by domain, time range, and search depth.',\n inputSchema,\n outputSchema,\n execute: async input => {\n const tavilyClient = getClient();\n\n const response = await tavilyClient.search(input.query, {\n searchDepth: input.searchDepth,\n maxResults: input.maxResults,\n includeAnswer: input.includeAnswer,\n includeImages: input.includeImages,\n includeImageDescriptions: input.includeImageDescriptions,\n includeRawContent: input.includeRawContent,\n includeDomains: input.includeDomains,\n excludeDomains: input.excludeDomains,\n timeRange: input.timeRange,\n });\n\n return {\n query: response.query,\n answer: response.answer || undefined,\n images: response.images?.map((img: any) => ({\n url: typeof img === 'string' ? img : img.url,\n description: typeof img === 'string' ? undefined : img.description,\n })),\n results: (response.results ?? []).map((r: any) => ({\n title: r.title,\n url: r.url,\n content: r.content,\n score: r.score ?? 0,\n rawContent: r.rawContent || undefined,\n })),\n responseTime: response.responseTime,\n };\n },\n });\n}\n","import { createTool } from '@mastra/core/tools';\nimport { z } from 'zod';\n\nimport { getTavilyClient } from './client.js';\nimport type { TavilyClient, TavilyClientOptions } from './client.js';\n\nconst inputSchema = z.object({\n urls: z.array(z.string()).min(1).max(20).describe('URLs to extract content from (1-20)'),\n extractDepth: z\n .enum(['basic', 'advanced'])\n .optional()\n .describe(\"Extraction depth — 'advanced' retrieves more data including tables and embedded content\"),\n query: z.string().optional().describe('User intent for reranking extracted content chunks. When provided, chunks are reranked based on relevance to this query.'),\n includeImages: z.boolean().optional().describe('Include images extracted from the pages'),\n format: z\n .enum(['markdown', 'text'])\n .optional()\n .describe(\"Output format for extracted content — 'markdown' (default) or 'text'\"),\n});\n\nconst outputSchema = z.object({\n results: z.array(\n z.object({\n url: z.string(),\n rawContent: z.string(),\n images: z.array(z.string()).optional(),\n }),\n ),\n failedResults: z.array(\n z.object({\n url: z.string(),\n error: z.string(),\n }),\n ),\n responseTime: z.number(),\n});\n\nexport function createTavilyExtractTool(config?: TavilyClientOptions) {\n let client: TavilyClient | null = null;\n\n function getClient(): TavilyClient {\n if (!client) {\n client = getTavilyClient(config);\n }\n return client;\n }\n\n return createTool({\n id: 'tavily-extract',\n description:\n 'Extract content from one or more URLs using Tavily. Returns raw page content in markdown or text format. Supports up to 20 URLs per request with basic or advanced extraction depth.',\n inputSchema,\n outputSchema,\n execute: async input => {\n const tavilyClient = getClient();\n\n const response = await tavilyClient.extract(input.urls, {\n extractDepth: input.extractDepth,\n query: input.query,\n includeImages: input.includeImages,\n format: input.format,\n });\n\n return {\n results: ((response.results || []) as any[]).map(r => ({\n url: r.url,\n rawContent: r.rawContent,\n images: r.images || undefined,\n })),\n failedResults: ((response.failedResults || []) as any[]).map(r => ({\n url: r.url,\n error: r.error,\n })),\n responseTime: response.responseTime,\n };\n },\n });\n}\n","import { createTool } from '@mastra/core/tools';\nimport { z } from 'zod';\n\nimport { getTavilyClient } from './client.js';\nimport type { TavilyClient, TavilyClientOptions } from './client.js';\n\nconst inputSchema = z.object({\n url: z.string().describe('The root URL to begin the crawl'),\n maxDepth: z.number().optional().describe('Max depth of the crawl from the base URL'),\n maxBreadth: z.number().optional().describe('Max number of links to follow per page'),\n limit: z.number().optional().describe('Total number of pages the crawler will process before stopping'),\n instructions: z.string().optional().describe('Natural language instructions for the crawler'),\n selectPaths: z.array(z.string()).optional().describe('Regex patterns to select specific URL paths'),\n selectDomains: z.array(z.string()).optional().describe('Regex patterns to restrict to specific domains'),\n excludePaths: z.array(z.string()).optional().describe('Regex patterns to exclude specific URL paths'),\n excludeDomains: z.array(z.string()).optional().describe('Regex patterns to exclude specific domains'),\n allowExternal: z.boolean().optional().describe('Whether to follow links to external domains'),\n extractDepth: z\n .enum(['basic', 'advanced'])\n .optional()\n .describe(\"Extraction depth — 'advanced' retrieves more data including tables and embedded content\"),\n includeImages: z.boolean().optional().describe('Include images from crawled pages'),\n format: z\n .enum(['markdown', 'text'])\n .optional()\n .describe(\"Output format for extracted content — 'markdown' (default) or 'text'\"),\n});\n\nconst outputSchema = z.object({\n baseUrl: z.string(),\n results: z.array(\n z.object({\n url: z.string(),\n rawContent: z.string(),\n images: z.array(z.string()).optional(),\n }),\n ),\n responseTime: z.number(),\n});\n\nexport function createTavilyCrawlTool(config?: TavilyClientOptions) {\n let client: TavilyClient | null = null;\n\n function getClient(): TavilyClient {\n if (!client) {\n client = getTavilyClient(config);\n }\n return client;\n }\n\n return createTool({\n id: 'tavily-crawl',\n description:\n 'Crawl a website starting from a URL using Tavily. Extracts content from discovered pages with configurable depth, breadth, and domain constraints. Returns structured content from each crawled page.',\n inputSchema,\n outputSchema,\n execute: async input => {\n const tavilyClient = getClient();\n\n const response = await tavilyClient.crawl(input.url, {\n maxDepth: input.maxDepth,\n maxBreadth: input.maxBreadth,\n limit: input.limit,\n instructions: input.instructions,\n selectPaths: input.selectPaths,\n selectDomains: input.selectDomains,\n excludePaths: input.excludePaths,\n excludeDomains: input.excludeDomains,\n allowExternal: input.allowExternal,\n extractDepth: input.extractDepth,\n includeImages: input.includeImages,\n format: input.format,\n });\n\n return {\n baseUrl: response.baseUrl,\n results: ((response.results || []) as any[]).map(r => ({\n url: r.url,\n rawContent: r.rawContent,\n images: r.images || undefined,\n })),\n responseTime: response.responseTime,\n };\n },\n });\n}\n","import { createTool } from '@mastra/core/tools';\nimport { z } from 'zod';\n\nimport { getTavilyClient } from './client.js';\nimport type { TavilyClient, TavilyClientOptions } from './client.js';\n\nconst inputSchema = z.object({\n url: z.string().describe('The root URL to begin mapping'),\n maxDepth: z.number().optional().describe('Max depth of the mapping from the base URL'),\n maxBreadth: z.number().optional().describe('Max number of links to follow per page'),\n limit: z.number().optional().describe('Total number of links the mapper will process before stopping'),\n instructions: z.string().optional().describe('Natural language instructions for the mapper'),\n selectPaths: z.array(z.string()).optional().describe('Regex patterns to select specific URL paths'),\n selectDomains: z.array(z.string()).optional().describe('Regex patterns to restrict to specific domains'),\n excludePaths: z.array(z.string()).optional().describe('Regex patterns to exclude specific URL paths'),\n excludeDomains: z.array(z.string()).optional().describe('Regex patterns to exclude specific domains'),\n allowExternal: z.boolean().optional().describe('Whether to include external domain links'),\n});\n\nconst outputSchema = z.object({\n baseUrl: z.string(),\n results: z.array(z.string()).describe('Discovered URLs'),\n responseTime: z.number(),\n});\n\nexport function createTavilyMapTool(config?: TavilyClientOptions) {\n let client: TavilyClient | null = null;\n\n function getClient(): TavilyClient {\n if (!client) {\n client = getTavilyClient(config);\n }\n return client;\n }\n\n return createTool({\n id: 'tavily-map',\n description:\n \"Map a website's structure starting from a URL using Tavily. Discovers and returns a list of URLs found on the site without extracting page content. Useful for understanding site structure before targeted extraction.\",\n inputSchema,\n outputSchema,\n execute: async input => {\n const tavilyClient = getClient();\n\n const response = await tavilyClient.map(input.url, {\n maxDepth: input.maxDepth,\n maxBreadth: input.maxBreadth,\n limit: input.limit,\n instructions: input.instructions,\n selectPaths: input.selectPaths,\n selectDomains: input.selectDomains,\n excludePaths: input.excludePaths,\n excludeDomains: input.excludeDomains,\n allowExternal: input.allowExternal,\n });\n\n return {\n baseUrl: response.baseUrl,\n results: response.results || [],\n responseTime: response.responseTime,\n };\n },\n });\n}\n","import type { TavilyClientOptions } from './client.js';\nimport { createTavilyCrawlTool } from './crawl.js';\nimport { createTavilyExtractTool } from './extract.js';\nimport { createTavilyMapTool } from './map.js';\nimport { createTavilySearchTool } from './search.js';\n\nexport function createTavilyTools(config?: TavilyClientOptions) {\n return {\n tavilySearch: createTavilySearchTool(config),\n tavilyExtract: createTavilyExtractTool(config),\n tavilyCrawl: createTavilyCrawlTool(config),\n tavilyMap: createTavilyMapTool(config),\n };\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mastra/tavily",
3
- "version": "1.1.0",
3
+ "version": "1.1.1-alpha.0",
4
4
  "description": "Tavily web search, extract, crawl, and map tools for Mastra agents",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -52,11 +52,11 @@
52
52
  "devDependencies": {
53
53
  "tsup": "^8.5.1",
54
54
  "typescript": "^6.0.3",
55
- "vitest": "4.1.8",
55
+ "vitest": "4.1.10",
56
56
  "zod": "^4.4.3",
57
- "@internal/lint": "0.0.107",
58
- "@internal/types-builder": "0.0.82",
59
- "@mastra/core": "1.45.0"
57
+ "@internal/lint": "0.0.114",
58
+ "@internal/types-builder": "0.0.89",
59
+ "@mastra/core": "1.52.0-alpha.8"
60
60
  },
61
61
  "scripts": {
62
62
  "build:lib": "tsup --silent --config tsup.config.ts",