TavilyResearchTool lets CrewAI agents kick off Tavily research tasks, returning a synthesized, cited report (or a stream of progress events) instead of raw search results. Use it when an agent needs an investigative answer rather than a single web search.
Installation
To use theTavilyResearchTool, install the tavily-python library alongside crewai-tools:
Environment Variables
Set your Tavily API key:Example Usage
Configuration Options
TheTavilyResearchTool accepts the following arguments — all can be set on the tool instance (defaults for every call) or per-call via the agent’s tool input:
input(str): Required. The research task or question to investigate.model(Literal[“mini”, “pro”, “auto”]): The Tavily research model."auto"lets Tavily pick;"mini"is faster/cheaper;"pro"is the most capable. Defaults to"auto".output_schema(dict | None): Optional JSON Schema that structures the research output. Useful when you want strictly typed results.stream(bool): WhenTrue, the tool returns an iterator of SSE chunks emitting research progress and the final result instead of a single string. Defaults toFalse.citation_format(Literal[“numbered”, “mla”, “apa”, “chicago”]): Citation format for the report. Defaults to"numbered".
Advanced Usage
Configure defaults on the tool instance
Stream research progress
Whenstream=True, the tool returns a generator (or async generator from _arun) of SSE chunks so your application can surface incremental progress:
Structured output via JSON Schema
Pass anoutput_schema when you need a typed result instead of a free-form report:
Features
- End-to-end research: Returns a synthesized, cited report rather than raw search hits.
- Model selection: Trade off cost, speed, and depth via
mini,pro, orauto. - Streaming: Stream incremental progress and results as SSE chunks for responsive UIs.
- Structured output: Coerce results to a JSON Schema you define.
- Multiple citation styles: Choose from numbered, MLA, APA, or Chicago citations.
- Sync and async: Use either
_runor_arundepending on your application’s runtime.
