Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say it is not read-only, is idempotent, and is non-destructive; the description adds the actual side effect that matters — the name is marked as taken for check_username_available for fifteen minutes, but direct signups are not blocked, no account is created, and nothing is sent. This is exactly the extra behavioral context annotations cannot carry, and it does not contradict them (the reservation is a real mutation, consistent with readOnlyHint=false).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.