Brainctl (TSchonleber) MCP Server

brainctl PyPI v2.8.0

Published by tschonleber — no publish provenance, so origin is unverified, but the source is public: the repository link below is self-declared yet readable, so you can inspect the code before adopting it.

Trust grade
A
93/100
Last scanned get badge →
Trust
A · 93/100
Adoption risk for you: the threat score, then adjusted down for blast radius, publisher verification and how much the scan could see. Deterministic; every point is auditable.
Capability
High
Blast radius if it went rogue — what the server’s tools could reach. Independent of trust.
Coverage
Source
How much the scan could actually inspect. Shallow coverage is stated, never hidden.
A Why this grade threat 100 − adoption risk = 93/100

The grade answers one question — how safe is this server for you to adopt — so it is computed in two auditable stages. Nothing below is an opinion or an LLM's guess; every line is a real term the deterministic engine applied, and the same input always yields the same number.

1. Threat score — 100 − 0 = 100. What the published surface and source actually contain:

The deterministic scan raised no scored threat in the surface it inspected — the threat score stayed at 100. Capability observations and advisory notes are recorded but never lower it.

2. Client adoption risk — 100 − 7 = 93. Three small, subtract-only factors that reflect your risk in adopting it — a clean scan proves less on a powerful, unverified or barely-inspectable package, so the grade says so plainly:

PointsAdoption-risk factor
−6 capability blast radius (high) — client exposure if the model is manipulated
−1 publisher verification (public source) — no provenance, but the source is public and inspectable

Capability observations and info notes are shown under Findings but never scored. Open any row's finding below for the file, line and evidence behind a deduction.

Findings 11

high Shell/command execution in server code (src/agentmemory/_impl.py)MTC-SRC-002

In the server's implementation (`src/agentmemory/_impl.py:5226`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.

Evidence: TIER_LABELS = { 0: "exec (unlimited)", 1: "senior-ic (5K)", 2: "specialist (2K)", 3: "worker (500)", }

Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.

Location: server src/agentmemory/_impl.py

high Shell/command execution in server code (src/agentmemory/code_ingest.py)MTC-SRC-002

In the server's implementation (`src/agentmemory/code_ingest.py:271`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.

Evidence: try: out = subprocess.run( ["git", "-C", str(root), "ls-files", "--cached", "--others",

Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.

Location: server src/agentmemory/code_ingest.py

high Shell/command execution in server code (src/agentmemory/hippocampus.py)MTC-SRC-002

In the server's implementation (`src/agentmemory/hippocampus.py:2418`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.

Evidence: n" / "brainctl" subprocess.run( [str(brainctl), "-a", event_agent, "event", "add", alert_summary,

Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.

Location: server src/agentmemory/hippocampus.py

high Shell/command execution in server code (src/agentmemory/marketplace_api.py)MTC-SRC-002

In the server's implementation (`src/agentmemory/marketplace_api.py:667`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.

Evidence: try: proc = subprocess.run( [node, str(helper), "--request", request_path], capture_

Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.

Location: server src/agentmemory/marketplace_api.py

high Shell/command execution in server code (src/agentmemory/mcp_cleanup.py)MTC-SRC-002

In the server's implementation (`src/agentmemory/mcp_cleanup.py:94`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.

Evidence: ive). """ out = subprocess.run( ["ps", "-eo", "pid,ppid,etime,user,command"], capture_output=Tru

Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.

Location: server src/agentmemory/mcp_cleanup.py

high Shell/command execution in server code (src/agentmemory/mcp_tools_health.py)MTC-SRC-002

In the server's implementation (`src/agentmemory/mcp_tools_health.py:627`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.

Evidence: s _out: subprocess.run( ["sqlite3", str(DB_PATH), ".dump"], stdo

Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.

Location: server src/agentmemory/mcp_tools_health.py

high Shell/command execution in server code (src/agentmemory/minting.py)MTC-SRC-002

In the server's implementation (`src/agentmemory/minting.py:407`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.

Evidence: try: proc = subprocess.run( [node, str(helper), "--request", request_path], capture_

Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.

Location: server src/agentmemory/minting.py

high Shell/command execution in server code (src/agentmemory/update.py)MTC-SRC-002

In the server's implementation (`src/agentmemory/update.py:101`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.

Evidence: try: result = subprocess.run( [sys.executable, "-m", "pip", "show", "brainctl"], captu

Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.

Location: server src/agentmemory/update.py

medium Dynamic module load from a non-literal (src/agentmemory/code_ingest.py)MTC-SRC-005

In the server's implementation (`src/agentmemory/code_ingest.py:188`): Loading a module chosen at runtime (from a variable) can pull in and run attacker-influenced code paths. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.

Evidence: try: __import__(mod) except ImportError: missing.append(mod) if missing:

Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.

Location: server src/agentmemory/code_ingest.py

low Shell/command execution in packaging/dev tooling (tests/test_cli.py)MTC-SRC-002

In a packaging/dev/install script (shipped, but not the server runtime) (`tests/test_cli.py:28`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.

Evidence: n()" ) result = subprocess.run( [sys.executable, "-c", patch_code], capture_output=True, text=Tr

Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.

Location: server tests/test_cli.py

low Shell/command execution in packaging/dev tooling (tests/test_cmd_update.py)MTC-SRC-002

In a packaging/dev/install script (shipped, but not the server runtime) (`tests/test_cmd_update.py:6`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.

Evidence: nd mocks the underlying subprocess.run (and the small wrapper helpers in agentmemory.update). This is dramatically faste

Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.

Location: server tests/test_cmd_update.py

Tools 200

Each tool and what it can reach — statically extracted from the published source.

  • acc_evaluateno sensitive capability
  • acc_predictno sensitive capability
  • acc_resolveno sensitive capability
  • acc_statusno sensitive capability
  • access_log_annotateno sensitive capability
  • affect_checkno sensitive capability
  • affect_classifyno sensitive capability
  • affect_logno sensitive capability
  • affect_monitorno sensitive capability
  • agent_activityno sensitive capability
Show 190 more tools ↓
  • agent_adminno sensitive capability
  • agent_listno sensitive capability
  • agent_modelno sensitive capability
  • agent_orientno sensitive capability
  • agent_pingno sensitive capability
  • agent_registerno sensitive capability
  • agent_wrap_upno sensitive capability
  • allostatic_primeno sensitive capability
  • amygdala_extinguishno sensitive capability
  • amygdala_query_valenceno sensitive capability
  • amygdala_statusno sensitive capability
  • amygdala_tagno sensitive capability
  • aras_driveno sensitive capability
  • aras_historyno sensitive capability
  • aras_register_triggerno sensitive capability
  • aras_statusno sensitive capability
  • aras_transitionno sensitive capability
  • attention_snapshotno sensitive capability
  • backupno sensitive capability
  • beliefno sensitive capability
  • belief_collapseno sensitive capability
  • belief_conflictsno sensitive capability
  • belief_conflicts_scanno sensitive capability
  • belief_consensusno sensitive capability
  • belief_diffno sensitive capability
  • belief_getno sensitive capability
  • belief_mergeno sensitive capability
  • belief_propagateno sensitive capability
  • belief_seedno sensitive capability
  • belief_setno sensitive capability
  • bg_action_registerno sensitive capability
  • bg_hold_releaseno sensitive capability
  • bg_hold_triggerno sensitive capability
  • bg_holds_activeno sensitive capability
  • bg_modulator_setno sensitive capability
  • bg_shadow_statsno sensitive capability
  • bg_statusno sensitive capability
  • bg_sweep_tracesno sensitive capability
  • bg_td_emitno sensitive capability
  • bg_weights_showno sensitive capability
  • budget_statusno sensitive capability
  • ca1_compareno sensitive capability
  • ca1_statusno sensitive capability
  • ca1_subiculum_historyno sensitive capability
  • cerebellum_module_registerno sensitive capability
  • cerebellum_observeno sensitive capability
  • cerebellum_predictno sensitive capability
  • cerebellum_statusno sensitive capability
  • claustrum_memory_bindingsno sensitive capability
  • claustrum_record_bindingno sensitive capability
  • claustrum_register_modalityno sensitive capability
  • claustrum_setno sensitive capability
  • claustrum_statusno sensitive capability
  • cold_memoriesno sensitive capability
  • collapse_logno sensitive capability
  • collapse_statsno sensitive capability
  • colliculi_historyno sensitive capability
  • colliculi_orientno sensitive capability
  • colliculi_register_patternno sensitive capability
  • colliculi_statusno sensitive capability
  • connectome_neighborsno sensitive capability
  • connectome_node_getno sensitive capability
  • connectome_register_edgeno sensitive capability
  • connectome_register_nodeno sensitive capability
  • connectome_statusno sensitive capability
  • consolidationno sensitive capability
  • consolidation_runno sensitive capability
  • consolidation_scheduleno sensitive capability
  • consolidation_statsno sensitive capability
  • contextno sensitive capability
  • context_addno sensitive capability
  • context_searchno sensitive capability
  • decision_addno sensitive capability
  • demand_forecastno sensitive capability
  • dmn_schedule_statusno sensitive capability
  • dmn_simulateno sensitive capability
  • dmn_speculative_listno sensitive capability
  • dmn_validateno sensitive capability
  • dream_cycleno sensitive capability
  • drive_recommend_modeno sensitive capability
  • drive_registerno sensitive capability
  • drive_sampleno sensitive capability
  • drive_statusno sensitive capability
  • entity_adminno sensitive capability
  • entity_createno sensitive capability
  • entity_getno sensitive capability
  • entity_observeno sensitive capability
  • entity_relateno sensitive capability
  • entity_searchno sensitive capability
  • entorhinal_activateno sensitive capability
  • entorhinal_lookupno sensitive capability
  • entorhinal_statusno sensitive capability
  • epochno sensitive capability
  • event_addno sensitive capability
  • event_searchno sensitive capability
  • expertiseno sensitive capability
  • expertise_buildno sensitive capability
  • expertise_listno sensitive capability
  • expertise_showno sensitive capability
  • expertise_updateno sensitive capability
  • federatedno sensitive capability
  • federated_entity_searchno sensitive capability
  • federated_memory_searchno sensitive capability
  • federated_searchno sensitive capability
  • federated_statsno sensitive capability
  • free_energy_checkno sensitive capability
  • gapsno sensitive capability
  • gaps_listno sensitive capability
  • gaps_refreshno sensitive capability
  • gaps_resolveno sensitive capability
  • gaps_scanno sensitive capability
  • habenula_fireno sensitive capability
  • habenula_historyno sensitive capability
  • habenula_register_triggerno sensitive capability
  • habenula_resetno sensitive capability
  • habenula_statusno sensitive capability
  • handoff_addno sensitive capability
  • handoff_adminno sensitive capability
  • handoff_consumeno sensitive capability
  • handoff_expireno sensitive capability
  • handoff_latestno sensitive capability
  • handoff_pinno sensitive capability
  • healthno sensitive capability
  • hippocampus_ca3_completeno sensitive capability
  • hippocampus_dg_checkno sensitive capability
  • hippocampus_dg_separateno sensitive capability
  • hippocampus_subfields_statusno sensitive capability
  • hot_memoriesno sensitive capability
  • insula_sampleno sensitive capability
  • insula_stateno sensitive capability
  • insula_subscribeno sensitive capability
  • knowledgeno sensitive capability
  • lifecycleno sensitive capability
  • lintno sensitive capability
  • mebno sensitive capability
  • memory_addno sensitive capability
  • memory_adminno sensitive capability
  • memory_calibrationno sensitive capability
  • memory_promoteno sensitive capability
  • memory_searchno sensitive capability
  • memory_utility_rateno sensitive capability
  • neurono sensitive capability
  • pagerankno sensitive capability
  • policyno sensitive capability
  • procedure_adminno sensitive capability
  • quarantineno sensitive capability
  • quarantine_listno sensitive capability
  • quarantine_purgeno sensitive capability
  • quarantine_reviewno sensitive capability
  • reconsolidateno sensitive capability
  • reconsolidation_checkno sensitive capability
  • reflexionno sensitive capability
  • replay_boostno sensitive capability
  • replay_queueno sensitive capability
  • resolve_conflictno sensitive capability
  • retrieval_effectivenessno sensitive capability
  • scheduleno sensitive capability
  • searchno sensitive capability
  • search_patternsno sensitive capability
  • statsno sensitive capability
  • subiculum_outputno sensitive capability
  • subsystem_configureno sensitive capability
  • subsystem_emitno sensitive capability
  • subsystem_historyno sensitive capability
  • subsystem_listno sensitive capability
  • subsystem_list_actionsno sensitive capability
  • subsystem_registerno sensitive capability
  • subsystem_statusno sensitive capability
  • taskno sensitive capability
  • task_addno sensitive capability
  • task_listno sensitive capability
  • task_updateno sensitive capability
  • temporalno sensitive capability
  • thinkno sensitive capability
  • tier_statsno sensitive capability
  • tomno sensitive capability
  • trigger_adminno sensitive capability
  • trigger_checkno sensitive capability
  • trigger_createno sensitive capability
  • trigger_deleteno sensitive capability
  • trigger_listno sensitive capability
  • trigger_updateno sensitive capability
  • trustno sensitive capability
  • usageno sensitive capability
  • validateno sensitive capability
  • wallet_createno sensitive capability
  • wallet_showno sensitive capability
  • whosknowsno sensitive capability
  • workspaceno sensitive capability
  • worldno sensitive capability

What this scan could not see

Versions 1

Scan history per published version. The engine is deterministic — the same version always yields the same score, so a changed score means the package itself changed.

VersionScoreFindingsEngineScanned
v2.8.0 latest A 93/100 11 1.8.0 2026-07-23

Embed this score

Show this server's live Trust Score in your README, docs or website. The badge is served straight from the registry and updates automatically after every rescan — no API key needed. It links back to this page, so anyone who sees the grade can also read the findings behind it instead of taking a number on faith.

MCP Trust Score: A · 93/100
Markdown (GitHub README)
[![MCP Trust Score](https://mcptrustchecker.com/registry/brainctl/badge.svg)](https://mcptrustchecker.com/registry/brainctl)
HTML
<a href="https://mcptrustchecker.com/registry/brainctl"><img src="https://mcptrustchecker.com/registry/brainctl/badge.svg" alt="MCP Trust Score" height="20"></a>
Prefer shields.io styling? Point it at https://mcptrustchecker.com/registry/brainctl/badge.json via https://img.shields.io/endpoint?url=…

Verify this score yourself

The score above is reproducible: the same package version always yields the same result. Run it locally or over the free API — no account, no LLM, fully deterministic.

npx mcptrustchecker scan brainctl --online --registry pypi

Use the free API → How scoring works

Other implementations of Brainctl 1

Independent packages implementing the same tool, scanned with the same engine. Compare all 2 side by side →

More in Developer Tools