Skip to main content
Glama
README.md
# pagewire-mcp

šŸ¤– **Built by the makers of [Agent!](https://github.com/AgentiLoop/Agent)**, an autonomous macOS agent. 🌐 [agentiloop.ai](https://agentiloop.ai)


[![Pagewire Mcp on AI Agents Listing](https://aiagentslisting.com/pagewire-mcp/badge.svg?claim=952f519d9a37c3685c0e90fb43e83be7)](https://aiagentslisting.com/mcp/pagewire-mcp)

MCP server for [PageWire](https://pagewire.dev/?ref=github-mcp). 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
```bash
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)
```json
{ "mcpServers": { "pagewire": { "command": "npx", "args": ["-y", "github:AgentiLoop/pagewire-mcp"] } } }
```

### Any Streamable-HTTP client
```json
{ "mcpServers": { "pagewire": { "type": "http", "url": "https://pagewire.dev/mcp" } } }
```

### Verify
```bash
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | npx -y github:AgentiLoop/pagewire-mcp
```

## Paying

1. Within the daily free allowance a tool call just works; the result's `_meta["pagewire/free"]` shows the allowance left today.
2. After that, a call without payment returns `isError: true` with `structuredContent` set to the x402 v2 PaymentRequired object (the `accepts` list: network, asset, amount, `payTo`), following the x402 MCP transport. `@x402/mcp` clients pay automatically.
3. To pay by hand, sign one `accepts` entry with any x402 client and call the tool again with the payload in `params._meta["x402/payment"]` (or the base64 payload as the `payment` argument).
4. 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](https://pagewire.dev/openapi.json), [llms.txt](https://pagewire.dev/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/.

TDQS

A4.6/5.0

Scored across 3 tools

Disambiguation5/5

Each tool targets a distinct output: clean Markdown body, metadata/JSON-LD only, or a multi-page crawl. The descriptions explicitly cross-reference each other ("use page_metadata if you only need title...", "use crawl_site to read the page plus the pages it links to"), leaving no real ambiguity about selection.

Naming Consistency4/5

All names are snake_case with a consistent noun/verb structure (page_to_markdown, page_metadata, crawl_site), and the two 'page' tools share a clear prefix. The 'crawl_' verb on the third tool is a minor deviation from the 'page_' prefix pattern but remains readable and descriptive.

Tool Count5/5

Three tools is well scoped for a page-fetching service, and each one earns its place by covering a genuinely different retrieval mode (full body, metadata only, small crawl). No redundant or filler tools.

Completeness4/5

The surface covers the core fetch lifecycle: single-page content, lightweight metadata, and same-host multi-page crawling, with clear error and pricing semantics. Minor gaps remain around cross-host or larger batch fetching and deeper crawl controls (e.g. page limits, sitemap), but agents can work around these with repeated calls.

Maintenance

ActivityMaintained
ResponsivenessNo issues