Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint: true, which aligns with the description's explicit 'Read-only'. Beyond this, the description adds valuable context: it specifies that calculations use stored daily close prices, that results are 'price-return risk, not distribution-adjusted total-return risk', and how benchmarkTicker enables relative metrics. While it doesn't address rate limits, output format, or error conditions, the mix of annotation and description provides good transparency for a read-only calculation tool. The 'Read-only' repetition is redundant with annotation but overall multiple behavioral constraints are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.