
searchio
io.github.IOServicesLabsPublished by GitHub account IOServicesLabsv0.1.1Updated Nov 1, 2026
Keyless web search and page reading for AI agents, built to get past bot walls.
Overview
Keyless web search, page reading, product listings and YouTube transcripts for AI assistants, with a browser-backed ladder for bot-blocked pages.
- What you can do
- Search the web across keyless providers with intent, domain and freshness filters
- Read a URL as markdown, climbing bot checks and JavaScript-only pages
- Look up product listings and prices merged across retailers, plus Facebook Marketplace classifieds near a city
- Fetch the caption transcript of a YouTube video
- Run a multi-step research swarm on a question and check ladder and provider health
- When to use it
- Useful when an assistant needs live web results, readable page text, product or price comparisons, or video transcripts without signing up for a search API. The research tool is for deeper multi-step questions where a paid model key is acceptable.
- Requirements
- Runs locally over stdio. Either Docker, or Python 3.10+ with the searchio MCP extra; an npm launcher picks Docker or a local install. The optional Rust engine sidecar is installed by a shell script. The research tool needs ANTHROPIC_API_KEY or DEEPSEEK_API_KEY with SEARCHIO_LLM_PROVIDER. Settings use SEARCHIO_ prefixed environment variables.
Installation
In SourceWeft
- Open searchio in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
searchio
searchio is a tool for search, page reading, and product lookup. Use it from the command line, from Python, or over HTTP. Use it as a person or as an AI agent. Search and reading need no API key.
Quick start for AI agents
An AI agent can set up searchio for its user in one pass. Follow these steps in order. Stop when the verify step passes.
1. Use Docker when Docker runs. Try:
The image holds the full system: fetch ladder, Rust engine sidecar, and a Chromium for the challenge tier. No other install step. Go to step 3.
2. No Docker: install from source. Needs Python 3.10 or newer.
The pip command installs the searchio package with the MCP server from
PyPI. The curl command adds the Rust engine sidecar at
~/.searchio/bin/se-serve (linux, macOS, Windows with Git Bash). The
sidecar is the fast tier-2 backend. It is optional but recommended.
For the latest development build use
pip install "searchio[mcp] @ git+https://github.com/IOServicesLabs/searchio".
3. Add the MCP server to the client. Claude Desktop and Cursor use this config shape.
Docker:
Source install:
4. Verify. Restart the client. Ask: "Use searchio to search the web for the current time in Tokyo." Real results mean the setup works. An error about a missing command means the config points at a path that does not exist; fix the config and retry.
Note. npx @ioserviceslabs/searchio-mcp also works as the client
command in step 3. The launcher starts the Docker image when Docker
runs. Without Docker it starts the local install from step 2.
1. Install
You need Python 3.10 or newer.
Path A -- pip (one command):
searchio doctor checks the install. The Rust engine sidecar is
optional. Install it with the curl command in the quick start, step 2.
Path B -- Docker (no Python needed):
No prebuilt image for your platform? Build from source:
The image holds the full ladder: the Python tiers, the Rust engine sidecar,
and a Chromium for the challenge tier. State (clearance, sessions) persists
in a volume at /root/.searchio:
Path C -- from source:
searchio doctor shows which fetch tiers work on your machine. Tier 0 is
plain HTTP. Tier 1 adds TLS impersonation. Tier 2 adds a real browser for
pages that block bots. Tier 2 starts on its own the first time it is needed.
The engine tier (optional, recommended)
Tier 2 uses the Rust searchio-engine sidecar when a se-serve
binary is present. It boots in milliseconds and has no Chromium. The Docker
image includes it. On a host install, one command adds it:
The installer drops the binary at ~/.searchio/bin/se-serve and searchio
finds it on its own. You can also set SEARCHIO_ENGINE_BIN to any binary.
MCP client setup
Point any MCP client at the server:
With Docker, use "command": "docker", "args": ["run", "-i", "--rm", "searchio"].
No Python at all? The npm wrapper picks a backend for you (Docker when present, else a local install):
2. Search
You can set an intent: web (default), news, video, shopping,
academic, code, forum, reference, local. You can also put
site:nasa.gov in the query.
3. Read a page
The command prints the readable text. It climbs walls, bot checks, and JavaScript-only pages on its own. If a page cannot be read, you get a clear reason. You do not get an empty page.
4. Products and listings
5. Research with an AI swarm
This part costs money. Set one key:
To use DeepSeek instead, set SEARCHIO_LLM_PROVIDER=deepseek and
DEEPSEEK_API_KEY=.... The answer comes back with findings. Each finding
cites pages the workers read.
6. Run it as an MCP server
searchio is also an MCP (Model Context Protocol) server. AI agents call it over MCP. The same tools that the CLI uses are available to the agent.
Install the MCP extra:
Start the server over stdio:
Start the server over HTTP:
6.1 MCP tools
The server has these tools:
The server also has one resource: searchio://health returns service health
as a small JSON object.
6.2 Payment for search and research (x402)
The MCP server has a payment gate. It uses the x402 shape. When the gate is
on, a billable tool returns a 402 (Payment Required) with an X-Payment
challenge until the caller pays.
Set the gate with SEARCHIO_MCP_PAYMENT:
This is the shape a real verifier uses. It has no ledger. When you host the server for others, put a real x402 verifier in front. The verifier checks payment, then the tool runs. This is how searchio is hosted next to SwarmIO for search and research credits.
7. Run it as an HTTP server
Errors are honest status codes: 422 for a bad request, 400 for a target the
policy refuses, 451 for a page blocked by an anti-bot wall, 502 or 503 when
providers failed or are all cooling down after failures. A search answer
lists providers_used, providers_failed and providers_skipped (breakers
open, with the cooldown left).
If several people or agents share one server, give each its own session on
/read. Then cookies from one never ride along on another's requests.
8. Run it in Docker
The Dockerfile in this repo builds the full ladder: Python tiers, the Rust
engine sidecar, and a Chromium for the challenge tier. See Path B in section
1 for the build and run commands. docker compose up does the same with the
state volume wired up.
Inside the container, tier 2 is the engine sidecar first; the patchright
Chromium takes the pages that need a real browser (the challenge tier).
Cache, learned per-domain tiers, and clearance cookies live in the
searchio-state volume, so they survive restarts. Keys for the research
swarm go in as environment variables, the same names as in section 10.
9. Use it from Python
10. Settings
Everything is an environment variable with the SEARCHIO_ prefix, or a line
in a .env file next to where you run it. The ones people change most:
11. Good to know
- Search and reading need no keys and cost nothing. Only
researchcalls a paid model. - The tool never sends your credentials anywhere. Marketplace and other browser-backed lookups run anonymously.
searchio providerslists every source and whether it is configured.searchio doctoris the first thing to run when something looks off.
Source: README.md at commit e2fad78
Tools
0Version history
1- v0.1.1LatestOct 11, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts