AI Slop Code RIsk Monitor

stickerdaniel/linkedin-mcp-server

Open-source MCP server for LinkedIn. Give Claude and any MCP-compatible AI agent access to profiles, companies, jobs, and messages.

29.1 Elevated pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for stickerdaniel/linkedin-mcp-server, a Python project with 3,821 GitHub stars. SynthScan examined 259,413 lines of code across 388 source files, recording 7050 pattern matches distributed across 21 syntactic categories. The legacy adjusted pattern signal is 29.1 (Elevated pattern signal); it is not an authorship estimate.

Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.

29.1
Adjusted Signal
29.1
Raw Pattern Score
100%
Time Factor
2026-10-11
Last Push
3.8K
Stars
Python
Language
259.4K
Lines of Code
388
Files
7.0K
Pattern Hits
2026-10-12
Scan Date
0.87
HC Hit Rate

Risk Review · v3

Use each vector to guide manual verification of the underlying findings.

Cognitive Ownership Risk 60.8/100 · HIGH

Can maintainers explain intent, assumptions, and trade-offs? 5911 finding(s).

Hallucinated Dependency & Supply Chain Risk 28.3/100 · MEDIUM

Are imports declared and package/API names verified? 566 finding(s).

Agent Over-Engineering Ratio 62.9/100 · HIGH

Are wrappers, guards, and repeated structures necessary? 5979 finding(s).

PR Review Velocity Impact 83.3/100 · CRITICAL

Which changes need focused human review? 7050 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.

Severity Breakdown

Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.

CRITICAL 54HIGH 285MEDIUM 165LOW 6546

Directory Score Breakdown

This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.

Pattern Findings

The scanner identified 7050 distinct pattern matches across 21 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.

Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.

Hyper-Verbose Identifiers5395 hits · 4166 pts
SeverityFileLineSnippetContext
LOWlinkedin_mcp_server/bootstrap.py395def reset_bootstrap_for_testing() -> None:CODE
LOWlinkedin_mcp_server/bootstrap.py442def configure_browser_environment() -> Path:CODE
LOWlinkedin_mcp_server/bootstrap.py465def _patchright_registry_entries() -> tuple[Mapping[str, Any], ...] | None:CODE
LOWlinkedin_mcp_server/bootstrap.py490def _patchright_install_targets() -> dict[str, str] | None:CODE
LOWlinkedin_mcp_server/bootstrap.py515def _installer_auxiliary_names(browser_selected: bool) -> tuple[str, ...]:CODE
LOWlinkedin_mcp_server/bootstrap.py654def _report_retained_browser_revisions() -> None:CODE
LOWlinkedin_mcp_server/bootstrap.py789def _schedule_retained_browser_revision_report() -> None:CODE
LOWlinkedin_mcp_server/bootstrap.py803async def _report_retained_browser_revisions_safely() -> None:CODE
LOWlinkedin_mcp_server/bootstrap.py830async def _report_retained_browser_revisions_if_ready() -> None:CODE
LOWlinkedin_mcp_server/bootstrap.py851def report_retained_browser_revisions_if_ready() -> None:CODE
LOWlinkedin_mcp_server/bootstrap.py867async def stop_background_browser_setup() -> None:CODE
LOWlinkedin_mcp_server/bootstrap.py898async def start_background_browser_setup_if_needed() -> None:CODE
LOWlinkedin_mcp_server/bootstrap.py1005def browser_setup_in_progress() -> bool:CODE
LOWlinkedin_mcp_server/bootstrap.py1011def browser_setup_failure_pending() -> bool:CODE
LOWlinkedin_mcp_server/bootstrap.py1034def _discard_browser_install_metadata() -> None:CODE
LOWlinkedin_mcp_server/bootstrap.py1039def _mark_browser_setup_invalid() -> None:CODE
LOWlinkedin_mcp_server/bootstrap.py1061def _owned_browser_setup_ready() -> bool:CODE
LOWlinkedin_mcp_server/bootstrap.py1113def _mark_background_setup_timed_out(reason: str) -> None:CODE
LOWlinkedin_mcp_server/bootstrap.py1118async def _run_background_browser_setup(deadline_at: float | None = None) -> None:CODE
LOWlinkedin_mcp_server/bootstrap.py1129 def record_installer_activity() -> None:CODE
LOWlinkedin_mcp_server/bootstrap.py1172def _start_browser_setup_task_locked(deadline_at: float) -> None:CODE
LOWlinkedin_mcp_server/bootstrap.py1231def _capture_windows_process_wait(CODE
LOWlinkedin_mcp_server/bootstrap.py1281def _windows_wait_unregistered(future: asyncio.Future[Any]) -> bool:CODE
LOWlinkedin_mcp_server/bootstrap.py1294async def _prove_windows_wait_unregistered(CODE
LOWlinkedin_mcp_server/bootstrap.py1351async def _wait_for_direct_process_exit(proc: _InstallerProcess) -> int:CODE
LOWlinkedin_mcp_server/bootstrap.py1358async def _wait_for_direct_process_exit_within(CODE
LOWlinkedin_mcp_server/bootstrap.py1371async def _cleanup_assigned_windows_job_once(CODE
LOWlinkedin_mcp_server/bootstrap.py1411def _assigned_windows_cleanup(CODE
LOWlinkedin_mcp_server/bootstrap.py1444def _installer_stop_remaining(deadline: float) -> float:CODE
LOWlinkedin_mcp_server/bootstrap.py1638def _installer_supervisor_command(worker_target: list[str]) -> list[str]:CODE
LOWlinkedin_mcp_server/bootstrap.py1691async def _start_installer_supervisor(CODE
LOWlinkedin_mcp_server/bootstrap.py1813def _installer_extraction_paths(CODE
LOWlinkedin_mcp_server/bootstrap.py1850def _refuse_unmeasurable_scan(error: OSError) -> None:CODE
LOWlinkedin_mcp_server/bootstrap.py1863def _installer_download_snapshot(CODE
LOWlinkedin_mcp_server/bootstrap.py1934def _configured_browsers_path(environment: Mapping[str, str]) -> Path:CODE
LOWlinkedin_mcp_server/bootstrap.py1939def _refuse_oversized_install(CODE
LOWlinkedin_mcp_server/bootstrap.py1962async def _watch_installer_activity(CODE
LOWlinkedin_mcp_server/bootstrap.py2006def _configured_installer_temp_dir() -> str | None:CODE
LOWlinkedin_mcp_server/bootstrap.py2015def _installer_temporary_parent() -> Path:CODE
LOWlinkedin_mcp_server/bootstrap.py2076def _create_installer_temporary_root() -> _InstallerTemporaryRoot:CODE
LOWlinkedin_mcp_server/bootstrap.py2174def _close_installer_temporary_root_pin(CODE
LOWlinkedin_mcp_server/bootstrap.py2190def _remove_installer_temporary_root(temporary_root: _InstallerTemporaryRoot) -> None:CODE
LOWlinkedin_mcp_server/bootstrap.py2279def _await_installer_temporary_root_cleanups() -> None:CODE
LOWlinkedin_mcp_server/bootstrap.py2300def _start_installer_temporary_root_cleanup(CODE
LOWlinkedin_mcp_server/bootstrap.py2329def _clean_installer_temporary_root(temporary_root: _InstallerTemporaryRoot) -> None:CODE
LOWlinkedin_mcp_server/bootstrap.py2338def _installer_bound_breached(activity: asyncio.Task[None]) -> bool:CODE
LOWlinkedin_mcp_server/bootstrap.py2374async def _install_under_supervision(CODE
LOWlinkedin_mcp_server/bootstrap.py2701def _log_handlers_follow_the_live_region(CODE
LOWlinkedin_mcp_server/bootstrap.py2772def _print_whatever_the_stream_takes(CODE
LOWlinkedin_mcp_server/bootstrap.py3176def _configured_download_hosts() -> tuple[str, ...]:CODE
LOWlinkedin_mcp_server/bootstrap.py3764async def _ensure_browser_installed(CODE
LOWlinkedin_mcp_server/bootstrap.py3848async def _refresh_background_task_state() -> None:CODE
LOWlinkedin_mcp_server/bootstrap.py3901def _consume_background_setup_failure() -> str | None:CODE
LOWlinkedin_mcp_server/bootstrap.py3922async def ensure_tool_ready_or_raise(CODE
LOWlinkedin_mcp_server/bootstrap.py3994def _raise_if_docker_auth_missing() -> None:CODE
LOWlinkedin_mcp_server/bootstrap.py4097async def _announce_auto_import_once(ctx: Context | None) -> None:CODE
LOWlinkedin_mcp_server/bootstrap.py4486async def invalidate_auth_and_trigger_relogin(CODE
LOWlinkedin_mcp_server/bootstrap.py4656def _force_move_auth_state_aside(CODE
LOWlinkedin_mcp_server/bootstrap.py4663def _move_invalid_auth_state_aside(CODE
LOWlinkedin_mcp_server/process_protocol.py33def read_authenticated_status(CODE
5335 more matches not shown…
Cross-Language Confusion185 hits · 875 pts
SeverityFileLineSnippetContext
HIGHlinkedin_mcp_server/browser_import/extract.py246 Layout: ``b'v10' || nonce(12) || ciphertext || tag(16)``. Store version >= 24STRING
HIGH⚡linkedin_mcp_server/tools/person.py32 ``network`` is published as ``anyOf: [array, null]``, which is a correctSTRING
HIGHlinkedin_mcp_server/core/auth.py55 picker: document.querySelector(picker) !== null,CODE
HIGHlinkedin_mcp_server/core/utils.py49 return key ? key[1] : null;CODE
HIGHlinkedin_mcp_server/core/utils.py73 while (node && node !== document.body) {CODE
HIGHlinkedin_mcp_server/core/utils.py78 found.push(node);CODE
HIGHlinkedin_mcp_server/core/utils.py109 let picked = null;CODE
HIGHlinkedin_mcp_server/core/utils.py111 if (!picked || node.contains(picked)) picked = node;CODE
HIGH⚡linkedin_mcp_server/core/utils.py143 let picked = null;CODE
HIGH⚡linkedin_mcp_server/core/utils.py145 if (!picked || node.contains(picked)) picked = node;CODE
HIGH⚡linkedin_mcp_server/core/utils.py151 const rail = kept && tied.includes(kept) ? kept : picked;CODE
HIGHlinkedin_mcp_server/core/utils.py250_NEW_HOLDER_JS = "() => ({rail: null})"CODE
HIGHlinkedin_mcp_server/daemon/startup.py544 os.dup2(null, 0)CODE
HIGHlinkedin_mcp_server/daemon/startup.py546 os.close(null)CODE
HIGH⚡linkedin_mcp_server/linkedin/message_sender.py35 const visibility = element && getComputedStyle(element).visibility;CODE
HIGH⚡linkedin_mcp_server/linkedin/message_sender.py40 (element.offsetWidth || element.offsetHeight || element.getClientRects().length)CODE
HIGH⚡linkedin_mcp_server/linkedin/message_sender.py158 const visibility = element && getComputedStyle(element).visibility;CODE
HIGH⚡linkedin_mcp_server/linkedin/message_sender.py163 (element.offsetWidth || element.offsetHeight || element.getClientRects().length)CODE
HIGH⚡linkedin_mcp_server/linkedin/message_sender.py170 return /^[A-Za-z0-9_-]+$/.test(identifier) ? identifier : null;CODE
HIGH⚡linkedin_mcp_server/linkedin/message_sender.py174 return null;CODE
HIGH⚡linkedin_mcp_server/linkedin/message_sender.py184 (url.port && url.port !== '443') ||CODE
HIGH⚡linkedin_mcp_server/linkedin/message_sender.py187 return null;CODE
HIGH⚡linkedin_mcp_server/linkedin/message_sender.py190 return match ? `/in/${match[1]}/` : null;CODE
HIGH⚡linkedin_mcp_server/linkedin/message_sender.py192 return null;CODE
HIGH⚡linkedin_mcp_server/linkedin/message_sender.py204 (url.port && url.port !== '443') ||CODE
HIGH⚡linkedin_mcp_server/linkedin/message_sender.py211 return null;CODE
HIGH⚡linkedin_mcp_server/linkedin/message_sender.py219 : null;CODE
HIGH⚡linkedin_mcp_server/linkedin/message_sender.py221 return null;CODE
HIGH⚡linkedin_mcp_server/linkedin/message_sender.py426 return null;CODE
HIGH⚡linkedin_mcp_server/linkedin/message_sender.py434 return null;CODE
HIGH⚡linkedin_mcp_server/linkedin/message_sender.py444 ownedMessage: null,CODE
HIGH⚡linkedin_mcp_server/linkedin/message_sender.py520 if (state.rendered !== null) {CODE
HIGH⚡linkedin_mcp_server/linkedin/message_sender.py525 if (!requireVisible) return body !== null;CODE
HIGH⚡linkedin_mcp_server/linkedin/message_sender.py526 return body !== null && body.innerText === state.rendered;CODE
HIGH⚡linkedin_mcp_server/linkedin/message_sender.py529 element => !requireVisible || visible(element)CODE
HIGH⚡linkedin_mcp_server/linkedin/message_sender.py536 other => other !== element && element.contains(other)CODE
HIGH⚡linkedin_mcp_server/linkedin/message_sender.py670 : null;CODE
HIGH⚡linkedin_mcp_server/linkedin/message_sender.py675 return rendered !== null && body !== null && body.innerText === rendered;CODE
HIGH⚡linkedin_mcp_server/linkedin/message_sender.py683 other => other !== element && element.contains(other)CODE
HIGH⚡linkedin_mcp_server/linkedin/message_sender.py829 if (candidates.length === 1 && admittedTransition(markers[0], scope)) {CODE
HIGH⚡linkedin_mcp_server/linkedin/message_sender.py836 return confirmed ? {path: window.location.pathname} : null;CODE
HIGH⚡linkedin_mcp_server/linkedin/message_sender.py845 for (const element of (state?.scope || arg.owner)?.querySelectorAll(CODE
HIGH⚡linkedin_mcp_server/linkedin/message_sender.py926 return state.editor.isConnected && document.activeElement === state.editor;CODE
HIGH⚡linkedin_mcp_server/linkedin/message_sender.py932 const visibility = element && getComputedStyle(element).visibility;CODE
HIGH⚡linkedin_mcp_server/linkedin/message_sender.py937 (element.offsetWidth || element.offsetHeight || element.getClientRects().length)CODE
HIGH⚡linkedin_mcp_server/linkedin/message_sender.py944 return /^[A-Za-z0-9_-]+$/.test(identifier) ? identifier : null;CODE
HIGH⚡linkedin_mcp_server/linkedin/message_sender.py948 return null;CODE
HIGH⚡linkedin_mcp_server/linkedin/message_sender.py958 (url.port && url.port !== '443') ||CODE
HIGH⚡linkedin_mcp_server/linkedin/message_sender.py961 return null;CODE
HIGH⚡linkedin_mcp_server/linkedin/message_sender.py964 return match ? `/in/${match[1]}/` : null;CODE
HIGH⚡linkedin_mcp_server/linkedin/message_sender.py966 return null;CODE
HIGH⚡linkedin_mcp_server/linkedin/message_sender.py978 (url.port && url.port !== '443') ||CODE
HIGH⚡linkedin_mcp_server/linkedin/message_sender.py985 return null;CODE
HIGH⚡linkedin_mcp_server/linkedin/message_sender.py993 : null;CODE
HIGH⚡linkedin_mcp_server/linkedin/message_sender.py995 return null;CODE
HIGH⚡linkedin_mcp_server/linkedin/message_sender.py1003 scopes.push(ancestor);CODE
HIGHlinkedin_mcp_server/linkedin/message_sender.py60 (url.port && url.port !== '443') ||CODE
HIGHlinkedin_mcp_server/linkedin/message_sender.py76 return /^[A-Za-z0-9_-]+$/.test(identifier) ? identifier : null;CODE
HIGHlinkedin_mcp_server/linkedin/message_sender.py79 normalized.every(item => item !== null && item === normalized[0]);CODE
HIGHlinkedin_mcp_server/linkedin/message_sender.py108 (composeAnchors.length === 1 && visibleComposeAnchors.length !== 1)CODE
125 more matches not shown…
Hallucination Indicators54 hits · 570 pts
SeverityFileLineSnippetContext
CRITICALlinkedin_mcp_server/bootstrap.py3879 from linkedin_mcp_server.core.exceptions import AccountRestrictedErrorCODE
CRITICALlinkedin_mcp_server/bootstrap.py3895 from linkedin_mcp_server.core.exceptions import AccountRestrictedErrorCODE
CRITICALlinkedin_mcp_server/bootstrap.py4394 from linkedin_mcp_server.core.exceptions import AccountRestrictedErrorCODE
CRITICALlinkedin_mcp_server/dependencies.py18from linkedin_mcp_server.core.exceptions import AuthenticationError, NetworkErrorCODE
CRITICALlinkedin_mcp_server/tools/post.py19from linkedin_mcp_server.core.exceptions import AuthenticationErrorCODE
CRITICAL⚡linkedin_mcp_server/tools/person.py18from linkedin_mcp_server.core.exceptions import AuthenticationErrorCODE
CRITICALlinkedin_mcp_server/tools/company.py16from linkedin_mcp_server.core.exceptions import AuthenticationErrorCODE
CRITICALlinkedin_mcp_server/tools/job.py15from linkedin_mcp_server.core.exceptions import AuthenticationErrorCODE
CRITICALlinkedin_mcp_server/tools/feed.py18from linkedin_mcp_server.core.exceptions import AuthenticationErrorCODE
CRITICALlinkedin_mcp_server/daemon/auth_repair.py53from linkedin_mcp_server.core.exceptions import AccountRestrictedErrorCODE
CRITICAL⚡linkedin_mcp_server/linkedin/message_sender.py19from linkedin_mcp_server.core.exceptions import LinkedInOperationErrorCODE
CRITICALlinkedin_mcp_server/linkedin/person.py13from linkedin_mcp_server.core.exceptions import LinkedInOperationErrorCODE
CRITICALlinkedin_mcp_server/linkedin/company.py10from linkedin_mcp_server.core.exceptions import LinkedInOperationErrorCODE
CRITICALlinkedin_mcp_server/linkedin/connection_actions.py40from linkedin_mcp_server.core.exceptions import OffLinkedInLandingErrorCODE
CRITICALlinkedin_mcp_server/linkedin/job_pages.py20from linkedin_mcp_server.core.exceptions import LinkedInOperationErrorCODE
CRITICALlinkedin_mcp_server/linkedin/identifiers.py48from linkedin_mcp_server.core.exceptions import InvalidReferenceErrorCODE
CRITICALlinkedin_mcp_server/linkedin/feed.py14from linkedin_mcp_server.core.exceptions import LinkedInOperationErrorCODE
CRITICALlinkedin_mcp_server/linkedin/jobs.py13from linkedin_mcp_server.core.exceptions import LinkedInOperationErrorCODE
CRITICALlinkedin_mcp_server/linkedin/content.py10from linkedin_mcp_server.core.exceptions import OffLinkedInLandingErrorCODE
CRITICALlinkedin_mcp_server/linkedin/navigation.py21from linkedin_mcp_server.core.exceptions import AuthenticationErrorCODE
CRITICALtests/test_action_signals_dom.py42from linkedin_mcp_server.core.exceptions import OffLinkedInLandingErrorCODE
CRITICALtests/test_core_browser.py16from linkedin_mcp_server.core.exceptions import NetworkErrorCODE
CRITICALtests/test_cli_main.py14from linkedin_mcp_server.core.exceptions import AccountRestrictedErrorCODE
CRITICAL⚡tests/test_profile_lease_integration.py83 from linkedin_mcp_server.core.exceptions import AuthenticationErrorCODE
CRITICALtests/test_proxy_errors.py12from linkedin_mcp_server.core.exceptions import NetworkError, ProxyConnectionErrorCODE
CRITICALtests/test_daemon_auth.py30from linkedin_mcp_server.core.exceptions import AccountRestrictedErrorCODE
CRITICALtests/test_bootstrap.py49from linkedin_mcp_server.core.exceptions import AccountRestrictedError, NetworkErrorCODE
CRITICALtests/test_bootstrap.py9629 from linkedin_mcp_server.core.exceptions import ProxyConnectionErrorCODE
CRITICALtests/test_bootstrap.py9662 from linkedin_mcp_server.core.exceptions import OffLinkedInLandingErrorCODE
CRITICALtests/test_core_utils.py7from linkedin_mcp_server.core.exceptions import RateLimitErrorCODE
CRITICALtests/test_invite_dialog_dom.py16from linkedin_mcp_server.core.exceptions import OffLinkedInLandingErrorCODE
CRITICALtests/test_tools.py316 from linkedin_mcp_server.core.exceptions import OffLinkedInLandingErrorCODE
CRITICALtests/test_tools.py521 from linkedin_mcp_server.core.exceptions import AuthenticationErrorCODE
CRITICALtests/test_tools.py813 from linkedin_mcp_server.core.exceptions import AuthenticationErrorCODE
CRITICALtests/test_tools.py873 from linkedin_mcp_server.core.exceptions import AccountRestrictedErrorCODE
CRITICALtests/test_tools.py1592 from linkedin_mcp_server.core.exceptions import LinkedInOperationErrorCODE
CRITICALtests/test_tools.py1864 from linkedin_mcp_server.core.exceptions import InvalidReferenceErrorCODE
CRITICAL⚡tests/test_error_handler.py157 from linkedin_mcp_server.core.exceptions import LinkedInOperationErrorCODE
CRITICAL⚡tests/test_error_handler.py169 from linkedin_mcp_server.core.exceptions import AuthenticationErrorCODE
CRITICAL⚡tests/test_error_handler.py176 from linkedin_mcp_server.core.exceptions import ElementNotFoundErrorCODE
CRITICALtests/test_off_linkedin_landing_dom.py33from linkedin_mcp_server.core.exceptions import OffLinkedInLandingErrorCODE
CRITICALtests/differential/test_auth_repair.py144from linkedin_mcp_server.core.exceptions import AuthenticationErrorCODE
CRITICALtests/linkedin/test_facade_contracts.py17from linkedin_mcp_server.core.exceptions import InvalidReferenceErrorCODE
CRITICALtests/linkedin/test_feed.py17from linkedin_mcp_server.core.exceptions import AuthenticationErrorCODE
CRITICALtests/linkedin/test_policy_traces.py18from linkedin_mcp_server.core.exceptions import AuthenticationErrorCODE
CRITICALtests/linkedin/test_facade_results.py7from linkedin_mcp_server.core.exceptions import InvalidReferenceErrorCODE
CRITICALtests/linkedin/test_document_reads.py18from linkedin_mcp_server.core.exceptions import OffLinkedInLandingErrorCODE
CRITICALtests/linkedin/test_capture.py17from linkedin_mcp_server.core.exceptions import AuthenticationErrorCODE
CRITICALtests/linkedin/test_capture.py134 from linkedin_mcp_server.core.exceptions import RateLimitErrorCODE
CRITICALtests/linkedin/test_capture.py1940 from linkedin_mcp_server.core.exceptions import RateLimitErrorCODE
CRITICALtests/linkedin/test_jobs.py14from linkedin_mcp_server.core.exceptions import AuthenticationErrorCODE
CRITICALtests/linkedin/test_message_sender.py16from linkedin_mcp_server.core.exceptions import InvalidReferenceErrorCODE
CRITICALtests/linkedin/test_message_sender.py207 from linkedin_mcp_server.core.exceptions import OffLinkedInLandingErrorCODE
CRITICALtests/linkedin/test_job_pages.py12from linkedin_mcp_server.core.exceptions import AuthenticationErrorCODE
Empty Error Handlers73 hits · 362 pts
SeverityFileLineSnippetContext
HIGHlinkedin_mcp_server/bootstrap.py1559except TimeoutError:CODE
HIGHlinkedin_mcp_server/bootstrap.py2790except (OSError, ValueError):CODE
HIGHlinkedin_mcp_server/bootstrap.py1470except TimeoutError:CODE
HIGHlinkedin_mcp_server/logging_config.py114except Exception:CODE
HIGHlinkedin_mcp_server/logging_config.py132except FileExistsError:CODE
HIGHlinkedin_mcp_server/session_state.py1106except OSError:CODE
HIGHlinkedin_mcp_server/session_state.py1217except OSError:CODE
HIGHlinkedin_mcp_server/process_tree.py1490except ProcessLookupError:CODE
HIGHlinkedin_mcp_server/process_tree.py1552except (ProcessLookupError, PermissionError):CODE
HIGHlinkedin_mcp_server/debug_trace.py187except FileExistsError:CODE
HIGHlinkedin_mcp_server/cli_main.py756except Exception:CODE
HIGHlinkedin_mcp_server/cli_main.py991except Exception:CODE
HIGHlinkedin_mcp_server/private_state.py222except FileExistsError:CODE
HIGHlinkedin_mcp_server/login_viewer.py343except OSError:CODE
HIGHlinkedin_mcp_server/login_viewer.py253except Exception:CODE
HIGHlinkedin_mcp_server/setup.py462except asyncio.CancelledError:CODE
HIGHlinkedin_mcp_server/windows_acl.py661except OSError:CODE
HIGHlinkedin_mcp_server/installer_worker.py102except OSError:CODE
HIGHlinkedin_mcp_server/storage_class.py205except (RuntimeError, KeyError, OSError):CODE
HIGHlinkedin_mcp_server/storage_class.py212except KeyError:CODE
HIGHlinkedin_mcp_server/process_guardian.py138except OSError:CODE
HIGHlinkedin_mcp_server/process_guardian.py107except OSError:CODE
HIGHlinkedin_mcp_server/browser_import/extract.py378except OSError:CODE
HIGHlinkedin_mcp_server/tools/person.py49except ValueError:CODE
HIGHlinkedin_mcp_server/core/utils.py326except PlaywrightTimeoutError:CODE
HIGHlinkedin_mcp_server/core/utils.py557except PlaywrightTimeoutError:CODE
HIGHlinkedin_mcp_server/daemon/descriptor.py893except ValueError:CODE
HIGHlinkedin_mcp_server/daemon/election.py847except OSError:CODE
HIGHlinkedin_mcp_server/daemon/owner.py147except FileNotFoundError:CODE
HIGHlinkedin_mcp_server/daemon/owner.py1368except TimeoutError:CODE
HIGHlinkedin_mcp_server/daemon/owner.py960except Exception:CODE
HIGHlinkedin_mcp_server/daemon/owner.py1497except (OSError, UnicodeError, ValueError):CODE
HIGHlinkedin_mcp_server/daemon/owner.py1564except (OSError, ValueError):CODE
HIGHlinkedin_mcp_server/linkedin/message_sender.py1403except PlaywrightTimeoutError:CODE
HIGHlinkedin_mcp_server/linkedin/connection_actions.py410except PlaywrightTimeoutError:CODE
HIGHlinkedin_mcp_server/linkedin/connection_actions.py461except Exception:CODE
HIGHtests/conftest.py188except AttributeError:CODE
HIGHtests/conftest.py168except AttributeError:CODE
HIGHtests/conftest.py180except AttributeError:CODE
HIGHtests/conftest.py202except AttributeError:CODE
HIGHtests/test_dependencies.py589except asyncio.CancelledError:CODE
HIGHtests/test_windows_guardian_probe.py290except BaseException:CODE
HIGHtests/test_windows_guardian_probe.py286except BaseException:CODE
HIGHtests/test_process_tree.py3634except BaseException: # noqa: BLE001 - the driver was terminated on purposeCODE
HIGHtests/test_windows_browser_launch_evidence.py39except BaseException:CODE
HIGHtests/test_bootstrap.py1681except RuntimeError:CODE
HIGHtests/test_bootstrap.py1738except RuntimeError:CODE
HIGHtests/test_browser_containment.py453except OSError:CODE
HIGHtests/windows_guardian_probe.py1356except BaseException:CODE
HIGHtests/windows_guardian_probe.py1620except BaseException:CODE
HIGHtests/windows_guardian_probe.py1624except BaseException:CODE
HIGHtests/differential/harness.py2662except (psutil.Error, OSError):CODE
HIGHtests/differential/harness.py5449except psutil.Error:CODE
HIGHtests/differential/harness.py7306except Exception:CODE
HIGHtests/differential/harness.py1270except (anyio.ClosedResourceError, anyio.BrokenResourceError):CODE
HIGHtests/differential/harness.py1927except (anyio.ClosedResourceError, anyio.BrokenResourceError):CODE
HIGHtests/differential/harness.py2213except (anyio.ClosedResourceError, anyio.BrokenResourceError):CODE
HIGHtests/differential/harness.py3404except psutil.NoSuchProcess:CODE
HIGHtests/differential/harness.py5194except psutil.Error:CODE
HIGHtests/differential/harness.py9646except Exception:CODE
13 more matches not shown…
Excessive Try-Catch Wrapping384 hits · 361 pts
SeverityFileLineSnippetContext
MEDIUMlinkedin_mcp_server/bootstrap.py457def _patchright_pkg_version() -> str | None:CODE
MEDIUMlinkedin_mcp_server/bootstrap.py830def _report_retained_browser_revisions_if_ready() -> None:CODE
LOWlinkedin_mcp_server/bootstrap.py812 except Exception:CODE
LOWlinkedin_mcp_server/bootstrap.py842 except Exception:CODE
LOWlinkedin_mcp_server/bootstrap.py891 except Exception as exc:CODE
LOWlinkedin_mcp_server/bootstrap.py1491 except Exception:CODE
LOWlinkedin_mcp_server/bootstrap.py1991 except Exception as unmeasurable:CODE
LOWlinkedin_mcp_server/bootstrap.py2589 except Exception:CODE
LOWlinkedin_mcp_server/bootstrap.py2641 except Exception:CODE
LOWlinkedin_mcp_server/bootstrap.py2660 except Exception:CODE
LOWlinkedin_mcp_server/bootstrap.py3838 except Exception as exc:CODE
LOWlinkedin_mcp_server/bootstrap.py3860 except Exception as exc:CODE
LOWlinkedin_mcp_server/bootstrap.py3878 except Exception as exc:CODE
LOWlinkedin_mcp_server/bootstrap.py4117 except Exception: # noqa: BLE001 - a notice failure must not block importCODE
LOWlinkedin_mcp_server/bootstrap.py4299 except Exception: # noqa: BLE001 - any import failure -> manual loginCODE
LOWlinkedin_mcp_server/error_diagnostics.py240 except Exception:CODE
LOWlinkedin_mcp_server/error_diagnostics.py275 except Exception:CODE
MEDIUMlinkedin_mcp_server/error_diagnostics.py237def _safe_source_profile_dir():CODE
LOWlinkedin_mcp_server/greenlet_runtime.py106 except Exception:CODE
LOWlinkedin_mcp_server/server.py133 except Exception:CODE
LOWlinkedin_mcp_server/server.py310 except Exception as e:CODE
LOWlinkedin_mcp_server/logging_config.py114 except Exception:CODE
LOWlinkedin_mcp_server/update_check.py116 except Exception: # noqa: BLE001 - never let a version check break a tool callCODE
LOWlinkedin_mcp_server/update_check.py192 except Exception: # noqa: BLE001 - fall back to env / managed detectionCODE
MEDIUMlinkedin_mcp_server/update_check.py86def _read_cache() -> tuple[float, str] | None:CODE
LOWlinkedin_mcp_server/process_tree.py1017 except Exception as exc:CODE
LOWlinkedin_mcp_server/process_tree.py1038 except Exception as exc:CODE
LOWlinkedin_mcp_server/process_tree.py1069 except Exception as exc:CODE
LOWlinkedin_mcp_server/process_tree.py1122 except Exception as exc:CODE
LOWlinkedin_mcp_server/process_tree.py1159 except Exception as exc:CODE
LOWlinkedin_mcp_server/process_tree.py1226 except Exception as exc:CODE
LOWlinkedin_mcp_server/process_tree.py1277 except Exception as exc:CODE
LOWlinkedin_mcp_server/process_tree.py1294 except Exception as exc:CODE
LOWlinkedin_mcp_server/debug_trace.py113 except Exception:CODE
LOW⚡linkedin_mcp_server/debug_trace.py133 except Exception as exc: # pragma: no cover - best effort diagnosticsCODE
LOW⚡linkedin_mcp_server/debug_trace.py138 except Exception as exc: # pragma: no cover - best effort diagnosticsCODE
LOW⚡linkedin_mcp_server/debug_trace.py146 except Exception: # pragma: no cover - best effort diagnosticsCODE
LOW⚡linkedin_mcp_server/debug_trace.py151 except Exception: # pragma: no cover - best effort diagnosticsCODE
LOWlinkedin_mcp_server/debug_trace.py167 except Exception as exc: # pragma: no cover - best effort diagnosticsCODE
MEDIUMlinkedin_mcp_server/debug_trace.py110def _safe_source_profile_dir() -> Path:CODE
MEDIUMlinkedin_mcp_server/cli_main.py604def check_session() -> bool:CODE
LOWlinkedin_mcp_server/cli_main.py243 except Exception:CODE
LOWlinkedin_mcp_server/cli_main.py289 except Exception:CODE
LOWlinkedin_mcp_server/cli_main.py334 except Exception:CODE
LOWlinkedin_mcp_server/cli_main.py617 except Exception as e:CODE
LOWlinkedin_mcp_server/cli_main.py652 except Exception as e:CODE
LOWlinkedin_mcp_server/cli_main.py713 except Exception:CODE
LOWlinkedin_mcp_server/cli_main.py756 except Exception:CODE
LOWlinkedin_mcp_server/cli_main.py769 except Exception:CODE
LOWlinkedin_mcp_server/cli_main.py967 except Exception as e:CODE
LOWlinkedin_mcp_server/cli_main.py991 except Exception:CODE
LOWlinkedin_mcp_server/cli_main.py1001 except Exception as e:CODE
LOWlinkedin_mcp_server/login_viewer.py253 except Exception:CODE
LOW⚡linkedin_mcp_server/login_viewer.py266 except Exception as exc:CODE
LOW⚡linkedin_mcp_server/login_viewer.py276 except Exception as exc:CODE
LOW⚡linkedin_mcp_server/login_viewer.py280 except Exception as exc:CODE
LOWlinkedin_mcp_server/setup.py324 except Exception as teardown_error:CODE
LOWlinkedin_mcp_server/setup.py398 except Exception as teardown_error:CODE
LOWlinkedin_mcp_server/setup.py505 except Exception as e:CODE
LOWlinkedin_mcp_server/setup.py522 except Exception as e:CODE
324 more matches not shown…
AI Slop Vocabulary115 hits · 335 pts
SeverityFileLineSnippetContext
MEDIUMtests/windows_guardian_probe.py738 # The outer harness is the only authority allowed to break a failedCOMMENT
MEDIUMtests/windows_guardian_probe.py1474 # The probe root is private to its harness. Under that protected-parentCOMMENT
MEDIUMtests/windows_guardian_probe.py4176 # Only the already-assigned outer harness Job may break this failed proof.COMMENT
MEDIUMtests/differential/signals.py669 #: Pids known to be no actor's launch: the harness itself, whoseCOMMENT
MEDIUMtests/differential/signals.py905 # Started by the harness itself, not by the ancestor.COMMENT
MEDIUMtests/differential/signals.py1770 # No stream of the harness's: a canary that outlived its row must notCOMMENT
MEDIUMtests/differential/signals.py1771 # hold the output of whatever ran the harness open behind it.COMMENT
MEDIUMtests/differential/signals.py1789 # The harness's own Job forbids breakaway: the canary sharesCOMMENT
MEDIUM⚡tests/differential/harness.py9656 # From here on the harness acts: a checkpoint after this markerCOMMENT
MEDIUM⚡tests/differential/harness.py9660 # no browser waits out a deadline on the harness's account. A releaseCOMMENT
MEDIUM⚡tests/differential/harness.py9666 # row cannot sign in on the harness's account.COMMENT
MEDIUM⚡tests/differential/harness.py9714 # each installer, read before the harness intervenes below.COMMENT
MEDIUMtests/differential/harness.py415#: How a row's host reaches its server. ``stdio``: the harness's host stub,COMMENT
MEDIUMtests/differential/harness.py469#: so the harness's own value would hand a baseline actor the candidate's venv.COMMENT
MEDIUMtests/differential/harness.py1244 #: harness's monotonic clock; the second only for an exit it saw.COMMENT
MEDIUMtests/differential/harness.py1826#: harness's own child, holding nothing but pipes.COMMENT
MEDIUMtests/differential/harness.py2444#: harness's own host stub, a stub host in a process of its own, or an HTTPCOMMENT
MEDIUMtests/differential/harness.py4453#: The one file the harness's own restoration writes in the auth root: theCOMMENT
MEDIUMtests/differential/harness.py5867 #: H-R6: what the harness killed, and the guardian it had.COMMENT
MEDIUMtests/differential/harness.py5908 #: H-R6: what the harness killed, its guardian and the oracle's state.COMMENT
MEDIUMtests/differential/harness.py5961 # H-R6 in Direct: the server is the host's own process and the harnessCOMMENT
MEDIUMtests/differential/harness.py5993 # The harness only ever tests for this directory and never creates itCOMMENT
MEDIUMtests/differential/harness.py7720 # harness's restoration, then the probe, so the probe is aCOMMENT
MEDIUMtests/differential/harness.py7738 # What the product left at the boundary, read before the harnessCOMMENT
MEDIUMtests/differential/harness.py9422 # own; every other one is the harness's in-process host stub.COMMENT
MEDIUMtests/differential/harness.py10005 # Before preservation: the original actors, and whatever the harnessCOMMENT
MEDIUMtests/differential/harness.py10073 # Only a confirmation the script recorded, and only one this harnessCOMMENT
MEDIUMtests/differential/harness.py10085 # Only one the harness itself recorded, with its reading.COMMENT
MEDIUMtests/differential/harness.py10181 # by the harness on a row that must stay Direct.COMMENT
MEDIUMtests/differential/test_owner_loss.py449 # The owner's own browser, as ``harness.browser_lineage`` records it.COMMENT
MEDIUMtests/differential/test_owner_loss.py1900 # Resumed once, by the harness, and the row fails for it.COMMENT
MEDIUMtests/differential/test_signals.py315#: (times less 1790484300, the harness at 9157). The frozen Direct serverCOMMENT
MEDIUMtests/differential/test_signals.py2044 # The traced root 20 was killed by the harness and wrote no end; itsCOMMENT
MEDIUM⚡tests/differential/test_signals.py761 # Not killed by the harness: the same host is a failed quit.STRING
MEDIUMtests/differential/test_signals.py815 # Adopted by init; in this table pid 1 is the harness, so 50 stands in.STRING
MEDIUMtests/differential/test_r7_fault.py293 # harness armed and sent the close meanwhile. Its entry time is the one itCOMMENT
MEDIUMtests/differential/test_r7_fault.py607 # suspends in its export before the harness arms and sends. The requestedCOMMENT
MEDIUM⚡tests/differential/test_host_loss.py1703 # A second Direct server on a profile still held would be the harness's.COMMENT
MEDIUMtests/differential/test_host_loss.py240 # The harness learns of the loss from its own channel to the stub.COMMENT
MEDIUMtests/differential/baseline.py288 # ``-I``: nothing from the harness's environment or working directory canSTRING
MEDIUM⚡tests/differential/test_failed_job_query.py746 # trace to the harness; the installer and its worker were recorded.COMMENT
MEDIUMtests/differential/test_failed_job_query.py677#: (6076, a child of the harness, which also started the row's canaries) andCOMMENT
MEDIUMtests/differential/test_failed_job_query.py680#: installer's supervisor (880) and a worker below it. Here the harness isCOMMENT
MEDIUM⚡tests/differential/test_failed_job_query.py1029 # Anything else written meanwhile is not the harness's to hide.STRING
MEDIUMtests/differential/test_failed_job_query.py906 # gate, its child and its console host trace to the harness.STRING
MEDIUMtests/differential/test_failed_job_query.py976 # A process whose recorded ancestry reaches the harness is no installer's.STRING
MEDIUMtests/differential/test_failed_job_query.py1008# --- The harness's restoration, and the session at the recovery boundary ----------STRING
MEDIUMtests/differential/test_auth_repair.py2298 # The session went before the harness rejected it, with the origin stillCOMMENT
MEDIUMtests/differential/test_auth_repair.py2344 # own record instead of the harness recording it.COMMENT
MEDIUMtests/differential/test_unconfirmed_close.py2337# --- The actors' environment and the harness's own settling -----------------------------------COMMENT
MEDIUM⚡tests/differential/test_preservation_gate.py899 # Recorded below the frontend the harness started: no installer's.COMMENT
MEDIUM⚡tests/differential/test_preservation_gate.py906 # E1EY-03: before the harness restores or probes, not only at the end.COMMENT
MEDIUMtests/differential/test_preservation_gate.py703 # Something besides the harness writes whenever it records.COMMENT
MEDIUMtests/differential/test_preservation_gate.py816 # settlement, then the harness's restoration, then the probe.COMMENT
MEDIUMtests/differential/test_preservation_gate.py957 # failed row's cleanup stops the harness's own stall host and keeps theCOMMENT
MEDIUMtests/differential/test_preservation_gate.py1001 # The installer did end, once the harness stopped the stall host; thatCOMMENT
MEDIUMtests/differential/test_preservation_gate.py1143 # The frontend, started by the harness: the gate's chain is complete.COMMENT
MEDIUMtests/differential/retirement_race.py120#: The row's first call, the harness's warm-up read (``harness.READ_TOOL``).COMMENT
MEDIUMtests/differential/retirement_race.py160#: How far apart a process's create time and the harness's wall clock may beCOMMENT
MEDIUMtests/differential/events.py41#: The plan's actors, plus ``driver`` (Patchright's Node process), ``harness``COMMENT
55 more matches not shown…
Unused Imports292 hits · 251 pts
SeverityFileLineSnippetContext
LOWlinkedin_mcp_server/bootstrap.py3CODE
LOWlinkedin_mcp_server/process_protocol.py3CODE
LOWlinkedin_mcp_server/error_diagnostics.py3CODE
LOWlinkedin_mcp_server/greenlet_runtime.py150CODE
LOWlinkedin_mcp_server/server.py54CODE
LOWlinkedin_mcp_server/hidden_target.py25CODE
LOWlinkedin_mcp_server/hidden_target.py38CODE
LOWlinkedin_mcp_server/session_state.py3CODE
LOWlinkedin_mcp_server/installer_supervisor.py3CODE
LOWlinkedin_mcp_server/update_check.py16CODE
LOWlinkedin_mcp_server/process_tree.py3CODE
LOWlinkedin_mcp_server/debug_trace.py3CODE
LOWlinkedin_mcp_server/cli_main.py62CODE
LOWlinkedin_mcp_server/private_state.py23CODE
LOWlinkedin_mcp_server/login_viewer.py3CODE
LOWlinkedin_mcp_server/windows_acl.py23CODE
LOWlinkedin_mcp_server/profile_claim.py28CODE
LOWlinkedin_mcp_server/sequential_tool_middleware.py3CODE
LOWlinkedin_mcp_server/installer_worker.py3CODE
LOWlinkedin_mcp_server/storage_class.py23CODE
LOWlinkedin_mcp_server/process_guardian.py3CODE
LOWlinkedin_mcp_server/common_utils.py3CODE
LOWlinkedin_mcp_server/process_gate.py3CODE
LOWlinkedin_mcp_server/browser_launch.py16CODE
LOWlinkedin_mcp_server/profile_lease.py32CODE
LOWlinkedin_mcp_server/debug_utils.py3CODE
LOWlinkedin_mcp_server/browser_import/discovery.py10CODE
LOWlinkedin_mcp_server/browser_import/__init__.py10CODE
LOWlinkedin_mcp_server/browser_import/__init__.py16CODE
LOWlinkedin_mcp_server/browser_import/__init__.py16CODE
LOWlinkedin_mcp_server/browser_import/__init__.py16CODE
LOWlinkedin_mcp_server/browser_import/__init__.py17CODE
LOWlinkedin_mcp_server/browser_import/__init__.py17CODE
LOWlinkedin_mcp_server/browser_import/orchestrate.py22CODE
LOWlinkedin_mcp_server/browser_import/extract.py17CODE
LOWlinkedin_mcp_server/drivers/__init__.py16CODE
LOWlinkedin_mcp_server/drivers/__init__.py16CODE
LOWlinkedin_mcp_server/drivers/__init__.py16CODE
LOWlinkedin_mcp_server/drivers/__init__.py16CODE
LOWlinkedin_mcp_server/drivers/__init__.py16CODE
LOWlinkedin_mcp_server/drivers/__init__.py16CODE
LOWlinkedin_mcp_server/drivers/__init__.py16CODE
LOWlinkedin_mcp_server/drivers/__init__.py16CODE
LOWlinkedin_mcp_server/drivers/__init__.py16CODE
LOWlinkedin_mcp_server/drivers/__init__.py16CODE
LOWlinkedin_mcp_server/core/__init__.py5CODE
LOWlinkedin_mcp_server/core/__init__.py5CODE
LOWlinkedin_mcp_server/core/__init__.py5CODE
LOWlinkedin_mcp_server/core/__init__.py5CODE
LOWlinkedin_mcp_server/core/__init__.py5CODE
LOWlinkedin_mcp_server/core/__init__.py12CODE
LOWlinkedin_mcp_server/core/__init__.py12CODE
LOWlinkedin_mcp_server/core/__init__.py12CODE
LOWlinkedin_mcp_server/core/__init__.py13CODE
LOWlinkedin_mcp_server/core/__init__.py13CODE
LOWlinkedin_mcp_server/core/__init__.py13CODE
LOWlinkedin_mcp_server/core/__init__.py13CODE
LOWlinkedin_mcp_server/core/__init__.py13CODE
LOWlinkedin_mcp_server/core/__init__.py13CODE
LOWlinkedin_mcp_server/core/__init__.py13CODE
232 more matches not shown…
Over-Commented Block202 hits · 164 pts
SeverityFileLineSnippetContext
LOWlinkedin_mcp_server/bootstrap.py121 "chromium-headless-shell": "chromium_headless_shell-",COMMENT
LOWlinkedin_mcp_server/bootstrap.py141# over it: that collector deletes directories whose name begins with a browserCOMMENT
LOWlinkedin_mcp_server/bootstrap.py161#: and that ``BrowserSetupFailedError`` then carried to an MCP client.COMMENT
LOWlinkedin_mcp_server/bootstrap.py181#: it *ended* on into its timeout and its error, so a mirror answering 302 withCOMMENT
LOWlinkedin_mcp_server/bootstrap.py201#: Where a redactable run opens. Both patterns above are represented, because aCOMMENT
LOWlinkedin_mcp_server/bootstrap.py221_WHITESPACE = re.compile(r"\s")COMMENT
LOWlinkedin_mcp_server/bootstrap.py241)COMMENT
LOWlinkedin_mcp_server/bootstrap.py261#: end of line. A response body can forge that exact shape after it has emittedCOMMENT
LOWlinkedin_mcp_server/bootstrap.py301#: written by ``_held_markers`` and no configured value can match across it.COMMENT
LOWlinkedin_mcp_server/bootstrap.py1061def _owned_browser_setup_ready() -> bool:COMMENT
LOWlinkedin_mcp_server/bootstrap.py2681 if one is other:COMMENT
LOWlinkedin_mcp_server/bootstrap.py2881 except OSError:COMMENT
LOWlinkedin_mcp_server/bootstrap.py2921 TransferSpeedColumn(),COMMENT
LOWlinkedin_mcp_server/bootstrap.py2941 # streams and the answer stops being available.COMMENT
LOWlinkedin_mcp_server/bootstrap.py2981 # those would leave four completed bars for one browser.COMMENT
LOWlinkedin_mcp_server/bootstrap.py3041 # and without this the failure ends under five completed bars. TheCOMMENT
LOWlinkedin_mcp_server/bootstrap.py3481 # would behead: the part that names it is in front of the cut and theCOMMENT
LOWlinkedin_mcp_server/bootstrap.py3641 # below ends where the cap fell, and trimming there would eatCOMMENT
LOWlinkedin_mcp_server/bootstrap.py4041 return FalseCOMMENT
LOWlinkedin_mcp_server/bootstrap.py4161 # -> core/browser.py start) with NO launch timeout, so a wedged binaryCOMMENT
LOWlinkedin_mcp_server/bootstrap.py4561 # 60-second wait was never reached.COMMENT
LOWlinkedin_mcp_server/server.py121 try:COMMENT
LOWlinkedin_mcp_server/server.py181 )COMMENT
LOWlinkedin_mcp_server/server.py201 # check lives in `set_process_role` so every entry point is covered by oneCOMMENT
LOWlinkedin_mcp_server/server.py241 # Budgeted from the timeout every tool here is given, rather than fromCOMMENT
LOWlinkedin_mcp_server/hidden_target.py161 # hidden page is simply gone. `context.new_cdp_session` is the obvious callCOMMENT
LOWlinkedin_mcp_server/session_state.py441 "moby",COMMENT
LOWlinkedin_mcp_server/process_tree.py21COMMENT
LOWlinkedin_mcp_server/process_tree.py61_JOB_API_FAILURE_LIMIT = 3COMMENT
LOWlinkedin_mcp_server/process_tree.py101 ready_read, ready_write = os.pipe()COMMENT
LOWlinkedin_mcp_server/cli_main.py881 print("\n🚀 Server ready! Choose transport mode:")COMMENT
LOWlinkedin_mcp_server/cli_main.py921 if transport == "streamable-http":COMMENT
LOWlinkedin_mcp_server/cli_main.py941 # the LAN address were served, while the same request toCOMMENT
LOWlinkedin_mcp_server/private_state.py301 The file has to exist already. POSIX hardens it through an open descriptor;COMMENT
LOWlinkedin_mcp_server/private_state.py361 # deliberately: it runs in a finally, where raising would replaceCOMMENT
LOWlinkedin_mcp_server/private_state.py461COMMENT
LOWlinkedin_mcp_server/setup.py81 # cookies over the new ones (drivers.browser exports on close).COMMENT
LOWlinkedin_mcp_server/setup.py101 "Another LinkedIn MCP client is using the browser, so a login "COMMENT
LOWlinkedin_mcp_server/setup.py201 # The retirement happens before the replacement exists, so a login thatCOMMENT
LOWlinkedin_mcp_server/windows_acl.py101 | GENERIC_WRITECOMMENT
LOWlinkedin_mcp_server/windows_acl.py121#: over an object that same account created and already owns.COMMENT
LOWlinkedin_mcp_server/windows_acl.py141#: ``FILE_DELETE_CHILD`` is the same question one level down: an account holdingCOMMENT
LOWlinkedin_mcp_server/profile_claim.py61#: Entries that say nothing about whether a root already belongs to somebody,COMMENT
LOWlinkedin_mcp_server/error_handler.py101 # guard with their own `except ToolError` (`tools/person.py:175`,COMMENT
LOWlinkedin_mcp_server/error_handler.py301 # The catch-all for exceptions nothing else classified, so a raw driverCOMMENT
LOWlinkedin_mcp_server/server_role.py61#: login window may be opened is decided far down the stack, in ``bootstrap``,COMMENT
LOWlinkedin_mcp_server/browser_downgrade.py61#: Anchored to whitespace or the start of the line, which is the part that stopsCOMMENT
LOWlinkedin_mcp_server/browser_downgrade.py81#:COMMENT
LOWlinkedin_mcp_server/browser_downgrade.py101#: depends on the patchright they resolved and on their platform. From theCOMMENT
LOWlinkedin_mcp_server/browser_downgrade.py121#:COMMENT
LOWlinkedin_mcp_server/browser_downgrade.py141#: For anyone allowlisting egress, one host is not the whole answer. EveryCOMMENT
LOWlinkedin_mcp_server/browser_downgrade.py161#: `Google Chrome for Testing 148.0.7778.96` on macOS. One revision, two names,COMMENT
LOWlinkedin_mcp_server/browser_downgrade.py181#: about whatever wrote the profile -- `Last Version` records no product to askCOMMENT
LOWlinkedin_mcp_server/dependencies.py101 # change that releases the lease sooner, would otherwise latch onto aCOMMENT
LOWlinkedin_mcp_server/dependencies.py121 #COMMENT
LOWlinkedin_mcp_server/browser_launch.py21# therefore goes around the proxy and hands the page the machine's realCOMMENT
LOWlinkedin_mcp_server/browser_launch.py41# where it is. That is acceptable here because nothing in this server uses it:COMMENT
LOWlinkedin_mcp_server/browser_launch.py81 launch_options: dict[str, Any] = {}COMMENT
LOWlinkedin_mcp_server/browser_import/discovery.py41 # renames the SERVICE (e.g. Helium account "Helium" but serviceCOMMENT
LOWlinkedin_mcp_server/browser_import/orchestrate.py321 # For the reason the login releases here: one guardian exists perCOMMENT
142 more matches not shown…
Deep Nesting172 hits · 132 pts
SeverityFileLineSnippetContext
LOWlinkedin_mcp_server/bootstrap.py515CODE
LOWlinkedin_mcp_server/bootstrap.py867CODE
LOWlinkedin_mcp_server/bootstrap.py1448CODE
LOWlinkedin_mcp_server/bootstrap.py1569CODE
LOWlinkedin_mcp_server/bootstrap.py1863CODE
LOWlinkedin_mcp_server/bootstrap.py2076CODE
LOWlinkedin_mcp_server/bootstrap.py2374CODE
LOWlinkedin_mcp_server/bootstrap.py2851CODE
LOWlinkedin_mcp_server/bootstrap.py2952CODE
LOWlinkedin_mcp_server/process_protocol.py33CODE
LOWlinkedin_mcp_server/server.py91CODE
LOWlinkedin_mcp_server/hidden_target.py112CODE
LOWlinkedin_mcp_server/session_state.py1303CODE
LOWlinkedin_mcp_server/process_tree.py89CODE
LOWlinkedin_mcp_server/process_tree.py502CODE
LOWlinkedin_mcp_server/process_tree.py554CODE
LOWlinkedin_mcp_server/process_tree.py606CODE
LOWlinkedin_mcp_server/process_tree.py838CODE
LOWlinkedin_mcp_server/process_tree.py1460CODE
LOWlinkedin_mcp_server/cli_main.py796CODE
LOWlinkedin_mcp_server/private_state.py181CODE
LOWlinkedin_mcp_server/private_state.py489CODE
LOWlinkedin_mcp_server/setup.py165CODE
LOWlinkedin_mcp_server/setup.py245CODE
LOWlinkedin_mcp_server/setup.py330CODE
LOWlinkedin_mcp_server/setup.py432CODE
LOWlinkedin_mcp_server/error_handler.py75CODE
LOWlinkedin_mcp_server/storage_class.py285CODE
LOWlinkedin_mcp_server/process_guardian.py92CODE
LOWlinkedin_mcp_server/process_guardian.py116CODE
LOWlinkedin_mcp_server/profile_lease.py283CODE
LOWlinkedin_mcp_server/browser_import/discovery.py210CODE
LOWlinkedin_mcp_server/browser_import/orchestrate.py290CODE
LOWlinkedin_mcp_server/tools/company.py31CODE
LOWlinkedin_mcp_server/tools/company.py106CODE
LOWlinkedin_mcp_server/tools/feed.py28CODE
LOWlinkedin_mcp_server/tools/feed.py39CODE
LOWlinkedin_mcp_server/core/auth.py228CODE
LOWlinkedin_mcp_server/core/utils.py253CODE
LOWlinkedin_mcp_server/daemon/descriptor.py377CODE
LOWlinkedin_mcp_server/daemon/election.py906CODE
LOWlinkedin_mcp_server/daemon/election.py1038CODE
LOWlinkedin_mcp_server/daemon/election.py1332CODE
LOWlinkedin_mcp_server/daemon/election.py805CODE
LOWlinkedin_mcp_server/daemon/election.py813CODE
LOWlinkedin_mcp_server/daemon/proxy.py557CODE
LOWlinkedin_mcp_server/daemon/owner.py884CODE
LOWlinkedin_mcp_server/linkedin/message_sender.py1787CODE
LOWlinkedin_mcp_server/linkedin/person.py196CODE
LOWlinkedin_mcp_server/linkedin/company.py43CODE
LOWlinkedin_mcp_server/linkedin/connection_actions.py549CODE
LOWlinkedin_mcp_server/linkedin/feed.py50CODE
LOWlinkedin_mcp_server/linkedin/feed.py184CODE
LOWlinkedin_mcp_server/linkedin/jobs.py182CODE
LOWlinkedin_mcp_server/linkedin/jobs.py581CODE
LOWlinkedin_mcp_server/linkedin/capture.py178CODE
LOWlinkedin_mcp_server/linkedin/capture.py345CODE
LOWtests/test_server_json.py288CODE
LOWtests/test_core_browser.py353CODE
LOWtests/test_core_browser.py425CODE
112 more matches not shown…
Cross-File Repetition22 hits · 110 pts
SeverityFileLineSnippetContext
HIGHtests/differential/test_auth_repair.py0a check of the mapping only: never counted as any branch's coverage, which comes from the mapped tests' own runs.STRING
HIGHtests/differential/test_eligibility.py0a check of the mapping only: never counted as any branch's coverage, which comes from the mapped tests' own runs.STRING
HIGHtests/differential/test_profile_commands.py0a check of the mapping only: never counted as any branch's coverage, which comes from the mapped tests' own runs.STRING
HIGHtests/differential/retirement_race.py0the problems that leave a row unmeasured rather than failed.STRING
HIGHtests/differential/eligibility_rows.py0the problems that leave a row unmeasured rather than failed.STRING
HIGHtests/differential/call_loss.py0the problems that leave a row unmeasured rather than failed.STRING
HIGHtests/differential/profile_commands.py0the problems that leave a row unmeasured rather than failed.STRING
HIGHtests/differential/auth_repair.py0the problems that leave a row unmeasured rather than failed.STRING
HIGHtests/differential/owner_loss.py0the problems that leave a row unmeasured rather than failed.STRING
HIGHtests/differential/retirement_race.py0the verdict of whichever row of this module *record* is for.STRING
HIGHtests/differential/eligibility_rows.py0the verdict of whichever row of this module *record* is for.STRING
HIGHtests/differential/profile_commands.py0the verdict of whichever row of this module *record* is for.STRING
HIGHtests/differential/auth_repair.py0the verdict of whichever row of this module *record* is for.STRING
HIGHtests/differential/owner_loss.py0the verdict of whichever row of this module *record* is for.STRING
HIGHtests/differential/retirement_race.py0k0 against k3: both valid by their own verdict, and alike in every classification. a missing or invalid record is a refuSTRING
HIGHtests/differential/eligibility_rows.py0k0 against k3: both valid by their own verdict, and alike in every classification. a missing or invalid record is a refuSTRING
HIGHtests/differential/profile_commands.py0k0 against k3: both valid by their own verdict, and alike in every classification. a missing or invalid record is a refuSTRING
HIGHtests/differential/auth_repair.py0k0 against k3: both valid by their own verdict, and alike in every classification. a missing or invalid record is a refuSTRING
HIGHtests/differential/owner_loss.py0k0 against k3: both valid by their own verdict, and alike in every classification. a missing or invalid record is a refuSTRING
HIGHtests/differential/test_eligibility.py0fresh registries, so one test's retained worker never gates the next.STRING
HIGHtests/differential/test_call_loss.py0fresh registries, so one test's retained worker never gates the next.STRING
HIGHtests/differential/test_host_comparison.py0fresh registries, so one test's retained worker never gates the next.STRING
Modern Structural Boilerplate72 hits · 72 pts
SeverityFileLineSnippetContext
LOWlinkedin_mcp_server/bootstrap.py107logger = logging.getLogger(__name__)CODE
LOWlinkedin_mcp_server/server.py56logger = logging.getLogger(__name__)CODE
LOWlinkedin_mcp_server/hidden_target.py40logger = logging.getLogger(__name__)CODE
LOWlinkedin_mcp_server/session_state.py34logger = logging.getLogger(__name__)CODE
LOWlinkedin_mcp_server/update_check.py34logger = logging.getLogger(__name__)CODE
LOWlinkedin_mcp_server/process_tree.py22logger = logging.getLogger(__name__)CODE
LOWlinkedin_mcp_server/cli_main.py65logger = logging.getLogger(__name__)CODE
LOWlinkedin_mcp_server/private_state.py41logger = logging.getLogger(__name__)CODE
LOWlinkedin_mcp_server/profile_claim.py42logger = logging.getLogger(__name__)CODE
LOWlinkedin_mcp_server/authentication.py21logger = logging.getLogger(__name__)CODE
LOW⚡linkedin_mcp_server/error_handler.py55logger = logging.getLogger(__name__)CODE
LOWlinkedin_mcp_server/sequential_tool_middleware.py24logger = logging.getLogger(__name__)CODE
LOWlinkedin_mcp_server/storage_class.py37logger = logging.getLogger(__name__)CODE
LOWlinkedin_mcp_server/server_role.py89def set_process_role(role: ServerRole) -> None:CODE
LOWlinkedin_mcp_server/browser_downgrade.py45logger = logging.getLogger(__name__)CODE
LOWlinkedin_mcp_server/dependencies.py42logger = logging.getLogger(__name__)CODE
LOWlinkedin_mcp_server/browser_launch.py18logger = logging.getLogger(__name__)CODE
LOWlinkedin_mcp_server/profile_lease.py48logger = logging.getLogger(__name__)CODE
LOWlinkedin_mcp_server/browser_import/discovery.py20logger = logging.getLogger(__name__)CODE
LOWlinkedin_mcp_server/browser_import/__init__.py19__all__ = [CODE
LOWlinkedin_mcp_server/browser_import/orchestrate.py63logger = logging.getLogger(__name__)CODE
LOWlinkedin_mcp_server/browser_import/extract.py45logger = logging.getLogger(__name__)CODE
LOWlinkedin_mcp_server/tools/post.py24logger = logging.getLogger(__name__)CODE
LOW⚡linkedin_mcp_server/tools/person.py26logger = logging.getLogger(__name__)CODE
LOWlinkedin_mcp_server/tools/company.py28logger = logging.getLogger(__name__)CODE
LOWlinkedin_mcp_server/tools/job.py21logger = logging.getLogger(__name__)CODE
LOWlinkedin_mcp_server/tools/feed.py25logger = logging.getLogger(__name__)CODE
LOWlinkedin_mcp_server/tools/messaging.py31logger = logging.getLogger(__name__)CODE
LOWlinkedin_mcp_server/drivers/__init__.py29__all__ = [CODE
LOWlinkedin_mcp_server/drivers/browser.py69logger = logging.getLogger(__name__)CODE
LOWlinkedin_mcp_server/drivers/browser.py939def _settle_the_profile(*, confirmed: bool) -> None:CODE
LOWlinkedin_mcp_server/drivers/browser.py1065def set_headless(headless: bool) -> None:CODE
LOWlinkedin_mcp_server/core/auth.py21logger = logging.getLogger(__name__)CODE
LOWlinkedin_mcp_server/core/destination.py12logger = logging.getLogger(__name__)CODE
LOWlinkedin_mcp_server/core/__init__.py56__all__ = [CODE
LOWlinkedin_mcp_server/core/browser.py47logger = logging.getLogger(__name__)CODE
LOWlinkedin_mcp_server/core/utils.py18logger = logging.getLogger(__name__)CODE
LOWlinkedin_mcp_server/core/proxy_errors.py20logger = logging.getLogger(__name__)CODE
LOWlinkedin_mcp_server/config/loaders.py22logger = logging.getLogger(__name__)CODE
LOWlinkedin_mcp_server/config/__init__.py13logger = logging.getLogger(__name__)CODE
LOWlinkedin_mcp_server/config/__init__.py28def set_config(config: AppConfig) -> None:CODE
LOWlinkedin_mcp_server/config/__init__.py54__all__ = [CODE
LOWlinkedin_mcp_server/config/schema.py16logger = logging.getLogger(__name__)CODE
LOWlinkedin_mcp_server/daemon/election.py60logger = logging.getLogger(__name__)CODE
LOWlinkedin_mcp_server/daemon/startup.py75logger = logging.getLogger(__name__)CODE
LOWlinkedin_mcp_server/daemon/forwarder.py81logger = logging.getLogger(__name__)CODE
LOWlinkedin_mcp_server/daemon/version.py50logger = logging.getLogger(__name__)CODE
LOWlinkedin_mcp_server/daemon/liveness.py47logger = logging.getLogger(__name__)CODE
LOWlinkedin_mcp_server/daemon/discovery.py55logger = logging.getLogger(__name__)CODE
LOWlinkedin_mcp_server/daemon/proxy.py84logger = logging.getLogger(__name__)CODE
LOWlinkedin_mcp_server/daemon/owner.py103logger = logging.getLogger(__name__)CODE
LOWlinkedin_mcp_server/daemon/auth_repair.py63logger = logging.getLogger(__name__)CODE
LOWlinkedin_mcp_server/daemon/lock.py64logger = logging.getLogger(__name__)CODE
LOW⚡linkedin_mcp_server/linkedin/message_sender.py29logger = logging.getLogger(__name__)CODE
LOWlinkedin_mcp_server/linkedin/person.py39logger = logging.getLogger(__name__)CODE
LOWlinkedin_mcp_server/linkedin/company.py33logger = logging.getLogger(__name__)CODE
LOWlinkedin_mcp_server/linkedin/connection_actions.py50logger = logging.getLogger(__name__)CODE
LOWlinkedin_mcp_server/linkedin/fields.py9logger = logging.getLogger(__name__)CODE
LOWlinkedin_mcp_server/linkedin/job_pages.py53logger = logging.getLogger(__name__)CODE
LOWlinkedin_mcp_server/linkedin/identifiers.py50__all__ = [CODE
12 more matches not shown…
Decorative Section Separators22 hits · 71 pts
SeverityFileLineSnippetContext
MEDIUMtests/test_process_tree.py3347# --------------------------------------------------------------------------STRING
MEDIUMtests/test_process_tree.py3349# --------------------------------------------------------------------------STRING
MEDIUM⚡tests/test_browser_import_extract.py519# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_browser_import_extract.py521# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_browser_import_extract.py586# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_browser_import_extract.py588# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_browser_import_extract.py678# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_browser_import_extract.py680# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_browser_import_extract.py742# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_browser_import_extract.py744# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_browser_import_extract.py843# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_browser_import_extract.py845# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_browser_import_extract.py905# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_browser_import_extract.py907# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_browser_import_extract.py141# ---------------------------------------------------------------------------STRING
MEDIUM⚡tests/test_browser_import_extract.py143# ---------------------------------------------------------------------------STRING
MEDIUM⚡tests/test_browser_import_extract.py374# ---------------------------------------------------------------------------STRING
MEDIUM⚡tests/test_browser_import_extract.py376# ---------------------------------------------------------------------------STRING
MEDIUMtests/test_browser_import_extract.py473# ---------------------------------------------------------------------------STRING
MEDIUMtests/test_browser_import_extract.py475# ---------------------------------------------------------------------------STRING
MEDIUM⚡tests/test_browser_import_discovery.py341# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_browser_import_discovery.py343# ---------------------------------------------------------------------------COMMENT
Fake / Example Data35 hits · 30 pts
SeverityFileLineSnippetContext
LOWtests/conftest.py443 (isolate_profile_dir / "Default" / "Cookies").write_text("placeholder")CODE
LOW⚡tests/test_cli_main.py495 (profile_dir / "Default" / "Cookies").write_text("placeholder")CODE
LOW⚡tests/test_cli_main.py501 (runtime_profile / "Default" / "Cookies").write_text("placeholder")CODE
LOWtests/test_cli_main.py389 (profile_dir / "Default" / "Cookies").write_text("placeholder")CODE
LOWtests/test_cli_main.py450 (profile_dir / "Default" / "Cookies").write_text("placeholder")CODE
LOWtests/test_cli_main.py1478 (self.profile / "Default" / "Cookies").write_text("placeholder")CODE
LOWtests/test_cli_main.py2423 (self.profile / "Default" / "Cookies").write_text("placeholder")CODE
LOWtests/test_profile_lease_integration.py951 (profile_dir / "Default" / "Cookies").write_text("placeholder")CODE
LOWtests/test_profile_lease_integration.py1167 (profile_dir / "Default" / "Cookies").write_text("placeholder")CODE
LOWtests/test_profile_lease_integration.py1366 (isolate_profile_dir / "Default" / "Cookies").write_text("placeholder")CODE
LOWtests/test_profile_lease_integration.py1416 (isolate_profile_dir / "Default" / "Cookies").write_text("placeholder")CODE
LOWtests/test_profile_lease_integration.py1478 (isolate_profile_dir / "Default" / "Cookies").write_text("placeholder")CODE
LOWtests/test_profile_lease_integration.py1519 (other / "Default" / "Cookies").write_text("placeholder")CODE
LOWtests/test_profile_lease_integration.py1552 (profile_dir / "Default" / "Cookies").write_text("placeholder")CODE
LOWtests/test_browser_driver.py76 (profile_dir / "Default" / "Cookies").write_text("placeholder")CODE
LOWtests/test_browser_driver.py106 (profile_dir / "Default" / "Cookies").write_text("placeholder")CODE
LOW⚡tests/test_bootstrap.py311 (profile_dir / "Default" / "Cookies").write_text("placeholder")CODE
LOWtests/test_bootstrap.py9994 (profile_dir / "Default" / "Cookies").write_text("placeholder")CODE
LOWtests/test_bootstrap.py10104 (profile_dir / "Default" / "Cookies").write_text("placeholder")CODE
LOWtests/test_bootstrap.py10275 (isolate_profile_dir / "Default" / "Cookies").write_text("placeholder")CODE
LOWtests/test_tools.py381 "main_profile": "John Doe",CODE
LOWtests/test_tools.py416 "sections": {"main_profile": "John Doe"},CODE
LOWtests/test_tools.py439 "sections": {"main_profile": "John Doe"},CODE
LOWtests/test_tools.py481 "sections": {"main_profile": "John Doe"},CODE
LOWtests/test_tools.py666 "sections": {"search_results": "Jane Doe"},CODE
LOWtests/test_tools.py2043 "sections": {"main_profile": "John Doe", "experience": "Work history"},CODE
LOWtests/test_tools.py2063 "sections": {"main_profile": "John Doe"},CODE
LOWtests/test_tools.py2083 "sections": {"main_profile": "John Doe"},CODE
LOWtests/test_issue_packet_contract.py323 if "placeholder" in attrs:CODE
LOWtests/test_issue_packet_contract.py325 attrs["placeholder"], f"{filename} {item.get('id')} placeholder"CODE
LOW⚡tests/linkedin/test_person.py1822 return_value=extracted("Jane Doe"),CODE
LOW⚡tests/linkedin/test_person.py1834 return_value=extracted("Jane Doe"),CODE
LOW⚡tests/linkedin/test_person.py1846 return_value=extracted("Jane Doe"),CODE
LOW⚡tests/linkedin/test_person.py1881 return_value=extracted("Jane Doe"),CODE
LOW⚡tests/linkedin/test_person.py1893 return_value=extracted("Jane Doe"),CODE
Docstring Block Structure5 hits · 25 pts
SeverityFileLineSnippetContext
HIGHlinkedin_mcp_server/setup.py52 Open browser for manual LinkedIn login with persistent profile. Opens a non-headless browser, navigates to LinSTRING
HIGHlinkedin_mcp_server/tools/person.py78 Get a specific person's LinkedIn profile. Args: linkedin_username: LinkedIn username (e.g.STRING
HIGHlinkedin_mcp_server/tools/person.py374 Get the authenticated user's own LinkedIn profile. Navigates to /in/me/ and resolves the redirect to oSTRING
HIGHlinkedin_mcp_server/tools/company.py47 Get a specific company's LinkedIn profile. Args: company_name: LinkedIn company name (e.g.STRING
HIGHlinkedin_mcp_server/drivers/browser.py668 Get existing browser or create and initialize a new one. Uses a singleton pattern to reuse the browser across STRING
AI Structural Patterns11 hits · 8 pts
SeverityFileLineSnippetContext
LOWlinkedin_mcp_server/tools/job.py136CODE
LOWlinkedin_mcp_server/linkedin/extractor.py165CODE
LOWlinkedin_mcp_server/linkedin/jobs.py182CODE
LOWlinkedin_mcp_server/linkedin/content.py172CODE
LOWtests/test_job_sidebar_scroll_dom.py50CODE
LOWtests/test_daemon_election.py6415CODE
LOWtests/differential/harness.py1658CODE
LOWtests/differential/harness.py7060CODE
LOWtests/differential/test_row_judgement.py455CODE
LOWtests/differential/watcher.py751CODE
LOWtests/differential/test_watcher.py549CODE
Verbosity Indicators3 hits · 7 pts
SeverityFileLineSnippetContext
LOW⚡linkedin_mcp_server/core/auth.py77 # Step 1: Fail-fast on auth blockersCOMMENT
LOW⚡linkedin_mcp_server/core/auth.py81 # Step 2: Selector check (PRIMARY)COMMENT
LOW⚡linkedin_mcp_server/core/auth.py90 # Step 3: URL fallbackCOMMENT
Structural Annotation Overuse3 hits · 7 pts
SeverityFileLineSnippetContext
LOW⚡linkedin_mcp_server/core/auth.py77 # Step 1: Fail-fast on auth blockersCOMMENT
LOW⚡linkedin_mcp_server/core/auth.py81 # Step 2: Selector check (PRIMARY)COMMENT
LOW⚡linkedin_mcp_server/core/auth.py90 # Step 3: URL fallbackCOMMENT
Self-Referential Comments2 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUMlinkedin_mcp_server/logging_config.py67 # Create a copy of the record to avoid modifying the originalCOMMENT
MEDIUMtests/conftest.py439 # Create a marker file so profile_exists() returns TrueCOMMENT
Modern AI Meta-Vocabulary1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMlinkedin_mcp_server/bootstrap.py4182 # session (orchestrate.py:254). The "no live session" and "could notCOMMENT
Redundant / Tautological Comments1 hit · 2 pts
SeverityFileLineSnippetContext
LOW.github/workflows/release.yml49 # Check if version actually changedCOMMENT
Overly Generic Function Names1 hit · 0 pts
SeverityFileLineSnippetContext
LOWtests/test_cli_main.py1354 def handle_request(self, request: httpx2.Request) -> httpx2.Response:CODE