Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (readOnlyHint=false, openWorldHint=true, idempotentHint=false): it discloses that the work happens in the background, that the reply returns only a scan_id with status pending, that charges are per word and repeat on re-calls, and that short/oversized/insufficient-balance requests are not charged and return an explanation. That is exactly the cost and async-safety context an agent needs before invoking a billable mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.