技能创建器
skill-creator
创建、改进和评估自定义技能,把专业流程转化为可重复使用的 AI 能力。
mlb-data【数据与研究】MLB data via ESPN public endpoints and the official MLB Stats API — scores, standings, rosters, schedules, game summaries, injuries, leaders, and news, plus an analytics backend: pitch-level velocity/spin/exit-velocity, career splits by stat group, league leaders, and schedules to 1901. Zero config, no API keys. Use when: user asks about MLB scores,…
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
name: mlb-data description: | MLB data via ESPN public endpoints and the official MLB Stats API — scores, standings, rosters, schedules, game summaries, injuries, leaders, and news, plus an analytics backend: pitch-level velocity/spin/exit-velocity, career splits by stat group, league leaders, and schedules to 1901. Zero config, no API keys.
Before writing queries, consult references/api-reference.md for endpoints, ID conventions, and data shapes.
Before first use, check if the CLI is available:
which sports-skills || pip install sports-skills
If pip install fails with a Python version error, the package requires Python 3.10+. Find a compatible Python:
python3 --version # check version
# If < 3.10, try: python3.12 -m pip install sports-skills
# On macOS with Homebrew: /opt/homebrew/bin/python3.12 -m pip install sports-skills
No API keys required.
Prefer the CLI — it avoids Python import path issues:
sports-skills mlb get_scoreboard
sports-skills mlb get_standings --season=2025
sports-skills mlb get_teams
CRITICAL: Before calling any data endpoint, verify:
currentDate — never hardcoded.get_teams to resolve the team ID before using team-specific commands.Derive the active season from the system prompt's date — not just the calendar year.
| Command | Description |
|---|---|
get_scoreboard | Live/recent MLB scores |
get_standings | Standings by league and division |
get_teams | All 30 MLB teams |
get_team_roster | Full roster for a team |
get_team_schedule | Schedule for a specific team |
get_game_summary | Detailed box score and scoring plays |
get_leaders | MLB statistical leaders |
get_news | MLB news articles |
get_play_by_play | Full play-by-play for a game |
get_win_probability | Win probability chart data |
get_schedule | Games on a specific date (no season filter; see get_team_schedule) |
get_injuries | Injury reports across all teams |
get_transactions | Recent transactions |
get_futures | Futures/odds markets |
get_depth_chart | Depth chart for a team |
get_team_stats | Team statistical profile |
get_player_stats | Player statistical profile |
find_mlb_player | Search MLB's player registry by name |
get_mlbstats_schedule | Games via the MLB Stats API — history to 1901, carries gamePk ids |
get_mlbstats_player_stats | Season/career/year-by-year splits by stat group via MLB Stats API; stat_type=game_log gives one split per game |
get_mlbstats_play_by_play | Pitch-level PBP — velocity, spin, plate coords, exit velo, launch angle |
get_mlbstats_boxscore | Full box score with per-player batting/pitching via MLB Stats API |
get_mlbstats_standings | Standings by division via MLB Stats API |
get_mlbstats_leaders | League leaders for any stat category via MLB Stats API |
See references/api-reference.md for full parameter lists and return shapes.
get_mlbstats_play_by_play and get_mlbstats_player_stats accept sort_by, descending, limit and fields.
fields is the quickest way to drop the per-pitch lists when you only need the
at-bat outcomes:
sports-skills mlb get_mlbstats_play_by_play --game_pk=775296 --fields=event,rbi
sort_by: one column to sort by. Numbers (and numeric strings) sort numerically; missing values always go last.descending: true (default) or false; only used with sort_by.limit: positive integer, applied after sorting.fields: comma-separated keep-list. inning, half, batter, pitcher (play-by-play) or season, team, game_pk, game_date (player stats; stat keys such as homeRuns are addressable directly) and the sort_by column are always kept.sort_by/fields column returns an error listing the valid columns.total_rows (matching rows before limit) and returned_rows. With none set, output is unchanged. They are applied after the fetch, so they never change the upstream request or its replay entry.The get_mlbstats_* commands read statsapi.mlb.com — MLB's own open API. It
carries the analytics layer ESPN does not: per-pitch velocity/spin/location,
exit velocity and launch angle on balls in play, career splits by stat group,
and schedules back to 1901. The two sources use unrelated id systems:
gamePk (e.g. 775296); ESPN uses event ids
(e.g. 401570367). No shared column — join on the game date plus teams.ARI/CHW vs MLB AZ/CWS.
Every get_mlbstats_* team filter accepts either spelling, and rows carry
both (team_abbreviation, team_abbreviation_espn).660271) and ESPN athlete ids are unrelated.
Resolve names with find_mlb_player; ASCII spellings match accented names
("acuna" finds "Ronald Acuña Jr.").game_pk in get_mlbstats_schedule: the original date has
rescheduled: true (and rescheduled_to), the make-up has
rescheduled_from. Drop rescheduled rows when counting games.start_time is UTC; venue_timezone is the ballpark's
IANA zone (e.g. America/New_York, null if MLB omits it) and local_date
is MLB's official (local) date.game_type filters by date. game_type="worldseries" with a
date outside the World Series returns no games plus a warnings entry; drop
game_type, or pass team + season with it to list the round's dates.homeRuns exists for hitting,
catching, and pitching (home runs allowed); rows are labelled with
stat_group — pass stat_group= to get just one.Responses include MLB's copyright notice, passed through from the API.
Example 1: Today's scores User says: "What are today's MLB scores?" Actions:
get_scoreboard()
Result: All live and recent MLB games with scores by inning and statusExample 2: Division standings User says: "Show me the AL East standings" Actions:
currentDateget_standings(season=<derived_year>)Example 3: Team roster User says: "Who's on the Yankees roster?" Actions:
get_team_roster(team_id="10")
Result: Full Yankees roster with name, position, bats/throws, height, weightExample 4: Game box score User says: "Show me the full box score for last night's Dodgers game" Actions:
get_scoreboard(date="<yesterday>") to find the event_idget_game_summary(event_id=<id>) for full box score
Result: Complete box score with batting/pitching stats per playerExample 5: Injury report User says: "Who's on the IL for the Yankees?" Actions:
get_injuries()Example 6: Player statistics User says: "Show me Shohei Ohtani's stats" Actions:
currentDateget_player_stats(player_id="39832", season_year=<derived_year>)
Result: Season stats by category (batting, pitching) with value, rank, and per-game averagesExample 7: World Series odds User says: "Who's favored to win the World Series?" Actions:
get_futures(limit=10)
Result: Top World Series contenders with odds valuesget_oddsget_betting_oddssearch_teamsget_teams instead.get_box_scoreget_game_summary instead.get_player_ratingsget_player_stats instead.If a command is not listed in the Commands table above, it does not exist.
When a command fails, do not surface raw errors to the user. Instead:
get_teams to find the ID firstError: sports-skills command not found
Cause: Package not installed
Solution: Run pip install sports-skills
Error: Team not found by ID
Cause: Wrong or outdated ESPN team ID used
Solution: Call get_teams to get the current list of all 30 MLB teams with their IDs
Error: No data returned for a future game
Cause: ESPN only returns data for completed or in-progress games
Solution: Use get_schedule to see upcoming game details; get_scoreboard only covers active/recent games
Error: Offseason — scoreboard returns 0 events
Cause: No games scheduled during the offseason (November–March)
Solution: Use get_standings or get_news instead; MLB offseason transactions are available via get_transactions