RenderProof

RenderProof

A local-first MCP server that captures rendered web evidence including screenshots, motion, pixel diffs, and CSS animation metadata for coding agents.

Category
访问服务器

README

RenderProof

Rendered web evidence for coding agents.

RenderProof is a local-first MCP server that lets Codex, Claude Code, Cursor, and other agents capture what Chromium actually rendered: screenshots, motion, CSS animation metadata, pixel diffs, gates, loading states, and visual evidence that plain fetch tools miss.

It is not a scraper. It is not a bypass tool. It is the receipt for what the browser saw.

Why This Exists

Coding agents are very good at reading source. The web is increasingly bad at being understood from source alone.

Modern pages hide their real state behind client rendering, consent walls, cookie modals, skeleton loaders, canvas, video surfaces, iframes, maps, bot checks, and motion. A text fetch can say "Google Maps"; a browser screenshot can show "Danish consent wall blocking the map."

RenderProof gives agents a grounded visual evidence layer before they make claims or copy a design.

What It Does

Tool Use it when Output
route_web_task The agent needs to choose text, screenshot, motion, search, or another platform tool Route recommendation with evidence
read_url Text is enough Normalized direct fetch text, with optional remote reader
capture_page Layout, gates, rendered state, canvas, images, maps, PDFs-as-browser-state, or visual QA matter PNG screenshot + metadata
capture_motion A human needs to see animation, loading, scroll, transitions, or media motion WebM video + keyframe PNGs
analyze_motion A coding agent needs to recreate or critique motion Contact sheet, diff image, CSS animation metadata, pixel-diff JSON, design notes
doctor You want to verify local runtime/browser setup Runtime and Playwright checks

The Core Idea

flowchart LR
  A["Agent task"] --> B["route_web_task"]
  B --> C["read_url"]
  B --> D["capture_page"]
  B --> E["capture_motion"]
  B --> F["analyze_motion"]
  C --> G["Grounded answer"]
  D --> G
  E --> G
  F --> G

RenderProof makes the expensive path explicit: read text first when text is enough, escalate to rendered evidence when pixels matter.

Example Prompts

Use RenderProof to capture a full-page screenshot of https://example.com with autoScrollBeforeCapture true.
Use RenderProof to analyze the animation style on this page and return the contact sheet, pixel-diff summary, and CSS animation metadata.
Use RenderProof to check what the browser actually sees on this Instagram/TikTok/YouTube page.
Use RenderProof to capture visual evidence before claiming whether this page is blocked by a consent wall, login wall, CAPTCHA, or skeleton loader.

Motion Analysis

Video is useful for humans. Agents need structured evidence.

analyze_motion samples frames over time and returns:

  • a contact sheet PNG
  • a red-highlight diff PNG
  • frame timestamps
  • changed-pixel ratios
  • changed-region bounds and centroid movement
  • dominant movement direction
  • document.getAnimations() metadata
  • CSS keyframes, duration, easing, direction, iterations, target selector, animated properties
  • design notes written for a coding agent

Example design notes:

[
  "Detected 2 CSS/Web Animation target(s), affecting transform.",
  "Primary timing appears to use duration 1200ms, easing ease-in-out, direction alternate.",
  "Pixel sampling saw up to 5.81% of sampled pixels change between adjacent frames.",
  "The changed region centroid trends right across sampled frames."
]

That is the difference between "there is an animation" and "recreate this with transform, 1200ms, ease-in-out, alternate, moving right while scaling."

Install

One-liner:

curl -fsSL https://raw.githubusercontent.com/Djsand/renderproof/main/install.sh | bash -s -- codex

Windows PowerShell:

powershell -NoProfile -ExecutionPolicy Bypass -Command "& ([scriptblock]::Create((irm https://raw.githubusercontent.com/Djsand/renderproof/main/install.ps1))) -Target codex"

Swap codex for claude, cursor, cline, windsurf, gemini, or generic.

The codex target writes directly to ~/.codex/config.toml, so it works even when the Codex CLI is not available in your terminal PATH.

If Windows says Missing required command: node, install Node.js 20+ and reopen PowerShell:

winget install OpenJS.NodeJS.LTS

Manual install:

git clone https://github.com/Djsand/renderproof.git
cd renderproof
npm install
npx playwright install chromium

Then install it into your coding agent:

node dist/index.js install

One-liners:

curl -fsSL https://raw.githubusercontent.com/Djsand/renderproof/main/install.sh | bash -s -- codex
curl -fsSL https://raw.githubusercontent.com/Djsand/renderproof/main/install.sh | bash -s -- claude
curl -fsSL https://raw.githubusercontent.com/Djsand/renderproof/main/install.sh | bash -s -- cursor
curl -fsSL https://raw.githubusercontent.com/Djsand/renderproof/main/install.sh | bash -s -- cline
curl -fsSL https://raw.githubusercontent.com/Djsand/renderproof/main/install.sh | bash -s -- windsurf
curl -fsSL https://raw.githubusercontent.com/Djsand/renderproof/main/install.sh | bash -s -- gemini

Windows PowerShell one-liners:

powershell -NoProfile -ExecutionPolicy Bypass -Command "& ([scriptblock]::Create((irm https://raw.githubusercontent.com/Djsand/renderproof/main/install.ps1))) -Target codex"
powershell -NoProfile -ExecutionPolicy Bypass -Command "& ([scriptblock]::Create((irm https://raw.githubusercontent.com/Djsand/renderproof/main/install.ps1))) -Target claude"
powershell -NoProfile -ExecutionPolicy Bypass -Command "& ([scriptblock]::Create((irm https://raw.githubusercontent.com/Djsand/renderproof/main/install.ps1))) -Target cursor"
powershell -NoProfile -ExecutionPolicy Bypass -Command "& ([scriptblock]::Create((irm https://raw.githubusercontent.com/Djsand/renderproof/main/install.ps1))) -Target cline"
powershell -NoProfile -ExecutionPolicy Bypass -Command "& ([scriptblock]::Create((irm https://raw.githubusercontent.com/Djsand/renderproof/main/install.ps1))) -Target windsurf"
powershell -NoProfile -ExecutionPolicy Bypass -Command "& ([scriptblock]::Create((irm https://raw.githubusercontent.com/Djsand/renderproof/main/install.ps1))) -Target gemini"

Local helper equivalents:

node dist/index.js install codex --write-user
node dist/index.js install claude --apply
node dist/index.js install cursor --write-project
node dist/index.js install cline --write-user
node dist/index.js install windsurf --write-user
node dist/index.js install gemini --apply --scope user

See docs/installation.md for agent-specific setup.

Use With Codex

node dist/index.js install codex --write-user

Manual equivalent:

codex mcp add renderproof -- node /absolute/path/to/renderproof/dist/index.js mcp

Direct config equivalent:

[mcp_servers.renderproof]
command = "node"
args = ["/absolute/path/to/renderproof/dist/index.js", "mcp"]

Use With Claude Code

node dist/index.js install claude --apply

Manual equivalent:

claude mcp add renderproof -- node /absolute/path/to/renderproof/dist/index.js mcp

Use As CLI

npm run dev -- route "summarize this page" --url https://example.com
npm run dev -- read https://example.com
npm run dev -- capture https://example.com --full-page
npm run dev -- capture https://example.com --full-page --auto-scroll
npm run dev -- motion https://example.com --duration 5000 --keyframes true
npm run dev -- analyze-motion https://example.com --duration 3000 --samples 5
npm run dev -- install generic --json
npm run doctor

Safety Model

RenderProof is designed to show gates, not bypass them.

By default, it:

  • allows public http and https URLs
  • blocks localhost, private IP ranges, and hosts resolving to private IPs
  • does not use remote readers unless explicitly enabled
  • does not solve CAPTCHA
  • does not hide automation
  • does not click through consent, login, or payment walls
  • returns structured failures instead of pretending a page was accessible

Environment controls:

RENDERPROOF_ALLOWED_HOSTS=example.com,*.example.org
RENDERPROOF_ALLOW_PRIVATE_NETWORK=1
RENDERPROOF_ENABLE_REMOTE_READERS=1
RENDERPROOF_OUTPUT_DIR=.renderproof/evidence
RENDERPROOF_MAX_CHARS=12000
JINA_API_KEY=...

Legacy GROUNDED_WEB_* variables are still supported for compatibility.

What RenderProof Is Good At

  • Seeing rendered browser state when direct fetch returns useless HTML
  • Capturing cookie modals, login walls, consent walls, reCAPTCHA widgets, and skeleton loaders
  • Capturing maps, video players, image pages, canvas/WebGL surfaces, and JS-computed UI
  • Producing full-page screenshots with optional pre-scroll for lazy loading
  • Recording short WebM motion evidence for humans
  • Turning animation into agent-readable CSS and pixel-diff evidence
  • Creating auditable local evidence files for coding workflows

What It Will Not Do

  • bypass paywalls, login walls, CAPTCHA, bot checks, or private networks by default
  • scrape social platforms as a data product
  • replace Playwright MCP for interactive browser control
  • guarantee semantic object tracking from pixel diffs alone

Playwright is the engine. RenderProof is the evidence layer.

Development

npm install
npm run typecheck
npm run build
npm run doctor

Run a browser launch check:

npm run dev -- doctor --check-browser-launch

Roadmap

  • PDF rendering and text extraction
  • page-state detection for consent/login/CAPTCHA/skeleton/download/blank-page states
  • style-reference capture for "build me a site like this" workflows
  • safe user-provided auth/session support
  • evidence bundle manifests
  • optional interaction sequences with before/after evidence

License

MIT

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选