chromium-screenshots
Enables AI agents to capture pixel-perfect screenshots with synchronized DOM data and quality metrics, supporting auth injection and MCP integration for vision AI tasks.
README
chromium-screenshots
The missing screenshot service for Vision AI & Auth. Inject auth. Extract DOM. Zero-drift capture. Pixel-perfect Chromium.
⚡ Why this exists
Taking screenshots for Vision AI is hard. If you take a screenshot and then scrape the HTML separately, the page state drifts. Elements move. Popups appear. Your bounding boxes don't match the pixels.
chromium-screenshots guarantees Zero-Drift. It extracts the DOM coordinates (ground truth) and the screenshot (pixels) from the exact same render frame.
Visual Proof

| Feature | Standard Tools | chromium-screenshots |
|---|---|---|
| Data Extraction | ❌ Image Only | ✅ Image + DOM + Bounding Boxes |
| Quality Control | ❌ None (hope it loaded) | ✅ Quality Score (Good/Low/Poor) |
| Auth Injection | ❌ Cookies only | ✅ Cookies + LocalStorage + SessionStorage |
| AI Integration | ❌ Manual API calls | ✅ Native MCP Server (Claude/Gemini) |
| SPA Support | ❌ Fails on hydration | ✅ Waits for selectors/network idle |
🤖 Standardized AI Integration
This tool is a "visual cortex" for your AI agents. It implements the Model Context Protocol (MCP), allowing tools like Claude Desktop to natively control the browser.
screenshot: Returns base64 data for immediate analysis ("What does this button say?").screenshot_to_file: Saves to disk to preserve context window tokens.extract_dom: Returns text + coordinates for ground-truth verification.
Comparison with Alternatives
While many tools exist for browser automation and content extraction, chromium-screenshots is specifically designed to provide high-fidelity observation for AI agents, rather than just raw data or static images.
| Tool Category | Examples | Screenshot | Structural Data | Quality Metric | Primary Focus |
|---|---|---|---|---|---|
| Agent Observation | This Repo | ✅ | ✅ (Atomic DOM) | ✅ | AI Reliability & Context |
| LLM RAG Scrapers | Firecrawl, Jina | ✅ | ❌ (Markdown) | ❌ | Text extraction for reading |
| Screenshot APIs | ScreenshotOne, ApiFlash | ✅ | ❌ (HTML) | ⚠️ (Basic) | Marketing & Archiving |
| Performance Audit | Lighthouse CI | ✅ | ✅ (Full DOM) | ✅ | Speed & SEO Audits (Slow) |
| Visual Testing | Percy, Chromatic | ✅ | ✅ (Snapshot) | ✅ | Regression Testing (Diffs) |
🚀 Quick Start
Docker (Recommended)
Run the containerized service. No dependencies required.
docker compose up -d
The API is now active at
http://localhost:8000.
Python (Local)
pip install -r requirements.txt
playwright install chromium
uvicorn app.main:app --reload
💡 Common Recipes
1. Vision AI Ground Truth
Capture screenshot + DOM data + Quality Score in one call.
curl -X POST "http://localhost:8000/screenshot" \
-H "Content-Type: application/json" \
-d '{
"url": "https://news.ycombinator.com",
"extract_dom": {
"enabled": true,
"selectors": ["span.titleline > a"],
"max_elements": 50
}
}' -o hn_capture.png
2. The "Impossible" Auth Shot
Inject localStorage to capture authenticated dashboards (Wasp/Firebase).
curl -X POST "http://localhost:8000/screenshot" \
-H "Content-Type: application/json" \
-d '{
"url": "https://app.example.com/dashboard",
"localStorage": {
"wasp:sessionId": "secret_session_token",
"theme": "dark"
},
"wait_for_selector": ".dashboard-grid"
}' -o dashboard.png
3. Vision AI Optimization
Get quality metrics and model compatibility hints for Vision AI integrations.
curl -X POST "http://localhost:8000/screenshot/json" \
-H "Content-Type: application/json" \
-d '{
"url": "https://news.ycombinator.com",
"extract_dom": {
"enabled": true,
"include_metrics": true,
"include_vision_hints": true,
"target_vision_model": "claude"
}
}' | jq '{quality: .dom_extraction.quality, hints: .vision_hints}'
📚 Documentation
Detailed references for core features:
- API Reference - Full endpoint and parameter guide.
- DOM Extraction - How to use ground-truth element coordinates.
- Quality Assessment - Understanding extraction quality and warnings.
- MCP Server - Integration with Claude Desktop & AI agents.
🧠 How It Works
The Zero-Drift Flow:
- Inject Auth: Set
cookies&localStorage. - Navigate: Load page and wait for
networkidle. - Freeze: Pause execution.
- Extract: Scrape DOM positions & Text (JS evaluation).
- Audit: Run Quality Detection engine (count elements, check visibility).
- Capture: Take screenshot.
- Return: Send Image + JSON together.
sequenceDiagram
participant U as 👤 User / Agent
participant A as ⚡ API / MCP
participant B as 🕸️ Chromium
participant Q as 🔍 Quality Engine
U->>A: POST /screenshot (extract_dom=true)
A->>B: Create Context & Inject Auth
B->>B: Navigate & Wait
rect rgb(30, 30, 30)
note right of B: Critical Section
B->>B: Extract DOM (JS)
B->>Q: Assess Quality
Q-->>B: Quality: GOOD
B->>B: Capture Pixels
end
B-->>A: Result (Image + Metadata)
A-->>U: Return
License
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.