Skip to content
Agentmart
Submit a tool

Stealthy Auto Browse

Self-hosted MCP server for stealth browser automation with human-like OS-level input.

Connector by psyb0t · GitHub account verified by the MCP Registry

IndexedWTFPLRemote (HTTP)★ 94
Write a review

Install

Pick your client. Read the repository before you give any tool access to your data.

No install instructions from the source yet. Check the repository for setup steps.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Self-hosted MCP server for stealth browser automation with human-like OS-level input.

Use cases: browser-automation, web-scraping

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 25, 2026.

Tools
7 read · 11 write · 2 delete
Secrets
None asked for
Install scripts
None found
Runs as
Docker image

Tools by what they do 20

Read from the source code; the running server may list different tools.

Read 7 · Look things up without changing anything.

  • detect_challenge
  • get_clipboard
  • get_html
  • get_interactive_elements
  • get_text
  • screenshot
  • wait_for_element

Write 11 · Create, change, send or run things.

  • browser_action
  • click
  • fill
  • goto
  • mouse_move
  • scroll
  • send_key
  • set_clipboard
  • system_click
  • system_type
  • wait_for_text

Delete 2 · Delete, drop, revoke or wipe things.

  • eval_js
  • run_script

Network hosts it talks to 7

  • bing.com · found in code
  • github.com · found in code
  • glama.ai · found in code
  • google.com · found in code
  • json.schemastore.org · found in code
  • search.brave.com · found in code
  • virtual-media.stealthy.invalid · found in code

Files it touches

  • /proc/loadavg
  • /proc/meminfo
  • /usr/local/lib/python3.12/site-packages/camoufox
  • /usr/share/fonts/opentype/urw-base35
  • /usr/share/fonts/truetype/dejavu
  • /usr/share/fonts/truetype/liberation
  • Your home directory (~)
  • ~/.Xauthority

Tools (20)

Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].

  • browser_action

    Execute any browser action not covered by the other tools. Useful for: cookies (get_cookies, set_cookie, delete_cookies), tabs (list_tabs, new_tab, switch_tab, close_tab), storage (get_storage, set_storage, clear_storage), dialogs (handle_dialog, get_last_dialog), downloads (get_last_download, upload_file), clipboard (set_clipboard, get_clipboard), virtual media (get_virtual_media_state, set_virtual_media_source, upload_virtual_media), challenge detection (detect_challenge), network logging (enable_network_log, get_network_log, etc.), console logging (enable_console_log, get_console_log, etc.…

  • click

    Click an element by CSS selector or XPath. PREFER THIS over system_click. Reliable, fast, and works on most sites. Only fall back to system_click if the site explicitly detects and blocks DOM event injection. XPath example: "xpath=//button[@id='submit']". Args: selector: CSS selector or XPath (prefix with "xpath=").

  • detect_challenge

    Detect a challenge widget without clicking, solving, or entering its frame. Returns a best-effort `absent`, `present`, or `unknown` status. Known matches include vendor, confidence, locations, and sanitised frame origin/path evidence. An absent result is not proof a site will never show a custom or later challenge. Args: scroll_into_view: Scroll the first visible detected frame or widget into the viewport. This never clicks, focuses, solves, or submits it.

  • eval_js

    Execute JavaScript in the page and return the result. Examples: "document.title", "document.querySelectorAll('a').length". Args: expression: JavaScript expression to evaluate. world: "page" (default) runs in the page's own JavaScript world and can read page globals such as window.__NEXT_DATA__. "isolated" sees only the DOM; page scripts cannot observe or hook it.

  • fill

    Set an input field's value instantly by CSS selector. Clears existing content first. Does not generate individual keystrokes. Args: selector: CSS selector of the input element. value: The value to set.

  • get_clipboard

    Read UTF-8 text from the real X11 clipboard.

  • get_html

    Get the full HTML source of the current page.

  • get_interactive_elements

    Find all interactive elements on the page (buttons, links, inputs, etc.). Returns each element's viewport coordinates (x, y), dimensions, text content, and CSS selector. Use the coordinates with system_click. Args: visible_only: Only return elements visible in the viewport.

  • get_text

    Get all visible text content from the current page (truncated to 10,000 chars).

  • goto

    Navigate the browser to a URL. Args: url: The URL to navigate to. wait_until: When to consider navigation done. "domcontentloaded" (default), "load", or "networkidle". referer: Optional HTTP Referer header value. timeout: Seconds allowed per attempt. Omit for the app default of 30. retry_count: Timeout retries from 0 through 2. Omit for the app default of 1. retry_delay: Base seconds before a retry. Omit for the app default of 1.

  • mouse_move

    Move the mouse to viewport coordinates with human-like movement (no click). Use to hover over elements (trigger dropdowns, tooltips). Args: x: Viewport X coordinate. y: Viewport Y coordinate. w: Target width; the pointer lands inside the target. h: Target height. duration: Scale the movement to this many seconds. speed: Movement speed multiplier (0.1-10). curvature: Main stroke bend multiplier (0-5, 0 = straight). tremor: Hand tremor amplitude in px (0-5).

  • run_script

    Run multiple browser actions as a single atomic script. All steps execute sequentially on the SAME browser instance under a single request lock. This is the only safe way to do multi-step workflows in a load-balanced cluster. Each step is a dict with "action" and its parameters. Add "output_id" to any action step to collect its result in the response outputs dict. Steps can also use control nodes: {"if": {"condition": ..., "then": [...]}} selects a branch; {"repeat": {"count": 1, "steps": [...]}} repeats a bounded body; and {"while": {"condition": ..., "max_iterations": 1, "steps": [...]}} r…

  • screenshot

    Take a screenshot of the browser viewport or full desktop. LAST RESORT. Prefer get_text() or get_html() instead. Screenshots cost many more tokens and only help when visual layout or images matter. When you do take a screenshot, always use whLargest=512 unless you specifically need fine detail. Full resolution is wasteful. Args: screenshot_type: "browser" for page viewport, "desktop" for full virtual screen. width: Resize to this width (keeps aspect ratio if height omitted). height: Resize to this height (keeps aspect ratio if width omitted). whLargest: Resize so the largest …

  • scroll

    Scroll using the mouse wheel. Args: amount: Wheel notches, non-zero. Negative = down, positive = up. x: Optional X coordinate to move mouse to before scrolling. y: Optional Y coordinate to move mouse to before scrolling. notch_gap: Median seconds between wheel notches (0.015-5). Default: human flick/controlled rhythm.

  • send_key

    Send a keyboard key or combo. Examples: "enter", "tab", "escape", "backspace", "ctrl+a", "ctrl+shift+t". Args: key: Key name or combo using PyAutoGUI key names. key_hold: Median seconds the key is held (0.01-2). instant: Press and release at once with no human timing. Faster, but easy for a page to spot.

Show 5 more tools
  • set_clipboard

    Replace the real X11 clipboard with UTF-8 text up to 1 MiB.

  • system_click

    Click at viewport coordinates using real OS-level mouse movement. PREFER click() with a CSS selector instead. It is faster and more reliable. Only use system_click when the site detects DOM event injection and blocks it. The window position is re-measured before every move, so it stays correct after fullscreen, new tabs and browser relaunches. Args: x: Viewport X coordinate of the target centre (from get_interactive_elements). y: Viewport Y coordinate of the target centre. w: Target width from get_interactive_elements. The click lands at a human offset inside the …

  • system_type

    Type text with real OS-level keystrokes (undetectable). Holds and releases keys with human timing: rhythm that depends on the key pair, overlapping keys for fast typists, and Shift pressed before capitals. Also types characters outside the US layout. You must focus an input field first (e.g. with system_click). Args: text: The text to type. interval: Median gap between key presses in seconds. Defaults to the session's typist speed. typos: Make and correct occasional typos. Refused on password, email, number, maxlength and similar fields (see typos_disabled…

  • wait_for_element

    Wait for an element to reach a state. Args: selector: CSS selector or XPath. state: "visible" (default), "hidden", "attached", or "detached". timeout: Max wait time in seconds.

  • wait_for_text

    Wait for specific text to appear anywhere on the page. Args: text: Substring to wait for. timeout: Max wait time in seconds.

Compare and alternatives

    Featured in

    Signals

    Stars
    94
    Forks
    16
    Open issues
    0
    Contributors
    1
    Last commit
    Oct 22, 2026 (6 days ago)
    Last release
    Oct 22, 2026 (6 days ago)
    Last package publish
    Oct 22, 2026 (6 days ago)

    From GitHub (fetched Oct 24, 2026) and the package registry.

    Details

    Registry name
    io.github.psyb0t/stealthy-auto-browse
    Version
    3.2.0
    Auth
    No auth
    Packages
    oci docker.io/psyb0t/stealthy-auto-browse:v3.2.0
    License
    WTFPL
    First seen
    Oct 24, 2026
    Last checked
    Oct 24, 2026

    More from psyb0t

    Cite this page

    Stealthy Auto Browse MCP server. Agent Mart. https://agentmart.dev/connectors/psyb0t-stealthy-auto-browse (last updated 2026-10-24)