Command-Line Interface and Python bindings for https://Pentest-Tools.com.
Installing
PentestTools Python module is delivered through PyPI, so it can be installed directly via pip:
pip install pentesttools
Usage
The pentesttools package provides a command line interface through the ptt utility. Right
now it supports the Website Scanner service.
Example for the simplest scan:
ptt run website_scanner <url>
This runs a freemium Website Scanner scan on the <url>. Unlike in the platform itself, you can omit the schema part from the url.
Global arguments, like a suitable key for a deep scan, have to be passed straight to ptt. Tool arguments have to be passed to the tool.
ptt --key <key> run website_scanner --scan_type deep <url>
If you want the command to fail if the report contains vulnerabilities with a higher risk than some value, you can use the --fail argument.
ptt --fail high run website_scanner <url>
You can also run ptt using docker. The docker image has ptt as an entrypoint, so you don't have to type it anymore. Note that the old ptt-scan name is still used on docker.
docker run pentesttoolscom/ptt-scan:latest run website_scanner <url>
Development installation
If you want to easily modify the sources and your modifications:
pip install --edit .
Uninstalling
pip uninstall pentesttools
Testing and Coverage
You can run the tests and make coverage reports like this:
python3 -m pytest src/tests
coverage run -m pytest src/tests
coverage report -m
MCP
There is an optional MCP server provided in this package.
Installation:
pip install "pentesttools[mcp]"
Usage
There is a hosted endpoint at https://mcp.pentest-tools.com:9001/mcp.
Example config:
"ptt-mcp-http": {
"type": "http",
"url": "https://mcp.pentest-tools.com:9001/mcp/",
"headers": {
"PTT_API_KEY": "<ptt-api-key>"
}
}
You can also self-host the MCP server. This command will open an MCP server locally on port 9000.
ptt --key <ptt-api-key> mcp --mcp_method stdio
Connect with your favorite LLM client.
"ptt-mcp-remote": {
"type": "stdio",
"command": "ptt",
"args": ["mcp", "--mcp_method", "stdio"],
"env": {
"PTT_API_KEY": "<ptt-api-key>"
}
}
The MCP server also supports the HTTP method, which is also the default.
ptt mcp
In this case, you have to pass the API key as a header, called PTT_API_KEY.
Example config:
"ptt-mcp-http": {
"type": "http",
"url": "http://localhost:9000/mcp",
"headers": {
"PTT_API_KEY": "<ptt-api-key>"
}
}