30.0 / 30
What changed in the harness
Selection accuracy 90→95, token cost up 23%, unconfirmed writes 100%→100%.
Category breakdown
Where the score comes from.
Earned points across the four signals Gradable measures. Safety and Legibility are scored out of 30; Economics and Discoverability are scored out of 20.
01Safety
02Legibility
21.6 / 30
03Economics
19.6 / 20
04Discoverability
15.9 / 20
Highest-impact fix
Estimated gain +1 pointRewrite 19 underspecified tool descriptions
State each tool's behavior, explain every parameter, and declare return semantics, prioritizing tools exercised by failed selection tasks.
Description evidence
Defects and rewrites.
19 defects found across the exposed tool descriptions. Suggested rewrites make purpose, inputs, boundaries, and returns easier for an agent to understand.
| Tool | Defect types | Suggested rewrite |
|---|---|---|
npmVersions |
no_return_description |
Fetches every published version for each requested NPM package. Returns, per package, the full list of available version strings, useful for comparing releases and deciding which version to pin. |
npmLatest |
no_return_description |
Retrieves the most recent release information for each requested NPM package. Returns, per package, the latest version string and its changelog, helping you decide whether an upgrade is worthwhile. |
npmDeps |
no_return_description |
Analyzes the declared dependencies and devDependencies of each requested NPM package. Returns, per package, the lists of runtime and development dependencies, useful for evaluating compatibility and footprint before adoption. |
npmTypes |
no_return_description |
Checks whether each requested NPM package ships TypeScript type definitions. Returns, per package, whether types are available and the type-related version info, so you can gauge type-safety support before using the package. |
npmSize |
no_return_description |
Fetches size information for each requested NPM package. Returns, per package, details covering its dependencies and estimated bundle size, helping you estimate install and build cost. |
npmVulnerabilities |
no_return_description |
Checks each requested NPM package against known security advisories. Returns, per package, the reported vulnerabilities so you can assess risk before depending on it. |
npmTrends |
no_return_description |
Retrieves download trends and popularity metrics for each requested NPM package over a selectable time period. Returns, per package, trend data for the period specified (default last-month), useful for gauging community adoption and momentum. |
npmCompare |
name_restates_behavior no_return_description |
Evaluates multiple NPM packages side by side to help you choose between alternatives. Returns a comparative view of the requested packages across various metrics, such as versions, popularity, and maintenance activity, so trade-offs are visible at a glance. |
npmMaintainers |
no_return_description |
Fetches the maintainer records for each requested NPM package. Returns, per package, the list of maintainer identities (names and usernames) so you can assess who owns and maintains the project. |
npmScore |
no_return_description |
Fetches the consolidated npm score for each requested NPM package. Returns, per package, a single score derived from quality, maintenance, and popularity metrics, giving a quick health signal for adoption decisions. |
npmPackageReadme |
no_return_description |
Retrieves the README content for each requested NPM package. Returns the documentation text for each package, letting you review usage and setup instructions directly from a tool without visiting the registry. |
npmSearch |
name_restates_behavior no_return_description |
Searches the npm registry for packages matching a given query. Returns a ranked list of up to `limit` matches (default 10, max 50) with package names and key metadata, useful for discovering candidate libraries during dependency selection. |
npmLicenseCompatibility |
no_return_description |
Assesses license compatibility among the requested NPM packages. Returns, for each package combination, the detected licenses and a compatibility outcome, so you can validate licensing before combining packages in a project. |
npmRepoStats |
no_return_description |
Fetches repository statistics for each requested NPM package. Returns, per package, statistics from its linked source repository, such as stars, forks, and issues, helping you gauge project health and activity. |
npmDeprecated |
no_return_description |
Checks the deprecation status of each requested NPM package. Returns, per package, whether it is deprecated and any deprecation message, so you can avoid adopting abandoned packages. |
npmChangelogAnalysis |
no_return_description |
Analyzes the changelog and release history of each requested NPM package. Returns, per package, an overview of documented changes and release activity, useful for planning upgrades and assessing maintenance. |
npmAlternatives |
no_return_description |
Finds NPM packages offering similar functionality to each requested package. Returns, per package, a list of candidate alternative packages, useful when a package is deprecated, unmaintained, or otherwise unsuitable. |
npmQuality |
no_return_description |
Analyzes quality metrics for each requested NPM package. Returns, per package, quality indicators such as documentation and dependency health, supporting adoption and comparison decisions. |
npmMaintenance |
no_return_description |
Analyzes maintenance metrics for each requested NPM package. Returns, per package, indicators such as release frequency and freshness, so you can judge how actively a package is maintained. |
Selection evidence
Confusable tool pairs.
6 pairs where similar names or overlapping descriptions may send an agent toward the wrong tool.
| Tool A | Tool B | Confidence | Why they collide |
|---|---|---|---|
npmQuality |
npmMaintenance |
medium | Both are vague 'analyze package metrics' tools (quality vs maintenance); a task like 'assess how well this package is taken care of' could map to either since both accept a package list and return metric analysis. |
npmVersions |
npmLatest |
medium | A task like 'get the version of package X' or 'check what versions exist' is ambiguous: one lists all versions, the other returns the latest plus changelog; only narrow phrasing ('latest'/'all') disambiguates. |
npmTrends |
npmScore |
medium | Both cover popularity: npmTrends is 'download trends and popularity metrics' while npmScore incorporates 'popularity metrics'; a task like 'how popular is this package' fits both descriptions equally. |
npmCompare |
npmAlternatives |
medium | Both take multiple package names and are candidate answers for 'which of these similar packages should I pick/compare my options'; comparing alternatives straddles compare-all-metrics and find-similar-packages. |
npmCompare |
npmMaintenance |
low | A task like 'compare how well these packages are maintained' could route to the maintenance analyzer or the multi-metric comparison tool since maintenance is one compared metric. |
npmDeprecated |
npmMaintenance |
low | A task like 'is this package abandoned/dead' could hit the deprecation check or the maintenance-metrics analyzer, since abandonment is implied by both. |
Compare the field