@mcp.tool() async def query_analytics(start_date: str, end_date: str, metrics: List[str], dimensions: List[str], filters: Optional[Dict] = None) -> str: """Query Google Analytics data with custom metrics, dimensions, and filters.""" try: property_id = os.getenv('GA4_PROPERTY_ID') request_body = { 'dateRanges': [{'startDate': start_date, 'endDate': end_date}], 'metrics': [{'name': metric} for metric in metrics], 'dimensions': [{'name': dimension} for dimension in dimensions] } if filters: request_body['dimensionFilter'] = filters response = analytics_service.properties().runReport( property=f'properties/{property_id}', body=request_body ).execute() result = format_analytics_response(response) return json.dumps(result, indent=2) except Exception as e: return json.dumps({"error": str(e)}, indent=2) __ __