Installs into .claude/skills of the current project.
Are you the author of Cco Tools?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/egorfedorov-cco-tools)
---
name: cco-tools
description: Show what tools actually cost in tokens — learned per-tool averages from observed results, replacing the hardcoded MCP/Agent guesses
license: MIT
argument-hint: "[show | reset]"
allowed-tools:
- "Bash(node ${CLAUDE_PLUGIN_ROOT}/src/tool-costs.js:*)"
---
# CCO Tools — what your tools really cost
MCP and Agent token costs used to be constants picked once (`mcp__*` ≈ 200 in,
`Agent` ≈ 500). Real results vary by orders of magnitude — a "list all issues"
query and a one-row lookup are the same tool name and nowhere near the same
cost. On MCP-heavy sessions the budget meter was guessing at its biggest line
item.
CCO now measures every tool result and learns the average per tool name.
Run from the plugin root:
## `show` (or no arguments)
```bash
node ${CLAUDE_PLUGIN_ROOT}/src/tool-costs.js
```
Prints the learned table: calls, average, worst case, and cumulative total per
tool, sorted by total spend.
When reading it back to the user, the useful observations are:
- **The top row by `total` is where their context budget actually goes.** It is
frequently an MCP server rather than file reads.
- A row marked `·` has fewer than 3 samples and is still using the built-in
constant — its estimate isn't trustworthy yet.
- A large gap between `avg` and `max` means that tool is unpredictable; suggest
narrowing its queries (filters, limits, pagination) rather than dropping it.
Pair with `/cco-overhead mcp` — that shows which servers are *configured but
never called*; this shows what the called ones actually cost.
## `reset`
```bash
node ${CLAUDE_PLUGIN_ROOT}/src/tool-costs.js reset
```
Clears the learned table and returns every tool to its built-in constant.
Useful after changing MCP servers or their configuration, when past
measurements no longer describe the current setup. Confirm before running —
the history isn't recoverable.