Formula 1 and motorsport data analysis server with MCP tools for fastest laps and driver standings, integrated with Google Gemini for AI-powered race insights
Two tools with basic verb-noun naming and present descriptions, but significant gaps in parameter documentation and output schema clarity. Both tools lack parameter descriptions entirely, the schema shows 'race' and 'year' parameters with type and description fields, but the actual parameter descriptions are minimal ('The name of the F1 race', 'The year of the race'). Output schemas are not documented; callers cannot predict the structure of returned dicts. Error handling is present but generic (returns {"error": str(e)}). No input validation, no pagination support, no idempotent hints. Tool descriptions are adequate (100-150 chars) but lack 'when to use' guidance. This is a typical community server with functional tools but incomplete agent-readiness.
Get F1 driver championship standings for a given year. Use this when user asks about points, standings, or who won the championship
Get the fastest lap times for a specific F1 race and year Use this when the user asks about lap times, fastest laps, or race performance at a specific event
Output schemas not documented. Callers cannot predict the structure of returned dicts (e.g., does fastest_laps return {fastest_laps: [...]} or {results: [...]}?). LLMs cannot plan downstream operations without knowing response fields.
Parameter descriptions are minimal and lack format/constraint guidance. 'The year of the race' does not specify valid range (e.g., 1950 - 2024), whether future years are allowed, or what happens if the year is invalid. LLMs cannot validate inputs before calling.
No error recovery guidance. Both tools return {"error": str(e)} on failure (e.g., 'No standings data found for 2025'). LLMs receive no hint about what to do next: retry? Ask user? Call a different tool? Errors should guide recovery.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 52 | 2026-07-28+ | v2 |
No input validation or constraint documentation. 'race' parameter accepts any string; no enum of valid F1 races. 'year' parameter accepts any integer; no bounds check. LLMs will pass invalid values (e.g., year=1800, race='Formula 2') without guidance.
No pagination or result limits documented. fastest_laps hardcodes top 5 drivers; driver_standing hardcodes top 5 standings. If results grow, no mechanism to fetch more. Tool descriptions do not state these limits, so LLMs may expect complete data.