RenderProof
Enables capturing screenshots and motion from Google Maps, displaying rendered map tiles, overlays, and any blocking elements like consent modals.
Enables capturing visual evidence of Instagram pages, including rendered state, consent walls, login overlays, and motion analysis.
Allows capturing visuals from TikTok pages, including rendered video players, consent dialogs, and motion analysis.
Provides ability to capture screenshots and motion evidence from YouTube pages, showing actual rendered video player, overlays, and consent walls.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@RenderProofCapture a full-page screenshot of https://example.com"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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.
Related MCP server: mcp-page-capture
What It Does
Tool | Use it when | Output |
| The agent needs to choose text, screenshot, motion, search, or another platform tool | Route recommendation with evidence |
| Text is enough | Normalized direct fetch text, with optional remote reader |
| Layout, gates, rendered state, canvas, images, maps, PDFs-as-browser-state, or visual QA matter | PNG screenshot + metadata |
| A human needs to see animation, loading, scroll, transitions, or media motion | WebM video + keyframe PNGs |
| A coding agent needs to recreate or critique motion | Contact sheet, diff image, CSS animation metadata, pixel-diff JSON, design notes |
| A coding agent needs to rebuild an authorized website or study how a page is put together | Clone brief, desktop/mobile screenshots, design tokens, assets, topology, behaviors, component specs |
| 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"]
B --> H["clone_website"]
C --> G["Grounded answer"]
D --> G
E --> G
F --> G
H --> GRenderProof 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.Use RenderProof clone_website on https://example.com and give me the clone brief paths for a Next.js rebuild.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()metadataCSS 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."
Website Clone Briefs
clone_website turns a live rendered page into clone-ready artifacts for an AI coding workflow. It is inspired by section-by-section website reverse-engineering templates: inspect first, write durable specs, then build from those specs.
It writes a local bundle under .renderproof/evidence/clones/:
research/CLONE_BRIEF.mdresearch/DESIGN_TOKENS.mdresearch/PAGE_TOPOLOGY.mdresearch/BEHAVIORS.mdresearch/components/*.spec.mddesign-references/desktop-*.pngdesign-references/mobile-*.pngdownloaded assets, capped by
maxAssetsandmaxAssetBytes
The output is not a completed app. It is the extraction layer a coding agent needs before rebuilding: exact rendered references, computed CSS signals, real text, asset paths, interaction hints, and responsive evidence.
Install
One-liner:
curl -fsSL https://raw.githubusercontent.com/Djsand/renderproof/main/install.sh | bash -s -- codexWindows 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.LTSManual install:
git clone https://github.com/Djsand/renderproof.git
cd renderproof
npm install
npx playwright install chromiumThen install it into your coding agent:
node dist/index.js installOne-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 -- geminiWindows 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 userSee docs/installation.md for agent-specific setup.
Use With Codex
node dist/index.js install codex --write-userManual equivalent:
codex mcp add renderproof -- node /absolute/path/to/renderproof/dist/index.js mcpDirect 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 --applyManual equivalent:
claude mcp add renderproof -- node /absolute/path/to/renderproof/dist/index.js mcpUse 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 -- clone-website https://example.com --max-sections 24
npm run dev -- install generic --json
npm run doctorSafety Model
RenderProof is designed to show gates, not bypass them.
By default, it:
allows public
httpandhttpsURLsblocks
localhost, private IP ranges, and hosts resolving to private IPsdoes not use remote readers unless explicitly enabled
does not solve CAPTCHA
does not hide automation
does not click through consent, login, or payment walls
does not use clone outputs for phishing, impersonation, or unauthorized reproduction
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
Generating clone briefs for authorized rebuilds, migrations, and learning
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
produce a finished application from a clone brief without a coding agent doing the build and QA
Playwright is the engine. RenderProof is the evidence layer.
Development
npm install
npm run typecheck
npm run build
npm run doctorRun a browser launch check:
npm run dev -- doctor --check-browser-launchRoadmap
PDF rendering and text extraction
page-state detection for consent/login/CAPTCHA/skeleton/download/blank-page states
visual diff scoring for clone QA workflows
safe user-provided auth/session support
evidence bundle manifests
optional interaction sequences with before/after evidence
License
MIT
Available Tools
7 toolsanalyze_motionAnalyze MotionC
Analyze rendered page motion for coding agents using sampled keyframes, CSS animation metadata, pixel diffs, and a contact sheet.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The public http(s) URL to render and analyze. | |
| width | No | Viewport width in pixels. | |
| height | No | Viewport height in pixels. | |
| outputDir | No | Directory where motion analysis evidence should be saved. | |
| timeoutMs | No | Navigation and analysis timeout. | |
| waitUntil | No | Navigation wait condition. Defaults to load for motion analysis. | |
| durationMs | No | How long to sample motion after navigation. Defaults to 3000 ms. | |
| sampleCount | No | Number of screenshots to sample across the duration. Defaults to 5. | |
| scrollStepPx | No | Pixels to scroll per step when sampling scroll motion. | |
| includeImages | No | Embed contact sheet and diff image resources in the MCP response. Defaults to true. | |
| scrollDelayMs | No | Delay between scroll steps in milliseconds. | |
| scrollMaxSteps | No | Maximum number of scroll steps. | |
| changeThreshold | No | Per-pixel channel delta threshold for pixel-diff detection. Defaults to 40. | |
| diffSampleStride | No | Pixel sampling stride for diff analysis. Higher values are faster but less precise. Defaults to 2. | |
| includePixelDiff | No | Compute pixel-diff summaries across sampled frames. Defaults to true. | |
| includeFrameImages | No | Also embed each raw sampled frame as an image resource. Defaults to false. | |
| allowPrivateNetwork | No | Allow localhost/private network URLs for this call. Defaults to false. | |
| scrollDuringCapture | No | Scroll through the page while sampling to analyze scroll-driven motion and lazy loading. | |
| includeCssAnimations | No | Extract document.getAnimations() metadata from the page. Defaults to true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose side effects and safety. It mentions the analysis techniques but not that the tool renders a page, may write files via outputDir, or whether it's read-only. Missing information about navigation or resource consumption.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is reasonably concise and front-loads the main purpose. It includes a few extra words like 'for coding agents' but is not bloated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite 19 parameters and no output schema, the description is too brief. It doesn't explain the output format, return value, or workflow, leaving the agent with insufficient context for a complex tool. The parameter schema helps but doesn't fill the output gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% of parameters with descriptions, so the baseline is 3. The description adds no extra meaning about parameters, and only indirectly hints at sampling and diffs without referencing specific parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool analyzes page motion, specifying the methods (keyframes, CSS animations, pixel diffs, contact sheet). This is a specific verb+resource combination, but it doesn't explicitly distinguish from the sibling capture_motion, so not a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool vs alternatives. It doesn't mention use cases, exclusions, or refer to sibling tools like capture_motion or capture_page. The only context is implied by the parameter names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
capture_motionCapture MotionA
Record short rendered page motion evidence with Playwright video when animations, transitions, scrolling, or dynamic media matter.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The public http(s) URL to render and record. | |
| width | No | Viewport width in pixels. | |
| height | No | Viewport height in pixels. | |
| outputDir | No | Directory where motion evidence should be saved. | |
| timeoutMs | No | Navigation and capture timeout. | |
| waitUntil | No | Navigation wait condition. Defaults to load for motion capture. | |
| durationMs | No | How long to record motion after navigation. Defaults to 5000 ms. | |
| includeVideo | No | Embed the WebM video in the MCP response. Defaults to true. | |
| scrollStepPx | No | Pixels to scroll per step when recording scroll motion. | |
| keyframeCount | No | Number of keyframe screenshots to capture. Defaults to 3. | |
| scrollDelayMs | No | Delay between scroll steps in milliseconds. | |
| scrollMaxSteps | No | Maximum number of scroll steps. | |
| includeKeyframes | No | Capture and embed PNG keyframes during the recording. Defaults to true. | |
| allowPrivateNetwork | No | Allow localhost/private network URLs for this call. Defaults to false. | |
| scrollDuringCapture | No | Scroll through the page while recording to capture scroll-driven motion and lazy loading. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full disclosure burden. It mentions Playwright video and motion evidence, but does not describe output behavior, file-saving side effects, default duration/video embedding, or safety implications. It is not misleading, but it is sparse for a non-trivial capture tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One tightly written sentence front-loads the action, object, and use condition. No filler, no redundancy, and it earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although the tool has 15 parameters and no output schema, the schema itself is rich (100% coverage) and includes output hints such as includeVideo embedding WebM in the MCP response. The description establishes the use case succinctly; together with the schema, this is sufficient for an agent to select and invoke the tool, though the prose alone would be incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds no parameter-specific semantics beyond conceptual triggers like 'animations' and 'scrolling,' which lightly echo scrollDuringCapture and related fields. The schema already documents all parameters thoroughly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses a specific verb ('Record') and a clear resource ('short rendered page motion evidence with Playwright video'), with explicit scope ('when animations, transitions, scrolling, or dynamic media matter'). This distinguishes it from static tools like capture_page and other siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool: 'when animations, transitions, scrolling, or dynamic media matter.' It stops short of naming alternatives or stating when not to use it, so it misses the full 5 criterion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
capture_pageCapture PageB
Capture rendered page evidence with Playwright when visual layout, screenshots, or browser state matter.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The public http(s) URL to render and capture. | |
| width | No | Viewport width in pixels. | |
| height | No | Viewport height in pixels. | |
| fullPage | No | Capture the full scrollable page instead of the viewport. | |
| outputDir | No | Directory where screenshot evidence should be saved. | |
| timeoutMs | No | Navigation and screenshot timeout. | |
| waitUntil | No | Navigation wait condition. | |
| includeImage | No | Embed the screenshot image in the MCP response. Defaults to true. | |
| scrollStepPx | No | Pixels to scroll per step when auto-scrolling. | |
| scrollDelayMs | No | Delay between auto-scroll steps in milliseconds. | |
| scrollMaxSteps | No | Maximum number of auto-scroll steps. | |
| allowPrivateNetwork | No | Allow localhost/private network URLs for this call. Defaults to false. | |
| autoScrollBeforeCapture | No | Scroll through the page before capture to trigger lazy-loaded content, then restore the original scroll position. | |
| includeAccessibilitySnapshot | No | Include Playwright's accessibility snapshot as supporting text evidence. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions Playwright but does not disclose side effects like file saving, network requests, or that it renders JavaScript. The tool's full behavioral profile (output format, potential state changes) is left unexplained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded with the action and key context. It is concise with no redundant information, making optimal use of its limited length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the high parameter count (14), no output schema, and no annotations, the description is too thin to be contextually complete. It omits return format, output location, and behavioral side effects, and does not adequately differentiate from sibling tools like read_url or capture_motion.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of the 14 parameters with descriptions, so the baseline is 3. The description adds no parameter-specific semantics beyond the schema, but no compensation is needed given full schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Capture') and resource ('rendered page evidence') and notes a use case ('when visual layout, screenshots, or browser state matter'), which reasonably distinguishes it from siblings like read_url. However, it could more explicitly mention screenshots as the primary output.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'when visual layout, screenshots, or browser state matter' provides clear context for when to use this tool. It does not explicitly name alternatives or exclusions, but the context is sufficient for a single-sentence description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clone_websiteClone WebsiteA
Generate a clone-ready evidence bundle for a public website: desktop/mobile screenshots, design tokens, assets, page topology, behaviors, and component specs. Use only for legitimate site migration, learning, or authorized rebuilds.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The public http(s) page to reverse-engineer into clone-ready artifacts. | |
| settleMs | No | Extra delay after navigation before extraction. Defaults to 500 ms. | |
| maxAssets | No | Maximum assets to download. Defaults to 60. | |
| outputDir | No | Directory where clone artifacts should be saved. | |
| timeoutMs | No | Navigation and screenshot timeout. | |
| waitUntil | No | Navigation wait condition. Defaults to networkidle. | |
| autoScroll | No | Scroll through the page before extraction to trigger lazy-loaded content. Defaults to true. | |
| maxSections | No | Maximum page sections to spec. Defaults to 24. | |
| mobileWidth | No | Mobile viewport width. Defaults to 390. | |
| desktopWidth | No | Desktop viewport width. Defaults to 1440. | |
| mobileHeight | No | Mobile viewport height. Defaults to 844. | |
| scrollStepPx | No | Pixels to scroll per step when auto-scrolling. | |
| desktopHeight | No | Desktop viewport height. Defaults to 900. | |
| maxAssetBytes | No | Maximum bytes per downloaded asset. Defaults to 10 MiB. | |
| scrollDelayMs | No | Delay between auto-scroll steps in milliseconds. | |
| downloadAssets | No | Download discovered images, favicons, stylesheets, and videos within size limits. Defaults to true. | |
| scrollMaxSteps | No | Maximum number of auto-scroll steps. | |
| allowPrivateNetwork | No | Allow localhost/private network URLs for this call. Defaults to false. | |
| maxElementsPerSection | No | Maximum DOM outline nodes per section spec. Defaults to 80. | |
| includeSectionScreenshots | No | Capture per-section screenshots for component specs. Defaults to true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full responsibility for disclosing behavioral traits. It only states the target is a 'public website' and that use should be legitimate, but it does not disclose that the tool actively downloads assets, generates numerous network requests, or may strain the target server. It also does not mention rate limits, robots.txt considerations, or the fact that the tool may produce a large local artifact bundle.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the primary purpose, and includes a concise list of deliverable types. The second sentence adds an important usage restriction without fluff. Every word contributes to defining the tool's scope and boundary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is complex with 20 parameters and no output schema, yet the description only provides a high-level summary of outputs. It does not state what the return format is (e.g., paths to saved files, an index, a summary) or mention side-effect behaviors such as asset downloading and network load. Because the schema covers parameters well, the description is adequate but not fully complete for an operation of this scale.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 20 parameters have individual descriptions in the schema with defaults and ranges, so schema coverage is 100%. The description adds no parameter-specific details, but the schema already provides complete guidance. This meets the baseline for high coverage and does not need further compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific action 'Generate a clone-ready evidence bundle for a public website' and enumerates concrete artifact categories (screenshots, design tokens, assets, page topology, behaviors, component specs). This clearly distinguishes it from sibling tools like read_url or capture_page, which focus on simpler retrieval. The verb and resource are unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear acceptable-use boundary: 'Use only for legitimate site migration, learning, or authorized rebuilds.' This gives a when-to-use context but does not compare against any sibling tools or mention when a simpler alternative (e.g., capture_page) would be more appropriate. It lacks explicit exclusions or alternative recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
doctorDoctorB
Check local runtime, security policy, optional remote readers, and Playwright availability.
| Name | Required | Description | Default |
|---|---|---|---|
| checkBrowserLaunch | No | Launch Chromium to verify browser binaries are installed. Defaults to false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so description must disclose behavior. It lists check areas but fails to describe output format, side effects, or prerequisites, leaving behavioral ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, efficiently communicates the tool's purpose with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Sparse description for a tool that checks multiple subsystems; no output details or guidance on interpreting results, especially without an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema fully documents the checkBrowserLaunch parameter with description. The tool description doesn't add additional semantics beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it checks local runtime, security policy, remote readers, and Playwright availability. Distinguishes from sibling web tools by focusing on environment diagnostics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to run this diagnostic tool versus the web task siblings. Absence of explicit context leaves the agent to infer appropriate timing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_urlRead URLA
Read a public http(s) URL as normalized text, using direct fetch first and optional remote readers only when configured.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The public http(s) URL to read. | |
| maxChars | No | Maximum characters to return. | |
| strategy | No | Reader strategy. Defaults to auto. | |
| allowPrivateNetwork | No | Allow localhost/private network URLs for this call. Defaults to false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full burden of behavioral disclosure. It adds useful context by mentioning direct fetch first and optional remote readers only when configured, but it does not cover error handling, redirects, or the default private-network blocking (though the schema covers the latter).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single succinct sentence that front-loads the core purpose and key behavior. Every word earns its place, and there is no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's purpose, output format (normalized text), and fallback behavior. It lacks explicit guidance on choosing among sibling tools and does not discuss error outcomes, but given the simple scope and full schema coverage, it is mostly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All parameters are described in the schema (100% coverage), so the description correctly avoids repeating parameter details. It adds no extra semantic value beyond the schema's own descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads a public http(s) URL as normalized text, which is a specific verb+resource+output. It distinguishes from sibling tools like capture_page by emphasizing text extraction rather than visual capture.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus siblings such as capture_page or clone_website. It only mentions the fetch approach, with no explicit alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
route_web_taskRoute Web TaskA
Choose the cheapest reliable web perception route before reading, browsing, or using screenshots.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Optional URL involved in the task. | |
| task | Yes | The user's web task or question. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosing behavior. It does not explain whether the tool performs any web access, returns a recommendation, has side effects, or what 'cheapest' means (cost, latency, resources). This is a significant gap for a non-trivial routing tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no fluff. Every word contributes to the purpose ('choose', 'cheapest', 'reliable', 'before reading/browsing/screenshots'), making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a router tool with no output schema and no annotations, the description is incomplete. It fails to explain what 'route' means, what the tool returns, or how it selects the cheapest reliable route. The minimal description leaves the agent guessing about the tool's behavior and return value.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters. The description adds no extra meaning about how 'task' and 'url' influence the routing decision, leaving it at the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Choose') and resource ('cheapest reliable web perception route'), clearly distinguishing this as a router from sibling tools that perform actual perception actions. It also gives context ('before reading, browsing, or using screenshots') and aligns with the sibling list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool: 'before reading, browsing, or using screenshots.' This provides clear context for its position in the workflow, though it does not mention exclusions or alternative tools to use instead. No explicit 'when not to use' guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
7 tool updates
v0.4.5- First observed
analyze_motion - First observed
capture_motion - First observed
capture_page - First observed
clone_website - First observed
doctor - First observed
read_url - First observed
route_web_task
TDQS
Each tool has a distinct role: routing decisions, text reading, static page capture, motion capture, motion analysis, runtime diagnostics, and full site cloning. There is no overlap between tools; capture_page and capture_motion are clearly differentiated by media type, and analyze_motion builds on captured motion data rather than duplicating it.
Most tools follow a clear verb_noun pattern (read_url, capture_page, capture_motion, analyze_motion, clone_website). The 'doctor' tool is a slight outlier as a noun-based name, but it's memorable and contextually acceptable. Overall the naming convention is predictable and consistent enough.
Seven tools is well within the ideal range for a focused web perception and cloning utility. Each tool adds a distinct capability without bloat, and the count matches the server's stated purpose of routing, reading, capturing, analyzing, and cloning web content.
The toolset covers the full lifecycle of web task handling: route_web_task plans the approach, read_url extracts content, capture_page and capture_motion provide visual evidence, analyze_motion gives deeper insights, doctor ensures environment health, and clone_website produces a complete bundle. There are no obvious missing core operations for this domain.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for visual regression testing: triage a PR's UI diffs from your coding agent.
9118- mcpOAuthcom.screenshotink
Screenshot, diff, audit and sitemap-capture any web page — 5 MCP tools for AI agents.
- RampifyOAuthdev.rampify
SEO MCP server: crawl your site, find AI-visibility gaps, and ship the fix from your coding agent.
MCP server for Mint — AI-powered QA that runs your app in a real browser on every PR.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceMCP server that enables AI coding agents to read and write to a local-first HTML/CSS design canvas, bridging visual design and code generation.MIT
- AlicenseAqualityDmaintenanceAn MCP server that uses headless Chromium (Puppeteer) to capture pixel-perfect screenshots and extract DOM from URLs, with LLM-friendly step-based workflows.2223MIT
- AlicenseAqualityAmaintenanceAn MCP server that enables AI assistants to visually inspect and interact with rendered web pages via a persistent headless Chromium browser, supporting navigation, screenshots, clicks, viewport resizing, and console log retrieval.81MIT
- AlicenseAqualityCmaintenanceA local MCP server that helps AI agents recover missing historical developer context by capturing and indexing screenshots with OCR and embeddings into a local SQLite database, enabling grounded question-answering with inspectable event citations.2MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Djsand/renderproof'
If you have feedback or need assistance with the MCP directory API, please join our Discord server