Flowix Sim Raicing Race Engineer
Server Details
AI race engineer for sim racing (AMS2, Assetto Corsa, AC Evo, RaceRoom). Provides telemetry analysis, braking diagnostics, and leaderboards. Connected via public demo by default. Get your free personal token at https://flowix.com to analyze your own laps.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 6 tools
Most tools have clearly distinct roles: session listing, session detail retrieval, track lap listing, leaderboards, coaching guidelines, and telemetry querying. There is some overlap between list_sessions (which includes newest-session laps), get_session_details, and list_track_laps, but the descriptions provide enough guidance to choose correctly.
All tool names use consistent snake_case with a clear verb_noun structure: execute_javascript, get_coaching_guidelines, get_leaderboards, get_session_details, list_sessions, and list_track_laps. The pattern is predictable throughout the set.
Six tools is well-scoped for a sim racing race engineer server. The set separates metadata retrieval (sessions, laps, leaderboards, guidelines) from the flexible telemetry analysis engine without excessive fragmentation.
The surface covers the main race engineering workflow: discover sessions, select laps, compare telemetry, analyze corners and braking, check tyres, and view leaderboards. Minor gaps exist, such as no direct track/car metadata tool and telemetry analysis being entirely encapsulated inside execute_javascript, but core operations are reachable.
Available Tools
6 toolsexecute_javascriptARead-onlyIdempotentInspect
Queries and analyses high-frequency lap telemetry (speed, brake, throttle, steering, gear, RPM, track coordinates, tyre temperatures/pressures/grip/slip, suspension, and corner/braking diagnostics) stored on the Flowix server for lap_id and optional reference_lap_id using the read-only FlowixData query API. Each call is stateless; pass lap_id every time. Inside the script, globals lapId and refId (null without a reference lap) hold those UUIDs. If a call returns a busy error, retry shortly. If a script has a syntax or runtime error, adjust the script and call again. Recommended FlowixData queries:
FlowixData.compareLaps(compId?, refId?): Scans lap delta and returns topDeficitZones where time was lost (all distances in meters).
FlowixData.analyzeCorner(lapId, startDist, endDist, refId?): 4-phase MoTeC breakdown with understeer/oversteer detection, tyre stress, car setup recommendations, and meter units.
FlowixData.detectBrakingZones(lapId, threshold?): Detects braking events and trail-braking profile ('ski_slope', 'abrupt_release', 'trapped_brake'). These profile labels are internal: describe the behaviour in plain words instead of quoting them.
FlowixData.getActiveChannels(lapId?): Identifies recorded channels vs unrecorded all-zero channels.
FlowixData.getSummary(lapId): Whole-lap top speed, min speed, and acceleration stats.
FlowixData.listChannels(lapId) / getTyreSummary(lapId, startDist?, endDist?) / getChannel(lapId, name, startDist?, endDist?, step?): Reads extended channels (tyre temperatures, pressures, grip, slip, brake temps, suspension, weather); extended channels are read via these methods rather than row fields. Note: Always express distances in METERS. Only all-zero channels indicate unrecorded simulator channels. When pointing at a spot on the lap, include a link to the lap analysis page (zoom, markers, highlights): call get_coaching_guidelines once for the link format.
| Name | Required | Description | Default |
|---|---|---|---|
| lap_id | Yes | UUID of the lap to analyse (the comparison lap) | |
| script | No | Optional JavaScript code (omitted: a whole-lap overview is returned); the value of its last expression is returned as JSON. Telemetry is accessed only via FlowixData methods, e.g. `FlowixData.getActiveChannels(lapId)` or `FlowixData.getSummary(lapId)` or `const z = FlowixData.detectBrakingZones(lapId); z.slice(0, 5)` | |
| reference_lap_id | No | Optional UUID of a reference/benchmark lap on the same track |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/closed-world, and the description adds meaningfully beyond them: calls are stateless with lapId/refId injected as globals (refId null without a reference lap), a busy error should be retried shortly, syntax/runtime errors mean the script should be fixed and re-run, distances must be in METERS, all-zero channels signal unrecorded simulator channels, and the internal braking-profile labels must not be quoted verbatim to the user.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence front-loads what is queried and from where, and the numbered method list is dense but each entry carries distinct decision value for choosing a query. The closing note bundles three unrelated rules (meters, all-zero channels, lap-link format) into one paragraph, and the pointer to get_coaching_guidelines sits at the very end where it is easy to miss.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a script-execution tool with no output schema and three parameters, the description covers the essentials: how the script is evaluated, what is returned, how errors surface, and unit conventions. It leaves the shape of the returned JSON largely to the referenced method names and does not describe pagination or size limits on channel reads, which matters for a high-frequency telemetry payload.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: it explains the globals lapId and refId that the script body can reference, that an omitted script returns a whole-lap overview, and that the value of the last expression is returned. The one shortfall is that it does not clarify whether lap_id also acts as the primary lap when a reference_lap_id is supplied, which is only implied by the schema wording.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action (query/analyse telemetry via a JavaScript script) and enumerates exactly what data is reachable: speed, brake, throttle, steering, gear, RPM, coordinates, tyre temperatures/pressures/grip/slip, suspension, and corner diagnostics. It also names the underlying API (FlowixData) and makes clear it is the only tool in the set that executes scripts, so an agent can distinguish it from list_track_laps and get_session_details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives detailed guidance on which FlowixData method to reach for and for what purpose (compareLaps for delta/deficit zones, analyzeCorner for a 4-phase breakdown, detectBrakingZones for trail-braking, getChannel for extended channels), plus operational rules: stateless, pass lap_id every time, retry on a busy error, adjust and re-call on script errors. The gap is that it never explicitly states when to prefer this tool over a sibling such as list_track_laps, so the when-to-use guidance is strong internally but not framed against alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_coaching_guidelinesARead-onlyIdempotentInspect
Retrieves race engineering coaching guidelines covering distance units in meters, understeer/oversteer detection, tyre management, car setup matrix, unrecorded zero-channel handling, and how to format links that open a lap in the Flowix analysis page zoomed, marked, and highlighted at discussed corners.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world, so the safety profile is fully covered. The description adds that the payload is reference/instructional content rather than session data, which is useful, but it says nothing about the response format (plain text? markdown?) or size, so the added value is modest.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the verb first and the content scope after; every listed topic is substantive rather than filler. The trailing enumeration is long, but each item carries real information about what the guidelines contain.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters, no output schema, and full annotation coverage, the description does the main remaining job of telling the agent what content to expect. The only gap is the return format and rough length of the guidelines, which an agent would need to plan its context budget.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline of 4 applies. No misleading parameter hints are introduced.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description pairs a specific verb ('Retrieves') with a specific resource ('race engineering coaching guidelines') and then enumerates the covered topics, so an agent knows exactly what it gets back. It never names a sibling or states the contrast explicitly, but the resource is plainly distinct from get_leaderboards/get_session_details/list_track_laps.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance; the agent must infer that it should call this before performing race-engineering analysis or formatting lap links. The topic list implies the situations covered but never states a trigger condition or names an alternative tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_leaderboardsARead-onlyIdempotentInspect
Fetches personal best or overall community leaderboard records from the Flowix server (per track, or per car when track_id is given), including lap_id and track_id values.
| Name | Required | Description | Default |
|---|---|---|---|
| tab | No | personal (default) or overall community records | |
| page | No | Page number (defaults to 1) | |
| game_id | No | Optional UUID of the game (defaults to the most used game) | |
| track_id | No | Optional UUID of a track; lists records per car on that track |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description adds useful context — that data is fetched from a remote Flowix server and that results are grouped per track or per car depending on track_id, and that lap_id/track_id appear in results. It says nothing about ordering, result size, or pagination behavior beyond what the schema states.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense sentence that front-loads the verb and resource, then layers the mode and grouping qualifiers. Nothing is wasted, though the parenthetical about track_id is slightly awkward and the trailing "including lap_id and track_id values" is a partial duplication of the schema's identifiers.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With four optional parameters, no output schema, and full annotation coverage, the description covers the main source of ambiguity — what changes when track_id is supplied — and hints at returned fields. Missing are details on result ordering, page size, and what the default 'most used game' means in practice, which keeps it short of complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented, and the description's note about track_id changing grouping largely restates the schema's own wording. The tab distinction (personal vs overall) is echoed rather than expanded, so the description adds little meaning beyond the structured fields — baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ("Fetches ... leaderboard records") and names the two modes (personal best vs overall community) plus the per-track/per-car grouping. It does not explicitly contrast with the sibling tools, but those (sessions, laps, coaching) occupy clearly different domains, so the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: the reader can infer that 'personal' returns your own bests and 'overall' returns community records, and that supplying track_id switches to per-car listing. There is no explicit when-to-use/when-not guidance and no named alternative, though the sibling set offers no real competing leaderboard tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_session_detailsARead-onlyIdempotentInspect
Fetches all laps for a specific session (session_id) from the Flowix server, returning each lap's lap_id, lap_number, lap_time, sector times, validity, weather, tyre compounds, best_lap_id, last_lap_id, track_id, car_id, and game_id. After selecting a lap_id (and optional reference_lap_id), call execute_javascript to inspect speed, brake, throttle, steering, and tyre telemetry traces.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Lap page number (defaults to 1) | |
| session_id | Yes | UUID of the session |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds genuine value by disclosing the shape of the response (lap time, sectors, weather, tyres, best/last lap ids, track/car/game ids) and the downstream telemetry path. It omits that results are paginated despite a 'page' parameter, and 'all laps' slightly overstates that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and scope come first, followed by the response inventory and the recommended next step, so it is front-loaded and purposeful. The long run-on enumeration of thirteen field names is dense but justified in the absence of an output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description appropriately substitutes a return-field inventory and points to the tool that consumes the lap_id. What is missing is any mention of pagination semantics (the 'page' parameter) or ordering of the returned laps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are already documented in the schema; the description only reiterates session_id as a session identifier. It says nothing about the 'page' parameter or paging behavior, and it introduces lap_id/reference_lap_id that are inputs to a different tool, which adds workflow context but no parameter meaning for this call.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Fetches all laps for a specific session') and names the key input, then enumerates the returned fields. This separates it clearly from siblings like list_sessions and list_track_laps, which operate on sessions or tracks rather than a single session's laps.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit follow-on workflow: pick a lap_id (and optional reference_lap_id), then call execute_javascript to inspect telemetry. It does not state when to prefer this over list_track_laps or list_sessions, so the sibling routing is only partially covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sessionsARead-onlyIdempotentInspect
Lists the user's recorded sim racing sessions from the Flowix server (newest first). Start with the top-level overview: one line per session with recency rank (#1 (newest); higher numbers are older), date, game, track, car, session_id, last_lap_id (latest lap) and best_lap_id; pick lap ids from the matching line. Each session also includes session_id, game_id, track_id, track_name, car_id, car_name, date_time, lap counts, best_lap_time, best_lap_id, last_lap_id, and the laps of the newest session only (10 sessions per page; call get_session_details for the laps of any other session). Call this first when answering questions about the user's driving, sessions, laps, braking, corners, consistency, or lap comparisons, then pass the relevant lap_id (and optional reference_lap_id, such as best_lap_id) to execute_javascript to query the full telemetry channels.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (defaults to 1) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, and the description adds substantial behavior beyond them: pagination size (10 sessions per page), ordering (newest first, with rank semantics "#1 (newest)"), and a real data-coverage limitation (only the newest session's laps are included). That last point is the kind of constraint an agent could not infer from the schema or annotations and would otherwise cause wrong calls.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded and the final routing sentence is valuable, but the middle is a dense run-on that enumerates fields twice, repeating session_id, best_lap_id, and last_lap_id already listed in the overview summary. Trimming the duplicated field list would make it notably easier to scan without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the full burden of explaining return shape, and it does: the overview line format, the extra per-session fields, the lap-inclusion limit, and pagination. Combined with the explicit handoff to execute_javascript and get_session_details, an agent has everything needed to call this and act on the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description earns an extra point by disclosing the page size ("10 sessions per page"), which gives the `page` parameter concrete meaning that the schema's "Page number (defaults to 1)" does not. It stops short of stating how to detect the last page, so it is not a full 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence gives a specific verb and resource ("Lists the user's recorded sim racing sessions from the Flowix server") plus ordering (newest first). It also implicitly distinguishes itself from siblings by naming get_session_details for other sessions' laps and execute_javascript for telemetry, so an agent can place it in the toolset without opening another schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to call it ("Call this first when answering questions about the user's driving, sessions, laps, braking, corners, consistency, or lap comparisons") and names the exact next step and alternative ("pass the relevant lap_id ... to execute_javascript", "call get_session_details for the laps of any other session"). Both the when and the when-to-use-something-else are covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_track_lapsARead-onlyIdempotentInspect
Lists recorded laps with telemetry on a given track (track_id) from the Flowix server, including both the user's laps and community benchmark laps with their lap_id values for comparison in execute_javascript.
| Name | Required | Description | Default |
|---|---|---|---|
| track_id | Yes | UUID of the track |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world behavior, so the safety profile is covered. The description still adds real context beyond that: the response mixes the user's own laps with community benchmark laps and exposes lap_id values for reuse elsewhere. It does not mention ordering, volume, or pagination, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that leads with the verb and resource before adding the scope and the lap_id rationale. It is dense but every clause carries information; the phrase 'from the Flowix server' is the only slightly expendable element.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must convey what comes back, and it does: laps with telemetry, split between the user's laps and community benchmarks, each carrying lap_id. For a single-parameter read tool this is nearly sufficient; only return ordering, result volume, and pagination behavior are left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so track_id as a track UUID is already fully documented in the schema. The description adds only marginal meaning by clarifying that the track filter returns both personal and community laps for that track, without syntax or format details beyond the schema. Baseline 3 applies when the schema carries the parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (lists recorded laps with telemetry) scoped to a given track, and explicitly notes it returns both the user's laps and community benchmark laps with lap_id values. It even distinguishes its role from the sibling execute_javascript, which consumes those lap_ids for comparison.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: an agent can infer it should call this when it needs laps for a specific track, and the mention of lap_id 'for comparison in execute_javascript' hints at a downstream workflow. However, there is no explicit when-to-use/when-not guidance versus siblings like get_session_details, list_sessions, or get_leaderboards, which also surface lap-like performance data.
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.
6 tool updates
- First observed
execute_javascript - First observed
get_coaching_guidelines - First observed
get_leaderboards - First observed
get_session_details - First observed
list_sessions - First observed
list_track_laps
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceRemote MCP server that lets AI assistants read tracked competitive intelligence — competitor news, reviews, website changes, social posts and ads — and act on it by managing projects, competitors, battle cards, reports and canvases. Every answer carries a source and a date, and write actions only publish when explicitly shared.MIT
- AlicenseCqualityBmaintenanceCompetitor Monitor AI - MCP server providing AI-powered tools and automation by MEOK AI Labs115 npm58 PyPIMIT
- AlicenseAqualityCmaintenanceEnables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.1623 npm1MIT

industrylens-mcpofficial
AlicenseNot gradedqualityBmaintenanceBrowse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.