Skip to content
BreachPilot

MCP Tool Catalog (Generated)

Machine-readable companion to docs/mcp/tool-families/ and docs/mcp/servers/. Every tool below was verified to exist as an @mcp.tool def at generation time — no invented tools. Gates are the literal @audit_tool / @require_allowlist(...) decorators on each def; purpose is the docstring first line. Defensive-server tools enforce scope via an inline allowlist check instead of decorators; engine-server tools are read-only advisory with no gates.

Source locations use <file>:<line> relative to the repo root. Registration functions (register_*_tools) are auto-discovered via tools/mcp_tools/registry.py:collect_tools(); no manual list edit is needed.

Generated 2026-09-07 from 41 source files (166 tools across 37 families).

engine (mcp_engine_server.py) (5)

  • Registration: inline @mcp.tool defs in create_mcp_server() — no register_* wrapper.
ToolGatesPurposeSource
search_skillsLexical + field-weighted search over the runtime skill catalogmcp_engine_server.py:96
get_skillReturn one skill's full body + metadata by name.mcp_engine_server.py:122
cve_lookupNVD CVE lookup for a known product/version string (e.g.mcp_engine_server.py:147
list_runsList recent assessment runs (read-only history). Newest first.mcp_engine_server.py:157
get_runReturn one run's details: state, request, preview, result, error.mcp_engine_server.py:185

defensive (mcp_server.py) (8)

  • Registration: inline @mcp.tool defs in create_mcp_server() — no register_* wrapper.
ToolGatesPurposeSource
run_nmap_ping_sweepRun nmap -sn against an approved subnet. Returns live hosts.mcp_server.py:232
run_nmap_triage_scanTop-port triage scan against an approved subnet.mcp_server.py:244
run_nmap_basic_scanService/version detection on a single approved host.mcp_server.py:255
run_nmap_service_scanService + scripts + OS detection on a single approved host.mcp_server.py:263
run_nmap_vuln_scanRun the Nmap NSE vuln category on a single approved host.mcp_server.py:274
run_limited_terminalRun a command if it is an allowlisted Nmap command and themcp_server.py:282
search_vulnerability_intelDefensive public vulnerability/advisory search. The query ismcp_server.py:331
search_cve_intelNVD CVE lookup for a known product/version string.mcp_server.py:342

tools/mcp_tools/ad.py (7)

  • Registration: register_ad_tools() (tools/mcp_tools/ad.py:348) — auto-discovered; no edit to mcp_exploit_server.py.
ToolGatesPurposeSource
asrep_roast@require_allowlist()AS-REP Roast accounts with preauth disabled (impacket-GetNPUsers) for offline cracking.tools/mcp_tools/ad.py:365
pass_the_hash@require_allowlist()Execute a command on a Windows target via NTLM hash (no plaintext).tools/mcp_tools/ad.py:442
adcs_enum@require_allowlist()Enumerate AD Certificate Services templates via certipy (ESC1-8).tools/mcp_tools/ad.py:498
bloodhound_collect@require_allowlist()Collect BloodHound data (users/groups/sessions/acls) for graph attack-path analysis.tools/mcp_tools/ad.py:553
responder_relay@require_allowlist()Relay coerced NTLM auth via impacket ntlmrelayx.tools/mcp_tools/ad.py:607
smb_signing_check@require_allowlist()Check whether the target requires SMB signing (relay feasibility).tools/mcp_tools/ad.py:673
golden_ticket@require_allowlist()Mint a Kerberos golden ticket (TGT) from a stolen krbtgt NTLM hash.tools/mcp_tools/ad.py:710

tools/mcp_tools/assessment_state.py (6)

  • Registration: register_assessment_state_tools() (tools/mcp_tools/assessment_state.py:108) — auto-discovered; no edit to mcp_exploit_server.py.
ToolGatesPurposeSource
get_assessment_state@require_allowlist()Return a compact snapshot of assessment state for one target: goal, phase, hypotheses, attack-plan DAG summary, newest recon result (services/CVEs), credential count, and an audit-trail rollup. Read-only; target must be in the allowlist. Ra…tools/mcp_tools/assessment_state.py:127
query_capabilities@audit_toolDiscover available capabilities without touching the target. scope=modules lists all registered attack modules via capability_record() (filter by service substring against module.target_services when service is set). scope=tools lists regis…tools/mcp_tools/assessment_state.py:142
get_capability_details@audit_toolGet the full capability record for one named module, tool, or skill, plus (for modules) an applicability explanation against a minimal empty-services context so the model can see why it would/wouldn't rank. Advisory only. Returns a CAPABILI…tools/mcp_tools/assessment_state.py:201
get_evidence@require_allowlist()Read recent exploit_audit.jsonl entries for one target and return compact evidence refs (exploit_audit:<target>:<attempt_id> with tool/status/duration only -- raw command/args are never emitted, they may contain secrets). target must be in …tools/mcp_tools/assessment_state.py:272
record_hypothesis@require_allowlist()Record one tracked hypothesis about the target into the assessment state store (<workspace>/plans/<target>_assessment.json). target must be in the allowlist (re-validated before writing -- the path is LLM-influenced). Returns a HYPOTHESIS_R…tools/mcp_tools/assessment_state.py:318
update_task@require_allowlist()Mutate one step of the attack plan for one target: complete/fail/cancel/reset. Loads <workspace>/plans/<ip>_plan.json via AttackPlanner, dispatches to mark_step_done/fail_step/cancel_step/reset_step, and saves. target must be in the allowli…tools/mcp_tools/assessment_state.py:356

tools/mcp_tools/attack_modules.py (2)

  • Registration: register_attack_module_tools() (tools/mcp_tools/attack_modules.py:22) — auto-discovered; no edit to mcp_exploit_server.py.
ToolGatesPurposeSource
list_attack_modules@audit_toolList all registered pre-packaged attack modules.tools/mcp_tools/attack_modules.py:33
run_attack_module@require_allowlist()Execute a pre-packaged attack module against a target IP.tools/mcp_tools/attack_modules.py:66

tools/mcp_tools/browser.py (13)

  • Registration: register_browser_tools() (tools/mcp_tools/browser.py:185) — auto-discovered; no edit to mcp_exploit_server.py.
ToolGatesPurposeSource
browser_start@require_allowlist("target")Start a sandboxed Chromium session locked to the target. Returns SESSION_STARTED with the session id for browser_navigate/browser_observe/...tools/mcp_tools/browser.py:205
browser_navigate@require_allowlist("target")Navigate a browser session to a URL (redirect/SPA aware). The URL host must be allowlisted. Returns the final URL + status.tools/mcp_tools/browser.py:228
browser_observe@require_allowlist("target")Harvest a compact page snapshot: title/URL/DOM summary/forms/endpoints/scripts/framework indicators. Bounded; never raw HTML.tools/mcp_tools/browser.py:272
browser_page_state@require_allowlist("target")Lightweight page-state snapshot (URL/title/forms/endpoints) without a full observation drain.tools/mcp_tools/browser.py:327
browser_network_events@require_allowlist("target")Captured request/response records (headers/body samples redacted). Paginate with limit/after_id.tools/mcp_tools/browser.py:353
browser_storage@require_allowlist("target")Cookies + localStorage/sessionStorage for the origin. Values are redacted; persist useful ones via cred_store_add explicitly.tools/mcp_tools/browser.py:391
browser_screenshot@require_allowlist("target")Capture a viewport screenshot as a hashed artifact under the workspace.tools/mcp_tools/browser.py:417
browser_execute_js@require_allowlist("target")Execute JavaScript in the page and capture a bounded, redacted preview. Requires browser.allow_mutating_actions (lab opt-in).tools/mcp_tools/browser.py:448
browser_discover_forms@require_allowlist("target")Discover forms + fields on the live page (metadata fingerprints, no submission).tools/mcp_tools/browser.py:492
browser_discover_endpoints@require_allowlist("target")Discover REST/GraphQL endpoints from captured traffic + script refs.tools/mcp_tools/browser.py:524
browser_close@require_allowlist("target")Hard-close a browser session (idempotent; releases worker resources).tools/mcp_tools/browser.py:561
browser_submit@require_allowlist("target")Fill one live-page form by field name and submit it. The form's action host must be allowlisted. Requires browser.allow_mutating_actions.tools/mcp_tools/browser.py:584
browser_replay@require_allowlist("target")Replay one HTTP request through the session (captured event_id as base, explicit url/method/headers/body override). The final URL host must be allowlisted. Requires browser.allow_mutating_actions.tools/mcp_tools/browser.py:664

tools/mcp_tools/cracking.py (1)

  • Registration: register_cracking_tools() (tools/mcp_tools/cracking.py:21) — auto-discovered; no edit to mcp_exploit_server.py.
ToolGatesPurposeSource
run_hash_crack@audit_toolCrack a hash locally with hashcat or john.tools/mcp_tools/cracking.py:72

tools/mcp_tools/credentials.py (7)

  • Registration: register_credential_tools() (tools/mcp_tools/credentials.py:16) — auto-discovered; no edit to mcp_exploit_server.py.
ToolGatesPurposeSource
cred_store_add@require_allowlist()Store a harvested or known credential for a target in the encrypted credential vault. The secret (password/hash/token/key) is Fernet-encrypted at rest under exploit_workspace/credentials/<target_ip>/credentials.jsonl and is never written to…tools/mcp_tools/credentials.py:38
cred_store_get@require_allowlist()Retrieve stored credentials for a target from the encrypted vault. By default returns a SAFE summary (secrets masked). Set include_secret=True WITH a specific username to reveal the decrypted secret for reuse in lateral_exec/dump_credential…tools/mcp_tools/credentials.py:89
cred_store_list@require_allowlist()List all stored credentials for a target as a safe summary (no cleartext secrets). Shows username, type, target/source host, and confirmed status for each record in the encrypted vault, plus whether at-rest encryption is active.tools/mcp_tools/credentials.py:126
cred_store_confirm@require_allowlist()Mark a stored credential confirmed=True. Use ONLY after validating the credential by successfully reusing it against the target (e.g. it authenticated via lateral_exec/dump_credentials). Pass validated=True to assert that reuse succeeded --…tools/mcp_tools/credentials.py:152
lateral_exec@require_allowlist()Execute a command on a remote Windows host via impacket lateral-movement tools. Methods: wmiexec, smbexec, psexec, atexec. Provide either a plaintext password or an NTLM hash (format LM:NT or just NT). Use after obtaining credentials to mov…tools/mcp_tools/credentials.py:190
dump_credentials@require_allowlist()Dump credentials from a target using secretsdump, mimikatz, or local SAM/LSASS extraction. Methods: secretsdump (remote via impacket), sam_local (local registry hives), mimikatz (if binary available), lsass (procdump + mimikatz), dcsync (im…tools/mcp_tools/credentials.py:250
kerberoast@require_allowlist()Perform Kerberoasting against a Windows domain to extract TGS service tickets for offline hash cracking. Uses impacket GetUserSPNs.py. Provide domain, credentials (password or NTLM hash), and optionally the DC IP. Returns the path to the ca…tools/mcp_tools/credentials.py:373

tools/mcp_tools/domain.py (5)

  • Registration: register_domain_tools() (tools/mcp_tools/domain.py:584) — auto-discovered; no edit to mcp_exploit_server.py.
ToolGatesPurposeSource
resolve_domain@require_allowlist("domain")Resolve DNS records for a domain (A, AAAA, MX, NS, TXT, CNAME, SOA, CAA).tools/mcp_tools/domain.py:594
enumerate_subdomains@require_allowlist("domain")Enumerate subdomains of a domain via passive + active sources.tools/mcp_tools/domain.py:660
dns_recon@require_allowlist("domain")Full DNS reconnaissance against a domain.tools/mcp_tools/domain.py:879
vhost_enum@require_allowlist(host_param="domain")Enumerate virtual hosts on a web server via Host-header rotation.tools/mcp_tools/domain.py:1069
domain_whois@require_allowlist("domain")WHOIS lookup + DNS-provider profiling for a domain.tools/mcp_tools/domain.py:1232

tools/mcp_tools/hitl.py (3)

  • Registration: register_hitl_tools() (tools/mcp_tools/hitl.py:301) — auto-discovered; no edit to mcp_exploit_server.py.
ToolGatesPurposeSource
propose_finding@audit_toolPropose a candidate finding for human review (agents propose, human decides). Appends a PROPOSED finding to reports/<run_id>/enhanced/enhanced_report.json — never APPROVED. A human promotes it via hitl_decide (operator path) or the WebUI Ev…tools/mcp_tools/hitl.py:309
hitl_decide@audit_toolRecord a human Approve/Reject decision on a proposed finding (operator-only human path — no target touch). Persists APPROVED/REJECTED + hitl_history[] (with actor) into the run artifact JSON. Only actor='human' is accepted — any other actor…tools/mcp_tools/hitl.py:370
list_proposed@audit_toolList findings awaiting human review (hitl_status=PROPOSED). Empty run_id scans all runs (newest first). Zero target touch — reads the run artifact JSON only. Approved/rejected findings are hidden here; the final report surfaces APPROVED fin…tools/mcp_tools/hitl.py:403

tools/mcp_tools/killchain.py (3)

  • Registration: register_killchain_tools() (tools/mcp_tools/killchain.py:89) — auto-discovered; no edit to mcp_exploit_server.py.
ToolGatesPurposeSource
killchain_status@audit_toolRead-only kill-chain snapshot for a target: current state, applicable edges, and the shortest verified-edge path to the configured goal state. No target touch -- reads the kill-chain graph only.tools/mcp_tools/killchain.py:125
killchain_attempt@require_allowlist("target")Attempt a verified kill-chain transition (e.g. creds_in_hand -> shell_as_user). The machine runs the edge's playbook through the normal MCP tool layer (allowlist + audit apply) and then independently verifies success via check probes; the s…tools/mcp_tools/killchain.py:148
killchain_plan@audit_toolCompute the shortest kill-chain path (BFS over verified edges) from the target's current state to a goal state. Read-only planning -- executes nothing. goal_state defaults to the configured killchain.goal_state (fallback ``shell_as_…tools/mcp_tools/killchain.py:225

tools/mcp_tools/metasploit.py (19)

  • Registration: register_metasploit_tools() (tools/mcp_tools/metasploit.py:262) — auto-discovered; no edit to mcp_exploit_server.py.
ToolGatesPurposeSource
run_msf_module@require_allowlist()Run a Metasploit module against the target. Pass the module path (e.g. 'exploit/multi/http/log4shell_header_injection') and key=value options separated by spaces. The module runs in a visible terminal.tools/mcp_tools/metasploit.py:284
msfconsole_start@audit_toolStart an interactive msfconsole session in a tmux session. This is a persistent session that stays running in the background. Use msfconsole_command to send commands to it.tools/mcp_tools/metasploit.py:484
msfconsole_stop@audit_toolStop the interactive msfconsole session.tools/mcp_tools/metasploit.py:511
msfconsole_command@audit_toolExecute a command in the interactive msfconsole session. Use for: loading modules, setting options, running exploits, checking sessions, etc. The command is sent to the persistent msfconsole and output is captured.tools/mcp_tools/metasploit.py:530
msf_run_exploit@require_allowlist()Run a Metasploit exploit module against a target using the persistent msfconsole. Provide module path (e.g., 'exploit/multi/http/log4shell_header_injection'), target IP, and optional key=value options separated by spaces. Returns the full e…tools/mcp_tools/metasploit.py:570
msf_run_auxiliary@require_allowlist()Run a Metasploit auxiliary module (scanner, fuzzer, dos, etc.) against a target. Use for: port scanning, service enumeration, vulnerability checking.tools/mcp_tools/metasploit.py:634
msf_list_sessions@audit_toolList all active Metasploit sessions (meterpreter, shell, cmd). Returns session IDs, types, target IPs, and platforms.tools/mcp_tools/metasploit.py:675
msf_interact_session@audit_toolSend a command to a specific Metasploit session (meterpreter or shell). Use for: running post-exploitation commands, gathering system info, pivoting, etc. The session is backgrounded after the command completes.tools/mcp_tools/metasploit.py:707
msf_run_post_module@audit_toolRun a post-exploitation module against a specific Metasploit session. Use for: privilege escalation, credential harvesting, persistence, keylogging, screenshot, etc.tools/mcp_tools/metasploit.py:751
msf_kill_session@audit_toolKill a specific Metasploit session.tools/mcp_tools/metasploit.py:787
msf_generate_payload@audit_toolGenerate a payload using msfvenom through the Metasploit bridge. Supports encoders and bad character avoidance. Returns the path to the generated payload file.tools/mcp_tools/metasploit.py:814
msf_run_resource_script@audit_toolCreate and run a Metasploit resource script in the persistent msfconsole. Resource scripts automate sequences of msfconsole commands. Use for: automated exploitation chains, mass scanning, post-exploitation workflows.tools/mcp_tools/metasploit.py:904
msf_run_recipe@audit_toolRun a named Metasploit recipe (curated module+option preset). Recipes: smb_version, bluekeep, psexec, cred_gather_win, local_exploit_suggester, hashdump, getsystem, handler. Pass target_ip for exploit/auxiliary kinds, session_id for post ki…tools/mcp_tools/metasploit.py:945
msf_start_handler@audit_toolStart exploit/multi/handler as a backgrounded job to catch a generated payload. lhost is the operator callback host (must be in allowed_targets). Pairs with msf_generate_payload: generate a reverse payload, then start a handler on the same …tools/mcp_tools/metasploit.py:1004
msf_stop_handler@audit_toolStop all backgrounded handler jobs in the persistent msfconsole (jobs -K).tools/mcp_tools/metasploit.py:1058
msf_post_hashdump@audit_toolDump SAM hashes from a Windows meterpreter session (post/windows/gather/hashdump).tools/mcp_tools/metasploit.py:1107
msf_post_getsystem@audit_toolAttempt SYSTEM elevation on a Windows meterpreter session (post/windows/escalate/getsystem).tools/mcp_tools/metasploit.py:1120
msf_post_portfwd@audit_toolForward a local port through a meterpreter session to a remote host (portfwd). remote_host must be in allowed_targets (the allowlist is the pivot lock).tools/mcp_tools/metasploit.py:1133
msf_post_route@audit_toolAdd a route through a meterpreter session to a target subnet (post/multi/manage/autoroute). The subnet's network address must be in allowed_targets (pivot lock).tools/mcp_tools/metasploit.py:1170

tools/mcp_tools/mitre.py (1)

  • Registration: register_mitre_tools() (tools/mcp_tools/mitre.py:17) — auto-discovered; no edit to mcp_exploit_server.py.
ToolGatesPurposeSource
export_attack_navigator@audit_toolMap this run's audit trail to MITRE ATT&CK techniques and write atools/mcp_tools/mitre.py:23

tools/mcp_tools/modules/adaptive.py (2)

  • Registration: register_adaptive_tools() (tools/mcp_tools/modules/adaptive.py:17) — auto-discovered; no edit to mcp_exploit_server.py.
ToolGatesPurposeSource
craft_exploit@require_allowlist()Generate a custom exploit script tailored to a specific target service.tools/mcp_tools/modules/adaptive.py:28
mutate_exploit@audit_toolMutate a previously generated exploit script based on failure feedback.tools/mcp_tools/modules/adaptive.py:128

tools/mcp_tools/modules/campaign.py (4)

  • Registration: register_campaign_tools() (tools/mcp_tools/modules/campaign.py:32) — auto-discovered; no edit to mcp_exploit_server.py.
ToolGatesPurposeSource
start_autonomous_campaign@require_allowlist()Start a fully autonomous attack campaign against a target IP.tools/mcp_tools/modules/campaign.py:43
get_campaign_status@audit_toolGet the current status of a running or completed autonomous campaign.tools/mcp_tools/modules/campaign.py:247
run_campaign_step@audit_toolExecute a single pending task from an autonomous campaign synchronously.tools/mcp_tools/modules/campaign.py:306
stop_campaign@audit_toolGracefully stop a running autonomous campaign.tools/mcp_tools/modules/campaign.py:486

tools/mcp_tools/modules/hash.py (1)

  • Registration: register_hash_tools() (tools/mcp_tools/modules/hash.py:128) — auto-discovered; no edit to mcp_exploit_server.py.
ToolGatesPurposeSource
hash_crack_identify@audit_toolIdentify hash type and suggest cracking commands. Provide an NTLM, NetNTLMv2, Kerberos TGS, MD5, SHA, or bcrypt hash. Returns hashcat mode and cracking command.tools/mcp_tools/modules/hash.py:139

tools/mcp_tools/modules/planning.py (3)

  • Registration: register_planning_tools() (tools/mcp_tools/modules/planning.py:18) — auto-discovered; no edit to mcp_exploit_server.py.
ToolGatesPurposeSource
create_attack_plan@require_allowlist()Create a structured attack plan for a target IP.tools/mcp_tools/modules/planning.py:29
get_current_plan@require_allowlist()Retrieve the current attack plan for a target IP.tools/mcp_tools/modules/planning.py:106
replan@require_allowlist()Adapt the current attack plan based on a failure or new information.tools/mcp_tools/modules/planning.py:148

tools/mcp_tools/modules/synthesis.py (1)

  • Registration: register_synthesis_tools() (tools/mcp_tools/modules/synthesis.py:16) — auto-discovered; no edit to mcp_exploit_server.py.
ToolGatesPurposeSource
cve_to_exploit_synth@require_allowlist()Generate a Python exploit script for a specific CVE against the target. Provide the CVE ID (e.g., CVE-2021-44228), service name, and version. The tool fetches CVE details and returns a ready-to-use exploit script. Use write_python_file to s…tools/mcp_tools/modules/synthesis.py:720

tools/mcp_tools/modules/web.py (7)

  • Registration: register_web_tools() (tools/mcp_tools/modules/web.py:170) — auto-discovered; no edit to mcp_exploit_server.py.
ToolGatesPurposeSource
jwt_tamper@require_allowlist()Test JWT tokens for algorithm confusion (alg:none), HMAC key confusion, and weak secret brute-force.tools/mcp_tools/modules/web.py:181
ssti_probe@require_allowlist()Probe for Server-Side Template Injection (SSTI) across Jinja2, Twig, Freemarker, Velocity, Smarty, and Mako engines.tools/mcp_tools/modules/web.py:365
graphql_introspect@require_allowlist()Extract GraphQL schema via introspection query.tools/mcp_tools/modules/web.py:498
race_request@require_allowlist()Send N concurrent HTTP requests to exploit TOCTOU race conditions.tools/mcp_tools/modules/web.py:639
timing_oracle@require_allowlist()Detect timing side-channels in login, password reset, and token validation endpoints.tools/mcp_tools/modules/web.py:752
request_smuggling_probe@require_allowlist()Test for HTTP request smuggling (CL.TE, TE.CL, TE.TE).tools/mcp_tools/modules/web.py:853
password_spray@require_allowlist()Spray one password across many common usernames.tools/mcp_tools/modules/web.py:981

tools/mcp_tools/operator_connection.py (7)

  • Registration: register_operator_connection_tools() (tools/mcp_tools/operator_connection.py:83) — auto-discovered; no edit to mcp_exploit_server.py.
ToolGatesPurposeSource
rce_exec@require_allowlist()Execute a one-shot RCE command against an authorized victim host and return output.tools/mcp_tools/operator_connection.py:92
establish_persistence@require_allowlist()Deploy a persistence implant on an authorized victim that beacons back to the operator box.tools/mcp_tools/operator_connection.py:138
list_connections@audit_toolList operator-box -> victim persistence connections.tools/mcp_tools/operator_connection.py:282
check_connection@require_allowlist()Health-check a persistence channel: verify implant still present on victim and listener running.tools/mcp_tools/operator_connection.py:322
remove_persistence@require_allowlist()Remove a persistence implant from a victim and optionally stop its operator listener.tools/mcp_tools/operator_connection.py:397
rce_listener_start@audit_toolStart an operator-side listener for persistence beacons (reverse shells).tools/mcp_tools/operator_connection.py:492
persistence_catalog@audit_toolList available persistence implant methods (operator catalog).tools/mcp_tools/operator_connection.py:549

tools/mcp_tools/parallel_agents.py (3)

  • Registration: register_parallel_agent_tools() (tools/mcp_tools/parallel_agents.py:258) — auto-discovered; no edit to mcp_exploit_server.py.
ToolGatesPurposeSource
spawn_subagent@audit_toolSpawn a specialist sub-agent to work in parallel while you continuetools/mcp_tools/parallel_agents.py:279
await_subagent@audit_toolBlock until a spawned sub-agent finishes and return its result.tools/mcp_tools/parallel_agents.py:342
list_subagents@audit_toolList all spawned sub-agents and their current status.tools/mcp_tools/parallel_agents.py:368

tools/mcp_tools/payloads.py (1)

  • Registration: register_payload_tools() (tools/mcp_tools/payloads.py:15) — auto-discovered; no edit to mcp_exploit_server.py.
ToolGatesPurposeSource
generate_payload@audit_toolGenerate a payload using msfvenom. Supports reverse_tcp, reverse_https, bind_tcp and many output formats (exe, elf, raw, python, csharp, dll, ps1). Returns the path to the generated payload file in the workspace and a preview of the command…tools/mcp_tools/payloads.py:26

tools/mcp_tools/peer_models.py (2)

  • Registration: register_peer_model_tools() (tools/mcp_tools/peer_models.py:40) — auto-discovered; no edit to mcp_exploit_server.py.
ToolGatesPurposeSource
consult_peer_models@audit_toolAsk configured peer AI models for advisory help. Use sparingly when crafting an exploit approach, reviewing generated exploit code, or recovering from repeated failures. Peers receive no tool schemas and cannot execute commands; they only r…tools/mcp_tools/peer_models.py:53
peer_review_outcome@audit_toolCross-model outcome judging (D3). Ask configured peer AI models to grade whether the evidence supports the given verdict (e.g. "compromised" / "refuted"). Advisory only -- the deterministic OutcomeJudge stays the authority. One alias plans,…tools/mcp_tools/peer_models.py:164

tools/mcp_tools/poc_verifier.py (1)

  • Registration: register_poc_verifier_tools() (tools/mcp_tools/poc_verifier.py:26) — auto-discovered; no edit to mcp_exploit_server.py.
ToolGatesPurposeSource
verify_poc@audit_toolSyntax-check (py_compile) and optionally Docker-compile-test a synthesized Python PoC. Returns {syntax_ok, docker_ok, stderr, code_sha256}. The PoC is NEVER executed -- this is a compile/import gate, not a sandbox guarantee. Docker containe…tools/mcp_tools/poc_verifier.py:36

tools/mcp_tools/recon.py (7)

  • Registration: register_recon_tools() (tools/mcp_tools/recon.py:29) — auto-discovered; no edit to mcp_exploit_server.py.
ToolGatesPurposeSource
check_os@require_allowlist()Probe the target to determine its operating system. Uses ping TTL analysis, banner grabs, and HTTP header probes on common ports. Returns the detected OS and guidance for exploitation tools.tools/mcp_tools/recon.py:40
quick_scan@require_allowlist()Fast multi-port TCP scanner with banner grabbing. MUCH faster than nmap for quick recon. Provide a comma-separated list of ports (default: common + eval-target lab ports). Returns which ports are open and any banners received. Use this FIRS…tools/mcp_tools/recon.py:255
run_full_recon@require_allowlist()Run a comprehensive reconnaissance pipeline against a target IP.tools/mcp_tools/recon.py:280
get_service_fingerprint@require_allowlist()Perform a deep service fingerprint on a specific port.tools/mcp_tools/recon.py:352
run_udp_recon@require_allowlist()Run a UDP port scan against the single target.tools/mcp_tools/recon.py:496
run_osint_recon@require_allowlist()Run passive OSINT aggregation against the single target.tools/mcp_tools/recon.py:543
diff_recon_runs@require_allowlist()Compare two persisted recon_result.json snapshots.tools/mcp_tools/recon.py:591

tools/mcp_tools/replay_simulator.py (1)

  • Registration: register_replay_simulator_tools() (tools/mcp_tools/replay_simulator.py:22) — auto-discovered; no edit to mcp_exploit_server.py.
ToolGatesPurposeSource
replay_simulate@audit_toolDry-run an attack plan against a saved ReconAssessment JSON for pre-commit critique. Both arguments are JSON strings. Returns confidence (0..1), critique text, and branch proposals. Zero target touch -- pure simulation. When the LLM is unav…tools/mcp_tools/replay_simulator.py:32

tools/mcp_tools/research.py (7)

  • Registration: register_research_tools() (tools/mcp_tools/research.py:14) — auto-discovered; no edit to mcp_exploit_server.py.
ToolGatesPurposeSource
search_exploit_db@audit_toolSearch the local exploit-db database via searchsploit. Returns exploit IDs, titles, paths and any associated CVEs. Use this to find known exploits for discovered services and CVEs.tools/mcp_tools/research.py:25
search_web_exploit@audit_toolRead-only public web search for candidate exploit, PoC, advisory, and vulnerability-research sources. Returns titles, URLs, snippets, source quality, provider metadata, and warnings; it does not fetch full pages or execute anything.tools/mcp_tools/research.py:31
fetch_webpage@audit_toolRead-only fetch for one public source URL discovered during research. Returns title, source URL, readable content, links, provider metadata, and warnings. Private/internal/localhost URLs are blocked by default, and this tool does not execut…tools/mcp_tools/research.py:39
deep_research@audit_toolPerform read-only multi-source research for an authorized vulnerability, CVE, product/version, or technique. Searches candidate sources, ranks/de-duplicates them, fetches selected public pages, and returns structured JSON with citations, ke…tools/mcp_tools/research.py:47
search_cve_intel@audit_toolLook up CVEs in the NVD database for a known CVE ID or product/version string. Returns CVSS score, description, and reference links.tools/mcp_tools/research.py:55
cve_to_poc@audit_toolResolve a CVE ID to VERIFIED PoC URLs only (GitHub Search API + searchsploit --cve + NVD references, each HTTP-existence-checked). Returns CVE_TO_POC_RESULTS with verified URLs, or NO_VERIFIED_POC_FOUND if none verify. NEVER fabricate or gu…tools/mcp_tools/research.py:73
search_threat_intel@audit_toolSearch OSV.dev / GitHub Security Advisories / CISA KEV for a package name or CVE ID. Advisory only — never touches the target. Returns a JSON block with per-source vuln/advisory lists + KEV membership. Feed text is control-char-stripped and…tools/mcp_tools/research.py:90

tools/mcp_tools/retest.py (1)

  • Registration: register_retest_tools() (tools/mcp_tools/retest.py:273) — auto-discovered; no edit to mcp_exploit_server.py.
ToolGatesPurposeSource
retest_finding@require_allowlist()Re-run a confirmed finding's stored PoC probe against the current target (prove the fix). Reloads the finding's verification_probe from reports/<run_id>/enhanced/enhanced_report.json (latest run containing it when run_id is empty) and re-ex…tools/mcp_tools/retest.py:279

tools/mcp_tools/runtime_skills.py (4)

  • Registration: register_runtime_skill_tools() (tools/mcp_tools/runtime_skills.py:12) — auto-discovered; no edit to mcp_exploit_server.py.
ToolGatesPurposeSource
list_runtime_skills@audit_toolList read-only runtime skills available to guide the assessment. Skills are advisory prompt context only; they do not execute code or change permissions.tools/mcp_tools/runtime_skills.py:34
search_runtime_skills@audit_toolSearch read-only runtime skills by query text and optional comma-separated tags. Use before load_runtime_skill when the current attack path needs more specific methodology guidance.tools/mcp_tools/runtime_skills.py:56
load_runtime_skill@audit_toolLoad one read-only runtime skill by exact name. Returns compact markdown methodology guidance. This never executes scripts, enables tools, changes target scope, or changes permission mode.tools/mcp_tools/runtime_skills.py:77
list_skill_references@audit_toolList the reference document paths bundled with a runtime skill (read-only). Returns paths only, never contents -- read a path via the workspace read tools if needed (still subject to approval/allowlist).tools/mcp_tools/runtime_skills.py:102

tools/mcp_tools/sessions.py (13)

  • Registration: register_session_tools() (tools/mcp_tools/sessions.py:13) — auto-discovered; no edit to mcp_exploit_server.py.
ToolGatesPurposeSource
start_tmux_session@audit_toolStart a named persistent tmux session for interactive commands. The session runs in the background and can be interacted with later via send_to_session and read_session_output. Use for: reverse shells, interactive msfconsole, long-running s…tools/mcp_tools/sessions.py:32
send_to_session@audit_toolSend text/keystrokes to a named tmux session. The text is sent followed by Enter. Use this to interact with running sessions: type commands in a shell, navigate msfconsole menus, respond to prompts, etc.tools/mcp_tools/sessions.py:48
read_session_output@audit_toolRead the last N lines from a named tmux session. Use this to see the output after sending commands via send_to_session.tools/mcp_tools/sessions.py:64
kill_session@audit_toolKill a named persistent session (tmux, background job, or listener).tools/mcp_tools/sessions.py:74
start_background_job@audit_toolStart a named background job using nohup. The job runs detached from the terminal and logs output to a file. Use for: long-running scans, listeners, file transfers, brute force attacks that take hours, etc.tools/mcp_tools/sessions.py:82
read_job_output@audit_toolRead the last N lines from a background job's log file.tools/mcp_tools/sessions.py:103
stop_background_job@audit_toolStop a named background job.tools/mcp_tools/sessions.py:116
start_listener@audit_toolStart a named network listener. Types: netcat (nc/ncat), socat, http (python http.server), tls (openssl/socat TLS), dns (dnscat2), https-beacon (socat TLS HTTP), socks_pivot (chisel/ligolo-ng/socat TCP forward). socks_pivot forwards to upst…tools/mcp_tools/sessions.py:124
read_listener_output@audit_toolRead the last N lines from a listener's log file.tools/mcp_tools/sessions.py:165
stop_listener@audit_toolStop a named network listener.tools/mcp_tools/sessions.py:178
list_sessions@audit_toolList all persistent sessions (tmux, background jobs, listeners) with their status, PIDs, and types.tools/mcp_tools/sessions.py:186
list_processes@audit_toolList system processes. Optionally filter by a pattern string. Use to find running tools, check if a listener is active, or locate a specific process.tools/mcp_tools/sessions.py:205
kill_process@audit_toolKill a process by tracked name or raw PID. Use to stop runaway processes, kill old listeners, or clean up after exploitation.tools/mcp_tools/sessions.py:223

tools/mcp_tools/snapshots.py (3)

  • Registration: register_snapshot_tools() (tools/mcp_tools/snapshots.py:22) — auto-discovered; no edit to mcp_exploit_server.py.
ToolGatesPurposeSource
snapshot_create@require_allowlist("vm_id")Take a snapshot of an allowlisted target's backing VM/container (docker commit for containers; hypervisor checkpoints for VMs). Infrastructure-touching: refused unless snapshots.enabled AND the target is allowlisted. Returns SNAPSHOT_CREATE…tools/mcp_tools/snapshots.py:40
snapshot_revert@require_allowlist("vm_id")Roll an allowlisted target's backing VM/container back to a snapshot (empty ref = latest recorded). Infrastructure-touching: refused unless snapshots.enabled AND the target is allowlisted. Returns SNAPSHOT_REVERTED: on success, ERROR:/BLOCK…tools/mcp_tools/snapshots.py:65
snapshot_list@audit_tool + @require_allowlist("vm_id")List recorded snapshots for an allowlisted target (read-only; no target touch). Returns a SNAPSHOT_LIST: block.tools/mcp_tools/snapshots.py:92

tools/mcp_tools/terminal/execute.py (3)

  • Registration: _register_execute_tools() (tools/mcp_tools/terminal/execute.py:187) — auto-discovered; no edit to mcp_exploit_server.py.
ToolGatesPurposeSource
run_exploit_terminal@audit_toolRun any shell command in a dedicated visible terminal window. The command executes synchronously; output is captured and RETURNED in the result under an OUTPUT: section. Use for running Kali tools, nmap, curl, netcat, searchsploit, etc. IMP…tools/mcp_tools/terminal/execute.py:210
run_as_root@audit_toolRun ANY command with sudo (root privileges). Use for commands that require root: tcpdump, iptables, systemctl, writing to /etc, raw socket operations, etc. The command runs synchronously and output is captured.tools/mcp_tools/terminal/execute.py:457
git_clone@audit_toolClone a Git repository (GitHub exploit/PoC/tool) into the workspace. Provide the full repo URL (e.g., 'https://github.com/user/repo.git'). Optional target_dir for a custom folder name.tools/mcp_tools/terminal/execute.py:544

tools/mcp_tools/terminal/package.py (5)

  • Registration: _register_package_tools() (tools/mcp_tools/terminal/package.py:18) — auto-discovered; no edit to mcp_exploit_server.py.
ToolGatesPurposeSource
apt_install@audit_toolInstall Kali Linux packages via apt. Provide a space-separated list of package names (e.g., 'nmap hydra gobuster'). Runs 'sudo apt install -y <packages>'. Use this to install missing tools before exploitation.tools/mcp_tools/terminal/package.py:24
pip_install@audit_toolInstall Python packages via pip. Provide a space-separated list of package names (e.g., 'impacket pwntools requests'). Runs 'pip install <packages>'. Use for Python exploit dependencies.tools/mcp_tools/terminal/package.py:55
install_package@audit_toolInstall packages using the specified package manager.tools/mcp_tools/terminal/package.py:83
download_and_install@audit_toolDownload and install a tool from a URL.tools/mcp_tools/terminal/package.py:153
update_system@audit_toolUpdate the system's package lists and optionally upgrade all packages.tools/mcp_tools/terminal/package.py:301

tools/mcp_tools/terminal/privilege.py (2)

  • Registration: _register_privilege_tools() (tools/mcp_tools/terminal/privilege.py:131) — auto-discovered; no edit to mcp_exploit_server.py.
ToolGatesPurposeSource
check_environment@audit_toolCheck which security testing tools are installed and available on the system.tools/mcp_tools/terminal/privilege.py:138
preflight_env_check@audit_toolProbe installed pentest tools, sudo/pip installability, and thetools/mcp_tools/terminal/privilege.py:209

tools/mcp_tools/verify.py (1)

  • Registration: register_verify_tools() (tools/mcp_tools/verify.py:133) — auto-discovered; no edit to mcp_exploit_server.py.
ToolGatesPurposeSource
verify_finding@require_allowlist()Re-prove a candidate finding N times via its stored verification probe (verify-or-it-didn't-happen). Reloads the finding's verification_probe from reports/<run_id>/enhanced/enhanced_report.json (latest run containing it when run_id is empty…tools/mcp_tools/verify.py:139

tools/mcp_tools/web_scan.py (3)

  • Registration: register_web_scan_tools() (tools/mcp_tools/web_scan.py:285) — auto-discovered; no edit to mcp_exploit_server.py.
ToolGatesPurposeSource
run_web_scan@require_allowlist()Run a web scanner (nikto/nuclei/sqlmap/gobuster/feroxbuster/whatweb/wpscan/dirb/dirbuster) against the target. Returns the scanner's parsed output. The target must be in the explicit allowlist. options are extra scanner flags (space-sep…tools/mcp_tools/web_scan.py:335
parse_nuclei_results@audit_toolParse a prior nuclei scan's JSONL events into confirmed-candidate TechnicalFindings (local only: no target arg, no network). Returns a NUCLEI_FINDINGS summary; full records are saved as nuclei-findings.json in the attempt dir.tools/mcp_tools/web_scan.py:498
generate_nuclei_template@audit_toolGenerate a reusable Nuclei template YAML from a confirmed finding (local only: no target arg, no network). Validates by parsing the YAML back plus nuclei -validate when on PATH; reports VALID/INVALID.tools/mcp_tools/web_scan.py:569

tools/mcp_tools/workspace.py (4)

  • Registration: register_workspace_tools() (tools/mcp_tools/workspace.py:121) — auto-discovered; no edit to mcp_exploit_server.py.
ToolGatesPurposeSource
write_python_file@audit_toolWrite an AI-generated Python exploit script.tools/mcp_tools/workspace.py:131
run_python_file@require_allowlist()Execute a previously written Python exploit script against the target IP.tools/mcp_tools/workspace.py:217
read_workspace_file@audit_toolRead a file inside the run workspace by path.tools/mcp_tools/workspace.py:444
list_workspace@audit_toolList all files in the exploit workspace directory.tools/mcp_tools/workspace.py:465

Totals

  • Tools: 166 across 37 families.
GatesCount
@audit_tool81
@require_allowlist()50
@require_allowlist("target")14
13
@require_allowlist("domain")4
@require_allowlist("vm_id")2
@audit_tool + @require_allowlist("vm_id")1
@require_allowlist(host_param="domain")1
source: repo docs (build sync)Edit this page on GitHub →