tavily

tavily

tavily.

Search the web and get cited snippets plus a short synthesized answer.

add to otoauth : —prefix : tavily_*

setup & usage

⚠ tavily api key

create an API key in Tavily (it starts with tvly-), then paste it into oto. the free tier gives 1,000 credits per month.

  • an oto platform key can also be set by the super-admin: it serves as a fallback when neither the account nor the org has its own
  • ▸ search the web and read pages, tailored for an agent

    a search returns cited excerpts AND a synthesized answer; a read returns the clean markdown of several URLs at once.

  • "what is X?" / "find me recent info on Y" → tavily_search (set topic="news" and time_range for current events)
  • "read these 5 pages and summarize" → tavily_extract with the list of URLs (failed URLs come back in failed_results, the rest goes through)
  • "what pages does this site have?" → tavily_map (URLs only, do it BEFORE a crawl)
  • "get the docs / case studies of this site" → tavily_crawl with instructions in natural language (synchronous, 100 pages max)
  • · cost and choice of tool

    each response carries usage.credits: search 1 credit (advanced 2), extract 1 credit per 5 URLs, crawl/map 1 credit per 10 pages (×2 with instructions or advanced).

  • raw Google SERP (rankings, People Also Ask) → serper_search, not Tavily
  • ONE page with JavaScript executed, or a page that blocks → firecrawl_scrape
  • crawl of a whole domain → firecrawl_crawl (asynchronous, uncapped); tavily_crawl is bounded to 100 pages / 40 s
  • include_raw_content on a search makes the response much heavier: prefer tavily_extract on the URLs you keep
  • · project perimeter (#605, 2026-08-29)

    under a project with excluded_url_prefixes, tavily_search, tavily_map and tavily_crawl drop the matching results/pages and say so (excluded_by_perimeter); tavily_extract, tavily_map and tavily_crawl refuse a matching URL (for extract, the whole batch is refused, naming the URLs). the synthesized answer is prose: it is not filtered. details: docs/projects.md.

    ⚙ multiple comptes

    this connector accepts multiple comptes: each stored credential becomes a named account (one name per compte), at your level, your team's or your org's.

  • the first one doesn't need a name; from the second on, each one carries its own (the first then takes the name "principal", renamable)
  • without specification, the agent takes the only stored compte, otherwise the one marked as default; otherwise the call is refused, naming the available comptes — never a random choice
  • target a compte for a call: _account="<name>" on the tool; list them: oto_identity(op='list', connector='tavily') (scope='org' or scope='group' for the org's or team's)
  • set the default: oto_identity(op='set', connector='tavily', identity_id='<name>'); rename: op='rename' with new_name
  • ⚠️ no tool walks through the comptes on its own: a total across several comptes is obtained by calling each one (_account) and adding up
  • outils

    chargement…

    usage

    claude code — install the oto plugin — claude plugin marketplace add otomata-tech/oto-plugin — mcp + skill configured.
    claude.ai — add mcp.oto.cx/mcp as a custom connector (guide)
    cli — pipx install oto-cli then oto tavily …