← FastballAPICONTENT HISTORY

Update to FastballAPI

Snapshot Oct 30, 2026 · 00:06 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 FastballAPI 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": "Scouts MLB and college baseball players: finds a player id, pulls season-by-season batting (AVG, OBP, SLG, OPS, K%, BB%, RE24) and pitching (ERA, WHIP, K/9, BB/9) lines, game logs, season leaders and injury status, and compares players fairly. Use when the user asks about a named player, wants two players compared, asks who leads the league in a stat, or asks if a player is hurt. Do not use for a pitcher's arsenal detail: see pitch-mix-analysis. Do not use for where a hitter hits the ball: see spray-chart-analysis. Do not use for prop pricing: see prop-modeling.",
  "included_files": [],
  "name": "player-scouting",
  "skill_md_contents": "---\nname: player-scouting\ndescription: \"Scouts MLB and college baseball players: finds a player id, pulls season-by-season batting (AVG, OBP, SLG, OPS, K%, BB%, RE24) and pitching (ERA, WHIP, K/9, BB/9) lines, game logs, season leaders and injury status, and compares players fairly. Use when the user asks about a named player, wants two players compared, asks who leads the league in a stat, or asks if a player is hurt. Do not use for a pitcher's arsenal detail: see pitch-mix-analysis. Do not use for where a hitter hits the ball: see spray-chart-analysis. Do not use for prop pricing: see prop-modeling.\"\nmetadata:\n  version: 1.0.0\n  author: FastballAPI\n---\n\n# Player Scouting\n\n> **Default data tool:** FastballAPI (`fastballapi-tool`).\n> `search_players` (1 credit) always comes first. Then `get_player` (5), `get_player_games` (5), `get_leaders` (5), `get_injuries` (2).\n\nYou build an honest picture of a player from rate stats, sample size and role. A hot month is not a skill change; a .380 BABIP is not a breakout.\n\n## When to Use\n\n- \"How good is Aaron Judge?\" or \"How has he trended since 2022?\"\n- Comparing two hitters or two pitchers\n- \"Who leads MLB in OPS / K/9 / RE24?\"\n- A player's recent game log\n- Is a player injured, and when is the expected return?\n- Building a player list that a model or prop will use\n\n## When NOT to Use\n\n- Pitch types, velocity, whiff rate: `pitch-mix-analysis`\n- Hit direction and batted-ball profile: `spray-chart-analysis`\n- Run value per plate appearance and RISP splits: `run-value-analysis`\n- Pricing a player's over/under: `prop-modeling`\n\n## Commands Available\n\n| Command | What it does | Credits |\n|---------|--------------|---------|\n| `search_players` | Player id by `name` (partial ok), `limit` 1 to 50 | 1 |\n| `get_player` | Every season: batting (PA, AB, H, doubles, triples, HR, BB, SO, HBP, SF, RE24, AVG, OBP, SLG, OPS, K%, BB%) and pitching (G, GS, IP, ERA, WHIP, K/9, BB/9, HR/9) | 5 |\n| `get_player_games` | Game log: each game's batting and pitching line, newest first; `season`, `season_type`, `limit` up to 200 | 5 |\n| `get_leaders` | Qualified leaders. `stat` one of avg, obp, slg, ops, hr, re24, bb_pct, k_pct, era, whip, so, k_per_9, bb_per_9; `min_pa`, `min_ip`, `limit` up to 100 | 5 |\n| `get_injuries` | Status, injury type, expected return for listed players; filter by `team` (MLB only) | 2 |\n\n## Commands That Do NOT Exist\n\n| Not available | Use instead |\n|---------------|-------------|\n| `get_war`, `get_fwar` | Not available. Use RE24 from `get_player` or `get_leaders` with `stat: \"re24\"` |\n| `get_statcast`, `get_barrel_rate`, `get_exit_velocity` | Not available. No launch data. Use `get_spray_chart` trajectories |\n| `get_contract`, `get_salary` | Not available |\n| `get_minor_league_stats` | Not available |\n| `get_splits` (vs LHP, day/night) | Not available as a call. Pull `get_plate_appearances` for the batter and group in code |\n| `get_defense`, `get_oaa` | Not available |\n\n## How It Works\n\n**Step 1: Resolve the id.** `search_players` with `name`. Real response:\n\n```json\n{\"data\": {\"players\": [{\"player_id\": \"33192\", \"name\": \"Aaron Judge\", \"position\": \"RF\", \"bats\": \"R\", \"team\": \"NYY\"}], \"count\": 1}}\n```\n\nIf several players match (a search for \"Cole\" returns Cole Hamels, Gerrit Cole, Cole Gillespie), confirm which one, by team and position, before spending 5 credits on stats. Ids are strings.\n\n**Step 2: Season lines.** `get_player` returns `batting` and `pitching` arrays, one object per season, current season first. Real row (Judge, 2025): 679 PA, 53 HR, .331/.457/.688, OPS 1.144, K% .236, BB% .183, RE24 74.3. Real pitching row (Skubal, 2025): 195.1 IP, 2.21 ERA, 0.89 WHIP, 11.1 K/9, 1.5 BB/9. The current in-progress season is included: check `pa` or `ip` before comparing it to full years.\n\n**Step 3: Qualify the sample.** Use these floors before saying anything is \"real\":\n\n| Stat | Stabilizes roughly at | Rule |\n|------|----------------------|------|\n| K% (batter) | 60 PA | Trust early |\n| BB% (batter) | 120 PA | Trust early-ish |\n| HR rate | 170 PA | Needs a half season |\n| OBP, SLG | 460 PA, 320 PA | A full season barely stabilizes them |\n| BABIP, AVG | 800+ PA | Treat as noise within a season |\n| K/9 (pitcher) | 70 BF | Trust early |\n| ERA | Never within a season | Use K/9, BB/9, HR/9 for talent, ERA for outcome |\n\nThese are widely used approximations from public research, not API outputs. State them as rules of thumb.\n\n**Step 4: Compare fairly.** Two hitters from different seasons: compare rate stats and RE24 per PA, not counting totals. Run `get_leaders` with the same `stat` and `season` to see where each ranks; the `qualifier` field tells you the threshold used (for pitchers, 1 inning per team game: `\"162 innings\"` in a full season).\n\n```json\nPOST /v1/get_leaders\n{\"stat\": \"k_per_9\", \"season\": 2025, \"limit\": 3}\n```\n\nReal top three: Dylan Cease 11.5 K/9 (215 SO, 168.0 IP), Garrett Crochet 11.2, Tarik Skubal 11.1.\n\n**Step 5: Recent form.** `get_player_games` with `season` and `limit`. Roll 15 to 20 games at most for context. Report the rolling line next to the season line and say how little a 15-game window tells you.\n\n**Step 6: Availability.** `get_injuries` with `team`. Each entry has `status` (10-Day-IL, 15-Day-IL, 60-Day-IL), `type`, `detail`, `return_date`. A `return_date` is the club's estimate, not a promise. Report it that way.\n\n## Hitter Scouting Checklist\n\n1. K% and BB% (plate discipline, stabilizes fast)\n2. ISO = SLG minus AVG (power), from `get_player`\n3. OPS and RE24 per 600 PA (production)\n4. HR per fly ball, from `get_spray_chart` (is the power real?)\n5. Age/role change: new team, new lineup slot (visible in `get_player_games` `batting_order`)\n\n## Pitcher Scouting Checklist\n\n1. K/9 minus BB/9 (command)\n2. HR/9 (a volatile stat; park and fly-ball rate)\n3. IP per start = `ip` divided by `gs` (workload matters for prop work)\n4. Arsenal and whiff by pitch: `pitch-mix-analysis`\n5. ERA vs the three above (gap = luck or sequencing)\n\n## College Baseball\n\n`league: \"ncaabase\"` works for `search_players`, `get_player`, `get_player_games`, `get_leaders`. Box scores exist for only part of each season, so a college player's line can cover fewer games than he played. Say so. No injuries, no pitch data.\n\n## Credit Usage\n\n| Operation | Credits |\n|-----------|---------|\n| One player, season lines | 1 + 5 = 6 |\n| Two-player comparison | 2 + 10 = 12 |\n| Game log | +5 |\n| Leaders table | 5 |\n| Injury list for a team | 2 |\n\n## Anti-patterns\n\n| Mistake | Why it is wrong | Do This |\n|---------|-----------------|---------|\n| Comparing a partial current season to full years | Different sample | Show PA/IP beside every line |\n| Calling a 20-game hot streak a change | Noise at that n | Report the interval, wait for sample |\n| Ranking by ERA | Mostly defense, luck and sequencing | Add K/9, BB/9, HR/9 |\n| Treating RE24 as a skill stat | It is context-dependent counting | Pair with a rate stat |\n| Trusting `return_date` | It is an estimate | Say \"club estimate\" |\n\n## Output Format\n\n```\nAaron Judge (RF, NYY), id 33192\n2025: 679 PA, .331/.457/.688, 53 HR, K% 23.6, BB% 18.3, RE24 74.3\n2024: 704 PA, .322/.458/.701, 58 HR, RE24 98.7\nTrend: same profile both years (walks above 18%, strikeouts near 24%); RE24 gap is mostly 25 fewer PA and 5 fewer HR.\nSample note: full seasons both years. Current season partial (285 PA at last pull).\nInjury report (2026-10-11): 10-Day-IL, calf strain, club estimate Oct 12.\n```\n\n## What to Do Next\n\n| You found | Next | Skill |\n|-----------|------|-------|\n| A pitcher worth a closer look | Arsenal and whiff by pitch | `pitch-mix-analysis` |\n| A hitter with unusual power | Batted-ball profile | `spray-chart-analysis` |\n| A player with a prop line | Model the number | `prop-modeling` |\n| Context-heavy production | Run value splits | `run-value-analysis` |\n"
}

SHA-256 of public snapshot: 6da4def80d534b2237b69117292d24dd975d1f616dac85071ad6140e730e1de7