list_scrum_tasks
Retrieve and filter scrum tasks from ServiceNow to manage agile workflows, track progress, and organize team assignments with customizable parameters.
Instructions
List scrum tasks from ServiceNow
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of records to return | |
| offset | No | Offset to start from | |
| state | No | Filter by state | |
| assignment_group | No | Filter by assignment group | |
| timeframe | No | Filter by timeframe (upcoming, in-progress, completed) | |
| query | No | Additional query string |
Implementation Reference
- The handler function implementing the core logic for the 'list_scrum_tasks' tool. It validates parameters, builds a ServiceNow API query based on filters like state, assignment_group, timeframe, and query, then fetches and returns scrum tasks from the 'rm_scrum_task' table.def list_scrum_tasks( auth_manager: AuthManager, server_config: ServerConfig, params: Dict[str, Any], ) -> Dict[str, Any]: """ List scrum tasks from ServiceNow. Args: auth_manager: The authentication manager. server_config: The server configuration. params: The parameters for listing scrum tasks. Returns: A list of scrum tasks. """ # Unwrap and validate parameters result = _unwrap_and_validate_params( params, ListScrumTasksParams ) if not result["success"]: return result validated_params = result["params"] # Build the query query_parts = [] if validated_params.state: query_parts.append(f"state={validated_params.state}") if validated_params.assignment_group: query_parts.append(f"assignment_group={validated_params.assignment_group}") # Handle timeframe filtering if validated_params.timeframe: now = datetime.now().strftime("%Y-%m-%d %H:%M:%S") if validated_params.timeframe == "upcoming": query_parts.append(f"start_date>{now}") elif validated_params.timeframe == "in-progress": query_parts.append(f"start_date<{now}^end_date>{now}") elif validated_params.timeframe == "completed": query_parts.append(f"end_date<{now}") # Add any additional query string if validated_params.query: query_parts.append(validated_params.query) # Combine query parts query = "^".join(query_parts) if query_parts else "" # Get the instance URL instance_url = _get_instance_url(auth_manager, server_config) if not instance_url: return { "success": False, "message": "Cannot find instance_url in either server_config or auth_manager", } # Get the headers headers = _get_headers(auth_manager, server_config) if not headers: return { "success": False, "message": "Cannot find get_headers method in either auth_manager or server_config", } # Make the API request url = f"{instance_url}/api/now/table/rm_scrum_task" params = { "sysparm_limit": validated_params.limit, "sysparm_offset": validated_params.offset, "sysparm_query": query, "sysparm_display_value": "true", } try: response = requests.get(url, headers=headers, params=params) response.raise_for_status() result = response.json() # Handle the case where result["result"] is a list scrum_tasks = result.get("result", []) count = len(scrum_tasks) return { "success": True, "scrum_tasks": scrum_tasks, "count": count, "total": count, # Use count as total if total is not provided } except requests.exceptions.RequestException as e: logger.error(f"Error listing stories: {e}") return { "success": False, "message": f"Error listing stories: {str(e)}", }
- Pydantic BaseModel defining the input schema/parameters for the list_scrum_tasks tool, including pagination (limit, offset), filters (state, assignment_group, timeframe, query).class ListScrumTasksParams(BaseModel): """Parameters for listing scrum tasks.""" limit: Optional[int] = Field(10, description="Maximum number of records to return") offset: Optional[int] = Field(0, description="Offset to start from") state: Optional[str] = Field(None, description="Filter by state") assignment_group: Optional[str] = Field(None, description="Filter by assignment group") timeframe: Optional[str] = Field(None, description="Filter by timeframe (upcoming, in-progress, completed)") query: Optional[str] = Field(None, description="Additional query string")
- src/servicenow_mcp/utils/tool_utils.py:916-922 (registration)Registration of the 'list_scrum_tasks' tool in the central tool_definitions dictionary returned by get_tool_definitions(). Maps the tool name to its handler function (list_scrum_tasks_tool), input schema (ListScrumTasksParams), return type hint, description, and serialization method."list_scrum_tasks": ( list_scrum_tasks_tool, ListScrumTasksParams, str, # Expects JSON string "List scrum tasks from ServiceNow", "json", # Tool returns list/dict ),
- src/servicenow_mcp/tools/__init__.py:105-109 (registration)Import of the list_scrum_tasks handler from scrum_task_tools.py into the tools package __init__.py, making it available for use.from servicenow_mcp.tools.scrum_task_tools import ( create_scrum_task, update_scrum_task, list_scrum_tasks, )
- src/servicenow_mcp/tools/__init__.py:217-217 (registration)Inclusion of 'list_scrum_tasks' in the __all__ list of tools/__init__.py, explicitly exporting it from the package."list_scrum_tasks",