get_fire_risk
Check fire risk forecasts for Portuguese municipalities to assess wildfire danger levels from low to maximum, helping with safety planning and prevention measures.
Instructions
Get fire risk forecast for Portugal (Previsão Risco de Incêndio até 2 dias).
Args:
day: Forecast day (0=today, 1=tomorrow). Valid range: 0-1
Returns fire risk classification (RCM - Risco de Incêndio) for Portuguese municipalities.
Fire risk levels: 1=Low, 2=Moderate, 3=High, 4=Very High, 5=Maximum
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| day | No |
Implementation Reference
- weather.py:294-341 (handler)The main handler function for the 'get_fire_risk' tool. It fetches fire risk forecast data from the IPMA API for Portuguese municipalities, processes it, and returns a formatted string with risk levels for sample locations.@mcp.tool() async def get_fire_risk(day: int = 0) -> str: """Get fire risk forecast for Portugal (Previsão Risco de Incêndio até 2 dias). Args: day: Forecast day (0=today, 1=tomorrow). Valid range: 0-1 Returns fire risk classification (RCM - Risco de Incêndio) for Portuguese municipalities. Fire risk levels: 1=Low, 2=Moderate, 3=High, 4=Very High, 5=Maximum """ if day < 0 or day > 1: return "Invalid day parameter. Please use 0 (today) or 1 (tomorrow)." fire_url = f"{IPMA_API_BASE}/forecast/meteorology/rcm/rcm-d{day}.json" fire_data = await make_ipma_request(fire_url) if not fire_data or "local" not in fire_data: return "Unable to fetch fire risk data." result = f"""Fire Risk Forecast (RCM - Risco de Incêndio) Forecast Date: {fire_data.get('dataPrev', 'Unknown')} Model Run Date: {fire_data.get('dataRun', 'Unknown')} File Date: {fire_data.get('fileDate', 'Unknown')} Fire Risk Levels: 1=Low, 2=Moderate, 3=High, 4=Very High, 5=Maximum Sample Municipalities (first 20): """ count = 0 for dico, location in fire_data['local'].items(): if count >= 20: break rcm_value = location.get('data', {}).get('rcm', 'N/A') risk_label = {1: 'Low', 2: 'Moderate', 3: 'High', 4: 'Very High', 5: 'Maximum'}.get(rcm_value, 'Unknown') result += f""" Municipality Code: {dico} Position: {location.get('latitude', 'N/A')}°N, {location.get('longitude', 'N/A')}°E Fire Risk: {rcm_value} ({risk_label}) ---""" count += 1 total_locations = len(fire_data['local']) result += f"\n\nTotal Municipalities: {total_locations}" return result