@nanogpt/mcp 1.1.6 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/dist/config.d.ts +5 -3
  2. package/dist/config.d.ts.map +1 -1
  3. package/dist/config.js +22 -19
  4. package/dist/config.js.map +1 -1
  5. package/dist/httpClient.d.ts +13 -0
  6. package/dist/httpClient.d.ts.map +1 -1
  7. package/dist/httpClient.js +94 -4
  8. package/dist/httpClient.js.map +1 -1
  9. package/dist/index.d.ts +3 -0
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +48 -3
  12. package/dist/index.js.map +1 -1
  13. package/dist/resources.d.ts +9 -2
  14. package/dist/resources.d.ts.map +1 -1
  15. package/dist/resources.js +14 -5
  16. package/dist/resources.js.map +1 -1
  17. package/dist/tools/applicationScrapers.d.ts +922 -0
  18. package/dist/tools/applicationScrapers.d.ts.map +1 -0
  19. package/dist/tools/applicationScrapers.js +306 -0
  20. package/dist/tools/applicationScrapers.js.map +1 -0
  21. package/dist/tools/chat.d.ts.map +1 -1
  22. package/dist/tools/chat.js +4 -1
  23. package/dist/tools/chat.js.map +1 -1
  24. package/dist/tools/generationExtras.d.ts +432 -0
  25. package/dist/tools/generationExtras.d.ts.map +1 -0
  26. package/dist/tools/generationExtras.js +419 -0
  27. package/dist/tools/generationExtras.js.map +1 -0
  28. package/dist/tools/index.d.ts +3 -0
  29. package/dist/tools/index.d.ts.map +1 -1
  30. package/dist/tools/index.js +3 -0
  31. package/dist/tools/index.js.map +1 -1
  32. package/dist/tools/listModels.d.ts +2 -2
  33. package/dist/tools/researchTools.d.ts +88 -0
  34. package/dist/tools/researchTools.d.ts.map +1 -0
  35. package/dist/tools/researchTools.js +241 -0
  36. package/dist/tools/researchTools.js.map +1 -0
  37. package/dist/tools/webSearch.d.ts +100 -5
  38. package/dist/tools/webSearch.d.ts.map +1 -1
  39. package/dist/tools/webSearch.js +143 -8
  40. package/dist/tools/webSearch.js.map +1 -1
  41. package/package.json +11 -2
@@ -0,0 +1,241 @@
1
+ /**
2
+ * NanoGPT research/data tools.
3
+ */
4
+ import { z } from 'zod';
5
+ import { requestJson } from '../httpClient.js';
6
+ import { handleToolError, processRawResponse, buildContent, zodToJsonSchema } from '../toolUtils.js';
7
+ const paramValueSchema = z.union([
8
+ z.string(),
9
+ z.number(),
10
+ z.boolean(),
11
+ z.array(z.union([z.string(), z.number(), z.boolean()])),
12
+ ]);
13
+ const paramsSchema = z.record(paramValueSchema).optional();
14
+ export const xResearchInputSchema = z.object({
15
+ endpoint: z.enum([
16
+ 'endpoints',
17
+ 'search',
18
+ 'search/recent',
19
+ 'search/all',
20
+ 'counts',
21
+ 'counts/recent',
22
+ 'counts/all',
23
+ 'tweet',
24
+ 'tweets',
25
+ 'tweet/quotes',
26
+ 'tweet/retweeted-by',
27
+ 'tweet/liking-users',
28
+ 'user',
29
+ 'users',
30
+ 'user/search',
31
+ 'user/tweets',
32
+ 'user/mentions',
33
+ 'user/liked-tweets',
34
+ 'user/followers',
35
+ 'user/following',
36
+ 'list',
37
+ 'list/tweets',
38
+ 'list/members',
39
+ 'list/followers',
40
+ 'space',
41
+ 'spaces',
42
+ 'spaces/search',
43
+ ]).default('endpoints')
44
+ .describe('X Research endpoint to call. Use endpoints to list supported routes.'),
45
+ params: paramsSchema
46
+ .describe('Query parameters for the selected X endpoint, such as query, username, id, ids, limit, or next_token.'),
47
+ include_raw: z.boolean().optional().default(false)
48
+ .describe('Include the raw NanoGPT API response for debugging. Large raw responses are returned as a resource link.'),
49
+ });
50
+ export const hunterInputSchema = z.object({
51
+ endpoint: z.enum([
52
+ 'endpoints',
53
+ 'discover',
54
+ 'domain-search',
55
+ 'email-finder',
56
+ 'email-verifier',
57
+ 'people/find',
58
+ 'email-enrichment',
59
+ 'people-find',
60
+ 'person-enrichment',
61
+ 'companies/find',
62
+ 'company-enrichment',
63
+ 'companies-find',
64
+ 'combined/find',
65
+ 'combined-enrichment',
66
+ 'combined-find',
67
+ 'email-count',
68
+ ]).default('endpoints')
69
+ .describe('Hunter endpoint to call. Use endpoints to list supported Hunter routes and pricing.'),
70
+ params: z.record(z.unknown()).optional()
71
+ .describe('Parameters for the Hunter endpoint, such as domain, company, email, full_name, first_name, last_name, or linkedin_handle.'),
72
+ include_raw: z.boolean().optional().default(false)
73
+ .describe('Include the raw NanoGPT API response for debugging. Large raw responses are returned as a resource link.'),
74
+ });
75
+ const dataToolOutputSchema = z.object({
76
+ data: z.unknown(),
77
+ billing: z.record(z.unknown()).optional(),
78
+ meta: z.record(z.unknown()).optional(),
79
+ status: z.number().optional(),
80
+ raw: z.union([z.record(z.unknown()), z.string()]).optional(),
81
+ });
82
+ export const xResearchInputJsonSchema = zodToJsonSchema(xResearchInputSchema);
83
+ export const hunterInputJsonSchema = zodToJsonSchema(hunterInputSchema);
84
+ export const outputJsonSchema = zodToJsonSchema(dataToolOutputSchema);
85
+ export const xResearch = {
86
+ name: 'nanogpt_x_research',
87
+ description: 'Retrieve public X data through NanoGPT billing: search, counts, posts, users, timelines, lists, and Spaces.',
88
+ inputSchema: xResearchInputSchema,
89
+ inputJsonSchema: xResearchInputJsonSchema,
90
+ outputJsonSchema,
91
+ annotations: { readOnlyHint: false, openWorldHint: true },
92
+ handler: async (args) => {
93
+ try {
94
+ const input = xResearchInputSchema.parse(args);
95
+ const endpoint = input.endpoint === 'endpoints' ? 'endpoints' : input.endpoint;
96
+ const response = await requestJson({
97
+ method: 'GET',
98
+ path: `/api/v1/x/${endpoint}`,
99
+ query: stringifyParams(input.params),
100
+ });
101
+ return buildDataToolResult({
102
+ label: 'X Research',
103
+ endpoint,
104
+ response,
105
+ includeRaw: input.include_raw,
106
+ });
107
+ }
108
+ catch (err) {
109
+ return handleToolError(err);
110
+ }
111
+ },
112
+ };
113
+ export const hunter = {
114
+ name: 'nanogpt_hunter',
115
+ description: 'Use Hunter.io through NanoGPT billing for domain search, email finding, email verification, enrichment, discovery, and email counts.',
116
+ inputSchema: hunterInputSchema,
117
+ inputJsonSchema: hunterInputJsonSchema,
118
+ outputJsonSchema,
119
+ annotations: { readOnlyHint: false, openWorldHint: true },
120
+ handler: async (args) => {
121
+ try {
122
+ const input = hunterInputSchema.parse(args);
123
+ const endpoint = input.endpoint === 'endpoints' ? '' : input.endpoint;
124
+ const response = await requestJson({
125
+ method: 'POST',
126
+ path: '/api/v1/hunter',
127
+ body: {
128
+ endpoint,
129
+ params: input.params || {},
130
+ },
131
+ });
132
+ return buildDataToolResult({
133
+ label: 'Hunter',
134
+ endpoint: input.endpoint,
135
+ response,
136
+ includeRaw: input.include_raw,
137
+ });
138
+ }
139
+ catch (err) {
140
+ return handleToolError(err);
141
+ }
142
+ },
143
+ };
144
+ function stringifyParams(params) {
145
+ const query = {};
146
+ if (!params)
147
+ return query;
148
+ for (const [key, value] of Object.entries(params)) {
149
+ if (Array.isArray(value)) {
150
+ query[key] = value.map(String).join(',');
151
+ }
152
+ else {
153
+ query[key] = String(value);
154
+ }
155
+ }
156
+ return query;
157
+ }
158
+ function buildDataToolResult({ label, endpoint, response, includeRaw, }) {
159
+ const data = response.json;
160
+ const output = {
161
+ data: data.data ?? data,
162
+ };
163
+ if (data.billing && typeof data.billing === 'object')
164
+ output.billing = data.billing;
165
+ if (data.meta && typeof data.meta === 'object')
166
+ output.meta = data.meta;
167
+ if (typeof data.status === 'number')
168
+ output.status = data.status;
169
+ const { raw, resourceLink } = processRawResponse({ status: response.status, headers: response.headers, body: data }, includeRaw);
170
+ if (raw !== undefined)
171
+ output.raw = raw;
172
+ return {
173
+ content: buildContent(formatDataToolText(label, endpoint, data), resourceLink),
174
+ structuredContent: output,
175
+ };
176
+ }
177
+ function formatDataToolText(label, endpoint, data) {
178
+ const primary = data.data ?? data;
179
+ const count = countPrimaryItems(primary);
180
+ let text = `${label} ${endpoint || 'endpoints'} returned ${count.label}.`;
181
+ const billing = data.billing;
182
+ if (billing && typeof billing === 'object') {
183
+ const record = billing;
184
+ const actualUsd = typeof record.actual_usd === 'number' ? record.actual_usd : undefined;
185
+ const estimatedUsd = typeof record.estimated_usd === 'number' ? record.estimated_usd : undefined;
186
+ if (actualUsd !== undefined)
187
+ text += ` Actual cost: $${actualUsd.toFixed(6)}.`;
188
+ if (estimatedUsd !== undefined)
189
+ text += ` Estimated cost: $${estimatedUsd.toFixed(6)}.`;
190
+ }
191
+ const preview = previewPrimary(primary);
192
+ if (preview)
193
+ text += `\n\nPreview:\n${preview}`;
194
+ return text;
195
+ }
196
+ function countPrimaryItems(value) {
197
+ if (Array.isArray(value))
198
+ return { label: `${value.length} item${value.length === 1 ? '' : 's'}`, count: value.length };
199
+ if (value && typeof value === 'object') {
200
+ const record = value;
201
+ if (Array.isArray(record.data))
202
+ return { label: `${record.data.length} data item${record.data.length === 1 ? '' : 's'}`, count: record.data.length };
203
+ if (record.data)
204
+ return { label: '1 data item', count: 1 };
205
+ if (Array.isArray(record.endpoints))
206
+ return { label: `${record.endpoints.length} endpoint${record.endpoints.length === 1 ? '' : 's'}`, count: record.endpoints.length };
207
+ return { label: `${Object.keys(record).length} field${Object.keys(record).length === 1 ? '' : 's'}` };
208
+ }
209
+ return { label: value === null || value === undefined ? 'no data' : '1 value', count: value === null || value === undefined ? 0 : 1 };
210
+ }
211
+ function previewPrimary(value) {
212
+ const items = Array.isArray(value)
213
+ ? value
214
+ : value && typeof value === 'object' && Array.isArray(value.data)
215
+ ? value.data
216
+ : value && typeof value === 'object' && Array.isArray(value.endpoints)
217
+ ? value.endpoints
218
+ : null;
219
+ if (!items || items.length === 0)
220
+ return null;
221
+ return items.slice(0, 3).map((item, index) => `- ${index + 1}: ${summarizeDataItem(item)}`).join('\n');
222
+ }
223
+ function summarizeDataItem(item) {
224
+ if (!item || typeof item !== 'object')
225
+ return String(item);
226
+ const record = item;
227
+ const parts = ['id', 'name', 'username', 'email', 'domain', 'title', 'text']
228
+ .map((key) => {
229
+ const value = record[key];
230
+ if (typeof value !== 'string' && typeof value !== 'number')
231
+ return null;
232
+ const text = String(value).replace(/\s+/g, ' ').trim();
233
+ return text ? `${key}: ${text.slice(0, 120)}${text.length > 120 ? '...' : ''}` : null;
234
+ })
235
+ .filter((part) => Boolean(part))
236
+ .slice(0, 3);
237
+ if (parts.length > 0)
238
+ return parts.join(', ');
239
+ return `fields: ${Object.keys(record).slice(0, 8).join(', ')}`;
240
+ }
241
+ //# sourceMappingURL=researchTools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"researchTools.js","sourceRoot":"","sources":["../../src/tools/researchTools.ts"],"names":[],"mappings":"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"}
@@ -2,19 +2,22 @@
2
2
  * nanogpt_web_search tool
3
3
  *
4
4
  * Search the web for current information using multiple providers:
5
- * - linkup: Default provider, supports standard/deep depth
5
+ * - linkup: Default provider, supports standard/deep depth and richer output types
6
6
  * - tavily: Advanced search with answer generation, topic filtering
7
7
  * - exa: Neural/semantic search with content extraction
8
8
  * - kagi: Privacy-focused search with web/news/search modes
9
9
  * - perplexity: AI-powered search with domain/language filtering
10
+ * - valyu: Aggregated web retrieval with configurable budgets
11
+ * - brave: Brave Search API (web/news/images/video/local)
10
12
  */
11
13
  import { z } from 'zod';
12
14
  export declare const inputSchema: z.ZodObject<{
13
15
  query: z.ZodString;
14
- provider: z.ZodOptional<z.ZodEnum<["linkup", "tavily", "exa", "kagi", "perplexity"]>>;
16
+ provider: z.ZodOptional<z.ZodEnum<["linkup", "tavily", "exa", "kagi", "perplexity", "valyu", "brave"]>>;
15
17
  depth: z.ZodOptional<z.ZodEnum<["standard", "deep", "fast", "auto", "neural"]>>;
16
18
  maxResults: z.ZodOptional<z.ZodNumber>;
17
19
  includeImages: z.ZodOptional<z.ZodBoolean>;
20
+ includeImageDescriptions: z.ZodOptional<z.ZodBoolean>;
18
21
  fromDate: z.ZodOptional<z.ZodString>;
19
22
  toDate: z.ZodOptional<z.ZodString>;
20
23
  excludeDomains: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
@@ -28,7 +31,16 @@ export declare const inputSchema: z.ZodObject<{
28
31
  timeRange: z.ZodOptional<z.ZodEnum<["day", "week", "month", "year", "d", "w", "m", "y"]>>;
29
32
  chunksPerSource: z.ZodOptional<z.ZodNumber>;
30
33
  country: z.ZodOptional<z.ZodString>;
34
+ numResults: z.ZodOptional<z.ZodNumber>;
31
35
  category: z.ZodOptional<z.ZodEnum<["company", "research paper", "news", "pdf", "github", "tweet", "personal site", "people", "financial report"]>>;
36
+ userLocation: z.ZodOptional<z.ZodString>;
37
+ additionalQueries: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
38
+ startCrawlDate: z.ZodOptional<z.ZodString>;
39
+ endCrawlDate: z.ZodOptional<z.ZodString>;
40
+ startPublishedDate: z.ZodOptional<z.ZodString>;
41
+ endPublishedDate: z.ZodOptional<z.ZodString>;
42
+ includeText: z.ZodOptional<z.ZodString>;
43
+ excludeText: z.ZodOptional<z.ZodString>;
32
44
  context: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodObject<{
33
45
  maxCharacters: z.ZodOptional<z.ZodNumber>;
34
46
  }, "strip", z.ZodTypeAny, {
@@ -103,14 +115,36 @@ export declare const inputSchema: z.ZodObject<{
103
115
  maxTokensPerPage: z.ZodOptional<z.ZodNumber>;
104
116
  searchDomainFilter: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
105
117
  searchLanguageFilter: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
118
+ count: z.ZodOptional<z.ZodNumber>;
119
+ offset: z.ZodOptional<z.ZodNumber>;
120
+ safesearch: z.ZodOptional<z.ZodEnum<["off", "moderate", "strict"]>>;
121
+ freshness: z.ZodOptional<z.ZodString>;
122
+ searchLang: z.ZodOptional<z.ZodString>;
123
+ uiLang: z.ZodOptional<z.ZodString>;
124
+ extraSnippets: z.ZodOptional<z.ZodBoolean>;
125
+ spellcheck: z.ZodOptional<z.ZodBoolean>;
126
+ goggles: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
127
+ searchType: z.ZodOptional<z.ZodEnum<["all", "web"]>>;
128
+ fastMode: z.ZodOptional<z.ZodBoolean>;
129
+ maxNumResults: z.ZodOptional<z.ZodNumber>;
130
+ maxPrice: z.ZodOptional<z.ZodNumber>;
131
+ relevanceThreshold: z.ZodOptional<z.ZodNumber>;
132
+ responseLength: z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodEnum<["short", "medium", "large", "max"]>]>>;
133
+ countryCode: z.ZodOptional<z.ZodString>;
134
+ includedSources: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
135
+ excludedSources: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
136
+ urlOnly: z.ZodOptional<z.ZodBoolean>;
137
+ valyuCategory: z.ZodOptional<z.ZodString>;
138
+ isToolCall: z.ZodOptional<z.ZodBoolean>;
106
139
  include_raw: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
107
140
  }, "strip", z.ZodTypeAny, {
108
141
  query: string;
109
142
  include_raw: boolean;
110
- provider?: "linkup" | "tavily" | "exa" | "kagi" | "perplexity" | undefined;
143
+ provider?: "linkup" | "tavily" | "exa" | "kagi" | "perplexity" | "valyu" | "brave" | undefined;
111
144
  depth?: "auto" | "standard" | "deep" | "fast" | "neural" | undefined;
112
145
  maxResults?: number | undefined;
113
146
  includeImages?: boolean | undefined;
147
+ includeImageDescriptions?: boolean | undefined;
114
148
  fromDate?: string | undefined;
115
149
  toDate?: string | undefined;
116
150
  excludeDomains?: string[] | undefined;
@@ -124,7 +158,16 @@ export declare const inputSchema: z.ZodObject<{
124
158
  timeRange?: "day" | "week" | "month" | "year" | "d" | "w" | "m" | "y" | undefined;
125
159
  chunksPerSource?: number | undefined;
126
160
  country?: string | undefined;
161
+ numResults?: number | undefined;
127
162
  category?: "news" | "company" | "research paper" | "pdf" | "github" | "tweet" | "personal site" | "people" | "financial report" | undefined;
163
+ userLocation?: string | undefined;
164
+ additionalQueries?: string[] | undefined;
165
+ startCrawlDate?: string | undefined;
166
+ endCrawlDate?: string | undefined;
167
+ startPublishedDate?: string | undefined;
168
+ endPublishedDate?: string | undefined;
169
+ includeText?: string | undefined;
170
+ excludeText?: string | undefined;
128
171
  context?: boolean | {
129
172
  maxCharacters?: number | undefined;
130
173
  } | undefined;
@@ -147,13 +190,35 @@ export declare const inputSchema: z.ZodObject<{
147
190
  maxTokensPerPage?: number | undefined;
148
191
  searchDomainFilter?: string[] | undefined;
149
192
  searchLanguageFilter?: string[] | undefined;
193
+ count?: number | undefined;
194
+ offset?: number | undefined;
195
+ safesearch?: "off" | "moderate" | "strict" | undefined;
196
+ freshness?: string | undefined;
197
+ searchLang?: string | undefined;
198
+ uiLang?: string | undefined;
199
+ extraSnippets?: boolean | undefined;
200
+ spellcheck?: boolean | undefined;
201
+ goggles?: string | string[] | undefined;
202
+ searchType?: "web" | "all" | undefined;
203
+ fastMode?: boolean | undefined;
204
+ maxNumResults?: number | undefined;
205
+ maxPrice?: number | undefined;
206
+ relevanceThreshold?: number | undefined;
207
+ responseLength?: number | "max" | "short" | "medium" | "large" | undefined;
208
+ countryCode?: string | undefined;
209
+ includedSources?: string[] | undefined;
210
+ excludedSources?: string[] | undefined;
211
+ urlOnly?: boolean | undefined;
212
+ valyuCategory?: string | undefined;
213
+ isToolCall?: boolean | undefined;
150
214
  }, {
151
215
  query: string;
152
216
  include_raw?: boolean | undefined;
153
- provider?: "linkup" | "tavily" | "exa" | "kagi" | "perplexity" | undefined;
217
+ provider?: "linkup" | "tavily" | "exa" | "kagi" | "perplexity" | "valyu" | "brave" | undefined;
154
218
  depth?: "auto" | "standard" | "deep" | "fast" | "neural" | undefined;
155
219
  maxResults?: number | undefined;
156
220
  includeImages?: boolean | undefined;
221
+ includeImageDescriptions?: boolean | undefined;
157
222
  fromDate?: string | undefined;
158
223
  toDate?: string | undefined;
159
224
  excludeDomains?: string[] | undefined;
@@ -167,7 +232,16 @@ export declare const inputSchema: z.ZodObject<{
167
232
  timeRange?: "day" | "week" | "month" | "year" | "d" | "w" | "m" | "y" | undefined;
168
233
  chunksPerSource?: number | undefined;
169
234
  country?: string | undefined;
235
+ numResults?: number | undefined;
170
236
  category?: "news" | "company" | "research paper" | "pdf" | "github" | "tweet" | "personal site" | "people" | "financial report" | undefined;
237
+ userLocation?: string | undefined;
238
+ additionalQueries?: string[] | undefined;
239
+ startCrawlDate?: string | undefined;
240
+ endCrawlDate?: string | undefined;
241
+ startPublishedDate?: string | undefined;
242
+ endPublishedDate?: string | undefined;
243
+ includeText?: string | undefined;
244
+ excludeText?: string | undefined;
171
245
  context?: boolean | {
172
246
  maxCharacters?: number | undefined;
173
247
  } | undefined;
@@ -190,6 +264,27 @@ export declare const inputSchema: z.ZodObject<{
190
264
  maxTokensPerPage?: number | undefined;
191
265
  searchDomainFilter?: string[] | undefined;
192
266
  searchLanguageFilter?: string[] | undefined;
267
+ count?: number | undefined;
268
+ offset?: number | undefined;
269
+ safesearch?: "off" | "moderate" | "strict" | undefined;
270
+ freshness?: string | undefined;
271
+ searchLang?: string | undefined;
272
+ uiLang?: string | undefined;
273
+ extraSnippets?: boolean | undefined;
274
+ spellcheck?: boolean | undefined;
275
+ goggles?: string | string[] | undefined;
276
+ searchType?: "web" | "all" | undefined;
277
+ fastMode?: boolean | undefined;
278
+ maxNumResults?: number | undefined;
279
+ maxPrice?: number | undefined;
280
+ relevanceThreshold?: number | undefined;
281
+ responseLength?: number | "max" | "short" | "medium" | "large" | undefined;
282
+ countryCode?: string | undefined;
283
+ includedSources?: string[] | undefined;
284
+ excludedSources?: string[] | undefined;
285
+ urlOnly?: boolean | undefined;
286
+ valyuCategory?: string | undefined;
287
+ isToolCall?: boolean | undefined;
193
288
  }>;
194
289
  export declare const outputSchema: z.ZodObject<{
195
290
  data: z.ZodUnknown;
@@ -207,7 +302,7 @@ export declare const outputSchema: z.ZodObject<{
207
302
  export declare const inputJsonSchema: import("../toolUtils.js").JsonSchema;
208
303
  export declare const outputJsonSchema: import("../toolUtils.js").JsonSchema;
209
304
  export declare const name = "nanogpt_web_search";
210
- export declare const description = "Search the web using multiple providers. Providers: linkup (default), tavily (AI answers), exa (semantic/neural), kagi (privacy-focused), perplexity (AI-powered). Each provider has unique features - see parameter descriptions.";
305
+ export declare const description = "Search the web using multiple providers. Providers: linkup (default), tavily (AI answers), exa (semantic/neural), kagi (privacy-focused), perplexity (AI-powered), valyu (aggregated), brave (Brave Search API). Each provider has unique features - see parameter descriptions.";
211
306
  export declare const annotations: {
212
307
  readOnlyHint: boolean;
213
308
  openWorldHint: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"webSearch.d.ts","sourceRoot":"","sources":["../../src/tools/webSearch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2FtB,CAAC;AAGH,eAAO,MAAM,YAAY;;;;;;;;;;;;EAIvB,CAAC;AAGH,eAAO,MAAM,eAAe,sCAA+B,CAAC;AAC5D,eAAO,MAAM,gBAAgB,sCAAgC,CAAC;AAG9D,eAAO,MAAM,IAAI,uBAAuB,CAAC;AACzC,eAAO,MAAM,WAAW,uOAC8M,CAAC;AAGvO,eAAO,MAAM,WAAW;;;CAGvB,CAAC;AAkCF;;GAEG;AACH,wBAAsB,OAAO,CAAC,IAAI,EAAE,OAAO;;;GA6H1C"}
1
+ {"version":3,"file":"webSearch.d.ts","sourceRoot":"","sources":["../../src/tools/webSearch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgKtB,CAAC;AAGH,eAAO,MAAM,YAAY;;;;;;;;;;;;EAIvB,CAAC;AAGH,eAAO,MAAM,eAAe,sCAA+B,CAAC;AAC5D,eAAO,MAAM,gBAAgB,sCAAgC,CAAC;AAG9D,eAAO,MAAM,IAAI,uBAAuB,CAAC;AACzC,eAAO,MAAM,WAAW,qRAC4P,CAAC;AAGrR,eAAO,MAAM,WAAW;;;CAGvB,CAAC;AAyCF;;GAEG;AACH,wBAAsB,OAAO,CAAC,IAAI,EAAE,OAAO;;;GAiK1C"}