Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint and idempotentHint both false, the description carries the burden of explaining behavior, and it delivers: the link is multi-use but short-lived, expiresAt contains the exact expiry moment, a fresh link must be minted after expiry, and OAuth connectivity is required. It also documents the merchant+amount_cents conditional behavior that changes the landing mode, going well beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.