get_fire_risk
Retrieve fire risk forecasts for Portuguese municipalities to assess wildfire danger levels up to two days ahead.
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 handler function for the get_fire_risk tool, including registration via @mcp.tool() decorator, input validation, API call to IPMA for fire risk data, and formatted output of risk levels for Portuguese municipalities.@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