# searchts

> Keyless local reader for agents. Fetch a URL or admit you can't. One read path (`unlocker.fetch`). Fail loud on thin pages, challenges, and login walls.

PyPI: https://pypi.org/project/searchts/ · Repo: https://github.com/capad-xyz/searchts

## Install

- **Keep:** `pipx install "searchts[mcp]"`
- **Try / Claude MCP (no PATH):** `claude mcp add searchts -- uvx --from "searchts[mcp]" searchts mcp serve`
- **venv only:** `pip install "searchts[mcp]"` — not the recommended CLI path

Do **not** `pip install searchts` onto Homebrew/PEP 668 Python. Do **not** invent `searchts search-twitter` or `searchts install --env=auto` as the product.

## Demo

```
uvx --from "searchts[mcp]" searchts -v read https://en.wikipedia.org/wiki/Ada_Lovelace
```

`example.com` is thinner than `_MIN_CHARS` and looks like a failed install. Reddit/LinkedIn often **fail loud** — that is success of honesty, not a broken install.

## Commands

- `searchts read <url>` — Markdown via curl_cffi → Jina → stealth-browser
- `searchts search "<query>"` — keyless DuckDuckGo (+ optional SearXNG/Exa/Brave/Tavily)
- `searchts transcribe <url>` — subtitles-first
- `searchts grab` / `searchts get` — assets
- `searchts doctor` — **read-only** health (does not install skills)
- `searchts mcp serve` / `searchts skill install`

MCP tools: `read_url`, `web_search`, `fetch_asset`, `grab_site`, `get_status`, `transcribe`.

## Not this product

No channel router (`if host==reddit`). No default paid proxies. No cookie Twitter as the core. Doctor probes optional CLIs (`gh`, …) — they are not how `read` works.

Full docs: https://github.com/capad-xyz/searchts/blob/main/README.md
