MCP tool catalog
This catalog is generated on every documentation build from the server.tool(...) registrations in src/index.ts with the TypeScript compiler API. It lists 36 tools. Each entry shows the registered title, the MCP annotation hints, and the input schema. Groups follow the README tool inventory, and the build fails if the two disagree.
Annotation hints are advisory metadata for MCP clients. They do not replace the server-side checks: an active tool still needs an engagement, passes the plan allowlist and the target and time gate, and leaves an evidence record.
| Chip | Registered hint |
|---|---|
| Read-only, Can change state | readOnlyHint is true or false |
| Open-world, Closed-world | openWorldHint is true or false; open-world tools interact with systems outside the server |
| Idempotent | idempotentHint is true |
| Destructive | destructiveHint is true |
Index
- Engagement lifecycle: createEngagement, getEngagement, listEngagements, closeEngagement
- Discovery and validation: nmapScan, gobuster, nikto, subfinderEnum, httpxProbe, ffufScan, nucleiScan
- Capture and credential checks: trafficCapture, hydraBruteforce, runJohnTheRipper, runHashcat, generateWordlist
- Local audit and extraction: privEscAudit, extractionSweep
- Scope, agent, and report workflow: saveAssessmentPlan, getAssessmentPlan, listAgentProfiles, runAgentAssessment, reconcileAgentAssessment, recordResearchActivity, draftAssessmentReport, listAgentReportDrafts, getAgentReportDraft, publishAgentReport
- Evidence and direct reports: listEngagementRecords, getEngagementRecord, createClientReport, listClientReports, getClientReport
- Runtime and scan control: getRuntimeStatus, listActiveScans, cancelScan
Engagement lifecycle
createEngagement
| Parameter | Type | Required | Details |
|---|---|---|---|
engagementId | string | Yes | min length 1. Stable engagement ID chosen by the operator. |
authorizationReference | string | Yes | min length 1. Reference to the signed authorization or rules of engagement. |
notBefore | string | Yes | ISO 8601 datetime. Authorization start with timezone. |
expiresAt | string | Yes | ISO 8601 datetime. Authorization end with timezone. |
allowedTargets | array<string> | Yes | min 1 items. Exact hosts, CIDRs, wildcard subdomains, or URL prefixes. |
excludedTargets | array<string> | No | — |
testingWindows | array<object> | No | Fields: start: string, end: string. |
Schema: engagementScopeSchema.shape · Source: src/index.ts:1485
getEngagement
| Parameter | Type | Required | Details |
|---|---|---|---|
engagementId | string | Yes | min length 1. |
Schema: engagementIdSchema.shape · Source: src/index.ts:1499
listEngagements
This tool takes no arguments.
Schema: {} · Source: src/index.ts:1511
closeEngagement
| Parameter | Type | Required | Details |
|---|---|---|---|
engagementId | string | Yes | min length 1. |
Schema: engagementIdSchema.shape · Source: src/index.ts:1522
Discovery and validation
nmapScan
| Parameter | Type | Required | Details |
|---|---|---|---|
engagementId | string | Yes | min length 1. |
target | string | Yes | — |
ports | string | No | max length 1000. |
fastScan | boolean | No | — |
topPorts | integer | No | positive, max 65535. |
scanTechnique | enum | No | One of SYN, Connect, ACK, Window, Maimon, FIN, Xmas, Null, Proto. |
udpScan | boolean | No | — |
serviceVersionDetection | boolean | No | — |
versionIntensity | integer | No | min 0, max 9. |
osDetection | boolean | No | — |
defaultScripts | boolean | No | — |
scripts | array<string> | No | — |
scriptArgs | string | No | — |
timingTemplate | enum | No | One of T0, T1, T2, T3, T4, T5. |
skipHostDiscovery | boolean | No | — |
verbose | boolean | No | — |
rawOptions | array<string> | No | — |
Schema: nmapScanToolSchema.shape · Source: src/index.ts:1558
gobuster
| Parameter | Type | Required | Details |
|---|---|---|---|
engagementId | string | Yes | min length 1. |
target | string | Yes | URL. Target URL. |
wordlist | string | Yes | Path to wordlist. |
extensions | string | No | File extensions (comma-separated). |
threads | integer | No | positive. Number of threads. |
statusCodes | string | No | Valid status codes (comma-separated). |
useragent | string | No | User-Agent string. |
timeout | string | No | Timeout for requests. |
basicAuth | string | No | Basic authentication credentials (username:password). |
cookie | string | No | Cookie to include in requests. |
excludeLength | array<number> | No | Exclude paths of specific lengths. |
followRedirect | boolean | No | Follow HTTP redirects. |
noTLSValidation | boolean | No | Skip TLS certificate validation. |
rawOptions | array<string> | No | Raw gobuster options. |
Schema: gobusterToolSchema.shape · Source: src/index.ts:2536
nikto
| Parameter | Type | Required | Details |
|---|---|---|---|
engagementId | string | Yes | min length 1. |
target | string | Yes | URL. Target URL. |
port | string | No | Port(s) to scan. |
ssl | boolean | No | Force SSL mode. |
timeout | integer | No | Timeout for requests. |
useragent | string | No | User-Agent string. |
tuning | string | No | Tuning mode. |
output | string | No | Output file. |
proxy | string | No | Use proxy. |
basicAuth | string | No | Basic authentication credentials (username:password). |
root | string | No | Root directory. |
cookies | string | No | Cookies to include. |
rawOptions | array<string> | No | Raw nikto options. |
Schema: niktoToolSchema.shape · Source: src/index.ts:2606
subfinderEnum
| Parameter | Type | Required | Details |
|---|---|---|---|
engagementId | string | Yes | min length 1. |
domain | string | Yes | Root domain to enumerate (example.com). |
recursive | boolean | No | Enable recursive subdomain discovery. |
allSources | boolean | No | Use all available passive sources. |
timeoutSeconds | integer | No | positive. Global timeout in seconds. |
rawOptions | array<string> | No | Additional safe subfinder options. |
Schema: subfinderToolSchema.shape · Source: src/index.ts:2665
httpxProbe
| Parameter | Type | Required | Details |
|---|---|---|---|
engagementId | string | Yes | min length 1. |
targets | array<string> | Yes | min 1 items. List of domains/hosts/URLs to probe. |
includeTitle | boolean | No | Include page title. |
includeStatusCode | boolean | No | Include HTTP status code. |
includeTechDetect | boolean | No | Enable technology detection. |
followRedirects | boolean | No | Follow redirects. |
timeoutSeconds | integer | No | positive. HTTP timeout in seconds. |
rawOptions | array<string> | No | Additional safe httpx options. |
Schema: httpxToolSchema.shape · Source: src/index.ts:2716
ffufScan
| Parameter | Type | Required | Details |
|---|---|---|---|
engagementId | string | Yes | min length 1. |
targetUrl | string | Yes | URL. Target URL with optional FUZZ marker. |
wordlist | string | Yes | Wordlist path for ffuf. |
threads | integer | No | positive. Worker threads. |
matchStatusCodes | string | No | Comma-separated status codes to include. |
filterStatusCodes | string | No | Comma-separated status codes to exclude. |
recursion | boolean | No | Enable recursion. |
timeoutSeconds | integer | No | positive. HTTP timeout in seconds. |
rawOptions | array<string> | No | Additional safe ffuf options. |
Schema: ffufToolSchema.shape · Source: src/index.ts:2770
nucleiScan
| Parameter | Type | Required | Details |
|---|---|---|---|
engagementId | string | Yes | min length 1. |
targets | array<string> | Yes | min 1 items. List of targets (URLs/domains/IPs). |
templates | array<string> | No | Deprecated: caller-selected templates are disabled; configure MCP_NUCLEI_TEMPLATES_DIR with reviewed signed HTTP templates. |
severities | array<enum> | No | One of info, low, medium, high, critical, unknown. Severity filters. |
tags | array<string> | No | Nuclei tag filters. |
rateLimit | integer | No | positive. Requests per second. |
headless | boolean | No | Enable headless templates. |
rawOptions | array<string> | No | Additional safe nuclei options. |
Schema: nucleiToolSchema.shape · Source: src/index.ts:2826
Capture and credential checks
trafficCapture
| Parameter | Type | Required | Details |
|---|---|---|---|
engagementId | string | Yes | min length 1. |
networkInterface | string | Yes | Network interface (en0, eth0, wlan0). |
packetCount | integer | Yes | positive. Number of packets to capture. |
bpfFilter | string | No | Optional BPF filter (simple form, rawOptions for advanced). |
outputPcap | string | No | Optional output pcap path. |
rawOptions | array<string> | No | Additional safe tcpdump options. |
Schema: trafficCaptureToolSchema.shape · Source: src/index.ts:2893
hydraBruteforce
| Parameter | Type | Required | Details |
|---|---|---|---|
engagementId | string | Yes | min length 1. |
target | string | Yes | Target host/IP. |
service | string | Yes | Service name (ssh, ftp, rdp, smb, http-get, etc.). |
username | string | No | Single username. |
password | string | No | Single password. |
usernameList | string | No | Path to username list. |
passwordList | string | No | Path to password list. |
port | integer | No | positive. Override service port. |
tasks | integer | No | positive, max 16. Parallel tasks (max 16). |
rawOptions | array<string> | No | Additional safe hydra options. |
Schema: hydraToolSchema.shape · Source: src/index.ts:2945
runJohnTheRipper
| Parameter | Type | Required | Details |
|---|---|---|---|
engagementId | string | Yes | min length 1. |
hashData | string | Yes | String containing the password hashes, one per line. |
options | array<string> | No | Array of command-line options for JtR. |
Schema: jtrToolSchema.shape · Source: src/index.ts:1810
runHashcat
| Parameter | Type | Required | Details |
|---|---|---|---|
engagementId | string | Yes | min length 1. |
hashData | string | Yes | String containing the password hashes, one per line. |
attackMode | enum | No | One of 0, 1, 3, 4, 6, 7. Attack mode: 0=Straight, 1=Combination, 3=Brute-force, 4=PCFG (Hashcat 8+), 6=Hybrid Wordlist + Mask, 7=Hybrid Mask + Wordlist. |
hashType | string | No | matches /^\d{1,6}$/. Numeric hash-type, e.g., 0=MD5, 100=SHA1, 1000=NTLM, 1400=SHA2-256, 1800=sha512crypt, 22000=WPA01/WPA02. |
hashRecipe | string | No | min length 1, max length 4096. Hashcat 8+ expression for hashType 4000; use only a reviewed, authorized hash format. |
wordlist | string | No | Path to wordlist file for dictionary attacks. |
mask | string | No | Mask for brute-force attacks (e.g., '?a?a?a?a?a?a?a?a' for 8 chars). |
increment | boolean | No | Enable incremental mode (start with shorter passwords). |
incrementMin | integer | No | Minimum password length for incremental mode. |
incrementMax | integer | No | Maximum password length for incremental mode. |
rules | string | No | Rules file to apply to wordlist. |
session | string | No | Session name for resuming attacks. |
restore | boolean | No | Restore a previous session. |
optimizedKernels | boolean | No | Enable optimized kernels (-O). |
workloadProfile | enum | No | One of 1, 2, 3, 4. Hashcat 7 workload profile; accepted but ignored by Hashcat 8. |
deviceTypes | array<enum> | No | One of 1, 2. OpenCL backend types (-D): 1=CPU, 2=GPU; supply both to select both. This does not select FPGA. |
backendDevices | array<integer> | No | min 1 items, max 32 items. OpenCL/backend device IDs (-d) from the host's Hashcat device listing; FPGA bridge units are selected by hash mode. |
force | boolean | No | Ignore warnings. |
potfilePath | string | No | Path to custom potfile. |
outfile | string | No | Output file for cracked hashes. |
outfileFormat | integer | No | Output format: 1=hash, 2=plain, 3=hex-plain, etc. |
runtime | integer | No | Abort session after X seconds. |
showProgress | boolean | No | Show progress every X seconds. |
quiet | boolean | No | Suppress output. |
loopback | boolean | No | Add new plains to induct directory. |
markovThreshold | integer | No | Threshold X when to stop accepting new Markov-chains. |
customCharset1 | string | No | User-defined charset ?1. |
customCharset2 | string | No | User-defined charset ?2. |
customCharset3 | string | No | User-defined charset ?3. |
customCharset4 | string | No | User-defined charset ?4. |
options | array<string> | No | Additional raw hashcat options. |
Schema: hashcatToolSchema.shape · Source: src/index.ts:1878
generateWordlist
| Parameter | Type | Required | Details |
|---|---|---|---|
engagementId | string | Yes | min length 1. |
baseWords | array<string> | No | max 100 items. Known words. Omit to ask the operator for names, aliases, organization terms, dates, and location clues through MCP elicitation. |
dates | array<string> | No | max 50 items. List of dates (YYYY-MM-DD, MM-DD, YYYY). Parsed for variations. |
locationWords | array<string> | No | max 50 items. Street, city, address, postcode, or other location terms supplied by the authorized operator. |
customPatterns | array<string> | No | max 50 items. List of patterns/symbols to prepend/append. |
minYear | integer | No | min 1000, max 3000. Minimum year (YYYY) to include in variations. |
maxYear | integer | No | min 1000, max 3000. Maximum year (YYYY) to include in variations (defaults to current year). |
includeLeet | boolean | No | Default false. Apply basic leetspeak substitutions (a=4, e=3, etc.). |
caseVariations | boolean | No | Default true. Include variations like TitleCase, UPPERCASE. |
Schema: generateWordlistSchema.shape · Source: src/index.ts:1671
Local audit and extraction
privEscAudit
| Parameter | Type | Required | Details |
|---|---|---|---|
engagementId | string | Yes | min length 1. |
rawOptions | array<string> | No | Optional linpeas flags when linpeas is available. |
Schema: privEscToolSchema.shape · Source: src/index.ts:3016
extractionSweep
| Parameter | Type | Required | Details |
|---|---|---|---|
engagementId | string | Yes | min length 1. |
targetUrl | string | Yes | URL. Target URL with injectable parameter. |
dumpData | boolean | No | Attempt table dump via sqlmap. |
risk | integer | No | min 1, max 3. sqlmap risk level. |
level | integer | No | min 1, max 5. sqlmap level. |
rawOptions | array<string> | No | Additional safe sqlmap options. |
Schema: extractionToolSchema.shape · Source: src/index.ts:3060
Scope, agent, and report workflow
saveAssessmentPlan
| Parameter | Type | Required | Details |
|---|---|---|---|
engagementId | string | Yes | min length 1. |
client | string | Yes | min length 1, max length 200. |
title | string | Yes | min length 1, max length 300. |
assessmentType | string | Yes | min length 1, max length 200. |
objectives | array<string> | Yes | max 50 items. |
authorizedMethods | array<string> | Yes | max 50 items. |
allowedToolNames | array<string> | Yes | max 50 items. Exact MCP tool names permitted for this engagement, including managed worker and direct client calls; use [] for a report-only plan. |
prohibitedMethods | array<string> | Yes | max 50 items. |
dataHandling | string | Yes | min length 1, max length 4000. |
reportAudience | string | Yes | min length 1, max length 300. |
stopConditions | array<string> | Yes | max 50 items. |
modelDataPolicy | enum | Yes | One of metadata-only, no-model, local-agent, approved-provider. |
workOwnership | enum | Yes | One of internal, external-client, unspecified. |
providerClientApprovalReference | string | No | min length 1, max length 500. |
operatorNotes | string | No | max length 4000. |
Schema: assessmentPlanSchema.shape · Source: src/index.ts:2112
getAssessmentPlan
| Parameter | Type | Required | Details |
|---|---|---|---|
engagementId | string | Yes | min length 1. |
Schema: engagementIdSchema.shape · Source: src/index.ts:2127
listAgentProfiles
This tool takes no arguments.
Schema: {} · Source: src/index.ts:2141
runAgentAssessment
| Parameter | Type | Required | Details |
|---|---|---|---|
engagementId | string | Yes | min length 1. |
profileId | string | Yes | min length 1. Configured local Codex assessment profile with the complete Pentest MCP tool inventory. |
timeoutSeconds | integer | No | min 30, max 1800. |
Schema: z.object({ … }).shape · Source: src/index.ts:2152
reconcileAgentAssessment
| Parameter | Type | Required | Details |
|---|---|---|---|
engagementId | string | Yes | min length 1. |
runId | string | Yes | UUID. Interrupted assessment run ID from the durable start receipt. |
confirmedStopped | literal | Yes | Operator confirmation that the prior model process is stopped. |
reviewedBy | string | Yes | min length 3, max length 200. |
rationale | string | Yes | min length 16, max length 2000. |
Schema: z.object({ … }).shape · Source: src/index.ts:2179
recordResearchActivity
| Parameter | Type | Required | Details |
|---|---|---|---|
engagementId | string | Yes | min length 1. |
sourceType | enum | Yes | One of source-review, manual-test, daybreak, glasswing, codex, claude, ssh, external-tool, other. |
action | string | Yes | min length 1, max length 300. |
summary | string | Yes | min length 1, max length 4000. |
observations | array<string> | No | max 100 items. Default []. |
target | string | No | — |
outcome | enum | No | One of succeeded, failed, cancelled. Default 'succeeded'. |
rawEvidence | string | No | max length 100000. |
evidenceReference | string | No | max length 1000. |
Schema: z.object({ … }).shape · Source: src/index.ts:2203
draftAssessmentReport
| Parameter | Type | Required | Details |
|---|---|---|---|
engagementId | string | Yes | min length 1. |
profileId | string | No | min length 1. Configured API, Codex, Claude, or fixed SSH profile; omit for deterministic evidence draft. |
Schema: z.object({ … }).shape · Source: src/index.ts:2234
listAgentReportDrafts
| Parameter | Type | Required | Details |
|---|---|---|---|
engagementId | string | Yes | min length 1. |
Schema: z.object({ … }).shape · Source: src/index.ts:2255
getAgentReportDraft
| Parameter | Type | Required | Details |
|---|---|---|---|
engagementId | string | Yes | min length 1. |
recordId | string | Yes | min length 1. |
format | enum | No | One of markdown, json. Default 'markdown'. |
Schema: z.object({ … }).shape · Source: src/index.ts:2274
publishAgentReport
| Parameter | Type | Required | Details |
|---|---|---|---|
engagementId | string | Yes | min length 1. |
draftRecordId | string | Yes | min length 1. |
reviewedBy | string | Yes | min length 1, max length 200. |
approvedSummary | string | Yes | min length 1, max length 6000. Analyst-reviewed executive summary; may edit the draft text. |
verifiedFindings | array<object> | No | Fields: title: string, severity: enum, description: string, impact: string, remediation: string, verifiedBy: string, verifiedAt: string, evidenceRecordIds: array<string>, affectedAssets?: array<string>, reproductionSteps?: array<string>, references?: array<string>, cweId?: string, cvssVector?: string, retestStatus?: enum. Default []. |
approvedRecommendations | array<string> | No | — |
Schema: z.object({ … }).shape · Source: src/index.ts:2292
Evidence and direct reports
listEngagementRecords
| Parameter | Type | Required | Details |
|---|---|---|---|
engagementId | string | Yes | min length 1. Engagement whose records to list. |
category | enum | No | One of sniffing, finding, bruteforce, cracking, privilege-escalation, extraction, reporting, other, audit. Optional workflow category filter. |
targetContains | string | No | Optional case-insensitive target filter. |
limit | integer | No | positive, max 500. Maximum records to return. |
offset | integer | No | non-negative. Zero-based offset for paging through older records. |
Schema: listEngagementRecordsToolSchema.shape · Source: src/index.ts:2355
getEngagementRecord
| Parameter | Type | Required | Details |
|---|---|---|---|
engagementId | string | Yes | min length 1. |
recordId | string | Yes | Engagement record ID (recordId=...). |
Schema: getEngagementRecordToolSchema.shape · Source: src/index.ts:2379
createClientReport
| Parameter | Type | Required | Details |
|---|---|---|---|
engagementId | string | Yes | min length 1. |
client | string | Yes | min length 1. |
title | string | Yes | min length 1. |
assessmentType | string | Yes | min length 1. |
summary | string | Yes | min length 1. |
recordIds | array<string> | Yes | Explicit evidence IDs to attach; use [] to state that no tool evidence is attached. |
findings | array<analystFindingSchema> | No | Default []. |
recommendations | array<string> | No | Default []. |
methodology | string | No | — |
limitations | array<string> | No | — |
scopeOfWork | string | No | Optional operator-supplied scope notes; does not change executable scope. |
analystFindingSchema fields
| Parameter | Type | Required | Details |
|---|---|---|---|
title | string | Yes | min length 1. |
severity | enum | Yes | One of critical, high, medium, low, informational. |
description | string | Yes | min length 1. |
impact | string | Yes | min length 1. |
remediation | string | Yes | min length 1. |
verifiedBy | string | Yes | min length 1. |
verifiedAt | string | Yes | ISO 8601 datetime. |
evidenceRecordIds | array<string> | No | — |
externalEvidence | array<string> | No | — |
affectedAssets | array<string> | No | — |
reproductionSteps | array<string> | No | — |
references | array<string> | No | — |
cweId | string | No | matches /^CWE-\d+$/. |
cvssVector | string | No | matches /^CVSS:[34].\d//. |
retestStatus | enum | No | One of not-retested, open, remediated. |
Schema: createClientReportToolSchema.shape · Source: src/index.ts:2430
listClientReports
| Parameter | Type | Required | Details |
|---|---|---|---|
engagementId | string | Yes | min length 1. |
limit | integer | No | positive, max 500. |
offset | integer | No | non-negative. |
Schema: listClientReportsSchema.shape · Source: src/index.ts:2481
getClientReport
| Parameter | Type | Required | Details |
|---|---|---|---|
engagementId | string | Yes | min length 1. |
reportId | string | Yes | min length 1. |
format | enum | No | One of markdown, json. Default 'markdown'. |
Schema: getClientReportSchema.shape · Source: src/index.ts:2498
Runtime and scan control
getRuntimeStatus
This tool takes no arguments.
Schema: {} · Source: src/index.ts:1449
listActiveScans
| Parameter | Type | Required | Details |
|---|---|---|---|
engagementId | string | Yes | min length 1. |
Schema: z.object({ … }).shape · Source: src/index.ts:2053
cancelScan
| Parameter | Type | Required | Details |
|---|---|---|---|
engagementId | string | Yes | min length 1. |
scanId | string | Yes | The ID of the scan to cancel. |
Schema: cancelScanToolSchema.shape · Source: src/index.ts:2076
Resources
The server registers one resource template.
| Name | URI template | Source |
|---|---|---|
clientReport | mcp://pentest/clientReport/{reportId} | src/index.ts:1429 |