Skip to main content
Glama

Race Calendar F1

Server Details

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

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 55 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4.1/5.0

Scored across 15 tools

Disambiguation4/5

Most tools target clearly distinct F1 objects, but the cluster of result/classification tools (historical single, historical batch, race classification, session results) has overlapping purposes. Descriptions and parameter differences mostly resolve ambiguity, so misselection should be rare.

Naming Consistency5/5

All tool names follow a consistent [verb]_f1_[object] snake_case pattern, with get_ as the dominant verb and compare_/search_ as natural exceptions. Pluralization like race_result vs race_results is regular and predictable.

Tool Count4/5

Fifteen tools sits at the upper edge of the ideal range and matches the broad F1 domain well. A few near-duplicate classification/result tools could be consolidated, but the count is not excessive.

Completeness5/5

The tool set covers the full race information lifecycle: schedule, weekend, circuit, preview, live session, next event, classifications, grid, standings, historical results, updates, and search. No critical dead ends are apparent for the stated calendar/race domain.

Available Tools

15 tools
compare_f1_competitorsCompare F1 CompetitorsA
Read-onlyIdempotent
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
leftYesFirst driver or constructor name to compare.
yearYesFormula 1 season year.
rightYesSecond driver or constructor name to compare.
competitorTypeYesCompare two drivers or two constructors.

Output Schema

ParametersJSON Schema
NameRequiredDescription
kindYes
leftYes
yearYes
rightYes
leaderYes
sourceYes
comparisonYes
generatedAtYes
methodologyYes

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, covering the safety profile. The description adds that the comparison is 'using sourced standings and explicitly described calculations,' which gives context about data provenance and calculation transparency, but it does not disclose what specific calculations are performed or how the output is structured. This adds some value beyond annotations but remains high-level.

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 a single sentence with the essential purpose front-loaded ('Compare two Formula 1 drivers or constructors...'), followed by a subordinate clause explaining data source and calculation transparency. It is concise with no filler, though it lacks a second sentence to explicitly differentiate usage scenarios, which would have made it stronger.

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 that the tool has a fully described input schema, an output schema, and annotations covering safety (read-only, idempotent), the description adds the missing context that the comparison is based on sourced standings and includes explicitly described calculations. This is sufficient for an agent to understand the tool's purpose and invoke it correctly, though it does not mention edge cases or limitations.

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

Parameters3/5

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

Schema description coverage is 100%, so each parameter (left, right, year, competitorType) is already well documented. The description does not provide any additional meaning about the parameters beyond what the schema states; it merely restates that two drivers/constructors are compared. Therefore, this dimension is at baseline 3 because the schema already carries the parameter semantics.

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 states a specific verb ('Compare') with a clear resource ('two Formula 1 drivers or constructors') and scope ('in one season'). It distinguishes this tool from its siblings, which all handle individual race data, schedules, or standings, not head-to-head comparisons. The additional phrase 'using sourced standings and explicitly described calculations' further clarifies the nature of the operation.

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 gives clear context (compare two entities within a season) and implies this is the tool for head-to-head comparisons, but it does not explicitly rule out alternatives or mention when not to use it. Given the sibling list, an agent can infer that this is the only comparison tool, but the description lacks an explicit 'use this when...' statement.

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

get_f1_circuitF1 Circuit DetailsA
Read-onlyIdempotent
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
slugNoRace Calendar race slug, such as round-6-miami-grand-prix or miami-grand-prix.
yearYesFormula 1 season year.
roundNoChampionship round number for the season.
raceNameNoHuman-friendly Grand Prix or race name, matched case-insensitively.
meetingKeyNoOpenF1 meeting key for the race weekend.

Output Schema

ParametersJSON Schema
NameRequiredDescription
yearYes
roundYes
circuitYes
raceNameYes
sourceUrlYes
meetingKeyYes
canonicalUrlYes

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds only functional context ('normalized track geometry') and does not disclose extra behavioral traits such as error handling, data source, or output conventions, though the output schema helps fill that 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 a single, front-loaded sentence with no filler. Every phrase earns its place by conveying the resource, the purpose, and the selection mechanism without redundancy.

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 rich input schema, full schema description coverage, output schema presence, and safety-related annotations, the description is sufficient for correct tool invocation. It identifies what is returned, how the race weekend is selected, and leaves parameter details to the schema where they already live.

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

Parameters3/5

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

Schema description coverage is 100%, so the input schema already documents every parameter including selector alternatives and constraints. The description names the selector types but adds no meaning beyond what the schema provides, so a baseline score of 3 is appropriate.

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 states a specific verb and resource: 'Get circuit metadata and normalized track geometry'. It also specifies the selection scope ('race weekend selected by meeting key, round, race name, or slug'), making it clearly distinct from sibling tools that cover race results, standings, or 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 clearly situates the tool as the way to obtain circuit metadata/track geometry for a race weekend, and the schema reinforces that exactly one selector must be used. It does not explicitly name alternatives or exclusion conditions, but the context is clear enough for an agent to choose this tool over the listed siblings.

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

get_f1_historical_race_resultHistorical race resultA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearYesFormula 1 season year.
roundYesChampionship round number in the historical season.

Output Schema

ParametersJSON Schema
NameRequiredDescription
raceYes
yearYes
roundYes
resultsYes
sourceUrlYes
generatedAtYes
canonicalUrlYes

TDQS

A4.3/5.0
Behavior3/5

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

The annotations already carry the read-only, idempotent, and non-destructive safety profile, so the description does not need to repeat those. It adds the 'complete' result quality and historical scope, but no additional non-obvious behavioral details such as error cases, rate limits, or data freshness. This is adequate but not rich.

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?

Two short sentences with zero filler. The tool's core purpose is front-loaded, and the alternative-tool guidance is placed directly after the main statement, making it efficient for an agent to parse.

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 two-parameter historical lookup with a complete input schema, an output schema, and annotations covering safety and idempotency, the description provides everything needed to call the tool correctly. It even handles the main ambiguity by directing multi-race requests to the plural sibling.

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

Parameters3/5

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

Schema description coverage is 100%, with both year and round already documented. The description's 'season and championship round' phrasing matches the parameters but adds no new syntactic or semantic detail beyond the schema, so baseline 3 applies.

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 names a specific verb ('Get'), a precise resource ('one complete historical Formula 1 race classification'), and the two identifying dimensions ('season and championship round'). It also clearly distinguishes itself from the plural sibling by emphasizing 'single race'.

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?

Explicitly states when to use this tool: only for a single race. It also names the exact alternative for two or more races (get_f1_historical_race_results), leaving no ambiguity about routing.

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

get_f1_historical_race_resultsHistorical race resultsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
racesYesTwo to eight historical races to retrieve in one request.

Output Schema

ParametersJSON Schema
NameRequiredDescription
racesYes
unavailableYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already mark this as readOnly, idempotent, and non-destructive. The description adds valuable behavior beyond annotations: per-race source attribution and bounded partial failures, which tell the agent what to expect when one requested race is unavailable. It does not define 'bounded' precisely, but the disclosure is still meaningful.

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?

Two sentences with no filler: the first front-loads the operation, scope, and reliability behavior, and the second gives the routing rule. Every clause contributes.

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?

For a read-only batch tool with a robust input schema, an output schema, and sibling context, the description covers what the tool does, when to choose it, and the contract for partial failures. The only minor gap is not spelling out how bounded partial failures are represented in the output, but the output schema likely covers that.

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

Parameters3/5

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

Schema coverage is 100%, and the single races parameter already documents min/max items and per-item year/round requirements. The description mostly restates the 2-to-8 constraint, so it adds little beyond 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?

States a specific verb ('Get'), exact resource ('complete historical Formula 1 race classifications'), and the cardinality ('2 to 8') in one consolidated request. It also explicitly distinguishes itself from the singular sibling get_f1_historical_race_result.

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?

Gives an explicit when-to-use rule ('Use once for multi-race questions') and the alternative to avoid ('instead of repeating get_f1_historical_race_result'). This removes selection ambiguity without requiring the agent to infer from the name.

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

get_f1_live_sessionLive F1 Session StatusA
Read-onlyIdempotent
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoSeason to inspect. Defaults to the current UTC season.
meetingKeyNoOptional OpenF1 meeting key. Omit to discover the current live session.
sessionKeyNoOptional OpenF1 session key. Requires meetingKey when supplied.

Output Schema

ParametersJSON Schema
NameRequiredDescription
yearYes
stateYes
isLiveYes
endDateYes
messageYes
sourceUrlYes
startDateYes
meetingKeyYes
observedAtYes
sessionKeyYes
sessionKindYes
sessionNameYes
dataTimestampYes
dataDelaySecondsYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive behavior. The description adds valuable context beyond that: results are explicitly timestamped and the tool returns 'unavailable' rather than presenting stale data as live, which is meaningful behavioral disclosure.

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?

Two sentences carry all necessary information with no fluff. The core behavior is front-loaded and the stale-data handling is conveyed efficiently.

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 output schema, complete parameter descriptions, and annotations covering safety, the description is sufficient for an agent to select and call this tool correctly. No essential behavioral or selection information is missing.

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

Parameters3/5

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

Schema description coverage is 100%, with all three parameters meaningfully documented. The description adds no parameter-specific detail, so the baseline score of 3 applies.

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 states a clear verb and resource: retrieving the latest explicitly timestamped status for a current or selected F1 session. It distinguishes itself from historical/results siblings by emphasizing live status and stale-data semantics.

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 clearly indicates this is for current or selected sessions, and the schema adds practical guidance such as omitting meetingKey to discover the live session and requiring meetingKey with sessionKey. It does not explicitly name sibling alternatives or exclusions, but the intended context is clear.

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

get_f1_next_eventNext F1 EventA
Read-onlyIdempotent
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
fromNoUTC timestamp to search from. Defaults to the current time.
yearNoSeason to search. Defaults to the season containing the search timestamp, then the following season if needed.
levelNoReturn the next individual session or the next race weekend. Defaults to session.session

Output Schema

ParametersJSON Schema
NameRequiredDescription
yearYes
eventYes
levelYes
sourceUrlYes
canonicalUrlYes
searchedFromYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already establish read-only, idempotent, non-destructive behavior, so the bar is lower. The description adds the useful boundary trait that an ongoing event counts as the next result and that the lookup is anchored to a UTC instant.

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?

A single front-loaded sentence with no filler. Every element — resource, instrument, UTC anchor, inclusivity — carries meaning.

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?

With an output schema, full parameter documentation, and safety annotations, the definition contains everything needed to invoke the tool. It is missing only explicit guidance about sibling alternatives, reflected in usage_guidelines.

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

Parameters3/5

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

Schema documentation covers 100% of the parameters, so the baseline is 3. The description's mention of 'session or race weekend' lightly echoes the level enum but adds no semantic detail beyond 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 uses the specific verb 'Find' on a well-defined resource ('next Formula 1 session or race weekend') and anchors it to a UTC timestamp. 'Next' and 'including an event already in progress' separate it from schedule, live, and historical sibling tools without needing the schema.

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 conveys a clear temporal use case (future event from a UTC timestamp), so an agent can infer when to call it. However, it never names alternatives or says when not to use this tool, leaving sibling routing to inference.

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

get_f1_race_classificationF1 Race ClassificationA
Read-onlyIdempotent
Inspect

Get a published F1DB race, qualifying, or sprint classification by season and a friendly race selector, without requiring meeting or session keys.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugNoRace Calendar race slug, such as round-6-miami-grand-prix or miami-grand-prix.
yearYesFormula 1 season year.
roundNoChampionship round number for the season.
raceNameNoHuman-friendly Grand Prix or race name, matched case-insensitively.
meetingKeyNoOpenF1 meeting key for the race weekend.
classificationNoPublished F1DB classification to return. Defaults to the Grand Prix race.race

Output Schema

ParametersJSON Schema
NameRequiredDescription
yearYes
roundYes
sourceYes
resultsYes
raceNameYes
availableYes
sourceUrlYes
meetingKeyYes
sessionKeyYes
resultCountYes
canonicalUrlYes
classificationYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds context by calling the classification 'published', implying stable, non-live data, and highlights that it does not require keys. These are useful behavioral additions beyond annotations, though it doesn't describe error handling or edge cases like missing data.

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 a single, front-loaded sentence with zero redundancy. It conveys the action, scope, and key differentiator efficiently, placing the core action first. No unnecessary words or filler.

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 a rich input schema (with property descriptions and oneOf), an output schema (has_output_schema=true), and strong annotations, the description doesn't need to repeat those details. It adds the essential differentiator (no keys needed) and the 'published' aspect. It could arguably mention that one of the selector fields is required, but the schema's oneOf already handles that. Overall, it is sufficient for an agent to call it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, with each parameter documented (year, round, raceName, slug, meetingKey, classification) and the oneOf constraint explicit. The description adds only the phrase 'friendly race selector', which is a high-level summary of the alternative selectors but doesn't introduce new details. Per the baseline rule, a 3 is appropriate when the schema carries the load.

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 states a specific verb ('Get'), a precise resource ('published F1DB race, qualifying, or sprint classification'), and the selection criteria ('by season and a friendly race selector'). It also distinguishes itself from alternatives by noting it works 'without requiring meeting or session keys', which differentiates it from sibling tools like get_f1_session_results that likely need those keys. The purpose is unambiguous and scoped.

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 implies a clear usage context: use this tool when you want a classification and lack meeting/session keys, offering a friendlier selector. However, it does not explicitly name alternatives or state when NOT to use it (e.g., when you need live session data or have keys and prefer direct lookup). The hint is strong but not fully explicit.

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

get_f1_race_previewSpoiler-safe F1 Race PreviewA
Read-onlyIdempotent
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
slugNoRace Calendar race slug, such as round-6-miami-grand-prix or miami-grand-prix.
yearYesFormula 1 season year.
roundNoChampionship round number for the season.
raceNameNoHuman-friendly Grand Prix or race name, matched case-insensitively.
meetingKeyNoOpenF1 meeting key for the race weekend.

Output Schema

ParametersJSON Schema
NameRequiredDescription
yearYes
sourceUrlYes
raceWeekendYes
spoilerSafeYes
canonicalUrlYes

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, but the description adds critical behavioral context beyond the annotations: it guarantees the output is structurally free of results, winners, podiums, and classifications. This is a non-obvious behavioral guarantee that prevents the agent from calling this tool when results are requested.

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 a single, well-structured sentence that front-loads the key differentiator ('structurally spoiler-safe') and then specifies the content (schedule and venue context) and the explicit exclusions. Every word earns its place with no redundancy.

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 read-only, idempotent briefing tool with no nested objects and a rich output schema (though not shown here), the description fully captures the tool's scope and safety guarantees. There is no missing information an agent would need to invoke it correctly—parameter details are in the schema, and the behavioral guarantee is explicit.

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

Parameters3/5

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

The input schema has 100% description coverage, so all five parameters are individually documented with types, formats, and constraints. The description adds no additional parameter semantics, which is acceptable given the schema's thoroughness. Baseline of 3 is appropriate.

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 states a specific action ('Get') and resource ('race-weekend briefing') with a distinctive attribute ('structurally spoiler-safe'). It clearly differentiates from sibling result-heavy tools like get_f1_race_classification and get_f1_historical_race_result by explicitly excluding classifications, winners, podiums, or result fields.

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 clearly implies when to use this tool: when the user needs schedule and venue context without spoilers. It doesn't explicitly name alternative tools or state when not to use it, but the exclusion of results makes the usage context clear. Sibling names and the absence of results are enough for a competent agent to route correctly.

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

get_f1_race_weekendF1 Race WeekendA
Read-onlyIdempotent
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
slugNoRace Calendar race slug, such as round-6-miami-grand-prix or miami-grand-prix.
yearYesFormula 1 season year.
roundNoChampionship round number for the season.
raceNameNoHuman-friendly Grand Prix or race name, matched case-insensitively.
meetingKeyNoOpenF1 meeting key for the race weekend.

Output Schema

ParametersJSON Schema
NameRequiredDescription
yearYes
sourceUrlYes
raceWeekendYes
canonicalUrlYes

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare the operation as read-only, idempotent, and non-destructive, so the description's 'public' qualifier and 'exactly one' constraint add modest context beyond the annotations. It doesn't disclose return behavior, errors, or rate limits, but the annotation coverage lowers the burden; this is acceptable but not rich.

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 two sentences long, leads with the verb and resource, and packs the key selector constraint into the first sentence. No filler or redundant phrasing; every word adds information.

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?

The description communicates the core selection logic (one season + exactly one selector) and the fact that the resource is public and singular. Given the rich input schema, a oneOf constraint, and an output schema, the description is sufficient for an agent to invoke the tool correctly; no critical missing information.

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

Parameters3/5

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

Schema description coverage is 100%, meaning all five parameters are already described with types, constraints, and examples. The description's listing of 'meeting key, round, race name, or slug' merely names the four selector properties without adding new semantic detail. This matches the baseline 3 for high schema coverage.

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 states a specific verb ('Get'), a distinct resource ('one public Formula 1 race weekend'), and a clear selection constraint ('by season and exactly one friendly selector'). This distinguishes it from sibling tools like get_f1_season_schedule (which lists many weekends) or get_f1_race_classification (a different resource), even though no sibling is named.

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 the tool: to retrieve a single race weekend by season and one of four selectors. However, it doesn't explicitly state when to prefer an alternative, nor does it mention exclusions or fallback tools. This is 'clear context, no exclusions'.

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

get_f1_season_scheduleF1 Season ScheduleA
Read-onlyIdempotent
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
yearYesFormula 1 season year.

Output Schema

ParametersJSON Schema
NameRequiredDescription
yearYes
racesYes
sourceYes
raceCountYes
sourceUrlYes
staleAfterYes
generatedAtYes
canonicalUrlYes
lastVerifiedAtYes
refreshIntervalSecondsYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already indicate read-only, non-destructive, and idempotent behavior. The description adds value by mentioning 'verified public', UTC times, freshness, and canonical links, which are useful behavioral details not covered by 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 a single, concise sentence that front-loads the core purpose and lists key content. It is 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 simple single-parameter input, the annotations, and the presence of an output schema, the description provides sufficient context. It could be slightly more explicit about return format, but the output schema covers that.

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

Parameters3/5

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

Schema coverage is 100% with a clear description ('Formula 1 season year') and range. The description does not add extra parameter details, so the baseline 3 applies.

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 returns the verified public F1 schedule for a season, including session times, freshness, results, and links. It distinguishes from siblings like race-specific or live tools, though it doesn't explicitly name alternatives.

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 implies this is for season-wide schedule information, which is distinct from race-specific or live tools. It doesn't explicitly state when not to use it, but the context is sufficient for an agent to infer the appropriate use case.

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

get_f1_session_resultsF1 Session ResultsA
Read-onlyIdempotent
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
yearYesFormula 1 season year.
meetingKeyYesOpenF1 meeting key for the race weekend.
sessionKeyYesOpenF1 session key.

Output Schema

ParametersJSON Schema
NameRequiredDescription
yearYes
sourceYes
resultsYes
sourceUrlYes
meetingKeyYes
sessionKeyYes
resultCountYes
canonicalUrlYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and the description's 'Get' is consistent. It adds the 'published F1DB classification' qualifier, implying stable/published data rather than live results. No contradictions or additional behavioral details (rate limits, auth, pagination) are provided.

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?

Single sentence, front-loaded with the action and resource, and every phrase earns its place. No filler or redundancy.

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 simple three-key lookup with full schema coverage, an output schema, and safe read-only/idempotent annotations, the description provides everything needed to invoke it. Missing context like how to discover the keys is external, not a gap in the definition.

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

Parameters3/5

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

Schema description coverage is 100% – year, meetingKey, and sessionKey each have descriptive text. The description repeats the three keys but adds no syntax, format, or relationship detail beyond the schema, so the baseline 3 applies.

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?

States a specific verb ('Get') and resource ('published F1DB classification for one Formula 1 session'), and identifies the selection keys (season, meeting key, session key). It does not explicitly contrast with sibling tools like get_f1_race_classification or get_f1_starting_grid, but the session-specific scope is clear.

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?

No guidance on when to prefer this tool over siblings; no exclusions or alternatives are mentioned. The key-based lookup is an implicit trigger, but the description does not state when this should be used versus get_f1_race_classification or get_f1_live_session.

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

get_f1_standingsF1 StandingsA
Read-onlyIdempotent
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
yearYesFormula 1 season year.

Output Schema

ParametersJSON Schema
NameRequiredDescription
yearYes
driversYes
sourceUrlYes
sessionKeyYes
canonicalUrlYes
constructorsYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the agent knows this is a safe read operation. The description adds the specificity that the data is 'public' and includes 'canonical source links', giving context about the data provenance and output expectation beyond what annotations provide. However, it does not describe pagination or any rate limits, but those are not critical for a simple standings lookup.

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 a single, densely informative sentence that front-loads the action and scope. Every word earns its place—no filler or redundancy. It is optimally brief while conveying the essential 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?

For a simple parameterized tool with an output schema (as indicated by CONTEXT), the description provides the key aspects: what data is returned (driver and constructor standings) and the scope (per season with links). The existence of an output schema means the agent can rely on it for return value details. The only minor gap is the lack of explicit usage timing, but the overall specificity is sufficient for a competent agent.

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

Parameters3/5

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

The input schema covers the single parameter 'year' with a description and limits (1950-2100). The description does not add additional meaning beyond the schema, such as the significance of year ranges or specific season formats (e.g., calendar year vs. championship year). Since schema coverage is 100%, the baseline of 3 is appropriate—no extra behavior is added but nothing is lacking either.

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 a specific verb ('Get'), resource ('driver and constructor standings'), and scope ('for a season' plus 'public...with canonical source links'). It is distinct from sibling tools, which target races, circuits, and historical race results, leaving no ambiguity about which tool to use for standings.

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 does not explicitly state when to use this tool versus alternatives, though its purpose is clear enough that an agent can infer the use case. It lacks guidance on prerequisites (if any) or situations where a sibling tool (e.g., get_f1_historical_race_results) might be preferable, leaving room for misinterpretation in ambiguous contexts.

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

get_f1_starting_gridF1 Starting GridA
Read-onlyIdempotent
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
yearYesFormula 1 season year.
meetingKeyYesOpenF1 meeting key for the race weekend.
sessionKeyYesOpenF1 session key.

Output Schema

ParametersJSON Schema
NameRequiredDescription
yearYes
sourceYes
sourceUrlYes
entryCountYes
meetingKeyYes
sessionKeyYes
canonicalUrlYes
startingGridYes

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is established. The description adds useful context that the data is the 'published' starting grid rather than live or provisional, but it does not disclose behaviors such as missing grids for unpublished sessions or error cases. This is adequate but not rich.

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 entire description is one tightly packed sentence that front-loads the main action and resource, then adds a useful scoping caveat. There is no filler or redundant restatement of structured fields.

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 read-only lookup tool with three fully documented parameters, a safety profile in annotations, and an output schema, the description covers the essential invocation context. It says what is returned (starting grid), how to select the session, and where to go for the final classification.

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

Parameters3/5

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

Schema description coverage is 100%, with all three parameters (year, meetingKey, sessionKey) individually documented. The description restates these keys in prose but adds no additional semantics beyond what the schema already provides, so the baseline of 3 is appropriate.

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 states a specific verb and resource: 'Get the published F1DB starting grid for one Formula 1 session.' It clearly distinguishes this tool from sibling result/classification tools by emphasizing 'starting grid' and by noting that final classification belongs to session results.

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 an explicit usage directive: 'use session results for the final classification.' This tells the agent when to prefer a different tool, although it does not enumerate broader conditions or alternative tools beyond that one case.

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

get_f1_updatesRecent F1 ChangesA
Read-onlyIdempotent
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum changes to return. Defaults to 20 and never exceeds 50.
sinceNoOnly return changes after this UTC timestamp.
cursorNoOpaque continuation cursor returned by an earlier updates request.

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYes
sinceYes
nextCursorYes
generatedAtYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false. The description adds value by noting the data is public and that results are change-oriented with timestamp/cursor-based incremental behavior. It does not mention rate limits or auth, but the public/read-only framing reduces the need.

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 a single sentence with the main purpose front-loaded and the optional filter mechanism at the end. It contains no filler or redundant restatement of the title.

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?

With a full output schema, complete parameter descriptions, and protective annotations, the description provides enough context for correct invocation. The only minor gap is not explaining whether since and cursor may be combined, but the schema's cursor description implies it is a continuation from an earlier request.

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

Parameters3/5

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

Schema coverage is 100%: limit, since, and cursor all have individual descriptions. The description only restates that the timestamp/cursor are optional, adding no semantic meaning beyond the schema. Baseline 3 is appropriate.

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 uses a specific verb, 'Get', and names the resource: 'recent public schedule, standings, and result changes' plus the optional timestamp/cursor scope. This clearly differentiates it from sibling snapshot tools like get_f1_standings and get_f1_season_schedule.

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 phrasing 'recent ... changes after an optional timestamp or cursor' clearly implies this is the delta/incremental-update tool, as opposed to full-state sibling tools. It does not explicitly name alternatives or give when-not-to-use conditions, but the context is strong enough for an agent to route correctly.

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

search_f1_historySearch F1 HistoryA
Read-onlyIdempotent
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum results to return. Defaults to 10 and never exceeds 20.
queryYesDriver, team, circuit, or race text to find.
typesNoOptional unique entity types to include in the search.
cursorNoOpaque continuation cursor returned by an earlier history search.

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYes
queryYes
typesYes
nextCursorYes
generatedAtYes
sourceUpdatedAtYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already establish that the tool is read-only, idempotent, and non-destructive. The description adds useful behavioral context beyond annotations by mentioning 'bounded, cursor-based results,' which signals pagination and result limits. It does not detail edge cases such as empty results or cursor expiration, but the core behavior is transparent.

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?

A single front-loaded sentence conveys the action, resource, scope, and a key behavioral trait (bounded cursor-based results). There is no filler, repetition, or extraneous detail; every word earns its place.

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?

For a 4-parameter search tool with full schema descriptions, a rich output schema, and annotations covering safety, the description covers the essential scoping and pagination behavior. The only notable omission is explicit guidance on choosing this tool over specific getter siblings, which is more of a usage-guideline gap.

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

Parameters3/5

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

Schema description coverage is 100%, and every parameter already has a clear description, including default/max for limit, allowed values for types, and the opaque cursor semantics. The description's mention of 'drivers, teams, circuits, and races' mirrors the types enum rather than adding new meaning, so the value-added is minimal.

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 names a specific action ('Search'), a specific resource ('the Formula 1 history index'), and a clear scope ('drivers, teams, circuits, and races'). The phrase 'bounded, cursor-based results' also distinguishes it from sibling tools that retrieve specific entities rather than performing a search.

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 when to use the tool: when searching broadly across the history index. However, it does not explicitly state when not to use it or name alternatives like get_f1_circuit or get_f1_historical_race_result for direct lookups. The usage context is inferable but not spelled out.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 15 tool updates
    • Changedcompare_f1_competitors4 fields changed
      • removedOutput schema / properties / left / properties / nationality / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / left / properties / nationality / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / right / properties / nationality / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / right / properties / nationality / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedget_f1_circuit6 fields changed
      • removedOutput schema / properties / circuit / properties / countryCode / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / circuit / properties / countryCode / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / circuit / properties / imageUrl / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / circuit / properties / imageUrl / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / circuit / properties / type / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / circuit / properties / type / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedget_f1_historical_race_result15 fields changed
      • removedOutput schema / properties / race / properties / circuit / properties / latitude / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / race / properties / circuit / properties / latitude / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / race / properties / circuit / properties / longitude / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / race / properties / circuit / properties / longitude / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / race / properties / time / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / race / properties / time / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / results / items / properties / carNumber / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / results / items / properties / carNumber / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / results / items / properties / driver / properties / code / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / results / items / properties / driver / properties / code / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / results / items / properties / driver / properties / permanentNumber / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / results / items / properties / driver / properties / permanentNumber / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / results / items / properties / fastestLap / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "averageSpeedKph": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      },
        -      "lap": {
        -        "anyOf": [
        -          {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      },
        -      "rank": {
        -        "anyOf": [
        -          {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      },
        -      "time": {
        -        "anyOf": [
        -          {
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      }
        -    },
        -    "required": [
        -      "lap",
        -      "rank",
        -      "time",
        -      "averageSpeedKph"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "averageSpeedKph": {
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "lap": {
        +        "anyOf": [
        +          {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "rank": {
        +        "anyOf": [
        +          {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "time": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      }
        +    },
        +    "required": [
        +      "lap",
        +      "rank",
        +      "time",
        +      "averageSpeedKph"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / results / items / properties / time / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / results / items / properties / time / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedget_f1_historical_race_results15 fields changed
      • removedOutput schema / properties / races / items / properties / race / properties / circuit / properties / latitude / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / races / items / properties / race / properties / circuit / properties / latitude / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / races / items / properties / race / properties / circuit / properties / longitude / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / races / items / properties / race / properties / circuit / properties / longitude / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / races / items / properties / race / properties / time / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / races / items / properties / race / properties / time / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / races / items / properties / results / items / properties / carNumber / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / races / items / properties / results / items / properties / carNumber / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / races / items / properties / results / items / properties / driver / properties / code / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / races / items / properties / results / items / properties / driver / properties / code / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / races / items / properties / results / items / properties / driver / properties / permanentNumber / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / races / items / properties / results / items / properties / driver / properties / permanentNumber / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / races / items / properties / results / items / properties / fastestLap / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "averageSpeedKph": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      },
        -      "lap": {
        -        "anyOf": [
        -          {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      },
        -      "rank": {
        -        "anyOf": [
        -          {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      },
        -      "time": {
        -        "anyOf": [
        -          {
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      }
        -    },
        -    "required": [
        -      "lap",
        -      "rank",
        -      "time",
        -      "averageSpeedKph"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "averageSpeedKph": {
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "lap": {
        +        "anyOf": [
        +          {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "rank": {
        +        "anyOf": [
        +          {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "time": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      }
        +    },
        +    "required": [
        +      "lap",
        +      "rank",
        +      "time",
        +      "averageSpeedKph"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / races / items / properties / results / items / properties / time / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / races / items / properties / results / items / properties / time / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedget_f1_live_session10 fields changed
      • removedOutput schema / properties / dataTimestamp / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / dataTimestamp / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / endDate / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / endDate / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / message / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / message / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / sessionName / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / sessionName / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / startDate / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / startDate / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedget_f1_next_event1 field changed
      • changedInput schema / properties / from / pattern
        Previous value: -"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"New value: +"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
    • Changedget_f1_race_classification14 fields changed
      • removedOutput schema / properties / results / items / properties / constructorName / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / results / items / properties / constructorName / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / results / items / properties / driverName / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / results / items / properties / driverName / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / results / items / properties / duration / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / results / items / properties / duration / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / results / items / properties / gapToLeader / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / results / items / properties / gapToLeader / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / results / items / properties / headshotUrl / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / results / items / properties / headshotUrl / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / results / items / properties / points / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / results / items / properties / points / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / results / items / properties / positionLabel / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / results / items / properties / positionLabel / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedget_f1_race_preview6 fields changed
      • removedOutput schema / properties / raceWeekend / properties / countryCode / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / raceWeekend / properties / countryCode / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / raceWeekend / properties / officialName / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / raceWeekend / properties / officialName / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / raceWeekend / properties / statusNote / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / raceWeekend / properties / statusNote / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedget_f1_race_weekend14 fields changed
      • removedOutput schema / properties / raceWeekend / properties / countryCode / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / raceWeekend / properties / countryCode / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / raceWeekend / properties / officialName / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / raceWeekend / properties / officialName / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / raceWeekend / properties / recap / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "detail": {
        -        "anyOf": [
        -          {
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      },
        -      "summary": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "summary",
        -      "detail"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "detail": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "summary": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "summary",
        +      "detail"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / raceWeekend / properties / resultHighlights / items / properties / constructorName / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / raceWeekend / properties / resultHighlights / items / properties / constructorName / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / raceWeekend / properties / resultHighlights / items / properties / driverName / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / raceWeekend / properties / resultHighlights / items / properties / driverName / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / raceWeekend / properties / resultSummary / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / raceWeekend / properties / resultSummary / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / raceWeekend / properties / statusNote / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / raceWeekend / properties / statusNote / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / raceWeekend / properties / winner / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "constructorName": {
        -        "anyOf": [
        -          {
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      },
        -      "driverName": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "driverName",
        -      "constructorName"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "constructorName": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "driverName": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "driverName",
        +      "constructorName"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedget_f1_season_schedule7 fields changed
      • removedOutput schema / properties / races / items / properties / countryCode / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / races / items / properties / countryCode / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / races / items / properties / resultSummary / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / races / items / properties / resultSummary / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / races / items / properties / statusNote / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / races / items / properties / statusNote / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / races / items / properties / winner / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "constructorName": {
        -        "anyOf": [
        -          {
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      },
        -      "driverName": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "driverName",
        -      "constructorName"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "constructorName": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "driverName": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "driverName",
        +      "constructorName"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedget_f1_session_results14 fields changed
      • removedOutput schema / properties / results / items / properties / constructorName / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / results / items / properties / constructorName / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / results / items / properties / driverName / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / results / items / properties / driverName / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / results / items / properties / duration / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / results / items / properties / duration / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / results / items / properties / gapToLeader / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / results / items / properties / gapToLeader / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / results / items / properties / headshotUrl / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / results / items / properties / headshotUrl / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / results / items / properties / points / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / results / items / properties / points / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / results / items / properties / positionLabel / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / results / items / properties / positionLabel / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedget_f1_standings8 fields changed
      • removedOutput schema / properties / constructors / items / properties / colour / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / constructors / items / properties / colour / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / constructors / items / properties / logoUrl / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / constructors / items / properties / logoUrl / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / drivers / items / properties / driverName / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / drivers / items / properties / driverName / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / drivers / items / properties / headshotUrl / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / drivers / items / properties / headshotUrl / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedget_f1_starting_grid8 fields changed
      • removedOutput schema / properties / startingGrid / items / properties / constructorName / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / startingGrid / items / properties / constructorName / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / startingGrid / items / properties / driverName / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / startingGrid / items / properties / driverName / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / startingGrid / items / properties / headshotUrl / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / startingGrid / items / properties / headshotUrl / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / startingGrid / items / properties / lapDuration / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / startingGrid / items / properties / lapDuration / type
        Added value: +[
        +  "number",
        +  "null"
        +]
    • Changedget_f1_updates5 fields changed
      • changedInput schema / properties / since / pattern
        Previous value: -"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"New value: +"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
      • removedOutput schema / properties / nextCursor / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / nextCursor / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / since / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / since / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedsearch_f1_history4 fields changed
      • removedOutput schema / properties / nextCursor / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / nextCursor / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / sourceUpdatedAt / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / sourceUpdatedAt / type
        Added value: +[
        +  "string",
        +  "null"
        +]
  2. 2 tool updates
    • Changedget_f1_historical_race_result1 field changed
      • changedOutput schema / properties / results / items / properties
        Previous value: -"[Object: undefined]"New value: +{
        +  "carNumber": {
        +    "anyOf": [
        +      {
        +        "type": "string"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ]
        +  },
        +  "constructor": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "id": {
        +        "type": "string"
        +      },
        +      "name": {
        +        "type": "string"
        +      },
        +      "nationality": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "id",
        +      "name",
        +      "nationality"
        +    ],
        +    "type": "object"
        +  },
        +  "driver": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "code": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "id": {
        +        "type": "string"
        +      },
        +      "name": {
        +        "type": "string"
        +      },
        +      "nationality": {
        +        "type": "string"
        +      },
        +      "permanentNumber": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      }
        +    },
        +    "required": [
        +      "id",
        +      "name",
        +      "code",
        +      "nationality",
        +      "permanentNumber"
        +    ],
        +    "type": "object"
        +  },
        +  "fastestLap": {
        +    "anyOf": [
        +      {
        +        "additionalProperties": false,
        +        "properties": {
        +          "averageSpeedKph": {
        +            "anyOf": [
        +              {
        +                "type": "number"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "lap": {
        +            "anyOf": [
        +              {
        +                "maximum": 9007199254740991,
        +                "minimum": -9007199254740991,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "rank": {
        +            "anyOf": [
        +              {
        +                "maximum": 9007199254740991,
        +                "minimum": -9007199254740991,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "time": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [
        +          "lap",
        +          "rank",
        +          "time",
        +          "averageSpeedKph"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ]
        +  },
        +  "grid": {
        +    "anyOf": [
        +      {
        +        "maximum": 9007199254740991,
        +        "minimum": -9007199254740991,
        +        "type": "integer"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ]
        +  },
        +  "laps": {
        +    "anyOf": [
        +      {
        +        "maximum": 9007199254740991,
        +        "minimum": -9007199254740991,
        +        "type": "integer"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ]
        +  },
        +  "points": {
        +    "type": "number"
        +  },
        +  "position": {
        +    "anyOf": [
        +      {
        +        "exclusiveMinimum": 0,
        +        "maximum": 9007199254740991,
        +        "type": "integer"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ]
        +  },
        +  "positionText": {
        +    "type": "string"
        +  },
        +  "status": {
        +    "type": "string"
        +  },
        +  "time": {
        +    "anyOf": [
        +      {
        +        "type": "string"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ]
        +  }
        +}
    • Changedget_f1_historical_race_results1 field changed
      • changedOutput schema / properties / races / items / properties / results / items / properties
        Previous value: -"[Object: undefined]"New value: +{
        +  "carNumber": {
        +    "anyOf": [
        +      {
        +        "type": "string"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ]
        +  },
        +  "constructor": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "id": {
        +        "type": "string"
        +      },
        +      "name": {
        +        "type": "string"
        +      },
        +      "nationality": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "id",
        +      "name",
        +      "nationality"
        +    ],
        +    "type": "object"
        +  },
        +  "driver": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "code": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "id": {
        +        "type": "string"
        +      },
        +      "name": {
        +        "type": "string"
        +      },
        +      "nationality": {
        +        "type": "string"
        +      },
        +      "permanentNumber": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      }
        +    },
        +    "required": [
        +      "id",
        +      "name",
        +      "code",
        +      "nationality",
        +      "permanentNumber"
        +    ],
        +    "type": "object"
        +  },
        +  "fastestLap": {
        +    "anyOf": [
        +      {
        +        "additionalProperties": false,
        +        "properties": {
        +          "averageSpeedKph": {
        +            "anyOf": [
        +              {
        +                "type": "number"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "lap": {
        +            "anyOf": [
        +              {
        +                "maximum": 9007199254740991,
        +                "minimum": -9007199254740991,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "rank": {
        +            "anyOf": [
        +              {
        +                "maximum": 9007199254740991,
        +                "minimum": -9007199254740991,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "time": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [
        +          "lap",
        +          "rank",
        +          "time",
        +          "averageSpeedKph"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ]
        +  },
        +  "grid": {
        +    "anyOf": [
        +      {
        +        "maximum": 9007199254740991,
        +        "minimum": -9007199254740991,
        +        "type": "integer"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ]
        +  },
        +  "laps": {
        +    "anyOf": [
        +      {
        +        "maximum": 9007199254740991,
        +        "minimum": -9007199254740991,
        +        "type": "integer"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ]
        +  },
        +  "points": {
        +    "type": "number"
        +  },
        +  "position": {
        +    "anyOf": [
        +      {
        +        "exclusiveMinimum": 0,
        +        "maximum": 9007199254740991,
        +        "type": "integer"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ]
        +  },
        +  "positionText": {
        +    "type": "string"
        +  },
        +  "status": {
        +    "type": "string"
        +  },
        +  "time": {
        +    "anyOf": [
        +      {
        +        "type": "string"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ]
        +  }
        +}
  3. 5 tool updates
    • Removedget_f1_driver_session_summary
    • Addedget_f1_race_classification
    • Removedget_f1_session_analysis
    • Changedget_f1_session_results4 fields changed
      • addedOutput schema / properties / results / items / properties / positionLabel
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • changedOutput schema / properties / results / items / required
        Previous value: -[
        -  "driverNumber",
        -  "driverName",
        -  "headshotUrl",
        -  "constructorName",
        -  "position",
        -  "numberOfLaps",
        -  "points",
        -  "duration",
        -  "gapToLeader",
        -  "status"
        -]New value: +[
        +  "driverNumber",
        +  "driverName",
        +  "headshotUrl",
        +  "constructorName",
        +  "position",
        +  "positionLabel",
        +  "numberOfLaps",
        +  "points",
        +  "duration",
        +  "gapToLeader",
        +  "status"
        +]
      • addedOutput schema / properties / source
        Added value: +{
        +  "const": "F1DB",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "year",
        -  "meetingKey",
        -  "sessionKey",
        -  "canonicalUrl",
        -  "sourceUrl",
        -  "resultCount",
        -  "results"
        -]New value: +[
        +  "year",
        +  "meetingKey",
        +  "sessionKey",
        +  "canonicalUrl",
        +  "sourceUrl",
        +  "source",
        +  "resultCount",
        +  "results"
        +]
    • Changedget_f1_starting_grid2 fields changed
      • addedOutput schema / properties / source
        Added value: +{
        +  "const": "F1DB",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "year",
        -  "meetingKey",
        -  "sessionKey",
        -  "canonicalUrl",
        -  "sourceUrl",
        -  "entryCount",
        -  "startingGrid"
        -]New value: +[
        +  "year",
        +  "meetingKey",
        +  "sessionKey",
        +  "canonicalUrl",
        +  "sourceUrl",
        +  "source",
        +  "entryCount",
        +  "startingGrid"
        +]
  4. 2 tool updates
    • Addedget_f1_historical_race_results
    • Changedget_f1_live_session1 field changed
      • removedInput schema / dependentRequired
        Removed value: -{
        -  "sessionKey": [
        -    "meetingKey"
        -  ]
        -}
  5. 15 tool updates
    • Changedcompare_f1_competitors6 fields changed
      • addedInput schema / $schema
        Added value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / description
        Added value: +"Compare two drivers or two constructors within one Formula 1 season."
      • addedInput schema / properties / left / description
        Added value: +"First driver or constructor name to compare."
      • addedInput schema / properties / right / description
        Added value: +"Second driver or constructor name to compare."
      • addedOutput schema / $schema
        Added value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / description
        Added value: +"Sourced same-season Formula 1 driver or constructor comparison with explicit methodology."
    • Changedget_f1_circuit4 fields changed
      • addedInput schema / $schema
        Added value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / description
        Added value: +"Select one race weekend by season and exactly one of meetingKey, round, raceName, or slug."
      • addedOutput schema / $schema
        Added value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / description
        Added value: +"Formula 1 circuit identity, venue metadata, normalized geometry, and canonical links."
    • Changedget_f1_driver_session_summary4 fields changed
      • addedInput schema / $schema
        Added value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / description
        Added value: +"Select one driver's summary within a Formula 1 session."
      • addedOutput schema / $schema
        Added value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / description
        Added value: +"One Formula 1 driver's lap, sector, speed, grid, position, and interval session summary."
    • Changedget_f1_historical_race_result4 fields changed
      • addedInput schema / $schema
        Added value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / description
        Added value: +"Select a historical Formula 1 race by season and championship round."
      • addedOutput schema / $schema
        Added value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / description
        Added value: +"Complete historical Formula 1 race classification with driver, constructor, fastest-lap, and source details."
    • Changedget_f1_live_session4 fields changed
      • addedInput schema / $schema
        Added value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / description
        Added value: +"Inspect the current Formula 1 session or select one by season, meeting key, and session key."
      • addedOutput schema / $schema
        Added value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / description
        Added value: +"Explicitly timestamped Formula 1 session state with data freshness and availability context."
    • Changedget_f1_next_event4 fields changed
      • addedInput schema / $schema
        Added value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / description
        Added value: +"Select the next Formula 1 session or race weekend from a UTC point in time."
      • addedOutput schema / $schema
        Added value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / description
        Added value: +"Next live or upcoming Formula 1 session or race weekend from the requested UTC instant."
    • Changedget_f1_race_preview4 fields changed
      • addedInput schema / $schema
        Added value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / description
        Added value: +"Select one race weekend by season and exactly one of meetingKey, round, raceName, or slug."
      • addedOutput schema / $schema
        Added value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / description
        Added value: +"Structurally spoiler-safe Formula 1 race-weekend schedule and venue preview with no result fields."
    • Changedget_f1_race_weekend4 fields changed
      • addedInput schema / $schema
        Added value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / description
        Added value: +"Select one race weekend by season and exactly one of meetingKey, round, raceName, or slug."
      • addedOutput schema / $schema
        Added value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / description
        Added value: +"Resolved Formula 1 race-weekend context with sessions, available classifications, recap, and source links."
    • Changedget_f1_season_schedule4 fields changed
      • addedInput schema / $schema
        Added value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / description
        Added value: +"Select one Formula 1 season."
      • addedOutput schema / $schema
        Added value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / description
        Added value: +"Verified Formula 1 season schedule with freshness metadata, canonical links, and race weekends."
    • Changedget_f1_session_analysis4 fields changed
      • addedInput schema / $schema
        Added value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / description
        Added value: +"Select one typed analysis view for a Formula 1 session."
      • addedOutput schema / $schema
        Added value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / description
        Added value: +"Strictly typed Formula 1 session analysis with freshness, data availability, and source links."
    • Changedget_f1_session_results4 fields changed
      • addedInput schema / $schema
        Added value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / description
        Added value: +"Select one Formula 1 session by season, meeting key, and session key."
      • addedOutput schema / $schema
        Added value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / description
        Added value: +"Published Formula 1 session classification with source and canonical links."
    • Changedget_f1_standings4 fields changed
      • addedInput schema / $schema
        Added value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / description
        Added value: +"Select one Formula 1 season."
      • addedOutput schema / $schema
        Added value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / description
        Added value: +"Formula 1 driver and constructor standings with the source session and canonical links."
    • Changedget_f1_starting_grid4 fields changed
      • addedInput schema / $schema
        Added value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / description
        Added value: +"Select one Formula 1 session by season, meeting key, and session key."
      • addedOutput schema / $schema
        Added value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / description
        Added value: +"Published Formula 1 session starting grid with source and canonical links."
    • Changedget_f1_updates6 fields changed
      • addedInput schema / $schema
        Added value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / description
        Added value: +"Read a bounded page of recent public Formula 1 changes."
      • addedInput schema / properties / cursor / description
        Added value: +"Opaque continuation cursor returned by an earlier updates request."
      • addedInput schema / properties / limit / description
        Added value: +"Maximum changes to return. Defaults to 20 and never exceeds 50."
      • addedOutput schema / $schema
        Added value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / description
        Added value: +"Bounded cursor page of recent public Formula 1 schedule, standings, and result changes."
    • Changedsearch_f1_history7 fields changed
      • addedInput schema / $schema
        Added value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / description
        Added value: +"Search the bounded Formula 1 history index."
      • addedInput schema / properties / cursor / description
        Added value: +"Opaque continuation cursor returned by an earlier history search."
      • addedInput schema / properties / limit / description
        Added value: +"Maximum results to return. Defaults to 10 and never exceeds 20."
      • addedInput schema / properties / types / description
        Added value: +"Optional unique entity types to include in the search."
      • addedOutput schema / $schema
        Added value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / description
        Added value: +"Bounded cursor page of matching Formula 1 drivers, teams, circuits, and races."
  6. 13 tool updates
    • Addedcompare_f1_competitors
    • Addedget_f1_circuit
    • Addedget_f1_driver_session_summary
    • Addedget_f1_historical_race_result
    • Addedget_f1_live_session
    • Addedget_f1_next_event
    • Addedget_f1_race_preview
    • Changedget_f1_race_weekend5 fields changed
      • addedInput schema / oneOf
        Added value: +[
        +  {
        +    "required": [
        +      "meetingKey"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "round"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "raceName"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "slug"
        +    ]
        +  }
        +]
      • addedInput schema / properties / raceName
        Added value: +{
        +  "description": "Human-friendly Grand Prix or race name, matched case-insensitively.",
        +  "maxLength": 120,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / round
        Added value: +{
        +  "description": "Championship round number for the season.",
        +  "maximum": 99,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedInput schema / properties / slug
        Added value: +{
        +  "description": "Race Calendar race slug, such as round-6-miami-grand-prix or miami-grand-prix.",
        +  "maxLength": 160,
        +  "minLength": 1,
        +  "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "year",
        -  "meetingKey"
        -]New value: +[
        +  "year"
        +]
    • Addedget_f1_session_analysis
    • Addedget_f1_session_results
    • Addedget_f1_starting_grid
    • Addedget_f1_updates
    • Addedsearch_f1_history
  7. 3 tool updates
    • Changedget_f1_race_weekend6 fields changed
      • addedInput schema / properties / meetingKey / description
        Added value: +"OpenF1 meeting key for the race weekend."
      • addedInput schema / properties / meetingKey / exclusiveMinimum
        Added value: +0
      • addedInput schema / properties / meetingKey / maximum
        Added value: +9007199254740991
      • removedInput schema / properties / meetingKey / minimum
        Removed value: -1
      • addedInput schema / properties / year / description
        Added value: +"Formula 1 season year."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "canonicalUrl": {
        +      "format": "uri",
        +      "type": "string"
        +    },
        +    "raceWeekend": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "circuit": {
        +          "type": "string"
        +        },
        +        "country": {
        +          "type": "string"
        +        },
        +        "countryCode": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        },
        +        "endDate": {
        +          "type": "string"
        +        },
        +        "latestResultKind": {
        +          "anyOf": [
        +            {
        +              "enum": [
        +                "sprint",
        +                "qualifying",
        +                "race"
        +              ],
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        },
        +        "location": {
        +          "type": "string"
        +        },
        +        "meetingKey": {
        +          "exclusiveMinimum": 0,
        +          "maximum": 9007199254740991,
        +          "type": "integer"
        +        },
        +        "name": {
        +          "type": "string"
        +        },
        +        "officialName": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        },
        +        "recap": {
        +          "anyOf": [
        +            {
        +              "additionalProperties": false,
        +              "properties": {
        +                "detail": {
        +                  "anyOf": [
        +                    {
        +                      "type": "string"
        +                    },
        +                    {
        +                      "type": "null"
        +                    }
        +                  ]
        +                },
        +                "summary": {
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "summary",
        +                "detail"
        +              ],
        +              "type": "object"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        },
        +        "resultHighlights": {
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "constructorName": {
        +                "anyOf": [
        +                  {
        +                    "type": "string"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ]
        +              },
        +              "driverName": {
        +                "anyOf": [
        +                  {
        +                    "type": "string"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ]
        +              },
        +              "position": {
        +                "exclusiveMinimum": 0,
        +                "maximum": 9007199254740991,
        +                "type": "integer"
        +              }
        +            },
        +            "required": [
        +              "position",
        +              "driverName",
        +              "constructorName"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "resultStatus": {
        +          "enum": [
        +            "notStarted",
        +            "pending",
        +            "available"
        +          ],
        +          "type": "string"
        +        },
        +        "resultSummary": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        },
        +        "round": {
        +          "exclusiveMinimum": 0,
        +          "maximum": 9007199254740991,
        +          "type": "integer"
        +        },
        +        "sessions": {
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "endDate": {
        +                "type": "string"
        +              },
        +              "id": {
        +                "maximum": 9007199254740991,
        +                "minimum": -9007199254740991,
        +                "type": "integer"
        +              },
        +              "kind": {
        +                "enum": [
        +                  "practice",
        +                  "sprintQualifying",
        +                  "sprint",
        +                  "qualifying",
        +                  "race",
        +                  "other"
        +                ],
        +                "type": "string"
        +              },
        +              "name": {
        +                "type": "string"
        +              },
        +              "startDate": {
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "id",
        +              "name",
        +              "kind",
        +              "startDate",
        +              "endDate"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "startDate": {
        +          "type": "string"
        +        },
        +        "status": {
        +          "enum": [
        +            "scheduled",
        +            "cancelled"
        +          ],
        +          "type": "string"
        +        },
        +        "statusNote": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        },
        +        "winner": {
        +          "anyOf": [
        +            {
        +              "additionalProperties": false,
        +              "properties": {
        +                "constructorName": {
        +                  "anyOf": [
        +                    {
        +                      "type": "string"
        +                    },
        +                    {
        +                      "type": "null"
        +                    }
        +                  ]
        +                },
        +                "driverName": {
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "driverName",
        +                "constructorName"
        +              ],
        +              "type": "object"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        }
        +      },
        +      "required": [
        +        "meetingKey",
        +        "round",
        +        "name",
        +        "circuit",
        +        "location",
        +        "country",
        +        "countryCode",
        +        "startDate",
        +        "endDate",
        +        "status",
        +        "statusNote",
        +        "resultStatus",
        +        "winner",
        +        "resultSummary",
        +        "sessions",
        +        "officialName",
        +        "latestResultKind",
        +        "resultHighlights",
        +        "recap"
        +      ],
        +      "type": "object"
        +    },
        +    "sourceUrl": {
        +      "format": "uri",
        +      "type": "string"
        +    },
        +    "year": {
        +      "maximum": 9007199254740991,
        +      "minimum": -9007199254740991,
        +      "type": "integer"
        +    }
        +  },
        +  "required": [
        +    "year",
        +    "canonicalUrl",
        +    "sourceUrl",
        +    "raceWeekend"
        +  ],
        +  "type": "object"
        +}
    • Changedget_f1_season_schedule2 fields changed
      • addedInput schema / properties / year / description
        Added value: +"Formula 1 season year."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "canonicalUrl": {
        +      "format": "uri",
        +      "type": "string"
        +    },
        +    "generatedAt": {
        +      "type": "string"
        +    },
        +    "lastVerifiedAt": {
        +      "type": "string"
        +    },
        +    "raceCount": {
        +      "maximum": 9007199254740991,
        +      "minimum": 0,
        +      "type": "integer"
        +    },
        +    "races": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "circuit": {
        +            "type": "string"
        +          },
        +          "country": {
        +            "type": "string"
        +          },
        +          "countryCode": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "endDate": {
        +            "type": "string"
        +          },
        +          "location": {
        +            "type": "string"
        +          },
        +          "meetingKey": {
        +            "exclusiveMinimum": 0,
        +            "maximum": 9007199254740991,
        +            "type": "integer"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "resultStatus": {
        +            "enum": [
        +              "notStarted",
        +              "pending",
        +              "available"
        +            ],
        +            "type": "string"
        +          },
        +          "resultSummary": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "round": {
        +            "exclusiveMinimum": 0,
        +            "maximum": 9007199254740991,
        +            "type": "integer"
        +          },
        +          "sessions": {
        +            "items": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "endDate": {
        +                  "type": "string"
        +                },
        +                "id": {
        +                  "maximum": 9007199254740991,
        +                  "minimum": -9007199254740991,
        +                  "type": "integer"
        +                },
        +                "kind": {
        +                  "enum": [
        +                    "practice",
        +                    "sprintQualifying",
        +                    "sprint",
        +                    "qualifying",
        +                    "race",
        +                    "other"
        +                  ],
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "type": "string"
        +                },
        +                "startDate": {
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "id",
        +                "name",
        +                "kind",
        +                "startDate",
        +                "endDate"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "startDate": {
        +            "type": "string"
        +          },
        +          "status": {
        +            "enum": [
        +              "scheduled",
        +              "cancelled"
        +            ],
        +            "type": "string"
        +          },
        +          "statusNote": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "winner": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": false,
        +                "properties": {
        +                  "constructorName": {
        +                    "anyOf": [
        +                      {
        +                        "type": "string"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "driverName": {
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "driverName",
        +                  "constructorName"
        +                ],
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [
        +          "meetingKey",
        +          "round",
        +          "name",
        +          "circuit",
        +          "location",
        +          "country",
        +          "countryCode",
        +          "startDate",
        +          "endDate",
        +          "status",
        +          "statusNote",
        +          "resultStatus",
        +          "winner",
        +          "resultSummary",
        +          "sessions"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "refreshIntervalSeconds": {
        +      "maximum": 9007199254740991,
        +      "minimum": 0,
        +      "type": "integer"
        +    },
        +    "source": {
        +      "const": "OpenF1",
        +      "type": "string"
        +    },
        +    "sourceUrl": {
        +      "format": "uri",
        +      "type": "string"
        +    },
        +    "staleAfter": {
        +      "type": "string"
        +    },
        +    "year": {
        +      "maximum": 9007199254740991,
        +      "minimum": -9007199254740991,
        +      "type": "integer"
        +    }
        +  },
        +  "required": [
        +    "year",
        +    "source",
        +    "generatedAt",
        +    "lastVerifiedAt",
        +    "staleAfter",
        +    "refreshIntervalSeconds",
        +    "canonicalUrl",
        +    "sourceUrl",
        +    "raceCount",
        +    "races"
        +  ],
        +  "type": "object"
        +}
    • Changedget_f1_standings2 fields changed
      • addedInput schema / properties / year / description
        Added value: +"Formula 1 season year."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "canonicalUrl": {
        +      "format": "uri",
        +      "type": "string"
        +    },
        +    "constructors": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "colour": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "constructorName": {
        +            "type": "string"
        +          },
        +          "logoUrl": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "points": {
        +            "minimum": 0,
        +            "type": "number"
        +          },
        +          "position": {
        +            "exclusiveMinimum": 0,
        +            "maximum": 9007199254740991,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "position",
        +          "points",
        +          "constructorName",
        +          "colour",
        +          "logoUrl"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "drivers": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "driverName": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "driverNumber": {
        +            "exclusiveMinimum": 0,
        +            "maximum": 9007199254740991,
        +            "type": "integer"
        +          },
        +          "headshotUrl": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "points": {
        +            "minimum": 0,
        +            "type": "number"
        +          },
        +          "position": {
        +            "exclusiveMinimum": 0,
        +            "maximum": 9007199254740991,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "position",
        +          "points",
        +          "driverNumber",
        +          "driverName",
        +          "headshotUrl"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "sessionKey": {
        +      "exclusiveMinimum": 0,
        +      "maximum": 9007199254740991,
        +      "type": "integer"
        +    },
        +    "sourceUrl": {
        +      "format": "uri",
        +      "type": "string"
        +    },
        +    "year": {
        +      "maximum": 9007199254740991,
        +      "minimum": -9007199254740991,
        +      "type": "integer"
        +    }
        +  },
        +  "required": [
        +    "year",
        +    "sessionKey",
        +    "canonicalUrl",
        +    "sourceUrl",
        +    "drivers",
        +    "constructors"
        +  ],
        +  "type": "object"
        +}
  8. 3 tool updates
    • First observedget_f1_race_weekend
    • First observedget_f1_season_schedule
    • First observedget_f1_standings

Related MCP Connectors

Related MCP Servers

  • A
    license
    C
    quality
    C
    maintenance
    Enables Claude to answer Formula 1 questions using real public data: race, sprint and qualifying results back to 1950, lap and sector times, 4 Hz car telemetry, tyre stints, pit stops and undercut strategy, plus locally drawn speed-trace and gear-shift plots. Also covers live session timing — positions, gaps, tyres, flags and weather — through 77 read-only tools that need no account, login or API key.
    77
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides comprehensive Formula 1 data and analytics for Claude Desktop, including race results, telemetry, standings, and strategy insights through 36+ tools.
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables Formula 1 data analysis through natural language, providing tools like track dominance, lap time analysis, and team performance comparisons.
    Apache 2.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to query real-time and historical Formula 1 data through the OpenF1 API, providing tools for driver info, lap times, telemetry, race events, and more.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources