A long tool list is expensive. The usual way to shorten one is to delete whatever looks decorative -- and that is how a required list, an enum value, or the sentence telling a model to ask a person before deleting something quietly stops being there.
This walkthrough uses the tool's public README and checked-in example files. Run the command from a repository checkout with Node.js 22+; inspect the source before using it on your own files.
Run the checked-in example
# Compress, check, and write the copy: compact JSON, only when the run passes
node bin/tool-schema-minifier.mjs minify \
--tools examples/tools.json \
--out build/tools.min.json \
--drop-annotations --human
# Check a copy produced somewhere else -- this one is deliberately broken
node bin/tool-schema-minifier.mjs verify \
--tools examples/tools.json \
--candidate examples/compressed-broken.json --human
echo "exit: $?" # 1
# The machine-readable report, which is what stdout carries by default
node bin/tool-schema-minifier.mjs minify --tools examples/tools.json | jq .summary
npm run check # lint, tests, both examples, and a packaging dry runRead the result
examples/compressed-broken.json is the failing example. It drops a required list, removes an enum value, removes a parameter, and shortens an approval-governing description -- and the run exits 1 naming each one.
Where this check stops
Every limit is enforced, wired to a flag and to --config, and reported by name. Nothing is truncated to fit: a document over a limit is refused whole and the run is incomplete.
Before adapting the command to your own workflow, review the accepted inputs, exit codes and safety boundaries in the README.
Compiled with AI assistance from checked-in public documentation and example scripts. Run the example and review the repository's current documentation before relying on its result.