Skip to main content
Glama

intruder-mcp

Official
enums.py8.98 kB
from typing import List, Optional, Dict, Any, Union from pydantic import BaseModel, Field, HttpUrl from datetime import datetime, date from enum import Enum class ExploitLikelihoodEnum(str, Enum): RARE = "rare" UNLIKELY = "unlikely" LIKELY = "likely" VERY_LIKELY = "very_likely" KNOWN = "known" UNKNOWN = "unknown" class ScanStatusField(str, Enum): IN_PROGRESS = "in_progress" COMPLETED = "completed" CANCELLED = "cancelled" CANCELLED_NO_ACTIVE_TARGETS = "cancelled_no_active_targets" CANCELLED_NO_VALID_TARGETS = "cancelled_no_valid_targets" ANALYSING_RESULTS = "analysing_results" class ScanTypeEnum(str, Enum): ASSESSMENT_SCHEDULE = "assessment_schedule" NEW_SERVICE = "new_service" CLOUDBOT_NEW_TARGET = "cloudbot_new_target" RAPID_REMEDIATION = "rapid_remediation" ADVISORY = "advisory" CLOUD_SECURITY = "cloud_security" class SchedulePeriodEnum(str, Enum): MONTHLY = "monthly" DAILY = "daily" ONE_OFF = "one_off" WEEKLY = "weekly" QUARTERLY = "quarterly" class TypeEnum(str, Enum): HTTP_HEADER = "http_header" SESSION_COOKIE = "session_cookie" HTTP = "http" FORM = "form" RECORDED = "recorded" UNAUTHENTICATED = "unauthenticated" class TargetStatusEnum(str, Enum): LIVE = "live" LICENSE_EXCEEDED = "license_exceeded" UNSCANNED = "unscanned" UNRESPONSIVE = "unresponsive" AGENT_UNINSTALLED = "agent_uninstalled" class LicenseTypeEnum(str, Enum): # Ignore the swagger file here - it incorrectly defines this as an int INFRASTRUCTURE = "infrastructure" APPLICATION = "application" class TargetAuthenticationGenericJSONField(BaseModel): name: str value: str class PluginDetail(BaseModel): cve: Optional[List[Any]] = None cvss_base_score: Optional[str] = None cvss3_base_score: Optional[str] = None name: str class Tags(BaseModel): name: str = Field(..., max_length=40) class TagsRequest(BaseModel): name: str = Field(..., min_length=1, max_length=40) class TargetAuthentications(BaseModel): id: int url: str type: TypeEnum name: Optional[str] = None logout_url: Optional[str] = None logged_in_indicator: Optional[str] = None csrf_token_field: Optional[str] = None login_form_url: Optional[str] = None login_url: Optional[str] = None password_field: Optional[str] = None realm: Optional[str] = None username_field: Optional[str] = None enabled: Optional[bool] = None is_ajax_spider_enabled: Optional[bool] = None recorded_login_file: Optional[HttpUrl] = None class TargetAuthenticationsRequest(BaseModel): url: str = Field(..., min_length=1) type: TypeEnum name: Optional[str] = None logout_url: Optional[str] = None logged_in_indicator: Optional[str] = None csrf_token_field: Optional[str] = None login_form_url: Optional[str] = None login_url: Optional[str] = None password_field: Optional[str] = None realm: Optional[str] = None username_field: Optional[str] = None enabled: Optional[bool] = None is_ajax_spider_enabled: Optional[bool] = None recorded_login_file: Optional[bytes] = None additional_parameters: Optional[List[TargetAuthenticationGenericJSONField]] = None cookies: Optional[List[TargetAuthenticationGenericJSONField]] = None headers: Optional[List[TargetAuthenticationGenericJSONField]] = None password: Optional[str] = Field(None, min_length=1) username: Optional[str] = Field(None, min_length=1) class Target(BaseModel): id: int address: str has_api_schemas: bool has_authentications: bool license_type: Optional[LicenseTypeEnum] = None tags: Optional[List[Optional[str]]] = None target_status: TargetStatusEnum class TargetCreateRequest(BaseModel): address: str tags: Optional[List[str]] = Field(None, min_items=1, max_length=40) target_authentication: Optional[TargetAuthenticationsRequest] = None class Scan(BaseModel): id: int status: ScanStatusField created_at: datetime target_addresses: Optional[List[str]] = None scan_type: ScanTypeEnum schedule_period: SchedulePeriodEnum start_time: Optional[datetime] = None completed_time: Optional[datetime] = None class ScanList(BaseModel): id: int status: ScanStatusField created_at: datetime scan_type: ScanTypeEnum schedule_period: Optional[SchedulePeriodEnum] = None class ScanRequest(BaseModel): target_addresses: Optional[List[str]] = None tag_names: Optional[List[str]] = Field(None, min_items=1) class ScannerOutputList(BaseModel): id: int plugin: PluginDetail scanner_output: Optional[List[Any]] = None class Issue(BaseModel): id: int severity: str title: str description: str remediation: str snoozed: bool snooze_reason: Optional[str] = None snooze_until: Optional[date] = None occurrences: Optional[HttpUrl] = None exploit_likelihood: Union[ExploitLikelihoodEnum, None] cvss_score: Optional[float] = None class Occurrence(BaseModel): id: int target: str port: Optional[Union[str, int]] = None protocol: str extra_info: Optional[Dict[str, str]] = None age: str snoozed: bool snooze_reason: Optional[str] = None snooze_until: Optional[date] = None exploit_likelihood: Union[ExploitLikelihoodEnum, None] cvss_score: Optional[float] = None class Licenses(BaseModel): total_infrastructure_licenses: int available_infrastructure_licenses: int consumed_infrastructure_licenses: int total_application_licenses: int available_application_licenses: int consumed_application_licenses: int class Health(BaseModel): status: str = Field(..., description="API health status") authenticated_as: str = Field(..., format="email") class APISchemas(BaseModel): id: int base_url: HttpUrl name: str target_authentication_id: Optional[int] = None class APISchemasRequest(BaseModel): base_url: HttpUrl = Field(..., min_length=1) name: str = Field(..., min_length=1) target_authentication_id: Optional[int] = None file: bytes class PatchedAPISchemasRequest(BaseModel): base_url: Optional[HttpUrl] = Field(None, min_length=1) name: Optional[str] = Field(None, min_length=1) target_authentication_id: Optional[int] = None file: Optional[bytes] = None class PatchedTargetAuthenticationsRequest(BaseModel): url: Optional[str] = Field(None, min_length=1) type: Optional[TypeEnum] = None name: Optional[str] = None logout_url: Optional[str] = None logged_in_indicator: Optional[str] = None csrf_token_field: Optional[str] = None login_form_url: Optional[str] = None login_url: Optional[str] = None password_field: Optional[str] = None realm: Optional[str] = None username_field: Optional[str] = None enabled: Optional[bool] = None is_ajax_spider_enabled: Optional[bool] = None recorded_login_file: Optional[bytes] = None additional_parameters: Optional[List[TargetAuthenticationGenericJSONField]] = None cookies: Optional[List[TargetAuthenticationGenericJSONField]] = None headers: Optional[List[TargetAuthenticationGenericJSONField]] = None password: Optional[str] = Field(None, min_length=1) username: Optional[str] = Field(None, min_length=1) # Paginated response models class PaginatedResponse(BaseModel): count: int next: Optional[HttpUrl] = None previous: Optional[HttpUrl] = None class PaginatedIssueList(PaginatedResponse): results: List[Issue] class PaginatedOccurrenceList(PaginatedResponse): results: List[Occurrence] class PaginatedScanListList(PaginatedResponse): results: List[ScanList] class PaginatedScannerOutputListList(PaginatedResponse): results: List[ScannerOutputList] class PaginatedTagsList(PaginatedResponse): results: List[Tags] class PaginatedTargetAuthenticationsList(PaginatedResponse): results: List[TargetAuthentications] class PaginatedTargetList(PaginatedResponse): results: List[Target] class PaginatedLicensesList(PaginatedResponse): results: List[Licenses] class IssueSnoozeReasonEnum(str, Enum): ACCEPT_RISK = "ACCEPT_RISK" FALSE_POSITIVE = "FALSE_POSITIVE" MITIGATING_CONTROLS = "MITIGATING_CONTROLS" class OccurrencesSnoozeReasonEnum(str, Enum): ACCEPT_RISK = "ACCEPT_RISK" FALSE_POSITIVE = "FALSE_POSITIVE" MITIGATING_CONTROLS = "MITIGATING_CONTROLS" class SnoozeIssueRequest(BaseModel): details: Optional[str] = None duration: Optional[int] = None duration_type: Optional[str] = None # Should match DurationTypeEnum if defined reason: IssueSnoozeReasonEnum class SnoozeOccurrenceRequest(BaseModel): details: Optional[str] = None duration: Optional[int] = None duration_type: Optional[str] = None # Should match DurationTypeEnum if defined reason: OccurrencesSnoozeReasonEnum

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/intruder-io/intruder-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server