1. Preheat the oven to 200°. In a 3- to 4-quart casserole, combine the onions, bay leaf, carrots, parsley root, tomatoes, 3 tablespoons of the butter and 4 cups of cold water.
2. Bring to a boil over high heat, stirring constantly, then reduce the heat to moderate, partially cover the casserole, and simmer un-disturbed for 30 minutes.
3. Pour the entire contents of the casserole into a fine sieve set over a large bowl. Press down on the vegetables with the back of a large spoon to extract all their juices before discarding them.
4. Return the strained stock to the casserole, add the fish, and bring to a boil over high heat. Immediately reduce the heat to low, cover the casserole, and simmer 6 to 8 minutes, or until the fish is opaque and firm to the touch.
5. Be careful not to overcook. With a wide spatula, transfer the fish to a deep ovenproof serving dish, cover it loosely with foil and keep it warm in the oven while you complete the sauce.
6. Again bring the stock to a boil over high heat, and continue to boil briskly, uncovered, until it has cooked down to about ½ cups. Meanwhile, melt the 2 remaining tablespoons of butter in a 10- to 12-inch skillet over high heat, and when the foam has almost subsided, drop in the mushrooms.
7. Reduce the heat to moderate and cook for 3 to 5 minutes, stirring the mushrooms occasionally, until they are soft and most of the juices have cooked away.
8. Stir in the reduced stock and, off the heat, beat in the heavy cream, 1tablespoon at a time. Then stir in the capers and olives and taste for seasoning. Pour the sauce over the fish and serve at once.