claimcheck
Provides tools for auditing open-source contribution activity on GitHub repositories, forks, and issues. Scans a repo's open unassigned issues for stale claim comments (e.g. someone said "I'll take this" and vanished), checks whether a linked PR ever appeared, and ranks results by claim age; inspects a fork's branches against the upstream default branch to find completed work parked on branches with no open PR; and reports the claim status of a single issue URL, including every claimant, their age bucket, and any linked pull requests. Uses a GITHUB_TOKEN/GH_TOKEN for authenticated rate limits and caches responses locally.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@claimcheckcheck modelcontextprotocol/python-sdk for stale claims"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
claimcheck
Two quiet ways open-source work dies, tracked before they cost you weeks:
Stale claims. Someone comments "I'll take this" on an issue, then vanishes. The issue still shows "unassigned," so the next volunteer writes code that collides with a ghost.
Parked fixes. Finished work sitting on a fork branch that never became a PR. Real commits, real diffs, zero visibility.
claimcheck scans for both. It is the follow-up to greenlight: greenlight asks "is this issue landable?", claimcheck asks "did everyone who said yes actually show up, and did their work ever ship?"
Install
npm install -g @reneturcios/claimcheck
# or
npx @reneturcios/claimcheck claims owner/repoNeeds Node 20+. Set GITHUB_TOKEN (or GH_TOKEN) for the 5000 req/hr authenticated rate limit; without it you get 60 req/hr. Responses are cached in ~/.cache/claimcheck.
Related MCP server: github-triage-mcp
CLI
Find stale claims in a repo
claimcheck claims modelcontextprotocol/python-sdkScans open unassigned issues, detects claim comments (explicit claims, work intentions, assignment requests; bots, maintainers, and the issue author are excluded), checks whether a linked PR ever appeared, and ranks the results with the oldest claims first:
Stale claims in modelcontextprotocol/python-sdk: 2 stale of 5 claimed issues (threshold 45d)
[STALE] modelcontextprotocol/python-sdk#3287
Fix: handle empty result sets
https://github.com/modelcontextprotocol/python-sdk/issues/3287
claimant: helpfuldev, 63d ago (want-to-work)
[IN FLIGHT] modelcontextprotocol/python-sdk#3290
...
claimant: shipitdev, 5d ago (explicit-claim)Flags: --days 45 changes the stale threshold, --json prints machine output.
Claim age buckets
Bucket | Age | Meaning |
FRESH | <14 days | Claimant probably still active |
WATCH | 14 to 44 days | Check before duplicating work |
STALE | 45 to 89 days | Contestable, likely abandoned |
DEAD | 90+ days | Almost certainly abandoned |
WORK_IN_FLIGHT | any | A linked PR exists, the work is real |
Find parked fixes on a fork
claimcheck parked CloudCorpRecords/pdfcnLists branches on a fork (excluding the default branch), compares each against the upstream default branch, and checks for open PRs from that fork. A branch ahead by 1+ commits with no open PR is PARKED:
Parked branches on CloudCorpRecords/pdfcn (upstream shadcn-labs/pdfcn): 1 parked of 4 branches
[PARKED_STALE] fix-typos
ahead by 5 commit(s), last commit 20d ago
no open PR on upstreamParked age buckets (from the branch tip commit date)
Verdict | Age | Meaning |
PARKED_RECENT | <7 days | Probably still being finished |
PARKED_STALE | 7 to 30 days | Likely forgotten, easy to revive |
PARKED_DEAD | 30+ days | May need rebasing onto upstream |
Branches with an open PR show as IN_PR, branches even with upstream as EVEN. Neither is parked.
Claim status of one issue
claimcheck issue https://github.com/modelcontextprotocol/python-sdk/issues/3287Every claimant found in the comments, their age bucket, and whether a linked PR exists.
MCP server
The same engines as tools, for agents that should check before they comment or code:
{
"mcpServers": {
"claimcheck": {
"command": "npx",
"args": ["-y", "claimcheck", "mcp"],
"env": { "GITHUB_TOKEN": "ghp_your_token_here" }
}
}
}Tool | Input | Returns |
|
| Ranked stale claims, oldest first |
|
| Parked branches with compare data, plus all branches |
|
| Claimants, age buckets, linked PRs, summary |
Or run the server directly: npx @reneturcios/claimcheck mcp (stdio).
How detection works
Claim heuristics (clean reimplementation of the patterns proven in greenlight's dogfooding):
Strong claims: "I'd like to take this", "please assign it to me", "I'm working on this", "I've started working on this", "PR incoming", and similar.
Soft interest: "happy to help", "interested in this", "looking into this". Recorded, never treated as a claim.
Excluded: bot accounts, repo maintainers (their "I'll take this" is triage, not a contestable claim), and the issue author unless they announce a real PR.
A claim with any linked PR is WORK_IN_FLIGHT at any age: the claimant did the work, it just has not landed yet. Only PR-less claims age into STALE and DEAD.
Development
npm install
npm test # 23 offline tests, node:test via tsx
npm run build # tsc to dist/Engines (src/claims.ts, src/parked.ts) are pure functions over fetched data, fully testable offline against fixtures in test/fixtures/. src/github.ts holds the REST client (issues, comments, PR search, branches, compare, fork info) with file caching.
License
MIT, Rene Turcios 2026.
The toolkit
This tool is one of four in a lifecycle for open-source contribution work, all published under the @reneturcios npm scope and each available as a CLI and an MCP server (<tool> mcp):
gatefile (
npx @reneturcios/gatefile) extracts a repo's contribution gates into a committedcontribution-gates.json.greenlight (
npx @reneturcios/greenlight) pre-flights issues (GO / RISKY / TAKEN / GATED / STALE), consumes gatefile's output incheckandscan, then claims, preps, and opens PRs.claimcheck (
npx @reneturcios/claimcheck) watches for stale claims and fixes parked on forks.prwatch (
npx @reneturcios/prwatch) triages your open PRs by what needs you right now.
This server cannot be deployed
Maintenance
Related MCP Connectors
Screens public GitHub repos and PRs to generate risk maps, findings, and merge-readiness signals.
Evaluates any GitHub repository for license risk, maintenance velocity, stars/forks, and security.
- HydrantOAuthdev.hydrant
Track issues, projects and dependencies with your agent in a workspace you control.
Writes your daily standup from GitLab or GitHub merge request state: what's ready, blocked or waiting on your review, and why a pipeline is red, read from the failing job log. OAuth sign-in, no API keys; can post the note to Slack, Discord or Google Chat on a schedule.
Related MCP Servers
- AlicenseAqualityBmaintenanceEnables triage of GitHub issues by fetching and filtering issues, checking claim status, and listing new open issues across a watch-list.4MIT
- AlicenseAqualityCmaintenanceEnables answering 'what needs me right now?' across GitHub issues by determining whose turn it is and returning ready-to-read Markdown reports.4MIT
- AlicenseNot gradedqualityCmaintenanceEnables ranking GitHub issues by repository maintainer health, checking issue claim status, comparing repository activity, and summarizing contribution guidelines via MCP tools.MIT
- AlicenseAqualityAmaintenanceEnables coding agents to check whether a GitHub issue is already taken before volunteering, by analyzing linked PRs, assignees, claimant comments, AI contribution policies, and repo health to return GO, TAKEN, or CAUTION verdicts.3343 PyPI2MIT