Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=true, openWorldHint=false), so the bar is lower, yet the description adds real value beyond them: it discloses the accepted code formats (four-word phrase, legacy spl_inv_ prefix, full invite link, case/space/dash insensitivity) and the already-a-member outcome, including that the invite is not consumed. It stops short of describing auth requirements, rate limits, or invalid/expired-code failure behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.