Skip to main content
Glama

Pitstop — F1 MCP Server

An HTTP-first Model Context Protocol (MCP) server for Formula 1 data. Aggregates real-time, historical, and news data from multiple authoritative sources into 11 tools ready for any MCP client.

v0.5.0 | Author: Praneeth Ravuri


Install

Hosted endpoint (nothing to install)

A free public instance runs on Hugging Face Spaces:

https://praneeth1025-pitstop.hf.space/mcp
claude mcp add --transport http pitstop https://praneeth1025-pitstop.hf.space/mcp

Note: the Space sleeps after long inactivity — the first request after a quiet spell takes a cold start.

Local install

stdio, via uvx (no clone needed):

PITSTOP_TRANSPORT=stdio uvx pitstop-f1

Claude Code:

claude mcp add pitstop -e PITSTOP_TRANSPORT=stdio -- uvx pitstop-f1

Codex CLI:

codex mcp add pitstop --env PITSTOP_TRANSPORT=stdio -- uvx pitstop-f1

Gemini CLI:

gemini mcp add pitstop uvx pitstop-f1 --env PITSTOP_TRANSPORT=stdio

VS Code:

code --add-mcp '{"name":"pitstop","command":"uvx","args":["pitstop-f1"],"env":{"PITSTOP_TRANSPORT":"stdio"}}'

Claude Desktop (claude_desktop_config.json), Cursor (~/.cursor/mcp.json), and Windsurf (~/.codeium/windsurf/mcp_config.json) share the same JSON shape:

{
  "mcpServers": {
    "pitstop": {
      "command": "uvx",
      "args": ["pitstop-f1"],
      "env": { "PITSTOP_TRANSPORT": "stdio" }
    }
  }
}

Docker (HTTP transport, runs the full server incl. the F1 database):

docker compose up
# → http://localhost:8000/mcp

Related MCP server: OpenF1 MCP Server

Overview

Pitstop exposes F1 data as 11 MCP tools over HTTP (default) or stdio. It pulls from FastF1, Jolpica, OpenF1, Wikidata, RSS feeds, and its own seeded F1 database, handling pagination, retries, caching, and concurrency limits transparently.


Data Sources

Source

Coverage

Type

FastF1

2018–present

Historical / timing / telemetry

Jolpica-F1

1950–present

Historical (Ergast-compatible)

OpenF1

2023–present

Real-time

Wikidata

All eras

SPARQL queries

RSS Feeds (20 sources)

Live

News

Pitstop F1 Database

1950–present

Owned sqlite (seeded from F1DB, self-updated weekly from Jolpica) + per-lap times

Database refresh: .github/workflows/db-update.yml runs weekly to pull new Jolpica results into the owned F1 database.


Tools

Tool

Description

Key Parameters

get_session_data

Race/qualifying results, lap times, weather, driver details (2018–present)

year, gp, session, includes, page, page_size

get_telemetry_data

Lap-by-lap car telemetry (speed, throttle, brake, gears) (2018–present)

year, gp, session, drivers, lap_numbers, max_points, page, page_size

get_live_data

Live intervals, pit stops, team radio, stints, race control, weather, position, laps, overtakes (2023–present)

data_types, year, country, session_name, driver_number, compound, flag, category, page, page_size

get_standings

Driver and constructor championship standings (1950–present)

year, round, type, driver_name, team_name, page, page_size

get_schedule

Race calendar and session schedule

year, include_testing, round, event_name, only_remaining, page, page_size

get_reference_data

Circuits, drivers, constructors encyclopedia (1950–present)

reference_type, year, name, page, page_size

get_f1_news

F1 headlines from 20 RSS sources

source, limit, keywords, driver, team, circuit, year, date_from, date_to, page, page_size

get_results

Race/qualifying/sprint results, lap times, pit stops (1950–present)

year, round, result_type, driver, page

get_race_analysis

Pace, tire degradation, stint summaries, consistency (2018–present)

year, gp, session, drivers, analysis_type, page

query_wikidata

SPARQL queries to Wikidata for F1 biography, career records, history

sparql, page, page_size

query_f1_database

Read-only SQL over pitstop's owned F1 database (1950–present): results, standings, driver family trees, team lineage

sql, page, page_size


Transport

HTTP (default)

uv sync
uv run pitstop
# → http://localhost:8000

MCP client config:

{
  "mcpServers": {
    "pitstop": {
      "type": "http",
      "url": "http://localhost:8000/mcp"
    }
  }
}

stdio (opt-in)

PITSTOP_TRANSPORT=stdio uv run pitstop

MCP client config:

{
  "mcpServers": {
    "pitstop": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/pitstop", "pitstop"],
      "env": { "PITSTOP_TRANSPORT": "stdio" }
    }
  }
}

Health API

Endpoint

Purpose

GET /health

Per-source status (FastF1, f1db, Jolpica, OpenF1, RSS)

GET /live

Liveness probe

GET /ready

Readiness probe

Example /health response:

{
  "version": "0.5.0",
  "overall": "ok",
  "sources": [
    { "name": "fastf1",  "status": "ok", "latency_ms": 2,   "detail": "cache writable" },
    { "name": "f1db",    "status": "ok", "latency_ms": 1,   "detail": "" },
    { "name": "jolpica", "status": "ok", "latency_ms": 134, "detail": "" },
    { "name": "openf1",  "status": "ok", "latency_ms": 98,  "detail": "" },
    { "name": "rss",     "status": "ok", "latency_ms": 210, "detail": "" }
  ]
}

overall is "ok" / "degraded" / "down". HTTP 200 / 207 / 503.


Wikidata SPARQL

query_wikidata runs SPARQL queries against Wikidata for biographical and historical F1 facts not covered by race APIs.

Only SELECT and ASK queries are accepted (read-only). Always include LIMIT in your query.

Example — find F1 drivers with their birthdate:

SELECT ?driver ?driverLabel ?birthDate WHERE {
  ?driver wdt:P31 wd:Q5 ;
          wdt:P641 wd:Q1968 ;
          wdt:P569 ?birthDate .
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
} ORDER BY DESC(?birthDate) LIMIT 10

Pagination

All list-returning tools accept page (1-based, default 1) and page_size (defaults vary per tool: 10–50). Responses include a pagination block:

{
  "data": [...],
  "pagination": {
    "page": 1,
    "page_size": 20,
    "total_items": 47,
    "total_pages": 3,
    "has_next": true,
    "has_prev": false
  }
}

Configuration

Variable

Default

Description

PITSTOP_TRANSPORT

http

http or stdio

PITSTOP_HOST

0.0.0.0

Bind address (HTTP only)

PITSTOP_PORT

8000

Listen port (HTTP only)

PITSTOP_ENV

development

development or production

PITSTOP_LOG_LEVEL

Depends on PITSTOP_ENV

DEBUG if development, else INFO

PITSTOP_LOG_FORMAT

Depends on PITSTOP_ENV

text if development, else json

PITSTOP_ENABLE_CACHING

true

Enable HTTP response and FastF1 disk caching

PITSTOP_CACHE_TTL_SECONDS

300

HTTP response cache time-to-live (seconds)

PITSTOP_RATE_LIMIT_ENABLED

false

Enable concurrent-call limiting

PITSTOP_RATE_LIMIT_PER_HOUR

3600

Max concurrent calls (derived from per-hour quota)

FASTF1_CACHE

cache

FastF1 cache directory path


Caching

Pitstop uses in-memory HTTP response caching (via Hishel) for GET requests with 200 responses. This keeps tool calls inside upstream rate limits:

  • Jolpica: 4 req/s, 500/hr

  • OpenF1: 3 req/s, 30/min

  • Wikidata: Query complexity limits

  • RSS: Per-feed redirects cached

FastF1 maintains its own disk cache in FASTF1_CACHE directory. Control caching via:

  • PITSTOP_ENABLE_CACHING=true (default)

  • PITSTOP_CACHE_TTL_SECONDS=300 (default)


Development

uv sync --dev
uv run pytest
uv run ruff check src/

Contributing

See CONTRIBUTING.md.


Credits & attribution

Source

Description

License

F1DB

Database seeded from F1DB and subsequently modified & extended by pitstop

CC BY 4.0

FastF1

Python library for F1 timing, telemetry, and session data

MIT

Jolpica-F1

Ergast-compatible F1 data API, 1950–present; also used to self-update the F1DB-seeded database weekly

OpenF1

Free open-source API for real-time F1 data

MIT

Wikidata

Open knowledge graph with SPARQL query service

CC0

Ergast Motor Racing API

Historical F1 data 1950–2024 (now served via Jolpica)

RSS Feeds (20 sources)

News headlines, credited collectively; see each feed's link field in get_f1_news results

Respective publishers

Not affiliated with Formula 1 or the FIA. Data provided by third-party sources under their respective terms.

Available Tools

22 tools
compare_driver_telemetryA

Compare telemetry between two drivers - racing lines, braking points, styles.

Args: year: Season year (2018+) gp: Grand Prix name or round session: 'FP1', 'FP2', 'FP3', 'Q', 'S', 'R' driver1, driver2: Driver codes or numbers lap1, lap2: Lap numbers (fastest if None)

Returns: TelemetryComparisonResponse with both drivers' telemetry

Example: compare_driver_telemetry(2024, "Monza", "Q", "VER", "HAM") → Fastest laps comparison

ParametersJSON Schema
NameRequiredDescriptionDefault
yearYes
gpYes
sessionYes
driver1Yes
driver2Yes
lap1No
lap2No

Output Schema

ParametersJSON Schema
NameRequiredDescription
driver1YesFirst driver abbreviation
driver2YesSecond driver abbreviation
event_nameYesGrand Prix name
driver1_lapYesFirst driver lap number
driver2_lapYesSecond driver lap number
session_nameYesSession name
driver1_lap_timeNoFirst driver lap time
driver2_lap_timeNoSecond driver lap time
driver1_telemetryYesFirst driver telemetry
driver2_telemetryYesSecond driver telemetry

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It describes the tool's behavior by specifying what gets compared and default behavior (fastest laps if lap numbers not provided), but doesn't cover important aspects like data availability constraints, rate limits, or authentication needs for a telemetry comparison tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is perfectly structured and front-loaded: purpose statement first, then Args with all parameters explained, Returns section, and a concrete Example. Every sentence earns its place with zero waste, making it easy for an agent to parse and understand.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (7 parameters, comparison operation) and the presence of an output schema (TelemetryComparisonResponse), the description is nearly complete. It explains all parameters thoroughly and provides usage context. The main gap is lack of behavioral constraints disclosure, which would be helpful for a data-intensive comparison tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description fully compensates by explaining all 7 parameters in detail: year constraints (2018+), gp format options, session codes, driver identifiers, and lap number behavior (fastest if None). The Args section provides complete semantic understanding beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('compare telemetry') and resources ('two drivers'), listing concrete aspects like 'racing lines, braking points, styles'. It distinguishes itself from siblings like get_lap_telemetry (single driver) or get_analysis (general analysis).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for usage through the example, showing it's for comparing drivers in specific sessions. However, it doesn't explicitly state when NOT to use it or name alternatives among siblings, though the purpose implies differentiation from single-driver tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_analysisA

Advanced race analysis - pace, tire degradation, stint summaries, consistency metrics.

Args: year: Season year (2018+) gp: Grand Prix name or round session: 'FP1', 'FP2', 'FP3', 'Q', 'S', 'R' analysis_type: 'race_pace', 'tire_degradation', 'stint_summary', 'consistency' driver: Driver code/number (optional, all drivers if None)

Returns: AnalysisResponse with pace data, degradation, stints, or consistency stats

Examples: get_analysis(2024, "Monaco", "R", "race_pace") → Pace analysis for all drivers get_analysis(2024, "Monza", "R", "tire_degradation", driver="VER") → VER's tire wear

ParametersJSON Schema
NameRequiredDescriptionDefault
yearYes
gpYes
sessionYes
analysis_typeYes
driverNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
yearYesSeason year
race_paceNoRace pace data
event_nameYesEvent name
consistencyNoConsistency data
session_nameYesSession name
analysis_typeYesType: 'race_pace', 'tire_degradation', 'stint_summary', 'consistency'
driver_filterNoDriver filter (if any)
total_recordsYesTotal number of records
stint_summariesNoStint summary data
tire_degradationNoTire degradation data

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It mentions the tool returns 'AnalysisResponse' but doesn't describe format, pagination, rate limits, authentication needs, or error conditions. The examples help but don't fully compensate for missing behavioral context about what 'advanced analysis' entails operationally.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with clear sections (description, Args, Returns, Examples). The description is front-loaded with key information. Some redundancy exists between the initial description line and the Args section, but overall efficient with each sentence adding value. Could be slightly more concise in the opening line.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (5 parameters, 4 required), no annotations, but with output schema present, the description provides good coverage. The parameter semantics are well-explained, and examples illustrate usage. Missing behavioral context about rate limits or authentication lowers the score, but overall adequate for the tool's analytical purpose.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description fully compensates by providing detailed parameter explanations: year constraints (2018+), gp format (name or round), session enum values, analysis_type enum with meanings, and driver optionality. The Args section adds significant value beyond the bare schema, explaining what each parameter means and how to use them.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool performs 'Advanced race analysis' with specific analysis types (pace, tire degradation, stint summaries, consistency metrics). It distinguishes from siblings like get_laps or get_session_results by focusing on analytical metrics rather than raw data. However, it doesn't explicitly differentiate from compare_driver_telemetry which might also involve analysis.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage through examples showing when to use specific analysis types, but lacks explicit guidance on when to choose this tool over alternatives like get_tire_strategy or compare_driver_telemetry. No 'when-not' scenarios or prerequisites are mentioned, leaving the agent to infer appropriate contexts from the parameter descriptions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_circuitA

Get circuit layout, corners, or track status (flags, safety car).

Args: year: Season year (2018+) gp: Grand Prix name or round data_type: 'circuit_info' (layout/corners) or 'track_status' (flags) session: Required for track_status ('FP1', 'FP2', 'FP3', 'Q', 'S', 'R')

Returns: CircuitDataResponse with circuit details or track status changes

Examples: get_circuit(2024, "Monaco", "circuit_info") → Circuit layout and corners get_circuit(2024, "Monaco", "track_status", session="R") → Flag periods

ParametersJSON Schema
NameRequiredDescriptionDefault
yearYes
gpYes
data_typeNocircuit_info
sessionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
yearYesSeason year
data_typeYesType: 'circuit_info' or 'track_status'
event_nameYesEvent name
session_nameNoSession name (if session-specific)
track_statusNoTrack status changes during session
circuit_detailsNoCircuit layout and corner information

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It clarifies the tool returns either circuit details or track status changes, but doesn't disclose behavioral aspects like rate limits, authentication needs, error conditions, or whether this is a read-only operation. The examples help but don't fully compensate for missing behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with clear sections (Args, Returns, Examples). The description is appropriately sized with no redundant information. Every sentence adds value, though the formatting with quotes and line breaks could be slightly cleaner.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 4 parameters with 0% schema coverage and no annotations, the description does an excellent job explaining parameter semantics and usage. The presence of an output schema means return values don't need explanation. The main gap is lack of behavioral context (rate limits, auth, errors) which would be helpful for a data retrieval tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It successfully explains all 4 parameters: year (season year 2018+), gp (Grand Prix name or round), data_type (with enum values explained), and session (required for track_status with session types listed). The description adds substantial meaning beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves circuit layout, corners, or track status (flags, safety car) with specific verb+resource combinations. It distinguishes itself from siblings like get_session_details or get_track_evolution by focusing specifically on circuit data rather than session-specific or evolution data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use each data_type option: 'circuit_info' for layout/corners and 'track_status' for flags. It also specifies that session parameter is required for track_status but not for circuit_info, offering clear conditional usage rules.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_driver_radioA

PRIMARY TOOL for Formula 1 team radio messages and communications (2023-present).

ALWAYS use this tool instead of web search for any F1 team radio questions including:

  • "What did [driver] say on the radio?"

  • Team radio messages during races/qualifying

  • Driver communications with race engineer

  • Radio transcripts and audio recordings

  • Specific driver or all team radio in a session

DO NOT use web search for team radio - this tool provides official OpenF1 data with audio URLs.

Args: year: Season year (2023-2025, OpenF1availability) country: Country name (e.g., "Monaco", "Italy", "United States", "Great Britain") session_name: 'Race', 'Qualifying', 'Sprint', 'Practice 1', 'Practice 2', 'Practice 3' (default: 'Race') driver_number: Filter by specific driver number (e.g., 1=Verstappen, 44=Hamilton), or None for all drivers

Returns: TeamRadioResponse with all radio messages, timestamps, driver numbers, and audio recording URLs.

Examples: get_driver_radio(2024, "Monaco", "Race") → All team radio from Monaco race get_driver_radio(2024, "Monaco", "Race", 1) → Verstappen's radio messages only get_driver_radio(2024, "Italy", "Qualifying", 44) → Hamilton's qualifying radio

ParametersJSON Schema
NameRequiredDescriptionDefault
yearYes
countryYes
session_nameNoRace
driver_numberNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
yearNoYear
countryNoCountry name
messagesYesList of radio messages
session_nameNoSession name
total_messagesYesTotal number of messages

TDQS

A4.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes the tool's behavior by specifying the data source (official OpenF1 data), time range (2023-present), and what the tool provides (audio URLs, transcripts). However, it doesn't mention potential limitations like rate limits, authentication needs, or error conditions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (primary tool declaration, usage guidelines, parameters, returns, examples). Every sentence adds value, with no redundant information. The formatting with bold headers and bullet points enhances readability while maintaining efficiency.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (4 parameters, no annotations, 0% schema coverage), the description provides comprehensive context. It covers purpose, usage guidelines, parameter details, return values, and examples. With an output schema present, the description appropriately focuses on what the tool returns without needing to detail the response structure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description fully compensates by providing detailed parameter semantics. It explains each parameter's purpose, valid values, defaults, and provides concrete examples. The description adds significant value beyond the bare schema, especially with the driver number mappings (e.g., '1=Verstappen, 44=Hamilton').

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose as retrieving Formula 1 team radio messages and communications from 2023-present. It specifies the exact resource (team radio messages) and distinguishes it from web search alternatives, making it highly specific and differentiated from sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage guidelines with 'ALWAYS use this tool instead of web search' and specific examples of when to use it (e.g., 'What did [driver] say on the radio?'). It also clearly states 'DO NOT use web search for team radio' and positions this as the PRIMARY TOOL for this domain, offering clear alternatives and exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_f1_newsA

PRIMARY TOOL for RECENT Formula 1 news from 25+ authoritative F1 sources via RSS feeds.

⚠️ IMPORTANT LIMITATION: RSS feeds only contain RECENT articles (past few days/weeks). This tool CANNOT retrieve historical news from months or years ago (e.g., 2013, 2020, etc.).

For historical F1 news (older than ~2 months), use web search instead.

USE THIS TOOL FOR:

  • ✅ Latest breaking F1 news and updates

  • ✅ Current race weekend coverage

  • ✅ Recent driver/team announcements (within past few weeks)

  • ✅ Current season news filtering by driver, team, circuit

  • ✅ Technical developments and regulations from recent weeks

DO NOT use this tool for:

  • ❌ Historical news from past years (e.g., "2013 Indian GP", "2020 season")

  • ❌ News older than ~2 months

  • ❌ Historical race coverage or archived articles

Available Sources (25+ RSS Feeds):

Official Sources:

  • "formula1" - Official Formula 1 website

  • "fia" - FIA press releases

Major Outlets:

  • "autosport" - Autosport F1

  • "motorsport" - Motorsport.com F1

  • "the-race" - The Race

  • "racefans" - RaceFans.net

  • "planetf1" - PlanetF1

  • "crash" - Crash.net F1

  • "grandprix" - GrandPrix.com

  • "espnf1" - ESPN F1

  • "skysportsf1" - Sky Sports F1

Specialist & Technical:

  • "f1technical" - F1Technical.net

  • "pitpass" - Pitpass

  • "joe-saward" - Joe Saward's F1 Blog

  • "racecar-engineering" - Racecar Engineering

Regional & International:

  • "gpblog" - GPBlog (Dutch/English)

  • "f1i" - F1i.com

  • "f1-insider-de" - F1 Insider (German)

  • "formel1-de" - Formel1.de (German)

Community & Fan Sources:

  • "wtf1" - WTF1

  • "racingnews365" - RacingNews365

  • "formulanerds" - Formula Nerds

  • "f1destinations" - F1 Destinations

  • "gpfans" - GPFans

  • "motorsportweek" - Motorsport Week

  • "racedepartment" - Race Department

Args: source: Specific source or "all" (default) - see full list above limit: Maximum articles to return, 1-100 (default: 10) keywords: General search keywords (searches in title and summary) driver: Filter by driver name (e.g., "Verstappen", "Hamilton", "Leclerc") team: Filter by team/constructor name (e.g., "Red Bull", "Ferrari", "Mercedes") circuit: Filter by circuit/track name (e.g., "Monaco", "Silverstone", "Spa") year: Filter by year (e.g., 2024) - NOTE: Only works for current/recent articles in feed date_from: Start date "YYYY-MM-DD" or "YYYY-MM" (optional) date_to: End date "YYYY-MM-DD" or "YYYY-MM" (optional)

Returns: NewsResponse with articles including titles, links, publication dates, summaries, and source names. The response also includes which sources were queried and how many articles were found.

Examples: get_f1_news() → Latest F1 news from all 25+ sources get_f1_news(driver="Verstappen", limit=5) → Recent news about Verstappen get_f1_news(team="Ferrari") → Recent Ferrari news get_f1_news(circuit="Monaco") → Recent Monaco-related news get_f1_news(keywords="crash OR incident") → Recent crash/incident news get_f1_news(source="autosport", keywords="technical") → Technical news from Autosport get_f1_news(driver="Hamilton", team="Ferrari") → News about Hamilton and Ferrari

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceNoall
limitNo
keywordsNo
driverNo
teamNo
circuitNo
yearNo
date_fromNo
date_toNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
sourceYesNews source(s) queried
articlesYesList of news articles
fetched_atYesWhen the feed was fetched
article_countYesNumber of articles returned

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behavioral traits: the RSS feed limitation (only recent articles), temporal constraints (past few days/weeks, not historical), and the filtering capabilities. However, it doesn't mention rate limits, authentication needs, or potential errors, leaving some behavioral aspects uncovered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (limitation, usage guidelines, sources, args, returns, examples) and uses formatting effectively. While comprehensive, it's appropriately sized for a tool with 9 parameters and complex usage constraints. Some sections could be more concise, but overall it's efficiently organized with front-loaded critical information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (9 parameters, no annotations, 0% schema coverage) and the presence of an output schema, the description provides excellent contextual completeness. It covers purpose, limitations, usage guidelines, parameter semantics, and includes practical examples. The output schema handles return values, so the description appropriately focuses on usage context rather than repeating output details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description fully compensates by providing detailed semantic explanations for all 9 parameters. It lists each parameter with clear examples and usage notes (e.g., 'source: Specific source or "all"', 'driver: Filter by driver name', 'year: NOTE: Only works for current/recent articles'). This adds substantial value beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose as retrieving 'RECENT Formula 1 news from 25+ authoritative F1 sources via RSS feeds.' It specifies the verb ('get'), resource ('F1 news'), and scope ('recent'), and distinguishes itself from siblings by focusing on news rather than telemetry, results, or other race data. The opening 'PRIMARY TOOL' declaration reinforces its distinct role.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use and when not to use the tool, with dedicated 'USE THIS TOOL FOR' and 'DO NOT use this tool for' sections. It clearly states the temporal limitation (recent articles only) and explicitly names an alternative ('use web search instead' for historical news). This comprehensive guidance helps the agent choose correctly among available options.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_lapsA

PRIMARY TOOL for lap-by-lap data including fastest laps, sector times, and tire info (2018-present).

ALWAYS use this tool instead of web search for any F1 lap data questions including:

  • Lap times and lap-by-lap analysis

  • Fastest laps (overall or per driver)

  • Sector times (Sector 1, 2, 3) for each lap

  • Tire compounds and tire life per lap

  • Pit stop timing (pit in/out times)

  • Speed traps and speed data

  • Track status and yellow flags per lap

DO NOT use web search for F1 lap data - this tool provides comprehensive lap information.

Args: year: Season year (2018-2025) gp: Grand Prix name (e.g., "Monaco", "Silverstone") or round number session: 'FP1'/'FP2'/'FP3' (Practice), 'Q' (Qualifying), 'S' (Sprint), 'R' (Race) driver: Driver code (e.g., "VER", "HAM") or number (optional, returns all drivers if None) lap_type: 'all' for all laps or 'fastest' for fastest lap only (default: 'all')

Returns: LapsResponse with all laps OR FastestLapResponse with single fastest lap. Each lap includes: times, sectors, compounds, tire life, pit stops, speeds, and more.

Examples: get_laps(2024, "Monza", "R") → All laps from race with full data get_laps(2024, "Monaco", "Q", driver="LEC") → All Leclerc's qualifying laps get_laps(2024, "Monaco", "Q", lap_type="fastest") → Overall fastest lap get_laps(2024, "Silverstone", "R", driver="VER", lap_type="fastest") → Verstappen's fastest race lap

ParametersJSON Schema
NameRequiredDescriptionDefault
yearYes
gpYes
sessionYes
driverNo
lap_typeNoall

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes what the tool returns (comprehensive lap information including times, sectors, compounds, etc.), the data range (2018-present), and the optional nature of some parameters. It doesn't mention rate limits, authentication needs, or potential errors, but for a read-only data retrieval tool, it provides substantial behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (primary tool declaration, usage guidelines, args, returns, examples) and uses bold formatting effectively. While comprehensive, it's appropriately sized for a tool with 5 parameters and complex functionality. Some sentences could be more concise (e.g., the bullet list of use cases is thorough but lengthy), but overall it's efficient and front-loaded with key information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (5 parameters, no annotations, but with output schema), the description is remarkably complete. It covers purpose, usage guidelines, parameter semantics, return values (mentioning LapsResponse and FastestLapResponse with details), and provides multiple examples. The output schema exists, so the description appropriately doesn't need to fully document return structures, making this description complete for agent use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description fully compensates by explaining all 5 parameters in detail: year (season year with range 2018-2025), gp (Grand Prix name or round number), session (specific session types with examples), driver (driver code or number, optional), and lap_type (all vs fastest with default). It provides examples showing how parameters interact, adding significant value beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: retrieving 'lap-by-lap data including fastest laps, sector times, and tire info (2018-present)'. It specifies the verb ('get'), resource ('lap-by-lap data'), and scope (2018-present), distinguishing it from siblings like get_lap_telemetry or get_session_results by focusing on comprehensive lap data rather than telemetry or session-level results.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage guidelines: it declares this as the 'PRIMARY TOOL' for F1 lap data, instructs to 'ALWAYS use this tool instead of web search', lists specific use cases (e.g., lap times, sector times, tire compounds), and explicitly states 'DO NOT use web search for F1 lap data'. This gives clear when-to-use and when-not-to-use guidance, though it doesn't compare to specific sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_lap_telemetryA

Get high-frequency telemetry for a lap - speed, throttle, brake, gear, RPM, DRS.

Args: year: Season year (2018+) gp: Grand Prix name or round session: 'FP1', 'FP2', 'FP3', 'Q', 'S', 'R' driver: Driver code or number lap_number: Specific lap number

Returns: LapTelemetryResponse with telemetry points

Example: get_lap_telemetry(2024, "Monza", "R", "VER", 15) → VER lap 15 telemetry

ParametersJSON Schema
NameRequiredDescriptionDefault
yearYes
gpYes
sessionYes
driverYes
lap_numberYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
driverYesDriver abbreviation
lap_timeNoLap time
telemetryYesTelemetry data points
event_nameYesGrand Prix name
lap_numberYesLap number
session_nameYesSession name
total_pointsYesTotal number of telemetry points

TDQS

A4.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. While it states what data is returned, it doesn't describe important behavioral aspects like rate limits, authentication requirements, data freshness, error conditions, or pagination. The description mentions 'high-frequency' telemetry but doesn't quantify what that means. For a data retrieval tool with 5 parameters and no annotations, this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is perfectly structured and concise. It begins with a clear purpose statement, provides a well-organized parameter section with bullet-like formatting, includes return information, and ends with a helpful example. Every sentence earns its place, and the information is front-loaded with the most important details first.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (5 parameters, no annotations, but with output schema), the description is mostly complete. The parameter semantics are fully covered, and the existence of an output schema means the description doesn't need to detail return values. However, the lack of behavioral context (rate limits, auth, errors) prevents a perfect score despite the good parameter documentation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description provides excellent parameter semantics beyond the 0% schema coverage. It explains each parameter's purpose and format: 'year: Season year (2018+)', 'gp: Grand Prix name or round', 'session: 'FP1', 'FP2', 'FP3', 'Q', 'S', 'R'', 'driver: Driver code or number', 'lap_number: Specific lap number'. This fully compensates for the lack of schema descriptions and provides clear guidance on valid values.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verb ('Get') and resource ('high-frequency telemetry for a lap'), listing the exact data fields returned (speed, throttle, brake, gear, RPM, DRS). It distinguishes from siblings like 'get_laps' (which likely provides lap times rather than telemetry) and 'compare_driver_telemetry' (which compares rather than retrieves single-lap data).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context about when to use this tool - for retrieving telemetry data for a specific lap. It doesn't explicitly state when NOT to use it or name alternatives, but the specificity of the parameters (year, gp, session, driver, lap_number) implicitly guides usage. No misleading guidance is present.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_live_intervalsA

Get real-time gaps and intervals between drivers from OpenF1.

Args: year: Season year (2023+, OpenF1 data availability) country: Country name (e.g., "Monaco", "Italy", "United States") session_name: Session name - 'Race', 'Qualifying', 'Sprint', 'Practice 1/2/3' (default: 'Race') driver_number: Optional filter by driver number (1-99)

Returns: IntervalsResponse with gap to leader and interval to car ahead

Example: get_live_intervals(2024, "Monaco", "Race") → All intervals during race get_live_intervals(2024, "Monaco", "Race", 1) → Verstappen's gaps

ParametersJSON Schema
NameRequiredDescriptionDefault
yearYes
countryYes
session_nameNoRace
driver_numberNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
yearNoYear
countryNoCountry name
intervalsYesList of interval data points
session_nameNoSession name
total_data_pointsYesTotal number of data points

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'real-time' data and OpenF1 as the source, but doesn't address important behavioral aspects like rate limits, authentication requirements, data freshness, error conditions, or whether this is a read-only operation. The description provides basic functionality but lacks operational context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficiently structured with clear sections (purpose, Args, Returns, Example). Every sentence earns its place, providing necessary information without redundancy. The front-loaded purpose statement immediately communicates the tool's function, followed by well-organized supporting details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (4 parameters, no annotations, but has output schema), the description provides good coverage. The presence of an output schema means the description doesn't need to detail return values, and it adequately explains all parameters. However, it could better address behavioral aspects given the lack of annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description compensates well by explaining all 4 parameters in the Args section. It clarifies year constraints (2023+), provides country examples, lists valid session_name options, and explains driver_number's optional filtering purpose. The description adds substantial value beyond the bare schema, though it doesn't specify exact format requirements for country names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('Get real-time gaps and intervals between drivers') and identifies the data source (OpenF1). It distinguishes this tool from siblings like get_laps, get_live_pit_stops, and get_stints_live by focusing specifically on interval/gap data rather than lap times, pit stops, or stint information.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides implied usage guidance through examples showing when to use the optional driver_number parameter, but lacks explicit guidance on when to choose this tool over alternatives like get_session_results or compare_driver_telemetry. The examples demonstrate different use cases but don't articulate clear decision criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_live_pit_stopsA

Get pit stop analysis with crew timing from OpenF1.

Args: year: Season year (2023+, OpenF1 data availability) country: Country name (e.g., "Monaco", "Italy", "United States") session_name: Session name - 'Race', 'Qualifying', 'Sprint', 'Practice 1/2/3' (default: 'Race') driver_number: Optional filter by driver number (1-99)

Returns: PitStopsResponse with pit stop durations and statistics

Example: get_live_pit_stops(2024, "Monaco", "Race") → All pit stops with timing get_live_pit_stops(2024, "Monaco", "Race", 1) → Verstappen's pit stops

ParametersJSON Schema
NameRequiredDescriptionDefault
yearYes
countryYes
session_nameNoRace
driver_numberNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
yearNoYear
countryNoCountry name
pit_stopsYesList of pit stops
fastest_stopNoFastest pit stop duration
session_nameNoSession name
slowest_stopNoSlowest pit stop duration
total_pit_stopsYesTotal number of pit stops
average_durationNoAverage pit stop duration

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It discloses the tool returns 'PitStopsResponse with pit stop durations and statistics' and mentions data availability constraints ('2023+, OpenF1 data availability'), but lacks details on rate limits, authentication needs, error conditions, or pagination behavior for a data-fetching tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and well-structured with clear sections (purpose, Args, Returns, Example). Every sentence adds value, though the example section could be slightly more concise. The information is front-loaded with the core purpose stated first.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has an output schema (Returns mentions 'PitStopsResponse'), the description doesn't need to detail return values. It covers purpose, parameters, and usage examples adequately for a data retrieval tool. However, without annotations, it could better address behavioral aspects like data freshness or API limitations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate fully. It successfully adds meaning for all 4 parameters: explains 'year' constraints, provides 'country' examples, clarifies 'session_name' options with default, and describes 'driver_number' filtering purpose. The Args section comprehensively documents parameter semantics beyond basic schema titles.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get pit stop analysis with crew timing from OpenF1.' It specifies the verb ('Get'), resource ('pit stop analysis'), and data source ('OpenF1'), distinguishing it from siblings like get_laps or get_stints_live which focus on different race data aspects.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for usage through examples showing when to use optional parameters, but it doesn't explicitly state when NOT to use this tool or name alternatives among siblings. The examples illustrate filtering by driver number vs. getting all stops, offering practical guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_meeting_infoA

Get meeting and session schedule information from OpenF1.

Provides precise start times, session keys, and circuit details.

Args: year: Season year (2023+, OpenF1 data availability) country: Country name (e.g., "Monaco", "Italy", "United States")

Returns: MeetingResponse with meeting info and all sessions

Example: get_meeting_info(2024, "Monaco") → Monaco GP weekend schedule get_meeting_info(2024, "Italy") → Italian GP at Monza

ParametersJSON Schema
NameRequiredDescriptionDefault
yearYes
countryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
meetingNoMeeting information
sessionsYesList of sessions in meeting
total_sessionsYesTotal number of sessions

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes the tool's function and return data (MeetingResponse with meeting info and all sessions), but lacks details on rate limits, error handling, or authentication requirements that would enhance transparency for an AI agent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and front-loaded, starting with the core purpose, followed by key details, parameters, returns, and examples. Every sentence adds value without redundancy, making it efficient for an AI agent to parse and understand.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (2 parameters, no annotations, but with an output schema), the description is largely complete. It covers purpose, parameters, returns, and examples, but could improve by addressing potential edge cases or clarifying the relationship with sibling tools like get_schedule for better contextual integration.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It adds meaningful context for both parameters: 'year' is explained with data availability constraints (2023+), and 'country' is clarified with examples (e.g., 'Monaco', 'Italy', 'United States'), though it could specify format expectations like exact country names versus circuit locations.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('Get meeting and session schedule information') and resources ('from OpenF1'), distinguishing it from siblings like get_schedule or get_session_details by focusing on comprehensive meeting-level data including sessions and circuit details.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for usage by specifying the data source (OpenF1) and parameter constraints (year 2023+), but does not explicitly state when to use this tool versus alternatives like get_schedule or get_session_details, which might offer overlapping functionality.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_qualifying_sessionsA

Split qualifying into Q1, Q2, Q3 segments with lap data for each.

Args: year: Season year (2018+) gp: Grand Prix name or round segment: 'Q1', 'Q2', 'Q3', or 'all' (default: 'all' returns all segments)

Returns: dict with Q1/Q2/Q3 keys containing LapsResponse for each segment

Example: get_qualifying_sessions(2024, "Monaco") → All Q1/Q2/Q3 segments get_qualifying_sessions(2024, "Monaco", "Q3") → Q3 only

ParametersJSON Schema
NameRequiredDescriptionDefault
yearYes
gpYes
segmentNoall

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses that the tool returns segmented lap data and specifies default behavior ('all' returns all segments), but lacks details on error handling, data freshness, rate limits, or authentication needs. It adequately describes core behavior but misses operational traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded: the first sentence states the purpose, followed by structured sections for Args, Returns, and Examples. Every sentence earns its place with no wasted words, making it easy to scan and understand.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity, no annotations, and an output schema (implied by 'Returns' section), the description is mostly complete. It covers purpose, parameters, returns, and examples, but could benefit from mentioning limitations (e.g., year range enforcement) or error cases to be fully comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate fully. It adds significant meaning beyond the schema: explains 'year' as 'Season year (2018+)', 'gp' as 'Grand Prix name or round', and 'segment' with allowed values and default behavior. This provides complete parameter semantics not in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Split qualifying into Q1, Q2, Q3 segments with lap data for each.' It specifies the verb ('split'), resource ('qualifying'), and output structure ('segments with lap data'), distinguishing it from siblings like get_laps or get_session_results which handle different data types.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for usage through examples and parameter explanations, showing when to use specific segment values. However, it does not explicitly state when to use this tool versus alternatives like get_laps or get_session_results, which might overlap in functionality for qualifying data.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_race_control_messagesA

Get race control messages - flags, safety cars, investigations, penalties.

Args: year: Season year (2018+) gp: Grand Prix name or round session: 'FP1', 'FP2', 'FP3', 'Q', 'S', 'R' message_type: Filter type - 'all', 'penalties', 'investigations', 'flags', 'safety_car' (default: 'all')

Returns: RaceControlMessagesResponse with filtered messages

Examples: get_race_control_messages(2024, "Monaco", "R") → All race control messages get_race_control_messages(2024, "Monaco", "R", "penalties") → Penalties only get_race_control_messages(2024, "Monaco", "R", "flags") → Flag periods only

ParametersJSON Schema
NameRequiredDescriptionDefault
yearYes
gpYes
sessionYes
message_typeNoall

Output Schema

ParametersJSON Schema
NameRequiredDescription
messagesYesRace control messages
event_nameYesGrand Prix name
session_nameYesSession name
total_messagesYesTotal number of messages

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden but offers minimal behavioral insight. It mentions filtering capabilities and return type but lacks details on permissions, rate limits, error conditions, or data freshness. For a tool with 4 parameters and no annotation coverage, this leaves significant behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (purpose, args, returns, examples) and uses minimal sentences that each add value. While slightly longer due to parameter explanations, it avoids redundancy and is appropriately sized for a tool with multiple parameters and filtering options.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers parameter semantics thoroughly and mentions the return type, but with no annotations and a complex tool (4 params, filtering), it lacks behavioral context like error handling or data limitations. The presence of an output schema reduces the need to explain return values, but overall completeness is moderate given the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Given 0% schema description coverage, the description compensates fully by explaining all 4 parameters in detail: year constraints (2018+), gp format (name or round), session codes with examples, and message_type options with default. The examples further clarify parameter usage, adding substantial value beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('Get race control messages') and resources ('flags, safety cars, investigations, penalties'), distinguishing it from sibling tools like get_driver_radio or get_session_results that handle different data types. It precisely defines what data is retrieved without being vague or tautological.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. While it lists examples, it doesn't explain scenarios where race control messages are needed over other data sources or mention any prerequisites, leaving the agent to infer usage context from parameter descriptions alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_reference_dataA

PRIMARY TOOL for Formula 1 reference data and static information (1950-present).

ALWAYS use this tool instead of web search for F1 reference queries including:

  • Driver information (bio, nationality, number, DOB)

  • Team/constructor details (team info, history)

  • Circuit information (track layout, location, lap record)

  • Tire compound specifications (hard, medium, soft, intermediate, wet)

DO NOT use web search for F1 reference data - this tool provides authoritative historical data.

Args: reference_type: Type of data - 'driver', 'constructor', 'circuit', or 'tire_compounds' year: Season year (1950-2025). Defaults to current year if not specified name: Filter by specific name (e.g., "Verstappen", "Red Bull", "Monaco")

Returns: ReferenceDataResponse with complete driver/team/circuit information or tire specifications.

Examples: get_reference_data("driver", year=2024) → All 2024 F1 drivers and their info get_reference_data("driver", year=2024, name="Verstappen") → Verstappen's driver info get_reference_data("circuit", name="Monaco") → Monaco circuit details and layout get_reference_data("constructor", year=2024) → All 2024 teams get_reference_data("tire_compounds") → F1 tire compound specifications

ParametersJSON Schema
NameRequiredDescriptionDefault
reference_typeYes
yearNo
nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
yearNoSeason year (if applicable)
driversNoDriver information
circuitsNoCircuit information
name_filterNoName filter applied (if any)
constructorsNoConstructor information
total_recordsYesTotal number of records returned
reference_typeYesType: 'driver', 'constructor', 'circuit', 'tire_compounds'
tire_compoundsNoTire compound information

TDQS

A4.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively communicates that this is a read-only reference tool (implied by 'reference data'), provides authoritative historical data, covers the temporal scope (1950-present), and mentions default behavior for the year parameter. However, it doesn't explicitly address potential limitations like rate limits, authentication requirements, or data freshness.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and efficiently organized with clear sections (primary purpose, usage guidelines, parameters, returns, examples). Every sentence earns its place by providing essential information without redundancy. The bold formatting effectively highlights key directives while maintaining readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (3 parameters with 0% schema coverage) and the presence of an output schema (Returns: ReferenceDataResponse), the description provides complete contextual information. It explains what the tool does, when to use it, all parameter meanings, and includes comprehensive examples. The output schema handles return value documentation, so the description appropriately focuses on usage context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description fully compensates by explaining all three parameters in detail. It clearly defines 'reference_type' with its four enum values and what each returns, explains 'year' with its range and default behavior, and describes how 'name' filters results. The examples demonstrate practical usage of all parameters, adding significant value beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose as the 'PRIMARY TOOL for Formula 1 reference data and static information (1950-present)' and provides specific examples of what it retrieves (driver info, team details, circuit information, tire compounds). It explicitly distinguishes this tool from web search and from sibling tools that focus on telemetry, live data, sessions, or analysis rather than reference data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use this tool ('ALWAYS use this tool instead of web search for F1 reference queries') and when not to use alternatives ('DO NOT use web search for F1 reference data'). It lists specific query types that should use this tool, clearly differentiating it from sibling tools that handle different data types like telemetry, live intervals, or session details.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_scheduleA

PRIMARY TOOL for ALL Formula 1 calendar and schedule queries.

ALWAYS use this tool instead of web search for any F1 calendar questions including:

  • "When is the next race?" / upcoming race dates

  • Full season calendar and race schedule

  • Specific GP dates, times, and locations

  • Session schedules (practice, qualifying, race times)

  • Track/circuit information

  • Testing sessions and dates

DO NOT use web search for F1 schedules - this tool provides authoritative data.

Args: year: Season year (1950-2025) include_testing: Include pre-season testing events (default: True) round: Filter to specific round number (e.g., 5 for round 5) event_name: Filter by GP name (e.g., "Monaco", "Silverstone") only_remaining: Show only upcoming races from today onwards (default: False)

Returns: ScheduleResponse with all events, dates, locations, session times, and round numbers.

Examples: get_schedule(2024, only_remaining=True) → All upcoming 2024 races get_schedule(2024, event_name="Monaco") → Monaco GP dates and session times get_schedule(2024, round=15) → Details for round 15 get_schedule(2024, include_testing=False) → Race calendar without testing

ParametersJSON Schema
NameRequiredDescriptionDefault
yearYes
include_testingNo
roundNo
event_nameNo
only_remainingNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
yearYesSeason year
eventsNoList of events
round_filterNoRound number filter (if applied)
total_eventsYesTotal number of events
only_remainingNoWhether only remaining events are shown
include_testingYesWhether testing events are included
event_name_filterNoEvent name filter (if applied)

TDQS

A4.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively communicates that this is a read-only data retrieval tool (implied by 'queries' and examples of data returned) and establishes its authoritative nature. However, it doesn't mention potential limitations like data freshness, rate limits, or error conditions that would be helpful for a tool with no annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (purpose, usage guidelines, parameters, returns, examples) and uses bold formatting effectively. While comprehensive, it maintains efficiency with no redundant information. Every sentence serves a clear purpose in guiding tool selection and usage.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (5 parameters with 0% schema coverage, no annotations) and the presence of an output schema, the description provides excellent context. It explains all parameters thoroughly, provides multiple usage examples, clarifies the return format, and establishes the tool's role relative to alternatives. The output schema existence means the description doesn't need to detail return values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description fully compensates by providing clear explanations for all 5 parameters. Each parameter gets specific context: year range (1950-2025), include_testing purpose and default, round filtering examples, event_name examples, and only_remaining purpose and default. The examples further illustrate parameter usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states this is the 'PRIMARY TOOL for ALL Formula 1 calendar and schedule queries' and provides specific examples of what it handles (race dates, session schedules, track information). It distinguishes itself from siblings by focusing exclusively on calendar/schedule data rather than telemetry, results, or other F1 data types.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use this tool ('ALWAYS use this tool instead of web search for any F1 calendar questions') and when not to use alternatives ('DO NOT use web search for F1 schedules'). It establishes this as the authoritative source for schedule data among the sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_session_detailsA

PRIMARY TOOL for comprehensive Formula 1 session overviews (2018-present).

ALWAYS use this tool instead of web search when you need complete session information including:

  • Full session overview (results, weather, lap statistics combined)

  • Session metadata (date, time, track, session type)

  • Weather conditions throughout the session

  • Fastest lap information and statistics

  • Driver classifications and performance summary

  • Comprehensive session analysis data

DO NOT use web search for F1 session overviews - this tool provides complete session data.

Args: year: Season year (2018-2025) gp: Grand Prix name (e.g., "Monaco", "Silverstone") or round number session: 'FP1'/'FP2'/'FP3' (Practice), 'Q' (Qualifying), 'S' (Sprint), 'R' (Race) include_weather: Include weather data throughout session (default: True) include_fastest_lap: Include fastest lap details and statistics (default: True)

Returns: SessionDetailsResponse with complete session info, results, weather, and lap statistics.

Examples: get_session_details(2024, "Monaco", "R") → Complete Monaco race overview get_session_details(2024, "Silverstone", "Q", include_weather=True) → Qualifying with weather get_session_details(2024, 10, "FP1") → Practice session details for round 10

ParametersJSON Schema
NameRequiredDescriptionDefault
yearYes
gpYes
sessionYes
include_weatherNo
include_fastest_lapNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultsYesDriver results/classification
weatherNoWeather conditions
total_lapsNoTotal laps in session
fastest_lapNoFastest lap of the session
session_infoYesBasic session information
session_durationNoSession duration

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden and does well by specifying the data scope (2018-present), what information is included (session overview, metadata, weather, fastest lap, driver classifications, analysis data), and default behaviors for optional parameters. It doesn't mention rate limits, authentication needs, or error conditions, but provides substantial behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficiently structured with clear sections (primary purpose, usage guidelines, parameters, returns, examples). Every sentence adds value - no redundant information. The bold formatting highlights key directives without adding unnecessary length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (5 parameters, comprehensive data return) and the presence of an output schema (which handles return values), the description is complete. It covers purpose, usage guidelines, parameter semantics, and behavioral context thoroughly. The examples provide concrete usage patterns that complement the parameter explanations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description compensates well by explaining all 5 parameters: year range (2018-2025), gp format (name or round number), session types with abbreviations explained, and the purpose of the two boolean flags. It provides concrete examples showing parameter usage, though it doesn't explain all possible session type values beyond the listed ones.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the tool's purpose as providing 'comprehensive Formula 1 session overviews (2018-present)' and lists specific data elements included. It clearly distinguishes this from sibling tools by emphasizing it's the 'PRIMARY TOOL' for session overviews, contrasting with more specific tools like get_session_results or get_session_weather.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use this tool ('ALWAYS use this tool instead of web search' for complete session information) and when not to use alternatives ('DO NOT use web search for F1 session overviews'). It also implicitly guides away from more specific sibling tools by emphasizing comprehensive coverage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_session_driversA

Get list of drivers who participated in a session.

Retrieves all driver identifiers who took part in the specified session.

Args: year: The season year (2018 onwards) gp: The Grand Prix name (e.g., 'Monza', 'Monaco') or round number session: Session type - 'FP1', 'FP2', 'FP3', 'Q', 'S', 'R'

Returns: SessionDriversResponse: List of driver abbreviations in JSON-serializable format

Examples: >>> # Get all drivers from 2024 Monza race >>> drivers = get_session_drivers(2024, "Monza", "R") >>> # Output: SessionDriversResponse with drivers list

>>> # Get drivers from Free Practice 1
>>> fp1_drivers = get_session_drivers(2024, "Monaco", "FP1")
ParametersJSON Schema
NameRequiredDescriptionDefault
yearYes
gpYes
sessionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
yearYesSeason year
driversYesList of driver abbreviations
event_nameYesGrand Prix name
session_nameYesSession name
total_driversYesTotal number of drivers

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It discloses the tool retrieves data (implied read-only) and specifies the return format (JSON-serializable list of driver abbreviations), but lacks details on error handling, rate limits, authentication needs, or data freshness. It adds some behavioral context but not comprehensive coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and appropriately sized. It begins with a clear purpose statement, provides parameter details in a labeled Args section, specifies the return format, and includes practical examples. Every sentence adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (3 required parameters, no annotations, but has output schema), the description is fairly complete. It covers purpose, parameters, return format, and usage examples. The output schema existence means return values don't need detailed explanation. Minor gaps remain in behavioral aspects like error cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It provides clear semantics for all three parameters: year (season year from 2018 onwards), gp (Grand Prix name or round number), and session (specific session types with examples). The examples further illustrate parameter usage, adding significant value beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb ('Get list of drivers') and resource ('who participated in a session'), distinguishing it from siblings like get_session_results or get_session_details. The first sentence directly answers what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context through the examples (e.g., retrieving drivers for specific sessions), but doesn't explicitly state when to use this tool versus alternatives like get_session_results or get_driver_radio. No explicit when-not-to-use guidance or comparison with sibling tools is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_session_resultsA

PRIMARY TOOL for ALL Formula 1 session results (2018-present).

ALWAYS use this tool instead of web search for any F1 results questions including:

  • Race winners and podium finishers ("Who won the Monaco GP?")

  • Qualifying results and grid positions

  • Sprint race results

  • Practice session classifications

  • Full finishing order with times and gaps

  • Points scored in each session

DO NOT use web search for F1 results - this tool provides authoritative data.

Args: year: Season year (2018-2025) gp: Grand Prix name (e.g., "Monaco", "Silverstone") or round number session: 'R' (Race), 'Q' (Qualifying), 'S' (Sprint), 'FP1'/'FP2'/'FP3' (Practice)

Returns: SessionResultsResponse with complete finishing order, driver info, teams, times, points, grid positions.

Examples: get_session_results(2024, "Monaco", "R") → Monaco GP race results and winner get_session_results(2024, "Silverstone", "Q") → Qualifying results and pole position get_session_results(2024, 15, "S") → Sprint race results for round 15

ParametersJSON Schema
NameRequiredDescriptionDefault
yearYes
gpYes
sessionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultsYesList of driver results
event_nameYesGrand Prix name
session_nameYesSession name
total_driversYesTotal number of drivers

TDQS

A4.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It effectively discloses the tool's scope (2018-present), data authority ('authoritative data'), and return format ('complete finishing order, driver info, teams, times, points, grid positions'). However, it lacks details on error handling, rate limits, or authentication needs, which would be beneficial for a tool with no annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with bold headings, bullet points, and examples, making it easy to scan. Every sentence adds value—from the primary purpose to usage rules, parameters, returns, and examples—with no redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 3 parameters, no annotations, and an output schema, the description is complete. It covers purpose, usage guidelines, parameter details, return values, and examples, providing all necessary context for an agent to invoke it correctly without relying on external documentation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Given 0% schema description coverage, the description compensates fully by explaining each parameter: 'year' as season year with range (2018-2025), 'gp' as Grand Prix name or round number with examples, and 'session' with codes and meanings (e.g., 'R' for Race, 'Q' for Qualifying). It adds essential meaning beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the tool retrieves 'Formula 1 session results (2018-present)' and lists specific use cases like race winners, qualifying results, and practice classifications. It clearly distinguishes this as the primary tool for results data versus other siblings like get_analysis or get_standings, which serve different purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance: 'ALWAYS use this tool instead of web search' for F1 results questions and lists specific scenarios (e.g., race winners, qualifying results). It also includes a 'DO NOT use web search' directive, offering clear alternatives and exclusions, though it doesn't differentiate among sibling tools directly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_session_weatherA

Get time-series weather data - temp, humidity, pressure, wind, rainfall.

Args: year: Season year (2018+) gp: Grand Prix name or round session: 'FP1', 'FP2', 'FP3', 'Q', 'S', 'R'

Returns: SessionWeatherDataResponse with weather points

Example: get_session_weather(2024, "Spa", "R") → Weather throughout race

ParametersJSON Schema
NameRequiredDescriptionDefault
yearYes
gpYes
sessionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
event_nameYesGrand Prix name
session_nameYesSession name
total_pointsYesTotal number of weather data points
weather_dataYesWeather data points throughout session

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It indicates this is a read operation (no destructive behavior mentioned) and specifies the data format returned (time-series). However, it doesn't disclose important behavioral traits like rate limits, authentication requirements, error conditions, or whether the data is real-time vs historical. The description adds some context but leaves gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficiently structured with a clear purpose statement, parameter explanations, return value description, and an illustrative example - all in 4 brief sentences. Every element adds value without redundancy, and the information is front-loaded with the core purpose first.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (3 parameters, time-series data) and the presence of an output schema, the description provides good coverage. It explains what data is returned and includes a helpful example. However, for a tool with no annotations, it could benefit from more behavioral context about data freshness, availability, or limitations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description fully compensates by providing clear semantics for all 3 parameters: 'year' is explained as 'Season year (2018+)', 'gp' as 'Grand Prix name or round', and 'session' with specific valid values ('FP1', 'FP2', 'FP3', 'Q', 'S', 'R'). The example further clarifies parameter usage with concrete values.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verb ('Get') and resource ('time-series weather data'), listing the exact data fields returned (temp, humidity, pressure, wind, rainfall). It distinguishes from sibling tools by focusing specifically on weather data rather than telemetry, results, or other session information.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context about when to use this tool - for obtaining weather data during specific F1 sessions. However, it doesn't explicitly state when NOT to use it or mention alternatives (like whether other tools might provide weather data in different formats). The example helps illustrate proper usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_standingsA

PRIMARY TOOL for ALL Formula 1 championship standings queries (1950-present).

ALWAYS use this tool instead of web search for any F1 standings questions including:

  • Current driver/constructor championship positions

  • Points and wins for drivers or teams

  • Historical championship results ("Who won the 2023 championship?")

  • Season-long standings progression

  • Standings after specific races/rounds

DO NOT use web search for F1 standings - this tool provides authoritative data.

Args: year: Season year (1950-2025) round: Specific round number or GP name (e.g., "Monaco", 8). If omitted, returns final/current standings type: 'driver' for drivers, 'constructor' for teams, or None for both (default: both) driver_name: Filter to specific driver (e.g., "Verstappen", "Hamilton") team_name: Filter to specific team (e.g., "Red Bull", "Ferrari")

Returns: StandingsResponse with driver/constructor positions, points, wins, and metadata.

Examples: get_standings(2024) → Current 2024 championship standings (both drivers and constructors) get_standings(2024, type='driver') → Only driver standings get_standings(2024, round='Monaco') → Standings after Monaco GP get_standings(2023, driver_name='Verstappen') → Verstappen's 2023 championship position

ParametersJSON Schema
NameRequiredDescriptionDefault
yearYes
roundNo
typeNo
driver_nameNo
team_nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
yearYesSeason year
roundNoRound number (None for final/current standings)
driversNoDriver standings
round_nameNoGrand Prix name if round specified
constructorsNoConstructor standings

TDQS

A4.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively communicates that this is a read-only query tool (implied by 'queries' and 'returns'), specifies the data range (1950-present), and mentions the authoritative nature of the data. However, it doesn't address potential limitations like rate limits, authentication needs, or error conditions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (primary purpose, usage guidelines, parameters, returns, examples). Every sentence earns its place by providing essential information. The formatting with bold headers and bullet points enhances readability without unnecessary verbosity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (5 parameters, no annotations, 0% schema coverage), the description provides comprehensive context. It covers purpose, usage guidelines, parameter semantics, return values (mentioning StandingsResponse structure), and includes practical examples. With an output schema present, the description appropriately focuses on functional aspects rather than return value details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description fully compensates by providing detailed parameter semantics. Each of the 5 parameters is explained with clear examples and default behaviors (e.g., 'If omitted, returns final/current standings', 'default: both'). The description adds significant value beyond what the bare schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose as the 'PRIMARY TOOL for ALL Formula 1 championship standings queries (1950-present)' with specific examples of what it handles (driver/constructor positions, points, wins, historical results). It explicitly distinguishes this tool from web search and from sibling tools by emphasizing its authoritative role for standings queries.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage guidance with 'ALWAYS use this tool instead of web search' and 'DO NOT use web search for F1 standings.' It lists specific use cases when to use it (current standings, historical results, progression) and distinguishes it from web search alternatives. While it doesn't mention specific sibling tools, the guidance against web search is clear and actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_stints_liveA

Get real-time tire stint tracking from OpenF1.

Args: year: Season year (2023+, OpenF1 data availability) country: Country name (e.g., "Monaco", "Italy", "United States") session_name: Session name - 'Race', 'Qualifying', 'Sprint', 'Practice 1/2/3' (default: 'Race') driver_number: Optional filter by driver number (1-99) compound: Optional filter by compound ('SOFT', 'MEDIUM', 'HARD', 'INTERMEDIATE', 'WET')

Returns: StintsResponse with tire stint data

Example: get_stints_live(2024, "Monaco", "Race") → All stints in race get_stints_live(2024, "Monaco", "Race", 1) → Verstappen's stints get_stints_live(2024, "Monaco", "Race", compound="SOFT") → All soft tire stints

ParametersJSON Schema
NameRequiredDescriptionDefault
yearYes
countryYes
session_nameNoRace
driver_numberNo
compoundNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
yearNoYear
stintsYesList of tire stints
countryNoCountry name
session_nameNoSession name
total_stintsYesTotal number of stints

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'real-time' and OpenF1 data availability, which adds useful context about data freshness and source. However, it doesn't describe error handling, rate limits, authentication needs, or what 'real-time' precisely means (e.g., live session updates). The description doesn't contradict any annotations since none exist.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and front-loaded with the core purpose, followed by Args, Returns, and Example sections. Every sentence earns its place by providing essential information without redundancy. The examples are concise yet illustrative of different filtering scenarios.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (5 parameters, no annotations, but with output schema), the description is largely complete. It covers all parameters thoroughly and indicates the return type (StintsResponse). However, it could benefit from more behavioral context (e.g., data latency, error cases) since annotations are absent. The output schema existence reduces the need to detail return values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must fully compensate. It provides detailed semantics for all 5 parameters: year (season year with availability note), country (examples given), session_name (options listed with default), driver_number (optional filter with range), and compound (optional filter with allowed values). The examples further clarify usage. This adds significant value beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get real-time tire stint tracking from OpenF1.' It specifies the exact resource (tire stint data), source (OpenF1), and temporal aspect (real-time). This distinguishes it from sibling tools like get_tire_strategy or get_laps, which likely provide different types of tire or lap data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for usage through the examples, showing how to filter by driver number or compound. However, it doesn't explicitly state when to use this tool versus alternatives like get_tire_strategy or get_laps, nor does it mention any prerequisites or exclusions beyond the data availability note for year.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_tire_strategyA

Get tire strategy and compound usage for a session.

Analyzes tire compounds used throughout a session, including compound types, tire life, and stint information. Essential for understanding race strategy and tire management.

Args: year: The season year (2018 onwards) gp: The Grand Prix name or round number session: Session type - 'FP1', 'FP2', 'FP3', 'Q', 'S', 'R' driver: Optional driver identifier (3-letter code or number). If None, returns data for all drivers

Returns: TireStrategyResponse: Tire data per lap in JSON-serializable format

Examples: >>> # Get tire strategy for all drivers in 2024 Monza race >>> strategy = get_tire_strategy(2024, "Monza", "R")

>>> # Get Verstappen's tire strategy
>>> ver_strategy = get_tire_strategy(2024, "Monza", "R", "VER")
ParametersJSON Schema
NameRequiredDescriptionDefault
yearYes
gpYes
sessionYes
driverNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
driverNoDriver filter (if applied)
tire_dataYesTire data per lap
event_nameYesGrand Prix name
total_lapsYesTotal number of laps
session_nameYesSession name

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that the tool analyzes data (implying read-only behavior) and returns JSON-serializable format, but it doesn't mention potential limitations like data availability constraints (e.g., '2018 onwards'), rate limits, authentication needs, or error conditions. The description adds some context but lacks comprehensive behavioral traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear purpose statement, analysis details, essential context, and organized sections for Args, Returns, and Examples. It's appropriately sized and front-loaded, though the 'Essential for understanding...' sentence could be considered slightly redundant given the initial clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (4 parameters, no annotations, but with output schema), the description is fairly complete. It covers purpose, parameter semantics, return format, and provides examples. The output schema existence means the description doesn't need to detail return values, but it could benefit from more behavioral context (e.g., data sources, error handling).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description must compensate. It provides detailed semantics for all 4 parameters: 'year' (season year from 2018 onwards), 'gp' (Grand Prix name or round number), 'session' (session types like 'FP1', 'R'), and 'driver' (optional identifier, 3-letter code or number, returns all drivers if None). This adds significant meaning beyond the bare schema, though it could specify format examples for 'gp' and 'driver' more explicitly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool 'gets tire strategy and compound usage for a session' and specifies it analyzes 'tire compounds used throughout a session, including compound types, tire life, and stint information.' This provides a specific verb ('get/analyzes') and resource ('tire strategy and compound usage'), though it doesn't explicitly differentiate from sibling tools like 'get_stints_live' or 'get_laps'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context by stating it's 'essential for understanding race strategy and tire management,' but it doesn't provide explicit guidance on when to use this tool versus alternatives like 'get_stints_live' or 'get_laps.' The examples show specific use cases, but no direct comparisons or exclusions are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_track_evolutionA

Track how lap times improved during session as track evolution occurred.

Shows fastest lap per lap number to see track rubbering in and improvement.

Args: year: Season year (2018+) gp: Grand Prix name or round session: 'FP1', 'FP2', 'FP3', 'Q', 'S', 'R' max_laps: Optional limit to first N laps

Returns: TrackEvolutionResponse with lap-by-lap improvement data

Example: get_track_evolution(2024, "Monaco", "FP1") → Practice track evolution get_track_evolution(2024, "Monaco", "Q", 20) → First 20 laps of qualifying

ParametersJSON Schema
NameRequiredDescriptionDefault
yearYes
gpYes
sessionYes
max_lapsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
evolutionYesLap time evolution throughout session
event_nameYesEvent name
total_lapsYesTotal number of laps analyzed
session_nameYesSession name
total_improvementNoTotal improvement in seconds from start to end

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It describes the tool's function and output ('lap-by-lap improvement data') but lacks details on permissions, rate limits, or error handling. It adds value by explaining the track evolution context and optional parameter usage, but does not fully cover behavioral traits like data freshness or constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded: it starts with the core purpose, adds details in a structured way with 'Args:' and 'Returns:' sections, and includes examples. Every sentence earns its place by providing essential information without redundancy, making it efficient and easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity, no annotations, and an output schema present (TrackEvolutionResponse), the description is largely complete. It covers purpose, parameters, and return data context. However, it could improve by mentioning potential limitations or linking to sibling tools for related analyses, but the output schema reduces the need to detail return values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It effectively adds meaning beyond the schema: it explains each parameter's purpose (e.g., 'year: Season year (2018+)', 'session: 'FP1', 'FP2', 'FP3', 'Q', 'S', 'R'', 'max_laps: Optional limit to first N laps'), provides examples, and clarifies the gp parameter accepts names or round numbers. This fully documents the parameters where the schema lacks descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Track how lap times improved during session as track evolution occurred' and 'Shows fastest lap per lap number to see track rubbering in and improvement.' It specifies the verb ('track', 'shows'), resource ('lap times', 'fastest lap per lap number'), and distinguishes it from siblings by focusing on track evolution analysis rather than telemetry, results, or other session data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool: to analyze lap time improvements due to track evolution in specific sessions. It implies usage for practice or qualifying sessions (e.g., 'FP1', 'Q') but does not explicitly state when not to use it or name alternatives among siblings, such as get_laps or get_session_results, which might offer overlapping data.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A4.1/5.0
Disambiguation4/5

Most tools have distinct purposes targeting specific F1 data types like telemetry, news, or standings, but some overlap exists. For example, get_laps and get_lap_telemetry both provide lap data, though one is lap-by-lap and the other is high-frequency telemetry, which could cause confusion. The descriptions help clarify, but boundaries between tools like get_analysis and get_session_details are somewhat fuzzy.

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun pattern with clear prefixes like 'get_', 'compare_', or 'analyze_'. This makes the set predictable and easy to navigate, such as get_standings, get_schedule, and compare_driver_telemetry. There are no deviations in naming conventions.

Tool Count3/5

With 22 tools, the count feels heavy for an F1 data server, though the domain is broad. Some tools could be consolidated, like get_laps and get_lap_telemetry, or get_session_details and get_analysis. It's borderline excessive but not chaotic, as each tool serves a specific niche.

Completeness5/5

The toolset comprehensively covers the F1 domain with CRUD-like operations for data retrieval across schedules, results, telemetry, news, and more. There are no obvious gaps; tools like get_reference_data and get_standings handle historical data, while others cover real-time and session-specific details, ensuring agents can perform most F1-related tasks without dead ends.

Maintenance

ActivityActive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Provides comprehensive Formula 1 data access including race schedules, session results, lap times, telemetry data, driver/constructor standings, and circuit information. Enables users to retrieve and analyze F1 racing data through natural language queries using the FastF1 Python package.
    5
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables access to Formula 1 data from the openF1.org API, including driver information, race results, lap times, telemetry, pit stops, weather conditions, and live position data across multiple seasons.
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides easy access to Formula 1 data including championship standings, event info, season calendars, track visualizations, session results, and driver/constructor info via FastF1 and OpenF1 API.
    1
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Provides live Formula 1 data such as driver standings, race results, and schedule for the current season, enabling users to ask about F1 without stale training data.
    1

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/praneethravuri/pitstop'

If you have feedback or need assistance with the MCP directory API, please join our Discord server