Kitsune
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| KITSUNE_HOME | No | Data directory (0700) | ~/.kitsune |
| KITSUNE_TOKEN | No | Override the token in ~/.kitsune/token | |
| KITSUNE_WS_PORT | No | Extension WebSocket. Change WS_URL in extension/background/background.js too | 47652 |
| KITSUNE_HTTP_PORT | No | Bridge HTTP API | 47651 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
Shared browser. Every tab is readable; writes, scroll, hover and focus need your own tab. browser_tabs request asks the user to hand over a tab (DOM writes, no native input). browser_tabs new opens a background current tab; select makes any tab current without switching the user's view. Until new/select (an MCP restart clears current), reads use the viewed tab and writes/navigation need tab_id. Batch/workflow newTab and tabs opened from current become current. Prefer page controls, else browser_ask_user, to hand a step to the user.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| browser_resumeA | Continue a call whose result has call and resume_token (a needs_user stop, batch, parallel or workflow); nothing that ran ok is sent again. |
| browser_ask_userA | Ask the user to do what you cannot: sign in, pass a CAPTCHA (human_check), click a control that ignores your clicks (trusted_input), or choose (other). |
| browser_closeB | Close the page |
| browser_resizeB | Resize the browser window |
| browser_console_messagesC | Returns all console messages |
| browser_handle_dialogC | Handle a dialog |
| browser_emulate_mediaA | Emulate CSS media features for the page, for example switch between the light and dark color scheme. Omitted parameters are left unchanged; null clears an override. |
| browser_evaluateC | Evaluate JavaScript expression on page or element |
| browser_file_uploadB | Upload one or multiple files |
| browser_dropA | Drop files or MIME-typed data onto an element, as if dragged from outside the page. At least one of "paths" or "data" must be provided. |
| browser_findA | Search the accessibility snapshot of the current page for text or a regular expression. Returns matching snapshot nodes with a few lines of surrounding context (like search snippets), each shown under its path from the root of the tree, which is cheaper than capturing the whole snapshot when you only need to locate an element and its ref. |
| browser_fill_formB | Fill multiple form fields |
| browser_press_keyB | Press a key on the keyboard |
| browser_typeB | Type text into editable element |
| browser_navigateC | Navigate to a URL |
| browser_navigate_backA | Go back to the previous page in the history |
| browser_network_requestsA | Returns a numbered list of network requests since loading the page. Use browser_network_request with the number to get full details. |
| browser_network_requestA | Returns full details (headers and body) of a single network request, or a single part if |
| browser_run_code_unsafeA | Run a Playwright code snippet. Unsafe: executes arbitrary JavaScript in the Playwright server process and is RCE-equivalent. |
| browser_take_screenshotA | Take a screenshot of the current page. You can't perform actions based on the screenshot, use browser_snapshot for actions. |
| browser_snapshotA | Capture accessibility snapshot of the current page, this is better than screenshot |
| browser_clickB | Perform click on a web page |
| browser_dragA | Perform drag and drop between two elements |
| browser_hoverA | Hover over element on page |
| browser_select_optionB | Select an option in a dropdown |
| browser_tabsC | Manage tabs; request a handoff. |
| browser_wait_forB | Wait for text to appear or disappear or a specified time to pass |
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 27 tools
Most tools map cleanly to one browser action (click, hover, press_key, select_option, navigate, tabs), and the network_requests/network_request pair is explicitly documented as a two-step lookup. A few pairs have fuzzy boundaries: browser_type vs browser_fill_form, browser_drag vs browser_drop, and especially browser_evaluate vs browser_run_code_unsafe, where an agent must read carefully to pick the right one.
Every tool uses the same browser_ prefix and snake_case, which makes the set very predictable. The only minor deviation is that some names are verb-first (browser_click, browser_navigate_back) while others are noun/verb-phrase (browser_tabs, browser_snapshot, browser_network_requests, browser_console_messages).
At 27 tools this is on the heavy side and includes specialized operations (browser_emulate_media, browser_resize, browser_drop, browser_drag, browser_run_code_unsafe) that many agents will never need. For a full browser-automation surface the breadth is defensible, but the count is borderline rather than well-scoped.
Coverage is strong: navigation, tabs, forms, keyboard, dialogs, waits, snapshots, screenshots, console, network inspection, file upload, and drag/drop are all present. Gaps are minor but real: no forward-history navigation, no cookie/localStorage management, and no download handling.