Reads bot-walled web pages as Markdown, searches the web, extracts assets, and transcribes videos without API keys.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent โ or use 1-click editor setup below.
The install command below didn't complete successfully in our automated test.
uvx --fromerror: a value is required for '--from <FROM>' but none was supplied For more information, try '--help'.
This is an experimental automated check and can have false negatives โ missing environment variables, a slow cold install, etc. It doesnโt necessarily mean somethingโs wrong. Last checked 4d ago.
๐ก Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Inspect callable tools, capabilities, and parameters exposed to AI agents by Searchts.
The missing layer between AI and the web. A Python CLI and library that lets an AI agent read and search the internet, fronted by a fully open-source "unlocker" that gets through common bot-walls with no paid proxy and no API key.
โถ Watch the full 1-minute demo
AI agents constantly need to read web pages, but the naive way they fetch is trivially blocked by modern anti-bot systems (Cloudflare, PerimeterX, DataDome). Paid unlocker services solve this, but the thing they really charge for is a large pool of clean residential IP addresses. searchts runs on your own machine, from your own connection, at personal volume, so it sidesteps that cost and gets through most of those walls for free.
searchts reads any URL through an escalating ladder and stops at the first tier that returns real content:
r.jina.ai), for pages that only fill in content after running JS. Default on โ the target URL is sent to Jina's servers on this rung. Opt out with SEARCHTS_NO_JINA=1 or config jina: false (local curl + stealth only).If no tier comes back with real content, an optional human-in-the-loop step opens a real browser so you can clear the page once and continue. That covers interactive CAPTCHAs and soft walls alike: a login page served as HTTP 200 is not a challenge, but it is still a page only a human gets past. Block detection is phrase-based (not vendor-name based), so legitimate pages that merely embed a bot-sensor script are not falsely rejected. Content is extracted to clean Markdown with trafilatura.
Walls (F12 playbook, not a bypass): fail loud on login/challenge/thin. Do not cut a release that claims Reddit/LinkedIn now read (N7). Order: stealth already retries page.content after a navigation race (P3.11) โ next is a persistent Chromium profile so clearance can survive across reads (F1, not shipped) โ then --human / device session for extras only (F7, never silent, never inside read_url). Never paid residential as default (N1). Never a keyed commercial unlocker as default (N3).
Share links from AI chat apps are a special kind of hard: the conversation never appears in the page HTML as extractable text, so generic readers (and most AI agents' built-in fetch) return an empty shell or a fragment cut off mid-chat. searchts read recognizes these URLs and decodes each provider's own data channel instead, returning the complete conversation as role-labeled Markdown โ keyless, no login:
| Provider | Share URL | How it's read |
|---|---|---|
| ChatGPT | chatgpt.com/share/โฆ, chatgpt.com/s/โฆ | turbo-stream payload embedded in the page |
| Claude | claude.ai/share/โฆ | keyless snapshot API (behind Cloudflare) |
| Gemini | gemini.google.com/share/โฆ | keyless batchexecute RPC |
| Grok | grok.com/share/โฆ, x.com/i/grok/share/โฆ | keyless share-links API |
| Poe | poe.com/s/โฆ | __NEXT_DATA__ payload embedded in the page |
| DeepSeek | chat.deepseek.com/share/โฆ | stealth render, scrolled to the end |
| Perplexity | perplexity.ai/search/โฆ, perplexity.ai/page/โฆ | stealth render, scrolled to the end |
| Copilot | copilot.microsoft.com/shares/โฆ, โฆ/shares/pages/โฆ | stealth render, scrolled to the end |
The first five need no browser. The last three are JavaScript shells with nothing in the initial HTML, so those reuse the stealth tier: wait for the conversation to render, auto-scroll until the page height stops changing (list virtualization will otherwise truncate a long chat), then expand the collapsed sections before reading. The benchmark currently covers the five that read without a browser and passes all five; the three that need one are not in it yet.
ChatGPT issues two shapes: /share/<uuid> for a whole conversation, and the
newer /s/<prefix>_<id> short links for a single shared turn (t_ thread,
m_ message, dr_ deep research, cd_ Codex). Both are read.
Each provider is a drop-in plugin module (searchts/share_extractors/); if a provider changes its format, extraction falls back to the normal unlocker ladder instead of failing.
Keep it (global isolated CLI, MCP extra included):
Try it without installing (one-shot, copy-paste):
venv / packaging only (not the recommended path for the CLI):
read flags: --json, --backend <tier>, --human (hand off a CAPTCHA or login wall to a real browser), --scrub (redact injection).
search flags: -n <count>, --json, --provider <name>. Content goes to stdout (pipeable); status to stderr.
grab flags: --out <dir>, --kinds <images,icons,css,fonts,svg>, --read (also save page.md), --max <n>, --json.
Add searchts to your agent in one line - as an MCP server, or as a Claude Code slash command:
Two ways, both one command:
See the MCP server reference for all five tools (read_url, web_search, fetch_asset, grab_site, get_status), their inputs and outputs, and when to use each.
searchts grab <url> downloads a page's images/icons/css/fonts and extracts a color palette plus the fonts in use; searchts get <url> pulls a single asset. Both go through the same escalating unlock ladder, so they work on fingerprint-gated CDNs, not just open ones.SEARCHTS_NO_MEMORY=1 to disable).SEARCHTS_NO_JINA=1 (or jina: false in ~/.searchts config) skips it so URLs never hit r.jina.ai.read_url, web_search, fetch_asset, grab_site, get_status), and a Python library.Factual signals from GitHub, npm, and our automated checks โ not a rating.
No reviews yet โ be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/capad-xyz-searchts)<a href="https://allmcps.com/mcp/capad-xyz-searchts"><img src="https://allmcps.com/api/badge/capad-xyz-searchts?style=directory" alt="Searchts on AllMCPs" /></a>