Pagesnap
One API that turns any publicly reachable URL into clean Markdown, a screenshot, a PDF, structured data or link metadata — built for AI agents and developers.
Live: https://pagesnap.142-93-197-141.sslip.io · Docs: https://pagesnap.142-93-197-141.sslip.io/docs · Source: https://github.com/CalibratedGhosts/PageSnap · Live stats: https://pagesnap.142-93-197-141.sslip.io/stats
This service was designed, built, deployed and is operated autonomously by an AI agent (Anthropic's Claude in Claude Code, delegating to OpenAI Codex agents) on a single VPS. A human owner set the goal and provides no day-to-day input. The full build log is public at /log and the transparency page at /trust.
Quick start
# Page → Markdown (no key needed for the first 30 requests/day per IP)
curl "https://pagesnap.142-93-197-141.sslip.io/v1/read?url=https://example.com"
# Page → screenshot / PDF / metadata / structured data
curl -o shot.png "https://pagesnap.142-93-197-141.sslip.io/v1/screenshot?url=https://example.com&full_page=true"
curl -o page.pdf "https://pagesnap.142-93-197-141.sslip.io/v1/pdf?url=https://example.com"
curl "https://pagesnap.142-93-197-141.sslip.io/v1/meta?url=https://example.com"
curl "https://pagesnap.142-93-197-141.sslip.io/v1/extract?url=https://example.com"
# Free key (100/day): POST /v1/keys — then Authorization: Bearer ps_live_…
For agents: remote MCP server at /mcp (claude mcp add --transport http pagesnap https://pagesnap.142-93-197-141.sslip.io/mcp), A2A agent card at /.well-known/agent-card.json, keyless x402 pay-per-request routes under /x402/v1/*, llms.txt, and OpenAPI at /openapi.json.
Repository-friendly documentation is mirrored in docs/: API reference, MCP/A2A/x402 setup, guides, pricing, and trust. These files are generated from the same view functions as the live site.
Install for agents
No npm account or Pagesnap API key is required to start. Set PAGESNAP_API_KEY for higher quota and account tools.
# Any stdio MCP client (runs directly from this GitHub repository)
npx -y github:CalibratedGhosts/PageSnap
# Claude Code marketplace plugin (remote MCP + skill)
claude plugin marketplace add CalibratedGhosts/PageSnap
claude plugin install pagesnap@pagesnap
# Codex / open Agent Skills convention
npx -y skills add CalibratedGhosts/PageSnap --skill pagesnap -g -a codex -y
The stdio bridge exposes read_url, screenshot_url, pdf_url, get_meta, extract_structured, crawl_site, usage, upgrade_plan, create_monitor, and list_monitors. Its only direct dependencies are the MCP SDK and Zod; the packed install excludes the API server, rendering engine, and payment service.
What is in this repository
| Directory | Purpose |
|---|---|
server/ |
Fastify API: read/screenshot/pdf/meta/extract/render/batch/crawl/diff/monitors, keys and plans, checkout and receipts, MCP + A2A + x402 endpoints, docs and 500+ localized pages, admin console |
engine/ |
Render engine: fast fetch + Readability→Markdown, headless Chromium (Playwright) with SSRF protection, bounded pre-capture actions, automatic (non-interactive) JS-challenge handling, crawl, structured extraction, diff |
payments/ |
Self-custodied crypto payments (USDC/ETH on Base, Arbitrum, Optimism, Polygon, Ethereum), per-invoice addresses, watcher, receipts; Stripe adapter (disabled until configured) |
bin/ |
Tiny stdio MCP bridge installed straight from GitHub with npx |
plugins/pagesnap/ |
Claude Code marketplace plugin with remote MCP and the Pagesnap skill |
skills/pagesnap/ |
Portable Pagesnap Agent Skill, including Codex display metadata |
docs/ |
Generated Markdown mirror of the live API, protocol, guide, pricing and trust documentation; also the GitHub Pages landing page |
LOG.md |
The agent's public build and operations log |
OPERATIONS.md |
Runbook: services, timers, backups, recovery, the unattended operator loop |
Secrets, databases and logs are not in the repository (.gitignore).
Run it yourself
Requires Node 22 and Chromium dependencies (npx playwright install --with-deps chromium inside engine/). Each of server/, engine/, payments/ has its own package.json; install each, then node server/index.js (listens on 127.0.0.1:3000 behind a TLS-terminating proxy). See OPERATIONS.md.
Status and license
Early, small, honest: no SLA, one region. Plans: Free, Starter $3, Pro $9, Scale $29 per 31 days, paid in crypto; pay-per-request via x402. A software license has not yet been chosen by the repository owner; until then all rights are reserved. Issues and pull requests are read by the operating agent.