Universal Agent Harness
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
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
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
- skill human-plus-machine-monkeybot-b9f7218/cli/skills/monkeybot/SKILL.md
- agent-rules human-plus-machine-monkeybot-b9f7218/cli/src/monkeybot_cli/scaffold_defaults/AGENT.md
- skill human-plus-machine-monkeybot-b9f7218/cli/src/monkeybot_cli/scaffold_defaults/browser/SKILL.md
- skill human-plus-machine-monkeybot-b9f7218/cli/src/monkeybot_cli/scaffold_defaults/image-generator/SKILL.md
- skill human-plus-machine-monkeybot-b9f7218/cli/src/monkeybot_cli/scaffold_defaults/loop/SKILL.md
- agent-rules human-plus-machine-monkeybot-b9f7218/evals/smoke_agent/monkeybot_config/AGENT.md
- skill human-plus-machine-monkeybot-b9f7218/evals/smoke_agent/skills/browser/SKILL.md
- skill human-plus-machine-monkeybot-b9f7218/examples/skills/browser/SKILL.md
- skill human-plus-machine-monkeybot-b9f7218/examples/skills/diagnostics/SKILL.md
- skill human-plus-machine-monkeybot-b9f7218/examples/skills/image-generator/SKILL.md
danger signals5
- dynamic code execution __import__() human-plus-machine-monkeybot-b9f7218/cli/src/monkeybot_cli/runtime_python.py :541
mod = __import__(mod_name) - dynamic code execution __import__ sink human-plus-machine-monkeybot-b9f7218/cli/tests/test_cli.py :21
env={**__import__("os").environ, "PYTHONPATH": str(CLI_ROOT / "src")}, - dynamic code execution __import__ sink human-plus-machine-monkeybot-b9f7218/tests/core/test_fs_isolation.py :462
env={**__import__("os").environ, "HOME": str(home)}, - dynamic code execution __import__ sink human-plus-machine-monkeybot-b9f7218/tests/core/test_knowledge_config.py :93
assert "KNOWLEDGE_ENABLED" not in __import__("os").environ - dynamic code execution __import__ sink human-plus-machine-monkeybot-b9f7218/tests/core/test_knowledge_single_writer.py :73
sentinel.write_text(str(__import__("os").getpid() + 1), encoding="utf-8")
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",