Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing the side effect (a Stripe session is created and a URL returned), the hard constraint that checkout cannot be driven programmatically, and three distinct outcome branches: normal URL, error for live paid subscribers, and URL plus already_premium_note for comped/beta Premium users. Annotations only state the generic non-read-only, non-destructive profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.