The three tools index the same corpus in different directions, and search_symbol is the one that does something a CHANGELOG file cannot: a deprecation warning names a symbol, not a release, so mapping symbol back to the releases that touched it is the step normally done by hand. Nothing here reads your project, so it will tell you what changed in a package you name and never which of your dependencies you should have asked about.
A changelog lookup for package upgrades with 3 tools: get_breaking_changes for one package version, diff_versions for everything between two versions, and search_symbol for the releases that touched a named function, class or module.
- get_breaking_changes returns the breaking changes recorded against a specific package version, so 'what broke in this dependency update' is answerable before the upgrade instead of after it; limit bounds the response.
- diff_versions takes package, from_version and to_version and returns all changes across that span, which is the shape the question takes when you are jumping more than one release at a time.
- search_symbol runs the lookup in the opposite direction: hand it the function, class or module name from a deprecation warning or a stack trace and it returns the releases that modified it.
No account and no key. You supply the package and version yourself — get_breaking_changes needs a package and version, diff_versions needs from_version and to_version, search_symbol needs a symbol.
One command — npx -y @change8/mcp
