searchts
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| EXA_API_KEY | No | API key for Exa web search | |
| GITHUB_TOKEN | No | GitHub token for higher rate limits | |
| GROQ_API_KEY | No | API key for Groq video transcription | |
| OPENAI_API_KEY | No | API key for OpenAI video transcription | |
| SEARCHTS_NO_MEMORY | No | Set to '1' to disable per-domain backend memory |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_statusA | 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; returns a human-readable text report, one line per channel with an ok/warn/error status and a fix hint. |
| read_urlA | 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 from a blocked snippet or from the login chrome — call this tool on that URL. Returns Markdown ready to feed a model, always strips invisible/control characters, and if prompt-injection indicators are detected it fences the body as untrusted and prepends a one-line warning. When the page has more than this read returned (a next page, a feed, folded text, a list it mostly dropped), the text ends with a bracketed note and the JSON has 'next_url' and 'more'; read 'next_url' to continue. No note does not prove the page is complete. Returns an 'Error: ...' string (not an exception) when every tier fails. |
| web_searchA | Search the web across multiple providers and return a ranked, de-duplicated list of results (title + URL + snippet), fusion-merged with reciprocal-rank fusion. Keyless by default (DuckDuckGo); also uses SearXNG/Exa/Brave/Tavily when their keys are configured. Use this to discover URLs or answer open-ended questions before reading pages. Snippets are not the page: if you need the content, or a hit is 403/429/challenge/thin, call read_url on that URL. Do not answer from the snippet. Returns a formatted text block, or an 'Error: ...' string when every provider fails. |
| fetch_assetA | 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. |
| grab_siteA | Grab a page for design inspiration: fetch it through the unlock ladder, download its assets (images/icons/css/fonts/svg), extract the color palette and the fonts in use, and return a manifest (with local file paths) as JSON. Use this for a whole page's design/assets at once; for a single known file 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-' folder there. A folder that already has files is never written into; the grab goes to '-2', '-3' and so on, and the folder used is returned as out_dir. Set read=true to also save the page text as page.md. Returns an 'Error: ...' string on failure. |
| transcribeA | Transcribe a video URL or a local audio/video file. Subtitles-first: existing captions via yt-dlp need no API key; otherwise Whisper (Groq/OpenAI if configured, else keyless local faster-whisper). Use this when the user wants spoken words, not the page. Do not use read_url for a transcript. prefer_subtitles defaults true; set false to force audio. cookies_from_browser is opt-in (chrome/firefox/…) and uses THIS machine's browser cookies; never used by read_url. Returns the transcript text, or an 'Error: ...' string on failure. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 6 tools
Each tool targets a distinct operation: web_search discovers URLs, read_url reads a page, fetch_asset pulls one file, grab_site extracts a whole page's design/assets, transcribe handles audio, and get_status reports health. The only real overlap is fetch_asset vs grab_site, but both descriptions explicitly draw the boundary (single known file vs whole page).
Mostly consistent snake_case verb_noun pattern (fetch_asset, read_url, grab_site, get_status, web_search). The lone deviation is 'transcribe', a bare verb with no noun, but it's still readable and snake_case-consistent.
Six tools is well-scoped for a web search/read/asset toolkit; each tool earns its place covering a distinct capability without padding. Nothing feels redundant or missing at the count level.
Covers discovery (web_search), content reading (read_url), asset extraction (fetch_asset, grab_site), transcription (transcribe), and diagnostics (get_status) — a full lifecycle for the domain. Minor gaps like no batch/multi-URL read or structured extraction exist, but agents can work around them by calling tools repeatedly.