Fetch public webpages as clean text, Markdown, links, and metadata, with browser rendering.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
SmartFetch takes a public web URL and returns clean agent-ready text, Markdown, links, metadata, and the retrieval method used. It tries cheap HTTP retrieval first and falls back to a real Chromium browser when needed.
fetch_webpage tool now declares official x402 Bazaar metadata
for agent discovery without changing its execution or payment behavior.server.json advertises the existing /mcp Streamable HTTP endpoint
as a remote-only server for the Official MCP Registry.All V1.7 HTTP payment, Bazaar, and native MCP behavior remains unchanged:
https://x402.org/facilitator without CDP credentials./meta distinguishes enabled testnet and mainnet payment modes.cdp-sdk, FastAPI, Uvicorn, and x402 are exactly pinned so infrastructure upgrades are explicit.The retrieval engine, extraction/browser behavior, SSRF protections, request limits, rate limiting, and concurrency controls are unchanged.
Returns service health/version.
Machine-readable service description.
max_chars is optional (minimum 1,000; default 20,000; maximum 50,000).
Example response fields:
When x402 payment protection is enabled, the PAYMENT-REQUIRED header for
POST /fetch includes a Bazaar declaration with the url, max_chars, and
force_browser input contract plus a representative successful response.
/, /health, and /meta remain free and do not advertise Bazaar metadata.
Remote MCP clients connect to /mcp using Streamable HTTP. The server exposes
exactly one tool:
The tool reads, fetches, scrapes, or extracts public webpages for agents and
returns the existing SmartFetch text, Markdown, links, and retrieval metadata.
It uses the same SSRF validation, executor, request timeout, concurrency cap,
output cap, HTTP retrieval, and browser fallback as POST /fetch; it does not
make an HTTP request back to the public API.
When x402 is enabled, an unpaid tools/call returns the native MCP x402 payment
challenge. A valid payment is verified before retrieval and settled once after
successful tool execution. The network, public payee, and price come from
X402_NETWORK, X402_PAY_TO, and X402_PRICE. No seller private key or wallet
secret is accepted or required.
The unpaid MCP payment challenge includes a Bazaar declaration for
fetch_webpage with transport streamable-http, the existing input contract,
and a representative SmartFetch output. Its payment resource remains
mcp://tool/fetch_webpage. The existing HTTP Bazaar resource for POST /fetch
is separate and unchanged.
The root server.json describes the public remote endpoint at
https://smartfetch-production-ea53.up.railway.app/mcp. Registry publication is
a separate authenticated operator action; adding the manifest does not publish
or deploy the service.
Then:
Windows users can run setup_windows.bat, then start_windows.bat.
With X402_ENABLED unset or false, startup requires no payment settings and /fetch remains free for local and remote testing.
Payment remains disabled unless explicitly enabled. Base Sepolia is the default and requires only the public receiving address:
X402_PRICE and X402_NETWORK use the values shown when omitted. The default price remains $0.005.
Base mainnet must be selected explicitly and uses Coinbase's authenticated CDP facilitator:
Mainnet requires both CDP credentials. Missing, invalid, or unusable credentials, unsupported Base-mainnet exact payments, or any facilitator/middleware initialization failure aborts startup. SmartFetch never falls back to free access or the testnet facilitator when mainnet is selected. Every network other than Base Sepolia and Base mainnet is rejected.
Only POST /fetch is protected. /health, /, and /meta always remain free. Enabled /meta responses report x402-enabled-testnet or x402-enabled-mainnet without exposing configuration values.
SmartFetch uses X402_PAY_TO as the public receiving address and does not need CDP_WALLET_SECRET. Never provide a seller MetaMask private key or recovery phrase: SmartFetch does not require, read, accept, log, or store either one.
api_local_smoke.py intentionally enables private-network access only inside the test process so it can use a localhost fixture.
The container installs Chromium automatically.
This package is Docker-ready. Railway can deploy the included Dockerfile and railway.json; any Docker host that provides outbound HTTPS and enough RAM for one Chromium process should also work.
Recommended initial environment variables:
Do not set ALLOW_PRIVATE_NETWORK=1 in production.
Application-level URL validation is included, but browser rendering can execute page subresources. For a paid public deployment, the browser container should additionally be isolated by host/network egress policy from cloud metadata and private RFC1918 networks. We will harden this again before removing the temporary rate limit and before x402 launch.
On Windows run test_remote_windows.bat, paste the public URL, and upload tests/remote_20_results.json.
Or:
Our deployment gate remains 18/20 minimum, including all five forced-browser requests.
V1.8 preserves the existing Base Sepolia and Base mainnet payment configuration. This repository change does not itself publish to the MCP Registry, deploy the service, or modify Railway variables. The active payment network is controlled by X402_NETWORK: eip155:84532 for Base Sepolia or eip155:8453 for Base mainnet.
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/smartfetch)<a href="https://allmcps.com/mcp/smartfetch"><img src="https://allmcps.com/api/badge/smartfetch?style=directory" alt="SmartFetch on AllMCPs" /></a>