webfox 0.0.0-test.0 → 4.0.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 (118) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +256 -3
  3. package/assets/webfox-lockup-dark.png +0 -0
  4. package/assets/webfox-lockup.png +0 -0
  5. package/dist/adapter-2YBFCBCZ.js +161 -0
  6. package/dist/adapter-67TIISDW.js +753 -0
  7. package/dist/adapter-AB7LKV7N.js +324 -0
  8. package/dist/adapter-AUYLTDPM.js +73 -0
  9. package/dist/adapter-HITGYUXN.js +494 -0
  10. package/dist/adapter-HPTMLH75.js +334 -0
  11. package/dist/adapter-I6OUKBZQ.js +492 -0
  12. package/dist/adapter-ISZQTZDP.js +166 -0
  13. package/dist/adapter-MAG7X663.js +230 -0
  14. package/dist/adapter-NEXSOHGT.js +232 -0
  15. package/dist/adapter-PADXKW43.js +162 -0
  16. package/dist/adapter-SDQX2533.js +123 -0
  17. package/dist/adapter-UAZNLDSS.js +237 -0
  18. package/dist/adapter-XBAQSK7I.js +282 -0
  19. package/dist/application-types.d.ts +34 -0
  20. package/dist/application.d.ts +2 -0
  21. package/dist/chunk-EF4VMDZL.js +85 -0
  22. package/dist/chunk-G2YAQEET.js +38 -0
  23. package/dist/chunk-I2UIACY3.js +12 -0
  24. package/dist/chunk-L425U55P.js +3051 -0
  25. package/dist/chunk-QRHDXM2L.js +31 -0
  26. package/dist/chunk-SMF5ALX7.js +762 -0
  27. package/dist/chunk-U4BLULLV.js +52 -0
  28. package/dist/chunk-WCTOYZVB.js +85 -0
  29. package/dist/chunk-X6ZBIHZC.js +21 -0
  30. package/dist/chunk-YZXM4U2C.js +21 -0
  31. package/dist/chunk-ZVTVERW5.js +20 -0
  32. package/dist/cli.js +641 -0
  33. package/dist/config.schema.json +4270 -0
  34. package/dist/configuration/defaults.d.ts +3 -0
  35. package/dist/configuration/file.d.ts +17 -0
  36. package/dist/configuration/options-schema.d.ts +2 -0
  37. package/dist/configuration/planning.d.ts +10 -0
  38. package/dist/configuration/schema.d.ts +9 -0
  39. package/dist/configuration/types.d.ts +37 -0
  40. package/dist/contents.d.ts +19 -0
  41. package/dist/domain.d.ts +89 -0
  42. package/dist/errors.d.ts +17 -0
  43. package/dist/index.d.ts +8 -0
  44. package/dist/index.js +38 -0
  45. package/dist/package-metadata.d.ts +3 -0
  46. package/dist/pi-keybindings.d.ts +1 -0
  47. package/dist/pi-params.d.ts +3 -0
  48. package/dist/pi-render.d.ts +50 -0
  49. package/dist/pi-search-render.d.ts +4 -0
  50. package/dist/pi-text.d.ts +4 -0
  51. package/dist/pi-validation.d.ts +4 -0
  52. package/dist/pi.d.ts +2 -0
  53. package/dist/pi.js +563 -0
  54. package/dist/providers/brave/adapter.d.ts +7 -0
  55. package/dist/providers/brave/definition.d.ts +1 -0
  56. package/dist/providers/brave/types.d.ts +4 -0
  57. package/dist/providers/cli-json.d.ts +9 -0
  58. package/dist/providers/cloudflare/adapter.d.ts +5 -0
  59. package/dist/providers/cloudflare/definition.d.ts +1 -0
  60. package/dist/providers/cloudflare/types.d.ts +4 -0
  61. package/dist/providers/contract.d.ts +88 -0
  62. package/dist/providers/custom/adapter.d.ts +9 -0
  63. package/dist/providers/custom/definition.d.ts +1 -0
  64. package/dist/providers/custom/types.d.ts +9 -0
  65. package/dist/providers/definition.d.ts +32 -0
  66. package/dist/providers/exa/adapter.d.ts +8 -0
  67. package/dist/providers/exa/definition.d.ts +1 -0
  68. package/dist/providers/exa/types.d.ts +4 -0
  69. package/dist/providers/firecrawl/adapter.d.ts +7 -0
  70. package/dist/providers/firecrawl/definition.d.ts +1 -0
  71. package/dist/providers/firecrawl/types.d.ts +4 -0
  72. package/dist/providers/gemini/adapter.d.ts +14 -0
  73. package/dist/providers/gemini/definition.d.ts +1 -0
  74. package/dist/providers/gemini/types.d.ts +3 -0
  75. package/dist/providers/linkup/adapter.d.ts +7 -0
  76. package/dist/providers/linkup/definition.d.ts +1 -0
  77. package/dist/providers/linkup/types.d.ts +4 -0
  78. package/dist/providers/metadata.d.ts +15 -0
  79. package/dist/providers/ollama/adapter.d.ts +6 -0
  80. package/dist/providers/ollama/definition.d.ts +1 -0
  81. package/dist/providers/ollama/types.d.ts +4 -0
  82. package/dist/providers/openai/adapter.d.ts +7 -0
  83. package/dist/providers/openai/definition.d.ts +1 -0
  84. package/dist/providers/openai/types.d.ts +28 -0
  85. package/dist/providers/parallel/adapter.d.ts +6 -0
  86. package/dist/providers/parallel/definition.d.ts +1 -0
  87. package/dist/providers/parallel/types.d.ts +4 -0
  88. package/dist/providers/perplexity/adapter.d.ts +7 -0
  89. package/dist/providers/perplexity/definition.d.ts +1 -0
  90. package/dist/providers/perplexity/types.d.ts +4 -0
  91. package/dist/providers/registry.d.ts +16 -0
  92. package/dist/providers/serper/adapter.d.ts +5 -0
  93. package/dist/providers/serper/definition.d.ts +1 -0
  94. package/dist/providers/serper/types.d.ts +21 -0
  95. package/dist/providers/shared.d.ts +4 -0
  96. package/dist/providers/tavily/adapter.d.ts +6 -0
  97. package/dist/providers/tavily/definition.d.ts +1 -0
  98. package/dist/providers/tavily/types.d.ts +4 -0
  99. package/dist/providers/valyu/adapter.d.ts +8 -0
  100. package/dist/providers/valyu/definition.d.ts +1 -0
  101. package/dist/providers/valyu/types.d.ts +4 -0
  102. package/dist/render.d.ts +5 -0
  103. package/dist/runtime/credentials.d.ts +15 -0
  104. package/dist/runtime/duration.d.ts +2 -0
  105. package/dist/runtime/execute.d.ts +20 -0
  106. package/dist/runtime/lifecycle.d.ts +8 -0
  107. package/dist/runtime/outward.d.ts +11 -0
  108. package/dist/runtime/polling.d.ts +13 -0
  109. package/dist/runtime/process.d.ts +4 -0
  110. package/docs/cli-experience.md +177 -0
  111. package/docs/provider.md +177 -0
  112. package/docs/reference.md +181 -0
  113. package/example-config.yaml +36 -0
  114. package/examples/custom/README.md +57 -0
  115. package/examples/custom/provider.mjs +54 -0
  116. package/examples/custom/webfox.json +18 -0
  117. package/package.json +122 -8
  118. package/index.js +0 -2
@@ -0,0 +1,4270 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://unpkg.com/webfox@4.0.0/dist/config.schema.json",
4
+ "title": "webfox configuration",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "properties": {
8
+ "$schema": {
9
+ "type": "string",
10
+ "minLength": 1
11
+ },
12
+ "defaults": {
13
+ "type": "object",
14
+ "additionalProperties": false,
15
+ "properties": {
16
+ "search": {
17
+ "type": "object",
18
+ "additionalProperties": false,
19
+ "properties": {
20
+ "provider": {
21
+ "enum": [
22
+ "brave",
23
+ "custom",
24
+ "exa",
25
+ "firecrawl",
26
+ "linkup",
27
+ "ollama",
28
+ "openai",
29
+ "parallel",
30
+ "perplexity",
31
+ "serper",
32
+ "tavily",
33
+ "valyu"
34
+ ]
35
+ },
36
+ "maxResults": {
37
+ "type": "integer",
38
+ "minimum": 1
39
+ }
40
+ }
41
+ },
42
+ "contents": {
43
+ "type": "object",
44
+ "additionalProperties": false,
45
+ "properties": {
46
+ "provider": {
47
+ "enum": [
48
+ "cloudflare",
49
+ "custom",
50
+ "exa",
51
+ "firecrawl",
52
+ "linkup",
53
+ "ollama",
54
+ "parallel",
55
+ "tavily",
56
+ "valyu"
57
+ ]
58
+ }
59
+ }
60
+ },
61
+ "answer": {
62
+ "type": "object",
63
+ "additionalProperties": false,
64
+ "properties": {
65
+ "provider": {
66
+ "enum": [
67
+ "brave",
68
+ "custom",
69
+ "exa",
70
+ "firecrawl",
71
+ "gemini",
72
+ "openai",
73
+ "perplexity",
74
+ "valyu"
75
+ ]
76
+ }
77
+ }
78
+ },
79
+ "research": {
80
+ "type": "object",
81
+ "additionalProperties": false,
82
+ "properties": {
83
+ "provider": {
84
+ "enum": [
85
+ "brave",
86
+ "custom",
87
+ "exa",
88
+ "gemini",
89
+ "linkup",
90
+ "openai",
91
+ "perplexity",
92
+ "valyu"
93
+ ]
94
+ }
95
+ }
96
+ }
97
+ }
98
+ },
99
+ "execution": {
100
+ "type": "object",
101
+ "additionalProperties": false,
102
+ "properties": {
103
+ "timeoutMs": {
104
+ "type": "integer",
105
+ "minimum": 1,
106
+ "maximum": 2147483647
107
+ },
108
+ "researchTimeoutMs": {
109
+ "type": "integer",
110
+ "minimum": 1,
111
+ "maximum": 2147483647
112
+ },
113
+ "retries": {
114
+ "type": "integer",
115
+ "minimum": 0
116
+ },
117
+ "retryDelayMs": {
118
+ "type": "integer",
119
+ "minimum": 0
120
+ },
121
+ "concurrency": {
122
+ "type": "integer",
123
+ "minimum": 1
124
+ }
125
+ }
126
+ },
127
+ "providers": {
128
+ "type": "object",
129
+ "additionalProperties": false,
130
+ "properties": {
131
+ "brave": {
132
+ "type": "object",
133
+ "additionalProperties": false,
134
+ "properties": {
135
+ "credentials": {
136
+ "type": "object",
137
+ "additionalProperties": false,
138
+ "properties": {
139
+ "search": {
140
+ "oneOf": [
141
+ {
142
+ "type": "object",
143
+ "additionalProperties": false,
144
+ "properties": {
145
+ "env": {
146
+ "type": "string",
147
+ "minLength": 1
148
+ }
149
+ },
150
+ "required": ["env"]
151
+ },
152
+ {
153
+ "type": "object",
154
+ "additionalProperties": false,
155
+ "properties": {
156
+ "value": {
157
+ "type": "string",
158
+ "minLength": 1
159
+ }
160
+ },
161
+ "required": ["value"]
162
+ },
163
+ {
164
+ "type": "object",
165
+ "additionalProperties": false,
166
+ "properties": {
167
+ "command": {
168
+ "type": "array",
169
+ "minItems": 1,
170
+ "items": {
171
+ "type": "string",
172
+ "minLength": 1
173
+ }
174
+ }
175
+ },
176
+ "required": ["command"]
177
+ }
178
+ ]
179
+ },
180
+ "answers": {
181
+ "oneOf": [
182
+ {
183
+ "type": "object",
184
+ "additionalProperties": false,
185
+ "properties": {
186
+ "env": {
187
+ "type": "string",
188
+ "minLength": 1
189
+ }
190
+ },
191
+ "required": ["env"]
192
+ },
193
+ {
194
+ "type": "object",
195
+ "additionalProperties": false,
196
+ "properties": {
197
+ "value": {
198
+ "type": "string",
199
+ "minLength": 1
200
+ }
201
+ },
202
+ "required": ["value"]
203
+ },
204
+ {
205
+ "type": "object",
206
+ "additionalProperties": false,
207
+ "properties": {
208
+ "command": {
209
+ "type": "array",
210
+ "minItems": 1,
211
+ "items": {
212
+ "type": "string",
213
+ "minLength": 1
214
+ }
215
+ }
216
+ },
217
+ "required": ["command"]
218
+ }
219
+ ]
220
+ }
221
+ }
222
+ },
223
+ "baseUrl": {
224
+ "type": "string",
225
+ "minLength": 1
226
+ },
227
+ "options": {
228
+ "type": "object",
229
+ "additionalProperties": false,
230
+ "properties": {
231
+ "search": {
232
+ "type": "object",
233
+ "properties": {
234
+ "mode": {
235
+ "enum": [
236
+ "web",
237
+ "llm_context",
238
+ "news",
239
+ "videos",
240
+ "images",
241
+ "places"
242
+ ],
243
+ "description": "Brave search mode. Use 'news' for recent journalism or current events, 'videos' for clips/tutorials, 'images' for visual references, 'places' for local businesses, venues, cafes, restaurants, hotels, shops, or near/in-location searches, and 'llm_context' for retrieval context."
244
+ },
245
+ "common": {
246
+ "type": "object",
247
+ "properties": {
248
+ "country": {
249
+ "type": "string",
250
+ "description": "Country code used to localize Brave results, for example 'US'."
251
+ },
252
+ "search_lang": {
253
+ "type": "string",
254
+ "description": "Content language for Brave results, for example 'en'."
255
+ },
256
+ "ui_lang": {
257
+ "type": "string",
258
+ "description": "UI language for response metadata, for example 'en-US'."
259
+ }
260
+ },
261
+ "description": "Common Brave query options merged into the selected mode's options.",
262
+ "additionalProperties": false
263
+ },
264
+ "web": {
265
+ "type": "object",
266
+ "properties": {
267
+ "country": {
268
+ "type": "string",
269
+ "description": "Country code used to localize Brave results, for example 'US'."
270
+ },
271
+ "search_lang": {
272
+ "type": "string",
273
+ "description": "Content language for Brave results, for example 'en'."
274
+ },
275
+ "ui_lang": {
276
+ "type": "string",
277
+ "description": "UI language for response metadata, for example 'en-US'."
278
+ },
279
+ "freshness": {
280
+ "type": "string",
281
+ "description": "Freshness filter such as 'pd' (24h), 'pw' (7d), 'pm' (31d), 'py' (year), or a Brave date range."
282
+ },
283
+ "safesearch": {
284
+ "enum": ["off", "moderate", "strict"],
285
+ "description": "Safe-search filtering level."
286
+ },
287
+ "spellcheck": {
288
+ "type": "boolean",
289
+ "description": "Whether Brave may spellcheck the query."
290
+ },
291
+ "goggles": {
292
+ "type": "string",
293
+ "description": "Brave Goggles URL or inline definition."
294
+ },
295
+ "extra_snippets": {
296
+ "type": "boolean",
297
+ "description": "Whether to ask Brave for extra snippets."
298
+ },
299
+ "offset": {
300
+ "type": "integer",
301
+ "minimum": 0,
302
+ "description": "Brave result page offset for paginated requests."
303
+ },
304
+ "enable_rich_callback": {
305
+ "type": "boolean",
306
+ "description": "Whether to enable Brave rich callback metadata."
307
+ }
308
+ },
309
+ "description": "Options for Brave Web Search mode.",
310
+ "additionalProperties": false
311
+ },
312
+ "llmContext": {
313
+ "type": "object",
314
+ "properties": {
315
+ "count": {
316
+ "type": "integer",
317
+ "minimum": 1,
318
+ "maximum": 50,
319
+ "description": "Mode-specific result count override. Prefer top-level maxResults unless Brave-specific pagination is needed."
320
+ },
321
+ "maximum_number_of_urls": {
322
+ "type": "integer",
323
+ "minimum": 1,
324
+ "description": "Maximum source URLs."
325
+ },
326
+ "maximum_number_of_tokens": {
327
+ "type": "integer",
328
+ "minimum": 1,
329
+ "description": "Maximum context tokens."
330
+ },
331
+ "maximum_number_of_snippets": {
332
+ "type": "integer",
333
+ "minimum": 1,
334
+ "description": "Maximum snippets."
335
+ },
336
+ "maximum_number_of_tokens_per_url": {
337
+ "type": "integer",
338
+ "minimum": 1,
339
+ "description": "Maximum context tokens per URL."
340
+ },
341
+ "maximum_number_of_snippets_per_url": {
342
+ "type": "integer",
343
+ "minimum": 1,
344
+ "description": "Maximum snippets per URL."
345
+ },
346
+ "context_threshold_mode": {
347
+ "type": "string",
348
+ "description": "Brave LLM Context threshold mode."
349
+ },
350
+ "enable_local": {
351
+ "type": "boolean",
352
+ "description": "Whether to include local results."
353
+ },
354
+ "enable_source_metadata": {
355
+ "type": "boolean",
356
+ "description": "Whether to include source metadata in grounding."
357
+ },
358
+ "country": {
359
+ "type": "string",
360
+ "description": "Country code used to localize Brave results, for example 'US'."
361
+ },
362
+ "search_lang": {
363
+ "type": "string",
364
+ "description": "Content language for Brave results, for example 'en'."
365
+ },
366
+ "ui_lang": {
367
+ "type": "string",
368
+ "description": "UI language for response metadata, for example 'en-US'."
369
+ },
370
+ "freshness": {
371
+ "type": "string",
372
+ "description": "Freshness filter such as 'pd' (24h), 'pw' (7d), 'pm' (31d), 'py' (year), or a Brave date range."
373
+ },
374
+ "safesearch": {
375
+ "enum": ["off", "moderate", "strict"],
376
+ "description": "Safe-search filtering level."
377
+ },
378
+ "spellcheck": {
379
+ "type": "boolean",
380
+ "description": "Whether Brave may spellcheck the query."
381
+ },
382
+ "goggles": {
383
+ "type": "string",
384
+ "description": "Brave Goggles URL or inline definition."
385
+ }
386
+ },
387
+ "description": "Options for Brave LLM Context mode.",
388
+ "additionalProperties": false
389
+ },
390
+ "news": {
391
+ "type": "object",
392
+ "properties": {
393
+ "country": {
394
+ "type": "string",
395
+ "description": "Country code used to localize Brave results, for example 'US'."
396
+ },
397
+ "search_lang": {
398
+ "type": "string",
399
+ "description": "Content language for Brave results, for example 'en'."
400
+ },
401
+ "ui_lang": {
402
+ "type": "string",
403
+ "description": "UI language for response metadata, for example 'en-US'."
404
+ },
405
+ "freshness": {
406
+ "type": "string",
407
+ "description": "Freshness filter such as 'pd' (24h), 'pw' (7d), 'pm' (31d), 'py' (year), or a Brave date range."
408
+ },
409
+ "safesearch": {
410
+ "enum": ["off", "moderate", "strict"],
411
+ "description": "Safe-search filtering level."
412
+ },
413
+ "spellcheck": {
414
+ "type": "boolean",
415
+ "description": "Whether Brave may spellcheck the query."
416
+ },
417
+ "goggles": {
418
+ "type": "string",
419
+ "description": "Brave Goggles URL or inline definition."
420
+ },
421
+ "extra_snippets": {
422
+ "type": "boolean",
423
+ "description": "Whether to ask Brave for extra snippets."
424
+ },
425
+ "offset": {
426
+ "type": "integer",
427
+ "minimum": 0,
428
+ "description": "Brave result page offset for paginated requests."
429
+ },
430
+ "count": {
431
+ "type": "integer",
432
+ "minimum": 1,
433
+ "maximum": 50,
434
+ "description": "Mode-specific result count override. Prefer top-level maxResults unless Brave-specific pagination is needed."
435
+ }
436
+ },
437
+ "description": "Options for Brave News Search mode.",
438
+ "additionalProperties": false
439
+ },
440
+ "videos": {
441
+ "type": "object",
442
+ "properties": {
443
+ "country": {
444
+ "type": "string",
445
+ "description": "Country code used to localize Brave results, for example 'US'."
446
+ },
447
+ "search_lang": {
448
+ "type": "string",
449
+ "description": "Content language for Brave results, for example 'en'."
450
+ },
451
+ "ui_lang": {
452
+ "type": "string",
453
+ "description": "UI language for response metadata, for example 'en-US'."
454
+ },
455
+ "freshness": {
456
+ "type": "string",
457
+ "description": "Freshness filter such as 'pd' (24h), 'pw' (7d), 'pm' (31d), 'py' (year), or a Brave date range."
458
+ },
459
+ "safesearch": {
460
+ "enum": ["off", "moderate", "strict"],
461
+ "description": "Safe-search filtering level."
462
+ },
463
+ "spellcheck": {
464
+ "type": "boolean",
465
+ "description": "Whether Brave may spellcheck the query."
466
+ },
467
+ "offset": {
468
+ "type": "integer",
469
+ "minimum": 0,
470
+ "description": "Brave result page offset for paginated requests."
471
+ },
472
+ "count": {
473
+ "type": "integer",
474
+ "minimum": 1,
475
+ "maximum": 50,
476
+ "description": "Mode-specific result count override. Prefer top-level maxResults unless Brave-specific pagination is needed."
477
+ }
478
+ },
479
+ "description": "Options for Brave Video Search mode.",
480
+ "additionalProperties": false
481
+ },
482
+ "images": {
483
+ "type": "object",
484
+ "properties": {
485
+ "country": {
486
+ "type": "string",
487
+ "description": "Country code used to localize Brave results, for example 'US'."
488
+ },
489
+ "search_lang": {
490
+ "type": "string",
491
+ "description": "Content language for Brave results, for example 'en'."
492
+ },
493
+ "ui_lang": {
494
+ "type": "string",
495
+ "description": "UI language for response metadata, for example 'en-US'."
496
+ },
497
+ "safesearch": {
498
+ "enum": ["off", "moderate", "strict"],
499
+ "description": "Safe-search filtering level."
500
+ },
501
+ "spellcheck": {
502
+ "type": "boolean",
503
+ "description": "Whether Brave may spellcheck the query."
504
+ },
505
+ "count": {
506
+ "type": "integer",
507
+ "minimum": 1,
508
+ "maximum": 50,
509
+ "description": "Mode-specific result count override. Prefer top-level maxResults unless Brave-specific pagination is needed."
510
+ }
511
+ },
512
+ "description": "Options for Brave Image Search mode.",
513
+ "additionalProperties": false
514
+ },
515
+ "places": {
516
+ "type": "object",
517
+ "properties": {
518
+ "country": {
519
+ "type": "string",
520
+ "description": "Country code used to localize Brave results, for example 'US'."
521
+ },
522
+ "search_lang": {
523
+ "type": "string",
524
+ "description": "Content language for Brave results, for example 'en'."
525
+ },
526
+ "ui_lang": {
527
+ "type": "string",
528
+ "description": "UI language for response metadata, for example 'en-US'."
529
+ },
530
+ "latitude": {
531
+ "type": "number",
532
+ "description": "Latitude for local place search."
533
+ },
534
+ "longitude": {
535
+ "type": "number",
536
+ "description": "Longitude for local place search."
537
+ },
538
+ "location": {
539
+ "type": "string",
540
+ "description": "Human-readable local search location, e.g. 'Eppendorf, Hamburg, Germany'. Use with mode='places' for neighborhood or near-me style searches."
541
+ },
542
+ "radius": {
543
+ "type": "number",
544
+ "description": "Local search radius."
545
+ },
546
+ "units": {
547
+ "type": "string",
548
+ "description": "Distance units for local search."
549
+ },
550
+ "safesearch": {
551
+ "enum": ["off", "moderate", "strict"],
552
+ "description": "Safe-search filtering level."
553
+ },
554
+ "spellcheck": {
555
+ "type": "boolean",
556
+ "description": "Whether Brave may spellcheck the query."
557
+ },
558
+ "geoloc": {
559
+ "type": "string",
560
+ "description": "Optional geolocation token used to refine results."
561
+ },
562
+ "count": {
563
+ "type": "integer",
564
+ "minimum": 1,
565
+ "maximum": 50,
566
+ "description": "Mode-specific result count override. Prefer top-level maxResults unless Brave-specific pagination is needed."
567
+ },
568
+ "includeDetails": {
569
+ "type": "boolean",
570
+ "description": "Places mode only. Fetch detailed POI metadata when the task needs contact info, opening hours, ratings/review counts, photos, profiles, or richer address/distance data. Leave off for simple place listings to avoid extra latency and quota usage."
571
+ },
572
+ "includeDescriptions": {
573
+ "type": "boolean",
574
+ "description": "Places mode only. Fetch AI-generated POI descriptions when the task needs qualitative summaries or short explanations of places. Leave off for simple nearby/place listing queries to avoid extra latency and quota usage."
575
+ }
576
+ },
577
+ "description": "Options for Brave Local Place Search mode.",
578
+ "additionalProperties": false
579
+ }
580
+ },
581
+ "description": "Brave search options.",
582
+ "additionalProperties": false
583
+ },
584
+ "answer": {
585
+ "type": "object",
586
+ "properties": {
587
+ "model": {
588
+ "enum": ["brave", "brave-pro"],
589
+ "description": "Brave Answers model. Defaults to 'brave'."
590
+ },
591
+ "country": {
592
+ "type": "string"
593
+ },
594
+ "language": {
595
+ "type": "string"
596
+ },
597
+ "safesearch": {
598
+ "enum": ["off", "moderate", "strict"],
599
+ "description": "Safe-search filtering level."
600
+ },
601
+ "enable_citations": {
602
+ "type": "boolean"
603
+ },
604
+ "enable_entities": {
605
+ "type": "boolean"
606
+ },
607
+ "max_completion_tokens": {
608
+ "type": "integer",
609
+ "minimum": 1
610
+ }
611
+ },
612
+ "description": "Brave answer options.",
613
+ "additionalProperties": false
614
+ },
615
+ "research": {
616
+ "type": "object",
617
+ "properties": {
618
+ "model": {
619
+ "enum": ["brave", "brave-pro"],
620
+ "description": "Brave Answers model. Defaults to 'brave'."
621
+ },
622
+ "country": {
623
+ "type": "string"
624
+ },
625
+ "language": {
626
+ "type": "string"
627
+ },
628
+ "safesearch": {
629
+ "enum": ["off", "moderate", "strict"],
630
+ "description": "Safe-search filtering level."
631
+ },
632
+ "enable_entities": {
633
+ "type": "boolean"
634
+ },
635
+ "enable_citations": {
636
+ "type": "boolean",
637
+ "description": "Accepted for compatibility but forced to false for Brave research mode."
638
+ },
639
+ "max_completion_tokens": {
640
+ "type": "integer",
641
+ "minimum": 1
642
+ },
643
+ "research_allow_thinking": {
644
+ "type": "boolean"
645
+ },
646
+ "research_maximum_number_of_tokens_per_query": {
647
+ "type": "integer",
648
+ "minimum": 1
649
+ },
650
+ "research_maximum_number_of_queries": {
651
+ "type": "integer",
652
+ "minimum": 1
653
+ },
654
+ "research_maximum_number_of_iterations": {
655
+ "type": "integer",
656
+ "minimum": 1
657
+ },
658
+ "research_maximum_number_of_seconds": {
659
+ "type": "integer",
660
+ "minimum": 1
661
+ },
662
+ "research_maximum_number_of_results_per_query": {
663
+ "type": "integer",
664
+ "minimum": 1
665
+ }
666
+ },
667
+ "description": "Brave research options.",
668
+ "additionalProperties": false
669
+ }
670
+ }
671
+ }
672
+ }
673
+ },
674
+ "cloudflare": {
675
+ "type": "object",
676
+ "additionalProperties": false,
677
+ "properties": {
678
+ "credentials": {
679
+ "type": "object",
680
+ "additionalProperties": false,
681
+ "properties": {
682
+ "api": {
683
+ "oneOf": [
684
+ {
685
+ "type": "object",
686
+ "additionalProperties": false,
687
+ "properties": {
688
+ "env": {
689
+ "type": "string",
690
+ "minLength": 1
691
+ }
692
+ },
693
+ "required": ["env"]
694
+ },
695
+ {
696
+ "type": "object",
697
+ "additionalProperties": false,
698
+ "properties": {
699
+ "value": {
700
+ "type": "string",
701
+ "minLength": 1
702
+ }
703
+ },
704
+ "required": ["value"]
705
+ },
706
+ {
707
+ "type": "object",
708
+ "additionalProperties": false,
709
+ "properties": {
710
+ "command": {
711
+ "type": "array",
712
+ "minItems": 1,
713
+ "items": {
714
+ "type": "string",
715
+ "minLength": 1
716
+ }
717
+ }
718
+ },
719
+ "required": ["command"]
720
+ }
721
+ ]
722
+ }
723
+ }
724
+ },
725
+ "accountId": {
726
+ "oneOf": [
727
+ {
728
+ "type": "object",
729
+ "additionalProperties": false,
730
+ "properties": {
731
+ "env": {
732
+ "type": "string",
733
+ "minLength": 1
734
+ }
735
+ },
736
+ "required": ["env"]
737
+ },
738
+ {
739
+ "type": "object",
740
+ "additionalProperties": false,
741
+ "properties": {
742
+ "value": {
743
+ "type": "string",
744
+ "minLength": 1
745
+ }
746
+ },
747
+ "required": ["value"]
748
+ },
749
+ {
750
+ "type": "object",
751
+ "additionalProperties": false,
752
+ "properties": {
753
+ "command": {
754
+ "type": "array",
755
+ "minItems": 1,
756
+ "items": {
757
+ "type": "string",
758
+ "minLength": 1
759
+ }
760
+ }
761
+ },
762
+ "required": ["command"]
763
+ }
764
+ ]
765
+ },
766
+ "options": {
767
+ "type": "object",
768
+ "additionalProperties": false,
769
+ "properties": {
770
+ "contents": {
771
+ "type": "object",
772
+ "properties": {
773
+ "cacheTTL": {
774
+ "type": "number",
775
+ "minimum": 0,
776
+ "description": "Cache lifetime in seconds; 0 disables caching."
777
+ },
778
+ "actionTimeout": {
779
+ "type": "number",
780
+ "minimum": 0,
781
+ "description": "Post-navigation action timeout in milliseconds."
782
+ },
783
+ "waitForTimeout": {
784
+ "type": "number",
785
+ "minimum": 0,
786
+ "description": "Milliseconds to wait before extraction."
787
+ },
788
+ "waitForSelector": {
789
+ "type": "object",
790
+ "properties": {
791
+ "selector": {
792
+ "type": "string",
793
+ "minLength": 1
794
+ },
795
+ "timeout": {
796
+ "type": "number",
797
+ "minimum": 0
798
+ },
799
+ "visible": {
800
+ "type": "boolean",
801
+ "const": true
802
+ },
803
+ "hidden": {
804
+ "type": "boolean",
805
+ "const": true
806
+ }
807
+ },
808
+ "description": "Wait for a page element.",
809
+ "additionalProperties": false
810
+ },
811
+ "userAgent": {
812
+ "type": "string",
813
+ "description": "Browser user agent."
814
+ },
815
+ "setJavaScriptEnabled": {
816
+ "type": "boolean",
817
+ "description": "Enable page JavaScript."
818
+ },
819
+ "gotoOptions": {
820
+ "type": "object",
821
+ "properties": {
822
+ "timeout": {
823
+ "type": "number",
824
+ "minimum": 0,
825
+ "description": "Navigation timeout in milliseconds."
826
+ },
827
+ "waitUntil": {
828
+ "anyOf": [
829
+ {
830
+ "type": "string",
831
+ "const": "load"
832
+ },
833
+ {
834
+ "type": "string",
835
+ "const": "domcontentloaded"
836
+ },
837
+ {
838
+ "type": "string",
839
+ "const": "networkidle0"
840
+ },
841
+ {
842
+ "type": "string",
843
+ "const": "networkidle2"
844
+ }
845
+ ],
846
+ "description": "When to consider navigation complete."
847
+ }
848
+ },
849
+ "description": "Navigation options.",
850
+ "additionalProperties": false
851
+ }
852
+ },
853
+ "description": "Cloudflare Browser Rendering options.",
854
+ "additionalProperties": false
855
+ }
856
+ }
857
+ }
858
+ }
859
+ },
860
+ "custom": {
861
+ "type": "object",
862
+ "additionalProperties": false,
863
+ "properties": {
864
+ "commands": {
865
+ "type": "object",
866
+ "additionalProperties": false,
867
+ "properties": {
868
+ "search": {
869
+ "type": "object",
870
+ "additionalProperties": false,
871
+ "properties": {
872
+ "argv": {
873
+ "type": "array",
874
+ "minItems": 1,
875
+ "items": {
876
+ "type": "string",
877
+ "minLength": 1
878
+ }
879
+ },
880
+ "cwd": {
881
+ "type": "string",
882
+ "minLength": 1
883
+ },
884
+ "env": {
885
+ "type": "object",
886
+ "additionalProperties": {
887
+ "oneOf": [
888
+ {
889
+ "type": "object",
890
+ "additionalProperties": false,
891
+ "properties": {
892
+ "env": {
893
+ "type": "string",
894
+ "minLength": 1
895
+ }
896
+ },
897
+ "required": ["env"]
898
+ },
899
+ {
900
+ "type": "object",
901
+ "additionalProperties": false,
902
+ "properties": {
903
+ "value": {
904
+ "type": "string",
905
+ "minLength": 1
906
+ }
907
+ },
908
+ "required": ["value"]
909
+ },
910
+ {
911
+ "type": "object",
912
+ "additionalProperties": false,
913
+ "properties": {
914
+ "command": {
915
+ "type": "array",
916
+ "minItems": 1,
917
+ "items": {
918
+ "type": "string",
919
+ "minLength": 1
920
+ }
921
+ }
922
+ },
923
+ "required": ["command"]
924
+ }
925
+ ]
926
+ }
927
+ }
928
+ },
929
+ "required": ["argv"]
930
+ },
931
+ "contents": {
932
+ "type": "object",
933
+ "additionalProperties": false,
934
+ "properties": {
935
+ "argv": {
936
+ "type": "array",
937
+ "minItems": 1,
938
+ "items": {
939
+ "type": "string",
940
+ "minLength": 1
941
+ }
942
+ },
943
+ "cwd": {
944
+ "type": "string",
945
+ "minLength": 1
946
+ },
947
+ "env": {
948
+ "type": "object",
949
+ "additionalProperties": {
950
+ "oneOf": [
951
+ {
952
+ "type": "object",
953
+ "additionalProperties": false,
954
+ "properties": {
955
+ "env": {
956
+ "type": "string",
957
+ "minLength": 1
958
+ }
959
+ },
960
+ "required": ["env"]
961
+ },
962
+ {
963
+ "type": "object",
964
+ "additionalProperties": false,
965
+ "properties": {
966
+ "value": {
967
+ "type": "string",
968
+ "minLength": 1
969
+ }
970
+ },
971
+ "required": ["value"]
972
+ },
973
+ {
974
+ "type": "object",
975
+ "additionalProperties": false,
976
+ "properties": {
977
+ "command": {
978
+ "type": "array",
979
+ "minItems": 1,
980
+ "items": {
981
+ "type": "string",
982
+ "minLength": 1
983
+ }
984
+ }
985
+ },
986
+ "required": ["command"]
987
+ }
988
+ ]
989
+ }
990
+ }
991
+ },
992
+ "required": ["argv"]
993
+ },
994
+ "answer": {
995
+ "type": "object",
996
+ "additionalProperties": false,
997
+ "properties": {
998
+ "argv": {
999
+ "type": "array",
1000
+ "minItems": 1,
1001
+ "items": {
1002
+ "type": "string",
1003
+ "minLength": 1
1004
+ }
1005
+ },
1006
+ "cwd": {
1007
+ "type": "string",
1008
+ "minLength": 1
1009
+ },
1010
+ "env": {
1011
+ "type": "object",
1012
+ "additionalProperties": {
1013
+ "oneOf": [
1014
+ {
1015
+ "type": "object",
1016
+ "additionalProperties": false,
1017
+ "properties": {
1018
+ "env": {
1019
+ "type": "string",
1020
+ "minLength": 1
1021
+ }
1022
+ },
1023
+ "required": ["env"]
1024
+ },
1025
+ {
1026
+ "type": "object",
1027
+ "additionalProperties": false,
1028
+ "properties": {
1029
+ "value": {
1030
+ "type": "string",
1031
+ "minLength": 1
1032
+ }
1033
+ },
1034
+ "required": ["value"]
1035
+ },
1036
+ {
1037
+ "type": "object",
1038
+ "additionalProperties": false,
1039
+ "properties": {
1040
+ "command": {
1041
+ "type": "array",
1042
+ "minItems": 1,
1043
+ "items": {
1044
+ "type": "string",
1045
+ "minLength": 1
1046
+ }
1047
+ }
1048
+ },
1049
+ "required": ["command"]
1050
+ }
1051
+ ]
1052
+ }
1053
+ }
1054
+ },
1055
+ "required": ["argv"]
1056
+ },
1057
+ "research": {
1058
+ "type": "object",
1059
+ "additionalProperties": false,
1060
+ "properties": {
1061
+ "argv": {
1062
+ "type": "array",
1063
+ "minItems": 1,
1064
+ "items": {
1065
+ "type": "string",
1066
+ "minLength": 1
1067
+ }
1068
+ },
1069
+ "cwd": {
1070
+ "type": "string",
1071
+ "minLength": 1
1072
+ },
1073
+ "env": {
1074
+ "type": "object",
1075
+ "additionalProperties": {
1076
+ "oneOf": [
1077
+ {
1078
+ "type": "object",
1079
+ "additionalProperties": false,
1080
+ "properties": {
1081
+ "env": {
1082
+ "type": "string",
1083
+ "minLength": 1
1084
+ }
1085
+ },
1086
+ "required": ["env"]
1087
+ },
1088
+ {
1089
+ "type": "object",
1090
+ "additionalProperties": false,
1091
+ "properties": {
1092
+ "value": {
1093
+ "type": "string",
1094
+ "minLength": 1
1095
+ }
1096
+ },
1097
+ "required": ["value"]
1098
+ },
1099
+ {
1100
+ "type": "object",
1101
+ "additionalProperties": false,
1102
+ "properties": {
1103
+ "command": {
1104
+ "type": "array",
1105
+ "minItems": 1,
1106
+ "items": {
1107
+ "type": "string",
1108
+ "minLength": 1
1109
+ }
1110
+ }
1111
+ },
1112
+ "required": ["command"]
1113
+ }
1114
+ ]
1115
+ }
1116
+ }
1117
+ },
1118
+ "required": ["argv"]
1119
+ }
1120
+ }
1121
+ },
1122
+ "options": {
1123
+ "type": "object",
1124
+ "additionalProperties": false,
1125
+ "properties": {
1126
+ "search": {
1127
+ "type": "object",
1128
+ "additionalProperties": true
1129
+ },
1130
+ "contents": {
1131
+ "type": "object",
1132
+ "additionalProperties": true
1133
+ },
1134
+ "answer": {
1135
+ "type": "object",
1136
+ "additionalProperties": true
1137
+ },
1138
+ "research": {
1139
+ "type": "object",
1140
+ "additionalProperties": true
1141
+ }
1142
+ }
1143
+ }
1144
+ }
1145
+ },
1146
+ "exa": {
1147
+ "type": "object",
1148
+ "additionalProperties": false,
1149
+ "properties": {
1150
+ "credentials": {
1151
+ "type": "object",
1152
+ "additionalProperties": false,
1153
+ "properties": {
1154
+ "api": {
1155
+ "oneOf": [
1156
+ {
1157
+ "type": "object",
1158
+ "additionalProperties": false,
1159
+ "properties": {
1160
+ "env": {
1161
+ "type": "string",
1162
+ "minLength": 1
1163
+ }
1164
+ },
1165
+ "required": ["env"]
1166
+ },
1167
+ {
1168
+ "type": "object",
1169
+ "additionalProperties": false,
1170
+ "properties": {
1171
+ "value": {
1172
+ "type": "string",
1173
+ "minLength": 1
1174
+ }
1175
+ },
1176
+ "required": ["value"]
1177
+ },
1178
+ {
1179
+ "type": "object",
1180
+ "additionalProperties": false,
1181
+ "properties": {
1182
+ "command": {
1183
+ "type": "array",
1184
+ "minItems": 1,
1185
+ "items": {
1186
+ "type": "string",
1187
+ "minLength": 1
1188
+ }
1189
+ }
1190
+ },
1191
+ "required": ["command"]
1192
+ }
1193
+ ]
1194
+ }
1195
+ }
1196
+ },
1197
+ "baseUrl": {
1198
+ "type": "string",
1199
+ "minLength": 1
1200
+ },
1201
+ "options": {
1202
+ "type": "object",
1203
+ "additionalProperties": false,
1204
+ "properties": {
1205
+ "search": {
1206
+ "type": "object",
1207
+ "properties": {
1208
+ "type": {
1209
+ "anyOf": [
1210
+ {
1211
+ "type": "string",
1212
+ "const": "keyword"
1213
+ },
1214
+ {
1215
+ "type": "string",
1216
+ "const": "neural"
1217
+ },
1218
+ {
1219
+ "type": "string",
1220
+ "const": "auto"
1221
+ },
1222
+ {
1223
+ "type": "string",
1224
+ "const": "hybrid"
1225
+ },
1226
+ {
1227
+ "type": "string",
1228
+ "const": "fast"
1229
+ },
1230
+ {
1231
+ "type": "string",
1232
+ "const": "instant"
1233
+ },
1234
+ {
1235
+ "type": "string",
1236
+ "const": "deep-lite"
1237
+ },
1238
+ {
1239
+ "type": "string",
1240
+ "const": "deep"
1241
+ },
1242
+ {
1243
+ "type": "string",
1244
+ "const": "deep-reasoning"
1245
+ }
1246
+ ],
1247
+ "description": "Exa search mode."
1248
+ },
1249
+ "category": {
1250
+ "type": "string",
1251
+ "description": "Filter by category (e.g., 'company', 'research paper')."
1252
+ },
1253
+ "includeDomains": {
1254
+ "type": "array",
1255
+ "items": {
1256
+ "type": "string"
1257
+ },
1258
+ "description": "Restrict results to these domains."
1259
+ },
1260
+ "excludeDomains": {
1261
+ "type": "array",
1262
+ "items": {
1263
+ "type": "string"
1264
+ },
1265
+ "description": "Exclude these domains."
1266
+ },
1267
+ "startPublishedDate": {
1268
+ "type": "string",
1269
+ "description": "ISO date string for earliest publish date."
1270
+ },
1271
+ "endPublishedDate": {
1272
+ "type": "string",
1273
+ "description": "ISO date string for latest publish date."
1274
+ },
1275
+ "includeText": {
1276
+ "type": "array",
1277
+ "items": {
1278
+ "type": "string"
1279
+ },
1280
+ "description": "Require result page text to contain these terms. Exa currently supports one short phrase."
1281
+ },
1282
+ "excludeText": {
1283
+ "type": "array",
1284
+ "items": {
1285
+ "type": "string"
1286
+ },
1287
+ "description": "Require result page text not to contain these terms. Exa currently supports one short phrase."
1288
+ },
1289
+ "systemPrompt": {
1290
+ "type": "string",
1291
+ "description": "Additional Exa instructions for deep search source selection and synthesis."
1292
+ },
1293
+ "additionalQueries": {
1294
+ "type": "array",
1295
+ "items": {
1296
+ "type": "string"
1297
+ },
1298
+ "maxItems": 5,
1299
+ "description": "Alternative query formulations for Exa deep search variants."
1300
+ },
1301
+ "userLocation": {
1302
+ "type": "string",
1303
+ "description": "Two-letter ISO country code for the user location, such as 'US'."
1304
+ },
1305
+ "contents": {
1306
+ "type": "object",
1307
+ "properties": {
1308
+ "text": {
1309
+ "anyOf": [
1310
+ {
1311
+ "type": "boolean"
1312
+ },
1313
+ {
1314
+ "type": "object",
1315
+ "properties": {
1316
+ "maxCharacters": {
1317
+ "type": "integer",
1318
+ "minimum": 1,
1319
+ "description": "Maximum text characters per result."
1320
+ },
1321
+ "includeHtmlTags": {
1322
+ "type": "boolean",
1323
+ "description": "Include HTML tags in returned text."
1324
+ },
1325
+ "verbosity": {
1326
+ "anyOf": [
1327
+ {
1328
+ "type": "string",
1329
+ "const": "compact"
1330
+ },
1331
+ {
1332
+ "type": "string",
1333
+ "const": "standard"
1334
+ },
1335
+ {
1336
+ "type": "string",
1337
+ "const": "full"
1338
+ }
1339
+ ],
1340
+ "description": "Verbosity level for returned text."
1341
+ }
1342
+ },
1343
+ "additionalProperties": false
1344
+ }
1345
+ ],
1346
+ "description": "Include text content."
1347
+ },
1348
+ "highlights": {
1349
+ "anyOf": [
1350
+ {
1351
+ "type": "boolean"
1352
+ },
1353
+ {
1354
+ "type": "object",
1355
+ "properties": {
1356
+ "query": {
1357
+ "type": "string",
1358
+ "description": "Query to use for highlights."
1359
+ },
1360
+ "maxCharacters": {
1361
+ "type": "integer",
1362
+ "minimum": 1,
1363
+ "description": "Maximum highlight characters."
1364
+ }
1365
+ },
1366
+ "additionalProperties": false
1367
+ }
1368
+ ],
1369
+ "description": "Include highlighted excerpts."
1370
+ },
1371
+ "summary": {
1372
+ "anyOf": [
1373
+ {
1374
+ "type": "boolean"
1375
+ },
1376
+ {
1377
+ "type": "object",
1378
+ "properties": {
1379
+ "query": {
1380
+ "type": "string",
1381
+ "description": "Query to guide summary generation."
1382
+ }
1383
+ },
1384
+ "additionalProperties": false
1385
+ }
1386
+ ],
1387
+ "description": "Include AI-generated summary."
1388
+ },
1389
+ "livecrawlTimeout": {
1390
+ "type": "integer",
1391
+ "minimum": 1,
1392
+ "maximum": 90000,
1393
+ "description": "Content-fetch timeout in milliseconds (1–90000). Does not select a freshness policy."
1394
+ },
1395
+ "maxAgeHours": {
1396
+ "type": "integer",
1397
+ "minimum": -1,
1398
+ "maximum": 720,
1399
+ "description": "Content freshness in whole hours: 0 fetches fresh, -1 uses cache only, 1–720 bounds cache age. Omit for fallback fetching. Set only inside options.contents; do not also send deprecated livecrawl."
1400
+ },
1401
+ "filterEmptyResults": {
1402
+ "type": "boolean",
1403
+ "description": "Filter results with no contents."
1404
+ },
1405
+ "subpages": {
1406
+ "type": "integer",
1407
+ "minimum": 0,
1408
+ "description": "Number of subpages to return for each result."
1409
+ },
1410
+ "subpageTarget": {
1411
+ "anyOf": [
1412
+ {
1413
+ "type": "string"
1414
+ },
1415
+ {
1416
+ "type": "array",
1417
+ "items": {
1418
+ "type": "string"
1419
+ }
1420
+ }
1421
+ ],
1422
+ "description": "Text used to match/rank returned subpages."
1423
+ },
1424
+ "extras": {
1425
+ "type": "object",
1426
+ "properties": {
1427
+ "links": {
1428
+ "type": "integer",
1429
+ "minimum": 0,
1430
+ "description": "Number of page links to include."
1431
+ },
1432
+ "imageLinks": {
1433
+ "type": "integer",
1434
+ "minimum": 0,
1435
+ "description": "Number of image links to include."
1436
+ }
1437
+ },
1438
+ "additionalProperties": false
1439
+ }
1440
+ },
1441
+ "additionalProperties": false,
1442
+ "description": "Content extraction and freshness controls. Put text, highlights, summary, maxAgeHours, and livecrawlTimeout here, not directly in options."
1443
+ }
1444
+ },
1445
+ "description": "Exa search options.",
1446
+ "additionalProperties": false
1447
+ },
1448
+ "contents": {
1449
+ "type": "object",
1450
+ "additionalProperties": false
1451
+ },
1452
+ "answer": {
1453
+ "type": "object",
1454
+ "additionalProperties": false
1455
+ },
1456
+ "research": {
1457
+ "type": "object",
1458
+ "additionalProperties": false
1459
+ }
1460
+ }
1461
+ }
1462
+ }
1463
+ },
1464
+ "firecrawl": {
1465
+ "type": "object",
1466
+ "additionalProperties": false,
1467
+ "properties": {
1468
+ "credentials": {
1469
+ "type": "object",
1470
+ "additionalProperties": false,
1471
+ "properties": {
1472
+ "api": {
1473
+ "oneOf": [
1474
+ {
1475
+ "type": "object",
1476
+ "additionalProperties": false,
1477
+ "properties": {
1478
+ "env": {
1479
+ "type": "string",
1480
+ "minLength": 1
1481
+ }
1482
+ },
1483
+ "required": ["env"]
1484
+ },
1485
+ {
1486
+ "type": "object",
1487
+ "additionalProperties": false,
1488
+ "properties": {
1489
+ "value": {
1490
+ "type": "string",
1491
+ "minLength": 1
1492
+ }
1493
+ },
1494
+ "required": ["value"]
1495
+ },
1496
+ {
1497
+ "type": "object",
1498
+ "additionalProperties": false,
1499
+ "properties": {
1500
+ "command": {
1501
+ "type": "array",
1502
+ "minItems": 1,
1503
+ "items": {
1504
+ "type": "string",
1505
+ "minLength": 1
1506
+ }
1507
+ }
1508
+ },
1509
+ "required": ["command"]
1510
+ }
1511
+ ]
1512
+ }
1513
+ }
1514
+ },
1515
+ "baseUrl": {
1516
+ "type": "string",
1517
+ "minLength": 1
1518
+ },
1519
+ "options": {
1520
+ "type": "object",
1521
+ "additionalProperties": false,
1522
+ "properties": {
1523
+ "search": {
1524
+ "type": "object",
1525
+ "properties": {
1526
+ "sources": {
1527
+ "type": "array",
1528
+ "items": {
1529
+ "type": "string",
1530
+ "enum": ["web", "news", "images"]
1531
+ },
1532
+ "description": "Search source groups."
1533
+ },
1534
+ "categories": {
1535
+ "type": "array",
1536
+ "items": {
1537
+ "type": "string",
1538
+ "enum": ["github", "research", "pdf", "developer"]
1539
+ },
1540
+ "description": "Search categories."
1541
+ },
1542
+ "includeDomains": {
1543
+ "type": "array",
1544
+ "items": {
1545
+ "type": "string"
1546
+ },
1547
+ "description": "Restrict results to these domains."
1548
+ },
1549
+ "excludeDomains": {
1550
+ "type": "array",
1551
+ "items": {
1552
+ "type": "string"
1553
+ },
1554
+ "description": "Exclude these domains."
1555
+ },
1556
+ "tbs": {
1557
+ "type": "string",
1558
+ "description": "Google-style time-based search filter."
1559
+ },
1560
+ "ignoreInvalidURLs": {
1561
+ "type": "boolean",
1562
+ "description": "Ignore invalid result URLs."
1563
+ },
1564
+ "location": {
1565
+ "type": "string",
1566
+ "description": "Search location, for example 'Berlin, Germany'. Not a scrape location object."
1567
+ },
1568
+ "timeout": {
1569
+ "type": "integer",
1570
+ "minimum": 1,
1571
+ "description": "Request timeout in milliseconds."
1572
+ },
1573
+ "highlights": {
1574
+ "type": "boolean",
1575
+ "description": "Generate query-relevant highlights."
1576
+ },
1577
+ "scrapeOptions": {
1578
+ "type": "object",
1579
+ "properties": {
1580
+ "formats": {
1581
+ "type": "array",
1582
+ "items": {
1583
+ "type": "string",
1584
+ "enum": [
1585
+ "markdown",
1586
+ "html",
1587
+ "rawHtml",
1588
+ "links",
1589
+ "images",
1590
+ "screenshot",
1591
+ "summary",
1592
+ "json",
1593
+ "attributes",
1594
+ "changeTracking"
1595
+ ]
1596
+ },
1597
+ "description": "Output formats for scraping."
1598
+ },
1599
+ "timeout": {
1600
+ "type": "integer",
1601
+ "minimum": 1,
1602
+ "description": "Request timeout in milliseconds."
1603
+ },
1604
+ "onlyMainContent": {
1605
+ "type": "boolean",
1606
+ "description": "Extract only the main content."
1607
+ },
1608
+ "includeTags": {
1609
+ "type": "array",
1610
+ "items": {
1611
+ "type": "string"
1612
+ },
1613
+ "description": "CSS selectors to include."
1614
+ },
1615
+ "excludeTags": {
1616
+ "type": "array",
1617
+ "items": {
1618
+ "type": "string"
1619
+ },
1620
+ "description": "CSS selectors to exclude."
1621
+ },
1622
+ "waitFor": {
1623
+ "type": "integer",
1624
+ "minimum": 0,
1625
+ "description": "Milliseconds to wait before scraping."
1626
+ },
1627
+ "headers": {
1628
+ "type": "object",
1629
+ "patternProperties": {
1630
+ "^.*$": {
1631
+ "type": "string"
1632
+ }
1633
+ },
1634
+ "description": "Headers to send when scraping."
1635
+ },
1636
+ "location": {
1637
+ "type": "object",
1638
+ "properties": {
1639
+ "country": {
1640
+ "type": "string",
1641
+ "description": "Country code."
1642
+ },
1643
+ "languages": {
1644
+ "type": "array",
1645
+ "items": {
1646
+ "type": "string"
1647
+ },
1648
+ "description": "Preferred languages."
1649
+ }
1650
+ },
1651
+ "description": "Scrape location; unlike search location, this is an object.",
1652
+ "additionalProperties": false
1653
+ },
1654
+ "mobile": {
1655
+ "type": "boolean",
1656
+ "description": "Use a mobile browser profile."
1657
+ },
1658
+ "proxy": {
1659
+ "type": "string",
1660
+ "description": "Proxy mode supported by your Firecrawl deployment."
1661
+ },
1662
+ "fastMode": {
1663
+ "type": "boolean",
1664
+ "description": "Use Firecrawl fast mode."
1665
+ },
1666
+ "blockAds": {
1667
+ "type": "boolean",
1668
+ "description": "Block ads while scraping."
1669
+ },
1670
+ "removeBase64Images": {
1671
+ "type": "boolean",
1672
+ "description": "Remove base64 image data from output."
1673
+ },
1674
+ "redactPII": {
1675
+ "anyOf": [
1676
+ {
1677
+ "type": "boolean"
1678
+ },
1679
+ {
1680
+ "type": "object",
1681
+ "properties": {
1682
+ "entities": {
1683
+ "type": "array",
1684
+ "items": {
1685
+ "type": "string",
1686
+ "enum": [
1687
+ "PERSON",
1688
+ "EMAIL",
1689
+ "PHONE",
1690
+ "LOCATION",
1691
+ "FINANCIAL",
1692
+ "SECRET"
1693
+ ]
1694
+ }
1695
+ },
1696
+ "mode": {
1697
+ "type": "string",
1698
+ "enum": ["accurate", "aggressive", "fast"]
1699
+ }
1700
+ },
1701
+ "additionalProperties": false
1702
+ }
1703
+ ],
1704
+ "description": "Redact personal or sensitive data from output."
1705
+ },
1706
+ "maxAge": {
1707
+ "type": "number",
1708
+ "minimum": 0,
1709
+ "description": "Maximum cached scrape age in milliseconds; 0 bypasses reuse."
1710
+ },
1711
+ "minAge": {
1712
+ "type": "number",
1713
+ "minimum": 0,
1714
+ "description": "Minimum cached scrape age in milliseconds."
1715
+ },
1716
+ "storeInCache": {
1717
+ "type": "boolean",
1718
+ "description": "Store the scrape result in cache."
1719
+ },
1720
+ "skipTlsVerification": {
1721
+ "type": "boolean",
1722
+ "description": "Skip TLS certificate verification."
1723
+ }
1724
+ },
1725
+ "description": "Options for scraping each search result.",
1726
+ "additionalProperties": false
1727
+ }
1728
+ },
1729
+ "description": "Firecrawl search options.",
1730
+ "additionalProperties": false
1731
+ },
1732
+ "contents": {
1733
+ "type": "object",
1734
+ "properties": {
1735
+ "formats": {
1736
+ "type": "array",
1737
+ "items": {
1738
+ "type": "string",
1739
+ "enum": [
1740
+ "markdown",
1741
+ "html",
1742
+ "rawHtml",
1743
+ "links",
1744
+ "images",
1745
+ "screenshot",
1746
+ "summary",
1747
+ "json",
1748
+ "attributes",
1749
+ "changeTracking"
1750
+ ]
1751
+ },
1752
+ "description": "Output formats for scraping."
1753
+ },
1754
+ "timeout": {
1755
+ "type": "integer",
1756
+ "minimum": 1,
1757
+ "description": "Request timeout in milliseconds."
1758
+ },
1759
+ "onlyMainContent": {
1760
+ "type": "boolean",
1761
+ "description": "Extract only the main content."
1762
+ },
1763
+ "includeTags": {
1764
+ "type": "array",
1765
+ "items": {
1766
+ "type": "string"
1767
+ },
1768
+ "description": "CSS selectors to include."
1769
+ },
1770
+ "excludeTags": {
1771
+ "type": "array",
1772
+ "items": {
1773
+ "type": "string"
1774
+ },
1775
+ "description": "CSS selectors to exclude."
1776
+ },
1777
+ "waitFor": {
1778
+ "type": "integer",
1779
+ "minimum": 0,
1780
+ "description": "Milliseconds to wait before scraping."
1781
+ },
1782
+ "headers": {
1783
+ "type": "object",
1784
+ "patternProperties": {
1785
+ "^.*$": {
1786
+ "type": "string"
1787
+ }
1788
+ },
1789
+ "description": "Headers to send when scraping."
1790
+ },
1791
+ "location": {
1792
+ "type": "object",
1793
+ "properties": {
1794
+ "country": {
1795
+ "type": "string",
1796
+ "description": "Country code."
1797
+ },
1798
+ "languages": {
1799
+ "type": "array",
1800
+ "items": {
1801
+ "type": "string"
1802
+ },
1803
+ "description": "Preferred languages."
1804
+ }
1805
+ },
1806
+ "description": "Scrape location; unlike search location, this is an object.",
1807
+ "additionalProperties": false
1808
+ },
1809
+ "mobile": {
1810
+ "type": "boolean",
1811
+ "description": "Use a mobile browser profile."
1812
+ },
1813
+ "proxy": {
1814
+ "type": "string",
1815
+ "description": "Proxy mode supported by your Firecrawl deployment."
1816
+ },
1817
+ "fastMode": {
1818
+ "type": "boolean",
1819
+ "description": "Use Firecrawl fast mode."
1820
+ },
1821
+ "blockAds": {
1822
+ "type": "boolean",
1823
+ "description": "Block ads while scraping."
1824
+ },
1825
+ "removeBase64Images": {
1826
+ "type": "boolean",
1827
+ "description": "Remove base64 image data from output."
1828
+ },
1829
+ "redactPII": {
1830
+ "anyOf": [
1831
+ {
1832
+ "type": "boolean"
1833
+ },
1834
+ {
1835
+ "type": "object",
1836
+ "properties": {
1837
+ "entities": {
1838
+ "type": "array",
1839
+ "items": {
1840
+ "type": "string",
1841
+ "enum": [
1842
+ "PERSON",
1843
+ "EMAIL",
1844
+ "PHONE",
1845
+ "LOCATION",
1846
+ "FINANCIAL",
1847
+ "SECRET"
1848
+ ]
1849
+ }
1850
+ },
1851
+ "mode": {
1852
+ "type": "string",
1853
+ "enum": ["accurate", "aggressive", "fast"]
1854
+ }
1855
+ },
1856
+ "additionalProperties": false
1857
+ }
1858
+ ],
1859
+ "description": "Redact personal or sensitive data from output."
1860
+ },
1861
+ "maxAge": {
1862
+ "type": "number",
1863
+ "minimum": 0,
1864
+ "description": "Maximum cached scrape age in milliseconds; 0 bypasses reuse."
1865
+ },
1866
+ "minAge": {
1867
+ "type": "number",
1868
+ "minimum": 0,
1869
+ "description": "Minimum cached scrape age in milliseconds."
1870
+ },
1871
+ "storeInCache": {
1872
+ "type": "boolean",
1873
+ "description": "Store the scrape result in cache."
1874
+ },
1875
+ "skipTlsVerification": {
1876
+ "type": "boolean",
1877
+ "description": "Skip TLS certificate verification."
1878
+ }
1879
+ },
1880
+ "description": "Firecrawl scrape options.",
1881
+ "additionalProperties": false
1882
+ },
1883
+ "answer": {
1884
+ "type": "object",
1885
+ "properties": {
1886
+ "url": {
1887
+ "type": "string",
1888
+ "minLength": 1,
1889
+ "description": "URL of the page to ask about."
1890
+ },
1891
+ "timeout": {
1892
+ "type": "integer",
1893
+ "minimum": 1,
1894
+ "description": "Request timeout in milliseconds."
1895
+ },
1896
+ "onlyMainContent": {
1897
+ "type": "boolean",
1898
+ "description": "Extract only the main content."
1899
+ },
1900
+ "includeTags": {
1901
+ "type": "array",
1902
+ "items": {
1903
+ "type": "string"
1904
+ },
1905
+ "description": "CSS selectors to include."
1906
+ },
1907
+ "excludeTags": {
1908
+ "type": "array",
1909
+ "items": {
1910
+ "type": "string"
1911
+ },
1912
+ "description": "CSS selectors to exclude."
1913
+ },
1914
+ "waitFor": {
1915
+ "type": "integer",
1916
+ "minimum": 0,
1917
+ "description": "Milliseconds to wait before scraping."
1918
+ },
1919
+ "headers": {
1920
+ "type": "object",
1921
+ "patternProperties": {
1922
+ "^.*$": {
1923
+ "type": "string"
1924
+ }
1925
+ },
1926
+ "description": "Headers to send when scraping."
1927
+ },
1928
+ "location": {
1929
+ "type": "object",
1930
+ "properties": {
1931
+ "country": {
1932
+ "type": "string",
1933
+ "description": "Country code."
1934
+ },
1935
+ "languages": {
1936
+ "type": "array",
1937
+ "items": {
1938
+ "type": "string"
1939
+ },
1940
+ "description": "Preferred languages."
1941
+ }
1942
+ },
1943
+ "description": "Scrape location; unlike search location, this is an object.",
1944
+ "additionalProperties": false
1945
+ },
1946
+ "mobile": {
1947
+ "type": "boolean",
1948
+ "description": "Use a mobile browser profile."
1949
+ },
1950
+ "proxy": {
1951
+ "type": "string",
1952
+ "description": "Proxy mode supported by your Firecrawl deployment."
1953
+ },
1954
+ "fastMode": {
1955
+ "type": "boolean",
1956
+ "description": "Use Firecrawl fast mode."
1957
+ },
1958
+ "blockAds": {
1959
+ "type": "boolean",
1960
+ "description": "Block ads while scraping."
1961
+ },
1962
+ "removeBase64Images": {
1963
+ "type": "boolean",
1964
+ "description": "Remove base64 image data from output."
1965
+ },
1966
+ "redactPII": {
1967
+ "anyOf": [
1968
+ {
1969
+ "type": "boolean"
1970
+ },
1971
+ {
1972
+ "type": "object",
1973
+ "properties": {
1974
+ "entities": {
1975
+ "type": "array",
1976
+ "items": {
1977
+ "type": "string",
1978
+ "enum": [
1979
+ "PERSON",
1980
+ "EMAIL",
1981
+ "PHONE",
1982
+ "LOCATION",
1983
+ "FINANCIAL",
1984
+ "SECRET"
1985
+ ]
1986
+ }
1987
+ },
1988
+ "mode": {
1989
+ "type": "string",
1990
+ "enum": ["accurate", "aggressive", "fast"]
1991
+ }
1992
+ },
1993
+ "additionalProperties": false
1994
+ }
1995
+ ],
1996
+ "description": "Redact personal or sensitive data from output."
1997
+ },
1998
+ "maxAge": {
1999
+ "type": "number",
2000
+ "minimum": 0,
2001
+ "description": "Maximum cached scrape age in milliseconds; 0 bypasses reuse."
2002
+ },
2003
+ "minAge": {
2004
+ "type": "number",
2005
+ "minimum": 0,
2006
+ "description": "Minimum cached scrape age in milliseconds."
2007
+ },
2008
+ "storeInCache": {
2009
+ "type": "boolean",
2010
+ "description": "Store the scrape result in cache."
2011
+ },
2012
+ "skipTlsVerification": {
2013
+ "type": "boolean",
2014
+ "description": "Skip TLS certificate verification."
2015
+ }
2016
+ },
2017
+ "description": "Firecrawl page-question options. The URL is required; the question comes from the web_answer query.",
2018
+ "additionalProperties": false
2019
+ }
2020
+ }
2021
+ }
2022
+ }
2023
+ },
2024
+ "gemini": {
2025
+ "type": "object",
2026
+ "additionalProperties": false,
2027
+ "properties": {
2028
+ "credentials": {
2029
+ "type": "object",
2030
+ "additionalProperties": false,
2031
+ "properties": {
2032
+ "api": {
2033
+ "oneOf": [
2034
+ {
2035
+ "type": "object",
2036
+ "additionalProperties": false,
2037
+ "properties": {
2038
+ "env": {
2039
+ "type": "string",
2040
+ "minLength": 1
2041
+ }
2042
+ },
2043
+ "required": ["env"]
2044
+ },
2045
+ {
2046
+ "type": "object",
2047
+ "additionalProperties": false,
2048
+ "properties": {
2049
+ "value": {
2050
+ "type": "string",
2051
+ "minLength": 1
2052
+ }
2053
+ },
2054
+ "required": ["value"]
2055
+ },
2056
+ {
2057
+ "type": "object",
2058
+ "additionalProperties": false,
2059
+ "properties": {
2060
+ "command": {
2061
+ "type": "array",
2062
+ "minItems": 1,
2063
+ "items": {
2064
+ "type": "string",
2065
+ "minLength": 1
2066
+ }
2067
+ }
2068
+ },
2069
+ "required": ["command"]
2070
+ }
2071
+ ]
2072
+ }
2073
+ }
2074
+ },
2075
+ "options": {
2076
+ "type": "object",
2077
+ "additionalProperties": false,
2078
+ "properties": {
2079
+ "answer": {
2080
+ "type": "object",
2081
+ "properties": {
2082
+ "model": {
2083
+ "type": "string",
2084
+ "description": "Gemini model for answers (defaults to 'gemini-3.8-flash')."
2085
+ },
2086
+ "config": {
2087
+ "type": "object",
2088
+ "properties": {
2089
+ "thinkingConfig": {
2090
+ "type": "object",
2091
+ "properties": {
2092
+ "thinkingLevel": {
2093
+ "type": "string",
2094
+ "enum": ["MINIMAL", "LOW", "MEDIUM", "HIGH"],
2095
+ "description": "Model-specific thinking depth."
2096
+ },
2097
+ "thinkingBudget": {
2098
+ "type": "integer",
2099
+ "minimum": -1,
2100
+ "description": "Legacy thinking budget; -1 automatic, 0 disabled. Not supported by newer models that require thinkingLevel."
2101
+ },
2102
+ "includeThoughts": {
2103
+ "type": "boolean",
2104
+ "description": "Include available thought summaries."
2105
+ }
2106
+ },
2107
+ "description": "Generate-content thinking settings; choose controls supported by the selected model.",
2108
+ "additionalProperties": false
2109
+ },
2110
+ "labels": {
2111
+ "type": "object",
2112
+ "patternProperties": {
2113
+ "^.*$": {
2114
+ "type": "string"
2115
+ }
2116
+ },
2117
+ "description": "Request labels to attach to the Gemini call."
2118
+ },
2119
+ "temperature": {
2120
+ "type": "number",
2121
+ "description": "Sampling temperature."
2122
+ },
2123
+ "topP": {
2124
+ "type": "number",
2125
+ "description": "Top-p sampling value."
2126
+ },
2127
+ "topK": {
2128
+ "type": "integer",
2129
+ "minimum": 0,
2130
+ "description": "Top-k sampling value."
2131
+ },
2132
+ "candidateCount": {
2133
+ "type": "integer",
2134
+ "minimum": 1,
2135
+ "description": "Number of candidates to generate."
2136
+ },
2137
+ "maxOutputTokens": {
2138
+ "type": "integer",
2139
+ "minimum": 1,
2140
+ "description": "Maximum output tokens."
2141
+ }
2142
+ },
2143
+ "description": "Gemini generate-content config overrides.",
2144
+ "additionalProperties": false
2145
+ }
2146
+ },
2147
+ "description": "Gemini answer options.",
2148
+ "additionalProperties": false
2149
+ },
2150
+ "research": {
2151
+ "type": "object",
2152
+ "properties": {
2153
+ "agent_config": {
2154
+ "type": "object",
2155
+ "properties": {
2156
+ "thinking_summaries": {
2157
+ "anyOf": [
2158
+ {
2159
+ "type": "string",
2160
+ "const": "auto"
2161
+ },
2162
+ {
2163
+ "type": "string",
2164
+ "const": "none"
2165
+ }
2166
+ ],
2167
+ "description": "Whether to include thought summaries in the response."
2168
+ }
2169
+ },
2170
+ "additionalProperties": false,
2171
+ "description": "Safe Gemini deep-research agent configuration. The provider adds the required type field."
2172
+ }
2173
+ },
2174
+ "additionalProperties": false,
2175
+ "description": "Gemini research options."
2176
+ }
2177
+ }
2178
+ }
2179
+ }
2180
+ },
2181
+ "linkup": {
2182
+ "type": "object",
2183
+ "additionalProperties": false,
2184
+ "properties": {
2185
+ "credentials": {
2186
+ "type": "object",
2187
+ "additionalProperties": false,
2188
+ "properties": {
2189
+ "api": {
2190
+ "oneOf": [
2191
+ {
2192
+ "type": "object",
2193
+ "additionalProperties": false,
2194
+ "properties": {
2195
+ "env": {
2196
+ "type": "string",
2197
+ "minLength": 1
2198
+ }
2199
+ },
2200
+ "required": ["env"]
2201
+ },
2202
+ {
2203
+ "type": "object",
2204
+ "additionalProperties": false,
2205
+ "properties": {
2206
+ "value": {
2207
+ "type": "string",
2208
+ "minLength": 1
2209
+ }
2210
+ },
2211
+ "required": ["value"]
2212
+ },
2213
+ {
2214
+ "type": "object",
2215
+ "additionalProperties": false,
2216
+ "properties": {
2217
+ "command": {
2218
+ "type": "array",
2219
+ "minItems": 1,
2220
+ "items": {
2221
+ "type": "string",
2222
+ "minLength": 1
2223
+ }
2224
+ }
2225
+ },
2226
+ "required": ["command"]
2227
+ }
2228
+ ]
2229
+ }
2230
+ }
2231
+ },
2232
+ "baseUrl": {
2233
+ "type": "string",
2234
+ "minLength": 1
2235
+ },
2236
+ "options": {
2237
+ "type": "object",
2238
+ "additionalProperties": false,
2239
+ "properties": {
2240
+ "search": {
2241
+ "type": "object",
2242
+ "properties": {
2243
+ "depth": {
2244
+ "anyOf": [
2245
+ {
2246
+ "type": "string",
2247
+ "const": "standard"
2248
+ },
2249
+ {
2250
+ "type": "string",
2251
+ "const": "deep"
2252
+ }
2253
+ ],
2254
+ "description": "Search depth. 'deep' is slower but more thorough."
2255
+ },
2256
+ "includeImages": {
2257
+ "type": "boolean",
2258
+ "description": "Include images in search results."
2259
+ },
2260
+ "includeDomains": {
2261
+ "type": "array",
2262
+ "items": {
2263
+ "type": "string"
2264
+ },
2265
+ "description": "Restrict results to these domains."
2266
+ },
2267
+ "excludeDomains": {
2268
+ "type": "array",
2269
+ "items": {
2270
+ "type": "string"
2271
+ },
2272
+ "description": "Exclude these domains."
2273
+ },
2274
+ "fromDate": {
2275
+ "type": "string",
2276
+ "description": "ISO date string for earliest result date."
2277
+ },
2278
+ "toDate": {
2279
+ "type": "string",
2280
+ "description": "ISO date string for latest result date."
2281
+ }
2282
+ },
2283
+ "description": "Linkup search options.",
2284
+ "additionalProperties": false
2285
+ },
2286
+ "contents": {
2287
+ "type": "object",
2288
+ "properties": {
2289
+ "mode": {
2290
+ "type": "string",
2291
+ "enum": ["standard", "pro"],
2292
+ "description": "Fetch strategy; pro improves retrieval of difficult pages."
2293
+ },
2294
+ "includeRawContent": {
2295
+ "type": "boolean",
2296
+ "description": "Include raw page content and its content type."
2297
+ },
2298
+ "renderJs": {
2299
+ "type": "boolean",
2300
+ "description": "Render JavaScript before extracting content."
2301
+ },
2302
+ "includeRawHtml": {
2303
+ "type": "boolean",
2304
+ "deprecated": true,
2305
+ "description": "Legacy raw HTML output. Prefer includeRawContent."
2306
+ },
2307
+ "extractImages": {
2308
+ "type": "boolean",
2309
+ "description": "Extract images from the page."
2310
+ }
2311
+ },
2312
+ "description": "Linkup fetch options.",
2313
+ "additionalProperties": false
2314
+ },
2315
+ "research": {
2316
+ "type": "object",
2317
+ "properties": {
2318
+ "outputType": {
2319
+ "anyOf": [
2320
+ {
2321
+ "type": "string",
2322
+ "const": "sourcedAnswer"
2323
+ },
2324
+ {
2325
+ "type": "string",
2326
+ "const": "structured"
2327
+ }
2328
+ ],
2329
+ "description": "Research output type. Defaults to 'sourcedAnswer' unless structuredOutputSchema is provided."
2330
+ },
2331
+ "mode": {
2332
+ "anyOf": [
2333
+ {
2334
+ "type": "string",
2335
+ "const": "answer"
2336
+ },
2337
+ {
2338
+ "type": "string",
2339
+ "const": "auto"
2340
+ },
2341
+ {
2342
+ "type": "string",
2343
+ "const": "investigate"
2344
+ },
2345
+ {
2346
+ "type": "string",
2347
+ "const": "research"
2348
+ }
2349
+ ],
2350
+ "description": "Research mode. Use 'answer' for precise verified answers, 'investigate' for focused deep dives, 'research' for broad reports, or omit/auto to let Linkup classify the task."
2351
+ },
2352
+ "reasoningDepth": {
2353
+ "anyOf": [
2354
+ {
2355
+ "type": "string",
2356
+ "const": "S"
2357
+ },
2358
+ {
2359
+ "type": "string",
2360
+ "const": "M"
2361
+ },
2362
+ {
2363
+ "type": "string",
2364
+ "const": "L"
2365
+ },
2366
+ {
2367
+ "type": "string",
2368
+ "const": "XL"
2369
+ }
2370
+ ],
2371
+ "description": "Reasoning depth. Higher values trade latency for more thorough investigation."
2372
+ },
2373
+ "includeDomains": {
2374
+ "type": "array",
2375
+ "items": {
2376
+ "type": "string"
2377
+ },
2378
+ "description": "Restrict research to these domains."
2379
+ },
2380
+ "excludeDomains": {
2381
+ "type": "array",
2382
+ "items": {
2383
+ "type": "string"
2384
+ },
2385
+ "description": "Exclude these domains."
2386
+ },
2387
+ "fromDate": {
2388
+ "type": "string",
2389
+ "description": "ISO date string for earliest result date."
2390
+ },
2391
+ "toDate": {
2392
+ "type": "string",
2393
+ "description": "ISO date string for latest result date."
2394
+ },
2395
+ "structuredOutputSchema": {
2396
+ "type": "object",
2397
+ "patternProperties": {
2398
+ "^.*$": {}
2399
+ },
2400
+ "description": "JSON schema object required when outputType is 'structured'."
2401
+ }
2402
+ },
2403
+ "description": "Linkup research options.",
2404
+ "additionalProperties": false
2405
+ }
2406
+ }
2407
+ }
2408
+ }
2409
+ },
2410
+ "ollama": {
2411
+ "type": "object",
2412
+ "additionalProperties": false,
2413
+ "properties": {
2414
+ "credentials": {
2415
+ "type": "object",
2416
+ "additionalProperties": false,
2417
+ "properties": {
2418
+ "api": {
2419
+ "oneOf": [
2420
+ {
2421
+ "type": "object",
2422
+ "additionalProperties": false,
2423
+ "properties": {
2424
+ "env": {
2425
+ "type": "string",
2426
+ "minLength": 1
2427
+ }
2428
+ },
2429
+ "required": ["env"]
2430
+ },
2431
+ {
2432
+ "type": "object",
2433
+ "additionalProperties": false,
2434
+ "properties": {
2435
+ "value": {
2436
+ "type": "string",
2437
+ "minLength": 1
2438
+ }
2439
+ },
2440
+ "required": ["value"]
2441
+ },
2442
+ {
2443
+ "type": "object",
2444
+ "additionalProperties": false,
2445
+ "properties": {
2446
+ "command": {
2447
+ "type": "array",
2448
+ "minItems": 1,
2449
+ "items": {
2450
+ "type": "string",
2451
+ "minLength": 1
2452
+ }
2453
+ }
2454
+ },
2455
+ "required": ["command"]
2456
+ }
2457
+ ]
2458
+ }
2459
+ }
2460
+ },
2461
+ "baseUrl": {
2462
+ "type": "string",
2463
+ "minLength": 1
2464
+ },
2465
+ "options": {
2466
+ "type": "object",
2467
+ "additionalProperties": false,
2468
+ "properties": {
2469
+ "search": {
2470
+ "type": "object",
2471
+ "additionalProperties": false
2472
+ },
2473
+ "contents": {
2474
+ "type": "object",
2475
+ "additionalProperties": false
2476
+ }
2477
+ }
2478
+ }
2479
+ }
2480
+ },
2481
+ "openai": {
2482
+ "type": "object",
2483
+ "additionalProperties": false,
2484
+ "properties": {
2485
+ "credentials": {
2486
+ "type": "object",
2487
+ "additionalProperties": false,
2488
+ "properties": {
2489
+ "api": {
2490
+ "oneOf": [
2491
+ {
2492
+ "type": "object",
2493
+ "additionalProperties": false,
2494
+ "properties": {
2495
+ "env": {
2496
+ "type": "string",
2497
+ "minLength": 1
2498
+ }
2499
+ },
2500
+ "required": ["env"]
2501
+ },
2502
+ {
2503
+ "type": "object",
2504
+ "additionalProperties": false,
2505
+ "properties": {
2506
+ "value": {
2507
+ "type": "string",
2508
+ "minLength": 1
2509
+ }
2510
+ },
2511
+ "required": ["value"]
2512
+ },
2513
+ {
2514
+ "type": "object",
2515
+ "additionalProperties": false,
2516
+ "properties": {
2517
+ "command": {
2518
+ "type": "array",
2519
+ "minItems": 1,
2520
+ "items": {
2521
+ "type": "string",
2522
+ "minLength": 1
2523
+ }
2524
+ }
2525
+ },
2526
+ "required": ["command"]
2527
+ }
2528
+ ]
2529
+ }
2530
+ }
2531
+ },
2532
+ "baseUrl": {
2533
+ "type": "string",
2534
+ "minLength": 1
2535
+ },
2536
+ "options": {
2537
+ "type": "object",
2538
+ "additionalProperties": false,
2539
+ "properties": {
2540
+ "search": {
2541
+ "type": "object",
2542
+ "properties": {
2543
+ "model": {
2544
+ "type": "string",
2545
+ "description": "OpenAI model override. Tool and reasoning support depends on the model."
2546
+ },
2547
+ "instructions": {
2548
+ "type": "string",
2549
+ "description": "Instructions for the answer and source selection."
2550
+ },
2551
+ "reasoning": {
2552
+ "type": "object",
2553
+ "properties": {
2554
+ "effort": {
2555
+ "type": "string",
2556
+ "enum": [
2557
+ "none",
2558
+ "minimal",
2559
+ "low",
2560
+ "medium",
2561
+ "high",
2562
+ "xhigh",
2563
+ "max"
2564
+ ],
2565
+ "description": "Use a level supported by the model; some levels do not support web search."
2566
+ }
2567
+ },
2568
+ "description": "Model reasoning controls.",
2569
+ "additionalProperties": false
2570
+ },
2571
+ "max_output_tokens": {
2572
+ "type": "integer",
2573
+ "minimum": 1,
2574
+ "description": "Maximum generated tokens, including reasoning."
2575
+ },
2576
+ "searchContextSize": {
2577
+ "type": "string",
2578
+ "enum": ["low", "medium", "high"],
2579
+ "description": "Amount of web search context."
2580
+ },
2581
+ "allowedDomains": {
2582
+ "type": "array",
2583
+ "maxItems": 100,
2584
+ "items": {
2585
+ "type": "string"
2586
+ },
2587
+ "description": "Restrict search to these domains."
2588
+ },
2589
+ "externalWebAccess": {
2590
+ "type": "boolean",
2591
+ "description": "Allow live fetching; false uses cached/indexed content only."
2592
+ },
2593
+ "userLocation": {
2594
+ "type": "object",
2595
+ "properties": {
2596
+ "city": {
2597
+ "type": "string"
2598
+ },
2599
+ "country": {
2600
+ "type": "string"
2601
+ },
2602
+ "region": {
2603
+ "type": "string"
2604
+ },
2605
+ "timezone": {
2606
+ "type": "string"
2607
+ }
2608
+ },
2609
+ "description": "Approximate location. Not supported by deep research models.",
2610
+ "additionalProperties": false
2611
+ }
2612
+ },
2613
+ "description": "OpenAI search options.",
2614
+ "additionalProperties": false
2615
+ },
2616
+ "answer": {
2617
+ "type": "object",
2618
+ "properties": {
2619
+ "model": {
2620
+ "type": "string",
2621
+ "description": "OpenAI model override. Tool and reasoning support depends on the model."
2622
+ },
2623
+ "instructions": {
2624
+ "type": "string",
2625
+ "description": "Instructions for the answer and source selection."
2626
+ },
2627
+ "reasoning": {
2628
+ "type": "object",
2629
+ "properties": {
2630
+ "effort": {
2631
+ "type": "string",
2632
+ "enum": [
2633
+ "none",
2634
+ "minimal",
2635
+ "low",
2636
+ "medium",
2637
+ "high",
2638
+ "xhigh",
2639
+ "max"
2640
+ ],
2641
+ "description": "Use a level supported by the model; some levels do not support web search."
2642
+ }
2643
+ },
2644
+ "description": "Model reasoning controls.",
2645
+ "additionalProperties": false
2646
+ },
2647
+ "max_output_tokens": {
2648
+ "type": "integer",
2649
+ "minimum": 1,
2650
+ "description": "Maximum generated tokens, including reasoning."
2651
+ },
2652
+ "searchContextSize": {
2653
+ "type": "string",
2654
+ "enum": ["low", "medium", "high"],
2655
+ "description": "Amount of web search context."
2656
+ },
2657
+ "allowedDomains": {
2658
+ "type": "array",
2659
+ "maxItems": 100,
2660
+ "items": {
2661
+ "type": "string"
2662
+ },
2663
+ "description": "Restrict search to these domains."
2664
+ },
2665
+ "externalWebAccess": {
2666
+ "type": "boolean",
2667
+ "description": "Allow live fetching; false uses cached/indexed content only."
2668
+ },
2669
+ "userLocation": {
2670
+ "type": "object",
2671
+ "properties": {
2672
+ "city": {
2673
+ "type": "string"
2674
+ },
2675
+ "country": {
2676
+ "type": "string"
2677
+ },
2678
+ "region": {
2679
+ "type": "string"
2680
+ },
2681
+ "timezone": {
2682
+ "type": "string"
2683
+ }
2684
+ },
2685
+ "description": "Approximate location. Not supported by deep research models.",
2686
+ "additionalProperties": false
2687
+ }
2688
+ },
2689
+ "description": "OpenAI answer options.",
2690
+ "additionalProperties": false
2691
+ },
2692
+ "research": {
2693
+ "type": "object",
2694
+ "properties": {
2695
+ "model": {
2696
+ "type": "string",
2697
+ "description": "OpenAI model override. Tool and reasoning support depends on the model."
2698
+ },
2699
+ "instructions": {
2700
+ "type": "string",
2701
+ "description": "Instructions for the answer and source selection."
2702
+ },
2703
+ "reasoning": {
2704
+ "type": "object",
2705
+ "properties": {
2706
+ "effort": {
2707
+ "type": "string",
2708
+ "enum": [
2709
+ "none",
2710
+ "minimal",
2711
+ "low",
2712
+ "medium",
2713
+ "high",
2714
+ "xhigh",
2715
+ "max"
2716
+ ],
2717
+ "description": "Use a level supported by the model; some levels do not support web search."
2718
+ }
2719
+ },
2720
+ "description": "Model reasoning controls.",
2721
+ "additionalProperties": false
2722
+ },
2723
+ "max_output_tokens": {
2724
+ "type": "integer",
2725
+ "minimum": 1,
2726
+ "description": "Maximum generated tokens, including reasoning."
2727
+ },
2728
+ "searchContextSize": {
2729
+ "type": "string",
2730
+ "enum": ["low", "medium", "high"],
2731
+ "description": "Amount of web search context."
2732
+ },
2733
+ "allowedDomains": {
2734
+ "type": "array",
2735
+ "maxItems": 100,
2736
+ "items": {
2737
+ "type": "string"
2738
+ },
2739
+ "description": "Restrict search to these domains."
2740
+ },
2741
+ "externalWebAccess": {
2742
+ "type": "boolean",
2743
+ "description": "Allow live fetching; false uses cached/indexed content only."
2744
+ },
2745
+ "max_tool_calls": {
2746
+ "type": "integer",
2747
+ "minimum": 1,
2748
+ "description": "Maximum built-in tool calls during research."
2749
+ }
2750
+ },
2751
+ "description": "OpenAI research options. Deep research models do not support userLocation.",
2752
+ "additionalProperties": false
2753
+ }
2754
+ }
2755
+ }
2756
+ }
2757
+ },
2758
+ "parallel": {
2759
+ "type": "object",
2760
+ "additionalProperties": false,
2761
+ "properties": {
2762
+ "credentials": {
2763
+ "type": "object",
2764
+ "additionalProperties": false,
2765
+ "properties": {
2766
+ "api": {
2767
+ "oneOf": [
2768
+ {
2769
+ "type": "object",
2770
+ "additionalProperties": false,
2771
+ "properties": {
2772
+ "env": {
2773
+ "type": "string",
2774
+ "minLength": 1
2775
+ }
2776
+ },
2777
+ "required": ["env"]
2778
+ },
2779
+ {
2780
+ "type": "object",
2781
+ "additionalProperties": false,
2782
+ "properties": {
2783
+ "value": {
2784
+ "type": "string",
2785
+ "minLength": 1
2786
+ }
2787
+ },
2788
+ "required": ["value"]
2789
+ },
2790
+ {
2791
+ "type": "object",
2792
+ "additionalProperties": false,
2793
+ "properties": {
2794
+ "command": {
2795
+ "type": "array",
2796
+ "minItems": 1,
2797
+ "items": {
2798
+ "type": "string",
2799
+ "minLength": 1
2800
+ }
2801
+ }
2802
+ },
2803
+ "required": ["command"]
2804
+ }
2805
+ ]
2806
+ }
2807
+ }
2808
+ },
2809
+ "baseUrl": {
2810
+ "type": "string",
2811
+ "minLength": 1
2812
+ },
2813
+ "options": {
2814
+ "type": "object",
2815
+ "additionalProperties": false,
2816
+ "properties": {
2817
+ "search": {
2818
+ "type": "object",
2819
+ "properties": {
2820
+ "objective": {
2821
+ "type": "string",
2822
+ "description": "Underlying question or goal guiding retrieval."
2823
+ },
2824
+ "max_chars_total": {
2825
+ "type": "integer",
2826
+ "minimum": 1,
2827
+ "description": "Total excerpt character budget."
2828
+ },
2829
+ "client_model": {
2830
+ "type": "string",
2831
+ "description": "Model consuming the results."
2832
+ },
2833
+ "session_id": {
2834
+ "type": "string",
2835
+ "description": "Session ID for related search and extraction calls."
2836
+ },
2837
+ "advanced_settings": {
2838
+ "type": "object",
2839
+ "properties": {
2840
+ "excerpt_settings": {
2841
+ "type": "object",
2842
+ "properties": {
2843
+ "max_chars_per_result": {
2844
+ "type": "integer",
2845
+ "minimum": 0
2846
+ }
2847
+ },
2848
+ "additionalProperties": false
2849
+ },
2850
+ "fetch_policy": {
2851
+ "type": "object",
2852
+ "properties": {
2853
+ "max_age_seconds": {
2854
+ "type": "number",
2855
+ "minimum": 600,
2856
+ "description": "Cache age threshold for live fetching, in seconds."
2857
+ },
2858
+ "timeout_seconds": {
2859
+ "type": "number",
2860
+ "exclusiveMinimum": 0,
2861
+ "description": "Live fetch timeout in seconds."
2862
+ },
2863
+ "disable_cache_fallback": {
2864
+ "type": "boolean",
2865
+ "description": "Fail instead of falling back to stale content."
2866
+ }
2867
+ },
2868
+ "additionalProperties": false
2869
+ },
2870
+ "source_policy": {
2871
+ "type": "object",
2872
+ "properties": {
2873
+ "include_domains": {
2874
+ "type": "array",
2875
+ "maxItems": 200,
2876
+ "items": {
2877
+ "type": "string"
2878
+ }
2879
+ },
2880
+ "exclude_domains": {
2881
+ "type": "array",
2882
+ "maxItems": 200,
2883
+ "items": {
2884
+ "type": "string"
2885
+ }
2886
+ },
2887
+ "after_date": {
2888
+ "type": "string",
2889
+ "description": "Earliest publication date (YYYY-MM-DD)."
2890
+ }
2891
+ },
2892
+ "description": "Source constraints; include and exclude lists may contain at most 200 domains combined.",
2893
+ "additionalProperties": false
2894
+ },
2895
+ "location": {
2896
+ "type": "string",
2897
+ "description": "Two-letter country code."
2898
+ }
2899
+ },
2900
+ "description": "Advanced retrieval settings. Result count comes from maxResults.",
2901
+ "additionalProperties": false
2902
+ },
2903
+ "mode": {
2904
+ "anyOf": [
2905
+ {
2906
+ "type": "string",
2907
+ "const": "advanced"
2908
+ },
2909
+ {
2910
+ "type": "string",
2911
+ "const": "basic"
2912
+ },
2913
+ {
2914
+ "type": "string",
2915
+ "const": "turbo"
2916
+ },
2917
+ {
2918
+ "type": "string",
2919
+ "const": "fast"
2920
+ }
2921
+ ],
2922
+ "description": "Parallel search mode. Use 'advanced' for higher quality, 'basic' for lower latency, or 'turbo' for the fastest responses."
2923
+ }
2924
+ },
2925
+ "description": "Parallel search options.",
2926
+ "additionalProperties": false
2927
+ },
2928
+ "contents": {
2929
+ "type": "object",
2930
+ "properties": {
2931
+ "objective": {
2932
+ "type": "string",
2933
+ "description": "Underlying question or goal guiding retrieval."
2934
+ },
2935
+ "max_chars_total": {
2936
+ "type": "integer",
2937
+ "minimum": 1,
2938
+ "description": "Total excerpt character budget."
2939
+ },
2940
+ "client_model": {
2941
+ "type": "string",
2942
+ "description": "Model consuming the results."
2943
+ },
2944
+ "session_id": {
2945
+ "type": "string",
2946
+ "description": "Session ID for related search and extraction calls."
2947
+ },
2948
+ "advanced_settings": {
2949
+ "type": "object",
2950
+ "properties": {
2951
+ "excerpt_settings": {
2952
+ "type": "object",
2953
+ "properties": {
2954
+ "max_chars_per_result": {
2955
+ "type": "integer",
2956
+ "minimum": 0
2957
+ }
2958
+ },
2959
+ "additionalProperties": false
2960
+ },
2961
+ "fetch_policy": {
2962
+ "type": "object",
2963
+ "properties": {
2964
+ "max_age_seconds": {
2965
+ "type": "number",
2966
+ "minimum": 600,
2967
+ "description": "Cache age threshold for live fetching, in seconds."
2968
+ },
2969
+ "timeout_seconds": {
2970
+ "type": "number",
2971
+ "exclusiveMinimum": 0,
2972
+ "description": "Live fetch timeout in seconds."
2973
+ },
2974
+ "disable_cache_fallback": {
2975
+ "type": "boolean",
2976
+ "description": "Fail instead of falling back to stale content."
2977
+ }
2978
+ },
2979
+ "additionalProperties": false
2980
+ }
2981
+ },
2982
+ "description": "Advanced extraction settings.",
2983
+ "additionalProperties": false
2984
+ },
2985
+ "excerpts": {
2986
+ "type": "boolean",
2987
+ "description": "Include excerpts in extraction results."
2988
+ },
2989
+ "full_content": {
2990
+ "type": "boolean",
2991
+ "description": "Include full page content in extraction results."
2992
+ }
2993
+ },
2994
+ "description": "Parallel extract options.",
2995
+ "additionalProperties": false
2996
+ }
2997
+ }
2998
+ }
2999
+ }
3000
+ },
3001
+ "perplexity": {
3002
+ "type": "object",
3003
+ "additionalProperties": false,
3004
+ "properties": {
3005
+ "credentials": {
3006
+ "type": "object",
3007
+ "additionalProperties": false,
3008
+ "properties": {
3009
+ "api": {
3010
+ "oneOf": [
3011
+ {
3012
+ "type": "object",
3013
+ "additionalProperties": false,
3014
+ "properties": {
3015
+ "env": {
3016
+ "type": "string",
3017
+ "minLength": 1
3018
+ }
3019
+ },
3020
+ "required": ["env"]
3021
+ },
3022
+ {
3023
+ "type": "object",
3024
+ "additionalProperties": false,
3025
+ "properties": {
3026
+ "value": {
3027
+ "type": "string",
3028
+ "minLength": 1
3029
+ }
3030
+ },
3031
+ "required": ["value"]
3032
+ },
3033
+ {
3034
+ "type": "object",
3035
+ "additionalProperties": false,
3036
+ "properties": {
3037
+ "command": {
3038
+ "type": "array",
3039
+ "minItems": 1,
3040
+ "items": {
3041
+ "type": "string",
3042
+ "minLength": 1
3043
+ }
3044
+ }
3045
+ },
3046
+ "required": ["command"]
3047
+ }
3048
+ ]
3049
+ }
3050
+ }
3051
+ },
3052
+ "baseUrl": {
3053
+ "type": "string",
3054
+ "minLength": 1
3055
+ },
3056
+ "options": {
3057
+ "type": "object",
3058
+ "additionalProperties": false,
3059
+ "properties": {
3060
+ "search": {
3061
+ "type": "object",
3062
+ "properties": {
3063
+ "country": {
3064
+ "type": "string",
3065
+ "description": "Two-letter country hint."
3066
+ },
3067
+ "search_mode": {
3068
+ "type": "string",
3069
+ "enum": ["web", "academic", "sec"],
3070
+ "description": "Search source pool."
3071
+ },
3072
+ "search_domain_filter": {
3073
+ "type": "array",
3074
+ "items": {
3075
+ "type": "string"
3076
+ },
3077
+ "description": "Domain filters; prefix excluded domains with '-'."
3078
+ },
3079
+ "search_language_filter": {
3080
+ "type": "array",
3081
+ "items": {
3082
+ "type": "string"
3083
+ },
3084
+ "description": "Result languages."
3085
+ },
3086
+ "search_recency_filter": {
3087
+ "type": "string",
3088
+ "enum": ["hour", "day", "week", "month", "year"],
3089
+ "description": "Result recency."
3090
+ },
3091
+ "search_after_date_filter": {
3092
+ "type": "string",
3093
+ "description": "Earliest publication date (MM/DD/YYYY)."
3094
+ },
3095
+ "search_before_date_filter": {
3096
+ "type": "string",
3097
+ "description": "Latest publication date (MM/DD/YYYY)."
3098
+ },
3099
+ "last_updated_after_filter": {
3100
+ "type": "string",
3101
+ "description": "Earliest update date (MM/DD/YYYY)."
3102
+ },
3103
+ "last_updated_before_filter": {
3104
+ "type": "string",
3105
+ "description": "Latest update date (MM/DD/YYYY)."
3106
+ },
3107
+ "search_context_size": {
3108
+ "type": "string",
3109
+ "enum": ["low", "medium", "high"],
3110
+ "description": "Amount of search context."
3111
+ },
3112
+ "max_tokens": {
3113
+ "type": "integer",
3114
+ "minimum": 1,
3115
+ "description": "Total search content token budget."
3116
+ },
3117
+ "max_tokens_per_page": {
3118
+ "type": "integer",
3119
+ "minimum": 1,
3120
+ "description": "Per-page content token budget."
3121
+ }
3122
+ },
3123
+ "description": "Perplexity search options.",
3124
+ "additionalProperties": false
3125
+ },
3126
+ "answer": {
3127
+ "type": "object",
3128
+ "properties": {
3129
+ "country": {
3130
+ "type": "string",
3131
+ "description": "Two-letter country hint."
3132
+ },
3133
+ "search_mode": {
3134
+ "type": "string",
3135
+ "enum": ["web", "academic", "sec"],
3136
+ "description": "Search source pool."
3137
+ },
3138
+ "search_domain_filter": {
3139
+ "type": "array",
3140
+ "items": {
3141
+ "type": "string"
3142
+ },
3143
+ "description": "Domain filters; prefix excluded domains with '-'."
3144
+ },
3145
+ "search_language_filter": {
3146
+ "type": "array",
3147
+ "items": {
3148
+ "type": "string"
3149
+ },
3150
+ "description": "Result languages."
3151
+ },
3152
+ "search_recency_filter": {
3153
+ "type": "string",
3154
+ "enum": ["hour", "day", "week", "month", "year"],
3155
+ "description": "Result recency."
3156
+ },
3157
+ "search_after_date_filter": {
3158
+ "type": "string",
3159
+ "description": "Earliest publication date (MM/DD/YYYY)."
3160
+ },
3161
+ "search_before_date_filter": {
3162
+ "type": "string",
3163
+ "description": "Latest publication date (MM/DD/YYYY)."
3164
+ },
3165
+ "last_updated_after_filter": {
3166
+ "type": "string",
3167
+ "description": "Earliest update date (MM/DD/YYYY)."
3168
+ },
3169
+ "last_updated_before_filter": {
3170
+ "type": "string",
3171
+ "description": "Latest update date (MM/DD/YYYY)."
3172
+ },
3173
+ "model": {
3174
+ "type": "string",
3175
+ "description": "Perplexity model override."
3176
+ },
3177
+ "max_tokens": {
3178
+ "type": "integer",
3179
+ "minimum": 1,
3180
+ "description": "Maximum generated tokens."
3181
+ },
3182
+ "reasoning_effort": {
3183
+ "type": "string",
3184
+ "enum": ["minimal", "low", "medium", "high"],
3185
+ "description": "Reasoning effort, where supported by the selected model."
3186
+ },
3187
+ "temperature": {
3188
+ "type": "number",
3189
+ "minimum": 0,
3190
+ "maximum": 2,
3191
+ "description": "Sampling temperature, where supported by the model."
3192
+ },
3193
+ "web_search_options": {
3194
+ "type": "object",
3195
+ "properties": {
3196
+ "search_context_size": {
3197
+ "type": "string",
3198
+ "enum": ["low", "medium", "high"],
3199
+ "description": "Amount of search context."
3200
+ }
3201
+ },
3202
+ "description": "Sonar web retrieval controls; distinct from standalone search options.",
3203
+ "additionalProperties": false
3204
+ }
3205
+ },
3206
+ "description": "Perplexity grounded generation options.",
3207
+ "additionalProperties": false
3208
+ },
3209
+ "research": {
3210
+ "type": "object",
3211
+ "properties": {
3212
+ "country": {
3213
+ "type": "string",
3214
+ "description": "Two-letter country hint."
3215
+ },
3216
+ "search_mode": {
3217
+ "type": "string",
3218
+ "enum": ["web", "academic", "sec"],
3219
+ "description": "Search source pool."
3220
+ },
3221
+ "search_domain_filter": {
3222
+ "type": "array",
3223
+ "items": {
3224
+ "type": "string"
3225
+ },
3226
+ "description": "Domain filters; prefix excluded domains with '-'."
3227
+ },
3228
+ "search_language_filter": {
3229
+ "type": "array",
3230
+ "items": {
3231
+ "type": "string"
3232
+ },
3233
+ "description": "Result languages."
3234
+ },
3235
+ "search_recency_filter": {
3236
+ "type": "string",
3237
+ "enum": ["hour", "day", "week", "month", "year"],
3238
+ "description": "Result recency."
3239
+ },
3240
+ "search_after_date_filter": {
3241
+ "type": "string",
3242
+ "description": "Earliest publication date (MM/DD/YYYY)."
3243
+ },
3244
+ "search_before_date_filter": {
3245
+ "type": "string",
3246
+ "description": "Latest publication date (MM/DD/YYYY)."
3247
+ },
3248
+ "last_updated_after_filter": {
3249
+ "type": "string",
3250
+ "description": "Earliest update date (MM/DD/YYYY)."
3251
+ },
3252
+ "last_updated_before_filter": {
3253
+ "type": "string",
3254
+ "description": "Latest update date (MM/DD/YYYY)."
3255
+ },
3256
+ "model": {
3257
+ "type": "string",
3258
+ "description": "Perplexity model override."
3259
+ },
3260
+ "max_tokens": {
3261
+ "type": "integer",
3262
+ "minimum": 1,
3263
+ "description": "Maximum generated tokens."
3264
+ },
3265
+ "reasoning_effort": {
3266
+ "type": "string",
3267
+ "enum": ["minimal", "low", "medium", "high"],
3268
+ "description": "Reasoning effort, where supported by the selected model."
3269
+ },
3270
+ "temperature": {
3271
+ "type": "number",
3272
+ "minimum": 0,
3273
+ "maximum": 2,
3274
+ "description": "Sampling temperature, where supported by the model."
3275
+ },
3276
+ "web_search_options": {
3277
+ "type": "object",
3278
+ "properties": {
3279
+ "search_context_size": {
3280
+ "type": "string",
3281
+ "enum": ["low", "medium", "high"],
3282
+ "description": "Amount of search context."
3283
+ }
3284
+ },
3285
+ "description": "Sonar web retrieval controls; distinct from standalone search options.",
3286
+ "additionalProperties": false
3287
+ }
3288
+ },
3289
+ "description": "Perplexity grounded generation options.",
3290
+ "additionalProperties": false
3291
+ }
3292
+ }
3293
+ }
3294
+ }
3295
+ },
3296
+ "serper": {
3297
+ "type": "object",
3298
+ "additionalProperties": false,
3299
+ "properties": {
3300
+ "credentials": {
3301
+ "type": "object",
3302
+ "additionalProperties": false,
3303
+ "properties": {
3304
+ "api": {
3305
+ "oneOf": [
3306
+ {
3307
+ "type": "object",
3308
+ "additionalProperties": false,
3309
+ "properties": {
3310
+ "env": {
3311
+ "type": "string",
3312
+ "minLength": 1
3313
+ }
3314
+ },
3315
+ "required": ["env"]
3316
+ },
3317
+ {
3318
+ "type": "object",
3319
+ "additionalProperties": false,
3320
+ "properties": {
3321
+ "value": {
3322
+ "type": "string",
3323
+ "minLength": 1
3324
+ }
3325
+ },
3326
+ "required": ["value"]
3327
+ },
3328
+ {
3329
+ "type": "object",
3330
+ "additionalProperties": false,
3331
+ "properties": {
3332
+ "command": {
3333
+ "type": "array",
3334
+ "minItems": 1,
3335
+ "items": {
3336
+ "type": "string",
3337
+ "minLength": 1
3338
+ }
3339
+ }
3340
+ },
3341
+ "required": ["command"]
3342
+ }
3343
+ ]
3344
+ }
3345
+ }
3346
+ },
3347
+ "baseUrl": {
3348
+ "type": "string",
3349
+ "minLength": 1
3350
+ },
3351
+ "options": {
3352
+ "type": "object",
3353
+ "additionalProperties": false,
3354
+ "properties": {
3355
+ "search": {
3356
+ "type": "object",
3357
+ "properties": {
3358
+ "mode": {
3359
+ "enum": [
3360
+ "search",
3361
+ "images",
3362
+ "videos",
3363
+ "places",
3364
+ "maps",
3365
+ "reviews",
3366
+ "news",
3367
+ "shopping",
3368
+ "product-reviews",
3369
+ "lens",
3370
+ "scholar",
3371
+ "patents",
3372
+ "autocomplete",
3373
+ "webpage"
3374
+ ],
3375
+ "description": "Serper search type. Use 'search' for web results, 'news' for recent journalism/current events, 'images' for visual references, 'videos' for clips/tutorials, 'places' or 'maps' for local businesses/venues, 'reviews' for Google business reviews by place ID/CID/FID or query, 'shopping' for products, 'product-reviews' for product reviews, 'lens' for reverse image search, 'scholar' for scholarly articles, 'patents' for patents, 'autocomplete' for suggestions, and 'webpage' to scrape a URL."
3376
+ },
3377
+ "gl": {
3378
+ "type": "string",
3379
+ "description": "Country code hint for Google results (for example 'us')."
3380
+ },
3381
+ "hl": {
3382
+ "type": "string",
3383
+ "description": "Language code hint for Google results (for example 'en')."
3384
+ },
3385
+ "location": {
3386
+ "type": "string",
3387
+ "description": "Geographic location hint for Google results."
3388
+ },
3389
+ "page": {
3390
+ "type": "integer",
3391
+ "minimum": 1,
3392
+ "description": "1-based results page to request from Serper."
3393
+ },
3394
+ "tbs": {
3395
+ "type": "string",
3396
+ "description": "Google time/date or vertical-specific filter string passed through to Serper, for example 'qdr:d' for past day."
3397
+ },
3398
+ "autocorrect": {
3399
+ "type": "boolean",
3400
+ "description": "Enable or disable Serper query autocorrection."
3401
+ },
3402
+ "url": {
3403
+ "type": "string",
3404
+ "description": "URL for modes that need one: image URL for 'lens', or page URL for 'webpage'. Defaults to the query string when omitted."
3405
+ },
3406
+ "ll": {
3407
+ "type": "string",
3408
+ "description": "Google Maps latitude/longitude/zoom hint, for example '@40.6973709,-74.1444871,11z'."
3409
+ },
3410
+ "placeId": {
3411
+ "type": "string",
3412
+ "description": "Google place ID for maps or reviews."
3413
+ },
3414
+ "cid": {
3415
+ "type": "string",
3416
+ "description": "Google CID for maps or reviews."
3417
+ },
3418
+ "fid": {
3419
+ "type": "string",
3420
+ "description": "Google FID for reviews."
3421
+ },
3422
+ "sortBy": {
3423
+ "type": "string",
3424
+ "description": "Review sort order for reviews mode."
3425
+ },
3426
+ "topicId": {
3427
+ "type": "string",
3428
+ "description": "Review topic ID for reviews mode."
3429
+ },
3430
+ "productId": {
3431
+ "type": "string",
3432
+ "description": "Google product ID for product-reviews mode. Defaults to the query string when omitted."
3433
+ },
3434
+ "nextPageToken": {
3435
+ "type": "string",
3436
+ "description": "Pagination token for reviews or product-reviews modes."
3437
+ },
3438
+ "includeMarkdown": {
3439
+ "type": "boolean",
3440
+ "default": true,
3441
+ "description": "Include Markdown content in webpage mode. Defaults to true."
3442
+ },
3443
+ "includeImages": {
3444
+ "type": "boolean",
3445
+ "description": "Include image metadata in webpage mode."
3446
+ },
3447
+ "includeLinks": {
3448
+ "type": "boolean",
3449
+ "description": "Include link metadata in webpage mode."
3450
+ },
3451
+ "includeVideos": {
3452
+ "type": "boolean",
3453
+ "description": "Include video metadata in webpage mode."
3454
+ }
3455
+ },
3456
+ "description": "Serper search options.",
3457
+ "additionalProperties": false
3458
+ }
3459
+ }
3460
+ }
3461
+ }
3462
+ },
3463
+ "tavily": {
3464
+ "type": "object",
3465
+ "additionalProperties": false,
3466
+ "properties": {
3467
+ "credentials": {
3468
+ "type": "object",
3469
+ "additionalProperties": false,
3470
+ "properties": {
3471
+ "api": {
3472
+ "oneOf": [
3473
+ {
3474
+ "type": "object",
3475
+ "additionalProperties": false,
3476
+ "properties": {
3477
+ "env": {
3478
+ "type": "string",
3479
+ "minLength": 1
3480
+ }
3481
+ },
3482
+ "required": ["env"]
3483
+ },
3484
+ {
3485
+ "type": "object",
3486
+ "additionalProperties": false,
3487
+ "properties": {
3488
+ "value": {
3489
+ "type": "string",
3490
+ "minLength": 1
3491
+ }
3492
+ },
3493
+ "required": ["value"]
3494
+ },
3495
+ {
3496
+ "type": "object",
3497
+ "additionalProperties": false,
3498
+ "properties": {
3499
+ "command": {
3500
+ "type": "array",
3501
+ "minItems": 1,
3502
+ "items": {
3503
+ "type": "string",
3504
+ "minLength": 1
3505
+ }
3506
+ }
3507
+ },
3508
+ "required": ["command"]
3509
+ }
3510
+ ]
3511
+ }
3512
+ }
3513
+ },
3514
+ "baseUrl": {
3515
+ "type": "string",
3516
+ "minLength": 1
3517
+ },
3518
+ "options": {
3519
+ "type": "object",
3520
+ "additionalProperties": false,
3521
+ "properties": {
3522
+ "search": {
3523
+ "type": "object",
3524
+ "properties": {
3525
+ "topic": {
3526
+ "anyOf": [
3527
+ {
3528
+ "type": "string",
3529
+ "const": "general"
3530
+ },
3531
+ {
3532
+ "type": "string",
3533
+ "const": "news"
3534
+ },
3535
+ {
3536
+ "type": "string",
3537
+ "const": "finance"
3538
+ }
3539
+ ],
3540
+ "description": "Category of the search query. Use 'news' for recent journalism or current events, 'finance' for markets or company financial data, and 'general' for broad web search."
3541
+ },
3542
+ "searchDepth": {
3543
+ "anyOf": [
3544
+ {
3545
+ "type": "string",
3546
+ "const": "basic"
3547
+ },
3548
+ {
3549
+ "type": "string",
3550
+ "const": "advanced"
3551
+ },
3552
+ {
3553
+ "type": "string",
3554
+ "const": "fast"
3555
+ },
3556
+ {
3557
+ "type": "string",
3558
+ "const": "ultra-fast"
3559
+ }
3560
+ ],
3561
+ "description": "Depth of the search. 'advanced' is slower but more thorough."
3562
+ },
3563
+ "timeRange": {
3564
+ "type": "string",
3565
+ "enum": [
3566
+ "year",
3567
+ "month",
3568
+ "week",
3569
+ "day",
3570
+ "y",
3571
+ "m",
3572
+ "w",
3573
+ "d"
3574
+ ],
3575
+ "description": "Named time range filter."
3576
+ },
3577
+ "startDate": {
3578
+ "type": "string",
3579
+ "description": "Earliest result date (YYYY-MM-DD)."
3580
+ },
3581
+ "endDate": {
3582
+ "type": "string",
3583
+ "description": "Latest result date (YYYY-MM-DD)."
3584
+ },
3585
+ "chunksPerSource": {
3586
+ "type": "integer",
3587
+ "minimum": 1,
3588
+ "maximum": 3,
3589
+ "description": "Chunks per source for advanced search."
3590
+ },
3591
+ "autoParameters": {
3592
+ "type": "boolean",
3593
+ "description": "Let Tavily choose retrieval parameters; may increase cost."
3594
+ },
3595
+ "country": {
3596
+ "type": "string",
3597
+ "description": "Country hint for search results."
3598
+ },
3599
+ "exactMatch": {
3600
+ "type": "boolean",
3601
+ "description": "Prefer exact matches."
3602
+ },
3603
+ "includeAnswer": {
3604
+ "anyOf": [
3605
+ {
3606
+ "type": "boolean"
3607
+ },
3608
+ {
3609
+ "type": "string",
3610
+ "enum": ["basic", "advanced"]
3611
+ }
3612
+ ],
3613
+ "description": "Include a short AI-generated answer."
3614
+ },
3615
+ "includeRawContent": {
3616
+ "anyOf": [
3617
+ {
3618
+ "type": "boolean",
3619
+ "const": false
3620
+ },
3621
+ {
3622
+ "type": "string",
3623
+ "enum": ["markdown", "text"]
3624
+ }
3625
+ ],
3626
+ "description": "Return raw page content as markdown or text, or disable it with false."
3627
+ },
3628
+ "includeImages": {
3629
+ "type": "boolean",
3630
+ "description": "Include related images."
3631
+ },
3632
+ "includeFavicon": {
3633
+ "type": "boolean",
3634
+ "description": "Include favicon URLs."
3635
+ },
3636
+ "includeDomains": {
3637
+ "type": "array",
3638
+ "items": {
3639
+ "type": "string"
3640
+ },
3641
+ "description": "Restrict results to these domains."
3642
+ },
3643
+ "excludeDomains": {
3644
+ "type": "array",
3645
+ "items": {
3646
+ "type": "string"
3647
+ },
3648
+ "description": "Exclude these domains from results."
3649
+ },
3650
+ "days": {
3651
+ "type": "integer",
3652
+ "minimum": 1,
3653
+ "description": "Limit results to the last N days."
3654
+ }
3655
+ },
3656
+ "description": "Tavily search options.",
3657
+ "additionalProperties": false
3658
+ },
3659
+ "contents": {
3660
+ "type": "object",
3661
+ "properties": {
3662
+ "extractDepth": {
3663
+ "type": "string",
3664
+ "enum": ["basic", "advanced"],
3665
+ "description": "Depth setting for extraction."
3666
+ },
3667
+ "timeout": {
3668
+ "type": "number",
3669
+ "minimum": 1,
3670
+ "maximum": 60,
3671
+ "description": "Extraction timeout in seconds."
3672
+ },
3673
+ "format": {
3674
+ "anyOf": [
3675
+ {
3676
+ "type": "string",
3677
+ "const": "markdown"
3678
+ },
3679
+ {
3680
+ "type": "string",
3681
+ "const": "text"
3682
+ }
3683
+ ],
3684
+ "description": "Output format for extracted content."
3685
+ },
3686
+ "includeImages": {
3687
+ "type": "boolean",
3688
+ "description": "Include extracted images."
3689
+ },
3690
+ "query": {
3691
+ "type": "string",
3692
+ "description": "Optional query to focus extraction."
3693
+ },
3694
+ "chunksPerSource": {
3695
+ "type": "integer",
3696
+ "minimum": 1,
3697
+ "maximum": 5,
3698
+ "description": "Maximum chunks per source (1–5). Used with query."
3699
+ },
3700
+ "includeFavicon": {
3701
+ "type": "boolean",
3702
+ "description": "Include favicon URLs."
3703
+ }
3704
+ },
3705
+ "description": "Tavily extract options.",
3706
+ "additionalProperties": false
3707
+ }
3708
+ }
3709
+ }
3710
+ }
3711
+ },
3712
+ "valyu": {
3713
+ "type": "object",
3714
+ "additionalProperties": false,
3715
+ "properties": {
3716
+ "credentials": {
3717
+ "type": "object",
3718
+ "additionalProperties": false,
3719
+ "properties": {
3720
+ "api": {
3721
+ "oneOf": [
3722
+ {
3723
+ "type": "object",
3724
+ "additionalProperties": false,
3725
+ "properties": {
3726
+ "env": {
3727
+ "type": "string",
3728
+ "minLength": 1
3729
+ }
3730
+ },
3731
+ "required": ["env"]
3732
+ },
3733
+ {
3734
+ "type": "object",
3735
+ "additionalProperties": false,
3736
+ "properties": {
3737
+ "value": {
3738
+ "type": "string",
3739
+ "minLength": 1
3740
+ }
3741
+ },
3742
+ "required": ["value"]
3743
+ },
3744
+ {
3745
+ "type": "object",
3746
+ "additionalProperties": false,
3747
+ "properties": {
3748
+ "command": {
3749
+ "type": "array",
3750
+ "minItems": 1,
3751
+ "items": {
3752
+ "type": "string",
3753
+ "minLength": 1
3754
+ }
3755
+ }
3756
+ },
3757
+ "required": ["command"]
3758
+ }
3759
+ ]
3760
+ }
3761
+ }
3762
+ },
3763
+ "baseUrl": {
3764
+ "type": "string",
3765
+ "minLength": 1
3766
+ },
3767
+ "options": {
3768
+ "type": "object",
3769
+ "additionalProperties": false,
3770
+ "properties": {
3771
+ "search": {
3772
+ "type": "object",
3773
+ "properties": {
3774
+ "searchType": {
3775
+ "anyOf": [
3776
+ {
3777
+ "type": "string",
3778
+ "const": "all"
3779
+ },
3780
+ {
3781
+ "type": "string",
3782
+ "const": "web"
3783
+ },
3784
+ {
3785
+ "type": "string",
3786
+ "const": "proprietary"
3787
+ },
3788
+ {
3789
+ "type": "string",
3790
+ "const": "news"
3791
+ }
3792
+ ],
3793
+ "description": "Valyu search type. Use 'news' for recent journalism or current events, 'web' for public web results, 'proprietary' for Valyu proprietary sources, and 'all' when both public and proprietary sources are useful."
3794
+ },
3795
+ "responseLength": {
3796
+ "anyOf": [
3797
+ {
3798
+ "type": "string",
3799
+ "const": "short"
3800
+ },
3801
+ {
3802
+ "type": "string",
3803
+ "const": "medium"
3804
+ },
3805
+ {
3806
+ "type": "string",
3807
+ "const": "large"
3808
+ },
3809
+ {
3810
+ "type": "string",
3811
+ "const": "max"
3812
+ }
3813
+ ],
3814
+ "description": "Response length."
3815
+ },
3816
+ "countryCode": {
3817
+ "type": "string",
3818
+ "description": "Country code to scope search results."
3819
+ },
3820
+ "maxPrice": {
3821
+ "type": "number",
3822
+ "minimum": 0,
3823
+ "description": "Maximum price per thousand characters (CPM)."
3824
+ },
3825
+ "relevanceThreshold": {
3826
+ "type": "number",
3827
+ "minimum": 0,
3828
+ "maximum": 1,
3829
+ "description": "Minimum result relevance score."
3830
+ },
3831
+ "includedSources": {
3832
+ "type": "array",
3833
+ "items": {
3834
+ "type": "string"
3835
+ },
3836
+ "description": "Restrict retrieval to these Valyu sources."
3837
+ },
3838
+ "excludeSources": {
3839
+ "type": "array",
3840
+ "items": {
3841
+ "type": "string"
3842
+ },
3843
+ "description": "Exclude these Valyu sources."
3844
+ },
3845
+ "sourceBiases": {
3846
+ "type": "object",
3847
+ "patternProperties": {
3848
+ "^.*$": {
3849
+ "type": "number"
3850
+ }
3851
+ },
3852
+ "description": "Per-source relevance bias weights."
3853
+ },
3854
+ "category": {
3855
+ "type": "string",
3856
+ "description": "Valyu source category to search."
3857
+ },
3858
+ "startDate": {
3859
+ "type": "string",
3860
+ "description": "ISO date string for earliest result date."
3861
+ },
3862
+ "endDate": {
3863
+ "type": "string",
3864
+ "description": "ISO date string for latest result date."
3865
+ },
3866
+ "historicalCache": {
3867
+ "type": "boolean",
3868
+ "description": "Allow Valyu historical cache usage when supported."
3869
+ },
3870
+ "fastMode": {
3871
+ "type": "boolean",
3872
+ "description": "Use Valyu fast mode when lower latency is preferred."
3873
+ },
3874
+ "urlOnly": {
3875
+ "type": "boolean",
3876
+ "description": "Return URL-focused results with less content."
3877
+ },
3878
+ "instructions": {
3879
+ "type": "string",
3880
+ "description": "Provider instructions for retrieval and result selection."
3881
+ }
3882
+ },
3883
+ "description": "Valyu search options.",
3884
+ "additionalProperties": false
3885
+ },
3886
+ "contents": {
3887
+ "type": "object",
3888
+ "properties": {
3889
+ "summary": {
3890
+ "anyOf": [
3891
+ {
3892
+ "type": "boolean"
3893
+ },
3894
+ {
3895
+ "type": "string"
3896
+ },
3897
+ {
3898
+ "type": "object",
3899
+ "patternProperties": {
3900
+ "^.*$": {}
3901
+ }
3902
+ }
3903
+ ],
3904
+ "description": "Whether to include a summary, or instructions for the summary."
3905
+ },
3906
+ "extractEffort": {
3907
+ "anyOf": [
3908
+ {
3909
+ "type": "string",
3910
+ "const": "normal"
3911
+ },
3912
+ {
3913
+ "type": "string",
3914
+ "const": "high"
3915
+ },
3916
+ {
3917
+ "type": "string",
3918
+ "const": "auto"
3919
+ }
3920
+ ],
3921
+ "description": "Extraction effort. Use 'high' for difficult pages and 'normal' for faster extraction."
3922
+ },
3923
+ "responseLength": {
3924
+ "anyOf": [
3925
+ {
3926
+ "anyOf": [
3927
+ {
3928
+ "type": "string",
3929
+ "const": "short"
3930
+ },
3931
+ {
3932
+ "type": "string",
3933
+ "const": "medium"
3934
+ },
3935
+ {
3936
+ "type": "string",
3937
+ "const": "large"
3938
+ },
3939
+ {
3940
+ "type": "string",
3941
+ "const": "max"
3942
+ }
3943
+ ]
3944
+ },
3945
+ {
3946
+ "type": "number",
3947
+ "minimum": 0
3948
+ }
3949
+ ],
3950
+ "description": "Content response length."
3951
+ },
3952
+ "maxPriceDollars": {
3953
+ "type": "number",
3954
+ "minimum": 0,
3955
+ "description": "Maximum extraction cost in USD."
3956
+ },
3957
+ "screenshot": {
3958
+ "type": "boolean",
3959
+ "description": "Include screenshot capture when supported."
3960
+ },
3961
+ "startDate": {
3962
+ "type": "string",
3963
+ "description": "ISO date string for earliest content date."
3964
+ },
3965
+ "endDate": {
3966
+ "type": "string",
3967
+ "description": "ISO date string for latest content date."
3968
+ },
3969
+ "historicalCache": {
3970
+ "type": "boolean",
3971
+ "description": "Allow Valyu historical cache usage when supported."
3972
+ }
3973
+ },
3974
+ "description": "Valyu contents options.",
3975
+ "additionalProperties": false
3976
+ },
3977
+ "answer": {
3978
+ "type": "object",
3979
+ "properties": {
3980
+ "structuredOutput": {
3981
+ "type": "object",
3982
+ "patternProperties": {
3983
+ "^.*$": {}
3984
+ },
3985
+ "description": "JSON schema-like structured output specification."
3986
+ },
3987
+ "systemInstructions": {
3988
+ "type": "string",
3989
+ "description": "System instructions that guide Valyu answer generation."
3990
+ },
3991
+ "searchType": {
3992
+ "anyOf": [
3993
+ {
3994
+ "type": "string",
3995
+ "const": "all"
3996
+ },
3997
+ {
3998
+ "type": "string",
3999
+ "const": "web"
4000
+ },
4001
+ {
4002
+ "type": "string",
4003
+ "const": "proprietary"
4004
+ },
4005
+ {
4006
+ "type": "string",
4007
+ "const": "news"
4008
+ }
4009
+ ],
4010
+ "description": "Valyu search type for answer grounding."
4011
+ },
4012
+ "dataMaxPrice": {
4013
+ "type": "number",
4014
+ "minimum": 0,
4015
+ "description": "Maximum data retrieval price for answer grounding."
4016
+ },
4017
+ "countryCode": {
4018
+ "type": "string",
4019
+ "description": "Country code to scope answer results."
4020
+ },
4021
+ "includedSources": {
4022
+ "type": "array",
4023
+ "items": {
4024
+ "type": "string"
4025
+ },
4026
+ "description": "Restrict answer grounding to these Valyu sources."
4027
+ },
4028
+ "excludedSources": {
4029
+ "type": "array",
4030
+ "items": {
4031
+ "type": "string"
4032
+ },
4033
+ "description": "Exclude these Valyu sources from answer grounding."
4034
+ },
4035
+ "startDate": {
4036
+ "type": "string",
4037
+ "description": "ISO date string for earliest source date."
4038
+ },
4039
+ "endDate": {
4040
+ "type": "string",
4041
+ "description": "ISO date string for latest source date."
4042
+ },
4043
+ "fastMode": {
4044
+ "type": "boolean",
4045
+ "description": "Use Valyu fast mode when lower latency is preferred."
4046
+ }
4047
+ },
4048
+ "description": "Valyu answer options.",
4049
+ "additionalProperties": false
4050
+ },
4051
+ "research": {
4052
+ "type": "object",
4053
+ "properties": {
4054
+ "mode": {
4055
+ "anyOf": [
4056
+ {
4057
+ "type": "string",
4058
+ "const": "fast"
4059
+ },
4060
+ {
4061
+ "type": "string",
4062
+ "const": "standard"
4063
+ },
4064
+ {
4065
+ "type": "string",
4066
+ "const": "lite"
4067
+ },
4068
+ {
4069
+ "type": "string",
4070
+ "const": "heavy"
4071
+ },
4072
+ {
4073
+ "type": "string",
4074
+ "const": "max"
4075
+ }
4076
+ ],
4077
+ "description": "Valyu deep research mode."
4078
+ },
4079
+ "outputFormats": {
4080
+ "type": "array",
4081
+ "items": {
4082
+ "anyOf": [
4083
+ {
4084
+ "anyOf": [
4085
+ {
4086
+ "type": "string",
4087
+ "const": "markdown"
4088
+ },
4089
+ {
4090
+ "type": "string",
4091
+ "const": "pdf"
4092
+ },
4093
+ {
4094
+ "type": "string",
4095
+ "const": "toon"
4096
+ }
4097
+ ]
4098
+ },
4099
+ {
4100
+ "type": "object",
4101
+ "patternProperties": {
4102
+ "^.*$": {}
4103
+ }
4104
+ }
4105
+ ]
4106
+ },
4107
+ "description": "Requested Valyu research output formats."
4108
+ },
4109
+ "search": {
4110
+ "type": "object",
4111
+ "properties": {
4112
+ "searchType": {
4113
+ "anyOf": [
4114
+ {
4115
+ "type": "string",
4116
+ "const": "all"
4117
+ },
4118
+ {
4119
+ "type": "string",
4120
+ "const": "web"
4121
+ },
4122
+ {
4123
+ "type": "string",
4124
+ "const": "proprietary"
4125
+ }
4126
+ ],
4127
+ "description": "Valyu source pool for research."
4128
+ },
4129
+ "includedSources": {
4130
+ "type": "array",
4131
+ "items": {
4132
+ "type": "string"
4133
+ }
4134
+ },
4135
+ "excludedSources": {
4136
+ "type": "array",
4137
+ "items": {
4138
+ "type": "string"
4139
+ }
4140
+ },
4141
+ "sourceBiases": {
4142
+ "type": "object",
4143
+ "patternProperties": {
4144
+ "^.*$": {
4145
+ "type": "number"
4146
+ }
4147
+ }
4148
+ },
4149
+ "startDate": {
4150
+ "type": "string"
4151
+ },
4152
+ "endDate": {
4153
+ "type": "string"
4154
+ },
4155
+ "historicalCache": {
4156
+ "type": "boolean"
4157
+ },
4158
+ "category": {
4159
+ "type": "string"
4160
+ },
4161
+ "countryCode": {
4162
+ "type": "string"
4163
+ }
4164
+ },
4165
+ "additionalProperties": false,
4166
+ "description": "Valyu deep research search configuration."
4167
+ },
4168
+ "tools": {
4169
+ "type": "object",
4170
+ "properties": {
4171
+ "code_execution": {
4172
+ "anyOf": [
4173
+ {
4174
+ "type": "boolean"
4175
+ },
4176
+ {
4177
+ "type": "object",
4178
+ "properties": {
4179
+ "enabled": {
4180
+ "type": "boolean"
4181
+ },
4182
+ "max_calls": {
4183
+ "type": "integer",
4184
+ "minimum": 0,
4185
+ "description": "Lower the tool's call limit; 0 disables it."
4186
+ }
4187
+ },
4188
+ "additionalProperties": false
4189
+ }
4190
+ ]
4191
+ },
4192
+ "screenshots": {
4193
+ "anyOf": [
4194
+ {
4195
+ "type": "boolean"
4196
+ },
4197
+ {
4198
+ "type": "object",
4199
+ "properties": {
4200
+ "enabled": {
4201
+ "type": "boolean"
4202
+ },
4203
+ "max_calls": {
4204
+ "type": "integer",
4205
+ "minimum": 0,
4206
+ "description": "Lower the tool's call limit; 0 disables it."
4207
+ }
4208
+ },
4209
+ "additionalProperties": false
4210
+ }
4211
+ ]
4212
+ },
4213
+ "browser_use": {
4214
+ "anyOf": [
4215
+ {
4216
+ "type": "boolean"
4217
+ },
4218
+ {
4219
+ "type": "object",
4220
+ "properties": {
4221
+ "enabled": {
4222
+ "type": "boolean"
4223
+ },
4224
+ "max_calls": {
4225
+ "type": "integer",
4226
+ "minimum": 0,
4227
+ "description": "Lower the tool's call limit; 0 disables it."
4228
+ }
4229
+ },
4230
+ "additionalProperties": false
4231
+ }
4232
+ ]
4233
+ },
4234
+ "charts": {
4235
+ "anyOf": [
4236
+ {
4237
+ "type": "boolean"
4238
+ },
4239
+ {
4240
+ "type": "object",
4241
+ "properties": {
4242
+ "enabled": {
4243
+ "type": "boolean"
4244
+ },
4245
+ "max_calls": {
4246
+ "type": "integer",
4247
+ "minimum": 0,
4248
+ "description": "Lower the tool's call limit; 0 disables it."
4249
+ }
4250
+ },
4251
+ "additionalProperties": false
4252
+ }
4253
+ ]
4254
+ }
4255
+ },
4256
+ "additionalProperties": false,
4257
+ "description": "Valyu deep research tool configuration."
4258
+ }
4259
+ },
4260
+ "description": "Valyu research options.",
4261
+ "additionalProperties": false
4262
+ }
4263
+ }
4264
+ }
4265
+ }
4266
+ }
4267
+ }
4268
+ }
4269
+ }
4270
+ }