Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does not meet it. 'Refresh ... from live data' implies an external fetch and a state mutation, but the description never says whether portfolio/objective state is overwritten, whether this is idempotent, whether it is costly or rate-limited, or what permissions it requires.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.