kali-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| nmap_host_discoveryA | Ping scan to discover live hosts (-sn). Fast, no port scan. targets: IPs, ranges, or CIDR (e.g. '192.168.1.0/24', '10.0.0.1-10') |
| nmap_port_scanA | Port scan returning job_id (async by default) or blocking until complete. targets: IPs/ranges/hostnames (space-separated for multiple) ports: '1-65535', '22,80,443', or 'top100' scan_type: 'auto' (sS if root else sT), 'sS' (SYN/root only), 'sT' (TCP connect), 'sU' (UDP), 'sA' (ACK) timing: T0-T5 (T4=fast, T3=normal, T2=polite) wait: if True, blocks until scan completes and returns full output |
| nmap_service_detectionB | Detect service versions on open ports (-sV). version_intensity: 0 (light) to 9 (try all probes) |
| nmap_os_detectionB | OS detection scan (-O). Automatically uses sudo if not root. targets: IPs/ranges/hostnames |
| nmap_vuln_scanA | NSE vulnerability script scan. scripts: NSE script categories — 'vuln', 'safe', 'vuln and safe', 'exploit', or specific scripts like 'smb-vuln-ms17-010' |
| nmap_aggressive_scanB | Aggressive scan (-A): OS + version + default scripts + traceroute. targets: IPs/ranges/hostnames |
| nmap_xml_scanA | Port scan with XML output — returns fully structured host/port/service data. Unlike nmap_port_scan (raw text), this parses XML into structured dicts so findings, services, and OS guesses are immediately usable without regex. targets: IPs/ranges/hostnames (space-separated) ports: '1-65535', '22,80,443', or 'top100' scan_type: 'auto' (sS if root else sT), 'sS', 'sT' timing: T0-T5 service_detection: include -sV service version probing (default True) Returns: structured dict with hosts[], each containing ports[], services, os[] |
| whois_lookupA | WHOIS lookup for a domain or IP address. target: domain (e.g. 'example.com') or IP address |
| dig_lookupA | DNS lookup using dig. domain: target domain (e.g. 'example.com') record_type: A, AAAA, MX, NS, TXT, CNAME, SOA, ANY dns_server: optional DNS server to query (e.g. '8.8.8.8') short: return short output only |
| dig_zone_transferA | Attempt DNS zone transfer (AXFR). domain: target domain nameserver: nameserver to request transfer from |
| subfinder_enumerateA | Passive subdomain enumeration using subfinder. domain: target domain (e.g. 'example.com') all_sources: use all available sources (slower but thorough) threads: concurrent goroutines for resolving (default 10) output_json: return JSONL output for structured parsing |
| theharvester_searchA | OSINT gathering using theHarvester (emails, subdomains, IPs, URLs). domain: target domain or company name source: comma-separated data sources. Defaults to sources that work without API keys. Full list: google, bing, linkedin, github, dnsdumpster, crtsh, hackertarget, otx, rapiddns, shodan (needs key), sublist3r, threatminer, urlscan, duckduckgo Use 'all' only if you have API keys configured. limit: max search results (default 500) dns_resolve: perform DNS resolution on discovered subdomains |
| amass_enumA | In-depth subdomain enumeration using OWASP Amass. domain: target domain (e.g. 'example.com') passive: passive-only mode (no active probing) — safer, faster brute_force: enable brute-force subdomain discovery (slow) timeout_mins: max runtime in minutes (default 5) |
| nikto_scanA | Web server vulnerability scan using Nikto. target: host or URL (e.g. 'example.com' or 'http://example.com') port: target port (default 80; use 443 with ssl=True) ssl: force SSL/HTTPS max_time: nikto's internal max scan time e.g. '10m', '20m', '1h' timeout: server-side timeout in seconds (default 600 = 10 min) |
| gobuster_dirA | Directory and file brute-force using Gobuster. url: target URL (e.g. 'http://example.com') wordlist: path to wordlist (auto-selects common.txt from dirb/seclists if empty) extensions: file extensions to search e.g. 'php,html,txt' threads: concurrent threads (default 10) exclude_codes: HTTP codes to hide (default '404'), use '' to show all follow_redirect: follow 3xx redirects |
| gobuster_dnsB | DNS subdomain brute-force using Gobuster. domain: target domain (e.g. 'example.com') wordlist: path to wordlist (auto-selects subdomains list from seclists if empty) show_ips: show IP addresses of found subdomains |
| gobuster_vhostC | Virtual host discovery using Gobuster. url: base URL (e.g. 'http://example.com') wordlist: path to wordlist (auto-selects if empty) append_domain: append base domain to each vhost word |
| enum4linux_scanA | Full SMB/NetBIOS enumeration using enum4linux (-a covers all). Enumerates: users, shares, groups, password policy, OS info, printers. target: IP address of Windows/Samba host username: optional username for authenticated scan password: optional password for authenticated scan |
| smbclient_list_sharesA | List SMB shares on a target host using smbclient. target: IP or hostname username: SMB username (leave empty for anonymous) password: SMB password (leave empty for anonymous) port: SMB port (default 445) |
| ffuf_fuzzA | Fast web fuzzer using ffuf. Place FUZZ keyword in URL, headers, or POST data. url: target URL with FUZZ keyword (e.g. 'http://example.com/FUZZ') wordlist: path to wordlist (auto-selects common.txt if empty) keyword: fuzzing placeholder (default FUZZ) match_codes: show responses matching these HTTP codes filter_codes: hide responses with these HTTP codes threads: concurrent threads (default 40) data: POST data — setting this switches to POST automatically method: HTTP method GET/POST/PUT/DELETE/PATCH headers: extra header e.g. 'Authorization: Bearer ' auto_calibrate: auto-filter similar responses to reduce noise (-ac) |
| fast_port_scanA | Fast port scan using masscan (discovery) + nmap (service detection). Much faster than nmap alone for large ranges — masscan at 5000 pps finds all open ports, then nmap does targeted -sV only on those ports. target: IP, CIDR range (e.g. '192.168.1.0/24'), or hostname ports: port range (default all ports '0-65535') rate: masscan packets per second — higher = faster but more noisy (default 5000) Use 1000 for stealth, 10000+ for speed on local networks service_detection: run nmap -sV on discovered ports (default True) Returns: open ports with services, much faster than full nmap scan NOTE: masscan requires root/sudo for raw sockets |
| searchsploit_searchA | Search Exploit-DB local database using searchsploit. query: search terms (e.g. 'apache 2.4', 'wordpress 5.0', 'ssh') exact: exact & order match on title (stricter) title_only: search only exploit titles cve: search by CVE ID (e.g. '2021-44228') — overrides query exclude: exclude results matching this pattern (pipe-separated: 'dos|PoC') Returns results immediately (local DB search). |
| searchsploit_get_pathA | Get the full filesystem path to an exploit by its EDB-ID. edb_id: Exploit-DB ID number (e.g. '39446') |
| nuclei_scanB | Vulnerability scanning using Nuclei templates. target: URL or IP to scan (e.g. 'http://example.com') templates: comma-separated template paths or categories e.g. 'cves/', 'vulnerabilities/', 'cves/2021/CVE-2021-44228.yaml' severity: filter by severity — info,low,medium,high,critical (comma-separated) tags: filter by tags e.g. 'cve,rce,sqli' rate_limit: max HTTP requests per second (default 150) concurrency: concurrent template execution (default 25) auto_scan: automatic scan using wappalyzer technology detection (-as) |
| nuclei_update_templatesB | Update Nuclei templates to the latest version. |
| wpscan_scanA | WordPress vulnerability scanner using WPScan. url: WordPress site URL (e.g. 'http://example.com') enumerate: what to enumerate — comma-separated: vp=vulnerable plugins, vt=vulnerable themes, u=users, p=all plugins, t=all themes, tt=timthumbs, cb=config backups, dbe=db exports, m=media api_token: WPScan API token for vulnerability data (get free at wpscan.com) detection_mode: mixed (default), passive, aggressive random_user_agent: randomize user agent per request disable_tls_checks: disable SSL certificate verification throttle_ms: milliseconds between requests (0 = no throttle) |
| cve_to_exploitA | Given a service name/version, find matching exploits in searchsploit and Metasploit. Closes the gap between 'found a version' and 'here is the exploit to run'. service: service name e.g. 'Apache', 'OpenSSH', 'nginx', 'vsftpd', 'Samba' version: version string e.g. '2.4.49', '3.0.28', '1.24.0' banner: raw service banner (alternative to service+version — auto-parsed) os_type: 'linux' or 'windows' (filters exploits) Returns: matching searchsploit exploits + Metasploit modules + suggested commands |
| scan_and_exploit_chainA | Full chain: port scan → service detection → CVE lookup for each service. One call that returns all exploits for all services on a target. target: IP or hostname ports: port range to scan Returns: for each open port, the service version + matching exploits |
| sqlmap_scanA | Automated SQL injection detection and exploitation using sqlmap. url: target URL with parameter (e.g. 'http://site.com/page.php?id=1') data: POST data string (e.g. 'user=foo&pass=bar') level: test level 1-5 (higher = more tests, slower) risk: risk level 1-3 (higher = more aggressive, may alter data) dbms: force DBMS type e.g. 'mysql', 'postgresql', 'mssql', 'oracle' technique: SQL injection techniques — B=Boolean, E=Error, U=Union, S=Stacked, T=Time, Q=Inline (default all: BEUSTQ) enumerate_dbs: enumerate databases (--dbs) enumerate_tables: enumerate tables (--tables) dump: dump table data — use with database and table params database: target database name (-D) table: target table name (-T) cookie: HTTP cookie header value random_agent: use random User-Agent NOTE: Always runs non-interactively (--batch). |
| hydra_bruteforceA | Password brute-force attack using Hydra. target: IP or hostname to attack service: protocol — ssh, ftp, http-get, http-post-form, smb, mysql, mssql, rdp, telnet, pop3, imap, smtp, vnc username: single username to test userlist: path to username list file (overrides username) e.g. /usr/share/seclists/Usernames/top-usernames-shortlist.txt password: single password to test passlist: path to password list file (overrides password) e.g. /usr/share/wordlists/rockyou.txt port: target port (0 = use service default) tasks: parallel connections per target (default 16) stop_on_first: stop after first valid credential found (-f) |
| msf_searchA | Search Metasploit modules by keyword using a resource file (faster than -x). query: search term e.g. 'ms17-010', 'eternalblue', 'type:exploit platform:windows' Returns immediately (non-interactive). |
| msf_run_moduleA | Run a Metasploit module non-interactively via resource file. module: full module path e.g. 'exploit/windows/smb/ms17_010_eternalblue' or 'auxiliary/scanner/smb/smb_ms17_010' options: dict of module options — RHOSTS is required and must be in scope. e.g. {"RHOSTS": "192.168.1.1", "LHOST": "192.168.1.10", "LPORT": "4444"} payload: payload e.g. 'windows/x64/meterpreter/reverse_tcp' NOTE: Non-interactive only — sessions are auto-killed after execution. |
| msfvenom_generateA | Generate a payload using msfvenom. Saved to ~/kali-mcp/artifacts/ (chmod 600). payload: e.g. 'linux/x64/meterpreter/reverse_tcp' lhost: listener IP address lport: listener port format: elf, exe, raw, php, py, rb, sh, dll, jar, war filename: output filename (auto-generated if empty) |
| nc_port_checkA | Check if ports are open/closed on a host. Uses ncat (nmap-suite) if available, falls back to netcat. host: IP or hostname ports: comma/space-separated ports e.g. '80', '22,80,443' Returns immediately. |
| nc_banner_grabA | Grab a service banner from host:port using a raw async socket. Sends a newline (or custom data) to trigger a server response. host: IP or hostname port: target port timeout: seconds to wait for response (default 10) send_data: data to send to trigger banner (default newline). Supports escape sequences like '\n', '\r\n', '\t'. |
| ssh_execA | Execute a single command via SSH (uses paramiko, no sshpass dependency). host: target IP or hostname username: SSH username password: SSH password (leave empty if using key) key_file: path to private key file (leave empty if using password) command: shell command to execute port: SSH port (default 22) timeout: command timeout in seconds (default 60) Returns: stdout, stderr, return_code (or error if connection/auth failed) |
| ssh_enum_privescA | Enumerate privilege escalation vectors on a Linux host via SSH. Runs checks for: SUID binaries, capabilities, sudo permissions, cron jobs, world-writable files, kernel version, /etc/passwd readables, PATH/LD env vars. host: target IP or hostname username: SSH username password: SSH password key_file: SSH private key path port: SSH port (default 22) Returns: structured findings by category, OR a clear error if SSH failed. |
| generate_reportB | Generate a structured report from completed job results. job_ids: list of job IDs to include (from list_jobs or get_job_status) title: report title format: 'markdown' or 'json' |
| list_completed_jobsA | List completed jobs, optionally filtered by tool name. tool_filter: partial tool name e.g. 'nmap', 'nikto', '' (all) |
| parse_nmap_outputA | Parse nmap output from a completed job into structured data. Returns hosts, open ports, services, and OS guesses. job_id: completed nmap job ID |
| parse_nuclei_outputA | Parse a nuclei JSONL findings file into structured vulnerability data. findings_file: path returned by nuclei_scan as 'findings_file' |
| generate_pentest_reportA | Generate a professional finding-based pentest report with attack chains and remediation. title: report title min_severity: minimum severity to include — info, low, medium, high, critical min_confidence: minimum confidence to include — low, medium, high host: filter by specific host (empty = all hosts) save_to: optional file path to save the report (must be under artifacts/, /tmp, or /var/tmp) format: 'markdown' (default) or 'html' (self-contained HTML file, suitable for client delivery) confirmed_only: if True, only include findings marked 'confirmed' via update_finding_status. Use after running a validation agent for a zero-false-positive report. |
| pcap_extractA | Extract credentials and key data from a PCAP file. Extracts: HTTP requests (headers, POST data), FTP/Telnet/SMTP credentials, DNS queries, common protocol usernames/passwords. pcap_path: path to .pcap or .pcapng file Returns: structured findings by protocol |
| pcap_protocolsA | Get protocol hierarchy and conversation list for a PCAP — overview of what's actually in the capture (HTTP, DNS, SMB, FTP, Telnet, SMTP, ICMP, ARP, etc.). Use this BEFORE pcap_extract to know what protocols to look for. pcap_path: path to .pcap or .pcapng file Returns: protocol breakdown by packet count + endpoint conversations |
| tshark_queryA | Run an arbitrary tshark query on a PCAP file. pcap_path: path to PCAP file display_filter: Wireshark display filter e.g. 'http.request', 'tcp.port==21', 'smb', 'dns.qry.name', 'frame.number == 42' fields: comma-separated tshark fields to extract e.g. 'ip.src,ip.dst,tcp.port,http.request.uri' max_lines: max output lines (default 200) |
| http_requestA | Make an HTTP request and inspect the full response. url: target URL method: GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS headers: dict of HTTP headers e.g. {"Authorization": "Bearer token"} cookies: dict of cookies e.g. {"session": "abc123"} data: request body for POST/PUT (string or JSON) follow_redirects: follow 3xx redirects (default True) timeout: request timeout in seconds save_to: if set, save response body to this file path (for binaries/large files) extract_text: if True and HTML, strip tags and return visible text only Returns: status, headers, body (or file path if save_to), redirect chain, timing |
| html_to_textB | Strip HTML tags and extract visible text. Removes scripts, styles, tags. Returns clean readable text. html: HTML string |
| extract_linksA | Extract all links (anchors, forms, scripts, images) from HTML. Useful for building a crawl tree without manually grep'ing the response body. html: HTML string base_url: optional base URL for resolving relative links only_same_origin: if True and base_url given, only return links to same host Returns: lists of links by category (anchors, forms, scripts, images, css) |
| http_form_submitA | Submit an HTML form (simulates browser form POST). url: form action URL form_data: dict of form fields e.g. {"username": "admin", "password": "test"} method: POST (default) or GET headers: additional HTTP headers cookies: session cookies to include follow_redirects: follow redirects after submit (default True) Returns: response status, headers, body, redirect chain |
| web_crawlA | Crawl a web application by following links organically. Discovers endpoints, forms, and interesting paths that wordlist brute-force misses. url: starting URL (e.g. 'http://example.com/') max_depth: how many link levels deep to follow (default 2) max_pages: max pages to visit (default 50) include_external: also collect external links (not crawled, just listed) timeout: per-request timeout in seconds Returns: discovered URLs by category, forms, and interesting endpoints |
| screenshot_urlA | Take a screenshot of a single web URL using gowitness. Useful for quick visual triage of login panels, admin interfaces, etc. url: target URL (e.g. 'http://example.com/admin') timeout: per-request timeout in seconds Returns: path to saved screenshot PNG file |
| screenshot_urlsA | Take screenshots of multiple URLs using gowitness. Use after gobuster/crawl to visually triage all discovered endpoints at once. urls: list of URLs to screenshot threads: concurrent screenshot workers (default 4) timeout: per-request timeout in seconds Returns: directory containing all PNG screenshots + JSONL results |
| server_healthA | Preflight check — verifies all tool binaries, Python deps, and wordlists. Run this at the start of an engagement to avoid surprises mid-workflow. Returns: status per category, missing tools with install hints, available wordlists. |
| check_binaryA | Check if a specific binary is installed and where it is. name: binary name e.g. 'nmap', 'sshpass', 'msfconsole' |
| read_fileA | Read a file from disk (artifacts, /tmp, /var/tmp, wordlists). Auto-detects file type via magic bytes. path: absolute file path max_bytes: max bytes to read (default 50KB) offset: byte offset to start from as_hex: return content as hex dump as_base64: return content as base64 (for binaries) Returns: file metadata, type detection, content (text/hex/base64) |
| list_artifactsA | List all files in the artifacts directory (downloads, scan outputs, payloads). Returns: filename, size, modification time per file. |
| creds_storeA | Store discovered credentials in the vault (passwords/hashes encrypted at rest). host: target host IP or hostname username: discovered username password: plaintext password (leave empty if only hash available) hash: password hash (e.g. NTLM, bcrypt) service: service type e.g. 'ssh', 'http', 'smb', 'ftp', 'mysql' port: service port source_tool: which tool found this (e.g. 'hydra', 'sqlmap', 'manual') notes: any additional context |
| creds_listA | List stored credentials, optionally filtered by host or service. host: filter by host IP/hostname (empty = all hosts) service: filter by service type e.g. 'ssh', 'http' (empty = all) Returns credentials with decrypted passwords/hashes for use in further attacks. |
| creds_useA | Get the most recently discovered credential for a host/service. Use this before attacking a service to check if we already have valid creds. host: target host service: optional service filter e.g. 'ssh' Returns: best credential to try (decrypted), or empty if none found. |
| creds_deleteB | Delete a credential from the vault by its ID. |
| get_findingsA | Extract and return normalized findings from a completed job. job_id: job to extract findings from (leave empty to get all recent findings) host: filter findings by host min_severity: minimum severity to return — info, low, medium, high, critical min_confidence: minimum confidence to return — low, medium, high Returns: list of normalized Finding objects with host, title, severity, evidence, tool |
| engagement_startA | Start a new engagement. Sets scope for all tools automatically. All subsequent findings, jobs, and credentials are tagged to this engagement. name: engagement name e.g. 'ClientName-WebApp-2026' scope: list of authorized targets e.g. ['192.168.1.0/24', 'example.com'] client: optional client name for reporting notes: engagement notes / rules of engagement |
| engagement_statusB | Show the current active engagement and its findings summary. |
| engagement_findingsB | Get all findings for the current engagement. min_severity: info, low, medium, high, critical host: filter by specific host limit: max results |
| engagement_endA | Close the current engagement and clear scope restrictions. |
| engagement_listA | List all engagements (past and active). |
| list_unconfirmed_findingsA | List findings pending validation for the current engagement. Returns unconfirmed findings ordered by severity so a validation agent can work through them one by one and call update_finding_status on each. host: filter by specific host (empty = all) min_severity: info, low, medium, high, critical |
| update_finding_statusA | Update the validation status of a finding. Called by a validation agent after manually verifying a finding. finding_id: the finding's id (from list_unconfirmed_findings) status: 'confirmed' — finding is real and exploitable 'false_positive' — finding is not real, exclude from report 'unconfirmed' — reset back to pending (if re-verification needed) |
| scan_hostA | Full parallel host scan — fires multiple tools simultaneously and waits for all. Reduces total recon time by 70% vs running tools sequentially. target: IP or hostname intensity: 'light' (quick scan), 'normal' (default), 'deep' (thorough) Returns: consolidated results from all tools with findings and next steps. |
| scan_webA | Full parallel web application scan — nikto, gobuster, nuclei, and crawler simultaneously. depth: 'light' (quick), 'normal' (default), 'deep' (thorough with ffuf) Returns: consolidated web findings from all scanners. |
| analyze_findingsA | Analyze and prioritize all findings from recent scans. Returns a structured triage report designed for LLM decision-making. Identifies: attack paths, quick wins, critical issues, credential reuse opportunities. host: focus on specific host (empty = all hosts) min_severity: minimum severity to include — low, medium, high, critical min_confidence: minimum confidence to include — low, medium, high max_items: max findings to analyze (default 20) Returns: prioritized attack paths, quick wins, and recommended next actions. |
| analyze_attack_chainsA | Correlate current findings into multi-stage attack chains. Shows how individual low/medium findings combine into high-impact compound attack paths (e.g. SQL injection + exposed SSH = credential theft + system access). Call this at any point during an engagement to understand compound risk. host: focus on a specific host (empty = all hosts) min_severity: minimum finding severity to consider — info, low, medium, high, critical min_confidence: minimum finding confidence to consider — low, medium, high Returns: list of chains with name, escalated severity, narrative, steps, affected hosts. |
| program_scope_startA | Start or update a named program scope. name: program name e.g. 'ClientX-WebApp-2026' in_scope: list of allowed targets e.g. ['10.10.10.0/24', 'example.com'] out_of_scope: list of explicitly blocked targets (e.g. ['10.10.10.254']) client: optional client name rules: dict of rules of engagement: max_findings, duration_hours, reporting_format approvers: list of approved agents/humans who can modify/activate this program |
| program_scope_statusA | Show the current active program scope. |
| program_scope_listA | List all programs (draft/active/ended). |
| program_scope_endA | Close the current program scope and clear scope restrictions. |
| program_scope_add_targetsC | Add targets to the current program's in-scope list. |
| program_scope_remove_targetsB | Remove targets from the current program's in-scope list. |
| program_scope_out_of_scopeB | Add targets to the out-of-scope (deny) list. |
| program_scope_allowB | Explicitly allow a target that is otherwise out of scope. |
| program_scope_denyA | Explicitly deny a target, blocking it even if in in_scope. |
| asset_list_hostsB | List all known hosts. status: filter by status (new, scanned, confirmed, remediated, false_positive) min_scan_count: minimum number of scans limit: max results |
| asset_get_hostB | Get full details for a specific host. |
| asset_list_servicesB | List services, optionally filtered by host or service name. |
| asset_list_vulnerabilitiesB | List vulnerabilities, optionally filtered by host or severity. min_severity: info, low, medium, high, critical status: unconfirmed, confirmed, false_positive, remediated |
| asset_searchA | Search assets by IP, hostname, service, or CVE. |
| asset_mark_hostB | Mark a host with a status (new, scanned, confirmed, remediated, false_positive). |
| asset_mark_vulnC | Mark a vulnerability with a status. |
| asset_list_runsA | List recorded scan runs (recon cycles), newest first. program: filter by program name (empty = all) limit: max results |
| asset_diff_runsA | Compare two scan runs and report what changed between them. Reports new / disappeared / changed hosts, services, and vulnerabilities. prev_run_id: the earlier (baseline) run id curr_run_id: the later run id |
| asset_latest_changesA | Show what changed between the two most recent completed runs. This is the core continuous-recon view: 'what's new since last time?' program: focus on one program (empty = all runs across programs) Returns: change report + a 'new_assets' list flagged as high-priority (newly deployed assets are often less tested). |
| recon_sweepA | Passive recon sweep with change detection. Runs passive-only recon (subfinder, amass -passive, theHarvester) against a domain, records everything under a scan run, then reports what changed since the previous sweep: new subdomains, new IPs/ports, new endpoints, new vulnerabilities, and assets that disappeared. Safe to run repeatedly/unattended (passive only). Newly-appeared assets are surfaced under 'priority_new_assets' because fresh surface is often less tested. domain: target domain (must be within the active program scope) program: program name to group runs under (defaults to the domain) tools: subset of ['subfinder','amass','theharvester'] (default: all) tool_budget: max number of tools to run this sweep (0 = no limit) |
| get_job_statusB | Get status and result of an async job by its ID. |
| get_job_outputA | Get partial output from a running or completed job. Useful for checking progress before a job finishes. job_id: job ID to read tail: number of lines from the end to return (default 100, 0 = all) |
| list_jobsB | List recent jobs with their statuses. |
| cancel_jobA | Cancel a running job and kill its process group. |
| scope_listA | List all authorized targets in scope. Empty list means lab mode — all targets allowed. |
| scope_addA | Add a single target to the authorized scope. target: IP, CIDR (e.g. '192.168.1.0/24'), domain, or '*.example.com' |
| scope_setA | Replace the entire scope with a new list of targets. Use this at the start of an engagement to set all authorized targets at once. targets: list of IPs, CIDRs, domains e.g. ['192.168.1.0/24', 'example.com', '*.example.com'] |
| scope_removeB | Remove a specific target from scope. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| recon_domain | Full reconnaissance workflow for a domain. |
| web_pentest | Web application penetration testing workflow. |
| smb_enum | SMB/NetBIOS enumeration workflow for Windows/Samba hosts. |
| reporting_rules | Anti-hallucination rules the AI MUST follow when reporting findings. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Neeraj829784/kali-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server