Repository navigation
v3.2.0 "Real Ice" β final Yahoo release
The last release with the Yahoo Fantasy API integration. v4 moves to a universal, platform-agnostic intelligence layer with no account binding.
Real data everywhere
Five tools were scoring players on data that did not exist β players * 3.5 * weeks constants for schedule volume, and Math.random() for game counts, back-to-backs, recent PPG, TOI and matchup quality. All replaced:
NhlScheduleServiceβ NHL public club-schedule API, no key, ~350ms for all 32 clubs, season-scoped disk cache- Real Yahoo stats via a batched
getPlayersStats - Opponent difficulty ranked from NHL standings by goals allowed per game
When a source is unreachable, the tool says so and drops that component from scoring rather than substituting an estimate.
New draft tools
chirp_draft_pickβ who to take at pick N against your own draft: board state, ADP delta, roster holes, playoff-week scheduleschedule_valueβ all 32 clubs rated, including games during your league's playoff weeks
Both are NHL-backed and keep working when Yahoo is unavailable.
Setup-path fixes
- Authentication had been impossible since 2026-07-27 β a Dependabot bump made
selfsigned.generate()async while it was still called synchronously, so the HTTPS callback server started with no certificate - Five NHL clubs (
LA/NJ/SJ/TB/StL) silently never showed a game - Two token-refresh paths writing the same file
.envresolved against the working directory, so MCP clients never found it- Swallowed OAuth errors, wrong version in the MCP handshake, mojibake callback pages
Yahoo now gates the Fantasy Sports API
Creating an app and ticking "Fantasy Sports" is no longer sufficient β Yahoo reviews every request at sports.yahoo.com/developer/access. Verified that this hits existing apps too: three apps, including one from 2025 that worked all of the previous season, all returned 403.
This is what motivates the v4 direction.
Tooling
npm run preflight, npm run verify:yahoo, npm run smoke
Tools 20 β 22. Tests 45 β 110.