# Tool definition token cost, billed whether the tool runs or not > Tool schemas are input tokens billed on every call, whether the model uses them or not. How to price your tool block and trim it safely. URL: https://getculpa.com/tool-definition-token-cost Last reviewed: 2026-08-01 ## Answer Tool definitions are input tokens, so every schema you attach bills on every call whether the model uses it or not. A large tool block is a fixed tax on all traffic. Culpa, a local-first LLM cost, margin, and forecast ledger, meters input tokens per call, so a growing tool block shows up as a rising floor rather than a mystery. ## Why this happens Tools get added to the shared definition list because that's the easy place to put them, and the list is sent with every request so the model can choose. The cost isn't the tool call, it's the description. Twenty tools with detailed parameter schemas can run to several thousand input tokens, sent on every call in every conversation and every agent step, to be used by a small fraction of them. ## What this usually looks like - Input tokens per call have a high floor even on short user messages. - Adding a tool raised cost across all traffic rather than only on calls that used it. - An agent run costs more per step than the same model costs elsewhere, at similar transcript length. - Your tool list has entries nobody can remember the model ever selecting. ## Common mistakes - Attaching every tool to every call. Why it hurts: You pay the full schema block on all traffic to serve the small share that needs any given tool. Do instead: Scope tools to the step or route that can actually use them, and measure the input-token floor before and after. - Writing verbose parameter descriptions for clarity. Why it hurts: Every word bills on every call, so a generous description is a recurring cost rather than a one-off. Do instead: Keep descriptions to what changes the model's choice, and move detail into the tool's own error messages. - Leaving deprecated tools in the definition list. Why it hurts: A tool nobody calls still costs its full schema on every request, indefinitely. Do instead: Audit the list against actual selection counts, and delete anything the model hasn't chosen in a month. ## Self-check - Count the tokens in your serialised tool definitions. Send them through a tokeniser rather than estimating. - Multiply that by your monthly call count and your input rate. That's the fixed cost of the block. - Count how often each tool was actually selected last month. Delete the ones at zero. - Compare input tokens on your shortest possible request against your tool block size. The ratio is often ugly. - Check whether the tool block sits at the front of the prompt where it can be cached, or after something variable. ## Eighteen tools, and what the unused ones cost (illustrative) A tool block of 18 definitions serialising to 3,200 input tokens, sent on every call. 5 million calls a month on Claude Sonnet 5 at its real introductory rate of $0.002 per 1k input. Selection counts show 5 tools carry nearly all use. Tool block per call: 3.2 x $0.002 = $0.0064 Monthly: 5,000,000 x $0.0064 = $32,000 in tool definitions alone The 5 tools actually used serialise to about 900 tokens = 0.9 x $0.002 = $0.0018 per call Trimmed monthly: 5,000,000 x $0.0018 = $9,000 Saving from deleting 13 rarely-selected tools = $23,000 a month, with no capability lost on the common path $23,000 a month was going to tool descriptions the model almost never chose. Nothing about the product changes when they're scoped to the routes that need them. ## Cost figures Every figure carries its confidence and its source. No figure on this site is provider-reported. - $0.0064 per call — cost of a 3,200-token tool definition block at real Claude Sonnet 5 input rates [calculated] Source: 3.2 x $0.002 per 1k input tokens, using the Claude Sonnet 5 introductory rate from the price book, effective 2026-07-02. - $9,000 to $32,000 — modelled monthly tool-block spend at five million calls, trimmed versus untrimmed [estimated] Source: Both endpoints from the teardown arithmetic at the real Claude Sonnet 5 input rate. A range because call volume and block size are modelled. ## FAQ Q: Do I pay for tools the model doesn't call? A: Yes. The definitions travel in the request as input tokens so the model can choose between them, and they bill at the input rate whether one is selected or not. An unused tool costs exactly as much as a used one to offer. Q: Does prompt caching cover the tool block? A: It can, if the block sits at the front of the prompt and stays byte-identical. Put anything variable before it and the prefix match fails, at which point you pay full rate for the whole block on every call. Q: How many tools is too many? A: Judge it by tokens rather than count. Price the serialised block against your call volume, and compare that number to the value the rarely-selected tools actually deliver. Most teams find the answer obvious once it's a dollar figure. ## Sources - Anthropic pricing: https://platform.claude.com/docs/en/docs/about-claude/pricing Run the free Cost Leak Scan: https://app.getculpa.com/scan?source=pseo&slug=tool-definition-token-cost&cluster=problem Machine-readable index of every guide: https://getculpa.com/api/pages Human-readable index of every guide: https://getculpa.com/guides Site overview: https://app.getculpa.com/llms.txt Privacy: Culpa runs on your infrastructure. Your prompts and responses never leave it. Culpa counts calls to run your plan, and it fails open, so if it ever breaks your app keeps running.