Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It does disclose the upsert-like behavior by saying 'Set (or update)', which is a useful trait beyond the tool name. However, it does not mention what happens to an existing budget beyond updating it, nor auth requirements, return value, or other side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.