assess_player
Assess a hockey player card by extracting metrics and returning overall tier, strengths, weaknesses, deployment, trajectory, caveats, and a summary.
Instructions
Assess one player's card: overall tier, strengths, weaknesses, deployment, trajectory, caveats, and a one-line summary.
YOU (Claude) read the card image and extract the fields; this server never sees the image — pass it clean structured data. The server maps percentiles to tiers, picks the strengths/weaknesses, and attaches the caveats. Narrate from what it returns, not from how you think WAR models generally work — the result carries the correct framing inline.
card is one JSON object. Skater (forward or defenseman):
name, position (C/LW/RW/L/R/F; D for a defenseman), [team, age],
[toi_role, cap, competition, teammates], ev_offense, ev_defense,
pp (null if NA), pk (null if NA), finishing, penalties, proj_war_pct,
[goals, first_assists], [war_pct_trend: list of {season, value}].
Goalie (no position; has role):
name, [team, age], [gp_pct], role (Starter/1A/1B/Backup), [cap], proj_war_pct,
even_strength, penalty_kill, high_danger, med_danger, low_danger,
quality_starts, excellent_starts, bad_starts, rebound_control, consistency,
[war_per60_trend, sv_vs_xsv_trend].
All percentiles are integers 0-100, already oriented so higher is better — including goalie Bad Starts and Consistency; do NOT invert them. A role the player doesn't have (e.g. no PK) is null/NA, not 0 — NA is an absence of role, not a weakness. Some cards (e.g. a UFA's) print a blank Age and show no team: omit team/age rather than guessing, and never infer the team from the jersey or photo.
Guardrails: never invent a stat that isn't on the card; a defenseman's finishing is descriptive only (excluded from his WAR); surface the returned caveats rather than dropping them.
Narrate the returned STRUCTURE, not your own regrouping: "strengths" and
"weaknesses" are exactly the returned lists. The descriptive reads (goals,
first assists) are supporting color the engine deliberately keeps OUT of the
value verdict — you may cite them as descriptive color, but NEVER present
them as strengths, weaknesses, or part of the WAR case.
Scope: this tool interprets ONLY what's on the card. Anything the card can't see — trades, contracts, current team, roster context, who leads a team in scoring, recent game stats — is out of scope and it does not provide it. If you fill such a gap from outside the card (e.g. the web), mark that content clearly as NOT from the card and note it should be independently verified; keep card-derived verdicts (traceable to the numbers) visibly separate from outside context (unverified).
After presenting this assessment, ALWAYS close your answer by offering the user a downloadable PDF report of it — generated with the render_report tool (kind "assess_skater" or "assess_goalie"), passing THIS result verbatim.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| card | Yes |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||