Quick answer
How do I add a web page reader API to OpenClaw?
Save the WebReaderAPI MCP server, then register it with openclaw mcp add webreaderapi --command … --arg … --env WEBREADER_API_KEY=… and check it with openclaw mcp doctor --probe. The agent gets a read_url tool next to the built-in web_fetch, able to render JavaScript and read PDFs. Pages cost 1 credit, from $0.07/1K pages as of October 2026. No KYC; pay in crypto.
OpenClaw's web_fetch and read_url side by side
| web_fetch (built in) | Runs locally, extracts the main content with Readability, returns Markdown or text |
|---|---|
| web_fetch limits | No JavaScript execution; maxChars default and cap of 20,000 characters (OpenClaw docs) |
| read_url (our MCP tool) | JavaScript rendering when needed, PDFs up to 100 pages, up to 500,000 characters |
| read_url cost | 1 credit = 1 page read without a browser; 2 credits when the page needs a browser to render JavaScript. A request that fails, or that a site's robots.txt refuses, is not charged |
| Our crawler | WebReaderAPI/1.0 (+https://webreaderapi.com/bot/), robots.txt respected |
| Tool profiles | MCP tools appear in the coding and messaging profiles, not in minimal |
Why add a reader when OpenClaw has web_fetch?
Because they cover different pages. OpenClaw's documentation says web_fetch always runs locally, uses Readability for main-content extraction, and does not execute JavaScript; it points to its Web Browser tool for JavaScript-heavy or login-protected sites. Its maxChars setting defaults to 20,000 characters and is capped there.
Keep web_fetch for quick, light pages. Add read_url for pages that build their content with JavaScript, for PDFs, and for long documents where you want more than 20,000 characters. OpenClaw's docs also note that the official Firecrawl plugin is today the only bundled provider that web_fetch can fall back to.
How do I register the MCP server in OpenClaw?
First set up the Python server from the MCP page: one file plus the mcp and httpx packages. Then save it in OpenClaw with openclaw mcp add. OpenClaw's registry documentation describes stdio flags --command, --arg, --env and --cwd, and stores saved definitions under mcp.servers in its configuration.
Run openclaw mcp doctor --probe afterwards. Without --probe the doctor only checks the saved configuration; with it, it also confirms that enabled servers connect.
openclaw mcp add webreaderapi \
--command /home/you/webreader/.venv/bin/python \
--arg /home/you/webreader/webreader_mcp.py \
--env WEBREADER_API_KEY=your-key
openclaw mcp doctor webreaderapi --probeWill the agent see read_url?
In the usual profiles, yes. OpenClaw's registry documentation says embedded OpenClaw exposes configured MCP tools in the coding and messaging profiles. The minimal profile hides them, and tools.deny: ["bundle-mcp"] turns them off, so check those two settings if the tool does not show up.
The tool's description tells the model when to prefer it: pages that need JavaScript, PDFs and long reads. The model can still use web_fetch for everything else.
How does read_url treat the sites it reads?
The same way as every call to our API. We respect robots.txt: our crawler identifies itself as WebReaderAPI, follows the rules written for it or for all robots, and does not read a page that a site disallows. Refused pages are not charged. If a site declares Content-Signal: ai-input=no in its robots.txt, we do not read its pages for you. If a site refuses our request, we return its answer: we never solve CAPTCHAs, log in to accounts, or try to get around a block or a paywall.
Pages behind a login are therefore out of scope for read_url. For a site you are signed in to, OpenClaw's own browser tool, running with your session, is the right tool.
What will reading pages through OpenClaw cost?
One credit per page that comes back with content, two when a browser is needed, nothing for refusals and errors. An assistant that reads 30 pages a day across its chat channels uses about 900 credits a month: 10,000 pages ($3.75) lasts close to a year. Prepaid credits never expire: unused pages stay on your account until you use them.
Give OpenClaw its own API key, so its usage shows apart from your other projects.
OpenClaw: common questions
Is WebReaderAPI a built-in OpenClaw provider?
No. It connects as an MCP server, which OpenClaw supports without any plugin code. The MCP server is the short Python file from our MCP page.
Should I disable web_fetch?
No need. Both tools can stay on; the descriptions tell the model which one fits. Disable web_fetch only if you want every read to go through one place for logging.
Can I manage the server from OpenClaw's web interface?
OpenClaw's documentation describes MCP settings in its Control UI, which edit the same saved definitions as the command line. Use whichever you prefer.
Does it work in a sandboxed OpenClaw setup?
The MCP server is a local process that needs internet access to reach https://webreaderapi.com/api/v1/read. Check that your sandbox allows the process to start and to make that HTTPS call.
Sources (4)
- Web tools — OpenClaw docs (read 2026-10-22)
- Web Fetch — OpenClaw docs (read 2026-10-22)
- Manage saved MCP servers — OpenClaw docs (read 2026-10-22)
- MCP in the Control UI — OpenClaw docs (read 2026-10-22)