github JavaScript analyzed ab33c91

AgentPilotLab/overleaf-browser-bridge

github

AI-agent-first local MCP and Chrome Extension bridge for controlling free Overleaf projects from Codex, Claude, and MCP-capable agents without Premium Git sync.

maintainer
AgentPilotLab
license
NOASSERTION
first seen
2026-08-13
last seen
2026-08-31
releases · 30d
1
short id

Drift inferred · capture-to-capture

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

capabilities 45 tools
transport stdio · http counts 45 tools · 0 res · 0 prompts permission surface via README inference

tools

  • apply_patch_to_file
  • clear_project_alias
  • compile_and_read_log
  • execute_comment_action
  • execute_file_operation
  • execute_mirror_sync_plan
  • export_artifact_inventory
  • export_compile_log
  • export_current_file
  • export_visible_artifact
  • find_in_project_mirror
  • get_current_project
  • get_editor_diagnostics
  • get_recent_patch_log
  • get_section_content
  • get_sections
  • get_selection
  • health_check
  • insert_text
  • inspect_download_workflow
  • inspect_file_operation_ui
  • inspect_upload_workflow
  • inspect_visible_comments
  • list_open_project_files
  • list_project_aliases
  • list_target_locks
  • list_visible_artifacts
  • lock_target_project
  • open_file
  • paper_context
  • prepare_comment_action
  • prepare_file_operation
  • prepare_mirror_sync_plan
  • preview_mirror_diff
  • read_current_file
  • read_file
  • read_file_range
  • read_file_since_hash
  • replace_file
  • replace_section
  • replace_selection
  • restore_from_snapshot
  • set_project_alias
  • sync_project_snapshot
  • unlock_target_project
skills & danger signals github-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit ab33c91 · analyzer v33 · 1d ago

skills & prompt files 1

code evidence vv0.5.29 · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

code files: 39

filesystem 32

  • fs (weak) AgentPilotLab-overleaf-browser-bridge-ab33c91/scripts/call-tool.js :4 const fs = require("fs");
  • fs (weak) AgentPilotLab-overleaf-browser-bridge-ab33c91/scripts/doctor.js :4 const fs = require("fs");
  • fs (weak) AgentPilotLab-overleaf-browser-bridge-ab33c91/scripts/first-run-check.js :5 const fs = require("fs");
  • fs (weak) AgentPilotLab-overleaf-browser-bridge-ab33c91/scripts/generate-mcp-config.js :4 const fs = require("fs");
  • fs (weak) AgentPilotLab-overleaf-browser-bridge-ab33c91/scripts/live-artifact-inventory-test.js :4 const fs = require("fs");
  • fs (weak) AgentPilotLab-overleaf-browser-bridge-ab33c91/scripts/live-comments-inspection-test.js :4 const fs = require("fs");
  • fs (weak) AgentPilotLab-overleaf-browser-bridge-ab33c91/scripts/live-context-budget-test.js :4 const fs = require("fs");
  • fs (weak) AgentPilotLab-overleaf-browser-bridge-ab33c91/scripts/live-download-workflow-test.js :4 const fs = require("fs");
  • fs (weak) AgentPilotLab-overleaf-browser-bridge-ab33c91/scripts/live-export-test.js :4 const fs = require("fs");
  • fs (weak) AgentPilotLab-overleaf-browser-bridge-ab33c91/scripts/live-file-operation-ui-test.js :4 const fs = require("fs");
  • fs (weak) AgentPilotLab-overleaf-browser-bridge-ab33c91/scripts/live-mirror-test.js :4 const fs = require("fs");
  • fs (weak) AgentPilotLab-overleaf-browser-bridge-ab33c91/scripts/live-noop-release-test.js :4 const fs = require("fs");
  • fs (weak) AgentPilotLab-overleaf-browser-bridge-ab33c91/scripts/live-prepare-comment-action-test.js :4 const fs = require("fs");
  • fs (weak) AgentPilotLab-overleaf-browser-bridge-ab33c91/scripts/live-prepare-file-operation-test.js :4 const fs = require("fs");
  • fs (weak) AgentPilotLab-overleaf-browser-bridge-ab33c91/scripts/live-safe-suite.js :5 const fs = require("fs");
  • fs (weak) AgentPilotLab-overleaf-browser-bridge-ab33c91/scripts/live-section-noop-test.js :4 const fs = require("fs");
  • fs (weak) AgentPilotLab-overleaf-browser-bridge-ab33c91/scripts/live-smoke-test.js :4 const fs = require("fs");
  • fs (weak) AgentPilotLab-overleaf-browser-bridge-ab33c91/scripts/live-target-lock-test.js :4 const fs = require("fs");
  • fs (weak) AgentPilotLab-overleaf-browser-bridge-ab33c91/scripts/live-upload-workflow-test.js :4 const fs = require("fs");
  • fs (weak) AgentPilotLab-overleaf-browser-bridge-ab33c91/scripts/live-visible-artifact-export-test.js :4 const fs = require("fs");
  • fs (weak) AgentPilotLab-overleaf-browser-bridge-ab33c91/scripts/live-write-restore-test.js :4 const fs = require("fs");
  • fs (weak) AgentPilotLab-overleaf-browser-bridge-ab33c91/scripts/mirror-sync-workflow.js :4 const fs = require("fs");
  • fs (weak) AgentPilotLab-overleaf-browser-bridge-ab33c91/scripts/package-npm-check.js :5 const fs = require("fs");
  • fs (weak) AgentPilotLab-overleaf-browser-bridge-ab33c91/scripts/post-install-live-check.js :4 const fs = require("fs");
  • fs (weak) AgentPilotLab-overleaf-browser-bridge-ab33c91/scripts/prepare-extension-build.js :4 const fs = require("fs");
  • fs (weak) AgentPilotLab-overleaf-browser-bridge-ab33c91/scripts/prepare-release-assets.js :6 const fs = require("fs");
  • fs (weak) AgentPilotLab-overleaf-browser-bridge-ab33c91/scripts/release-candidate-check.js :4 const fs = require("fs");
  • fs (weak) AgentPilotLab-overleaf-browser-bridge-ab33c91/scripts/release-decision-report.js :4 const fs = require("fs");
  • fs (weak) AgentPilotLab-overleaf-browser-bridge-ab33c91/scripts/release-preflight.js :5 const fs = require("fs");
  • fs (weak) AgentPilotLab-overleaf-browser-bridge-ab33c91/scripts/repository-metadata-check.js :4 const fs = require("fs");
  • fs AgentPilotLab-overleaf-browser-bridge-ab33c91/server/overleaf-bridge-mcp.js :5 const fs = require("fs");
  • fs (weak) AgentPilotLab-overleaf-browser-bridge-ab33c91/tests/server.test.js :5 const fs = require("fs");

shell / exec 8

  • shell AgentPilotLab-overleaf-browser-bridge-ab33c91/bin/overleaf-browser-bridge.js :5 const { spawnSync } = require("child_process");
  • shell (weak) AgentPilotLab-overleaf-browser-bridge-ab33c91/scripts/first-run-check.js :4 const { execFileSync } = require("child_process");
  • shell (weak) AgentPilotLab-overleaf-browser-bridge-ab33c91/scripts/live-safe-suite.js :4 const { execFileSync } = require("child_process");
  • shell (weak) AgentPilotLab-overleaf-browser-bridge-ab33c91/scripts/package-npm-check.js :4 const { execFileSync } = require("child_process");
  • shell (weak) AgentPilotLab-overleaf-browser-bridge-ab33c91/scripts/prepare-release-assets.js :4 const { execFileSync } = require("child_process");
  • shell (weak) AgentPilotLab-overleaf-browser-bridge-ab33c91/scripts/release-candidate-check.js :198 const { execFileSync } = require("child_process");
  • shell (weak) AgentPilotLab-overleaf-browser-bridge-ab33c91/scripts/release-preflight.js :4 const { execFileSync } = require("child_process");
  • shell (weak) AgentPilotLab-overleaf-browser-bridge-ab33c91/tests/server.test.js :4 const { execFile, execFileSync } = require("child_process");

network 25

  • net AgentPilotLab-overleaf-browser-bridge-ab33c91/extension/background.js :25 const response = await fetch(target.toString(), {
  • net AgentPilotLab-overleaf-browser-bridge-ab33c91/extension/contentScript.js :267 const response = await fetch(absoluteUrl.toString(), {
  • net AgentPilotLab-overleaf-browser-bridge-ab33c91/extension/popup.js :36 const response = await fetch(`${normalizeUrl(serverUrl.value)}/health`);
  • net (weak) AgentPilotLab-overleaf-browser-bridge-ab33c91/scripts/call-tool.js :18 const response = await fetch(`${info.serverUrl}/tools/call`, {
  • net (weak) AgentPilotLab-overleaf-browser-bridge-ab33c91/scripts/first-run-check.js :156 const response = await fetch(`${info.serverUrl}/health`, {
  • net (weak) AgentPilotLab-overleaf-browser-bridge-ab33c91/scripts/live-artifact-inventory-test.js :51 const response = await fetch(`${info.serverUrl}/tools/call`, {
  • net (weak) AgentPilotLab-overleaf-browser-bridge-ab33c91/scripts/live-comments-inspection-test.js :66 const response = await fetch(`${info.serverUrl}/tools/call`, {
  • net (weak) AgentPilotLab-overleaf-browser-bridge-ab33c91/scripts/live-context-budget-test.js :89 const response = await fetch(`${info.serverUrl}/tools/call`, {
  • net (weak) AgentPilotLab-overleaf-browser-bridge-ab33c91/scripts/live-download-workflow-test.js :71 const response = await fetch(`${info.serverUrl}/tools/call`, {
  • net (weak) AgentPilotLab-overleaf-browser-bridge-ab33c91/scripts/live-export-test.js :58 const response = await fetch(`${info.serverUrl}/tools/call`, {
  • net (weak) AgentPilotLab-overleaf-browser-bridge-ab33c91/scripts/live-file-operation-ui-test.js :42 const response = await fetch(`${info.serverUrl}/tools/call`, {
  • net (weak) AgentPilotLab-overleaf-browser-bridge-ab33c91/scripts/live-mirror-test.js :76 const response = await fetch(`${info.serverUrl}/tools/call`, {
  • net (weak) AgentPilotLab-overleaf-browser-bridge-ab33c91/scripts/live-noop-release-test.js :136 const response = await fetch(`${info.serverUrl}/tools/call`, {
  • net (weak) AgentPilotLab-overleaf-browser-bridge-ab33c91/scripts/live-prepare-comment-action-test.js :103 const response = await fetch(`${info.serverUrl}/tools/call`, {
  • net (weak) AgentPilotLab-overleaf-browser-bridge-ab33c91/scripts/live-prepare-file-operation-test.js :53 const response = await fetch(`${info.serverUrl}/tools/call`, {
  • net (weak) AgentPilotLab-overleaf-browser-bridge-ab33c91/scripts/live-section-noop-test.js :81 const response = await fetch(`${info.serverUrl}/tools/call`, {
  • net (weak) AgentPilotLab-overleaf-browser-bridge-ab33c91/scripts/live-smoke-test.js :44 const response = await fetch(`${info.serverUrl}/tools/call`, {
  • net (weak) AgentPilotLab-overleaf-browser-bridge-ab33c91/scripts/live-target-lock-test.js :68 const response = await fetch(`${info.serverUrl}/tools/call`, {
  • net (weak) AgentPilotLab-overleaf-browser-bridge-ab33c91/scripts/live-upload-workflow-test.js :65 const response = await fetch(`${info.serverUrl}/tools/call`, {
  • net (weak) AgentPilotLab-overleaf-browser-bridge-ab33c91/scripts/live-visible-artifact-export-test.js :90 const response = await fetch(`${info.serverUrl}/tools/call`, {
  • net (weak) AgentPilotLab-overleaf-browser-bridge-ab33c91/scripts/live-write-restore-test.js :140 const response = await fetch(`${info.serverUrl}/tools/call`, {
  • net (weak) AgentPilotLab-overleaf-browser-bridge-ab33c91/scripts/mirror-sync-workflow.js :165 const response = await fetch(`${info.serverUrl}/tools/call`, {
  • net (weak) AgentPilotLab-overleaf-browser-bridge-ab33c91/scripts/post-install-live-check.js :136 const response = await fetch(`${info.serverUrl}/tools/call`, {
  • net AgentPilotLab-overleaf-browser-bridge-ab33c91/server/overleaf-bridge-mcp.js :6 const http = require("http");
  • net (weak) AgentPilotLab-overleaf-browser-bridge-ab33c91/tests/server.test.js :6 const http = require("http");

secrets 1

  • secrets AgentPilotLab-overleaf-browser-bridge-ab33c91/server/overleaf-bridge-mcp.js :644 const token = String(options.token || process.env.OVERLEAF_BRIDGE_TOKEN || ensureRuntimeToken());