Uindow
About
Real browser automation for AI agents. Uindow ships a local MCP server that drives a real, signed Chromium/Electron browser with genuine OS-level input (real cursor movement, real keystrokes, native file dialogs) entirely on the user's own machine.
Details
- Author
- uindow
- Downloads
- 376
- Categories
- Web Scraping, Automation, AI
Jump to
- Real Chromium browser with genuine OS‑level input
- Immune to prompt injections
- MCP server for AI agent control
- No‑code recorder for automation without programming
- Full CLI for managing agents and app lifecycle
- Runs completely locally on your machine
Setting up with Highlight
This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
UindowCommand (node, npx, python, etc.)Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
- Enable "Start Automatically" if you want the plugin to start when Highlight launches
From the repository
Launch the MCP server with npx -y @uindow/cli mcp and configure your MCP‑compatible client (Claude Desktop, Cursor, VS Code, etc.) to use that stdio command. Alternatively, use the integrated no‑code recorder or write automations in pure JavaScript inside the built‑in IDE.
app_docs
Query SDK documentation **Never attempt to guess arguments!** Always call the `app_docs` tool again with **query** set to the method or property you're about to use to retrieve its full argument details and available code examples, which are usually complete Uindow modules exported in YAML format. Get the full list of available dollar sign ($) object properties and methods, or search for a particular method. Results are sorted in ascending order based on how close the query string is to the beginning of the paragraph. Use dollar sign ($) object properties and methods in pure JavaScript **code** blocks when calling `agents_execute` or `src_code_set`. Returns: Documentation for a dollar sign ($) object property or method in Markdown format, OR a list of all available dollar sign ($) object properties and methods in Markdown format.
app_status
Get application status Check whether Uindow was installed and started on this computer. Returns: `True` if the app was started, `false` otherwise
app_start
Start application If Uindow is already running, silently return `false`. Otherwise, download the required version of Electron.js and Uindow as needed, launch the Uindow application, and return `true`. Returns: `True` if the app was launched, `false` if it was already running
app_stop
Stop application If Uindow was already stopped, or the quit signal could not be delivered, return `false`. Otherwise, issue a quit signal, wait for the app to exit gracefully, and return `true`. Returns: `True` if the app was stopped, `false` otherwise
agents_list
List agents Get the list of agents that can perform tasks on this machine. Each agent is assigned a unique `index` from 1 to 9, which is used to identify the agent when issuing commands. You may use this list to map an agent's name to its `index` when a user refers to an agent by name, and to check whether the agent is currently executing a task. Returns: List of agents
agents_create
Create agent Add a new agent with the specified name. A maximum of 9 agents can exist at a time; creating a 10th agent will fail. The name is trimmed and truncated to 64 characters. Use the `agents_list` tool to fetch all available agents and their indexes. Returns: A unique `index` from 1 to 9, which is used to identify this agent with various tools.
agents_update
Update agent Update an agent's name. The name is trimmed and truncated to 64 characters. Use the `agents_list` tool to fetch all available agents and their indexes. Returns: `True` on success
agents_delete
Delete agent Delete an agent from the list. Use the `agents_list` tool to fetch all available agents and their indexes. Returns: `True` on success, `false` on failure
agents_status
Get agent status Check whether the agent is currently executing a task. Use the `agents_logs` tool to get the agent status object and the latest logs. Use the `agents_list` tool to fetch all available agents and their indexes. Use the `agents_start` tool to start or unpause the agent as needed. Use the `agents_stop` tool to stop the agent as needed. Returns: Agent status object
agents_start
Start agent Start or unpause the agent and run the source code (to which users may refer to as a module) as defined using the `src_*` tools. The purpose of the source code is to provide permanence and safe transferability for automations. If you wish to execute SDK methods on the fly (without saving them), call the `agents_execute` tool instead. Use the `agents_list` tool to fetch all available agents and their indexes. Call the `agents_status` tool from time to time or use the `agents_logs` tool to check execution progress. Use the `src_export` tool to review the complete module source code before executing it. Use the `agents_settings_set` tool to set the values for all inputs before running this tool. Use the `agents_results_get` tool to fetch the captured outputs after running this tool. Returns: `True` if the agent was started (it had previously been stopped or paused), `false` if it was already running.
agents_stop
Stop agent Stop the agent and return control back to the user or AI assistant. Use the `agents_list` tool to fetch all available agents and their indexes. Returns: `True` if the agent was stopped (it had been running or paused), `false` if it was already stopped.
agents_screenshot
Grab agent screenshot Capture a PNG screenshot of the current web page directly as a Base64-encoded string. No need to set up a file output for this agent. It works even if the agent is already executing another task. Use the `agents_list` tool to fetch all available agents and their indexes. Returns: PNG screenshot
agents_execute
Execute code in an agent Execute asynchronous JavaScript code in the agent and forward the returned value. Remember to use `return` as your last statement; for example: `return await $.navGetTitle();`. The code runs safely outside the browser, so it has no access to window, document, cookies, or other DOM APIs. It can only use plain JavaScript and the dollar sign ($) object to perform the kinds of actions a regular user can perform - navigate, click, scroll, read text, save files, and so on. **Before running this tool, you must first make sure the agent has been stopped using the `agents_status` and `agents_stop` tools**. **Never run this tool without first using the `app_docs` tool twice**: once to list all SDK methods, and again to query the specific methods you intend to use, including their detailed arguments and examples. **You must never wrap your code in an async IIFE** because all code blocks in Uindow (both functions and finite-state machine states) are asynchronous. Use the `agents_list` tool to fetch all available agents and their indexes. Use the `app_docs` tool to query the available dollar sign ($) methods and properties for use in the `code` argument of this tool. Returns: Any value returned by the executed code.
agents_logs
Get agent logs Calling this tool outputs the agent logs generated since the last tool call. The structured content is an object representing the current agent status: either `stopped`, `paused`, or `running`. It only makes sense to call this tool again to fetch new logs if the agent is still running. Logs are output as lines of text with the following structure: `[info/success/warning/error] {text} ({date and time})`. Example: `[info] state: Testing $.sleep (12/12/2020, 10:10:00 PM)` Use the `agents_status` tool to get only the agent status object (without the latest logs). Use the `agents_list` tool to fetch all available agents and their indexes. Use the `agents_start` tool to start or unpause the agent as needed. Use the `agents_stop` tool to stop the agent as needed. Returns: Agent status object
agents_settings_get
Get settings Fetch the settings that will be used by the `$.ioInput*()` SDK methods when starting this agent with `agent_start`. The inputs declared using `src_input_*` tools are rendered as form elements in the Settings tab. Use this tool to get all input keys and their current values as configured by the user. At most 5000 rows will be returned for *table* inputs. Use the `agents_list` tool to fetch all available agents and their indexes. Returns: List of inputs and their values
agents_settings_set
Update settings Set the value of an input declared with the `src_input_set_*` tools. The value type is resolved from the input's own definition, so pass the natural value for that input: - boolean -> `true` or `false` - int -> `42`, or `[1, 2, 3]` if *isList* is `true` - string -> `"foo"`, or `["foo", "bar"]` if *isList* is `true` - files -> array of **absolute file paths** - table -> array of row objects keyed by the input's *columns* Use the `agents_list` tool to fetch all available agents and their indexes. Use the `src_keys_list` tool with section *srcInputs* to get all input keys. Use the `src_input_get` tool to inspect an input's declared type. Returns: Extended list of inputs and their values
agents_results_get
Get results Fetch the results that will be saved by the `$.ioInput*()` and `$.ioSave*()` SDK methods when the agent is started with `agent_start`. Outputs declared using `src_output_*` tools are rendered as form elements in the Results tab. Use the `agents_list` tool to fetch all available agents and their indexes. Returns: List of outputs and their values
src_sample
Module: get sample (yaml) Get a fully functional Uindow module in YAML format. The module is always an object with these keys: *srcStateMachine*, *srcFunctions*, *srcInputs*, and *srcOutputs*. The sample illustrates the interactions between finite-state machine (FSM) states, functions, inputs, and outputs. It also shows how the *$.args* property can be used when passing arguments to FSM states and functions. Use the `app_docs` tool to look up any dollar sign ($) methods used in the returned code. Use the other `src_*` tools to author your own automation, which users may refer to as a module. Returns: Sample source code in YAML format
src_export
Module: get source (yaml) Export the agent's source as a YAML string. The source is always an object with these keys: *srcStateMachine*, *srcFunctions*, *srcInputs*, and *srcOutputs*. To edit these properties, you must use the appropriate tool: - *srcStateMachine* and *srcFunctions*: use the `src_code_*` tools - *srcInputs*: use the `src_input_*` tools - *srcOutputs*: use the `src_output_*` tools Use the `agents_list` tool to fetch all available agents and their indexes. Use the `src_sample` tool to better understand how the FSM, states and IO interact. If the user asks to save this automation/module as a file, please use the ".js.yaml" extension. Returns: Agent source code in YAML format
src_code_get
Module: get state or function code Fetch the source code for this finite-state machine (FSM) state, or function. Use the `agents_list` tool to fetch all available agents and their indexes. Use the `src_keys_list` tool with section *srcStateMachine* to get all state keys. Use the `src_keys_list` tool with section *srcFunctions* to get all function keys. Use the `app_docs` tool to look up any dollar sign ($) methods used in the returned code. Returns: Source code object
src_code_set
Module: set state or function code Set the source code for a finite-state machine (FSM) state (*srcStateMachine*) or a function (*srcFunctions*). **You must never wrap your code in an async IIFE** because all code blocks in Uindow (both functions and finite-state machine states) are asynchronous. For *srcStateMachine*: When using the `agents_start` tool, the first defined state is executed. Jump to another state by returning an object with the `next` and `args` keys. Example: `return { next: "another-state-key", args: ["foo", "bar"] }` The new state can access the passed arguments through the `$.args` property. The FSM stops when the last executed state no longer returns an object with a *next* property. A maximum of 64 states can be defined. For *srcFunctions*: Call a function from a state or another function using the *$.fn* SDK method. To learn more about *$.fn*, use the `app_docs` tool with "$.fn" as *query*. Pass arguments as an array; for example: `await $.fn("function-key", ["foo", "bar"])`. The function reads them through the `$.args` property, which is always an array. Unlike FSM states, a function's return value has no special role and does not trigger any state transition. A maximum of 128 functions can be defined. Use the `agents_list` tool to fetch all available agents and their indexes. Use the `src_keys_list` tool with the same *section* to get all existing keys. Use the `app_docs` tool to view available SDK methods for the *code* argument. Use the `src_sample` tool to better understand how the FSM, states and IO interact. Returns: Updated state or function
src_keys_list
Module: list item keys Get a list of all keys defined in a module section. Use the `agents_list` tool to fetch all available agents and their indexes. Use the `src_export` tool to review the complete module source code. Returns: List of keys in this section
src_keys_reorder
Module: reorder item keys Reorder the items in a module *section*. - For *srcStateMachine*: order matters - the first state is executed when the agent starts. - For *srcFunctions*: the item order does not matter; reorder for ease of debugging. - For *srcInputs*: each input item generates a UI element in the agent Settings tab; reorder for improved UX. - For *srcOutputs*: each output item generates a UI element in the agent Results tab; reorder for improved UX. Use the `agents_list` tool to fetch all available agents and their indexes. Use the `src_keys_list` tool with the corresponding section to list all available items. Use the `src_export` tool to review the complete module source code. Returns: Updated list of keys in this section
src_keys_update
Module: update item key Change this item's key to make the source code easier to understand. Use the `agents_list` tool to fetch all available agents and their indexes. Use the `src_keys_list` tool with the corresponding section to list all available items. Use the `src_export` tool to review the complete module source code. Returns: Updated key
src_keys_delete
Module: delete item Delete this item, but first make sure it is no longer used by reading the full source code exported with the `src_export` tool. - For the *srcStateMachine* section, no state should still call `return { next: "this-state" }` - For the *srcFunctions* section, no state or function should still call `$.fn("this-function-key")` - For the *srcInputs* section, no state or function should still use `$.ioInput*("this-input-key")` - For the *srcOutputs* section, no state or function should still use `$.ioOutput*("this-output-key")` Use the `agents_list` tool to fetch all available agents and their indexes. Use the `src_keys_list` tool with the corresponding section to list all available items. Returns: Returns `true` if the item was found and removed, `false` otherwise
src_input_get
Module: get input Fetch the definition for this input. Use the `agents_list` tool to fetch all available agents and their indexes. Use the `src_keys_list` tool with section *srcInputs* to get all input keys. Returns: Input definition
src_input_set_bool
Module: set boolean input Define a boolean input that users can configure in the *Settings* tab. Use the `agents_list` tool to fetch all available agents and their indexes. Use the `src_keys_list` tool with section *srcInputs* to get all input keys. Use the `src_sample` tool to better understand how the FSM, states and IO interact. Use the `agents_settings_set` tool to set the value for this and other inputs before using the `agents_start` tool. A maximum of 128 inputs can be defined. Returns: Input definition
src_input_set_int
Module: set integer input Define an integer input that users can configure in the *Settings* tab. Use the `agents_list` tool to fetch all available agents and their indexes. Use the `src_keys_list` tool with section *srcInputs* to get all input keys. Use the `src_sample` tool to better understand how the FSM, states and IO interact. Use the `agents_settings_set` tool to set the value for this and other inputs before using the `agents_start` tool. A maximum of 128 inputs can be defined. Returns: Input definition
src_input_set_string
Module: set string input Define a string input that users can configure in the *Settings* tab. Use the `agents_list` tool to fetch all available agents and their indexes. Use the `src_keys_list` tool with section *srcInputs* to get all input keys. Use the `src_sample` tool to better understand how the FSM, states and IO interact. Use the `agents_settings_set` tool to set the value for this and other inputs before using the `agents_start` tool. A maximum of 128 inputs can be defined. Returns: Input definition
src_input_set_files
Module: set files input Define a files input that users can configure in the *Settings* tab. Use the `agents_list` tool to fetch all available agents and their indexes. Use the `src_keys_list` tool with section *srcInputs* to get all input keys. Use the `src_sample` tool to better understand how the FSM, states and IO interact. Use the `agents_settings_set` tool to set the value for this and other inputs before using the `agents_start` tool. A maximum of 128 inputs can be defined. Returns: Input definition
src_input_set_table
Module: set table input Define a table input that users can configure in the *Settings* tab. You can use a maximum of 6 input tables. Use the `agents_list` tool to fetch all available agents and their indexes. Use the `src_keys_list` tool with section *srcInputs* to get all input keys. Use the `src_sample` tool to better understand how the FSM, states and IO interact. Use the `agents_settings_set` tool to set the value for this and other inputs before using the `agents_start` tool. A maximum of 128 inputs can be defined. Returns: Input definition
src_output_get
Module: get output Fetch the definition for this output. Use the `agents_list` tool to fetch all available agents and their indexes. Use the `src_keys_list` tool with section *srcOutputs* to get all output keys. Returns: Output definition
src_output_set_bool
Module: set boolean output Define a boolean output that users see in the *Results* tab. Use the `agents_list` tool to fetch all available agents and their indexes. Use the `src_keys_list` tool with section *srcOutputs* to get all output keys. Use the `src_sample` tool to better understand how the FSM, states and IO interact. A maximum of 128 outputs can be defined. Returns: Output definition
src_output_set_int
Module: set integer output Define an integer output that users see in the *Results* tab. Use the `agents_list` tool to fetch all available agents and their indexes. Use the `src_keys_list` tool with section *srcOutputs* to get all output keys. Use the `src_sample` tool to better understand how the FSM, states and IO interact. A maximum of 128 outputs can be defined. Returns: Output definition
src_output_set_string
Module: set string output Define a string output that users see in the *Results* tab. Use the `agents_list` tool to fetch all available agents and their indexes. Use the `src_keys_list` tool with section *srcOutputs* to get all output keys. Use the `src_sample` tool to better understand how the FSM, states and IO interact. A maximum of 128 outputs can be defined. Returns: Output definition
src_output_set_files
Module: set files output Define a files output that users see in the *Results* tab. Use the `agents_list` tool to fetch all available agents and their indexes. Use the `src_keys_list` tool with section *srcOutputs* to get all output keys. Use the `src_sample` tool to better understand how the FSM, states and IO interact. A maximum of 128 outputs can be defined. Returns: Output definition
src_output_set_table
Module: set table output Define a table output that users see in the *Results* tab. You can use a maximum of 6 output tables. Use the `agents_list` tool to fetch all available agents and their indexes. Use the `src_keys_list` tool with section *srcOutputs* to get all output keys. Use the `src_sample` tool to better understand how the FSM, states and IO interact. A maximum of 128 outputs can be defined. Returns: Output definition
Claude Desktop / Cursor
Paste into your MCP client config file to install this server.
{
"mcpServers": {
"uindow": {
"uindow": {
"command": "npx",
"args": [
"-y",
"@uindow/cli",
"mcp"
]
}
}
}
}
McpServers
{
"uindow": {
"command": "npx",
"args": [
"-y",
"@uindow/cli",
"mcp"
]
}
}
Uindow drives areal, signed Chromium/Electron browserwith genuine OS-level input - actual cursor movement, real keystrokes, and native file dialogs rather than synthetic page events. It runs entirely on your own machine and your own network, and every line of code it executes sits in plain sight in this repository.
- No code- build automations in the integrated editor and record complex workflows without writing code.
- From any AI assistants- Uindow ships a localMCPserver, so Claude, Cursor, VS Code, or any MCP-compatible client can list, create, and run automation modules directly. SeeControl Uindow from AI assistants.
- Write automations in pure JavaScript- Use the integrated development environment to write, test, and debug automations with ease. Auto-completion, code healing, JavaScript parsing, and linting are all built in.
In order to use the app, create an account for free atuindow.comand follow the on-screen instructions.
Option 1 - Prebuilt binaries (recommended)
We build signed binaries formacOS, Windows, and Linuxdirectly from thedistsource, and host them on theGitHub Releasespage (current and older versions) and on theUindow install page.
One command to fetch the CLI and launch the app:
npx @uindow/cli app:status # check whether the app is running npx @uindow/cli app:stop # stop the app
Clone the repository and launch the app directly from source.
git clone https://github.com/uindow/uindow.git uindow cd ./uindow/ npm install npm start
Uindow exposes a localModel Context Protocolserver, so any MCP-compatible client can drive web-automation agents directly. The server communicates overstdiosecurely and is launched on demand by the AI assistant.
Requirements:Node.js 18+ withnpxon yourPATH.
Uindow provides a 1-click connector for the most popular AI assistants.
Go toUindow>AI assistants>Connect
Go toSettings > Tools > AI Assistant > Model Context Protocol (MCP)and clickAdd, then paste the JSON. In the same dialog, set the scope toGlobalrather than project-scoped so the server is available in every project you open, then clickApplyto start it.
{ "mcpServers": { "uindow": { "command": "npx", "args": ["-y", "@uindow/cli@latest", "mcp"] } } }
Most remaining AI assistants accept the same object undermcpServers. Look for the config file in your home directory (~/.<client>/...) rather than the one in your project root - the home-directory copy is the global one:
{ "mcpServers": { "uindow": { "command": "npx", "args": ["-y", "@uindow/cli@latest", "mcp"] } } }
Point the AI assistant at the commandnpxwith arguments-y @uindow/cli@latest mcp.
If your AI assistant requires an explicit transport field, use"type": "stdio".
Run the launch command by hand first - it's the fastest way to separate "Uindow is broken" from "the AI assistant can't start it":
A stdio server prints nothing and blocks. A silent, hung terminal means it started correctly; press Ctrl-C and go back to your AI assistant. Any stack trace you see here is the real error your AI assistant was swallowing.
Then confirm the scope took: open the AI assistant from adifferentdirectory than the one you configured it in, and check that Uindow's tools are still listed. If they vanish, the entry landed in a project-local config.
-
Server works in one project but not another.
- Classic scope problem - the entry is project-local. In Claude Code,claude mcp listfrom the other directory will come up empty; re-add with--scope user. In Gemini CLI, re-add with-s user. In Cursor and VS Code, move the entry from.cursor/mcp.jsonor.vscode/mcp.jsonto~/.cursor/mcp.jsonor the user-profilemcp.json.
spawn npx ENOENT/ server never starts in a GUI app.
- Desktop apps don't inherit your shell'sPATH, which bites anyone using nvm, asdf, or Volta. Runwhich npx(where npxon Windows) and put the absolute path incommand.
- Most desktop AI assistants only reload MCP config on a full restart - quit the app entirely (macOS: Cmd+Q; Windows: quit from the tray icon) rather than closing the window.
- Check the root key against the table above:serversfor VS Code,context_serversfor Zed,mcp_serversin TOML for Codex,mcpServerseverywhere else. A wrong key is ignored silently in most AI assistants.
- Several AI assistants resolve project config ahead of global config, so an old project-localuindowentry will silently win over the new global one. Delete the stale entry rather than editing both.
Server connects but tools aren't used.
- In Claude Code, MCP tools are deferred behind tool search by default and loaded on demand, so they may not appear in an upfront tool list. Ask for a Uindow tool by name, or set"alwaysLoad": trueon the server entry to load its tools at session start.
- claude mcp listand/mcp(Claude Code), Output panel > MCP Logs (Cursor), Output > MCP (VS Code),~/Library/Logs/Claude/mcp.logor%APPDATA%\Claude\logs\mcp.log(Claude Desktop).
You can run Uindow from any CI/CD pipeline or command-line interface.
Alternatively, you can usenode dist/bin.js --helpinstead ofnpx @uindow/cli --helpfor a faster response.
USAGE $ npx @uindow/cli <command> [options] AVAILABLE COMMANDS $ npx @uindow/cli mcp Uindow MCP server (stdio) $ npx @uindow/cli app_docs Query SDK documentation $ npx @uindow/cli app_status Get application status $ npx @uindow/cli app_start Start application $ npx @uindow/cli app_stop Stop application $ npx @uindow/cli agents_list List agents $ npx @uindow/cli agents_create Create agent $ npx @uindow/cli agents_update Update agent $ npx @uindow/cli agents_delete Delete agent $ npx @uindow/cli agents_status Get agent status $ npx @uindow/cli agents_start Start agent $ npx @uindow/cli agents_stop Stop agent $ npx @uindow/cli agents_screenshot Grab agent screenshot $ npx @uindow/cli agents_execute Execute code in an agent $ npx @uindow/cli agents_logs Get agent logs $ npx @uindow/cli agents_settings_get Get settings $ npx @uindow/cli agents_settings_set Update settings $ npx @uindow/cli agents_results_get Get results $ npx @uindow/cli src_sample Module: get sample (yaml) $ npx @uindow/cli src_export Module: get source (yaml) $ npx @uindow/cli src_code_get Module: get state or function code $ npx @uindow/cli src_code_set Module: set state or function code $ npx @uindow/cli src_keys_list Module: list item keys $ npx @uindow/cli src_keys_reorder Module: reorder item keys $ npx @uindow/cli src_keys_update Module: update item key $ npx @uindow/cli src_keys_delete Module: delete item $ npx @uindow/cli src_input_get Module: get input $ npx @uindow/cli src_input_set_bool Module: set boolean input $ npx @uindow/cli src_input_set_int Module: set integer input $ npx @uindow/cli src_input_set_string Module: set string input $ npx @uindow/cli src_input_set_files Module: set files input $ npx @uindow/cli src_input_set_table Module: set table input $ npx @uindow/cli src_output_get Module: get output $ npx @uindow/cli src_output_set_bool Module: set boolean output $ npx @uindow/cli src_output_set_int Module: set integer output $ npx @uindow/cli src_output_set_string Module: set string output $ npx @uindow/cli src_output_set_files Module: set files output $ npx @uindow/cli src_output_set_table Module: set table output OPTIONS --help Help menu for a specific command --version Package version
There are three ways to build a module - reach for them in this order:
-
Record it - zero learning curve.Open the integrated recorder and use the browser exactly as you normally would: point, click, scroll, upload and download files. The recorder turns your actions into JavaScript for you - deterministically, without any AI, and instantly. What you see is what you get.
Let an AI assistant write it via MCP.Want something more involved? Hand control to your local AI assistant over MCP and have it author the module on your behalf. Describe the outcome and let it produce the code for you. You're always in control of your automations, and you can use the included IDE to debug your code.
Write it yourself in plain JavaScript.If the recorder and the AI-driven approach both come up short, go straight to the source:
- Visit theUindow SDK Reference
- Download the sample module and import it into Uindow
- Experiment with the dollar-sign methods - the integrated editor has auto-complete, code hints, formatting and linting
For most people the learning curve is zero - the recorder is all you'll ever touch. And if you decide to go pro, it stays shallow: the SDK is there when you want it, not before.
Web scraping, crawling, and change detection with AI
Hyperbrowser is the next-generation platform empowering AI agents and enabling effortless, scalable browser automation.
Leverage Notte Web AI agents & cloud browser sessions for scalable browser automation & scraping workflows
AI-powered browser automation MCP server — navigate sites, fill forms, extract data, and handle logins via Claude Code CLI
Scrape any URL with JavaScript rendering and get back clean markdown — built for AI agents, LLM pipelines, and autonomous research workflows.
An AI-powered web scraping system for high-volume automation and advanced data extraction strategies.
Ultra-fast web scraper and deep discussion crawler delivering clean Markdown for AI Agents
AI tools for web scraping, crawling, browser control, and web search via the Oxylabs AI Studio API.
AI-powered tools for web scraping, crawling, and browser automation.
An intelligent web scraping tool using AI and browser automation to extract structured data from websites.
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.


