list_series
Browse available Bureau of Labor Statistics data series with category filtering to find economic indicators like CPI and employment statistics.
Instructions
List available BLS data series with optional category filtering. Returns series metadata including titles, IDs, and categories.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Filter by category (e.g., 'CPI', 'Employment'). Optional. | |
| limit | No | Maximum number of results to return (default: 50) |
Implementation Reference
- src/bls_mcp/tools/list_series.py:49-78 (handler)The main handler function that executes the list_series tool logic: validates input, fetches series from data provider, and formats the response.async def execute(self, arguments: Dict[str, Any]) -> Dict[str, Any]: """Execute list_series tool.""" logger.info(f"Executing list_series with arguments: {arguments}") # Validate input try: input_data = ListSeriesInput(**arguments) except Exception as e: logger.error(f"Input validation failed: {e}") return {"error": f"Invalid input: {str(e)}"} # Validate limit is_valid, error_msg = validate_limit(input_data.limit) if not is_valid: return {"error": error_msg} # List series try: series_list = await self.data_provider.list_series( category=input_data.category, limit=input_data.limit ) logger.info(f"Successfully listed {len(series_list)} series") return { "series": series_list, "count": len(series_list), "category_filter": input_data.category, } except Exception as e: logger.error(f"Error listing series: {e}") return {"error": f"Failed to list series: {str(e)}"}
- Pydantic model defining the input schema for the list_series tool, including optional category filter and limit.class ListSeriesInput(BaseModel): """Input schema for list_series tool.""" category: Optional[str] = Field( default=None, description="Filter by category (e.g., 'CPI', 'Employment'). Optional.", ) limit: int = Field( default=50, description="Maximum number of results to return (default: 50)" )
- src/bls_mcp/server.py:47-52 (registration)Registration of the ListSeriesTool instance in the server's tools dictionary, making it available via MCP.self.tools = { "get_series": GetSeriesTool(self.data_provider), "list_series": ListSeriesTool(self.data_provider), "get_series_info": GetSeriesInfoTool(self.data_provider), "plot_series": PlotSeriesTool(self.data_provider), }