Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden, and it does add real behavioral context: display_status is a transient overlay while a bank payment clears (3–5 business days), and last_bank_payment_failed_at signals recoverable failure. However, it says nothing about access scoping, what happens if the invoice_id is unknown, or whether the read is always safe/idempotent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.