
Charlotte
Gives agents structured access to web pages through headless Chromium without dumping entire accessibility trees on every call. Navigate, observe with three detail levels, find elements spatially or semantically, interact with clicks and typing, manage tabs, monitor console output and network requests, take screenshots. The default navigate returns 336 characters for Hacker News versus 61,000+ in comparable tools. Ships with tool profiles to control which of 43 operations load at startup: core (7 tools), browse (23), full set, or specialized modes for development and auditing. Agents can activate additional tool groups mid-session. Designed to cut token costs on production browsing workloads by letting agents request only the page structure they need.
- GitHub stars
- 147
- tools
- 43
- transport
- STDIO
- last updated
- Feb 22, 2026
Tools
43 toolsPublic tool metadata for what this MCP can expose to an agent.
navigateNavigates to a URL and returns a compact page summary.
Navigates to a URL and returns a compact page summary.
No parameter schema in public metadata yet.
back
No parameter schema in public metadata yet.
forward
No parameter schema in public metadata yet.
reload
No parameter schema in public metadata yet.
observeObserves the page at 3 detail levels, with a structural tree view.
Observes the page at 3 detail levels, with a structural tree view.
No parameter schema in public metadata yet.
findSearches for elements by spatial and semantic criteria, with CSS selector mode and output_file for large result sets.
Searches for elements by spatial and semantic criteria, with CSS selector mode and output_file for large result sets.
No parameter schema in public metadata yet.
screenshotTakes a screenshot with persistent artifact management.
Takes a screenshot with persistent artifact management.
No parameter schema in public metadata yet.
screenshots
No parameter schema in public metadata yet.
screenshot_get
No parameter schema in public metadata yet.
screenshot_delete
No parameter schema in public metadata yet.
diffCompares the page structurally against snapshots.
Compares the page structurally against snapshots.
No parameter schema in public metadata yet.
click
No parameter schema in public metadata yet.
click_atClicks at coordinates.
Clicks at coordinates.
No parameter schema in public metadata yet.
typeTypes text into an element, with slow typing support.
Types text into an element, with slow typing support.
No parameter schema in public metadata yet.
select
No parameter schema in public metadata yet.
toggle
No parameter schema in public metadata yet.
submit
No parameter schema in public metadata yet.
scroll
No parameter schema in public metadata yet.
hover
No parameter schema in public metadata yet.
drag
No parameter schema in public metadata yet.
keySends a single key or a key sequence, with element targeting.
Sends a single key or a key sequence, with element targeting.
No parameter schema in public metadata yet.
wait_forPolls for an async condition.
Polls for an async condition.
No parameter schema in public metadata yet.
uploadUploads a file to a file input.
Uploads a file to a file input.
No parameter schema in public metadata yet.
fill_formFills a form in batch.
Fills a form in batch.
No parameter schema in public metadata yet.
dialogAccepts or dismisses JavaScript dialogs.
Accepts or dismisses JavaScript dialogs.
No parameter schema in public metadata yet.
consoleRetrieves console output at all severity levels, with filtering and timestamps.
Retrieves console output at all severity levels, with filtering and timestamps.
No parameter schema in public metadata yet.
requestsRetrieves HTTP request history with method, status, and resource type filtering.
Retrieves HTTP request history with method, status, and resource type filtering.
No parameter schema in public metadata yet.
tabs
No parameter schema in public metadata yet.
tab_open
No parameter schema in public metadata yet.
tab_switch
No parameter schema in public metadata yet.
tab_close
No parameter schema in public metadata yet.
viewportSets the viewport using generic presets or named devices with DPR, touch, and user agent emulation.
Sets the viewport using generic presets or named devices with DPR, touch, and user agent emulation.
No parameter schema in public metadata yet.
networkConfigures network throttling and URL blocking.
Configures network throttling and URL blocking.
No parameter schema in public metadata yet.
set_cookies
No parameter schema in public metadata yet.
get_cookies
No parameter schema in public metadata yet.
clear_cookies
No parameter schema in public metadata yet.
set_headers
No parameter schema in public metadata yet.
configure
No parameter schema in public metadata yet.
dev_serveStarts a static server with file watching and auto-reload.
Starts a static server with file watching and auto-reload.
No parameter schema in public metadata yet.
dev_injectInjects CSS or JS into the page.
Injects CSS or JS into the page.
No parameter schema in public metadata yet.
dev_auditAudits the page for a11y, performance, SEO, contrast, and broken links.
Audits the page for a11y, performance, SEO, contrast, and broken links.
No parameter schema in public metadata yet.
evaluateExecutes arbitrary JavaScript in the page context.
Executes arbitrary JavaScript in the page context.
No parameter schema in public metadata yet.
charlotte_toolsMeta-tool to enable, disable, and list tool groups mid-session.
Meta-tool to enable, disable, and list tool groups mid-session.
No parameter schema in public metadata yet.
Sponsors
Readme
Charlotte
The Web, Readable.
Your AI agent burns ~50,000 characters of accessibility tree just to look at the Hacker News front page. Charlotte does it in 364.
Charlotte is an MCP server that gives AI agents structured, token-efficient access to the web. Instead of dumping the full accessibility tree on every call, Charlotte returns only what the agent needs: a compact page summary on arrival, targeted queries for specific elements, and full detail only when explicitly requested. On content-heavy pages that orientation is up to ~140x smaller than a full accessibility-tree snapshot from Playwright MCP; on trivially small pages the two are roughly the same size.
Why Charlotte?
Most browser MCP servers dump the entire accessibility tree on every call — a flat text blob that can exceed a million characters on content-heavy pages. Agents pay for all of it whether they need it or not.
Details
- Repository
- github.com/ticktockbent/charlotte
- Categories
- Web & Browser Automation, AI & LLM Tools
- Package
@ticktockbent/charlotte- Transport
- STDIO
- Registry
- MCP registry, active