Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, openWorldHint=true), so the bar is lower. The description still adds real behavioral value by disclosing the response is an envelope `{ coursesForUser: CourseSummary[] }` rather than a bare array, which matters because there is no output schema. It does not mention pagination or result limits, so it stops short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.