Why it costs anything
Every registered tool is sent to the model at the start of every session — name, description and full input schema — whether or not it is ever called. A dead tool is therefore not free. It is a fixed toll on every conversation your server has, paid by every user, forever. The insight prices it exactly that way: schema bytes × sessions in range, in tokens and in dollars. This is the cost nothing in the protocol reports back to an author, and it is why the startup payload exists at all.Why a tool is dead
In roughly the order they turn out to be true:- The model does not know when to use it. The description says what it does, not what question it answers. The most common cause and the most fixable.
- Another tool covers it. A general search that also handles the specific case, so the specific tool never wins.
- It genuinely is not needed. Built for a workflow nobody has.
- It cannot be reached. Requires an argument the model has no way to obtain from any other tool’s output.
get_order needs an internal id and nothing returns one, no description will ever fix it.
Before you delete it
Widen the date range. A tool used once a month is not dead in a 7-day window and is in a 90-day one. Then check the pairs for the tools that are used. If a dead tool’s job is being done by a two-hop sequence, the fix is usually to make the dead tool findable rather than to remove it.Three real options
- Remove it. The schema cost goes away entirely, immediately.
- Rewrite the description. Lead with the question it answers, not the operation it performs.
- Merge it. Fold it into a neighbouring tool as a parameter. One schema instead of two, and one fewer chance for the model to choose wrong.