list_scans
View and filter scans in your Intruder account by status or type, including scheduled, new service, rapid remediation, and cloud security scans.
Instructions
List scans in the Intruder account with optional filters.
Args:
status: Filter by scan status (in_progress, completed, cancelled, cancelled_no_active_targets,
cancelled_no_valid_targets, analysing_results)
scan_type: Filter by scan type (assessment_schedule, new_service, cloudbot_new_target,
rapid_remediation, advisory, cloud_security)
The scan_type parameters mean:
- assessment_schedule: Scans that run on a regular schedule
- new_service: Scans that are triggered when a new service is exposed on a target
- cloudbot_new_target: Scans that are triggered when CloudBot discovers a new target in a connected cloud account
- rapid_remediation: Scans that a user can trigger to test if a specific issue has been remediated
- advisory: An issue created by the Intruder security team based on their manual work
- cloud_security: Scans of cloud accounts, checking the configuration of the resources in the cloud account
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| scan_type | No | ||
| status | No |
Input Schema (JSON Schema)
{
"properties": {
"scan_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Scan Type"
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Status"
}
},
"title": "list_scansArguments",
"type": "object"
}
Implementation Reference
- intruder_mcp/server.py:62-83 (handler)The handler function for the MCP tool 'list_scans'. It is registered via @mcp.tool() decorator, fetches all scans using IntruderAPI.list_scans_all with optional filters, formats them into a readable string list, and returns it.@mcp.tool() async def list_scans(status: Optional[str] = None, scan_type: Optional[str] = None) -> str: """ List scans in the Intruder account with optional filters. Args: status: Filter by scan status (in_progress, completed, cancelled, cancelled_no_active_targets, cancelled_no_valid_targets, analysing_results) scan_type: Filter by scan type (assessment_schedule, new_service, cloudbot_new_target, rapid_remediation, advisory, cloud_security) The scan_type parameters mean: - assessment_schedule: Scans that run on a regular schedule - new_service: Scans that are triggered when a new service is exposed on a target - cloudbot_new_target: Scans that are triggered when CloudBot discovers a new target in a connected cloud account - rapid_remediation: Scans that a user can trigger to test if a specific issue has been remediated - advisory: An issue created by the Intruder security team based on their manual work - cloud_security: Scans of cloud accounts, checking the configuration of the resources in the cloud account """ scans = api.list_scans_all(status=status, scan_type=scan_type) formatted = [f"{scan.id} - {scan.scan_type} ({scan.status})" for scan in scans] return "\n".join(formatted)
- intruder_mcp/api_client.py:144-155 (helper)Supporting helper method in IntruderAPI class that retrieves all scans by paginating through the API endpoints using list_scans.def list_scans_all(self, scan_type: Optional[str] = None, schedule_period: Optional[str] = None, status: Optional[str] = None) -> Generator[ScanList, None, None]: offset = 0 while True: response = self.list_scans(scan_type=scan_type, schedule_period=schedule_period, status=status, limit=100, offset=offset) for scan in response.results: yield scan if not response.next: break offset += len(response.results)
- intruder_mcp/api_client.py:128-142 (helper)Low-level API method that queries the Intruder API for scans with pagination parameters, used by list_scans_all.def list_scans(self, scan_type: Optional[str] = None, schedule_period: Optional[str] = None, status: Optional[str] = None, limit: Optional[int] = None, offset: Optional[int] = None) -> PaginatedScanListList: params = {} if scan_type: params["scan_type"] = scan_type if schedule_period: params["schedule_period"] = schedule_period if status: params["status"] = status if limit: params["limit"] = limit if offset: params["offset"] = offset return PaginatedScanListList(**self.client.get(f"{self.base_url}/scans/", params=params).json())