strawmanus
strawmanus
Un agente de control de navegador que fusiona la capa de acciones de Manus con la capa de sesión, selector y reutilización de Strawberry.
Manus tiene las mejores manos: una API de navegador plana de 12 herramientas, respaldo por coordenadas cuando falla la detección de elementos, una vía de escape a la consola JS, percepción priorizando markdown y un bucle estricto de una herramienta por iteración. Strawberry (Dendrite Systems) tiene el mejor cuerpo y memoria: se ejecuta en tu navegador real con sesión iniciada, resuelve elementos a partir de lenguaje natural y almacena en caché el resultado para que se auto-repare cuando el sitio cambia, guarda tareas exitosas como habilidades reproducibles y pregunta antes de hacer cualquier cosa irreversible.
Ninguno funciona por sí solo. Manus vuelve a pagar el costo completo del modelo en cada repetición de una tarea y, al ejecutarse en un sandbox Linux desechable, estructuralmente no puede superar un muro de inicio de sesión. Strawberry es cerrado y no expone primitivas para programar contra él. strawmanus es la combinación: el espacio de acciones de Manus, ejecutado dentro de tu propio Chrome, con cada resolución de elementos almacenada en caché.
Instalar
pip install -r requirements.txt && playwright install chromiumobserve funciona sin clave de API. Todo lo que depende del modelo necesita una:
export ANTHROPIC_API_KEY=sk-ant-...Luego verifica el entorno:
python -m strawmanus doctorRelated MCP server: agent-browser-mcp
Uso
# See exactly what the agent sees — no API key, no model call
python -m strawmanus observe --url https://github.com/trending
# Run a task
python -m strawmanus run "top 5 trending TypeScript repos today, 2 sources per fact" --expect 5
# Log in once by hand; later headless runs inherit the session
python -m strawmanus auth --url linkedin.com
# Save a successful run as a skill, then replay it with new arguments
python -m strawmanus run "search for Acme Corp" --save-skill find-co --param company="Acme Corp"
python -m strawmanus replay find-co --arg company="Globex Inc"
# Fan subtasks across tabs (they share the logged-in browser)
python -m strawmanus companions "price Linear" "price ClickUp" "price Asana"
# Score against the seat-free Strawberry benchmarks
python -m strawmanus bench --tasks B9,B12 --judge --csv scores.csvBanderas globales: --profile {cloned,real,fresh,attach} · --headless · --max-steps N · --auto-approve · --allow DOMINIO · --parallel N · --cdp URL.
El estado vive en ~/.strawmanus/: sm.db (caché de selectores, memoria, registro de ejecuciones), skills/, runs/<marca>-<slug>/{report.md,trace.json,guard.json}, profile/.
Cómo funciona
1. La percepción son tres capas en una sola carga
[page] url=https://github.com/trending | title='Trending repositories on GitHub today · GitHub' | viewport 1/3 | tabs=1
[interactive] (viewport only; use index, or coordinate_x/coordinate_y for anything missing)
0[:]<a>Homepage</a>
1[:]<button>Platform</button>
...
52[:]<a>obra / superpowers</a>
53[:]<a>275,441</a>
60[:]<a>You must be signed in to star a repository</a>
[markdown] (whole page, links/images stripped — if this answers the question, do not scroll)
# Trending
## RyanCodrai / turbovec
A vector index built on TurboQuant, written in Rust with Python bindings
348 stars today
...Los elementos interactivos son solo el viewport, en el formato exacto de Manus index[:]<etiqueta>texto</etiqueta>, con prueba de impacto mediante elementFromPoint para descartar controles ocluidos. El markdown cubre todo el documento, incluido lo que está debajo del pliegue — que es la verdadera palanca de costo, porque la mayoría de las preguntas de solo lectura se responden sin un solo desplazamiento. Las capturas de pantalla son opcionales, para cuando el DOM es genuinamente ambiguo.
Los campos de contraseña, OTP y tarjeta se indexan para poder rellenarlos, pero su texto y valor nunca entran en el contexto del modelo:
4[:]<input type=password><redacted secret field></input>2. Las 12 herramientas de Manus, textualmente — más 5
browser_view · browser_navigate · browser_restart · browser_click · browser_input · browser_move_mouse · browser_press_key · browser_select_option · browser_scroll_up · browser_scroll_down · browser_console_exec · browser_console_view
Los nombres se mantienen exactamente porque los modelos ya generalizan sobre ellos, y las reglas de comportamiento publicadas de Manus se transfieren directamente. Añadidas encima:
Herramienta | Por qué |
| Selector en lenguaje natural, primero caché |
| Esperas semánticas en lugar de bucles de sueño |
| Extracción tipada que archiva automáticamente su URL de origen |
| listar / abrir / cambiar / cerrar |
| 2FA, captcha, pago — devuelve el teclado |
El clic escala en lugar de llegar a un callejón sin salida: índice → coordenadas del bbox de la instantánea → browser_console_exec → browser_takeover. Tres fallos consecutivos en una página inyectan la escalera de escalada en el bucle.
3. La caché de selectores es la mayor victoria
(dominio, descripción normalizada) → {selector, huella{etiqueta, rol, hash_texto}, aciertos, fallos} en SQLite.
Orden de resolución: acierto de caché → verificar la huella → usarlo, con cero llamadas al modelo. En desajuste o fallo, el modelo elige un índice del listado de elementos y la caché se reescribe — el auto-reparado de Dendrite, del que Manus no tiene equivalente. Una habilidad reproducida en una página sana cuesta ninguna llamada al modelo; strawmanus cache muestra lo que se ha acumulado.
4. Navegador real primero
El valor predeterminado es un perfil de Chrome persistente que strawmanus posee — cookies reales, muros de inicio de sesión ya resueltos, sin credenciales almacenadas en ningún lugar. --profile real usa tu perfil real (Chrome debe estar cerrado), --profile attach se conecta a un Chrome que iniciaste tú mismo en --remote-debugging-port=9222, --profile fresh da un contexto limpio para benchmarks reproducibles. strawmanus auth --url <sitio> es el patrón de Dendrite: inicias sesión manualmente una vez, el estado de almacenamiento se guarda para ejecuciones headless posteriores.
5. Nada irreversible ocurre en silencio
Cada acción se clasifica como lectura / escritura suave / irreversible antes del envío. Enviar, enviar formulario, pagar, eliminar, publicar, aplicar, suscribirse, transferir, fusionar, empujar — y Enter presionado en un campo de redacción — se mantienen para confirmación con una vista previa del objetivo y la carga:
⚠ irreversible action held for confirmation
what: click 'Send invoice' on x.com
why: click target text contains 'send'
approve? [y/N]--auto-approve solo se aplica a dominios pasados con --allow. Las acciones retenidas se listan en el informe bajo "Retenidas para tu aprobación (no realizadas)", de modo que un paso bloqueado sea visible en lugar de faltar silenciosamente. Cada decisión se escribe en guard.json.
6. Un hecho sin fuente no puede imprimirse
El estándar de evaluación de Strawberry se aplica en tiempo de ejecución en lugar de calificarse después. Los hechos entran en un libro mayor con la URL de la que realmente se leyeron; una página de resultados de motor de búsqueda se rechaza como fuente y se le dice al modelo que abra la página real. La confianza es mecánica — Alta (2+ fuentes oficiales), Media (1), Baja (inferida) — y report.render() lanza en lugar de emitir una afirmación sin fuente. Los informes cierran con una línea de estado fija, bloqueadores, telemetría y la autonomía autoevaluada del agente:
**Status:** Complete | **Entities Found:** 5/5 | **Duration:** 6.2 min7. Habilidades y acompañantes
Un rastro exitoso se destila en una habilidad parametrizada: se eliminan las herramientas de ruido, los valores de argumentos literales se reemplazan con {{param}}, el texto de los elementos se mantiene para que cada paso pueda reubicarse en la reproducción. Los acompañantes reparten subtareas entre pestañas detrás de un semáforo, cada una con su propio flujo de eventos, compartiendo el único navegador con sesión iniciada.
Entrega el navegador directamente a Claude
Todo lo anterior impulsa al agente desde la CLI. serve-mcp lo invierte: el navegador
se convierte en una herramienta que Claude sostiene en conversación, un Chrome persistente
que permanece abierto entre turnos, manejado llamada a llamada de herramienta con el
razonamiento ocurriendo en el chat en lugar de en un bucle con guion.
claude mcp add strawmanus -- python -m strawmanus serve-mcpJSON-RPC 2.0 hecho a mano sobre stdio, sin dependencia adicional. Las 17 herramientas de navegador más 9
herramientas de trading. Chrome se inicia en la primera llamada de herramienta, no en el registro, por lo que
agregar el servidor no abre una ventana. browser_takeover regresa inmediatamente en lugar de
bloquear en input() — stdin es el canal de protocolo aquí, por lo que bloquear bloquearía
el servidor; en su lugar, el modelo se detiene y te pregunta en conversación.
Las herramientas de trading apuntan a Olymp Trade y vienen con una capa aritmética, un diario que
registra el razonamiento detrás de cada operación, y límites de riesgo aplicados en código por debajo de la
capa de razonamiento, por lo que una negativa es definitiva. La suposición de diseño es que "sin ventaja" es la
respuesta probable, y la puerta de evidencia de demostración existe para que esa respuesta sea alcanzable: el dinero
real requiere el límite inferior del intervalo de Wilson del 95% para superar el punto de equilibrio, no
la estimación puntual. Un registro de demostración de 120 operaciones con una tasa de victorias del 61.7%, subiendo 146.80, aún
informa edge proven NO.
TRADING.md tiene el panorama completo, incluidos los Términos de Servicio y los riesgos estructurales que deberías leer antes de apuntar esto a dinero real.
Benchmarks
bench/tasks.json lleva las 9 tareas de la especificación B1–B12 publicada de Strawberry que no necesitan asiento de pago (B6–B8 quieren acceso a LinkedIn Sales Navigator / CRM / ATS), puntuadas según su rúbrica — Precisión de Datos 35, Calidad de Fuente 25, Completitud 25, Insight 10, Velocidad 5 — menos una tabla de penalizaciones encabezada por −20 por punto de datos inventado.
Se ejecutan dos pasadas por benchmark. La pasada mecánica no necesita modelo y detecta lo que realmente sale mal: hechos sin fuente, hechos con una sola fuente, déficits de entidades, excesos contra la estimación de tiempo, lenguaje numérico evasivo. La pasada --judge luego califica con una llamada de modelo separada que solo ve el markdown emitido — el agente nunca califica su propia tarea.
Pruebas
python tests/test_core.py # 33 offline: no browser, no network, no API key
python tests/test_live.py # 6 end-to-end: real headless Chrome, scripted stub modelLa suite en vivo ejecuta toda la pila contra un DOM real con el modelo reemplazado por un guion, que es lo que hace que los invariantes sean comprobables sin clave: el JS de instantánea contra HTML real, el guardián que rechaza Send invoice mientras permite Show details (afirmado en el estado propio de la página, no en el valor de retorno), la caché pasando de frío a cálido con el conteo de llamadas al modelo permaneciendo plano, una llamada de herramienta por iteración, una fuente de fragmento rechazada e informada, y una habilidad reproducida con un nuevo argumento.
Diseño
strawmanus/
cli.py config.py loop.py llm.py
prompts/system.md # agent loop, browser, information, safety, deliverable rules
browser/
session.py # CDP attach / persistent profile / fresh context, tabs, storage state
observe.py # the three-layer observation
actions.py # Manus's 12 + 5, on Playwright
selectors.py # NL selector → cache → fingerprint verify → self-heal
guard.py # risk classifier, confirm gate, secret redaction
memory/
store.py # SQLite: prefs, per-domain quirks, run log
skills.py # trace → parameterized skill; replay with relocation
research/
sourcing.py # citation ledger
report.py # the deliverable contract
bench/
tasks.json judge.pyAún no construido
Disparadores (activar una habilidad desde una etiqueta de Gmail o un PR de GitHub), conectores MCP y las herramientas de archivos de Manus están diseñados pero no implementados. El bucle impulsado por modelo se ha ejercitado de extremo a extremo contra un stub con guion, aún no contra una clave de API en vivo.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Autonomous cloud agent tasks: real browser + your tools, structured evidence-backed results.
AI-powered browser automation — navigate, click, fill forms, and extract data from any website.
Agent personas for Claude. 16 tools, 13 personas, 3 workflows. Zero extra API cost. Free.
Provides cloud browser automation capabilities using Stagehand and Browserbase, enabling LLMs to i…
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceTransforms Chrome browser into an AI-controlled automation tool that allows AI assistants like Claude to access browser functionality, enabling complex automation, content analysis, and semantic search while preserving your existing browser environment.MIT
- AlicenseBqualityFmaintenanceEnables AI agents to directly control your real Chrome browser with full context including login sessions, cookies, and open tabs. It provides tools for page scanning, JavaScript execution, CDP control, screenshots, and physical mouse/keyboard input for authentic browser automation.20241MIT
- AlicenseBqualityAmaintenanceEnables controlling a real Chrome browser from MCP hosts like Claude, with extension-based or CDP fallback, supporting tabs, navigation, interaction, and page reading tools.33405MIT
- AlicenseNot gradedqualityDmaintenanceEnables browser automation through the Claude Chrome Extension, allowing agents to navigate websites, fill forms, take screenshots, and debug web apps via standard MCP protocols.1MIT
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/painbaba/strawmanus'
If you have feedback or need assistance with the MCP directory API, please join our Discord server