# Race Calendar F1 (remote · racecalendar.app)

Anonymous read-only Formula 1 tools, resources, prompts, completion, and interactive dashboard.

- Trust score: 79/100 (medium)
- Change this week: +8
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `racecalendar.app`: 79/100 (this document), [markdown](https://verifymcp.io/servers/app-racecalendar-f1/racecalendar.md), [page](https://verifymcp.io/servers/app-racecalendar-f1/racecalendar)

## Channel facts

- Endpoint: `https://racecalendar.app/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `3.1.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 83/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC is configured correctly; the domain's records validate against the full chain to the root.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 85/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - Tool/resource definitions use about 1598 tokens (~88/item across 18 items; 16 tools + 2 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).
  - Supports UI / widget rendering.

## Install

### Claude

```bash
claude mcp add --transport http app-racecalendar-f1 https://racecalendar.app/mcp
```

### Codex

```toml
[mcp_servers.app-racecalendar-f1]
url = "https://racecalendar.app/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "app-racecalendar-f1": {
      "type": "remote",
      "url": "https://racecalendar.app/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add app-racecalendar-f1 --url https://racecalendar.app/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  app-racecalendar-f1:
    url: "https://racecalendar.app/mcp"
```

### Other

```json
{
  "mcpServers": {
    "app-racecalendar-f1": {
      "type": "http",
      "url": "https://racecalendar.app/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-02 (score 79, +7)

- [functional improvement] Schema quality: unverified → excellent

### 2026-08-01 (score 72, −6)

- [functional regression] Schema quality: excellent → unverified

### 2026-07-31 (score 78, +5)

- [functional improvement] Tool coverage: 86% → 100%
- [functional] Schema quality: good → excellent
- [functional] MCP protocol: Implements a current MCP spec version (2026-07-28).
- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 73, +1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-28 (score 72, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-27 (score 71, +1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-26 (score 70)

First indexed and scored.

## MCP tools (16)

### `get_f1_season_schedule` (~49 tokens)

F1 Season Schedule

Get the verified public Formula 1 schedule for a season, including UTC session times, freshness, results, and canonical links.

Input parameters:

- `year` (integer, required): Formula 1 season year.

Output parameters:

- `canonicalUrl` (string)
- `generatedAt` (string)
- `lastVerifiedAt` (string)
- `raceCount` (integer)
- `races` (array)
- `refreshIntervalSeconds` (integer)
- `source` (string)
- `sourceUrl` (string)
- `staleAfter` (string)
- `year` (integer)

### `get_f1_standings` (~42 tokens)

F1 Standings

Get the public Formula 1 driver and constructor standings for a season with canonical source links.

Input parameters:

- `year` (integer, required): Formula 1 season year.

Output parameters:

- `canonicalUrl` (string)
- `constructors` (array)
- `drivers` (array)
- `sessionKey` (integer)
- `sourceUrl` (string)
- `year` (integer)

### `get_f1_next_event` (~98 tokens)

Next F1 Event

Find the next Formula 1 session or race weekend from a UTC timestamp, including an event already in progress.

Input parameters:

- `from` (string): UTC timestamp to search from. Defaults to the current time.
- `level` (string): Return the next individual session or the next race weekend. Defaults to session.
- `year` (integer): Season to search. Defaults to the season containing the search timestamp, then the following season if needed.

Output parameters:

- `canonicalUrl` (string)
- `event`
- `level` (string)
- `searchedFrom` (string)
- `sourceUrl` (string)
- `year` (integer)

### `get_f1_session_results` (~80 tokens)

F1 Session Results

Get the published classification for one Formula 1 session by season, meeting key, and session key, with positions and available result details.

Input parameters:

- `meetingKey` (integer, required): OpenF1 meeting key for the race weekend.
- `sessionKey` (integer, required): OpenF1 session key.
- `year` (integer, required): Formula 1 season year.

Output parameters:

- `canonicalUrl` (string)
- `meetingKey` (integer)
- `resultCount` (integer)
- `results` (array)
- `sessionKey` (integer)
- `sourceUrl` (string)
- `year` (integer)

### `get_f1_starting_grid` (~83 tokens)

F1 Starting Grid

Get the published starting grid for one Formula 1 session by season, meeting key, and session key; use session results for the final classification.

Input parameters:

- `meetingKey` (integer, required): OpenF1 meeting key for the race weekend.
- `sessionKey` (integer, required): OpenF1 session key.
- `year` (integer, required): Formula 1 season year.

Output parameters:

- `canonicalUrl` (string)
- `entryCount` (integer)
- `meetingKey` (integer)
- `sessionKey` (integer)
- `sourceUrl` (string)
- `startingGrid` (array)
- `year` (integer)

### `get_f1_session_analysis` (~91 tokens)

F1 Session Analysis

Get one strictly typed analysis view for a Formula 1 session: strategy, weather, timeline, or championship implications.

Input parameters:

- `kind` (string, required): Analysis view to return for the selected session.
- `meetingKey` (integer, required): OpenF1 meeting key for the race weekend.
- `sessionKey` (integer, required): OpenF1 session key.
- `year` (integer, required): Formula 1 season year.

Output parameters:

- `analysis`
- `canonicalUrl` (string)
- `generatedAt` (string)
- `hasData` (boolean)
- `meetingKey` (integer)
- `sessionKey` (integer)
- `sourceUrl` (string)
- `year` (integer)

### `get_f1_driver_session_summary` (~94 tokens)

F1 Driver Session Summary

Get one driver's lap, sector, speed, grid, position, and interval summary for a Formula 1 session.

Input parameters:

- `driverNumber` (integer, required): Permanent or event-specific Formula 1 car number.
- `meetingKey` (integer, required): OpenF1 meeting key for the race weekend.
- `sessionKey` (integer, required): OpenF1 session key.
- `year` (integer, required): Formula 1 season year.

Output parameters:

- `averageLap`
- `bestPosition`
- `bestSector1`
- `bestSector2`
- `bestSector3`
- `bestSpeedTrap`
- `canonicalUrl` (string)
- `driver` (object)
- `fastestLap`
- `finalPosition`
- `generatedAt` (string)
- `hasData` (boolean)
- `intervalSamples` (integer)
- `lapCount` (integer)
- `meetingKey` (integer)
- `sessionKey` (integer)
- `sourceUrl` (string)
- `startingPosition`
- `year` (integer)

### `get_f1_race_weekend` (~132 tokens)

F1 Race Weekend

Get one public Formula 1 race weekend by season and exactly one friendly selector: meeting key, round, race name, or slug.

Input parameters:

- `meetingKey` (integer): OpenF1 meeting key for the race weekend.
- `raceName` (string): Human-friendly Grand Prix or race name, matched case-insensitively.
- `round` (integer): Championship round number for the season.
- `slug` (string): Race Calendar race slug, such as round-6-miami-grand-prix or miami-grand-prix.
- `year` (integer, required): Formula 1 season year.

Output parameters:

- `canonicalUrl` (string)
- `raceWeekend` (object)
- `sourceUrl` (string)
- `year` (integer)

### `get_f1_circuit` (~127 tokens)

F1 Circuit Details

Get circuit metadata and normalized track geometry for a race weekend selected by meeting key, round, race name, or slug.

Input parameters:

- `meetingKey` (integer): OpenF1 meeting key for the race weekend.
- `raceName` (string): Human-friendly Grand Prix or race name, matched case-insensitively.
- `round` (integer): Championship round number for the season.
- `slug` (string): Race Calendar race slug, such as round-6-miami-grand-prix or miami-grand-prix.
- `year` (integer, required): Formula 1 season year.

Output parameters:

- `canonicalUrl` (string)
- `circuit` (object)
- `meetingKey` (integer)
- `raceName` (string)
- `round` (integer)
- `sourceUrl` (string)
- `year` (integer)

### `get_f1_race_preview` (~132 tokens)

Spoiler-safe F1 Race Preview

Get a structurally spoiler-safe race-weekend briefing containing schedule and venue context but no classifications, winners, podiums, or result fields.

Input parameters:

- `meetingKey` (integer): OpenF1 meeting key for the race weekend.
- `raceName` (string): Human-friendly Grand Prix or race name, matched case-insensitively.
- `round` (integer): Championship round number for the season.
- `slug` (string): Race Calendar race slug, such as round-6-miami-grand-prix or miami-grand-prix.
- `year` (integer, required): Formula 1 season year.

Output parameters:

- `canonicalUrl` (string)
- `raceWeekend` (object)
- `sourceUrl` (string)
- `spoilerSafe` (boolean)
- `year` (integer)

### `get_f1_live_session` (~98 tokens)

Live F1 Session Status

Get the latest explicitly timestamped status for the current or selected Formula 1 session. Returns unavailable rather than implying stale data is live.

Input parameters:

- `meetingKey` (integer): Optional OpenF1 meeting key. Omit to discover the current live session.
- `sessionKey` (integer): Optional OpenF1 session key. Requires meetingKey when supplied.
- `year` (integer): Season to inspect. Defaults to the current UTC season.

Output parameters:

- `dataDelaySeconds`
- `dataTimestamp`
- `endDate`
- `isLive` (boolean)
- `meetingKey`
- `message`
- `observedAt` (string)
- `sessionKey`
- `sessionKind`
- `sessionName`
- `sourceUrl` (string)
- `startDate`
- `state` (string)
- `year` (integer)

### `get_f1_historical_race_result` (~80 tokens)

Historical race result

Get one complete historical Formula 1 race classification by season and championship round. Use only for a single race; for two or more races, call get_f1_historical_race_results once instead.

Input parameters:

- `round` (integer, required): Championship round number in the historical season.
- `year` (integer, required): Formula 1 season year.

Output parameters:

- `canonicalUrl` (string)
- `generatedAt` (string)
- `race` (object)
- `results` (array)
- `round` (integer)
- `sourceUrl` (string)
- `year` (integer)

### `get_f1_historical_race_results` (~78 tokens)

Historical race results

Get 2 to 8 complete historical Formula 1 race classifications in one consolidated request, with per-race sources and bounded partial failures. Use once for multi-race questions instead of repeating get_f1_historical_race_result.

Input parameters:

- `races` (array, required): Two to eight historical races to retrieve in one request.

Output parameters:

- `races` (array)
- `unavailable` (array)

### `search_f1_history` (~105 tokens)

Search F1 History

Search the Formula 1 history index for drivers, teams, circuits, and races with bounded, cursor-based results.

Input parameters:

- `cursor` (string): Opaque continuation cursor returned by an earlier history search.
- `limit` (integer): Maximum results to return. Defaults to 10 and never exceeds 20.
- `query` (string, required): Driver, team, circuit, or race text to find.
- `types` (array): Optional unique entity types to include in the search.

Output parameters:

- `generatedAt` (string)
- `items` (array)
- `nextCursor`
- `query` (string)
- `sourceUpdatedAt`
- `types` (array)

### `get_f1_updates` (~79 tokens)

Recent F1 Changes

Get recent public schedule, standings, and result changes after an optional timestamp or cursor.

Input parameters:

- `cursor` (string): Opaque continuation cursor returned by an earlier updates request.
- `limit` (integer): Maximum changes to return. Defaults to 20 and never exceeds 50.
- `since` (string): Only return changes after this UTC timestamp.

Output parameters:

- `generatedAt` (string)
- `items` (array)
- `nextCursor`
- `since`

### `compare_f1_competitors` (~85 tokens)

Compare F1 Competitors

Compare two Formula 1 drivers or constructors in one season using sourced standings and explicitly described calculations.

Input parameters:

- `competitorType` (string, required): Compare two drivers or two constructors.
- `left` (string, required): First driver or constructor name to compare.
- `right` (string, required): Second driver or constructor name to compare.
- `year` (integer, required): Formula 1 season year.

Output parameters:

- `comparison` (object)
- `generatedAt` (string)
- `kind` (string)
- `leader` (string)
- `left` (object)
- `methodology` (string)
- `right` (object)
- `source` (object)
- `year` (integer)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/app-racecalendar-f1/racecalendar#diagnostics

## Score history

- 2026-08-03: 79
- 2026-08-02: 79
- 2026-08-01: 72
- 2026-07-31: 78
- 2026-07-30: 73
- 2026-07-29: 72
- 2026-07-28: 72
- 2026-07-27: 71
- 2026-07-26: 70

## Links

- Remote endpoint: https://racecalendar.app/mcp
- Website: https://racecalendar.app/f1
- Changelog RSS feed: https://verifymcp.io/servers/app-racecalendar-f1/racecalendar/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/app-racecalendar-f1/racecalendar/changelog.json
- HTML version of this page: https://verifymcp.io/servers/app-racecalendar-f1/racecalendar
