Skip to main content
Glama

get_driver_radio

Retrieve official Formula 1 team radio messages and audio recordings from races, qualifying, and practice sessions. Access driver communications with race engineers using OpenF1 data.

Instructions

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

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
yearYes
countryYes
session_nameNoRace
driver_numberNo

Implementation Reference

  • Core handler function implementing the get_driver_radio tool. Fetches team radio messages from OpenF1 API using meeting/session keys derived from year, country, and session_name. Supports optional driver_number filter. Returns structured TeamRadioResponse.
    def get_driver_radio(
        year: int,
        country: str,
        session_name: str = "Race",
        driver_number: Optional[int] = None
    ) -> TeamRadioResponse:
        """
        **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
        """
        # Get meeting and session info
        meetings = openf1_client.get_meetings(year=year, country_name=country)
        if not meetings:
            return TeamRadioResponse(
                session_name=session_name,
                year=year,
                country=country,
                messages=[],
                total_messages=0
            )
    
        # Get sessions for this meeting
        sessions = openf1_client.get_sessions(year=year, country_name=country, session_name=session_name)
        if not sessions:
            return TeamRadioResponse(
                session_name=session_name,
                year=year,
                country=country,
                messages=[],
                total_messages=0
            )
    
        session = sessions[0]
        session_key = session['session_key']
    
        # Get radio messages
        radio_data = openf1_client.get_team_radio(
            session_key=session_key,
            driver_number=driver_number
        )
    
        # Convert to Pydantic models
        messages = [
            TeamRadioMessage(
                date=msg['date'],
                driver_number=msg['driver_number'],
                session_key=msg['session_key'],
                meeting_key=msg['meeting_key'],
                recording_url=msg.get('recording_url')
            )
            for msg in radio_data
        ]
    
        return TeamRadioResponse(
            session_name=session_name,
            year=year,
            country=country,
            messages=messages,
            total_messages=len(messages)
        )
  • Pydantic models defining the schema for get_driver_radio: TeamRadioMessage for individual messages and TeamRadioResponse for the full response including list of messages.
    class TeamRadioMessage(BaseModel):
        """Team radio message data."""
        date: str = Field(..., description="Timestamp of radio message")
        driver_number: int = Field(..., description="Driver number (1-99)")
        session_key: int = Field(..., description="Session identifier")
        meeting_key: int = Field(..., description="Meeting identifier")
        recording_url: Optional[str] = Field(None, description="URL to audio recording")
    
    
    class TeamRadioResponse(BaseModel):
        """Response for team radio messages."""
        session_name: Optional[str] = Field(None, description="Session name")
        year: Optional[int] = Field(None, description="Year")
        country: Optional[str] = Field(None, description="Country name")
        messages: list[TeamRadioMessage] = Field(..., description="List of radio messages")
        total_messages: int = Field(..., description="Total number of messages")
  • server.py:168-168 (registration)
    Registers the get_driver_radio function as an MCP tool using the FastMCP decorator.
    mcp.tool()(get_driver_radio)

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