The web was built for humans.
Ghost turns any website into typed MCP tools your AI agent can call — auto-generated from the live DOM, cached forever, self-healing.
one command · no config · no API keys · 20,000x faster than vision agents
The difference
Screenshot agents send images to LLMs and hope for the best. Ghost returns typed JSON from auto-generated MCP tools.Example: extracting top stories from Hacker News
// Screenshot Agent (GPT-4V, Claude Vision, etc.)
// Take screenshot → Send to LLM → Parse response
const screenshot = await page.screenshot();
// → 1.2MB base64 PNG blob
const response = await llm.chat({
model: "gpt-4-vision",
messages: [{
role: "user",
content: [
{ type: "image", data: screenshot },
{ type: "text", text: "Extract the top stories" }
]
}]
});
// Response: unstructured text, no schema
// Latency: 3-8 seconds per call
// Cost: ~$0.04/screenshot (adds up fast)
// Accuracy: varies by prompt quality// Ghost: Structured MCP tool call
// Auto-generated, typed, cached
const stories = await ghost.execute(
'hackernews_extract_top_stories',
{ limit: 5 }
);
// Returns typed JSON in <1ms (cached):
[
{
title: "Show HN: Ghost – AI browser auto...",
points: 342,
author: "ajgreen",
url: "https://github.com/ajsai47/ghost",
comments: 127
},
// ... 4 more, fully typed
]
// Latency: 0.03ms cached, 27ms first call
// Cost: $0 (runs locally)
// Schema: auto-generated, self-healingScreenshot Agent
Ghost
Under the hood
Three steps. Any website. Structured data out.
Ghost visits any URL and analyzes the DOM structure. It auto-generates typed, callable tools — extract, click, type, scroll — and detects frameworks to adapt its selector strategy.
A 3-tier execution waterfall finds the fastest path. Cached API replays resolve in under a millisecond. Headless browsers handle fresh pages. The extension handles auth-gated sessions.
Ghost returns typed, structured JSON — not screenshots or blobs. Every field is named, typed, and deterministic. Pipe it directly into your agent's next step.
Interactive
Pick a scenario and watch Ghost navigate, analyze, and generate tools in real time.
Benchmarked and proven
Real numbers from 1,637 tests across 7 benchmark suites.
15ms
Tool generation
552ms
Headless nav avg
325ms
In-page execution avg
3ms
Extension DOM extraction
1,637
Passing tests
100%
Pass rate
Use cases
From one-off extractions to production monitoring pipelines.
Extract structured data from any website with a single command.
const results = await ghost.ultra_research({
query: "latest AI papers",
sites: 100,
extract: ["title", "authors", "date", "abstract"]
});
// → 847 papers, JSON + CSV exportNever break again
A 4-strategy pipeline that automatically repairs broken selectors when sites change.
Each element gets a tag-path > text-hash > landmark > position fingerprint using djb2 hashing.
text 35% · tag 30% · position 20% · landmark 15%
Multi-factor similarity scoring across tag, text content, attributes, XPath, parent, and sibling context.
Works after major DOM restructuring
Falls back to accessible labels, text content, and role attributes. Works even when all CSS classes change.
Framework-agnostic resilience
Sends DOM context to Claude Sonnet to re-identify the element. Last resort — always succeeds.
AI-powered final fallback
Enterprise-grade infrastructure
Production-ready from day one. Stealth, resilience, and observability baked in.
Navigate protected sites without getting blocked.
Rotate IPs automatically to avoid rate limits.
GHOST_PROXY_URLS
Respect site limits automatically.
Efficient browser resource management.
GHOST_MAX_TABS
Run headless in the cloud when local isn't available.
Get notified when monitors detect changes.
Switch