get_today_resilience_data
Retrieve today's resilience metrics from Oura API to monitor stress recovery and overall well-being through the MCP server.
Instructions
Get resilience data for today.
Returns:
Dictionary containing resilience data for today
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Implementation Reference
- src/oura_mcp_server/server.py:443-459 (handler)The primary handler function for the 'get_today_resilience_data' MCP tool. It checks if the Oura client is initialized, computes today's date, calls the client's get_resilience_data method for today, and handles exceptions by returning an error dictionary.@mcp.tool() def get_today_resilience_data() -> dict[str, Any]: """ Get resilience data for today. Returns: Dictionary containing resilience data for today """ if oura_client is None: return {"error": "Oura client not initialized. Please provide an access token."} try: today = date.today() return oura_client.get_resilience_data(today, today) except Exception as e: return {"error": str(e)}
- The OuraClient helper method get_resilience_data that performs the actual API call to fetch resilience data from Oura API for a date range, transforms the response by removing 'id' fields, and returns the data dictionary. This is called by the tool handler.def get_resilience_data( self, start_date: date, end_date: Optional[date] = None ) -> dict[str, Any]: """ Get resilience data for a specific date range. Args: start_date: Start date for the query end_date: End date for the query (optional, defaults to start_date) Returns: Dictionary containing resilience data """ if end_date is None: end_date = start_date params = { "start_date": start_date.isoformat(), "end_date": end_date.isoformat(), } url = f"{self.BASE_URL}/daily_resilience" response = self.client.get(url, headers=self.headers, params=params) if response.status_code != 200: error_msg = f"Error {response.status_code}: {response.text}" raise Exception(error_msg) # Get the raw response raw_data = response.json() # Transform the data - just return the data array directly transformed_data = [] for item in raw_data.get("data", []): # Create transformed item without the id field transformed_item = {k: v for k, v in item.items() if k != "id"} transformed_data.append(transformed_item) # Return with the original structure but with transformed data return {"data": transformed_data}