Skip to content
Back to skills

Tavily

ASecurity

Tavily REST search and cited research. Key from `$TAVILY_API_KEY` (BB: Env Catalog `TAVILY_API_KEY`; terminal outside BB: `~/secrets/tavily.env`). Use when: tavily, поиск в интернете, cited report, источники с URL. SKIP: one known URL (WebFetch); X/Twitter slang (grok); SEO SERP (seo-specialist).

  • 121 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 3, 2026
ai-agentspythonbashapi

Works with

  • terminal
  • cli
  • api

Security analysis

A100/100

Scanned October 4, 2026

npx -y skills add VKirill/claude-lane-stack --skill tavily --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Tavily?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Tavily
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/vkirill-tavily/badge)](https://www.skillsdirectory.com/skills/vkirill-tavily)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: tavily
description: "Tavily REST search and cited research. Key from `$TAVILY_API_KEY` (BB: Env Catalog `TAVILY_API_KEY`; terminal outside BB: `~/secrets/tavily.env`). Use when: tavily, поиск в интернете, cited report, источники с URL. SKIP: one known URL (WebFetch); X/Twitter slang (grok); SEO SERP (seo-specialist)."
argument-hint: "[search|research]"
---

# Tavily

Host skill. Not the skills.sh `tvly` CLI pack. REST only.

Session agent: `tavily` (`cc tavily`). Copy-lead writes under `.agents/copy/research/inbox/`.

Key, in this order: `$TAVILY_API_KEY` if it is set (BB sessions get it from the Env Catalog); else the Env Catalog entry `TAVILY_API_KEY` (`env_get`); else, only in a terminal session outside BB, the file:

```bash
if [ -z "${TAVILY_API_KEY:-}" ] && [ -f ~/secrets/tavily.env ]; then set -a; source ~/secrets/tavily.env; set +a; fi
test -n "${TAVILY_API_KEY:-}" || { echo "MISSING TAVILY_API_KEY (env, Env Catalog or ~/secrets/tavily.env)"; exit 1; }
```

Inside a BB / Lane Pilot session do not read `~/secrets/tavily.env`: the key is already in the session or in the Env Catalog. No key anywhere → stop and report. Do not print the key. Do not `npx skills add`.

Query = search string, **< 400 chars**, not an essay. Split fat questions into 2–4 calls.

One note per query. Never append to a single `web.md`.

```bash
if [ -d .agents/copy ]; then
  INBOX=.agents/copy/research/inbox
else
  INBOX=.agents/research/inbox
fi
STAMP=$(date +%F)-<slug>
mkdir -p "$INBOX"
```

Copy the research-note template to `$INBOX/$STAMP.md`. Dump JSON beside it as `$STAMP.json`. Add a row to `.agents/copy/INDEX.md` when that board exists. Do not dump raw HTML into chat.

## search (default)

Facts, examples, language snippets, a handful of URLs. Seconds.

```bash
curl -sS -X POST https://api.tavily.com/search \
  -H "Authorization: Bearer $TAVILY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query":"<QUERY>","max_results":5,"search_depth":"basic","include_answer":true}' \
  > "$INBOX/$STAMP.json"
```

Useful fields (omit if unused):

| Field | Values |
|---|---|
| `search_depth` | `basic` (default), `advanced` |
| `max_results` | 1–20 |
| `topic` | `general`, `news`, `finance` |
| `time_range` | `day`, `week`, `month`, `year` |
| `include_domains` / `exclude_domains` | arrays of hosts |
| `include_raw_content` | `false` unless you need page text |

Then fill `$INBOX/$STAMP.md` (claim + URL + snippet). Invented slang = delete.

## research (report)

Only when the human wants a **cited report** (landscape / ЦА / compare) and a time budget. 30–120s. Not for «найди 3 примера».

`input` may be a longer brief than a search query.

```bash
req=$(curl -sS -X POST https://api.tavily.com/research \
  -H "Authorization: Bearer $TAVILY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"input":"<BRIEF>","model":"mini","output_length":"standard"}')
echo "$req" > "$INBOX/$STAMP-job.json"
id=$(python3 -c 'import json,sys; print(json.load(sys.stdin)["request_id"])' <<<"$req")
for i in 1 2 3 4 5 6 7 8 9 10 11 12; do
  code=$(curl -sS -o "$INBOX/$STAMP.json" -w '%{http_code}' \
    -H "Authorization: Bearer $TAVILY_API_KEY" \
    "https://api.tavily.com/research/$id")
  [ "$code" = "200" ] && break
  sleep 10
done
```

| `model` | When |
|---|---|
| `mini` | one topic (~30s) — default |
| `pro` | compare / multi-angle (~60–120s) |
| `auto` | let Tavily pick |

Ask duration if unknown: «Сколько крутить ресёрч?» Unknown → `mini`.

Copy `content` + `sources` into `$INBOX/$STAMP.md` (`kind: report`). Report sentences are leads, not buyer quotes. After a lift into copy files: `mv` the note to `research/used/`.

## NEVER

- Print `TAVILY_API_KEY` or the env file (use it only in the `Authorization` header)
- Install `tvly` / skills.sh Tavily packs (this skill is REST only)
- `/research` for one URL or a top-N list
- Raw HTML in chat
- Treat a snippet as a confirmed customer quote
- Append into `web.md` / `deep.md` at the research root

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.