Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, it discloses the upsert semantics (one rating per user and recipe, rating again replaces it), how the user's stars feed the aggregate rating and rating_count returned by every tool, and that the user's own stars surface as my_rating. This makes the destructive/replacement behavior concrete rather than leaving the agent to infer it from destructiveHint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.