Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Build production-ready Tavily integrations with best practices baked in. Reference documentation for developers using coding assistants (Claude Code, Cursor, etc.) to implement web search, content extraction, crawling, and research in agentic workflows, RAG systems, or autonomous agents.
.claude/skills/kunanonj-cursor-plugin-tavily-tavily-best-practices/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | -21% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 25% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 2% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 141% | 0% |
| case-12 | ✗→✓ | ▲ Improved | -15% | 0% |
Tavily is a search API designed for LLMs, enabling AI applications to access real-time web data.
Python:
bashpip install tavily-python
JavaScript:
bashnpm install @tavily/core
See references/sdk.md for complete SDK reference.
pythonfrom tavily import TavilyClient # Uses TAVILY_API_KEY env var (recommended) client = TavilyClient() #With project tracking (for usage organization) client = TavilyClient(project_id="your-project-id") # Async client for parallel queries from tavily import AsyncTavilyClient async_client = AsyncTavilyClient()
For custom agents/workflows:
| Need | Method | |------|--------| | Web search results | search() | | Content from specific URLs | extract() | | Content from entire site | crawl() | | URL discovery from site | map() |
For out-of-the-box research:
| Need | Method | |------|--------| | End-to-end research with AI synthesis | research() |
pythonresponse = client.search( query="quantum computing breakthroughs", # Keep under 400 chars max_results=10, search_depth="advanced" ) print(response)
Key parameters: query, max_results, search_depth (ultra-fast/fast/basic/advanced), include_domains, exclude_domains, time_range
See references/search.md for complete search reference.
python# Simple one-step extraction response = client.extract( urls=["https://docs.example.com"], extract_depth="advanced" ) print(response)
Key parameters: urls (max 20), extract_depth, query, chunks_per_source (1-5)
See references/extract.md for complete extract reference.
pythonresponse = client.crawl( url="https://docs.example.com", instructions="Find API documentation pages", # Semantic focus extract_depth="advanced" ) print(response)
Key parameters: url, max_depth, max_breadth, limit, instructions, chunks_per_source, select_paths, exclude_paths
See references/crawl.md for complete crawl reference.
pythonresponse = client.map( url="https://docs.example.com" ) print(response)
pythonimport time # For comprehensive multi-topic research result = client.research( input="Analyze competitive landscape for X in SMB market", model="pro" # or "mini" for focused queries, "auto" when unsure ) request_id = result["request_id"] # Poll until completed response = client.get_research(request_id) while response["status"] not in ["completed", "failed"]: time.sleep(10) response = client.get_research(request_id) print(response["content"]) # The research report
Key parameters: input, model ("mini"/"pro"/"auto"), stream, output_schema, citation_format
See references/research.md for complete research reference.
For complete parameters, response fields, patterns, and examples:
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-20 | pass→pass | 7,516 | 7,210 | -4% | 1 | 1 | 0% | 1,457 | 2,478 | +70% | 0 | 0 | — |
case-01 | fail→pass | 16,452 | 6,630 | -60% | 1 | 1 | 0% | 3,213 | 2,528 | -21% | 0 | 0 | — |
case-02 | pass→pass | 4,532 | 3,104 | -32% | 1 | 1 | 0% | 897 | 1,681 | +87% | 0 | 0 | — |
case-03 | pass→pass | 10,298 | 7,611 | -26% | 1 | 1 | 0% | 1,968 | 2,569 | +31% | 0 | 0 | — |
case-04 | pass→pass | 5,465 | 3,458 | -37% | 1 | 1 | 0% | 1,151 | 1,838 | +60% | 0 | 0 | — |
case-05 | pass→pass | 8,085 | 5,205 | -36% | 1 | 1 | 0% | 1,680 | 2,174 | +29% | 0 | 0 | — |
case-06 | fail→pass | 7,858 | 4,377 | -44% | 1 | 1 | 0% | 1,598 | 1,994 | +25% | 0 | 0 | — |
case-07 | fail→pass | 8,371 | 2,659 | -68% | 1 | 1 | 0% | 1,630 | 1,670 | +2% | 0 | 0 | — |
case-08 | fail→pass | 3,946 | 3,600 | -9% | 1 | 1 | 0% | 773 | 1,861 | +141% | 0 | 0 | — |
case-09 | pass→pass | 11,708 | 5,183 | -56% | 1 | 1 | 0% | 2,242 | 2,058 | -8% | 0 | 0 | — |
case-10 | pass→pass | 6,141 | 2,072 | -66% | 1 | 1 | 0% | 1,204 | 1,447 | +20% | 0 | 0 | — |
case-11 | pass→pass | 5,360 | 4,093 | -24% | 1 | 1 | 0% | 1,132 | 1,946 | +72% | 0 | 0 | — |
case-12 | fail→pass | 9,207 | 1,676 | -82% | 1 | 1 | 0% | 1,639 | 1,393 | -15% | 0 | 0 | — |
case-13 | pass→pass | 5,100 | 3,036 | -40% | 1 | 1 | 0% | 1,059 | 1,675 | +58% | 0 | 0 | — |
case-14 | fail→pass | 8,764 | 3,168 | -64% | 1 | 1 | 0% | 1,611 | 1,723 | +7% | 0 | 0 | — |
case-15 | pass→pass | 3,404 | 2,544 | -25% | 1 | 1 | 0% | 729 | 1,516 | +108% | 0 | 0 | — |
case-16 | pass→pass | 2,687 | 901 | -66% | 1 | 1 | 0% | 433 | 1,229 | +184% | 0 | 0 | — |
case-17 | pass→pass | 1,450 | 1,332 | -8% | 1 | 1 | 0% | 202 | 1,272 | +530% | 0 | 0 | — |
case-18 | pass→pass | 7,590 | 3,677 | -52% | 1 | 1 | 0% | 1,376 | 1,834 | +33% | 0 | 0 | — |
case-19 | pass→pass | 3,987 | 3,825 | -4% | 1 | 1 | 0% | 744 | 1,788 | +140% | 0 | 0 | — |
case-21 | pass→pass | 8,830 | 12,284 | +39% | 1 | 1 | 0% | 1,954 | 3,024 | +55% | 0 | 0 | — |
case-22 | pass→pass | 5,645 | 4,378 | -22% | 1 | 1 | 0% | 1,211 | 1,972 | +63% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +27 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.