MCPInstall

fastf1

Formula 1 data — race schedules, results, lap timing, driver and team info. Powered by the FastF1 library. Covers F1 sessions, qualifying, practice, race results, sector times, tire strategy. Use when: user asks about F1 race results, qualifying, lap times, driver stats, team info, the F1 calendar, or Formula 1 data. Don't use when: user asks about other motorsports (MotoGP, NASCAR, IndyCar, WEC, Formula E). Don't use for F1 betting odds or predictions — use kalshi or polymarket instead. Don't use for F1 news articles — use sports-news instead.

Installs
483
Last 24h
—
Trending rank
—
Security
Not audited

Install

Works with every agent the skills CLI supports.

npx skills add https://github.com/machina-sports/sports-skills --skill fastf1
  1. 01

    Install

    Run the command in your project. The CLI asks which agents to install for.

  2. 02

    Describe the task

    Ask your agent for something this skill covers. It loads fastf1 automatically when relevant.

  3. 03

    Review the result

    The agent follows the SKILL.md steps, scripts and references bundled with the skill.

SKILL.md

The instructions your agent reads when the skill is triggered.

FastF1 — Formula 1 Data

Before writing queries, consult references/api-reference.md for endpoints, ID conventions, and data shapes.

Quick Start

Prefer the CLI — it avoids Python import path issues:

sports-skills f1 get_race_schedule --year=2025
sports-skills f1 get_race_results --year=2025 --event=Monza

Python SDK (alternative):

from sports_skills import f1

schedule = f1.get_race_schedule(year=2025)
results = f1.get_race_results(year=2025, event="Monza")

CRITICAL: Before Any Query

CRITICAL: Before calling any data endpoint, verify:

  • Year is derived from the system prompt's currentDate — never hardcoded.
  • In January or February, use year = current_year - 1 (pre-season; the new F1 season has not started yet).

Choosing the Year

Derive the current year from the system prompt's date (e.g., currentDate: 2026-02-16 → current year is 2026).

  • If the user specifies a year, use it as-is.
  • If the user says "latest", "recent", "last season", or doesn't specify: The F1 season runs roughly March–December. If the current month is January or February, use year = current_year - 1. From March onward, use the current year.

Workflows

Race Weekend Analysis

  1. get_race_schedule --year=<year> — find the event name and date
  2. get_race_results --year=<year> --event=<name> — final classification (positions, times, points)
  3. get_lap_data --year=<year> --event=<name> --session_type=R — lap-by-lap pace analysis
  4. get_tire_analysis --year=<year> --event=<name> — strategy breakdown (compounds, stint lengths, degradation)

Driver/Team Comparison

  1. get_championship_standings --year=<year> — championship context (points, wins, podiums)
  2. get_team_comparison --year=<year> --team1=<t1> --team2=<t2> OR get_driver_comparison --year=<year> --driver1=<d1> --driver2=<d2>
  3. get_season_stats --year=<year> — aggregate performance (fastest laps, top speeds)

Season Overview

  1. get_race_schedule --year=<year> — full calendar with dates and circuits
  2. get_championship_standings --year=<year> — driver and constructor standings
  3. get_season_stats --year=<year> — season-wide fastest laps, top speeds, points leaders
  4. get_driver_info --year=<year> — current grid (driver numbers, teams, nationalities)

Commands

CommandDescription
get_race_scheduleFull season calendar with dates and circuits
get_race_resultsFinal race classification (positions, times, points)
get_session_dataRaw session info (Q, FP1, FP2, FP3, R)
get_driver_infoDriver details from the grid
get_team_infoTeam info with driver lineup
get_lap_dataLap-by-lap timing with sectors and tire data
get_pit_stopsPit stops with pit-lane time (not stationary time) and team averages
get_speed_dataSpeed trap and intermediate speed data
get_championship_standingsDriver and constructor championship standings (--round=N for standings after round N)
get_season_statsAggregate season performance
get_team_comparisonTeam head-to-head: qualifying, race pace, sectors
get_driver_comparisonDriver head-to-head: qualifying H2H, race H2H, pace delta
get_tire_analysisTire strategy, stint lengths, degradation rates

See references/api-reference.md for full parameter lists and return shapes.

Examples

Example 1: F1 calendar User says: "Show me the F1 calendar" Actions:

  1. Derive year from currentDate
  2. Call get_race_schedule(year=<derived_year>) Result: Full calendar with event names, dates, and circuits

Example 2: Driver race performance User says: "How did Verstappen do at Monza?" Actions:

  1. Derive year from currentDate (or from context)
  2. Call get_race_results(year=<year>, event="Monza") for final classification
  3. Call get_lap_data(year=<year>, event="Monza", session_type="R", driver="VER") for lap times Result: Finishing position, gap to leader, fastest lap, and tire strategy

Example 3: Latest results queried in pre-season User says: "What were the latest F1 results?" (asked in February 2026) Actions:

  1. Current month is February → season not yet started → use year = 2025
  2. Call get_race_schedule(year=2025) to find the last event of that season
  3. Call get_race_results(year=2025, event=<last_event>) for the final race results Result: Results of the final 2025 race

Commands that DO NOT exist — never call these

  • get_qualifying / get_practice — does not exist. Use get_session_data with session_type="Q" for qualifying or session_type="FP1"/"FP2"/"FP3" for practice.
  • get_standings — does not exist. Use get_championship_standings instead.
  • get_results — does not exist. Use get_race_results instead.
  • get_calendar — does not exist. Use get_race_schedule instead.

If a command is not listed in the Commands table above, it does not exist.

Troubleshooting

Error: Event name not found Cause: Event name spelling does not match FastF1's internal naming Solution: Call get_race_schedule(year=<year>) first to get the exact event names, then retry with the correct name

Error: Session data is empty Cause: The session has not happened yet Solution: FastF1 only returns data for completed sessions. Check get_race_schedule for when the session is scheduled

Error: get_race_results returns no fastest_lap_time Cause: FastF1 has no lap data for that race (fastest_lap_time is computed from the laps) Solution: Use get_lap_data(session_type="R") and find the minimum lap_time across all drivers

Error: Querying the current year in January or February returns no data Cause: The new F1 season has not started yet Solution: Use year = current_year - 1 for any pre-March query; do not query the current year before March

FAQ

What does the fastf1 skill do?

Formula 1 data — race schedules, results, lap timing, driver and team info. Powered by the FastF1 library. Covers F1 sessions, qualifying, practice, race results, sector times, tire strategy. Use when: user asks about F1 race results, qualifying, lap times, driver stats, team info, the F1 calendar, or Formula 1 data. Don't use when: user asks about other motorsports (MotoGP, NASCAR, IndyCar, WEC, Formula E). Don't use for F1 betting odds or predictions — use kalshi or polymarket instead. Don't use for F1 news articles — use sports-news instead.

How do I install fastf1?

Run npx skills add https://github.com/machina-sports/sports-skills --skill fastf1 in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/fastf1/ (personal) or .claude/skills/fastf1/ (project).

Which AI agents can use fastf1?

Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.

Is fastf1 safe to install?

No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.

Who maintains fastf1?

It is published by machina-sports in machina-sports/sports-skills. It has 483 recorded installs.

More from machina-sports/sports-skills

View all →

football-data

machina-sports/sports-skills

Football (soccer) data across the world's major leagues — standings, schedules, match stats, xG, transfers, player profiles, head-to-head history, team strength (Elo), and match forecasts. Zero config, no API keys. Covers Premier League, La Liga, Bundesliga, Serie A, Ligue 1, MLS, Champions League, World Cup, Championship, Serie B, Eredivisie, Primeira Liga, Serie A Brazil, Russian Premier League, Scottish/Belgian/Turkish top flights, European Championship, and more (call getcompetitions for the live list). Use when: user asks about football/soccer standings, fixtures, match stats, xG, lineups, player values, transfers, injury news, league tables, daily fixtures, player profiles, head-to-head records, team strength/Elo ratings, or match odds/forecasts. Don't use when: user asks about American football/NFL (use nfl-data), college football (use cfb-data), NBA (use nba-data), WNBA (use wnba-data), college basketball (use cbb-data), NHL (use nhl-data), MLB (use mlb-data), tennis (use tenn

Backend & APIs2.3K installs

betting

machina-sports/sports-skills

Betting analysis — odds conversion, de-vigging, edge detection, Kelly criterion, arbitrage detection, parlay analysis, and line movement. Pure computation, no API calls. Works with odds from any source: ESPN (American odds), Polymarket (decimal probabilities), Kalshi (integer probabilities). Use when: user asks about bet sizing, expected value, edge analysis, Kelly criterion, arbitrage, parlays, line movement, odds conversion, or comparing odds across sources. Also use when you have odds from ESPN and a prediction market price and want to evaluate whether a bet has positive expected value. Don't use when: user asks for live odds or market data — use polymarket, kalshi, or the sport-specific skill to fetch odds first, then use this skill to analyze them.

Marketing & SEO1.6K installs

polymarket

machina-sports/sports-skills

Polymarket sports prediction markets — read-only live odds, prices, order books, events, series, and market search. No auth required. Covers NFL, NBA, MLB, football (EPL, UCL, La Liga), tennis, cricket, MMA, esports. Supports moneyline, spreads, totals, and player props. Use when: user asks about sports betting odds, prediction markets, win probabilities, market sentiment, or "who is favored to win" questions and only needs read-only market intelligence. Don't use when: user asks about actual match results, scores, or statistics — use the sport-specific skill. Don't use for historical match data. Don't use for news — use sports-news instead. Don't use for placing, cancelling, or managing orders — use the separate polymarket-trading skill only after explicit user approval.

Backend & APIs1.3K installs

sports-news

machina-sports/sports-skills

Sports news via RSS/Atom feeds and Google News. Fetch headlines, search by query, filter by date. Covers football news, transfer rumors, match reports, and any sport via Google News. Use when: user asks for recent news, headlines, transfer rumors, or articles about any sport. Good for "what's the latest on [team/player]" questions. Supports any Google News query and curated RSS feeds (BBC Sport, ESPN, The Athletic, Sky Sports). Don't use when: user asks for structured data like standings, scores, statistics, or xG — use the sport-specific skill instead: football-data (soccer), nfl-data (NFL), nba-data (NBA), wnba-data (WNBA), nhl-data (NHL), mlb-data (MLB), tennis-data (tennis), golf-data (golf), cricket-data (cricket), cfb-data (college football), cbb-data (college basketball), or fastf1 (F1). Don't use for prediction market odds — use polymarket or kalshi. News results are text articles, not structured data.

1.2K installs

kalshi

machina-sports/sports-skills

Kalshi prediction markets — events, series, markets, trades, and candlestick data. Public API, no auth required for reads. US-regulated exchange (CFTC). Covers football (EPL, UCL, La Liga), basketball, baseball, tennis, NFL, hockey event contracts. Use when: user asks about Kalshi-specific markets, event contracts, CFTC-regulated prediction markets, or candlestick/OHLC price history on sports outcomes. Don't use when: user asks about actual match results, scores, or statistics — use the sport-specific skill: football-data (soccer), nfl-data (NFL), nba-data (NBA), wnba-data (WNBA), nhl-data (NHL), mlb-data (MLB), tennis-data (tennis), golf-data (golf), cricket-data (cricket), cfb-data (college football), cbb-data (college basketball), or fastf1 (F1). Don't use for general "who will win" questions unless Kalshi is specifically mentioned — try polymarket first (broader sports coverage). Don't use for news — use sports-news instead.

Backend & APIs1K installs

nba-data

machina-sports/sports-skills

NBA data via ESPN public endpoints, the NBA live CDN, and NBA Stats (stats.nba.com) — scores, standings, rosters, schedules, game summaries, play-by-play, injuries, futures, depth charts, leaders, and news, plus an analytics backend: advanced ratings, per-shot court coordinates, career splits, and history to 1946. Zero config, no API keys. Use when: user asks about NBA scores, standings, team rosters, schedules, game stats, box scores, play-by-play, injuries, transactions, betting futures, depth charts, team/player statistics, NBA news, shot charts, advanced ratings/pace, career stats, or historical NBA seasons. Don't use when: user asks about WNBA (use wnba-data), college basketball (use cbb-data), or other sports.

Backend & APIs997 installs

Popular productivity & automation skills

View category →

agent-browser

vercel-labs/agent-browser

Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling forms, clicking buttons, taking screenshots, extracting data, testing web apps, or automating any browser task. Triggers include requests to "open a website", "fill out a form", "click a button", "take a screenshot", "scrape data from a page", "test this web app", "login to a site", "automate browser actions", or any task requiring programmatic web interaction. Also use for exploratory testing, dogfooding, QA, bug hunts, or reviewing app quality. Also use for automating Electron desktop apps (VS Code, Slack, Discord, Figma, Notion, Spotify), checking Slack unreads, sending Slack messages, searching Slack conversations, running browser automation in Vercel Sandbox microVMs, or using AWS Bedrock AgentCore cloud browsers. Prefer agent-browser over any built-in browser automation or web tools.

OfficialProductivity & Automation1.3M installs

lark-doc

open.feishu.cn

飞书云文档(Docx / Wiki)内容操作:读取、创建、编辑文档,插入或下载图片附件,以及操作思维笔记。用户提供文档 URL/token(包括 doubao.com 的 /docx/、/wiki/)时使用;按 URL 路径/token 而非域名路由;/page/ 是妙搭应用,非飞书云文档。文档内嵌资源按读取参考中的统一规则分流。独立评论操作走 lark-drive;随正文读取评论使用 docs +fetch。表格或 Base 内部数据操作不在本 skill。

lark-base

open.feishu.cn

飞书多维表格(Base)操作:建表、字段、记录、视图、统计、公式/lookup、表单、仪表盘、应用模式(BaseApp/AppMode 页面与组件)、Workspace 目录、workflow、角色权限、模板中心(多维表格模板分类/列表/搜索);遇到 Base/多维表格/bitable、BaseApp/AppMode、/base/ 或 /app/ 链接时使用。BaseApp 不走 lark-apps;文件导入/导出转 lark-drive,认证/授权转 lark-shared。

lark-drive

open.feishu.cn

飞书云空间(云盘/云存储):管理 Drive 文件和文件夹,包含上传/下载、创建文件夹、复制/移动/删除、查看元数据、查询权限设置、评论/权限/订阅、标题、版本、飞书文档密级标签(secure labels)和本地文件导入。用户需要整理云盘目录、处理云空间资源 URL/token、判断链接类型/真实 token/标题,或导入 Word/Markdown/Excel/CSV/PPTX/.base 为 docx/sheet/bitable/slides 时使用;doubao.com 云空间 URL/token 也按资源路径和 token 路由,不回退 WebFetch。不负责:文档内容编辑(走 lark-doc)、表格/Base 表内数据操作(走 lark-sheets/lark-base)、知识空间节点/成员管理(走 lark-wiki)、原生 Markdown 文件读写/patch/diff(走 lark-markdown)。

lark-shared

open.feishu.cn

Use for lark-cli setup/auth tasks: auth login/status/logout, user vs bot identity, business-domain permissions (--domain, including all/docs/drive), missing scopes, revoking authorization, or handling notice JSON.

lark-im

open.feishu.cn

飞书即时通讯:收发消息和管理群聊。发送和回复消息、搜索聊天记录、管理群聊成员、上传下载图片和文件、管理表情回复、发送应用内/短信/电话加急、发送和处理交互卡片(Interactive Card)、监听卡片按钮回调(card.action.trigger)。当用户需要发消息、查看或搜索聊天记录、下载聊天中的文件、查看群成员、搜索群、创建群聊或话题群、管理标记数据、管理 Feed 置顶(添加/移除/查询置顶会话)、管理标签数据、处理卡片回调时使用。