# charlotte

> Token-efficient browser MCP server — structured web pages for AI agents, not raw accessibility dumps

- **URL**: https://www.freshcrate.ai/projects/charlotte
- **Author**: TickTockBent
- **Category**: MCP Servers
- **Latest version**: `v0.6.1` (2026-04-09)
- **License**: MIT
- **Source**: https://github.com/TickTockBent/charlotte
- **Homepage**: https://charlotte-rose.vercel.app
- **Language**: TypeScript
- **GitHub**: 132 stars, 18 forks
- **Registry**: github
- **Tags**: `ai-agents`, `mcp`, `mcp-server`, `model-context-protocol`, `typescript`, `web-browsing`, `web-scraping`

## Description

Token-efficient browser MCP server — structured web pages for AI agents, not raw accessibility dumps

## Recent releases

| Version | Date | Urgency | Changes |
| --- | --- | --- | --- |
| `v0.6.1` | 2026-04-09 | High | ## Fixed  - **Runtime tool group activation** — Tools enabled via `charlotte_tools` were not callable by MCP clients. Each `tool.enable()` call triggered a separate `sendToolListChanged()` notification, flooding the client before the tool response was returned. Now batches state changes and sends a single notification per enable/disable action. Fixes #146. (#147)  ## Changed  - Dependency updates: vite (#142), npm_and_yarn group (#144), basic-ftp (#145)  **Full Changelog**: https://github.com/Ti |
| `v0.6.0` | 2026-04-03 | High | Update docs and version for v0.6.0 release (#140)  // ticktockbent |
| `v0.5.1` | 2026-04-03 | Medium | ## [0.5.1] - 2026-03-14  ### Added  - **Popup and target="_blank" tab capture** — Clicks on `target="_blank"` links and `window.open()` calls were silently lost because PageManager had no `popup` event handler. New tabs are now auto-captured via `page.on("popup")`, auto-cleaned when pages close themselves, and surfaced as `opened_tabs` in tool responses using single-consumption semantics. Fixes #103, #98. - **Contributor issue templates** — Bug report, feature request, and tool request templates |
| `v0.5.0` | 2026-04-03 | Medium | ## [0.5.0] - 2026-03-09  ### Added  - **Iframe content extraction** — Child frames are now discovered and their content (interactive elements, content summaries, full text) is merged into the parent page representation. Configurable depth limit (default 3). Closes #23. - **Structural tree view** — `charlotte:observe` now accepts a `view` parameter with `"tree"` and `"tree-labeled"` modes that render the page as a hierarchical tree with indentation. - **File output for large responses** — `charlo |
| `v0.4.1` | 2026-03-05 | Low | Three fixes from dogfooding Charlotte against a real non-semantic UI:  ### Added  - **`charlotte:click_at`** — Click at specific page coordinates (x, y). Enables interaction with non-semantic elements (custom widgets, canvas regions, SVG graphics) that don't appear in the accessibility tree. Supports left/right/double click and modifier keys. - **CSS selector mode for `charlotte:find`** — New `selector` parameter queries the DOM directly via `DOM.querySelectorAll`, returning elements with Charlo |

## Dependency audit

- **Score**: 100/100
- **Total deps**: 16
- **Resolved**: 16
- **Unresolved**: 0
- **License conflicts**: 0
- **Warnings**: 0
- **Scanned**: 2026-06-01

## Citation

- HTML: https://www.freshcrate.ai/projects/charlotte
- Markdown: https://www.freshcrate.ai/projects/charlotte.md
- Dependencies JSON: https://www.freshcrate.ai/api/projects/charlotte/deps

_Generated by freshcrate.ai. Indexes github releases for AI-agent ecosystem packages._
