@@ -56,6 +56,10 @@ def _build_filter_info(params: "ListIncidentsParams") -> dict[str, Any]:
5656 filters ["severity" ] = [sev .value if hasattr (sev , "value" ) else sev for sev in params .severity ]
5757 if params .validity :
5858 filters ["validity" ] = [v .value if hasattr (v , "value" ) else v for v in params .validity ]
59+ if params .assignee_id :
60+ filters ["assignee_id" ] = params .assignee_id
61+ if params .assignee_email :
62+ filters ["assignee_email" ] = params .assignee_email
5963
6064 return filters
6165
@@ -67,6 +71,10 @@ def _build_suggestion(params: "ListIncidentsParams", incidents_count: int) -> st
6771 # Explain what's being filtered
6872 if params .mine :
6973 suggestions .append ("Incidents are filtered to show only those assigned to current user" )
74+ if params .assignee_id :
75+ suggestions .append (f"Incidents are filtered by assignee ID: { params .assignee_id } " )
76+ if params .assignee_email :
77+ suggestions .append (f"Incidents are filtered by assignee email: { params .assignee_email } " )
7078
7179 if params .exclude_tags :
7280 excluded_tag_names = [tag .name if hasattr (tag , "name" ) else tag for tag in params .exclude_tags ]
@@ -129,6 +137,14 @@ class ListIncidentsParams(BaseModel):
129137 default = False ,
130138 description = "If True, fetch only incidents assigned to the current user. Set to False to get all incidents." ,
131139 )
140+ assignee_id : int | None = Field (
141+ default = None ,
142+ description = "Filter by assignee member ID. Cannot be used together with 'mine'." ,
143+ )
144+ assignee_email : str | None = Field (
145+ default = None ,
146+ description = "Filter by assignee email address. Cannot be used together with 'mine'." ,
147+ )
132148 severity : list [str | IncidentSeverity ] | None = Field (
133149 default = cast (list [str | IncidentSeverity ], DEFAULT_SEVERITIES ),
134150 description = "Filter by severity (list of severity names)" ,
@@ -196,7 +212,18 @@ async def list_incidents(params: ListIncidentsParams) -> ListIncidentsResult | L
196212
197213 if params .mine :
198214 member = await client .get_current_member ()
199- api_params ["assignee_email" ] = member ["email" ]
215+ current_user_email = member ["email" ]
216+ if params .assignee_email and params .assignee_email != current_user_email :
217+ return ListIncidentsError (
218+ error = f"Conflict: 'mine=True' implies assignee_email='{ current_user_email } ', "
219+ f"but assignee_email='{ params .assignee_email } ' was explicitly provided. "
220+ "Please use either 'mine=True' or an explicit 'assignee_email', not both with different values."
221+ )
222+ api_params ["assignee_email" ] = current_user_email
223+ if params .assignee_id :
224+ api_params ["assignee_id" ] = params .assignee_id
225+ if params .assignee_email and not params .mine :
226+ api_params ["assignee_email" ] = params .assignee_email
200227
201228 if params .from_date :
202229 api_params ["date_after" ] = params .from_date
0 commit comments