New:Microsoft Teams Notifications Are Now Available in Socket.Learn more →
Get Started

@pymodel/dsh-tavily

Package Overview
Dependencies
Maintainers
1
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@pymodel/dsh-tavily

Tavily web search + Tavily MCP for DSH: settings toggle to official DeepSeek, keyless search, MCP extract/crawl/map

latest
Source
npmnpm
Version
0.3.1
Version published
Weekly downloads
100
47.06%
Maintainers
1
Weekly downloads
 
Created
Source

@pymodel/dsh-tavily

awesome · DSH plugin Recommend dshfind

Tavily for DeepSeek Harness: adds the Tavily Search API as a web search provider, plus a Tavily MCP bridge — keyless search / extract, crawl / map with an API key.

Install

npm (stable, official recommendation):

dsh plugin --profile web add @pymodel/dsh-tavily
dsh web

Or follow GitHub (latest commit on the repo):

dsh plugin --profile web add github:pymodel/dsh-research-plugins#path:packages/dsh-tavily

Settings → Plugins → Tavily web search (DSH 0.1.5 / DSH Desktop), or Plugins → @pymodel/dsh-tavily (DSH 0.1.7+): turn the toggle on. The key is optional; leave it blank for keyless search. Test connection at the bottom-left checks that search works now (including keyless).

Pin a commit:

dsh plugin --profile web add github:pymodel/dsh-research-plugins#path:packages/dsh-tavily#<commit>

Remove:

dsh plugin --profile web remove dsh-tavily

dsh.bundle · prebuilt lib/ · git install does not need allowBuilds

Features

  • Settings toggle: off = official DeepSeek, on = Tavily — no uninstall to switch back
  • No key uses Tavily keyless; a key uses Authorization: Bearer
  • Bottom-left connection test: one real Tavily search (max_results: 1); keyless if no key, account quota if a key is saved (1 credit)
  • Timeout, abort, official host lock, drop results without a url
  • Settings card design refresh: collapsed-header mode badge (Official DeepSeek / Tavily keyless / Tavily API key) with a status dot, so the active provider is visible at a glance
  • Accessible async feedback: polite live-region announcements for connection-test and save outcomes, inline button spinners, connected-success tint — all honoring prefers-reduced-motion
  • Show/hide reveal for the API key input (with autocomplete and spellcheck off)
  • Opt-in adoption of the latest Tavily Search parameters via plugin config: searchDepth (basic / advanced / fast) and autoParameters (lets Tavily tune topic and depth per query; explicit values still win)
  • Key and toggle live on the credentials plane, not the settings file
  • Tavily MCP bridge: mcp__tavily__tavily-search / tavily-extract work keyless; crawl / map unlock with TAVILY_API_KEY

Behavior

ToggleKeyweb_search
Off (default)—official DeepSeek
OnemptyTavily keyless
OnsetTavily account quota

Provider id: tavily.

MCP tools

The bundled MCP row registers Tavily's hosted MCP server under the tavily namespace and works out of the box:

  • Keyless (default): the required X-Tavily-Access-Mode: keyless header selects free rate-limited access with the tavily-search and tavily-extract tools.
  • Keyed: set TAVILY_API_KEY to unlock crawl / map and use your account quota:
export TAVILY_API_KEY=tvly-...

or in a project .env / $DSH_HOME/.env:

TAVILY_API_KEY=tvly-...

The key goes into the Authorization: Bearer header at load time — never into the endpoint URL and never into YAML. A key added to .env needs a dsh web restart.

If your profile's cordis.patch.yml already inserts its own Tavily MCP row (id mcp-tavily or serverName tavily), DSH will not boot with both: delete that row, or turn it into an override of mcp-tavily (see Already have your own MCP row?).

Credentials

RefMeaning
TAVILY_API_KEYOptional (search). Present = account quota; absent = keyless
TAVILY_SEARCH_ENABLEDPresent = on; unset = off

The search key and toggle are stored on the credentials plane ($DSH_HOME/.credentials.yaml). The MCP bridge reads TAVILY_API_KEY from the launch environment instead, because MCP rows resolve before credentials are materialized. Do not commit real keys.

Updates

  • 0.3.1 Works on DSH 0.1.5 (DSH Desktop) and 0.1.7: the search provider no longer fails to start on 0.1.7 (settings.register is gone there); the settings card loads its store from @deepseek-ai/dsh-client-store (the removed dsh-client-runtime left it blank and raised a DSH Desktop Safe Mode warning), writes through remote.credentials so Save works, refreshes on credentials/reference-updated, and also renders on 0.1.7's plugin page; peer ranges set to >=0.1.5-rc.2 <0.3.0-0 so DSH 0.2's installer accepts it (tested on 0.1.5-rc.2, 0.1.7-rc.2 and 0.2.0-rc.1); the probe route is released on plugin reload; the web override keeps dsh-base's fetchProvider: http; README documents the duplicate mcp-tavily row conflict.
  • 0.3.0 Settings-card design refresh informed by current UI/a11y guidance (ARIA live regions for async status, prefers-reduced-motion support): header mode badge with status dot, spinner states on Test/Save, saved confirmation announcement, show/hide key toggle. Server provider adopts the latest Tavily Search API surface behind opt-in config: searchDepth including the new fast tier, and auto_parameters.
  • 0.2.0 MCP bridge: keyless mode via X-Tavily-Access-Mode: keyless (row always on); keyed auth moved from URL query parameter to Authorization: Bearer header. Search provider: caller cancellation preserved on runtimes without AbortSignal.any.
  • 0.1.0 First release as @pymodel/dsh-tavily. Web search provider with settings toggle (off = official DeepSeek, on = Tavily) plus a Tavily MCP bridge (extract / crawl / map). English-only localisation.

Author

elkaix · pymodel

Keywords

dsh-plugin

FAQs

Package last updated on 29 Sep 2026

Related posts