tavily-ai/tavily-power/migrate-to-tavily

Claude Code and agent skill by tavily-ai/tavily-power

Trust tier 3
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

Migrate an existing integration from a competing web-search/research API — Exa, Firecrawl, Perplexity, or Parallel — over to Tavily, preserving behavior while swapping calls, imports, environment variables, and error handling. Use this skill when the user has working code against a competitor's SDK and wants to switch providers, or says "migrate this to Tavily", "switch from Exa/Firecrawl/Perplexity/Parallel to Tavily", "replace this competitor API with Tavily", or "port this integration over". Do NOT use this for greenfield Tavily integrations with no existing competitor code — start with tavily-best-practices instead.

Install

npx vskill@latest install tavily-ai/tavily-power/migrate-to-tavily

SKILL.md

migrate to tavily

Convert an existing integration against a competitor's search/extract/research API into an equivalent Tavily integration.

When to use

  • There's existing code calling Exa, Firecrawl, Perplexity, or Parallel
  • The user wants the same behavior, just backed by Tavily instead

Not this skill:

Process

  1. Find what's actually used. Grep the codebase for the competitor's SDK import, client construction, and each method call site — don't assume every method the SDK offers is in use.
  2. Map each call site using the tables below.
  3. Rewrite imports, client construction, method calls, and response field access.
  4. Update dependencies (package.json/requirements.txt) and environment variables (.env, config, CI secrets references — flag secret rotation as the user's responsibility, don't invent new key values).
  5. Update error handling to match Tavily's exceptions/response shape (see tavily-best-practices/references/sdk.md).
  6. Flag anything with no clean equivalent rather than silently dropping functionality — call it out to the user explicitly.

Mapping tables

From Exa
ExaTavilyNotes
exa.search(query, ...)client.search(query, ...) → tavily-searchExa's neural/keyword type param has no direct Tavily equivalent — Tavily's search_depth (basic/advanced) is the closest lever
exa.get_contents(urls)client.extract(urls) → tavily-extract
exa.find_similar(url)No direct equivalentApproximate with client.search() using the source page's title/topic as the query
exa.search_and_contents(...)client.search(..., include_raw_content=True)One-call combined pattern, same idea
From Firecrawl
FirecrawlTavilyNotes
firecrawl.scrape_url(url)client.extract(urls=[url]) → tavily-extract
firecrawl.crawl_url(url, ...)client.crawl(url, ...) → tavily-crawlFirecrawl's limit/maxDepth map to Tavily's limit/max_depth
firecrawl.map_url(url)client.map(url) → tavily-map
Firecrawl's markdown/structured extraction modesTavily's extract_depth="advanced" + format="markdown"
From Perplexity
PerplexityTavilyNotes
sonar/sonar-pro chat-completions call used for researchclient.research(input, model="mini"/"pro") → tavily-researchPerplexity returns research as a chat completion; Tavily's research() is purpose-built, async, and supports output_schema for structured results
Inline citations in the completion textresponse["sources"] + citation_formatTavily returns citations as structured data rather than inline markers — update any citation-parsing code accordingly
From Parallel
ParallelTavilyNotes
parallel-web-searchclient.search(...) → tavily-search
parallel-web-extractclient.extract(...) → tavily-extract
parallel-deep-researchclient.research(..., model="pro") → tavily-research
parallel-findallbuild-entity-listSame underlying idea — structured list of matching entities
parallel-data-enrichmentfill-missing-fieldsSame underlying idea — fill in fields on an existing list
parallel-monitorwatch-for-changesParallel's is a hosted platform feature; Tavily's equivalent is orchestration-based (see that skill's notes) — call this difference out to the user rather than promising an identical hosted experience
status / result (run ID lookup)client.get_research(request_id) / tvly research status/pollBuilt into tavily-research rather than separate calls
parallel-memorypast-research-searchTavily has no hosted memory store — this is a local logging convention, say so

Tips

  • Preserve response shape at the boundary if the rest of the app depends on it. If a wholesale rewrite is risky, write a thin adapter function that calls Tavily internally but returns the old shape, rather than touching every call site.
  • Don't invent parity that doesn't exist. Where Tavily has no equivalent (e.g., Exa's find_similar), say so plainly rather than approximating silently and letting behavior quietly change.
  • Check rate limits and pricing separately — this skill migrates code, not commercial terms; flag that the user should confirm their Tavily plan covers their call volume.
  • Test against real data before removing the old integration. Run both side-by-side on a few known cases and compare outputs.

See also

Security

  • Security scanPassed, 90 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

7-day trend score
0

Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/tavily-ai/tavily-power/migrate-to-tavily/badge)](https://verified-skill.com/skills/tavily-ai/tavily-power/migrate-to-tavily)

Something wrong with this skill or its page? Tell us.