browser_list_tabsLABSCO SUMMARY
If you are logged in, your agent can use it — no keys, no OAuth app, no scraping.
Borrowing the browser session is the whole idea, and it is exactly why the permission model has to be strict: everything starts off, the plugin source gets reviewed before you enable it, and permissions reset the moment a plugin updates.
What it is
A local CLI plus a Chrome extension. The extension bridges your browser to a local server, and plugins turn a site's own web APIs into tools your agent can call using the session you are already signed in with — not screenshots, not DOM scraping.
What you get
- 100+ plugins covering roughly 2,000 tools, including Slack, Discord, GitHub, Jira, Notion, Figma, AWS and Stripe, installed with one command and usable immediately with no restart
- Built-in browser tools that need no plugin at all — screenshots, clicking, typing and network capture, on any tab
- Plugin scaffolding in one command, publishable to npm so anyone can install it; or point your AI at a site and have it discover the APIs and build the plugin for you
- A CLI mode for agents that do not speak MCP
- A permission model that starts closed: nothing executes until you enable it, your AI reviews the plugin source before you do, permissions reset when a plugin updates, and each plugin or tool can be set to Off, Ask or Auto
Requirements
Node.js 22+ and Chrome. Install with npm install -g @opentabs-dev/cli and run opentabs start, then load the extension from ~/.opentabs/extension in chrome://extensions/ with Developer mode on. Plugins are added with opentabs plugin install <plugin-name>. Everything runs locally with a full audit log and no cloud component; anonymous telemetry is on by default and can be opted out of. It is not affiliated with or endorsed by any of the third-party services it reaches.
Setup effort
Follow the published steps — npm install -g @opentabs-dev/cli
USE CASES
Automating a service with no API key to hand
The call goes out through your authenticated browser session, so a tool works the moment you are signed in — no developer account, no OAuth app to register.
Acting on a site instead of reading a screenshot
Plugins call the site's real web APIs, which is why sending a message and adding reactions behaves like an API call rather than like brittle browser automation.
Working with a site nobody wrote a plugin for
Point your AI at it; it discovers the APIs and builds the plugin, which you can then publish to npm for everyone else.
Keeping a dangerous tool from firing on its own
Set it to Ask for a confirmation dialog, or leave it Off; the setting applies per plugin or per individual tool.
Using it without an MCP client
CLI mode covers the same plugins for agents and scripts that do not speak MCP.
78 tools
Listed in project docs. Your client may show a different list.
browser_open_tabbrowser_close_tabbrowser_navigate_tabbrowser_focus_tabbrowser_get_tab_infobrowser_list_tab_groupsbrowser_create_tab_groupbrowser_add_tabs_to_groupbrowser_remove_tabs_from_groupbrowser_update_tab_groupbrowser_list_tabs_in_groupbrowser_list_windowsbrowser_create_windowbrowser_update_windowbrowser_close_windowbrowser_download_filebrowser_list_downloadsbrowser_get_download_statusbrowser_get_tab_contentbrowser_get_page_htmlbrowser_execute_scriptbrowser_screenshot_tabbrowser_click_elementbrowser_type_textbrowser_select_optionbrowser_query_elementsbrowser_wait_for_elementbrowser_hover_elementbrowser_press_keybrowser_scrollbrowser_handle_dialogbrowser_get_storagebrowser_get_cookiesbrowser_set_cookiebrowser_delete_cookiesbrowser_search_historybrowser_get_visitsbrowser_search_bookmarksbrowser_create_bookmarkbrowser_list_bookmark_treebrowser_get_recently_closedbrowser_restore_sessionbrowser_enable_network_capturebrowser_get_network_requestsbrowser_get_websocket_framesbrowser_export_harbrowser_disable_network_capturebrowser_intercept_requestsbrowser_fulfill_requestbrowser_fail_requestbrowser_stop_interceptingbrowser_clear_emulationbrowser_emulate_devicebrowser_set_geolocationbrowser_set_media_featuresbrowser_emulate_vision_deficiencybrowser_get_element_stylesbrowser_force_pseudo_statebrowser_get_css_coveragebrowser_throttle_networkbrowser_clear_network_throttlebrowser_clear_site_databrowser_get_console_logsbrowser_clear_console_logsbrowser_list_resourcesbrowser_get_resource_contentextension_reloadextension_get_stateextension_get_logsextension_get_side_panelextension_check_adapterextension_force_reconnectplugin_analyze_siteplugin_list_tabsbrowser_notifyopentabs_list_toolsopentabs_callBEFORE YOU INSTALL
What to know first
Tools you get
78 tools named in the project's documentation.
Requires
- npm on PATH
- Node.js 22+
- Google Chrome (or any Chromium-based browser)
INSTALLATION
Connect your client
Server setup
npm install -g @opentabs-dev/cli
opentabs startLoad the extension: open chrome://extensions/, turn on Developer mode, click Load unpacked and select ~/.opentabs/extension
MCP Clients
Claude Code, Cursor
{
"mcpServers": {
"opentabs": {
"type": "http",
"url": "http://127.0.0.1:9515/mcp",
"headers": {
"Authorization": "Bearer <YOUR_SECRET>"
}
}
}
}<YOUR_SECRET> is the key opentabs start generates on first run. Print it with: opentabs config show --json --show-secret | jq -r .secret
OpenCode
{
"mcp": {
"opentabs": {
"type": "remote",
"url": "http://127.0.0.1:9515/mcp",
"headers": {
"Authorization": "Bearer <YOUR_SECRET>"
}
}
}
}<YOUR_SECRET> is the key opentabs start generates on first run. Print it with: opentabs config show --json --show-secret | jq -r .secret
Windsurf
{
"mcpServers": {
"opentabs": {
"serverUrl": "http://127.0.0.1:9515/mcp",
"headers": {
"Authorization": "Bearer <YOUR_SECRET>"
}
}
}
}<YOUR_SECRET> is the key opentabs start generates on first run. Print it with: opentabs config show --json --show-secret | jq -r .secret
Any MCP client — gateway
{
"mcpServers": {
"opentabs": {
"type": "http",
"url": "http://127.0.0.1:9515/mcp/gateway",
"headers": {
"Authorization": "Bearer <YOUR_SECRET>"
}
}
}
}<YOUR_SECRET> is the key opentabs start generates on first run. Print it with: opentabs config show --json --show-secret | jq -r .secret
Claude Code — stdio
{
"mcpServers": {
"opentabs": {
"command": "opentabs",
"args": [
"start",
"--stdio"
]
}
}
}CLI mode (no MCP)
opentabs tool list
opentabs tool call slack__send_message '{"channel":"C123","text":"hello"}'