Skip to content
Agentmart
Submit a tool

searchts

Keyless web access for AI agents: read bot-walled pages as Markdown, search, grab assets

Connector by capad-xyz · GitHub account verified by the MCP Registry

IndexedMITLocal (stdio)★ 2
Write a review

Install

Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.

npx agentmarket install connector/capad-xyz-searchts

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Keyless web access for AI agents: read bot-walled pages as Markdown, search, grab assets

Use cases: web-scraping, web-search

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this server can do and what it asks for, from its tool list and install config. Checked Oct 25, 2026.

Tools
4 read · 4 write · 1 delete · 1 not yet classified
Secrets
None asked for
Install scripts
Not scanned yet
Runs as
Python package

Tools by what they do 10

Read from the source code; the running server may list different tools.

Read 4 · Look things up without changing anything.

  • get_status
  • read_url
  • transcribe
  • web_search

Write 4 · Create, change, send or run things.

  • grab_site
  • login_check
  • login_signin
  • login_status

Delete 1 · Delete, drop, revoke or wipe things.

  • login_kill

Not yet classified 1 · We could not tell from the name and description.

  • fetch_asset

Files it touches

  • Any path the agent passes to its tools

Tools (10)

Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].

  • fetch_asset

    Download a single asset file (image, PDF, font, CSS, any file) from its URL through the same unlock ladder as read_url, save it to disk, and return {path, content_type, bytes} as JSON. Use this for one specific file by its direct URL; to pull a whole page's assets at once use grab_site instead. Saves into out_dir (a relative folder inside the working directory, or SEARCHTS_MCP_OUT_DIR if the user set it) when given, otherwise that folder itself, and never overwrites an existing file. Returns an 'Error: ...' string on failure. Update check: when a newer release exists, the result also carries '…

  • get_status

    Report the health of this searchts install: which unlocker tiers, search providers, and optional platform integrations are installed, configured, and working. Use this first when another searchts tool fails or before relying on an optional capability (e.g. keyed search providers, transcription). Takes no arguments and performs no web requests of its own beyond the cached update check; returns a human-readable text report, one line per channel with an ok/warn/error status and a fix hint. Update check: when a newer release exists, the result also carries 'update_available' plus, at most once per…

  • grab_site

    Save the files a read already named. Fetches the page through the same unlock ladder as read_url, downloads its assets (images/icons/css/fonts/svg/inline_svg), and returns a manifest (local paths, plus the palette and fonts those files use) as JSON. Use this when the files are the deliverable. For one URL the read listed, use fetch_asset. Saves into out_dir (a relative folder inside the working directory, or SEARCHTS_MCP_OUT_DIR if the user set it) when given, otherwise a 'searchts-grab-<host>' folder there. A folder that already has files is never written into; the grab goes to '-2', '-3' and…

  • login_check

    Read one signed-in-only page with the saved cookies, once, and say 'logged in', 'logged out' or 'unknown'. Direct requests only: the cookies and URL are never sent to the Jina relay. It proves a login wall is absent, not which account is signed in, and an expiry is only an upper bound. A captcha, block or network error is 'unknown', never a guess. For reddit.com, linkedin.com, github.com and x.com a known account page is used; other sites need a signed-in-only URL, and a public page is reported as 'unknown' because it proves nothing about the account. check_url checks a custom signed-in-only p…

  • login_kill

    Delete searchts's own saved login for one site, so the next read of it asks again. Use when a read_url error says the saved login has expired. Does NOT delete the cookies in the user's own Firefox or Chrome unless also_browser is true, because those are the user's and they did not ask for them to be removed. Update check: when a newer release exists, the result also carries 'update_available' plus, at most once per 24 hours, one line telling the agent. The check is one GET to the GitHub latest release of capad-xyz/searchts, at most once per 24 hours, cached in ~/.searchts/update-check.json, wi…

  • login_signin

    Sign in once for a site, in a browser searchts opens, and keep that login. Nothing is copied from the user's own browser. This is the way past a login wall when the user has no browser session worth copying, or refuses to have one read. A login kept this way is not refreshed automatically, because there is no browser source to re-copy; when it nears expiry the user is told to run login_signin again. Requires the user to be at the machine to sign in. Returns 'Error: ...' on failure. Update check: when a newer release exists, the result also carries 'update_available' plus, at most once per 24 h…

  • login_status

    What searchts holds for logged-in reads: which sites are kept, how many live cookies each has and when they expire (an expiry is an upper bound, not a promise), whether each site was kept from a browser or from login_signin, whether the per-site consent for an automatic re-copy is recorded, whether this session may copy logins, which sites it has copied, and where the scratch folder is. Expired cookies are swept on every command, offline, with no daemon. Call this when a read_url error mentions a login. Returns JSON; never contains a cookie value. Update check: when a newer release exists, the…

  • read_url

    Read one web page as clean Markdown, escalating through an unlocker ladder (Chrome-fingerprint fetch -> JS-rendering relay -> stealth browser) that stops at the first tier returning real content. When the user asks what a URL says, call this first. Do not start with a plain fetch. A 200 that is a sign-in form, a join page, or a bot check is not the page. Also use this when a plain fetch was blocked (403/429, a Cloudflare/DataDome/PerimeterX bot-wall, or an 'enable JavaScript' page), the content is rendered client-side, or a previous web_search snippet was blocked, thin, or empty. Do not answer…

  • transcribe

    Read the spoken words when read_url says a player page has no captions, or transcribe a local audio/video file. A YouTube watch URL, a TikTok video, an Instagram reel, a v.redd.it file, or an X post that has a video is a player page: read_url returns its captions, or an error that names this tool for the audio. Subtitles-first: existing captions via yt-dlp need no API key; otherwise Whisper (Groq/OpenAI if configured, else keyless local faster-whisper). prefer_subtitles defaults true; set false to force audio. cookies_from_browser is opt-in (chrome/firefox/…) and uses THIS machine's browser co…

  • web_search

    Find URLs to read. Returns a ranked, de-duplicated list (title + URL + snippet), fusion-merged with reciprocal-rank fusion. Keyless by default (DuckDuckGo); also uses SearXNG/Exa/Brave/Tavily when their keys are configured. Snippets are not the page. Call read_url on each URL you need, including when a hit is 403/429, a challenge, or thin. Do not answer from the snippet. Returns a formatted text block that starts with that warning, or an 'Error: ...' string when every provider fails. Update check: when a newer release exists, the result also carries 'update_available' plus, at most once per 24…

Signals

Stars
2
Forks
1
Open issues
3
Weekly downloads
1,103
Last commit
Oct 23, 2026 (5 days ago)
Last release
Oct 25, 2026 (4 days ago)
Last package publish
Oct 23, 2026 (5 days ago)

From GitHub (fetched Oct 24, 2026) and the package registry.

Details

Registry name
io.github.capad-xyz/searchts
Version
0.23.0
Auth
No auth
Packages
pypi searchts
License
MIT
First seen
Oct 24, 2026
Last checked
Oct 25, 2026
Cite this page

searchts MCP server. Agent Mart. https://agentmart.dev/connectors/capad-xyz-searchts (last updated 2026-10-25)