The description is the contract
A refund of ₹499 that came out as ₹4.99.
The model never sees your tool's code. It sees a name, a description and a schema. That is the whole contract.
- model calls
- 1
- tool calls
- 0
- tokens in
- 104
- tokens out
- 25
- time
- 1.7s
Task My USB cable (order A123, Rs 499) arrived broken. Please refund it.
Model call 1. It read 104 tokens and wrote 25. It asked for a tool, so it isn't done.
refund({"order_id":"A123","amount":499})
stop_reason: tool_use
Context window
104 tokens sent
- Your messages19
- Tool definitions54
- System prompt31
0.01% of the 10,48,576-token window. Every call sends all of it again.
Context window104 tokens sent
- System prompt31
- Tool definitions54
- Your messages19
The refund API counts in paise, like Razorpay and Stripe. The description never said so, so ₹499 became ₹4.99. Then the model told the customer ₹499 anyway, though the tool's reply said 4.99.
You are gemini-3-flash-preview. This is all you know: 267 tokens.
System prompt
You are QuickCart's support agent. Refunds for damaged items are approved. Use the tools. Be brief and kind.
Your tools
- refund Refund an order.
User
My USB cable (order A123, Rs 499) arrived broken. Please refund it.
You called
refund("A123", 499)
refund returned
{"ok":true,"order_id":"A123","refunded_paise":499,"refunded_rupees":"4.99"}
Your move?
Same model, same tool, one sentence about units in the description:
- model calls
- 1
- tool calls
- 0
- tokens in
- 162
- tokens out
- 27
- time
- 1.5s
Task My USB cable (order A123, Rs 499) arrived broken. Please refund it.
Model call 1. It read 162 tokens and wrote 27. It asked for a tool, so it isn't done.
refund({"amount":49900,"order_id":"A123"})
stop_reason: tool_use
Context window
162 tokens sent
- Your messages22
- Tool definitions106
- System prompt34
0.02% of the 10,48,576-token window. Every call sends all of it again.
Context window162 tokens sent
- System prompt34
- Tool definitions106
- Your messages22
Your turn: fix the vague description and run it live.
Free key: plenty of runs a day
The recorded run, before your changes:
- model calls
- 1
- tool calls
- 0
- tokens in
- 104
- tokens out
- 25
- time
- 1.7s
Task My USB cable (order A123, Rs 499) arrived broken. Please refund it.
Model call 1. It read 104 tokens and wrote 25. It asked for a tool, so it isn't done.
refund({"order_id":"A123","amount":499})
stop_reason: tool_use
Context window
104 tokens sent
- Your messages19
- Tool definitions54
- System prompt31
0.01% of the 10,48,576-token window. Every call sends all of it again.
Context window104 tokens sent
- System prompt31
- Tool definitions54
- Your messages19