by TickTockBent
Token-efficient browser MCP server — structured web pages for AI agents, not raw accessibility dumps
# Add to your Claude Code skills
git clone https://github.com/TickTockBent/charlotteThe Web, Readable.
Your AI agent spends 60,000 tokens just to look at a web page. Charlotte does it in 336.
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. The result is 25-182x less data per page compared to Playwright MCP, saving thousands of dollars across production workloads.
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.
Charlotte decomposes each page into a typed, structured representation — landmarks, headings, interactive elements, forms, content summaries — and lets agents control how much they receive with three detail levels. When an agent navigates to a new page, it gets a compact orientation (336 characters for Hacker News) instead of the full element dump (61,000+ characters). When it needs specifics, it asks for them.
Charlotte v0.5.1 vs Playwright MCP, measured by characters returned per tool call on real websites:
Navigation (first contact with a page):
| Site | Charlotte navigate | Playwright browser_navigate |
|:---|---:|---:|
| example.com | 612 | 817 |
| Wikipedia (AI article) | 7,667 | 1,040,636 |
| Hacker News | 336 | 61,230 |
| GitHub repo | 3,185 | 80,297 |
Charlotte's navigate returns minimal detail by default — landmarks, headings, and interactive element counts grouped by page region. Enough to orient, not enough to overwhelm. On Wikipedia, that's 135x smaller than Playwright's response.
Tool definition overhead (invisible cost per API call):
| Profile | Tools | Def. tokens/call | Savings vs full | |:---|---:|---:|---:| | full | 42 | ~7,400 | — | | browse (default) | 23 | ~3,900 | ~47% | | core | 7 | 1,677 | ~77% |
Tool definitions are sent on every API round-trip. With the default browse profile, Charlotte carries ~47% less definition overhead than loading all tools. Over a 20-call browsing session, that's ~38% fewer total tokens. See the profile benchmark report for full results.
The workflow difference: Playwright agents receive 61K+ characters every time they look at Hacker News, whether they're reading headlines or looking for a login button. Charlotte agents get 336 characters on arrival, call find({ type: "link", text: "login" }) to get exactly what they need, and never pay for the rest.
Charlotte maintains a persistent headless Chromium session and acts as a translation layer between the visual web and the agent's text-native reasoning. Every page is decomposed into a st...
No comments yet. Be the first to share your thoughts!