← DunkAPICONTENT HISTORY

Update to DunkAPI

Snapshot Oct 31, 2026 · 01:21 UTC · version 1.0.0

Collection source: downloaded plugin package.

WHAT CHANGED

First saved snapshot

No earlier snapshot is available to establish a change.

Save DunkAPI and check future changes in Following.

Up to 10 plugins free · no card required.

Compare saved observations

Download comparison JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "description": "Evaluates basketball teams: standings, DunkAPI Elo power ratings, pace, offensive and defensive rating, net rating and the four factors (eFG%, turnover rate, offensive rebound rate, free throw rate). Use when the user asks how a team is doing, who the best or fastest team is, why a team's record misleads, or wants two teams compared. Covers NBA, WNBA, men's and women's college. Do not use for a single game, see game-lookup or game-preview. Do not use for a player, see player-scouting. Do not use for where a team shoots from, see shot-zone-analysis.",
  "included_files": [],
  "name": "team-analysis",
  "skill_md_contents": "---\nname: team-analysis\ndescription: \"Evaluates basketball teams: standings, DunkAPI Elo power ratings, pace, offensive and defensive rating, net rating and the four factors (eFG%, turnover rate, offensive rebound rate, free throw rate). Use when the user asks how a team is doing, who the best or fastest team is, why a team's record misleads, or wants two teams compared. Covers NBA, WNBA, men's and women's college. Do not use for a single game, see game-lookup or game-preview. Do not use for a player, see player-scouting. Do not use for where a team shoots from, see shot-zone-analysis.\"\nmetadata:\n  version: 1.0.0\n  author: DunkAPI\n---\n\n# Team Analysis\n\n> **Default data tool:** DunkAPI (`dunkapi-tool`).\n> `get_standings` (2 credits), `get_ratings` (2), `get_team_stats` (5). A full three-call team profile is 9 credits.\n\nYou read a team the way an analyst does: results first, then the efficiency that explains them, then whether the record is likely to hold.\n\n## When to Use\n\n- \"How good are the Knicks?\" / \"Rank the East\"\n- \"Who plays fastest?\" / \"Best defence in the league?\"\n- \"Is Boston's record real or lucky?\"\n- Comparing two teams before a game or a series\n- Producing team-level features for a model (see `feature-engineering`)\n\n## When NOT to Use\n\n- One game's box score or result, see `game-lookup`\n- A full pre-game breakdown with injuries and odds, see `game-preview`\n- Shot location and expected points by zone, see `shot-zone-analysis`\n- Individual players, see `player-scouting`\n\n## Commands Available\n\n| Command | What it does | Credits |\n|---------|-------------|---------|\n| `get_standings` | Regular-season standings computed from every final game: W-L, home and away, points for and against, margin, last 10 | 2 |\n| `get_ratings` | DunkAPI Elo ratings, ranked, as of the end of a season or today | 2 |\n| `get_team_stats` | Pace, offensive, defensive and net rating per 100 possessions, four factors, three-point rate | 5 |\n| `list_teams` | Team ids and abbreviations | 1 |\n\n## Commands That Do NOT Exist\n\n| Not available | Use instead |\n|---------------|-------------|\n| `get_advanced_team_stats` | `get_team_stats` |\n| `get_power_rankings` | `get_ratings` (our Elo) or rank `get_team_stats` by `net_rating` |\n| `get_lineup_stats`, `get_on_off` | None; lineup data is not served |\n| `get_strength_of_schedule` | Derive from `list_games` plus `get_ratings` (see below) |\n\n## Season Resolution\n\n`season` is the year the season ends (2025-26 is `2026`). The 2026-27 NBA season opens Oct 20, 2026. Until a few weeks of games exist, `season: 2027` ratings and efficiency rest on almost nothing; use `season: 2026` and say it is last season. `get_team_stats` accepts `season_type`, so you can separate playoff efficiency from the regular season.\n\n## How It Works\n\n**Step 1: Results.** `get_standings` returns per team `wins losses home_wins home_losses away_wins away_losses points_for points_against avg_margin last10_wins win_pct`. The `conf_wins` and `conf_losses` fields read 0 in the responses seen for NBA, so do not rank on conference record from this tool.\n\n**Step 2: Efficiency.** `get_team_stats` returns, per team:\n\n| Field | Meaning |\n|-------|---------|\n| `pace` | Possessions per game |\n| `off_rating`, `def_rating`, `net_rating` | Points scored, allowed and the difference, per 100 possessions |\n| `efg_pct` | Effective FG%: `(fgm + 0.5 * tpm) / fga` |\n| `tov_pct` | Turnover rate (fraction of possessions ending in a turnover) |\n| `oreb_pct` | Offensive rebound rate |\n| `ft_rate` | Free throw attempts per field goal attempt |\n| `three_rate` | Share of shots that are threes |\n| `opp_efg_pct` | Opponent effective FG% (the defensive half of factor one) |\n\nPossessions are estimated as `FGA - OREB + TOV + 0.44 * FTA`, averaged over both teams (the API states this in `method`). Ratings are points per 100 possessions.\n\n**Step 3: Strength.** `get_ratings` gives the Elo rating. 1500 is average; a 100-point gap is about a 64% favourite on a neutral floor. In general `P(A beats B) = 1 / (1 + 10^(-(rA - rB + home_edge) / 400))`. The API says its ratings include home advantage and a margin-of-victory multiplier, and regress a quarter of the way to the mean between seasons, so an early-season rating is mostly last year's.\n\n**Step 4: Cross-check.** A team's Elo, net rating and record should roughly agree. When they do not, that is the finding:\n\n| Pattern | Likely read |\n|---------|-------------|\n| Record well above what `net_rating` implies | Close-game luck; expect regression |\n| `net_rating` strong, record average | Unlucky or a slow starter; check `last10_wins` |\n| Elo far above `net_rating` rank | Elo carries last season or playoff results |\n| High `off_rating`, low `efg_pct` | Scoring from free throws, turnovers and rebounding, not shooting |\n\nA quick luck check: Pythagorean wins `= games * pts^14 / (pts^14 + opp_pts^14)`, using `pts` and `opp_pts` from `get_team_stats`. The exponent 14 is the usual NBA value; a gap of 3 or more wins between this and actual wins is worth flagging.\n\n### Live example\n\n`get_team_stats {\"season\": 2026, \"team\": \"NY\"}`, trimmed:\n\n```json\n{\"data\": {\"season\": 2026, \"teams\": [{\n  \"abbrev\": \"NY\", \"games\": 83, \"wins\": 54, \"losses\": 29,\n  \"pts\": 116.5, \"opp_pts\": 110.2, \"pace\": 99.8,\n  \"off_rating\": 116.8, \"def_rating\": 110.4, \"net_rating\": 6.4,\n  \"efg_pct\": 0.557, \"tov_pct\": 0.137, \"oreb_pct\": 0.296,\n  \"ft_rate\": 0.237, \"three_rate\": 0.427, \"opp_efg_pct\": 0.54}]}}\n```\n\nRead: a +6.4 net rating over 83 games is a strong team but not a dominant one; its offensive rebounding (`oreb_pct` 0.296) is doing real work. `get_ratings {\"season\": 2026}` ranked the same team first in Elo at 1808.1 as of its last game (2026-06-14), ahead of SA at 1767.9. Elo gives credit for the playoff run, which `net_rating` for the regular season does not.\n\n## Strength of schedule\n\nNo tool returns it. Build it: `list_games` for the team (2 credits per page), then average the opponents' `get_ratings` values. Use opponent ratings from the same season, and say the ratings are end-of-season so the result is a description, not a pre-game input.\n\n## Comparing two teams\n\n1. Pull `get_team_stats` for each (a call with no `team` returned all 30 NBA teams for 5 credits, cheaper than two single-team calls).\n2. Build the matchup lens: team A `off_rating` against team B `def_rating`, and the reverse; add `pace` (the faster team tends to set it, but the average is a fair projection).\n3. Projected margin ~ `(A.off_rating + B.def_rating)/2 - (B.off_rating + A.def_rating)/2`, scaled by `pace / 100`, plus a home-court edge. Treat this as a prior, then check `get_injuries`.\n\n## Pitfalls\n\n| Pitfall | Why it matters |\n|---------|---------------|\n| Season aggregates used for past games | `get_team_stats` and `get_ratings` summarize the whole season. Using them to \"predict\" an earlier game leaks the future. For modeling, rebuild as-of values from `list_games` |\n| Small samples | Under 15 games, net rating moves 3+ points on a single blowout |\n| Garbage time and rest | Net rating includes both; a team resting starters understates talent |\n| Mixing season types | Pass `season_type` to separate playoffs from regular season |\n| College comparisons | Conferences are weakly connected; a high rating inside a weak conference is not comparable to one outside it |\n\n## Credit Usage\n\n| Operation | Credits |\n|-----------|---------|\n| Standings only | 2 |\n| Elo only | 2 |\n| All teams' efficiency | 5 |\n| Full profile (standings + Elo + efficiency) | 9 |\n\n## Output Format\n\n```\n[Team], [season]: [W]-[L], net rating [x] ([rank] of [n]), Elo [x] ([rank])\nPace [x] | Off [x] | Def [x]\nFour factors: eFG [x], TOV [x], ORB [x], FT rate [x]; opponent eFG [x]\nRead: [one sentence on whether the record is supported by the efficiency]\n```\n\n## What to Do Next\n\n| Found | Next | Skill |\n|-------|------|-------|\n| Two teams meeting soon | Full matchup | `game-preview` |\n| Shooting is driving the gap | Zone breakdown | `shot-zone-analysis` |\n| Want team features for a model | Rolling, leak-free | `feature-engineering` |\n| Rating gap vs the market | Compare to the line | `odds-explorer` |\n"
}

SHA-256 of public snapshot: 9969cab496c1e09882e928aacb83362885c63b4297b84d122301a733a80d0071