Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, but the description adds substantive context they cannot: the source of truth (user_topic_mastery keyed by identity+course+topic), the scoping model (learner/course-scoped, not chat/client-scoped), who writes vs reads the rows, and the meaning of an empty result ('no IP attempts yet, not a separate client score').
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.