PageWire
Read any public web page as clean Markdown, get page metadata (OpenGraph, Twitter, JSON-LD), or read a page plus up to 4 same-site pages. Pay per call in USDC via x402 or MPP, no account or API key. Remote MCP: https://pagewire.dev/mcp
Hosted MCP Server
npx add-mcp 'https://pagewire.dev/mcp'Installs into Claude Code, Codex, Cursor and more
Documentation
pagewire-mcp
MCP server for PageWire. It turns any public web page into clean Markdown for AI agents, paid per call in USDC. There is no API key and no account.
Try it free: tool calls without payment are free up to $0.10 of list price per client per day (10 pages to Markdown, 20 metadata calls or 3 crawls). After that the tool answers with an x402 payment request.
| Tool | What it does | Price |
|---|---|---|
page_to_markdown | Fetches a public page and returns its title, description, clean Markdown and links. Deterministic, no model call | $0.01 |
page_metadata | Returns title, description, canonical URL, language, OpenGraph and Twitter cards, icons and JSON-LD | $0.005 |
crawl_site | Reads a page plus up to 4 same-site pages it links to (optionally only under a path prefix), each as Markdown | $0.03 |
This package is a dependency-free stdio bridge (Node 18+) to the hosted Streamable-HTTP server at https://pagewire.dev/mcp. Clients that speak Streamable HTTP can use that URL directly and skip the bridge.
Install
Claude Code
claude mcp add pagewire -- npx -y github:AgentiLoop/pagewire-mcp
# or, without the bridge:
claude mcp add --transport http pagewire https://pagewire.dev/mcp
Claude Desktop / Cursor / Windsurf / Cline (stdio)
{ "mcpServers": { "pagewire": { "command": "npx", "args": ["-y", "github:AgentiLoop/pagewire-mcp"] } } }
Any Streamable-HTTP client
{ "mcpServers": { "pagewire": { "type": "http", "url": "https://pagewire.dev/mcp" } } }
Verify
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | npx -y github:AgentiLoop/pagewire-mcp
Paying
- Within the daily free allowance a tool call just works; the result's
_meta["pagewire/free"]shows the allowance left today. - After that, a call without payment returns
isError: truewithstructuredContentset to the x402 v2 PaymentRequired object (theacceptslist: network, asset, amount,payTo), following the x402 MCP transport.@x402/mcpclients pay automatically. - To pay by hand, sign one
acceptsentry with any x402 client and call the tool again with the payload inparams._meta["x402/payment"](or the base64 payload as thepaymentargument). - A bad input or a page that cannot be fetched (4xx) is never charged.
The same tools are plain HTTP endpoints: GET https://pagewire.dev/x402/extract?url=…, /x402/meta?url=… and /x402/crawl?url=…. Each one also accepts MPP (npx mppx "https://pagewire.dev/x402/extract?url=https://example.com"). Discovery: openapi.json, llms.txt.
Environment
| Variable | Default |
|---|---|
PAGEWIRE_MCP_URL | https://pagewire.dev/mcp |
PAGEWIRE_MCP_TIMEOUT_MS | 60000 |
Official MCP registry entry: dev.pagewire/web. Agent skill: npx skills add https://pagewire.dev.
License
MIT. The bridge is open source; the hosted service is at https://pagewire.dev/.