Charlotte
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| charlotte_navigateA | Load a URL in the active page. Returns page representation after navigation. Default minimal detail includes landmarks, headings, and interactive element counts — use charlotte_find to locate specific elements, or pass detail: 'summary' to get the full element list. |
| charlotte_backA | Navigate back in browser history. Returns page representation after navigation. |
| charlotte_forwardA | Navigate forward in browser history. Returns page representation after navigation. |
| charlotte_reloadA | Reload the current page. Returns page representation after reload. |
| charlotte_observeA | Get current page state without performing any action. Use detail levels to control verbosity: "minimal" for landmarks, headings, and interactive element counts by landmark (use charlotte_find to get specific elements with actionable IDs, or observe({ detail: "summary" }) to see all elements), "summary" (default) for content summaries and full element list, "full" for all text content. Use view: "tree" for a compact structural outline (cheapest orientation tool), or view: "tree-labeled" to include labels on interactive elements (still much cheaper than minimal JSON, and shows which button/link/input is which). |
| charlotte_findA | Search for elements matching criteria. Filters interactive elements by text, role, type, or spatial proximity. Use the selector parameter to find DOM elements by CSS selector — this reaches elements not in the accessibility tree (custom widgets, non-semantic divs). Selector results return Charlotte element IDs usable with click, hover, drag, etc. |
| charlotte_screenshotA | Capture a visual screenshot. Fallback for when structured representation isn't sufficient (complex visualizations, canvas elements, images). Use save: true to persist as a file artifact that can be referenced later. |
| charlotte_screenshotsA | List all saved screenshot artifacts. Returns metadata for each saved screenshot including ID, filename, page URL, and timestamp. |
| charlotte_screenshot_getA | Retrieve a previously saved screenshot artifact by its ID. Returns the image data and metadata. |
| charlotte_screenshot_deleteA | Delete a saved screenshot artifact by its ID. Removes the file from disk. |
| charlotte_diffA | Compare current page state to a previous snapshot. Returns structural diff showing added, removed, moved, and changed elements. |
| charlotte_clickA | Click an interactive element on the page. Returns full page representation after the click. |
| charlotte_click_atA | Click at specific page coordinates. Use when target elements are not in the accessibility tree (custom widgets, canvas, non-semantic interactive divs). Dispatches real CDP-level mouse events. Returns full page representation after the click. |
| charlotte_typeA | Type text into an input element. Returns full page representation after typing. |
| charlotte_selectA | Select an option in a select/dropdown element. Returns full page representation after selection. |
| charlotte_toggleA | Toggle a checkbox or switch element. Returns full page representation after toggle. |
| charlotte_submitB | Submit a form. Can submit by form ID or by clicking its submit button. Returns full page representation after submission. |
| charlotte_scrollA | Scroll the page or a specific container. Returns full page representation after scrolling. |
| charlotte_tabsA | List all open browser tabs with their URLs, titles, and active status. |
| charlotte_tab_openA | Open a new browser tab. Optionally navigate to a URL. The new tab becomes the active tab. |
| charlotte_tab_switchA | Switch to a different browser tab by its tab ID. Returns the page representation of the activated tab. |
| charlotte_tab_closeA | Close a browser tab by its ID. If the closed tab was active, switches to the first remaining tab. |
| charlotte_toolsA | Manage Charlotte tool visibility. Lists available tool groups and their status. Use 'enable' or 'disable' to control which tools are loaded. Disabled tools don't appear in the tool list — enable a group to access its tools. Groups: 'interaction' for form filling, clicking, and drag-and-drop. 'session' for cookie/auth management, tab switching, viewport, and network. 'dev_mode' for local development serving and audits. 'evaluate' for JavaScript execution. 'monitoring' for console and network request logs. 'dialog' for JavaScript dialog handling. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 23 tools
Each tool has a clearly distinct purpose: navigation, tab management, interaction, observation, and screenshot management are all separated. Even similar tools like charlotte_click and charlotte_click_at are explicitly differentiated by target type (element vs coordinates).
All tools share the 'charlotte_' prefix and use snake_case, but there is a mix of simple verbs (navigate, click, type) and compound verb_noun forms (tab_open, screenshot_get). This is mostly consistent but not perfectly uniform.
With 23 tools, the server is on the heavier side but still within a manageable range for a comprehensive browser automation tool. The count is justified by the breadth of features, though it approaches the threshold where it might feel overwhelming.
Core browser automation workflows are well covered: navigation, tab management, element interaction, observation, and screenshot handling. However, the description of charlotte_tools mentions groups for dialogs, drag-and-drop, and session management, but these tools are not present in the exposed set, leaving minor gaps.