github Python analyzed b9f7218

human-plus-machine/monkeybot

github

Universal Agent Harness

maintainer
human-plus-machine
licence
MIT
first seen
2026-07-13
last seen
2026-09-17
releases · 30d
14
short id

Drift inferred · capture-to-capture

No drift recorded — single capability capture; advisories appear once its surface changes.

capabilities 32 tools
transport stdio · streamable-http · http counts 32 tools · 0 res · 0 prompts permission surface via code analysis

tools

  • browser_act
  • browser_click
  • browser_click_by_index
  • browser_click_text
  • browser_close_tab
  • browser_extract
  • browser_fill
  • browser_get_elements
  • browser_get_text
  • browser_goto
  • browser_input_by_index
  • browser_js
  • browser_list_playbooks
  • browser_login
  • browser_open_tab
  • browser_page_info
  • browser_passkey
  • browser_press_key
  • browser_read_playbook
  • browser_read_tabs
  • browser_run_playbook
  • browser_screenshot
  • browser_scroll
  • browser_select_by_index
  • browser_stop
  • browser_switch_tab
  • browser_tabs
  • browser_upload
  • browser_wait_for
  • browser_wait_idle
  • browser_write_playbook
  • echo
skills & danger signals github-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit b9f7218 · analyzer v33 · 1h ago

skills & prompt files 10

danger signals5

code evidence vbrowser-v0.7.2 · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

code files: 600

filesystem 244

  • fs human-plus-machine-monkeybot-b9f7218/cli/src/monkeybot_cli/chat_file_index.py :8 from pathlib import Path
  • fs human-plus-machine-monkeybot-b9f7218/cli/src/monkeybot_cli/chat_local_shell.py :11 from pathlib import Path
  • fs human-plus-machine-monkeybot-b9f7218/cli/src/monkeybot_cli/chat_tool_display.py :5 from pathlib import Path
  • fs human-plus-machine-monkeybot-b9f7218/cli/src/monkeybot_cli/chat_tui.py :10 import shutil
  • fs human-plus-machine-monkeybot-b9f7218/cli/src/monkeybot_cli/commands/chat.py :16 from pathlib import Path
  • fs human-plus-machine-monkeybot-b9f7218/cli/src/monkeybot_cli/commands/doctor.py :10 from pathlib import Path
  • fs human-plus-machine-monkeybot-b9f7218/cli/src/monkeybot_cli/commands/loop.py :8 from pathlib import Path
  • fs human-plus-machine-monkeybot-b9f7218/cli/src/monkeybot_cli/commands/new.py :7 from pathlib import Path
  • fs human-plus-machine-monkeybot-b9f7218/cli/src/monkeybot_cli/commands/refresh.py :7 from pathlib import Path
  • fs human-plus-machine-monkeybot-b9f7218/cli/src/monkeybot_cli/commands/run_cmd.py :12 from pathlib import Path
  • fs human-plus-machine-monkeybot-b9f7218/cli/src/monkeybot_cli/commands/talk.py :7 from pathlib import Path
  • fs human-plus-machine-monkeybot-b9f7218/cli/src/monkeybot_cli/commands/validate.py :10 from pathlib import Path
show 28 more
  • fs human-plus-machine-monkeybot-b9f7218/cli/src/monkeybot_cli/config_resolve.py :5 from pathlib import Path
  • fs human-plus-machine-monkeybot-b9f7218/cli/src/monkeybot_cli/opensandbox_lifecycle.py :9 from pathlib import Path
  • fs human-plus-machine-monkeybot-b9f7218/cli/src/monkeybot_cli/realtime/audio_io.py :51 self._stream = self._pyaudio.open(
  • fs human-plus-machine-monkeybot-b9f7218/cli/src/monkeybot_cli/realtime/gateway_manager.py :9 from pathlib import Path
  • fs human-plus-machine-monkeybot-b9f7218/cli/src/monkeybot_cli/realtime/talk_ui.py :13 from pathlib import Path
  • fs human-plus-machine-monkeybot-b9f7218/cli/src/monkeybot_cli/runtime_python.py :37 import shutil
  • fs human-plus-machine-monkeybot-b9f7218/cli/src/monkeybot_cli/scaffold.py :8 from pathlib import Path
  • fs human-plus-machine-monkeybot-b9f7218/cli/src/monkeybot_cli/scaffold_defaults/image-generator/generate_image.py :19 from pathlib import Path
  • fs (weak) human-plus-machine-monkeybot-b9f7218/cli/tests/test_chat_e2e.py :9 from pathlib import Path
  • fs (weak) human-plus-machine-monkeybot-b9f7218/cli/tests/test_chat_errors.py :7 from pathlib import Path
  • fs (weak) human-plus-machine-monkeybot-b9f7218/cli/tests/test_chat_file_index.py :5 from pathlib import Path
  • fs (weak) human-plus-machine-monkeybot-b9f7218/cli/tests/test_chat_local_shell.py :8 from pathlib import Path
  • fs (weak) human-plus-machine-monkeybot-b9f7218/cli/tests/test_chat_tui.py :9 from pathlib import Path
  • fs (weak) human-plus-machine-monkeybot-b9f7218/cli/tests/test_cli.py :8 from pathlib import Path
  • fs (weak) human-plus-machine-monkeybot-b9f7218/cli/tests/test_config_resolve.py :5 from pathlib import Path
  • fs (weak) human-plus-machine-monkeybot-b9f7218/cli/tests/test_doctor.py :6 from pathlib import Path
  • fs (weak) human-plus-machine-monkeybot-b9f7218/cli/tests/test_extras_catalog.py :8 from pathlib import Path
  • fs (weak) human-plus-machine-monkeybot-b9f7218/cli/tests/test_gateway_health.py :6 from pathlib import Path
  • fs (weak) human-plus-machine-monkeybot-b9f7218/cli/tests/test_run_cmd.py :12 from pathlib import Path
  • fs (weak) human-plus-machine-monkeybot-b9f7218/cli/tests/test_runtime_python.py :10 from pathlib import Path
  • fs (weak) human-plus-machine-monkeybot-b9f7218/cli/tests/test_scaffold.py :5 from pathlib import Path
  • fs human-plus-machine-monkeybot-b9f7218/evals/diff.py :17 from pathlib import Path
  • fs human-plus-machine-monkeybot-b9f7218/evals/persistence.py :12 from pathlib import Path
  • fs human-plus-machine-monkeybot-b9f7218/evals/report.py :18 from pathlib import Path
  • fs human-plus-machine-monkeybot-b9f7218/evals/scenario_loader.py :6 from pathlib import Path
  • fs human-plus-machine-monkeybot-b9f7218/evals/scorer.py :7 from pathlib import Path
  • fs human-plus-machine-monkeybot-b9f7218/evals/test_assertions.py :9 from pathlib import Path
  • fs human-plus-machine-monkeybot-b9f7218/evals/test_diff.py :9 from pathlib import Path

204 more not shown — this panel samples each group; the count above is the real total.

shell / exec 34

  • shell human-plus-machine-monkeybot-b9f7218/cli/src/monkeybot_cli/chat_file_index.py :7 import subprocess
  • shell human-plus-machine-monkeybot-b9f7218/cli/src/monkeybot_cli/chat_local_shell.py :8 import subprocess
  • shell human-plus-machine-monkeybot-b9f7218/cli/src/monkeybot_cli/chat_tui.py :11 import subprocess
  • shell human-plus-machine-monkeybot-b9f7218/cli/src/monkeybot_cli/commands/chat.py :11 import subprocess
  • shell human-plus-machine-monkeybot-b9f7218/cli/src/monkeybot_cli/commands/run_cmd.py :8 import subprocess
  • shell human-plus-machine-monkeybot-b9f7218/cli/src/monkeybot_cli/gateway_health.py :6 import subprocess
  • shell human-plus-machine-monkeybot-b9f7218/cli/src/monkeybot_cli/opensandbox_lifecycle.py :7 import subprocess
  • shell human-plus-machine-monkeybot-b9f7218/cli/src/monkeybot_cli/process_tree.py :7 import subprocess
  • shell human-plus-machine-monkeybot-b9f7218/cli/src/monkeybot_cli/realtime/talk_ui.py :8 import subprocess
  • shell human-plus-machine-monkeybot-b9f7218/cli/src/monkeybot_cli/runtime_python.py :38 import subprocess
  • shell (weak) human-plus-machine-monkeybot-b9f7218/cli/tests/test_chat_e2e.py :7 import subprocess
  • shell (weak) human-plus-machine-monkeybot-b9f7218/cli/tests/test_chat_local_shell.py :68 Regression test: plain `subprocess.run(..., timeout=...)` only kills the
show 22 more
  • shell (weak) human-plus-machine-monkeybot-b9f7218/cli/tests/test_cli.py :6 import subprocess
  • shell (weak) human-plus-machine-monkeybot-b9f7218/cli/tests/test_doctor.py :5 import subprocess
  • shell (weak) human-plus-machine-monkeybot-b9f7218/cli/tests/test_extras_catalog.py :6 import subprocess
  • shell (weak) human-plus-machine-monkeybot-b9f7218/cli/tests/test_run_cmd.py :9 import subprocess
  • shell (weak) human-plus-machine-monkeybot-b9f7218/cli/tests/test_runtime_python.py :7 import subprocess
  • shell human-plus-machine-monkeybot-b9f7218/evals/persistence.py :177 import subprocess
  • shell (weak) human-plus-machine-monkeybot-b9f7218/scripts/release.py :20 import subprocess
  • shell human-plus-machine-monkeybot-b9f7218/src/monkeybot/computer/safety.py :27 import subprocess
  • shell human-plus-machine-monkeybot-b9f7218/src/monkeybot/core/subagents/worker_pool.py :10 import subprocess
  • shell human-plus-machine-monkeybot-b9f7218/src/monkeybot/core/subprocess_groups.py :9 import subprocess
  • shell human-plus-machine-monkeybot-b9f7218/src/monkeybot/core/tools/fs_isolation.py :46 import subprocess
  • shell human-plus-machine-monkeybot-b9f7218/src/monkeybot/core/tools/terminal.py :814 output: Raw output bytes from subprocess
  • shell human-plus-machine-monkeybot-b9f7218/src/monkeybot/core/tools/workspace_service.py :11 import subprocess
  • shell (weak) human-plus-machine-monkeybot-b9f7218/tests/core/test_core_tool_executor.py :863 import subprocess
  • shell (weak) human-plus-machine-monkeybot-b9f7218/tests/core/test_durable_runs.py :8 import subprocess
  • shell (weak) human-plus-machine-monkeybot-b9f7218/tests/core/test_fs_isolation.py :5 import subprocess
  • shell (weak) human-plus-machine-monkeybot-b9f7218/tests/core/test_provider_contract.py :8 import subprocess
  • shell (weak) human-plus-machine-monkeybot-b9f7218/tests/core/test_worker_pool.py :9 import subprocess
  • shell (weak) human-plus-machine-monkeybot-b9f7218/tests/providers/test_source_grep_gates.py :6 import subprocess
  • shell (weak) human-plus-machine-monkeybot-b9f7218/tests/skills/test_generate_image_script.py :8 import subprocess
  • shell (weak) human-plus-machine-monkeybot-b9f7218/tests/test_cold_start.py :6 import subprocess
  • shell (weak) human-plus-machine-monkeybot-b9f7218/tests/test_packaging_config.py :2 import subprocess

network 48

  • net human-plus-machine-monkeybot-b9f7218/cli/src/monkeybot_cli/chat_session.py :16 import httpx
  • net human-plus-machine-monkeybot-b9f7218/cli/src/monkeybot_cli/chat_tui.py :15 from urllib.parse import urlparse
  • net human-plus-machine-monkeybot-b9f7218/cli/src/monkeybot_cli/commands/chat.py :19 import httpx
  • net human-plus-machine-monkeybot-b9f7218/cli/src/monkeybot_cli/commands/doctor.py :12 import httpx
  • net human-plus-machine-monkeybot-b9f7218/cli/src/monkeybot_cli/commands/loop.py :10 import httpx
  • net human-plus-machine-monkeybot-b9f7218/cli/src/monkeybot_cli/commands/validate.py :13 import httpx
  • net human-plus-machine-monkeybot-b9f7218/cli/src/monkeybot_cli/gateway_health.py :5 import socket
  • net human-plus-machine-monkeybot-b9f7218/cli/src/monkeybot_cli/opensandbox_lifecycle.py :10 from urllib.parse import urlparse
  • net human-plus-machine-monkeybot-b9f7218/cli/src/monkeybot_cli/realtime/gateway_manager.py :8 import urllib.parse
  • net human-plus-machine-monkeybot-b9f7218/cli/src/monkeybot_cli/realtime/talk_ui.py :11 import urllib.parse
  • net (weak) human-plus-machine-monkeybot-b9f7218/cli/tests/test_chat_continue.py :8 import httpx
  • net (weak) human-plus-machine-monkeybot-b9f7218/cli/tests/test_chat_e2e.py :6 import socket
show 28 more
  • net (weak) human-plus-machine-monkeybot-b9f7218/cli/tests/test_chat_errors.py :10 import httpx
  • net (weak) human-plus-machine-monkeybot-b9f7218/cli/tests/test_chat_session.py :8 import httpx
  • net (weak) human-plus-machine-monkeybot-b9f7218/cli/tests/test_gateway_health.py :47 with patch("monkeybot_cli.gateway_health.httpx.get", return_value=_Resp()):
  • net human-plus-machine-monkeybot-b9f7218/evals/runner.py :13 import httpx
  • net human-plus-machine-monkeybot-b9f7218/evals/test_runner_sse.py :13 import httpx
  • net human-plus-machine-monkeybot-b9f7218/integrations/browser-mcp/src/browser_mcp/in_app_cdp.py :10 from urllib.parse import parse_qsl, urlencode, urlparse, urlunparse
  • net human-plus-machine-monkeybot-b9f7218/integrations/browser-mcp/src/browser_mcp/login.py :7 import urllib.error
  • net human-plus-machine-monkeybot-b9f7218/integrations/browser-mcp/src/browser_mcp/playbooks.py :17 from urllib.parse import urlparse
  • net (weak) human-plus-machine-monkeybot-b9f7218/integrations/browser-mcp/tests/integration/conftest.py :11 import socket
  • net (weak) human-plus-machine-monkeybot-b9f7218/integrations/browser-mcp/tests/integration/test_multi_tab.py :10 import socket
  • net (weak) human-plus-machine-monkeybot-b9f7218/integrations/browser-mcp/tests/test_in_app_cdp.py :15 from urllib.error import HTTPError
  • net human-plus-machine-monkeybot-b9f7218/src/monkeybot/core/context/secret_egress.py :28 import urllib.error
  • net human-plus-machine-monkeybot-b9f7218/src/monkeybot/core/mcp/mcp_client.py :189 """Lazily define :class:`httpx.Auth` subclass so importing this module stays light."""
  • net human-plus-machine-monkeybot-b9f7218/src/monkeybot/core/persistence/backends.py :13 from urllib.parse import parse_qs, unquote, urlparse
  • net human-plus-machine-monkeybot-b9f7218/src/monkeybot/gateway/sse/reload.py :13 from urllib.parse import urlparse
  • net human-plus-machine-monkeybot-b9f7218/src/monkeybot/providers/ollama.py :53 from urllib.parse import urlparse
  • net human-plus-machine-monkeybot-b9f7218/src/monkeybot/scheduler/http_invoker.py :5 import httpx
  • net human-plus-machine-monkeybot-b9f7218/src/monkeybot/web_search/backends/firecrawl.py :20 import httpx
  • net human-plus-machine-monkeybot-b9f7218/src/monkeybot/web_search/backends/tavily.py :20 import httpx
  • net (weak) human-plus-machine-monkeybot-b9f7218/tests/acceptance/test_observability_acceptance.py :13 from httpx import ASGITransport, AsyncClient
  • net (weak) human-plus-machine-monkeybot-b9f7218/tests/core/test_fs_isolation.py :514 [sys.executable, "-c", "import socket; socket.gethostbyname('localhost')"],
  • net (weak) human-plus-machine-monkeybot-b9f7218/tests/core/test_input_admission.py :9 from httpx import ASGITransport, AsyncClient
  • net (weak) human-plus-machine-monkeybot-b9f7218/tests/core/test_mcp_client.py :466 import httpx
  • net (weak) human-plus-machine-monkeybot-b9f7218/tests/core/test_secret_egress.py :8 from urllib.error import HTTPError
  • net (weak) human-plus-machine-monkeybot-b9f7218/tests/gateway/sse/test_attachments.py :8 from httpx import ASGITransport, AsyncClient
  • net (weak) human-plus-machine-monkeybot-b9f7218/tests/gateway/sse/test_config_reload.py :12 from httpx import ASGITransport, AsyncClient
  • net (weak) human-plus-machine-monkeybot-b9f7218/tests/gateway/sse/test_create_session_model.py :10 from httpx import ASGITransport, AsyncClient
  • net (weak) human-plus-machine-monkeybot-b9f7218/tests/gateway/sse/test_routes.py :3 JSON routes use ``httpx.AsyncClient`` + ``ASGITransport`` (fine for finite bodies).

8 more not shown — this panel samples each group; the count above is the real total.

secrets 20

  • secrets human-plus-machine-monkeybot-b9f7218/cli/src/monkeybot_cli/commands/doctor.py :444 adc_path = os.environ.get("GOOGLE_APPLICATION_CREDENTIALS", "")
  • secrets human-plus-machine-monkeybot-b9f7218/cli/src/monkeybot_cli/providers.py :138 if os.environ.get("GOOGLE_APPLICATION_CREDENTIALS", "").strip():
  • secrets human-plus-machine-monkeybot-b9f7218/cli/src/monkeybot_cli/scaffold_defaults/image-generator/generate_image.py :77 raw = os.environ.get("GOOGLE_APPLICATION_CREDENTIALS", "").strip()
  • secrets human-plus-machine-monkeybot-b9f7218/evals/scorer.py :117 api_key = (os.environ.get("NVIDIA_API_KEY") or "").strip()
  • secrets human-plus-machine-monkeybot-b9f7218/evals/test_judge.py :26 creds = os.environ.get("GOOGLE_APPLICATION_CREDENTIALS")
  • secrets (weak) human-plus-machine-monkeybot-b9f7218/examples/skills/image-generator/generate_image.py :77 raw = os.environ.get("GOOGLE_APPLICATION_CREDENTIALS", "").strip()
  • secrets human-plus-machine-monkeybot-b9f7218/src/monkeybot/core/config/settings.py :235 api_key = (os.getenv("GEMINI_API_KEY") or "").strip()
  • secrets human-plus-machine-monkeybot-b9f7218/src/monkeybot/core/knowledge/captions.py :77 key = (api_key if api_key is not None else os.environ.get("OPENAI_API_KEY", "")).strip()
  • secrets human-plus-machine-monkeybot-b9f7218/src/monkeybot/core/knowledge/embeddings/gemini.py :48 os.environ.get("GEMINI_API_KEY", "")
  • secrets human-plus-machine-monkeybot-b9f7218/src/monkeybot/core/knowledge/embeddings/nvidia.py :45 api_key if api_key is not None else os.environ.get("NVIDIA_API_KEY", "")
  • secrets human-plus-machine-monkeybot-b9f7218/src/monkeybot/core/tools/sandbox_executor.py :80 api_key = os.getenv("SANDBOX_API_KEY") or os.getenv("SANDBOX_AUTH_TOKEN") or None
  • secrets human-plus-machine-monkeybot-b9f7218/src/monkeybot/gateway/realtime/deps.py :99 api_key = os.environ.get("GEMINI_API_KEY", "")
show 8 more
  • secrets human-plus-machine-monkeybot-b9f7218/src/monkeybot/providers/claude.py :40 if not os.environ.get("ANTHROPIC_API_KEY"):
  • secrets human-plus-machine-monkeybot-b9f7218/src/monkeybot/providers/huggingface.py :67 token = os.environ.get("HF_TOKEN", "")
  • secrets human-plus-machine-monkeybot-b9f7218/src/monkeybot/providers/nvidia.py :61 api_key = os.environ.get("NVIDIA_API_KEY", "")
  • secrets human-plus-machine-monkeybot-b9f7218/src/monkeybot/providers/ollama.py :111 api_key = (os.environ.get("OLLAMA_API_KEY") or "").strip()
  • secrets human-plus-machine-monkeybot-b9f7218/src/monkeybot/providers/openai.py :58 if not os.environ.get("OPENAI_API_KEY"):
  • secrets human-plus-machine-monkeybot-b9f7218/src/monkeybot/providers/openrouter.py :61 api_key = os.environ.get("OPENROUTER_API_KEY", "")
  • secrets human-plus-machine-monkeybot-b9f7218/src/monkeybot/web_search/__init__.py :62 api_key = os.environ.get("TAVILY_API_KEY", "").strip()
  • secrets (weak) human-plus-machine-monkeybot-b9f7218/tests/skills/test_generate_image_script.py :208 assert os.environ["GOOGLE_APPLICATION_CREDENTIALS"] == str(creds_file.resolve())

database 8

  • db human-plus-machine-monkeybot-b9f7218/cli/src/monkeybot_cli/commands/validate.py :9 import sqlite3
  • db (weak) human-plus-machine-monkeybot-b9f7218/scripts/create_schema.py :8 import sqlite3
  • db human-plus-machine-monkeybot-b9f7218/src/monkeybot/core/persistence/postgres.py :12 import asyncpg
  • db human-plus-machine-monkeybot-b9f7218/src/monkeybot/observability/sqlite_exporter.py :15 import sqlite3
  • db (weak) human-plus-machine-monkeybot-b9f7218/tests/core/test_durable_runs.py :7 import sqlite3
  • db (weak) human-plus-machine-monkeybot-b9f7218/tests/core/test_goal_ledger.py :7 import sqlite3
  • db (weak) human-plus-machine-monkeybot-b9f7218/tests/core/test_storage_backends.py :94 import asyncpg # noqa: F401
  • db (weak) human-plus-machine-monkeybot-b9f7218/tests/observability/test_sqlite_exporter.py :6 import sqlite3

tool registrations 32

  • echo human-plus-machine-monkeybot-b9f7218/evals/smoke_agent/fixture_mcp_server.py :16
  • browser_act human-plus-machine-monkeybot-b9f7218/integrations/browser-mcp/src/browser_mcp/tools/batch.py :25
  • browser_screenshot human-plus-machine-monkeybot-b9f7218/integrations/browser-mcp/src/browser_mcp/tools/capture.py :10
  • browser_click_by_index human-plus-machine-monkeybot-b9f7218/integrations/browser-mcp/src/browser_mcp/tools/interact.py :13
  • browser_input_by_index human-plus-machine-monkeybot-b9f7218/integrations/browser-mcp/src/browser_mcp/tools/interact.py :42
  • browser_select_by_index human-plus-machine-monkeybot-b9f7218/integrations/browser-mcp/src/browser_mcp/tools/interact.py :86
  • browser_click human-plus-machine-monkeybot-b9f7218/integrations/browser-mcp/src/browser_mcp/tools/interact.py :112
  • browser_fill human-plus-machine-monkeybot-b9f7218/integrations/browser-mcp/src/browser_mcp/tools/interact.py :146
  • browser_press_key human-plus-machine-monkeybot-b9f7218/integrations/browser-mcp/src/browser_mcp/tools/interact.py :175
  • browser_scroll human-plus-machine-monkeybot-b9f7218/integrations/browser-mcp/src/browser_mcp/tools/interact.py :198
  • browser_click_text human-plus-machine-monkeybot-b9f7218/integrations/browser-mcp/src/browser_mcp/tools/interact.py :226
  • browser_upload human-plus-machine-monkeybot-b9f7218/integrations/browser-mcp/src/browser_mcp/tools/interact.py :269
show 20 more
  • browser_wait_for human-plus-machine-monkeybot-b9f7218/integrations/browser-mcp/src/browser_mcp/tools/interact.py :280
  • browser_wait_idle human-plus-machine-monkeybot-b9f7218/integrations/browser-mcp/src/browser_mcp/tools/interact.py :295
  • browser_goto human-plus-machine-monkeybot-b9f7218/integrations/browser-mcp/src/browser_mcp/tools/navigate.py :22
  • browser_list_playbooks human-plus-machine-monkeybot-b9f7218/integrations/browser-mcp/src/browser_mcp/tools/playbook.py :38
  • browser_read_playbook human-plus-machine-monkeybot-b9f7218/integrations/browser-mcp/src/browser_mcp/tools/playbook.py :54
  • browser_write_playbook human-plus-machine-monkeybot-b9f7218/integrations/browser-mcp/src/browser_mcp/tools/playbook.py :65
  • browser_run_playbook human-plus-machine-monkeybot-b9f7218/integrations/browser-mcp/src/browser_mcp/tools/playbook.py :76
  • browser_get_elements human-plus-machine-monkeybot-b9f7218/integrations/browser-mcp/src/browser_mcp/tools/read.py :11
  • browser_get_text human-plus-machine-monkeybot-b9f7218/integrations/browser-mcp/src/browser_mcp/tools/read.py :79
  • browser_js human-plus-machine-monkeybot-b9f7218/integrations/browser-mcp/src/browser_mcp/tools/read.py :115
  • browser_extract human-plus-machine-monkeybot-b9f7218/integrations/browser-mcp/src/browser_mcp/tools/read.py :126
  • browser_page_info human-plus-machine-monkeybot-b9f7218/integrations/browser-mcp/src/browser_mcp/tools/read.py :161
  • browser_tabs human-plus-machine-monkeybot-b9f7218/integrations/browser-mcp/src/browser_mcp/tools/tab_control.py :16
  • browser_switch_tab human-plus-machine-monkeybot-b9f7218/integrations/browser-mcp/src/browser_mcp/tools/tab_control.py :25
  • browser_open_tab human-plus-machine-monkeybot-b9f7218/integrations/browser-mcp/src/browser_mcp/tools/tab_control.py :63
  • browser_close_tab human-plus-machine-monkeybot-b9f7218/integrations/browser-mcp/src/browser_mcp/tools/tab_control.py :96
  • browser_read_tabs human-plus-machine-monkeybot-b9f7218/integrations/browser-mcp/src/browser_mcp/tools/tab_control.py :143
  • browser_login human-plus-machine-monkeybot-b9f7218/integrations/browser-mcp/src/browser_mcp/tools/tab_control.py :200
  • browser_passkey human-plus-machine-monkeybot-b9f7218/integrations/browser-mcp/src/browser_mcp/tools/tab_control.py :222
  • browser_stop human-plus-machine-monkeybot-b9f7218/integrations/browser-mcp/src/browser_mcp/tools/tab_control.py :243

declared dependencies 38

  • mcp@>=1.27.1,<2
  • fastapi@>=0.115.0
  • uvicorn@>=0.32.0
  • aiosqlite@>=0.20.0
  • pydantic@>=2.10.0
  • python-dotenv@>=1.0.0
  • pyyaml@>=6.0.2
  • httpx@>=0.27.0
  • python-ulid@>=2.0.0
  • google-genai@>=1.0.0
  • s@targets python_version 3.11.
  • mempalace@>=3.7.0,<4
show 26 more
  • google-auth@>=2.35.0
  • google-api-python-client@>=2.150.0
  • anthropic@>=0.40.0
  • boto3@>=1.34.0
  • openai@>=1.0
  • tiktoken@>=0.7.0
  • pypdf@>=6.14.2
  • opensandbox@>=0.1.7
  • croniter@>=2.0
  • asyncpg@>=0.29.0
  • google-cloud-firestore@>=2.16.0
  • google-cloud-storage@>=2.18.0
  • ddgs@>=7.0
  • deepeval@>=3.0.0
  • langfuse@>=3.0.0
  • websockets@>=14.0
  • monkeybot@*
  • typer@>=0.12.0
  • pyaudio@>=0.2.11
  • pynput@>=1.7.6
  • opentelemetry-api@>=1.28
  • opentelemetry-sdk@>=1.28
  • opentelemetry-exporter-otlp-proto-http@>=1.28
  • opentelemetry-instrumentation-fastapi@>=0.62b1
  • tree-sitter-language-pack@>=1.6
  • python-docx@>=1.1.0

clipboard 3

  • clipboard shell call human-plus-machine-monkeybot-b9f7218/src/monkeybot/computer/safety.py :166 _PBCOPY_BIN = "/usr/bin/pbcopy"
  • clipboard shell call human-plus-machine-monkeybot-b9f7218/tests/computer/test_computer_tools.py :167 assert calls == [(["/usr/bin/pbcopy"], "abc")]
  • clipboard shell call human-plus-machine-monkeybot-b9f7218/tests/computer/test_path_policy.py :372 assert captured["argv"] == ["/usr/bin/pbcopy"]

transport_posture 2

  • network-listening, binds all interfaces, no auth detected human-plus-machine-monkeybot-b9f7218/src/monkeybot/gateway/main.py :44 host="0.0.0.0",
  • network-listening, binds all interfaces, no auth detected human-plus-machine-monkeybot-b9f7218/src/monkeybot/gateway/realtime_main.py :45 host="0.0.0.0",