Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description adds the behavioral qualifier 'active', indicating that archived or inactive projects are filtered out. It also names the specific API version (Basecamp Classic). While it doesn't detail pagination or response format, the output schema covers that, and the description adds useful context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.