Add onions and garlic, and sauté until softened and caramelized, about 20 minutes.
Stir in beef broth, chicken broth, water, bay leaves, thyme, and black pepper.
Bring to a simmer and cook for 30 minutes.
Preheat broiler.
Remove bay leaves from the soup.
Ladle the soup into oven safe bowls, and add a slice of whole grain bread on top of each bowl.
Sprinkle parmesan and Gruyere cheese on top of each bowl.
Place the bowls under the broiler until cheese is melted and bubbly.
Serve hot.
Note: This recipe is a healthier version of traditional French onion soup that uses low-sodium broths and whole grain bread, and reduces the amount of cheese used.