Auto-Browser
Auto Browser

Предоставьте своему ИИ-агенту настоящий браузер с возможностью участия человека.
Auto Browser — это управляющая панель браузера на базе MCP для авторизованных рабочих процессов. Она предоставляет клиентам MCP, ИИ-агентам и операторам общий браузер Playwright с возможностью перехвата управления человеком, повторно используемыми профилями аутентификации, одобрениями, журналами аудита и развертыванием по принципу «локально в первую очередь» (local-first).
Работает с:
Claude Desktop
Cursor
любым MCP-клиентом, поддерживающим HTTP или stdio
прямыми REST-запросами, если вам нужно управление через curl
Почему Auto Browser
MCP-native с первого дня. Интерфейс браузера изначально упакован как MCP-сервер, а не добавлен позже.
Перехват управления человеком, когда веб-интерфейс становится нестабильным. noVNC позволяет сохранить доступ к активной сессии, когда человеку нужно вмешаться.
Войдите один раз, используйте повторно. Сохраняйте именованные профили аутентификации и открывайте новые сессии, в которых вы уже авторизованы.
Local-first по умолчанию. Запускайте весь стек на своем компьютере с помощью Docker Compose или используйте Codespaces для быстрого ознакомления.
Встроенные механизмы безопасности. Одобрения, идентификация оператора, очистка персональных данных (PII), квитанции Witness и шаблоны соответствия требованиям — все это часть продукта.
Related MCP server: Browser-Use MCP Server
Основные моменты релиза (v1.0.2)
Обновления безопасности фреймворка с фиксацией версий FastAPI и Starlette на текущей исправленной ветке
Более безопасные границы ошибок в действиях браузера, CDP, OCR, mesh, рабочих процессах, туннелях, социальных функциях и поверхностях обмена токенами
Усиление ограничения частоты запросов (rate-limit) с использованием ограниченных корзин и хешированных идентификаторов операторов
Ужесточение политики хостов и путей для производственных
ALLOWED_HOSTS, путей профилей аутентификации и корневых каталогов загрузкиПлатформенный интерфейс 1.0, включая делегирование mesh с подписью, маршруты рабочих процессов,
/dashboard, перехват через noVNC, транспорт MCP, журналы аудита и проверки готовности
Полную историю релизов см. в CHANGELOG.md.
Для чего подходит
внутренние панели управления и инструменты администрирования
QA с участием оператора и отладка браузера
рабочие процессы с авторизацией «войти один раз, использовать позже»
нестабильные сайты, где человеку может потребоваться восстановить поток действий
рабочие процессы агентов на базе MCP, которым нужен настоящий браузер, а не просто получение HTML
Что не является целью
скрытная работа или обход защиты от ботов
разгадывание CAPTCHA
несанкционированный парсинг или автоматизация учетных записей
обманная подмена личности или инструменты обхода
Что вы получаете
Управление браузером | Безопасность оператора | Развертывание и интеграция |
Сессии на базе Playwright со скриншотами, сводками DOM, выдержками OCR, управлением вкладками, загрузками и инспекцией сети | шлюзы одобрения, заголовки идентификации оператора, события аудита, очистка PII, квитанции Witness и профили защиты | MCP через HTTP, встроенный мост stdio, REST API, Docker Compose, Codespaces, профили аутентификации и опциональная изоляция сессий |
Быстрый старт
git clone https://github.com/LvcidPsyche/auto-browser.git
cd auto-browser
docker compose up --buildЭтого достаточно для локальной разработки с настройками по умолчанию.
Опционально:
cp .env.example .env
make doctorЗапустите make doctor из обычного терминала с доступом к локальному Docker и разрешением на открытие сокетов localhost.
Откройте:
Документация API:
http://127.0.0.1:8000/docsПанель управления оператора:
http://127.0.0.1:8000/dashboardВизуальный перехват управления:
http://127.0.0.1:6080/vnc.html?autoconnect=true&resize=scale
Все опубликованные порты по умолчанию привязаны к 127.0.0.1.
Попробуйте в Codespaces
Codespaces автоматически подготавливает стек. Панель управления и вкладки noVNC обычно готовы примерно через 90 секунд.
Первая полезная демонстрация
Наиболее показательный сценарий в этом репозитории:
создание сессии
ручной вход, если сайту нужен человек
сохранение сессии как именованного профиля аутентификации
открытие новой сессии из этого профиля
продолжение работы без повторной авторизации
Начните здесь:
Минимальное создание сессии:
curl -s http://127.0.0.1:8000/sessions \
-X POST \
-H 'content-type: application/json' \
-d '{"name":"demo","start_url":"https://example.com"}' | jqМинимальное наблюдение:
curl -s http://127.0.0.1:8000/sessions/<session-id>/observe | jqMCP-клиенты
Auto Browser предоставляет:
HTTP MCP-эндпоинт по адресу
http://127.0.0.1:8000/mcpудобные эндпоинты
http://127.0.0.1:8000/mcp/toolsиhttp://127.0.0.1:8000/mcp/tools/callвстроенный мост stdio в
scripts/mcp_stdio_bridge.py
Профиль инструментов MCP по умолчанию — curated, который сохраняет интерфейс браузера компактным для лучшего выбора инструментов. Если вам нужен полный набор внутренних инструментов, установите:
MCP_TOOL_PROFILE=fullПример вызова инструмента:
curl -s http://127.0.0.1:8000/mcp/tools/call \
-X POST \
-H 'content-type: application/json' \
-d '{
"name":"browser.create_session",
"arguments":{
"name":"demo",
"start_url":"https://example.com"
}
}' | jqРуководства по настройке клиентов:
Безопасность и соответствие требованиям
Для реального частного развертывания установите как минимум:
APP_ENV=production
API_BEARER_TOKEN=<strong-random-secret>
REQUIRE_OPERATOR_ID=true
AUTH_STATE_ENCRYPTION_KEY=<44-char-fernet-key>
REQUIRE_AUTH_STATE_ENCRYPTION=true
REQUEST_RATE_LIMIT_ENABLED=true
METRICS_ENABLED=trueCOMPLIANCE_TEMPLATE может применить предварительно настроенную политику при запуске:
Шаблон | Шифрование Auth | ID оператора | Очистка PII | Изоляция | Макс. возраст сессии |
| требуется | требуется | все уровни |
| 4ч |
| требуется | требуется | все уровни |
| 1ч |
| - | требуется | сеть + текст | общий | 24ч |
| - | - | все уровни | общий | 24ч |
Все шаблоны требуют одобрения загрузок. HIPAA, SOC2 и PCI-DSS также включают квитанции Witness. При запуске примененная политика записывается в /data/compliance-manifest.json.
Пример:
COMPLIANCE_TEMPLATE=HIPAA docker compose upПодробности развертывания, размещенные заметки Witness, режимы аутентификации CLI и руководство по reverse-SSH см. в:
Обзор архитектуры
flowchart LR
User[Human operator] -->|watch / takeover| noVNC[noVNC]
LLM[OpenAI / Claude / Gemini] -->|shared tools| Controller[Controller API]
Controller -->|Playwright protocol| Browser[Browser node]
noVNC --> Browser
Browser --> Artifacts[(screenshots / traces / auth state)]
Controller --> Artifacts
Controller --> Policy[Allowlist + approval gates]Основные компоненты:
browser-node/запускает Chromium, Xvfb, x11vnc и noVNCcontroller/предоставляет контроллер FastAPI, транспорт MCP, политики и эндпоинты оркестрацииdata/хранит артефакты выполнения, состояние аутентификации, одобрения, журналы аудита и опциональные кэши CLIscripts/содержит локальные вспомогательные скрипты для проверки готовности, дымовых тестов, мостов и проверок релиза
Руководство по репозиторию
Путь | Что содержит |
API контроллера, транспорт MCP, тесты и упаковка | |
среда выполнения браузера и слой подключения Playwright | |
примеры потоков и настройка MCP-клиентов | |
адаптеры LangChain, LangGraph и CrewAI | |
архитектура, развертывание, усиление безопасности и документация по запуску | |
проверка готовности, дымовые тесты, мост stdio и помощники аутентификации | |
шаблоны вспомогательных сервисов и операционные активы |
Общие команды
Команда | Назначение |
| список доступных команд репозитория |
| запуск проверок Ruff для приложения, тестов и вспомогательных скриптов |
| запуск тестов контроллера в Docker |
| запуск тестов контроллера на хосте (Python 3.10+) |
| запуск локальной проверки готовности |
| запуск более полной проверки валидации релиза |
| проверка изоляции Docker для каждой сессии |
| проверка удаленного доступа через reverse-SSH |
Карта документации
Если вы хотите... | Начните здесь |
понять структуру системы | |
подключить Claude Desktop или Cursor | |
запустить примеры curl | |
развернуть на доверенном хосте | |
изучить производственные ограничения | |
просмотреть историю релизов | |
увидеть планы развития проекта |
Участие в разработке
Если вы хотите помочь, начните с:
Если Auto Browser оказался полезным, звезда поможет другим людям найти его.
Available Tools
2 toolsbrowser.find_elementsA
Find all elements matching a CSS selector and return their text, href, value, bounding box, and visibility. Useful before clicking or scraping multiple items.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| selector | Yes | ||
| session_id | Yes | ID of the target browser session, as returned by browser.create_session or listed by browser.list_sessions. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false and destructiveHint=false, but the description does not elaborate on behavioral traits beyond returning element data. It does not clarify whether the tool modifies browser state (e.g., scrolling) or has side effects. Given that annotations already cover some aspects, the description adds minimal extra transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two concise sentences: the first states functionality and return data, the second provides usage context. There is no redundant information, and every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with three parameters and no output schema. The description covers the main purpose and return data, which is sufficient for basic usage. However, it omits details like error handling, performance considerations for large selectors, or the exact format of the bounding box. Still, given the low complexity, it is adequately complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 33% description coverage; only session_id has a description. The tool description does not explain the 'limit' parameter (default 20, max 100) or the 'selector' parameter (CSS format). It mentions returning 'all elements' but does not clarify the effect of the limit, which could mislead an agent into expecting unlimited results.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool finds all elements matching a CSS selector and returns specific properties (text, href, etc.). The verb 'find' and resource 'elements' are unambiguous, and it distinguishes itself from the sibling tool 'browser.list_memory_profiles' which has a completely different purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes a usage hint 'Useful before clicking or scraping multiple items,' providing context for when to use the tool. However, it does not explicitly mention when not to use it or alternative tools for similar tasks, but the sibling tool is unrelated, so differentiation is not critical.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser.list_memory_profilesARead-onlyIdempotent
List all saved memory profiles.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the description adds no additional behavioral context beyond confirming the read-only nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no unnecessary words, achieving maximum conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, straightforward purpose) and strong annotations, the description adequately covers the context, though it lacks return format details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters and 100% schema coverage, the baseline of 3 applies as the description adds no parameter-specific meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (list) and resource (all saved memory profiles), accurately distinguishing it from related tools like get_memory_profile and save_memory_profile.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for listing saved profiles but does not explicitly discuss when to use this tool over alternatives or provide any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
13 tool updates
v1.4.2- Removed
browser.activate_tab - Removed
browser.close_session - Removed
browser.close_tab - Removed
browser.eval_js - Removed
browser.execute_action - Added
browser.find_elements - Removed
browser.get_auth_profile - Removed
browser.get_console - Removed
browser.get_session - Removed
browser.list_sessions - Removed
browser.observe - Removed
browser.save_auth_profile - Removed
harness.get_status
33 tool updates
v1.4.2- Changed
browser.activate_tab2 fields changed- added
Input schema / properties / index / descriptionAdded value: +"Zero-based index of the target tab, as reported by browser.list_tabs." - added
Input schema / properties / session_id / descriptionAdded value: +"ID of the target browser session, as returned by browser.create_session or listed by browser.list_sessions."
- Changed
browser.close_session1 field changed- added
Input schema / properties / session_id / descriptionAdded value: +"ID of the target browser session, as returned by browser.create_session or listed by browser.list_sessions."
- Changed
browser.close_tab2 fields changed- added
Input schema / properties / index / descriptionAdded value: +"Zero-based index of the target tab, as reported by browser.list_tabs." - added
Input schema / properties / session_id / descriptionAdded value: +"ID of the target browser session, as returned by browser.create_session or listed by browser.list_sessions."
- Removed
browser.create_session - Removed
browser.drag_drop - Changed
browser.eval_js1 field changed- added
Input schema / properties / session_id / descriptionAdded value: +"ID of the target browser session, as returned by browser.create_session or listed by browser.list_sessions."
- Changed
browser.execute_action3 fields changed- added
Input schema / properties / action / descriptionAdded value: +"The browser action to execute, in the shared action schema: an action type (navigate, click, type, scroll, wait, done, …) plus its arguments, e.g. a URL for navigate or an element selector/index for click and type." - added
Input schema / properties / approval_id / descriptionAdded value: +"ID of a granted approval that authorizes this action when the active policy requires one. Omit when the action does not need approval." - added
Input schema / properties / session_id / descriptionAdded value: +"ID of the target browser session, as returned by browser.create_session or listed by browser.list_sessions."
- Removed
browser.find_elements - Removed
browser.fork_session - Changed
browser.get_auth_profile1 field changed- added
Input schema / properties / profile_name / descriptionAdded value: +"Name of the saved auth profile to inspect, as listed by browser.list_auth_profiles."
- Changed
browser.get_console1 field changed- added
Input schema / properties / session_id / descriptionAdded value: +"ID of the target browser session, as returned by browser.create_session or listed by browser.list_sessions."
- Removed
browser.get_html - Removed
browser.get_memory_profile - Removed
browser.get_network_log - Removed
browser.get_page_errors - Removed
browser.get_request_failures - Changed
browser.get_session1 field changed- added
Input schema / properties / session_id / descriptionAdded value: +"ID of the target browser session, as returned by browser.create_session or listed by browser.list_sessions."
- Removed
browser.list_auth_profiles - Removed
browser.list_downloads - Removed
browser.list_tabs - Changed
browser.observe1 field changed- added
Input schema / properties / session_id / descriptionAdded value: +"ID of the target browser session, as returned by browser.create_session or listed by browser.list_sessions."
- Removed
browser.readiness_check - Removed
browser.request_human_takeover - Changed
browser.save_auth_profile1 field changed- added
Input schema / properties / session_id / descriptionAdded value: +"ID of the target browser session, as returned by browser.create_session or listed by browser.list_sessions."
- Removed
browser.save_memory_profile - Removed
browser.screenshot - Removed
browser.set_viewport - Removed
browser.stop_trace - Removed
browser.verify_witness - Removed
browser.wait_for_selector - Changed
harness.get_status1 field changed- added
Input schema / properties / run_id / descriptionAdded value: +"ID of the convergence run, as returned by harness.start_convergence or listed by harness.list_runs."
- Removed
harness.get_trace - Removed
harness.list_runs
1 tool update
v1.3.1- Added
browser.verify_witness
3 tool updates
v1.1.1- Added
harness.get_status - Added
harness.get_trace - Added
harness.list_runs
5 tool updates
v1.0.5- Changed
browser.execute_action1 field changed- changed
Input schema / $defs / BrowserActionDecision / properties / action / enumPrevious value: -[ - "navigate", - "click", - "hover", - "select_option", - "type", - "press", - "scroll", - "wait", - "reload", - "go_back", - "go_forward", - "upload", - "social_login", - "social_post", - "social_comment", - "social_like", - "social_follow", - "social_unfollow", - "social_repost", - "social_dm", - "request_human_takeover", - "done" -]New value: +[ + "navigate", + "click", + "hover", + "select_option", + "type", + "press", + "scroll", + "wait", + "reload", + "go_back", + "go_forward", + "upload", + "request_human_takeover", + "done" +]
- Removed
social.extract_posts - Removed
social.extract_profile - Removed
social.login - Removed
social.search
36 tool updates
v1.0.3- Changed
browser.activate_tab3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / session_id / maxLengthAdded value: +120 - added
Input schema / properties / session_id / minLengthAdded value: +1
- Changed
browser.close_session3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / session_id / maxLengthAdded value: +120 - added
Input schema / properties / session_id / minLengthAdded value: +1
- Changed
browser.close_tab3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / session_id / maxLengthAdded value: +120 - added
Input schema / properties / session_id / minLengthAdded value: +1
- Changed
browser.create_session13 fields changed- added
Input schema / additionalPropertiesAdded value: +false - changed
Input schema / properties / auth_profile / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 120, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / memory_profileAdded value: +{ + "anyOf": [ + { + "maxLength": 120, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Load a named memory profile into this session.", + "title": "Memory Profile" +} - changed
Input schema / properties / name / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 200, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / protection_modeAdded value: +{ + "anyOf": [ + { + "enum": [ + "normal", + "confidential" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Protection Mode" +} - changed
Input schema / properties / proxy_password / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 500, + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / proxy_personaAdded value: +{ + "anyOf": [ + { + "maxLength": 200, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Proxy Persona" +} - changed
Input schema / properties / proxy_server / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 500, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } +] - changed
Input schema / properties / proxy_username / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 200, + "type": "string" + }, + { + "type": "null" + } +] - changed
Input schema / properties / start_url / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } +] - changed
Input schema / properties / storage_state_path / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 500, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } +] - changed
Input schema / properties / totp_secret / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 500, + "type": "string" + }, + { + "type": "null" + } +] - changed
Input schema / properties / user_agent / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } +]
- Changed
browser.drag_drop3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / session_id / maxLengthAdded value: +120 - added
Input schema / properties / session_id / minLengthAdded value: +1
- Changed
browser.eval_js3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / session_id / maxLengthAdded value: +120 - added
Input schema / properties / session_id / minLengthAdded value: +1
- Changed
browser.execute_action14 fields changed- changed
Input schema / $defs / BrowserActionDecision / properties / element_id / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 500, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } +] - changed
Input schema / $defs / BrowserActionDecision / properties / file_path / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 500, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } +] - changed
Input schema / $defs / BrowserActionDecision / properties / key / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 120, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } +] - changed
Input schema / $defs / BrowserActionDecision / properties / label / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 1000, + "type": "string" + }, + { + "type": "null" + } +] - changed
Input schema / $defs / BrowserActionDecision / properties / platform / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 120, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } +] - changed
Input schema / $defs / BrowserActionDecision / properties / recipient / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 200, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } +] - changed
Input schema / $defs / BrowserActionDecision / properties / selector / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } +] - changed
Input schema / $defs / BrowserActionDecision / properties / text / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 5000, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } +] - changed
Input schema / $defs / BrowserActionDecision / properties / url / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } +] - changed
Input schema / $defs / BrowserActionDecision / properties / username / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 500, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } +] - changed
Input schema / $defs / BrowserActionDecision / properties / value / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 1000, + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / session_id / maxLengthAdded value: +120 - added
Input schema / properties / session_id / minLengthAdded value: +1
- Removed
browser.find_by_vision - Changed
browser.find_elements3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / session_id / maxLengthAdded value: +120 - added
Input schema / properties / session_id / minLengthAdded value: +1
- Changed
browser.fork_session3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / session_id / maxLengthAdded value: +120 - added
Input schema / properties / session_id / minLengthAdded value: +1
- Changed
browser.get_auth_profile1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
browser.get_console3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / session_id / maxLengthAdded value: +120 - added
Input schema / properties / session_id / minLengthAdded value: +1
- Changed
browser.get_html3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / session_id / maxLengthAdded value: +120 - added
Input schema / properties / session_id / minLengthAdded value: +1
- Added
browser.get_memory_profile - Changed
browser.get_network_log3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / session_id / maxLengthAdded value: +120 - added
Input schema / properties / session_id / minLengthAdded value: +1
- Changed
browser.get_page_errors3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / session_id / maxLengthAdded value: +120 - added
Input schema / properties / session_id / minLengthAdded value: +1
- Changed
browser.get_request_failures3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / session_id / maxLengthAdded value: +120 - added
Input schema / properties / session_id / minLengthAdded value: +1
- Changed
browser.get_session3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / session_id / maxLengthAdded value: +120 - added
Input schema / properties / session_id / minLengthAdded value: +1
- Changed
browser.list_auth_profiles1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
browser.list_downloads3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / session_id / maxLengthAdded value: +120 - added
Input schema / properties / session_id / minLengthAdded value: +1
- Added
browser.list_memory_profiles - Changed
browser.list_sessions1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
browser.list_tabs3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / session_id / maxLengthAdded value: +120 - added
Input schema / properties / session_id / minLengthAdded value: +1
- Changed
browser.observe5 fields changed- added
Input schema / additionalPropertiesAdded value: +false - changed
Input schema / properties / limit / maximumPrevious value: -100New value: +200 - added
Input schema / properties / presetAdded value: +{ + "default": "normal", + "enum": [ + "fast", + "normal", + "rich" + ], + "title": "Preset", + "type": "string" +} - added
Input schema / properties / session_id / maxLengthAdded value: +120 - added
Input schema / properties / session_id / minLengthAdded value: +1
- Added
browser.readiness_check - Changed
browser.request_human_takeover3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / session_id / maxLengthAdded value: +120 - added
Input schema / properties / session_id / minLengthAdded value: +1
- Changed
browser.save_auth_profile3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / session_id / maxLengthAdded value: +120 - added
Input schema / properties / session_id / minLengthAdded value: +1
- Added
browser.save_memory_profile - Changed
browser.screenshot3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / session_id / maxLengthAdded value: +120 - added
Input schema / properties / session_id / minLengthAdded value: +1
- Changed
browser.set_viewport3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / session_id / maxLengthAdded value: +120 - added
Input schema / properties / session_id / minLengthAdded value: +1
- Changed
browser.stop_trace3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / session_id / maxLengthAdded value: +120 - added
Input schema / properties / session_id / minLengthAdded value: +1
- Changed
browser.wait_for_selector3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / session_id / maxLengthAdded value: +120 - added
Input schema / properties / session_id / minLengthAdded value: +1
- Changed
social.extract_posts3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / session_id / maxLengthAdded value: +120 - added
Input schema / properties / session_id / minLengthAdded value: +1
- Changed
social.extract_profile3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / session_id / maxLengthAdded value: +120 - added
Input schema / properties / session_id / minLengthAdded value: +1
- Changed
social.login3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / session_id / maxLengthAdded value: +120 - added
Input schema / properties / session_id / minLengthAdded value: +1
- Changed
social.search3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / session_id / maxLengthAdded value: +120 - added
Input schema / properties / session_id / minLengthAdded value: +1
32 tool updates
v0.5.0- First observed
browser.activate_tab - First observed
browser.close_session - First observed
browser.close_tab - First observed
browser.create_session - First observed
browser.drag_drop - First observed
browser.eval_js - First observed
browser.execute_action - First observed
browser.find_by_vision - First observed
browser.find_elements - First observed
browser.fork_session - First observed
browser.get_auth_profile - First observed
browser.get_console - First observed
browser.get_html - First observed
browser.get_network_log - First observed
browser.get_page_errors - First observed
browser.get_request_failures - First observed
browser.get_session - First observed
browser.list_auth_profiles - First observed
browser.list_downloads - First observed
browser.list_sessions - First observed
browser.list_tabs - First observed
browser.observe - First observed
browser.request_human_takeover - First observed
browser.save_auth_profile - First observed
browser.screenshot - First observed
browser.set_viewport - First observed
browser.stop_trace - First observed
browser.wait_for_selector - First observed
social.extract_posts - First observed
social.extract_profile - First observed
social.login - First observed
social.search
TDQS
The two tools serve completely different purposes: one lists saved profiles, the other finds DOM elements. There is no overlap or ambiguity.
Both tools consistently use the 'browser.' prefix followed by a verb_noun pattern in snake_case (list_memory_profiles, find_elements).
Only 2 tools for a browser automation server is far too few. Essential operations like navigation, clicking, input, and scraping are missing, making the tool set feel incomplete for its stated domain.
The tool surface is severely incomplete. There is no way to navigate, interact with elements, or scrape content, leaving agents unable to perform basic browser automation tasks.
Maintenance
Related MCP Connectors
Run multi-step tasks in a real Chrome browser: persistent environments, live view, human takeover.
Human-in-the-loop API for AI agents. CAPTCHA, OTP, KYC, and approvals by real humans.
Automate any website: discover, run and create browser scripts that work behind logins.
Human-in-the-loop approval for agent actions, with verifiable action-bound receipts.
Related MCP Servers
- -licenseNot gradedqualityFmaintenanceThis server provides cloud browser automation capabilities using Browserbase, Puppeteer, and Stagehand. This server enables LLMs to interact with web pages, take screenshots, and execute JavaScript in a cloud browser environment.5,3333,406MIT
- AlicenseNot gradedqualityFmaintenanceFacilitates browser automation with custom capabilities and agent-based interactions, integrated through the browser-use library.1957MIT
- AlicenseAqualityBmaintenanceEnables LLMs like Claude to navigate the web through Puppeteer-based tools and Steel. Based on the Web Voyager framework, it provides tools for all the standard web actions click clicking/scrolling/typing/etc and taking screenshots.1654MIT

gotoHuman MCPofficial
AlicenseAqualityFmaintenanceAdd human approval steps to your AI agents and automations with gotoHuman.36952MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/LvcidPsyche/auto-browser'
If you have feedback or need assistance with the MCP directory API, please join our Discord server