Skip to main content
Glama
panther-labs

Panther MCP Server

Official

disable_detection

Turn off security detection rules or policies in Panther by setting them to disabled status.

Instructions

Disable a Panther detection by setting enabled to false.

Permissions:{'any_of': ['Manage Rules', 'Manage Policies']}

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
detection_idYesThe ID of the detection to disable
detection_typeNoType of detection to disable. Valid options: rules, scheduled_rules, simple_rules, or policies.rules

Implementation Reference

  • Registration of the disable_detection tool using the @mcp_tool decorator, specifying required permissions and hints for destructive and idempotent behavior.
    @mcp_tool(
        annotations={
            "permissions": any_perms(Permission.RULE_MODIFY, Permission.POLICY_MODIFY),
            "destructiveHint": True,
            "idempotentHint": True,
        }
    )
  • Input schema for the disable_detection tool defined using Annotated types and Pydantic Field descriptions with examples.
        detection_id: Annotated[
            str,
            Field(
                description="The ID of the detection to disable",
                examples=["AWS.Suspicious.S3.Activity", "GCP.K8S.Privileged.Pod.Created"],
            ),
        ],
        detection_type: Annotated[
            str,
            Field(
                description="Type of detection to disable. Valid options: rules, scheduled_rules, simple_rules, or policies.",
                examples=["rules", "scheduled_rules", "simple_rules", "policies"],
            ),
        ] = "rules",
    ) -> dict[str, Any]:
  • The handler function for disable_detection: validates input, fetches current detection, sets enabled=False, performs PUT update via REST client, handles errors and not-found cases.
    async def disable_detection(
        detection_id: Annotated[
            str,
            Field(
                description="The ID of the detection to disable",
                examples=["AWS.Suspicious.S3.Activity", "GCP.K8S.Privileged.Pod.Created"],
            ),
        ],
        detection_type: Annotated[
            str,
            Field(
                description="Type of detection to disable. Valid options: rules, scheduled_rules, simple_rules, or policies.",
                examples=["rules", "scheduled_rules", "simple_rules", "policies"],
            ),
        ] = "rules",
    ) -> dict[str, Any]:
        """Disable a Panther detection by setting enabled to false."""
        logger.info(f"Disabling {detection_type} with ID: {detection_id}")
    
        # Validate detection type
        validation_error = validate_detection_types([detection_type])
        if validation_error:
            return validation_error
    
        # Use centralized field mapping
        field_map = SINGULAR_FIELD_MAP
        endpoint = get_endpoint_for_detection(detection_type, detection_id)
    
        try:
            async with get_rest_client() as client:
                # First get the current detection to preserve other fields
                current_detection, status = await client.get(
                    endpoint, expected_codes=[200, 404]
                )
    
                if status == 404:
                    return {
                        "success": False,
                        "message": f"{detection_type.replace('_', ' ').title()} with ID {detection_id} not found",
                    }
    
                # Disable the detection by setting enabled to False
                # This modifies the API response object which is then sent back in the PUT request
                current_detection["enabled"] = False
    
                # Skip tests for simple disable operation (mainly for rules)
                params = (
                    {"run-tests-first": "false"}
                    if detection_type in ["rules", "scheduled_rules", "simple_rules"]
                    else {}
                )
    
                # Make the update request
                result, _ = await client.put(
                    endpoint, json_data=current_detection, params=params
                )
    
            logger.info(f"Successfully disabled {detection_type} with ID: {detection_id}")
            return {"success": True, field_map[detection_type]: result}
    
        except Exception as e:
            logger.error(f"Failed to disable {detection_type}: {str(e)}")
            return {
                "success": False,
                "message": f"Failed to disable {detection_type}: {str(e)}",
            }

Latest Blog Posts

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/panther-labs/mcp-panther'

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