Check an npm package for maintainer/ownership red flags
check_maintainer_changesReconstruct who has controlled an npm package and when, straight from the packument (each version records the maintainer list at publish time and who ran npm publish). Use it for the 'who controls this package, and did that change recently' question; use get_package/check_package_provenance for general health and publish integrity.
Flags:
a maintainer added recently who then published soon after, on a package with real prior history — the takeover shape behind ua-parser-js, event-stream and the 2025 chalk/debug ('qix') compromise
the whole maintainer list replaced at once
a long-standing maintainer quietly dropped
a maintainer change on npm AFTER the latest release — more urgent: access changed hands but nothing has shipped yet
It also checks the declared GitHub repository: transferred or renamed (repository.ownerLogin/ownerAvatarUrl show the CURRENT owner), unreachable, or a latest release that landed long after any real push activity. If it flags a newly added or fully replaced maintainer, follow up with check_maintainer_blast_radius on that username to see whether the same account touched other packages at the same time. Findings are signals to verify, not proof of compromise.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Exact npm package name, e.g. "lodash" or "@scope/name" |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| history | Yes | ||
| findings | Yes | ||
| riskTier | Yes | ||
| npmscanUrl | Yes | ||
| repository | Yes | ||
| totalScore | Yes | ||
| lookbackDays | Yes | ||
| currentMaintainers | Yes |